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