スクリプト化された AI エージェントのフルフィルメントを構成する
AI エージェントのコンテキストでは、フルフィルメントとは、API を介してデータを取得、操作、または保存するために外部システムと対話することを伴うタスクの実行を指します。 この記事では、パッケージを追跡するために作成されたサンプル エージェントの概要を説明します。 デジタルおよび音声インタラクション用の新しい AI エージェントを作成するときに、このエージェント テンプレートを使用できます。
デジタル チャネルの場合、AI エージェントの展開に使用される接続フローを通じてフルフィルメントを調整する必要があります。 新しいスクリプト エージェントを作成するときにテンプレートからインポートできるパッケージ追跡エージェントの例を挙げると、新しい Webex Connect フローを作成するときにフローをインポートすることもできます。 この接続フローは、フルフィルメントに加えて、ユーザの最後の意図に基づいてユーザをさまざまなエージェント キューにルーティングします。
-
スクリプト エージェントの設定が完了したら、実行が必要な応答を特定します。
サンプルエージェントでは、「trackPackageResponse」のフルフィルメントが必要です。
-
これらのテンプレートでは、履行が行われている間にユーザに表示される「保留応答」を構成します。
この例では、「trackPackageResponse」に対して保留応答が設定されています。
-
フローでは、 データ パーサー ノードを使用して、AI エージェントの応答からエージェント セッション メタデータ (出力変数) を解析し、応答名を取得します。
適切なトランザクションを選択し、ダウンロードしたファイルから「generatedDf」キーの値を選択して、セッションからトランザクション情報をダウンロードすることで、データ パーサー ノードのサンプル入力を取得できます。
-
エージェントの引き継ぎ時にインテントベースのルーティングを実行する場合は、同じ手順で以前のアクティブなインテントの値を取得できます。
-
サンプル JSON をダウンロードして解析したくない場合は、レスポンス名に
\$.model_state.template_key
を使用し、前のインテント名に\$.previous_intent_model_state.intent.name
を使用できます。この例では、これらの値にフロー変数「responseKey」と「previousIntent」を使用します。
-
Branch ノードを使用して、応答の実行が必要かどうかを確認します。
-
実行を必要としない応答の場合、ブランチ ノードは「上記のいずれでもない」ノード結果を介して終了します。
-
この例では、「trackPackageResponse」のフルフィルメントが必要なので、ブランチ ノードで「responseKey」の値を確認します。
-
-
フルフィルメントを必要とする応答の場合は、外部の API 呼び出しを行うための HTTP ノードを使用します。
-
サンプルをインポートして出力変数を取得することで、同じノード内の HTTP ノード応答から有用な情報を解析できます。
-
この例では、パッケージの「estimatedDelivery」と「status」を取得します。
-
-
評価 ノードを使用してフルフィルメント応答を処理し、エージェント応答を作成します。
この例では、「fulfilmentResp」変数を初期化し、パッケージのステータスと予想配達に基づいてその値を設定します。
-
フルフィルメント応答をユーザに送信し、会話に追加します。
-
ユーザと AI エージェント間の会話を継続するには、 Receive ノードにループバックします。
意図に基づくエージェントの引き継ぎ
エージェントの引き継ぎ時に、 キュー タスク ノードの前の ブランチ ノードを通じて最後のアクティブなインテントを確認します。
「previousIntent」の値を確認し、要件に応じて別のキューに分岐します。 この例では、顧客が「荷物の追跡」インテント後にエージェントへの引き継ぎを要求した場合、「スペシャリスト」キューにルーティングします。 その他の値の場合は、「チャット」キューへのハンドオフになります。
音声チャネルの場合、カスタム イベントを通じて会話の制御を音声フローに戻し、後でフルフィルメント データを使用して AI エージェントの会話を再開することで、フルフィルメントを調整する必要があります。 この目的のために、パッケージを追跡するためのサンプル スクリプト エージェントが再利用されます。 このフローは、Webex コンタクト センター フロー デザイナーの「テンプレートからインポート」で利用できます。 このフローは、フルフィルメントに加えて、ユーザの最後の意図に基づいてユーザをさまざまなエージェント キューにルーティングします。
ステップバイステップガイド:フルフィルメント
-
「カスタム イベント」応答タイプを追加します。
-
カスタム イベントを追加するテンプレート キーを見つけます。 この場合は、「trackPackageResponse」テンプレート キーを使用します。
-
テンプレート キーに「カスタム イベント」応答タイプを追加します。
-
-
カスタム イベント応答を構成します。
-
イベント名とイベントペイロードを追加します。
-
カスタムイベントレスポンスの場合は、イベント名を指定します。この場合は「TrackPack_Exit」です。
-
フローに渡されるデータが含まれるイベント ペイロードを追加します。 これは JSON 形式である必要があります。 この例では、
{"PackageNumber":"${entity.PackageNum}">
です。
-
-
-
フロー内でイベント ペイロードを使用します。
- アクセス 仮想エージェント V2 アクティビティ メタデータ:
音声フロー構成では、追加したイベント ペイロードは、 Virtual Agent V2 アクティビティ メタデータの一部として利用できます。
フロー変数 PackageNum を作成します。
使用 解析する アクティビティを選択する 仮想エージェント V2 アクティビティ メタデータを入力変数として使用します。
出力変数を「PackageNum」に設定し、そのパス式を「$.PackageNum」に設定します (エージェント応答で構成されたイベント ペイロードの構造に基づきます)。
- メタデータを使用する HTTP 活動:
フロー内の処理済みメタデータの「PackageNum」変数を使用して、パッケージを追跡します。
添付のフローをインポートして詳細を確認します HTTP 活動。
フロー変数「estimatedDelivery」を定義して「$.estimated_delivery」に設定し、別のフロー変数「packStatus」を定義して「$.status」に設定します。
- 条件を追加する HTTP 活動:
新しいものを追加 状態 フローにアクティビティを追加します。 このアクティビティは、 HTTP アクティビティ (パッケージが存在するかどうか、およびそのステータス)。
この例では、式
{{ HTTPRequest_8l3.http ステータスコード == 404 }}
パッケージが見つからなかったかどうかを確認するために使用されます。
- アクセス 仮想エージェント V2 アクティビティ メタデータ:
- 追加 変数を設定する 条件に基づくアクティビティ:
パッケージが存在しない条件の場合:
- パッケージが見つからないブランチの下に、 変数を設定する 活動。
- packageResp (別のフロー変数) を次のように設定します。
これらの詳細に一致するパッケージは見つかりませんでした。
パッケージが存在する条件:
- パッケージが見つかったブランチ(つまり、HTTP ステータスコードが 404 ではない)の下に、別の 変数を設定する 活動。
packageResp (別のフロー変数) を次のように設定します。
荷物が引き取られました。 {{estimatedDelivery}}までに配達されます。
イベント名とイベント データを構成するために、変数設定アクティビティをさらに 2 つ追加します。 このデータは仮想エージェント V2 アクティビティに渡されます。
フロー変数 event_name と event_data を作成します。
event_name を TrackPack_Entry に設定し、event_data を {'packageResp': '{{packageResp}}' | json} に設定します。
-
ループバック 仮想エージェント V2 活動:
- 仮想エージェント V2 アクティビティを構成します。
最後を接続する 変数を設定する アクティビティを仮想エージェント V2 アクティビティに追加します。
イベント名を{{event_name}}に設定します。
イベントデータを{{event_data}}に設定します。
- 仮想エージェント V2 アクティビティを構成します。
-
仮想エージェントで受信イベントを処理します。
-
新しいテンプレートキーを追加します:
-
左側のパネルの [応答] タブに移動します。
-
packageStatus という名前の新しいテンプレート キーを追加します。
-
-
受信イベントを構成する:
-
音声チャネルで、受信イベントを TrackPack_Entry (またはフロー内の仮想エージェント V2 アクティビティに送信されたもの) に設定します。
-
-
レスポンスを設定します。
-
応答を次のように設定します: <speak><say-as interact-as="date"> ${eventStore.packageResp} </say-as>。 他に何かお手伝いできることはありますか?</speak>
この応答では、フローからのペイロードで送信された変数が使用されます。 イベント データの一部として送信された変数は、開発者が ${eventStore.<variable_name>} としてアクセスできます。
これも SSML タグを使用します。 特に、SSML タグを使用すると、テキスト読み上げエンジンによるテキストの解釈方法と読み上げ方法を制御できます。 このタグは、数字、日付、時刻、住所、その他のテキストの発音方法を指定するために使用できます。 ここでは日付に使用します。
-
-
以前の意図に基づくエージェントルーティング
-
もし、 仮想エージェント V2 アクティビティが「エスカレート」出力から終了する場合は、 解析する エージェントのメタデータから以前のインテントを取得するアクティビティ。
-
Case アクティビティを使用して、キューイング ロジックを決定する前のインテントの異なる値を確認します。 この例では、前のインテントが「パッケージの追跡」であったかどうかを確認します。
-
ケース アクティビティ出力を適切なキュー連絡先エッジに接続します。