API와의 상호작용


CX에서 API를 사용하는 것은 몇 resource 경로와 함수들이 새로운 타입, 함수, 필드에 맞춰 바뀌었다는 점을 제외하고 ES에서 API를 사용하는 것과 비슷하다. 시스템은 아래의 것을 다뤄야 한다.

  • Dialogflow CX 는 제한된 integration을 지원하기 때문에 끝단의 사용자와 직접 소통할 수 있는 사용자 인터페이스를 제공해야 한다.
  • 각 대화 턴마다 유저의 입력을 API에 전송하기 위해 Dialogflow API를 불러야 한다.
  • Agent가 정적이지 않다면, webhook-enabled fulfillment 를 다루기 위해 webhook 서비스를 호스팅해야 한다.

아래의 다이어그램은 세션에서 한 대화 턴이 이루어졌을 때 발생하는 단계를 나타낸다.

image

  1. 끝단의 유저가 end-user input이라고 알려진 것을 적거나 말한다.
  2. 사용자 인터페이스는 입력을 받은 후 detect intent request로 dialogflow api에 전달한다.
  3. Dialogflow API는 detect intent request를 받는다. 입력을 intent나 form parameter와 매칭시키고, 요구되는 파라미터들을 설정하고 세션 상태를 업데이트한다. 만약 webhook-enabled fulfillment를 부를 필요가 있다면, 웹훅 request를 웹훅 서비스에 보내고, 아니라면 6단계로 간다.
  4. 웹훅 서비스는 웹훅 리퀘스트를 받는다. 서비스는 외부 API를 호출하거나, 데이터베이스를 쿼리하거나 업데이트하는 거과 같이 필요한 행동을 할 수 있다.
  5. 웹훅 서비스는 응답을 만들고 Dialogflow에 웹훅 응답을 전송한다.
  6. Dialogflow는 detect intent response를 만든다. 만약 webhook이 불러졌다면, 웹훅 응답을 응답으로 제공한다. 만약 웹훅이 불러지지 않았다면, agent에 정의된 정적인 응답을 사용한다. Dialogflow는 유저인터페이스 시스템에 detect intent response를 보낸다.
  7. 사용자 인터페이스는 detect intent response를 받고 텍스트나 오디오 응답을 끝단의 사용자에 보낸다.
  8. 끝단의 사용자는 응답을 본다.

끝단의 사용자의 입력을 처리하기 위해 CX API에 보내는 것은 ES API와 매우 비슷하다. 아래의 예제는 Sessions 자원의 detectIntent 함수를 부른다.

https://levelup.gitconnected.com/android-dialogflow-chatbot-library-6b7b3822e7bc https://medium.com/@abhi007tyagi/android-chatbot-with-dialogflow-8c0dcc8d8018 https://miningbusinessdata.com/courses/dialogflow-cx-custom-integration-using-flask/ https://miningbusinessdata.com/how-to-move-bot-from-dialogflow-cx-to-dialogflow/ https://miningbusinessdata.com/courses/dialogflow-cx-beginner-tutorial/