대화형 작업을 사용하면 사용자가 제품 및 서비스에 액세스할 수 있는 자체 대화 인터페이스로 Google 어시스턴트를 확장할 수 있습니다. 작업은 어시스턴트의 강력한 자연어 이해 (NLU) 엔진을 활용하여 자연어 입력을 처리 및 이해하며 해당 입력을 기반으로 작업을 실행합니다.
개요
대화형 작업은 대화의 진입점 (호출이라고 함)을 정의하는 간단한 객체입니다.
- 호출은 사용자가 어시스턴트에 작업 중 하나와 대화를 시작하고 싶다고 알리는 방법을 정의합니다. 작업 호출은 사용자가 작업을 요청할 때 일치되는 단일 인텐트로 정의됩니다.
- 대화는 작업이 호출된 후 사용자가 작업과 상호작용하는 방법을 정의합니다. 인텐트, 유형, 장면, 프롬프트로 대화를 빌드합니다.
- 또한 작업은 추가 작업을 웹훅을 통해 작업과 통신하는 웹 서비스인 처리에 위임할 수 있습니다. 이를 통해 데이터 검증, 다른 웹 서비스 호출, 비즈니스 로직 수행 등의 작업을 수행할 수 있습니다.
사용자에게 중요한 사용 사례를 기반으로 하나 이상의 작업을 작업 프로젝트라는 논리적 컨테이너로 묶습니다. 작업 프로젝트에는 전체 호출 모델 (모든 호출의 모음)이 포함되어 있어 사용자가 대화 모델의 논리적인 위치 (사용자가 할 수 있는 모든 말과 사용자에게 응답할 수 있는 모든 방법)에서 시작할 수 있습니다.
호출
호출은 사용자가 어시스턴트에 작업을 호출하도록 요청할 수 있는 브랜드, 이름 또는 캐릭터를 나타내는 표시 이름과 연결됩니다. 사용자는 이 표시 이름을 단독으로 사용하거나 (기본 호출이라고 함) 선택적 딥 링크 구문과 함께 사용하여 작업을 호출할 수 있습니다.
예를 들어 사용자는 다음 문구를 말하여 프로젝트에서 'Google에 관한 사실'이라는 표시 이름으로 세 개의 개별 작업을 호출할 수 있습니다.
- "Hey Google, Google에 관한 사실에 관해 말해 줘"
- "Hey Google, Google에 관한 사실에 관해 말해 회사에 관한 사실 알려 줘"
- "Hey Google, Google에 관한 사실과 대화해 역사에 관한 사실을 알려 줘"
예에서 첫 번째 호출은 기본 호출입니다. 이 호출은 actions.intent.MAIN
라는 특수한 시스템 인텐트와 연결됩니다. 두 번째 및 세 번째 호출은 사용자가 특정 기능을 요청할 수 있는 추가 구문을 지정할 수 있는 딥 링크 호출입니다. 이러한 호출은 전역으로 지정한 사용자 인텐트에 상응합니다. 이 예시의 각 호출은 대화의 진입점을 제공하며 단일 작업에 해당합니다.
그림 2에서는 일반적인 기본 호출 흐름을 보여줍니다.
- 사용자는 작업을 요청할 때 일반적으로 어시스턴트에 표시 이름으로 요청합니다.
- 어시스턴트는 사용자의 요청을 요청과 일치하는 상응하는 인텐트와 일치시킵니다. 이 경우에는
actions.intent.MAIN
가 됩니다. - 작업은 인텐트 일치에 관한 알림을 받고 상응하는 프롬프트로 응답하여 사용자와 대화를 시작합니다.
대화
대화는 호출된 후 사용자가 작업과 상호작용하는 방식을 정의합니다. 이러한 상호작용은 대화에 유효한 사용자 입력, 해당 입력을 처리하는 로직, 사용자에게 다시 응답하는 관련 프롬프트를 정의하여 빌드합니다. 다음 그림과 설명은 대화의 하위 수준 구성요소인 인텐트, 유형, 장면, 프롬프트에서 일반적인 대화 차례가 작동하는 방식을 보여줍니다.
그림 3은 일반적인 대화 차례를 보여줍니다.
- 사용자가 말을 하면 어시스턴트 NLU가 입력을 적절한 인텐트에 매칭합니다. 인텐트는 인텐트의 언어 모델이 사용자 입력과 근접하거나 정확하게 일치할 수 있는 경우 일치됩니다. 언어 모델은 학습 문구 또는 사용자가 말할 가능성이 있는 것의 예를 지정하여 정의합니다. 어시스턴트는 이러한 학습 문구를 받아서 더 확장하여 인텐트의 언어 모델을 만듭니다.
- 어시스턴트 NLU는 인텐트를 매칭할 때 입력에서 필요한 매개변수를 추출할 수 있습니다. 이러한 매개변수에는 날짜 또는 숫자와 같은 유형이 연결되어 있습니다. 인텐트 학습 문구의 특정 부분에 주석을 달아 추출하려는 매개변수를 지정합니다.
- 그러면 장면이 매칭된 인텐트를 처리합니다. 장면을 작업의 로직 실행자라고 생각할 수 있습니다. 즉, 대화를 진행하는 데 필요한 로직을 실행하는 번거로운 작업을 실행합니다. 장면은 루프로 실행되어 인텐트 매개변수 유효성 검사, 슬롯 채우기 실행, 사용자에게 다시 메시지 전송 등의 작업을 실행할 수 있는 유연한 실행 수명 주기를 제공합니다.
- 장면 실행이 완료되면 일반적으로 사용자에게 대화를 계속하라는 메시지를 다시 보내거나 적절한 경우 대화를 종료할 수 있습니다.
주문 처리
호출 또는 대화 중에 작업은 처리 서비스에 일부 작업을 실행하도록 알리는 웹훅을 트리거할 수 있습니다.
그림 4에서는 처리를 사용하는 일반적인 방법인 처리를 사용하여 프롬프트를 생성하는 방법을 설명합니다.
- 작업을 실행하는 특정 지점에서 JSON 페이로드가 포함된 등록된 웹훅 핸들러 (처리 서비스)에 요청을 전송하는 웹훅을 트리거할 수 있습니다.
- Fulfillment는 요청을 처리합니다(예: REST API를 호출하여 일부 데이터 조회 수행 또는 JSON 페이로드에서 일부 데이터 검증). 처리를 사용하는 가장 일반적인 방법은 런타임 시 동적 프롬프트를 생성하여 대화를 현재 사용자에 보다 적합하게 조정하는 것입니다.
- 처리에서 JSON 페이로드가 포함된 작업에 응답을 다시 반환합니다. 페이로드의 데이터를 사용하여 실행을 계속하고 사용자에게 다시 응답할 수 있습니다.