대화 흐름 디자인 및 제어
적용 대상: SDK v4
기존 애플리케이션에서 UI(사용자 인터페이스)는 일련의 화면으로 구성되고, 단일 앱 또는 웹 사이트는 필요에 따라 하나 이상의 화면을 사용하여 사용자와 정보를 교환할 수 있습니다. 대부분의 애플리케이션은 사용자가 처음 착륙하는 기본 화면으로 시작하며, 해당 화면은 새 주문 시작, 제품 검색 또는 도움말 검색과 같은 다양한 기능에 대한 다른 화면으로 이어지는 탐색을 제공합니다.
앱 및 웹 사이트와 마찬가지로 봇에는 UI가 있지만 화면이 아닌 메시지로 구성됩니다. 메시지에는 단추, 텍스트 및 기타 요소가 포함되거나 완전히 음성 기반일 수 있습니다.
기존 애플리케이션 또는 웹 사이트는 한 번에 여러 개의 정보를 화면에 요청할 수 있지만 봇은 여러 메시지를 사용하여 동일한 양의 정보를 수집합니다. 이러한 방식으로 사용자로부터 정보를 수집하는 프로세스는 활성 환경입니다. 사용자가 봇과 활성 대화를 나누는 위치입니다.
잘 디자인된 봇은 자연스럽게 느껴지는 대화형 흐름을 갖게 됩니다. 봇은 핵심 대화를 원활하게 처리하고 중단 또는 토픽 전환 작업을 정상적으로 처리할 수 있어야 합니다.
절차적 대화 흐름
봇과의 대화는 봇이 달성하려는 작업에 집중할 수 있으며 이를 절차 흐름이라고 합니다. 봇은 작업을 처리하기 전에 필요한 모든 정보를 수집하기 위해 사용자에게 일련의 질문을 합니다.
절차 대화 흐름에서 사용자가 질문 순서를 정의하고 봇이 정의된 순서대로 질문을 합니다. 대화를 안내하는 데 집중하면서 코드를 cMicrosoft Entralized로 유지하도록 질문을 논리 그룹으로 구성할 수 있습니다. 예를 들어 사용자가 제품을 찾아보는 데 도움이 되는 논리를 포함하도록 모듈 하나를 디자인하고 사용자가 새 주문을 만드는 데 도움이 되는 논리를 포함하도록 별도의 모듈을 디자인할 수 있습니다.
자유 형식에서 순차적 형식에 이르기까지 원하는 방식으로 흐르도록 이러한 모듈을 구성할 수 있습니다. Bot Framework SDK는 봇에 필요한 대화형 흐름을 생성할 수 있는 대화 상자 라이브러리를 제공합니다. 라이브러리에는 일련의 단계를 만들기 위한 폭포 대화 상자와 사용자에게 질문하기 위한 프롬프트가 포함되어 있습니다. 자세한 내용은 대화 상자 라이브러리를 참조 하세요.
기존 애플리케이션에서 모든 항목은 기본 화면으로 시작합니다. 기본 화면에서 새 주문 화면을 호출합니다. 새 주문 화면은 제품 검색 화면과 같은 다른 화면을 닫거나 호출할 때까지 제어할 기본 있습니다. 새 주문 화면이 닫히면 사용자가 기본 화면으로 돌아갑니다.
대화 상자를 사용하는 봇에서는 모든 항목이 루트 대화 상자로 시작됩니다. 루트 대화 상자는 새 순서 대화 상자를 호출합니다. 이때 새 주문 대화 상자는 대화를 제어하고 제품 검색 대화 상자와 같은 다른 대화 상자를 닫거나 호출할 때까지 기본 제어합니다. 새 순서 대화 상자가 닫히면 대화 컨트롤이 루트 대화 상자로 돌아갑니다.
대화 상자 라이브러리를 사용하여 대화 흐름을 구현하는 방법의 예는 순차적 대화 흐름 구현을 참조하세요.
중단 처리
사용자가 절차 작업을 하나씩 깔끔하고 정돈된 방식으로 수행한다고 가정해 볼 수 있습니다. 예를 들어 대화 상자를 사용하는 절차적 대화 흐름에서 사용자는 루트 대화 상자에서 시작하여 새 순서 대화 상자를 호출합니다. 새 주문 대화 상자에서 제품 검색 대화 상자를 호출합니다. 그런 다음 제품 검색 대화 상자에 나열된 결과 중 하나를 선택하면 새 주문 대화 상자가 호출됩니다. 주문을 완료한 후 루트 대화 상자에 다시 도착합니다.
사용자가 항상 이런 선형 논리적 경로로 이동한다면 좋겠지만 이런 경우는 거의 없습니다. 사람 항상 순차적으로 통신하는 것은 아닙니다. 그들은 자주 자신의 마음을 변경하는 경향이있다. 다음 예제를 참조하세요.
봇은 절차 중심일 수 있지만 사용자는 완전히 다른 작업을 수행하거나 현재 항목과 관련이 없는 질문을 할 수 있습니다. 위의 예제에서 사용자는 봇이 기대하는 예/아니요 응답을 제공하는 대신 질문을 합니다. 봇은 어떻게 응답해야 하나요?
- 사용자가 먼저 질문에 대답해야 한다고 주장합니다.
- 사용자가 이전에 수행한 모든 작업을 무시하고, 전체 대화 상자 스택을 다시 설정한 다음, 사용자의 질문에 답변하려고 시도하여 처음부터 시작합니다.
- 사용자의 질문에 대답한 다음 해당 예/아니요 질문으로 돌아가서 해당 질문에서 다시 시작합니다.
최상의 솔루션은 시나리오의 세부 사항과 사용자가 봇이 합리적으로 응답할 것으로 예상하는 방법에 따라 달라지기 때문에 이 질문에 대한 정답은 없습니다. 일부 유형의 중단을 처리하도록 설계된 봇에 대한 사용자 중단을 처리하는 방법을 알아보세요.
대화 만료
때로는 처음부터 대화를 다시 시작하는 것이 유용합니다. 예를 들어 사용자가 일정 기간 후에 응답하지 않는 경우입니다. 대화를 종료하는 다양한 방법은 다음과 같습니다.
- 사용자로부터 메시지를 마지막으로 받은 시간을 추적하고, 사용자로부터 다음 메시지를 받을 때 미리 구성된 길이보다 시간이 긴지 상태를 지웁다.
- Cosmos DB의 Time to Live 기능과 같은 스토리지 계층 기능을 사용하여 미리 구성된 시간 후에 상태를 지웁니다.
자세한 내용은 대화 만료 방법을 참조하세요.
다음 단계
대화 상자에서 사용자의 탐색을 관리하고 사용자가 목표를 달성할 수 있는 방식으로 대화 흐름을 디자인하는 것은 봇 디자인의 기본적인 과제입니다. 디자인 봇 탐색 문서에서는 제대로 디자인되지 않은 탐색의 몇 가지 일반적인 문제를 검토하고 이러한 트랩을 방지하기 위한 전략을 설명합니다.