Dialogflow 기반 RBM 에이전트 만들기 (기본)

이 Codelab에서는 Dialogflow를 사용하여 코드 작성 없이 RBM 에이전트를 구동하는 대화형 인터페이스를 만드는 방법을 알아봅니다.

이 Codelab에서 빌드할 내용은 무엇인가요?

  • RBM 상담사의 대화를 지원하는 Dialogflow 에이전트
  • 사용자에게 할인 혜택을 제공하고 레스토랑 메뉴를 확인할 수 있는 가상의 피자 레스토랑용 대화형 인터페이스

내용

  • Dialogflow의 주요 구성 요소를 사용하여 대화 인터페이스를 만드는 방법
  • 사용자를 위한 풍부한 RBM 환경을 만들기 위해 Dialogflow에서 RBM 응답 유형을 만드는 방법

필요한 사항

  • RBM 플랫폼 Google 계정

첫 번째 에이전트 만들기 및 쿼리하기

길이: 30:00

첫 번째 Dialogflow 에이전트 만들기

Dialogflow 에이전트를 만들려면 다음 안내를 따르세요.

  1. 새 탭을 열고 Dialogflow에 로그인합니다.
  2. 왼쪽 탐색 메뉴에서 에이전트 만들기를 클릭합니다.

  3. 에이전트 이름으로 'CodelabRBMPizzaPlace'를 입력하고 기본 시간대로 설정합니다.

  4. 만들기를 클릭합니다.

Dialogflow 콘솔

이제 Dialogflow 콘솔이 표시됩니다. 작은 화면에서 작업 중이며 왼쪽 탐색이 숨겨진 경우 왼쪽 상단의 탐색 버튼을 클릭합니다. 설정 버튼을 누르면 현재 에이전트의 설정으로 이동합니다.

페이지 중간에 에이전트의 인텐트 목록이 표시됩니다. 기본적으로 Dialogflow 에이전트는 인텐트 두 개로 시작합니다. 에이전트가 사용자의 말을 이해하지 못하면 기본 대체 인텐트가 대응하는 결과로 산출됩니다. 기본 시작 인텐트는 사용자에게 인사할 때 사용됩니다. 이러한 인텐트를 변경하여 환경을 맞춤설정할 수 있습니다.

오른쪽에는 Dialogflow 시뮬레이터가 있습니다. 이를 통해 메시지를 말하거나 입력하여 에이전트를 사용해 볼 수 있습니다.

에이전트 쿼리

Dialogflow 에이전트는 NLU (자연어 이해) 모듈로 가장 잘 설명됩니다. 앱, 제품 또는 서비스에 포함되어 자연스러운 사용자 요청을 실행 가능한 데이터로 변환할 수 있습니다.

에이전트를 사용해 볼 차례입니다. 오른쪽의 시뮬레이터에서 지금 사용해 보기라는 텍스트 필드를 클릭하고 '안녕하세요'를 입력한 후 Enter 키를 누릅니다.

Dialogflow는 쿼리를 식별하고 기본 시작 인텐트와 일치하며 일반적인 인사말로 응답합니다. Dialogflow가 몇 가지 샘플 인사말로 기본 시작 인텐트를 자동으로 학습하기 때문입니다.

RBM 에이전트 만들기

비즈니스 커뮤니케이션 개발자 콘솔에 로그인한 후 에이전트 만들기를 클릭합니다.

이름 필드에 '나의 피자집'(예: 션 피자 전문점)을 입력하고 지역을 선택한 후 에이전트 만들기를 클릭합니다.

Dialogflow에 RBM 에이전트 연결

RBM 에이전트가 생성된 후 에이전트를 클릭하여 에이전트의 개요 페이지를 확인합니다. 왼쪽 탐색 메뉴에서 통합 링크를 클릭합니다.

기본적으로 RBM 에이전트는 Google Cloud Pub/Sub를 사용하여 사용자 메시지를 처리합니다. 앞에서 만든 Dialogflow 에이전트에 RBM 에이전트를 연결하려면 Dialogflow 통합을 클릭합니다.

대화상자에서 기존 모델 연결을 클릭합니다. 안내에 따라 RBM 에이전트에 Dialogflow 에이전트를 호출할 수 있는 권한을 부여합니다. 안내를 마쳤으면 다음을 클릭합니다.

마지막으로 Dialogflow 프로젝트 ID를 제공해야 합니다. 비즈니스 커뮤니케이션 개발자 콘솔이 아닌 다른 브라우저 탭에서 Dialogflow로 이동하여 앞서 만든 CodelabRBMPizzaPlace 에이전트를 엽니다. 왼쪽 탐색 메뉴에서 프로젝트 이름 근처에 있는 톱니바퀴 아이콘을 클릭합니다.

이 버튼을 클릭하면 모델의 설정으로 이동합니다. Google 프로젝트에서 프로젝트 ID를 찾아 복사합니다.

비즈니스 커뮤니케이션 개발자 콘솔이 열려 있는 탭으로 돌아가 프로젝트 ID를 대화상자에 붙여넣고 통합 시작을 클릭합니다.

이 작업은 완료하는 데 2분 정도 걸립니다. 완료되면 Dialogflow 통합 옵션이 강조표시되고 사용 가능한 에이전트 보기 링크가 표시됩니다.

에이전트와 주고받은 모든 메시지가 이제 CodelabRBMPizzaPlace Dialogflow 에이전트에서 처리됩니다.

테스트 기기 초대 및 메시지 보내기

Dialogflow를 사용하기 전에 테스트 기기를 설정해 보겠습니다. 아직 RBM 메시지를 수신할 수 있는 기기가 없다면 이 가이드에 따라 기기를 준비하세요.

비즈니스 커뮤니케이션 개발자 콘솔의 왼쪽 탐색 메뉴에서 기기를 클릭합니다. 양식에서 E.164 형식 (예: +12223334444)으로 기기의 전체 전화번호를 입력하고 추가를 클릭합니다.

기기에서 테스트 초대를 받습니다. 테스터로 지정을 탭합니다.

브라우저의 기기 목록에서 기기를 찾아 기기에 테스트 메시지를 보냅니다. 기기에서 RBM 에이전트로부터 메시지를 받았다면 이 Codelab을 계속 진행할 수 있습니다.

시작 인텐트 만들기

일반적으로 Dialogflow 기반 RBM 에이전트에서는 대화를 시작하기 위해 사용자의 전화번호와 대화를 시작하는 Dialogflow 인텐트 (대개 에이전트의 시작 인텐트)를 지정합니다. 이 Codelab에서는 이 단계를 건너뛰고 대신 이전 단계에서 만든 대화형 스레드를 비즈니스 커뮤니케이션 개발자 콘솔의 테스트 기기와 함께 사용합니다. 그러나 이 API 기능에 대한 자세한 내용은 이 가이드를 참조하세요.

먼저 Dialogflow가 RBM 에이전트와 함께 사용할 수 있도록 기본 시작 인텐트에 RBM 응답을 추가합니다. 먼저 Dialogflow가 열려 있는 브라우저 탭으로 이동합니다. 왼쪽 탐색 메뉴에서 인텐트 링크를 클릭합니다. 오른쪽 상단의 휴지통을 클릭하여 샘플 일반 '텍스트 응답'을 삭제합니다. 그런 다음 기본 시작 인텐트를 클릭하고 응답 섹션까지 아래로 스크롤한 후 응답 유형 목록에서 +를 클릭하고 RSM (RCS Business Messaging)을 선택합니다.

응답 추가를 클릭한 후 단순 응답을 선택합니다. 간단한 응답의 텍스트 필드에 ' Sean's Pizza Place 오늘의 할인 상품을 확인하세요! 12인치 피자를 주문하면 1개 증정! Sean을 내 이름으로 교체한 다음 저장을 클릭합니다.

대화 시작

시작 인텐트를 구성했으므로 테스트 기기로 돌아가서 'Hi&quot' 메시지를 전송하세요. 이 메시지는 기본 시작 인텐트를 트리거하며, 아래와 비슷한 이미지가 표시됩니다.

시작 인텐트 업데이트

Dialogflow가 간단한 메시지를 전송했으니 이제 메시지를 좀 더 설득력 있게 업데이트하겠습니다. Google에서는 당일 할인 상품 관련 메시지를 보낼 뿐만 아니라 이미지를 통해 수신 사용자의 관심을 끌고 사용자가 취할 수 있는 다른 조치를 제공합니다.

간단한 응답 피자 광고 메시지를 이미지가 있고 전체 메뉴와 음식점 웹사이트를 볼 수 있는 옵션을 제공하는 카드로 바꾸겠습니다.

기본 시작 인텐트응답 섹션에서 RCS 비즈니스 메시지 (RBM) 탭을 선택합니다. 기존 Simple Response 텍스트를 Sean’s Pizza Place에 오신 것을 환영합니다. 오늘의 프로모션 혜택을 확인하세요. 그런 다음 응답 추가를 클릭하고 독립형 리치 카드를 선택합니다.

독립형 리치 카드 양식에 다음을 입력합니다.

  • 카드 제목: 12인치 피자를 구매하고 무료로 받으세요.
  • 카드 설명: 이 혜택을 사용하려면 참여하는 모든 위치에서 이 메시지를 표시합니다. 혜택은 2월 17일에 만료됩니다.
  • 카드 방향 선택: 세로 모드
  • 이미지/동영상 URL: https://storage.googleapis.com/df-rbm-codelab/izz-ad-coupon.png
  • 미디어 높이 선택: 보통

추천 추가를 클릭하고 다음을 입력합니다.

  • 제안 텍스트: 보기 메뉴
  • 제안 포스트백: reply_view_menu

추천 URL 추가를 클릭한 다음, 드롭다운에서 URL 액션 열기를 선택하고 다음을 입력하여 URL 열기 작업을 추가합니다.

  • 제안 텍스트: 웹사이트 보기
  • 제안 포스트백: reply_view_website
  • 열릴 URL: https://www.google.com (또는 유효한 URL)

저장을 클릭합니다.

직접 시험해 보세요.

모델이 '에이전트 학습 완료'라고 표시되면 기기로 돌아가서 '안녕하세요'를 에이전트로 보냅니다. 이제 단순 응답과 방금 디자인한 독립형 리치 카드가 표시됩니다.

메뉴 보기를 탭해 보세요. 기본 대체 인텐트가 트리거됩니다. 이는 Dialogflow 에이전트가 이 추천에 대해 구성한 포스트백 데이터("reply_view_menu")를 처리하는 방법을 모르기 때문입니다.

이 문제를 해결해 보겠습니다.

메뉴 인텐트 만들기

Dialogflow는 인텐트를 사용하여 사용자의 의도를 분류합니다. 인텐트에는 학습 문구가 있는데, 이는 사용자가 에이전트에게 할 수 있는 말의 예시입니다. 예를 들어 누군가가 메뉴를 알고 싶어 한다면 무엇을 먹을 수 있는지 또는 뭐를 주문할 수 있나요?

이러한 쿼리는 모두 고유하지만 의도는 같습니다. 즉, 메뉴 관련 정보를 가져오는 것입니다.

이 쿼리를 다루려면 '메뉴' 인텐트를 만듭니다.

  1. 왼쪽 탐색 메뉴에서 인텐트 옆에 있는 +를 클릭합니다.
  2. 인텐트 이름에 "Menu"를 입력합니다.
  3. 학습 문구에서 사용자 표현 추가를 클릭하고 다음을 입력한 후 한 항목의 입력이 끝날 때마다 Enter 키를 누릅니다.

    • What's your menu?
    • What can I eat?
    • What can I order?
    • reply_view_menu

    이 마지막 학습 문구는 이전 섹션에서 구성한 포스트백 데이터를 이 인텐트로 매핑하는 데 사용됩니다.

이 인텐트에 대한 응답으로 다양한 메뉴 옵션을 표시하는 캐러셀을 만들겠습니다. 큰 메뉴의 경우 웹사이트에 연결하거나 메뉴의 단일 이미지를 공유하는 것이 좋습니다.

  1. 응답에서 +를 클릭하고 RSM(RCS Business Messaging)을 선택합니다.
  2. 응답 추가를 클릭하고 캐러셀 리치 카드를 선택합니다.
  3. 카드 너비 선택 옵션을 중간으로 설정합니다.
  4. 너비 옵션에서 카드 추가를 두 번 클릭합니다. 이렇게 하면 카드 수가 총 4개로 늘어납니다.
  5. 카드 1에 다음을 입력합니다.
    • 카드 제목: 소시지 및 페퍼로니
    • 카드 설명: 소시지, 페퍼로니, 올리브, 피망
    • 이미지/동영상 URL: https://storage.googleapis.com/df-rbm-codelab/sausage-izz.jpg
  6. 카드 3에 다음을 입력합니다.
    • 카드 제목: 이탈리아어
    • 카드 설명: 토마토 소스, 치즈, 소시지
    • 이미지/동영상 URL: https://storage.googleapis.com/df-rbm-codelab/italian-izz.jpg
  7. 카드 2에 다음을 입력합니다.
    • 카드 제목: 마르게리타
    • 카드 설명: 샌 마르자노 토마토, 모짜렐라 치즈, 신선한 바질, 소금, 엑스트라 버진 올리브 오일
    • 이미지/동영상 URL: https://storage.googleapis.com/df-rbm-codelab/margarita-izz.jpg
  8. 카드 4에 다음을 입력합니다.
    • 카드 제목: Supreme
    • 카드 설명: 소시지, 페퍼로니, 햄버거, 캐나다 베이컨, 양파, 올리브, 버섯, 피망
    • 이미지/동영상 URL: https://storage.googleapis.com/df-rbm-codelab/supreme-izz.jpg

카드 항목 다음에 사용자가 대화를 계속할 수 있는 방법도 제공해야 합니다. 이를 지원하려면 응답 추가를 클릭하고 단순 응답을 선택한 후 '다른 작업을 하고 싶습니다'라는 텍스트를 입력합니다.

단순 응답에서 추천 추가를 클릭하고 다음을 입력합니다.

  • 추천 텍스트: 프로모션 보기
  • 제안 포스트백: hi

저장을 클릭합니다.

직접 시험해 보세요.

이제 에이전트에게 메뉴를 물어보세요. 기기의 RBM 에이전트 대화에서 '메뉴에 무엇이 있는지'를 입력하고 메시지를 상담사에게 보냅니다.

에이전트가 이제 쿼리에 올바르게 응답합니다. 쿼리가 학습 문구 ("메뉴에 무엇이 있나요?' vs. 메뉴 Dialogflow는 여전히 쿼리를 올바른 인텐트에 일치시켰습니다. 리치 카드에서 메뉴 보기 항목을 탭해도 됩니다.

Dialogflow는 학습 문구를 머신러닝 모델의 예시로 사용하여 사용자의 쿼리를 올바른 인텐트에 대응시킵니다. 머신러닝 모델이 쿼리를 에이전트의 모든 인텐트에 대조하고 모든 인텐트에 점수를 부여하며 가장 점수가 높은 인텐트가 대응됩니다. 가장 점수가 높은 인텐트에 매우 낮은 점수가 매겨지면 대체 인텐트가 대응됩니다.

응답하지 않고 인텐트 캡처

이제 거의 다 마쳤습니다. 이제 마지막으로 한 가지 작업을 더 진행해야 합니다. 테스트 기기로 돌아가서 초기 리치 카드에서 웹사이트 보기 추천을 탭하면 이 추천 URL을 탭하면 연결된 URL이 표시될 뿐만 아니라 기본 대체 인텐트로 트리거되는 메시지도 표시됩니다.

Open URL Action은 작업을 탭하면 'quo_;reply_view_website"의 포스트백 텍스트를 Dialogflow로 보내고 Dialogflow는 이를 기본 대체 인텐트에 매핑하기 때문입니다.

즉시 응답하지 않고 포스트백 데이터를 캡처하려면 포스트백 데이터와 일치하는 학습 문구가 포함된 인텐트를 만들고 인텐트의 모든 응답을 삭제합니다. Dialogflow는 포스트백 데이터를 인텐트에 매칭하지만 인텐트에 정의된 응답이 없으므로 응답하지 않습니다.

무응답 인텐트 만들기

무시하려는 작업을 커버하려면 '응답 없음' 인텐트를 만듭니다.

  1. 왼쪽 탐색 메뉴에서 인텐트 옆에 있는 +를 클릭합니다.
  2. 인텐트 이름에 "No response"를 입력합니다.
  3. 학습 문구에서 사용자 표현 추가를 클릭하고 다음을 입력한 후 한 항목의 입력이 끝날 때마다 Enter 키를 누릅니다.
    • reply_view_website
  4. 휴지통 아이콘을 사용하여 응답까지 아래로 스크롤한 다음 모든 응답을 삭제합니다.

저장을 클릭합니다.

직접 시험해 보세요.

기기의 RBM 에이전트 대화에서 'hi&quot'를 입력하고 메시지를 에이전트에 전송합니다. 그러면 기본 시작 인텐트에서 프로모션 코드가 트리거됩니다. 웹사이트 보기 제안을 클릭하고 브라우저에서 웹사이트가 열리며 에이전트 응답이 전송되지 않는지 확인합니다.

모두 마쳤습니다!

길이: 1:00

훌륭합니다.

지금까지 Dialogflow에 기반한 단순한 RBM 에이전트 빌드의 모든 단계를 살펴보았습니다.

자세한 내용은 고급 Codelab을 참조하세요.

흥미진진한 새 플랫폼을 개발해 보세요.