シーケンス フロー インテントを作成する

シーケンス エンティティが作成されたので、インテントを作成してエンドユーザーからシーケンスを収集できます。次の責任を持つ 3 つ以上のインテントを用意する必要があります。

  1. Head インテントの「Sequence」
    • 発話を収集してシーケンス コレクションを開始します。
    • エンドユーザーが完了するまで、引き続きシーケンスのキャプチャを続行するためにフォローアップ イベントによって呼び出されます。
  2. コンテキスト インテントの「シーケンス - 編集」
    • 発話を捕捉して、最後に収集されたシーケンスを修正します。
    • プログラムから「Sequence」インテントにループして、正しいシーケンスを収集します。
  3. コンテキスト インテントの「シーケンス - 完了」
    • シーケンスが完了したことを示す発話を検出します。

次のセクションでは、Webhook がこれらをすべて接続する仕組みを説明しますが、最初にインテントを設定しましょう。

「Sequence」インテントを作成する

これは、シーケンスを収集する主なインテントです。次のように構成します。

  1. 入力コンテキストは空のままにして、エンドユーザーが通話の開始時にこのインテントをトリガーできるようにします。
  2. 出力コンテキスト「collecting-sequence」を追加します。このコンテキストを使用して、フロー中にインテントの修正と終了を可能にします。
  3. 出力コンテキスト「editing-sequence」を追加し、有効期間を 0 に設定します。このコンテキストは、次のセクションの「Sequence - Edit」インテントから得られる有効期間を使用してアクティブ化します。このコンテキストをここでクリアし、「editing-sequence」コンテキストが編集インテントのトリガー後すぐにアクティブになるようにすることが重要です。
  4. イベント「continue-sequence」を追加し、Webhook がこのインテントをループしてすべての部分的シーケンスを収集します。

  5. トレーニング フレーズを追加して、エンドユーザーがこのインテントをトリガーし、フローを開始できるようにします。この例では、「注文ステータスは?」、「注文を追跡」、「注文している商品はどこ?」などのフレーズを使用します。

  6. アクション名「handle-sequence」を追加し、webhook が起動するタイミングを伝えます。すべてのインテントを設定したら、このチュートリアルの次のセクションで Webhook をコーディングします。

  7. 前のセクションで部分的なシーケンスを収集するために作成した正規表現エンティティを使用して、必須パラメータ「new_sequence」を追加します。エンティティ タイプを「@alphanumeric」に設定し、値を「$new_sequence」に設定します。

  8. イベントから新しい既存のシーケンスを抽出するため、オプションのパラメータ「existing_sequence」と値「#continue-sequence.existing_sequence」を追加します。エンティティ タイプは空のままにしておくことができます。

  9. イベントから前のシーケンスを抽出するには、オプションのパラメータ「previous_sequence」と値「#continue-sequence.previous_sequence」を追加します。エンティティ タイプは空のままにしておくことができます。

  10. このインテントの Webhook 呼び出しスロット充填用の Webhook 呼び出しを有効にします。

「Sequence - Edit」インテントを作成する

このインテントは、前のシーケンスをエージェントが聞き取ったことを示す発話をリッスンします。次のように設定します。

  1. 入力コンテキスト「collecting-sequence」を追加して、シーケンス フローの途中でのみ、このインテントが呼び出されるようにします。これは、「Sequence」インテントによって実行されるコンテキストと同じです。
  2. フルフィルメント Webhook が参照する出力コンテキスト「editing-sequence」を追加します。このインテントを有効にすると、Webhook は Dialogflow をメインの「Sequence」インテントにループして次のシーケンスを収集します。「Sequence」インテントのスロット充填用の Webhook は、有効な「edit-sequence」コンテキストがあるかどうかチェックし、エンドユーザーに対する「再試行」のための親切な応答を提供します。
  3. 「いいえ」、「それは違います」などのトレーニング フレーズを追加します。

  4. アクション名「handle-sequence」を追加します。これは「Sequence」インテントと同じアクションであるため、同じ Webhook ロジックを再利用できます。

  5. パラメータ「new_sequence」と値「#collecting-sequence.previous_sequence」を追加し、コンテキストから前のシーケンスを抽出して、最後の音声を実質的に取り消します。ここでは、既存のシーケンスが前のシーケンスで上書きされるように「existing_sequence」パラメータを追加しません

  6. このインテントに対して Webhook 呼び出しを有効にします。

「Sequence - Done」インテントを作成します。

  1. 入力コンテキスト「collecting-sequence」を追加します。
  2. コンテキストをクリアするには、出力コンテキスト「collecting-sequence」を追加し、有効期間を 0 に設定します。これをクリアすると、エージェントがシーケンスの収集を完了したとき、「Edit」インテントと「Done」インテントが再度トリガーされなくなります。
  3. 「そのとおりです」や「すべて完了しました」などのトレーニング フレーズを追加します。

  4. パラメータ「sequence」と値「#collecting-sequence.existing_sequence」を追加して、コンテキストから最終シーケンスを抽出します。

  5. このインテントに対して Webhook 呼び出しを有効にします。

Webhook を使用してインテントをリンクする

これで、これらのインテントのロジックをコーディングするために必要なものがすべて揃いました。次のセクションでは、Webhook をコーディングして、すべてのコンテキスト、アクション、パラメータ、イベントを使用してシーケンス検証フローを完了する方法を説明します。