API와의 상호작용
CX에서 API를 사용하는 것은 몇 resource 경로와 함수들이 새로운 타입, 함수, 필드에 맞춰 바뀌었다는 점을 제외하고 ES에서 API를 사용하는 것과 비슷하다. 시스템은 아래의 것을 다뤄야 한다.
- Dialogflow CX 는 제한된 integration을 지원하기 때문에 끝단의 사용자와 직접 소통할 수 있는 사용자 인터페이스를 제공해야 한다.
- 각 대화 턴마다 유저의 입력을 API에 전송하기 위해 Dialogflow API를 불러야 한다.
- Agent가 정적이지 않다면, webhook-enabled fulfillment 를 다루기 위해 webhook 서비스를 호스팅해야 한다.
아래의 다이어그램은 세션에서 한 대화 턴이 이루어졌을 때 발생하는 단계를 나타낸다.
- 끝단의 유저가 end-user input이라고 알려진 것을 적거나 말한다.
- 사용자 인터페이스는 입력을 받은 후 detect intent request로 dialogflow api에 전달한다.
- Dialogflow API는 detect intent request를 받는다. 입력을 intent나 form parameter와 매칭시키고, 요구되는 파라미터들을 설정하고 세션 상태를 업데이트한다. 만약 webhook-enabled fulfillment를 부를 필요가 있다면, 웹훅 request를 웹훅 서비스에 보내고, 아니라면 6단계로 간다.
- 웹훅 서비스는 웹훅 리퀘스트를 받는다. 서비스는 외부 API를 호출하거나, 데이터베이스를 쿼리하거나 업데이트하는 거과 같이 필요한 행동을 할 수 있다.
- 웹훅 서비스는 응답을 만들고 Dialogflow에 웹훅 응답을 전송한다.
- Dialogflow는 detect intent response를 만든다. 만약 webhook이 불러졌다면, 웹훅 응답을 응답으로 제공한다. 만약 웹훅이 불러지지 않았다면, agent에 정의된 정적인 응답을 사용한다. Dialogflow는 유저인터페이스 시스템에 detect intent response를 보낸다.
- 사용자 인터페이스는 detect intent response를 받고 텍스트나 오디오 응답을 끝단의 사용자에 보낸다.
- 끝단의 사용자는 응답을 본다.
끝단의 사용자의 입력을 처리하기 위해 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/