Dialogflow ES로 Google Chat 부가기능 빌드

이 페이지에서는 Dialogflow ES를 사용하여 자연어를 이해하고 이에 응답하는 Google Workspace 부가기능으로 Google Chat 앱을 빌드하는 방법을 설명합니다. Google Chat과 직접 통합되는 Dialogflow CX를 사용하여 Dialogflow CX Google Chat 가이드에 따라 Dialogflow CX Google Chat 앱을 빌드할 수도 있습니다.

목표

  • 환경을 설정합니다.
  • Dialogflow ES 에이전트를 만들고 배포합니다.
  • Dialogflow ES 에이전트로 구동되는 Chat 앱을 만들고 배포합니다.
  • Chat 앱을 테스트합니다.

기본 요건

아키텍처

다음 다이어그램은 Dialogflow로 빌드된 채팅 앱의 아키텍처를 보여줍니다.

Dialogflow로 구현된 채팅 앱의 아키텍처

위 다이어그램에서 Dialogflow 채팅 앱과 상호작용하는 사용자의 정보 흐름은 다음과 같습니다.

  1. 사용자가 채팅 메시지 또는 채팅 스페이스를 통해 Chat에서 채팅 앱으로 메시지를 보냅니다.
  2. 에 있는 Dialogflow 가상 에이전트는 메시지를 수신하고 처리하여 응답을 생성합니다.
  3. 선택적으로 Dialogflow 웹훅을 사용하여 Dialogflow 에이전트는 프로젝트 관리 시스템이나 티켓팅 도구와 같은 외부 서드 파티 서비스와 상호작용할 수 있습니다.
  4. Dialogflow 에이전트는 Chat의 Chat 앱 서비스에 응답을 다시 보냅니다.
  5. 응답이 Chat 스페이스로 전송됩니다.

환경 설정

Google API를 사용하려면 먼저 Google Cloud 프로젝트에서 사용 설정해야 합니다. 단일 Google Cloud 프로젝트에서 하나 이상의 API를 사용 설정할 수 있습니다.
  1. Google API 콘솔에서 Google Chat API와 Dialogflow API를 사용 설정합니다.

    API 사용 설정

  2. 올바른 Cloud 프로젝트에서 API를 사용 설정하고 있는지 확인한 후 다음을 클릭합니다.

  3. 올바른 API를 사용 설정했는지 확인한 후 사용 설정을 클릭합니다.

Dialogflow ES 에이전트 만들기

기존 Dialogflow ES 에이전트가 없는 경우:

  1. Dialogflow ES 콘솔로 이동합니다.
  2. 에이전트 만들기를 클릭합니다.
  3. 이름을 지정하고 기본 언어와 시간대를 선택합니다.
  4. Cloud 프로젝트와 연결합니다.
  5. 만들기를 클릭합니다.
  6. Chat 앱 대화 흐름에 필요한 인텐트와 항목을 빌드합니다. 인사말 인텐트로 시작할 수 있습니다.
  7. 프로젝트 ID를 기록해 둡니다.

자세한 가이드는 에이전트 빌드를 참고하세요.

채팅 앱을 만들고 Dialogflow 에이전트와 연결

Dialogflow ES 에이전트를 만든 후 다음 단계에 따라 Chat 앱으로 전환하세요.

  1. Google API 콘솔에서 Google Chat API로 이동합니다. 'Google Chat API'를 검색하고 Google Chat API를 클릭한 다음 관리를 클릭합니다.

    Chat API로 이동

  2. 구성을 클릭하고 Chat 앱을 설정합니다.

    1. 앱 이름Dialogflow App를 입력합니다.
    2. 아바타 URLhttps://developers.google.com/workspace/chat/images/quickstart-app-avatar.png를 입력합니다.
    3. 설명Responds to real human conversation을 입력합니다.
    4. 기능에서 스페이스 및 그룹 대화 참여를 선택합니다.
    5. 연결 설정에서 Dialogflow를 선택합니다.
    6. Dialogflow 설정에서 Dialogflow ES를 선택합니다.
    7. 도메인에서 특정 사용자 및 그룹에서 이 채팅 앱을 사용할 수 있도록 설정하고 이메일 주소를 입력합니다.
    8. 로그에서 Logging에 오류 로깅을 선택합니다.
  3. 저장을 클릭합니다.

Chat 앱은 Chat에서 메시지를 수신하고 응답할 준비가 되었습니다.

채팅 앱 테스트

Google Chat에서 메시지를 보내 Dialogflow ES Chat 앱을 테스트합니다.

  1. 신뢰할 수 있는 테스터로 자신을 추가할 때 제공한 Google Workspace 계정을 사용하여 Google Chat을 엽니다.

    Google Chat으로 이동

  2. 새 채팅을 클릭합니다.
  3. 사용자 1명 이상 추가 필드에 Chat 앱의 이름을 입력합니다.
  4. 검색 결과에서 채팅 앱을 선택합니다. 채팅 메시지가 열립니다.

  5. 앱의 새 채팅 메시지에 Hello를 입력하고 enter를 누릅니다.

    Dialogflow Chat 앱이 인사말로 응답합니다.

텍스트 응답

텍스트 응답문자 메시지로 Google Chat에 전송됩니다. 이 서식을 사용하면 텍스트를 특정(마크다운 라이트) 기호로 래핑하여 텍스트를 굵게 또는 기울임꼴로 만들 수 있습니다.

문자 메시지 응답은 Dialogflow 콘솔의 기본 텍스트 응답과 시각적으로 유사합니다. 하지만 원시 API 응답은 약간 다르게 보입니다. 또한 플랫폼 구성을 GOOGLE_HANGOUTS로 설정합니다. 이 구성은 여러 통합을 위한 에이전트를 빌드할 때 유용할 수 있습니다.

"fulfillmentMessages": [
{
   "text": {
   "text": [
        "This is a test."
   ]
},
  "platform": "GOOGLE_HANGOUTS"
},

카드

카드 응답카드 메시지로 Google Chat에 전송됩니다.

이미지

이미지 응답Google Chat 이미지 위젯으로 Google Chat에 전송됩니다.

커스텀 페이로드

다른 유형의 Google Chat 메시지를 전송하려면 커스텀 페이로드를 사용하면 됩니다.

Google Chat 커스텀 페이로드를 사용하면 고급 카드를 만들 수 있습니다. 카드 하나에 섹션이 한 개 이상 있을 수 있습니다. 각 섹션에는 헤더가 있을 수 있습니다. Google Workspace 부가기능으로 Chat 확장 카드 참조 가이드를 살펴보고 이를 사용하여 만들 수 있는 몇 가지 조합을 알아볼 수 있습니다. 하지만 커스텀 페이로드를 사용하면 JSON 형식을 제공해야 합니다.

다음은 카드가 포함된 메시지를 만들기 위한 맞춤 페이로드의 예시입니다.

{ "hangouts": { "hostAppDataAction": { "chatDataAction": {
  "createMessageAction": { "message": { "cardsV2": [{
    "cardId": "pizza",
    "card": {
      "header": {
        "title": "Pizza Delivery Customer Support",
        "subtitle": "pizzadelivery@example.com",
        "imageUrl": "https://goo.gl/aeDtrS"
      },
      "sections": [{ "widgets": [{ "textParagraph": {
        "text": " Your pizza is here!"
      }}]}]
    }
  }]}}
}}}}

한도 및 고려사항

  • Dialogflow와 함께 Google Workspace 부가기능을 사용하는 경우 채팅 이벤트 객체에는 다음과 같은 제한사항과 고려사항이 있습니다.
    • 앱 홈 이벤트: APP_HOME 이벤트는 아직 지원되지 않습니다.
    • Dialogflow 쿼리 입력: Dialogflow 에이전트에 쿼리 입력으로 전송되는 텍스트는 이벤트 유형에 따라 다릅니다.
      • MESSAGE: 채팅 메시지의 argumentText 필드 값입니다.
      • APP_COMMAND: 문자열 "APP_COMMAND_PAYLOAD"입니다.
      • ADDED_TO_SPACE: 기본 환영 이벤트가 전송됩니다.
      • REMOVED_FROM_SPACE: 문자열 "REMOVED_FROM_SPACE_PAYLOAD"입니다.
      • CARD_CLICKED: 문자열 "BUTTON_CLICKED_PAYLOAD"입니다.
      • WIDGET_UPDATED: "WIDGET_UPDATED_PAYLOAD" 문자열 (자동 완성에 사용됨)
    • 전체 이벤트 페이로드: 채팅 상호작용 이벤트의 전체 JSON 페이로드가 WebhookRequest.payload 필드 내에서 Dialogflow로 전송됩니다. Dialogflow 웹훅에서 액세스할 수 있습니다. 자세한 내용은 Dialogflow ES 웹훅 요청 문서를 참고하세요.
  • 명령어에 응답하고 카드 또는 대화상자에서 데이터를 수신할 때 고려사항은 다음과 같습니다.
  • 링크 미리보기는 지원되지 않습니다.
  • Dialogflow 에이전트가 하나의 메시지로만 응답하는 경우 메시지는 Google Chat에 동기식으로 전송됩니다. Dialogflow 에이전트가 여러 메시지로 응답하는 경우 각 메시지에 대해 한 번씩 Chat API의 spaces.messages 리소스에서 create 메서드를 호출하여 모든 메시지가 Chat에 비동기식으로 전송됩니다.
  • Dialogflow ES를 Chat과 통합하여 사용하는 경우 Dialogflow 에이전트와 Chat 앱이 동일한 Google Cloud 프로젝트에 설정되어 있어야 합니다.

문제 해결

채팅 앱을 디버깅하려면 먼저 오류 로그를 검토하세요. 이 앱은 Dialogflow를 사용하므로 다음과 같은 여러 로깅 및 문제 해결 리소스를 사용할 수 있습니다.

삭제

이 튜토리얼에서 사용한 리소스 비용이 계정에 청구되지 않도록 하려면 Cloud 프로젝트를 삭제하는 것이 좋습니다.

  1. Google API 콘솔에서 리소스 관리 페이지로 이동합니다. 메뉴 > IAM 및 관리자 > 리소스 관리를 클릭합니다.

    Resource Manager로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.
  • Dialogflow CX는 채팅 앱에서 Dialogflow를 사용하는 또 다른 방법입니다.