커스텀 이벤트

커스텀 이벤트는 개발자가 정의하는 이벤트입니다. 최종 사용자와의 대화 외부에서 발생하는 일을 처리하는 데 사용됩니다. 예를 들어 최종 사용자가 버튼을 클릭하거나 일정 시간이 지나거나 대화 중에 사용 가능한 인벤토리가 변경되었습니다.

fulfillment 또는 API를 사용하여 이 이벤트를 호출할 수 있습니다.

API로 이벤트 호출

Sessions 유형 detectIntent 호출의 요청에는 이벤트를 호출하는 데 사용되는 queryInput.event 필드가 있습니다. 이 필드의 유형은 EventInput이며, 이벤트 이름, 선택적 매개변수, 언어 코드 필드가 포함됩니다.

인텐트 감지 호출에 이벤트를 제공할 때는 최종 사용자 표현과 같은 다른 데이터를 제공하지 않습니다. 이 호출의 유일한 목적은 이벤트를 호출하고 인텐트를 트리거하는 것입니다.

fulfillment로 이벤트 호출

WebhookResponsefollowupEventInput 필드를 설정하여 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는 이벤트가 포함된 웹훅 응답을 받으면 정의된 해당 인텐트를 즉시 트리거합니다.

다음에서는 단계 흐름을 설명합니다.

  1. 최종 사용자가 표현을 입력하거나 말합니다.
  2. Dialogflow는 최종 사용자 표현을 fulfillment에 대해 구성된 Intent-1과 일치시킵니다.
  3. Dialogflow가 서버에 웹훅 요청을 보냅니다.
  4. 서버가 후속 조치 이벤트가 포함된 웹훅 응답으로 응답합니다.
  5. Dialogflow는 사용자에게 Intent-1 일치에 대한 응답을 보내는 대신, 이벤트에 구성된 Intent-2를 트리거합니다.
  6. Dialogflow는 최종 사용자가 Intent-2 일치를 시작한 것처럼 일치를 진행하고, Intent-2 구성에 지정된 대로 필요한 매개변수와 fulfillment를 처리합니다.

웹훅 응답 이벤트를 사용하여 인텐트 일치항목 연결

웹훅 응답 이벤트를 사용하여 인텐트 일치 작업을 연결할 수 있습니다. 위에 설명된 흐름에서 Intent-2를 fulfillment에 구성할 수도 있습니다. 서버의 웹훅 응답이 또 다른 이벤트를 제공할 경우 Dialogflow는 최종 사용자에게 Intent-2에 대한 응답을 보내지 않고 이벤트에 구성된 Intent-3 일치를 계속 진행합니다.

Dialogflow는 체인이 끝날 때까지 최종 사용자에게 응답하지 않습니다. 이런 식으로 인텐트를 연결하는 경우 각 웹훅 응답이 제한 시간 이내에 전송되어야 합니다.