대화형 작업 (Dialogflow)

대화형 작업은 개발자가 어시스턴트 사용자를 위한 맞춤 환경, 즉 대화를 만들 수 있도록 하여 Google 어시스턴트의 기능을 확장합니다. 대화에서 대화형 작업은 어시스턴트의 요청을 처리하고 오디오 및 시각적 구성요소가 포함된 응답을 반환합니다. 대화형 작업은 응답을 반환하기 전에 대화 또는 비즈니스 로직을 추가하기 위해 외부 서비스에 연결할 수도 있습니다.

예를 들어 사용자는 정보를 조회하거나, 맞춤 추천을 받거나, 디지털 결제와 관련된 거래를 실행하려는 경우 대화형 작업을 호출하여 외부 처리 서비스의 응답을 받을 수 있습니다.

Google 어시스턴트와의 대화를 주고받는 과정에서 사용자가 회의 세션이 언제 열리는지에 관해 묻고 답변을 받습니다.
그림 1. 대화형 작업의 예

사용 사례

대화형 작업은 다른 환경을 보완하는 간단한 사용 사례에 가장 적합합니다. 좋은 대화형 작업은 보통 다음과 같은 일반적인 카테고리로 분류됩니다.

  • 사람들이 쉽게 답변할 수 있는 질문 항공편 예약과 같은 시간, 날짜 등 익숙한 입력으로 처리할 수 있는 작업
  • 간단하지만 굉장히 유용한 작업. 이렇게 하면 일반적으로 사용자가 좋아하는 스포츠팀의 다음 경기 일정을 확인하는 등 거의 시간을 쓰지 않고도 즉각적인 이점을 얻을 수 있습니다.
  • 기본적으로 음성에 더 적합한 작업 이러한 기능은 보통 요가나 가벼운 운동 중에 코칭을 받는 등 핸즈프리로 하고 싶은 작업입니다.

대화형 작업 작동 방식

컴퓨터 중심의 패러다임을 사용하는 기존 모바일 및 데스크톱 앱과 달리 사용자는 자연스러운 대화를 통해 어시스턴트용 작업과 상호작용합니다. 대화형 작업은 사용자가 호출할 때 시작되며 사용자가 종료를 선택하거나 (미리 결정된 문구 사용) 대화의 끝을 표시할 때까지 계속됩니다.

대화 중에 사용자 입력이 어시스턴트에 의해 음성에서 텍스트로 변환되고 자연어 처리를 위한 JSON 요청으로 구성됩니다. 이러한 요청은 대화 처리로 전송됩니다.

대화 처리는 사용자의 쿼리를 구조화된 데이터로 파싱하고, 해당 데이터를 처리하고, 웹훅 JSON 응답을 어시스턴트에 반환합니다. 그러면 어시스턴트가 응답을 처리하고 사용자에게 표시합니다.

대화 처리는 JSON 요청 입력 및 웹훅 JSON 응답 출력으로 표시될 수 있습니다.
그림 2. 대화 처리는 JSON In-JSON Out 시스템임

고유한 자연어 처리 서비스를 빌드하는 것은 어려울 수 있으므로 Google에서는 이를 처리하는 방법으로 Dialogflow를 제공합니다. Dialogflow를 사용할 수 없는 개발자를 위해 Actions SDK도 별개이지만 관련된 개발 경로가 있는 백업 옵션으로 제공됩니다.

Dialogflow에 에이전트를 설정하면 Dialogflow 처리 사용 기능을 포함한 Dialogflow의 기능으로 대화 처리가 강화됩니다. 이 접근 방식을 사용하면 사용자에게 원하는 결과를 제공하는 데 필요할 수 있는 다른 서비스와 대화 처리를 분리할 수 있습니다.

Actions on Google은 사용자 발화를 파싱하고 Dialogflow에 요청을 보냅니다. Dialogflow는 인텐트를 일치시키고 해당 Dialogflow 처리에 전송할 매개변수를 추출합니다. 그런 다음 처리는 Actions on Google로 응답을 다시 전송하고 Actions on Google은 어시스턴트 노출 영역에 응답을 렌더링합니다.
그림 3. Dialogflow 사용 시 대화 처리

대화형 작업 빌드

대화형 작업 빌드의 대부분은 대화를 설계하고 대화 처리를 빌드하는 것입니다. 대화를 대화형 작업의 사용자 인터페이스라고 생각하세요. 사용자가 작업 프로젝트를 호출하는 방법, 사용자가 대화에서 말할 수 있는 유효한 말, 작업 프로젝트가 사용자에 응답하는 방법을 생각해야 합니다.

작업 프로젝트에서는 프로젝트 게시를 위한 메타데이터를 제공하고 대화 처리 방법을 지정합니다. Dialogflow를 사용하는 개발자는 Dialogflow 에이전트를 프로젝트와 연결한 다음 Dialogflow를 통해 fulfillment를 빌드합니다. Actions SDK를 사용하는 개발자의 경우 대화 처리를 빌드하려면 대화 웹훅 형식으로 코딩 및 배포를 수행해야 합니다.

대화를 설계할 때 Google의 프로세스와 설계 원칙을 사용하는 것이 좋습니다. 대화형 인터페이스는 아직 비교적 새로운 기술이며 권장사항을 학습하면 향후 시간을 절약할 수 있습니다.

Dialogflow를 사용한 처리

Dialogflow 에이전트와 통합할 때 에이전트는 대화 작업에서 사용자 쿼리에 대해 NLU를 처리합니다. 이 단계에서 Dialogflow 에이전트는 다음을 수행합니다.

  1. 개발자가 제공하는 학습 문구와 대화 컨텍스트를 기반으로 어시스턴트에서 수신되는 각 요청을 파싱합니다.
  2. 각 요청을 Dialogflow 인텐트 (이벤트라고도 함)와 일치시킵니다.
  3. 매개변수를 Dialogflow 항목으로 추출합니다.

그러면 Dialogflow 에이전트가 자체 처리 (웹훅로 배포됨)를 호출하여 어시스턴트에 반환할 응답을 생성하는 REST API 또는 기타 백엔드 서비스 호출과 같은 일부 로직을 수행할 수 있습니다. 이 웹훅은 Dialogflow 처리라고도 하며 Dialogflow 웹훅 형식을 사용합니다.

Dialogflow는 인텐트 일치를 위한 사용자 발화를 받아들여 추출된 매개변수를 Dialogflow 처리에 제공합니다. 처리는 사용자에게 응답을 반환합니다.
그림 4. Dialogflow 에이전트가 Dialogflow 처리를 위해 사용자 쿼리를 구조화된 데이터로 파싱합니다.

Dialogflow를 사용할 때 대화 처리를 빌드하는 것은 주로 Dialogflow 처리 웹훅 개발로 구성됩니다. Actions on Google 문서에는 Dialogflow 처리 웹훅을 설계, 빌드, 테스트하는 데 도움이 되는 리소스가 포함되어 있습니다. 특히 이러한 리소스에는 Node.js 클라이언트 라이브러리자바 클라이언트 라이브러리가 포함되어 있습니다.

Dialogflow로 빌드할 때 Dialogflow 콘솔을 사용하여 Dialogflow 인텐트, 항목, 학습 문구를 만듭니다.

Dialogflow에 대한 자세한 내용은 Dialogflow 문서의 Actions on Google 통합에 대해 읽어보세요.

Actions SDK를 사용한 처리

Actions SDK를 사용하여 대화 처리를 빌드하는 작업은 주로 작업 패키지를 만들고 배포하는 작업으로 구성됩니다. 작업 패키지는 ActionPackage 형식으로 생성되며 대화 웹훅 형식을 사용합니다. 작업 패키지에는 지정된 작업 프로젝트의 모든 작업이 포함됩니다.

어시스턴트는 Actions on Google 인텐트를 사용하여 대화 처리에 사용자 쿼리를 제공합니다. 각 인텐트에 대해 처리 웹훅은 인텐트를 파싱하고 처리하고 사용자를 위해 어시스턴트에 JSON 응답을 반환해야 합니다.

응답

어시스턴트용 작업을 빌드할 때는 음성 인식 스피커를 위한 음성 중심 대화나 어시스턴트가 지원하는 영역의 시각적 대화와 같이 다양한 노출 영역에 관한 대화를 설계해야 합니다. 이 접근 방식을 사용하면 사용자는 음성 또는 시각적 어포던스를 통해 작업을 빠르게 완료할 수 있습니다.

처리를 빌드할 때 어시스턴트가 사용자에게 제시할 흥미로운 응답 유형을 다양하게 선택할 수 있습니다. 여기에는 간단한 텍스트가 포함된 채팅 풍선부터 미디어 응답, 캐러셀, Interactive Canvas를 사용한 HTML까지 다양합니다.

다음 단계

자세한 단계별 안내는 Google 어시스턴트용 작업 빌드 (레벨 1) Codelab을 따라 첫 번째 대화형 작업 빌드를 시작하세요.

그런 다음 Google 가이드를 참고하여 Dialogflow 또는 Actions SDK를 사용하여 자체 대화 처리를 빌드할 수 있습니다. 대화형 작업 빌드를 위한 다음과 같은 추가 리소스도 살펴볼 수 있습니다.