대화 상자 라이브러리

적용 대상: SDK v4

대화 상자 는 사용자와의 장기 실행 대화를 관리하는 방법을 제공하는 SDK의 cMicrosoft Entral 개념입니다. 대화 상자는 전체 대화 스레드의 일부 또는 전체 대화형 스레드를 나타낼 수 있는 작업을 수행합니다. 그것은 단지 한 턴 또는 많은에 걸쳐 수 있습니다., 짧은 또는 시간의 긴 기간에 걸쳐 수 있습니다.

이 문서에서는 대화 상자 라이브러리의 핵심 클래스 및 기능을 설명합니다.

  • 봇의 작동 방식(순서 포함) 및 상태 관리에 대해 잘 알고 있어야 합니다.
  • 각 대화 상자는 완료까지 실행하고 수집된 정보를 반환할 수 있는 대화형 작업을 나타냅니다.
  • 각 대화 상자는 제어 흐름의 기본 단위를 나타냅니다. 시작, 계속 및 종료할 수 있습니다. 일시 중지 및 다시 시작; 또는 취소할 수 있습니다.
  • 대화 상자는 프로그래밍 언어의 메서드 또는 함수와 유사합니다. 대화 상자를 시작할 때 인수 또는 매개 변수를 전달할 수 있으며 대화 상자가 끝나면 나중에 반환 값을 생성할 수 있습니다.

Bot Framework를 사용하여 봇을 개발하거나 새로운 대화형 환경을 만드는 경우 Bot Framework Composer부터 시작합니다. Composer에서 생성되지 않은 기존 SDK 우선 봇의 경우 봇을 기술노출하고 향후 봇 개발을 위해 Composer를 사용하는 것이 좋습니다.

대화 상태

대화 상자는 다중 턴 대화를 구현할 수 있으므로 턴 간에 지속형 상태를 사용합니다. 대화 상자의 상태가 없으면 봇이 대화의 위치 또는 이미 수집한 정보를 알 수 없습니다.

대화에서 대화의 위치를 유지하려면 대화 상자의 상태를 검색하여 각 턴마다 메모리에 저장해야 합니다. 이는 봇의 대화 상태에 정의된 대화 상태 속성 접근자를 통해 처리됩니다. 이 대화 상자 상태는 모든 활성 대화 상자 및 활성 대화의 자식에 대한 정보를 관리합니다. 이렇게 하면 봇이 마지막으로 중단된 위치를 선택하고 다양한 대화 모델을 처리할 수 있습니다.

런타임에 대화 상태 속성에는 대화 상자 인스턴스 개체의 형태로 내부적으로 수집된 정보를 포함하여 대화 상자가 논리적 프로세스에 있는 위치에 대한 정보가 포함됩니다. 다시 말하지만, 봇으로 읽고 각 턴마다 메모리에 저장해야 합니다.

대화 상자 인프라

다양한 유형의 대화 상자와 함께 다음 클래스는 대화의 디자인 및 제어에 포함됩니다. 일반적으로 이러한 클래스와 직접 상호 작용할 필요는 없지만 봇에 대한 대화 상자를 디자인할 때 클래스와 해당 용도를 인식하는 것이 유용합니다.

클래스 설명
대화 상자 집합 서로 참조하고 함께 작업할 수 있는 대화 상자 컬렉션을 정의합니다.
대화 상자 컨텍스트 모든 활성 대화 상자에 대한 정보를 포함합니다.
대화 상자 인스턴스 하나의 활성 대화 상자에 대한 정보를 포함합니다.
대화 상자 턴 결과 활성 또는 최근에 활성화된 대화 상자의 상태 정보를 포함합니다. 활성 대화 상자가 종료되면 반환 값이 포함됩니다.

대화 상자 유형

대화 라이브러리는 봇의 대화를 보다 쉽게 관리할 수 있도록 몇 가지 유형의 대화 상자를 제공합니다. 이러한 형식 중 일부는 이 문서의 뒷부분에 자세히 설명되어 있습니다.

Type 설명
대화 모든 대화 상자의 기본 클래스입니다.
컨테이너 대화 상자 구성 요소 및 적응형 대화와 같은 모든 컨테이너 대화 상자의 기본 클래스입니다. 내부 대화 집합을 기본 대화의 컬렉션을 단위로 처리할 수 있습니다.
구성 요소 대화 상자 전체 집합을 다시 사용할 수 있도록 대화 상자 집합을 캡슐화하는 범용 컨테이너 대화 상자 형식입니다. 구성 요소 대화 상자가 시작되면 컬렉션에서 지정된 대화 상자로 시작합니다. 내부 프로세스가 완료되면 구성 요소 대화 상자가 종료됩니다.
폭포 대화 상자 봇이 선형 프로세스를 통해 사용자를 안내할 수 있도록 일련의 단계를 정의합니다. 일반적으로 구성 요소 대화 상자의 컨텍스트 내에서 작동하도록 설계되었습니다.
프롬프트 대화 상자 사용자에게 입력을 요청하고 결과를 반환합니다. 프롬프트는 유효한 입력을 가져오거나 취소될 때까지 반복됩니다. 폭포 대화와 함께 작동하도록 설계되었습니다.
적응형 대화 상자 작성기에서 보다 자연스러운 대화 흐름을 제공하는 데 사용하는 컨테이너 대화 상자의 유형입니다. SDK 우선 봇에서 직접 사용할 수 없습니다 .
작업 대화 상자 작성기에서 동작의 구현을 지원하는 대화 상자의 형식입니다. SDK 우선 봇에서 직접 사용할 수 없습니다 .
입력 대화 상자 작성기에서 입력 작업의 구현을 지원하는 대화 상자의 형식입니다. SDK 우선 봇에서 직접 사용할 수 없습니다 .
기술 대화 상자 기술 소비자로부터 하나 이상의 기술 봇 관리를 자동화합니다. 작성기는 기술을 작업으로 직접 지원합니다.
QnA Maker 대화 상자 QnA Maker 기술 자료 대한 액세스를 자동화합니다. 이 대화 상자는 작성기 내에서 작업으로도 작동하도록 설계되었습니다.

Important

적응형 대화 상자는 C# SDK 버전 4.9에서 처음 추가되었습니다. 적응형 대화 상자는 Bot Framework 작성기를 지원하며 SDK 우선 봇에서 직접 사용할 수 없습니다.

대화 상자 패턴

봇에서 대화 상자를 시작하고 관리하기 위한 두 가지 기본 패턴이 있습니다.

  1. 보다 자연스럽고 자유로운 대화 기능을 활용하려면 Bot Framework Composer를 사용하여 대화형 대화 상자를 작성하는 것이 좋습니다. 자세한 내용은 Bot Framework Composer 소개를 참조하세요. 이러한 봇은 필요한 경우 코드를 사용하여 확장할 수 있습니다.
  2. SDK 언어 중 하나로 봇을 개발하고 루트 대화 상자의 실행 확장 메서드를 사용합니다. 구성 요소 대화 상자에서 Run 메서드를 사용하는 방법에 대한 자세한 내용은 구성 요소 및 폭포 대화 상자 및 순차적 대화 흐름을 구현하는 방법을 참조하세요.

대화 상자 스택

대화 컨텍스트에는 모든 활성 대화 상자에 대한 정보가 포함되며 모든 활성 대화 상자의 호출 스택 역할을 하는 대화 상자 스택이 포함됩니다. 각 컨테이너 대화 상자에는 제어하는 내부 대화 세트가 있으므로 각 활성 컨테이너 대화 상자는 내부 대화 컨텍스트 및 대화 상자 스택을 해당 상태의 일부로 도입합니다.

스택에 직접 액세스하지는 않지만 스택이 존재하고 해당 함수를 이해하면 대화 라이브러리의 다양한 측면이 작동하는 방식을 이해하는 데 도움이 됩니다.

컨테이너 대화 상자

컨테이너 대화 상자 는 더 큰 대화 집합의 일부일 수 있습니다. 각 컨테이너에는 관리되는 내부 대화 집합도 있습니다.

  • 각 대화 집합은 대화 ID를 확인하기 위한 범위를 만듭니다.

  • SDK는 현재 구성 요소 대화 상자와 적응형 대화 상자라는 두 가지 유형의 컨테이너 대화 상자를 구현합니다.

    두 가지의 개념적 구조는 매우 다릅니다. 그러나 작성기 봇은 둘 다 사용할 수 있습니다.

대화 상자 ID

대화 집합에 대화 상자를 추가할 때 해당 집합 내에서 고유한 ID를 할당합니다. 집합 내의 대화 상자는 ID로 서로를 참조합니다.

한 대화 상자가 런타임에 다른 대화 상자를 참조하는 경우 대화 상자의 ID로 참조합니다. 대화 컨텍스트는 즉시 대화 집합의 다른 대화 상자에 따라 ID를 확인하려고 합니다. 일치하는 항목이 없으면 포함 또는 외부 대화 집합 등에서 일치 항목을 찾습니다. 일치하는 항목이 없으면 예외 또는 오류가 생성됩니다.

구성 요소 대화

구성 요소 대화 상자는 대화에 시퀀스 모델을 사용하고 컨테이너의 각 대화 상자는 컨테이너의 다른 대화 상자를 호출합니다. 구성 요소 대화 상자의 내부 대화 스택이 비어 있으면 구성 요소가 종료됩니다.

봇에 동적 대화 흐름이 필요하지 않은 비교적 간단한 제어 흐름이 있는 경우 구성 요소 및 폭포 대화 상자를 사용하는 것이 좋습니다.

구성 요소 및 폭포 대화에 대해 구성 요소, 폭포 및 프롬프트 대화에 대해 자세히 설명합니다.

기타 대화 상자

QnA Maker 및 기술 대화 상자는 독립 실행형 대화 상자 또는 컨테이너의 대화 컬렉션의 일부로 사용할 수 있습니다.

QnA Maker 대화 상자

참고 항목

Azure AI QnA Maker는 2025년 3월 31일에 사용 중지됩니다. 2022년 10월 1일부터 새로운 QnA Maker 리소스 또는 참조 자료를 만들 수 없습니다. 이제 최신 버전의 질문 및 답변 기능이 Azure AI 언어의 일부로 사용할 수 있습니다.

Azure AI Language의 기능인 사용자 지정 질문 답변은 QnA Maker 서비스의 업데이트된 버전입니다. Bot Framework SDK의 질문 및 답변 지원에 대한 자세한 내용은 자연어 이해를 참조하세요.

QnA Maker 대화 상자는 QnA Maker 기술 자료 액세스하고 QnA Maker의 후속 프롬프트 및 활성 학습 기능을 지원합니다.

  • 멀티 턴 프롬프트라고도 하는 후속 프롬프트를 사용하면 기술 자료 질문에 대답하기 전에 사용자에게 자세한 정보를 요청할 수 있습니다.
  • 활성 학습 제안을 사용하면 시간이 지남에 따라 기술 자료 개선할 수 있습니다. QnA Maker 대화 상자는 활성 학습 기능에 대한 명시적 피드백을 지원합니다.

자세한 내용은 다음을 참조하세요.

기술 대화 상자

기술 대화 상자는 하나 이상의 기술에 액세스하고 관리합니다. 기술 대화 상자는 부모 봇의 활동을 기술 봇에 게시하고 사용자에게 기술 응답을 반환합니다.

자세한 내용은 다음을 참조하세요.

다음 단계