커스텀 이벤트는 개발자가 정의하는 이벤트입니다. 최종 사용자와의 대화 외부에서 발생하는 일을 처리하는 데 사용됩니다. 예를 들어 최종 사용자가 버튼을 클릭하거나 일정 시간이 지나거나 대화 중에 사용 가능한 인벤토리가 변경되었습니다.
fulfillment 또는 API를 사용하여 이 이벤트를 호출할 수 있습니다.
API로 이벤트 호출
Sessions
유형 detectIntent
호출의 요청에는 이벤트를 호출하는 데 사용되는 queryInput.event
필드가 있습니다.
이 필드의 유형은 EventInput
이며, 이벤트 이름, 선택적 매개변수, 언어 코드 필드가 포함됩니다.
인텐트 감지 호출에 이벤트를 제공할 때는 최종 사용자 표현과 같은 다른 데이터를 제공하지 않습니다. 이 호출의 유일한 목적은 이벤트를 호출하고 인텐트를 트리거하는 것입니다.
fulfillment로 이벤트 호출
WebhookResponse
의 followupEventInput
필드를 설정하여 fulfillment를 통해 이벤트를 호출할 수 있습니다.
필요한 경우 followupEventInput.parameters
필드를 설정하여 인텐트에 매개변수를 제공할 수 있습니다.
예를 들면 다음과 같습니다.
{
"followupEventInput": {
"name": "event-name",
"parameters": {
"parameter-name-1": "parameter-value-1",
"parameter-name-2": "parameter-value-2"
},
"languageCode": "en-US"
}
}
followupEventInput
매개변수가 WebhookResponse
에 설정되면 Dialogflow는 fulfillmentText
, fulfillmentMessages
, payload
필드를 무시합니다.
또한 followupEventInput.languageCode
필드는 필수 필드이지만 언어가 이미 시작 감지 인텐트 인식 요청에 정의되었으므로 Dialogflow는 이 필드를 무시합니다.
Dialogflow는 이벤트가 포함된 웹훅 응답을 받으면 정의된 해당 인텐트를 즉시 트리거합니다.
다음에서는 단계 흐름을 설명합니다.
- 최종 사용자가 표현을 입력하거나 말합니다.
- Dialogflow는 최종 사용자 표현을 fulfillment에 대해 구성된 Intent-1과 일치시킵니다.
- Dialogflow가 서버에 웹훅 요청을 보냅니다.
- 서버가 후속 조치 이벤트가 포함된 웹훅 응답으로 응답합니다.
- Dialogflow는 사용자에게 Intent-1 일치에 대한 응답을 보내는 대신, 이벤트에 구성된 Intent-2를 트리거합니다.
- Dialogflow는 최종 사용자가 Intent-2 일치를 시작한 것처럼 일치를 진행하고, Intent-2 구성에 지정된 대로 필요한 매개변수와 fulfillment를 처리합니다.
웹훅 응답 이벤트를 사용하여 인텐트 일치항목 연결
웹훅 응답 이벤트를 사용하여 인텐트 일치 작업을 연결할 수 있습니다. 위에 설명된 흐름에서 Intent-2를 fulfillment에 구성할 수도 있습니다. 서버의 웹훅 응답이 또 다른 이벤트를 제공할 경우 Dialogflow는 최종 사용자에게 Intent-2에 대한 응답을 보내지 않고 이벤트에 구성된 Intent-3 일치를 계속 진행합니다.
Dialogflow는 체인이 끝날 때까지 최종 사용자에게 응답하지 않습니다. 이런 식으로 인텐트를 연결하는 경우 각 웹훅 응답이 제한 시간 이내에 전송되어야 합니다.