カスタム イベントは、ユーザーが定義するイベントです。エンドユーザーとの会話以外で発生した事象の処理に使用されます。たとえば、エンドユーザーがボタンをクリックしたとき、一定の時間が経過したとき、会話中に使用可能な在庫が変更されたときなどです。
フルフィルメントまたは API のいずれかを使用して、これらのイベントを呼び出せます。
API を使用したイベントの呼び出し
Sessions
タイプ detectIntent
呼び出しのリクエストには queryInput.event
フィールドが含まれ、これはイベントの呼び出しに使用されます。このフィールドのタイプは EventInput
で、イベント名、オプションのパラメータ、言語コードのフィールドが含まれます。
インテント検出呼び出しにイベントを渡す際、エンドユーザー表現などの他のデータは提供されません。呼び出しの唯一の目的は、イベントを呼び出してインテントをトリガーすることです。
フルフィルメントを使用したイベントの呼び出し
イベントは、WebhookResponse
の followupEventInput
フィールドを設定することにより、フルフィルメントから呼び出すことができます。必要に応じて 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 がイベントを含む webhook レスポンスを受信すると、それが定義された対応するインテントを直ちにトリガーします。
手順は以下のとおりです。
- エンドユーザーが表現を入力または発声します。
- エンドユーザー表示が、フルフィルメント用に構成された Intent-1 と照合されます。
- Dialogflow は webhook リクエストをサーバーに送信します。
- サーバーはフォローアップイベントを含む webhook レスポンスで応答します。
- Intent-1 の一致についてユーザーに応答する代わりに、Dialogflow はイベントに対して設定された Intent-2 をトリガーします。
- Dialogflow は、エンドユーザーが Intent-2 を一致させたものとして作動し、Intent-2 の設定に従って必要なパラメータおよびフルフィルメントを処理します。
インテントの一致を Webhook レスポンス イベントと連鎖させる
インテントの一致を webhook のレスポンス イベントと連鎖させることができます。上記の流れで、Intent-2 をフルフィルメント用に構成することもできます。サーバーの webhook レスポンスが別のイベントを提供する場合、Dialogflow は Intent-3 のエンドユーザーに応答せずに Intent-3(イベント用に設定されたもの)に一致するよう作動します。
Dialogflow は、連鎖が終了するまでエンドユーザーに応答しません。インテントをこのように連鎖させる場合、各 webhook レスポンスはタイムアウト制限内に送信される必要があります。