仮想エージェント アクションスクリプト
ユーザーデータを VACS に渡し、変換を適用し、応答をチャットインターフェイスエンドポイントに送り返すには、必須の ワークフロースタジオ アクションスクリプトとサブフロースクリプトのセットを作成する必要があります。
プロバイダーおよび受信/送信スクリプト
チャット機能は、Twilio などのプロバイダーによって提供されます。ユーザーアクションスクリプトは、プロバイダーアクションの他、チャットボットまたはカスタム会話の着信および送信トランスフォーマーアクションの会話型カスタムチャット統合構成を実行します。各スクリプトの例が提供されています。これには、各スクリプトの実行内容の説明と、アクションの入力とアクション出力が含まれます。また、スクリプト JSON の例も表示されます。
ワークフロースタジオ を使用してこれらのスクリプトを作成し、サーバーメッセージとクライアントメッセージを変換します。プロバイダー、送信者、および着信/送信トランスフォーマースクリプトが必要です。追加のスクリプトを使用して、チャットに機能を追加できます。
| スクリプト名 | 目的 | 必須 (Y/N) |
|---|---|---|
| プロバイダー属性 | プロバイダー認証トークン、ユーザー識別子、ユーザー入力、およびコンテキスト変数が含まれています。 | Y |
| 送信者アクション | 要求をバンドルし、 ワークフロースタジオ または統合ハブを介して応答を非同期に送信します。 |
Y |
| 応答プロセッサ | 送信メッセージに対して受信した応答に基づいて、メッセージステータス更新などのプラットフォームアクションを実行します。 | N |
| コンテキストアクション | コンテキストアクションをサポートします。 | N |
| アカウントアクションをリンク | アカウントのリンクが成功したかどうかに関するコールバックを提供します。 | N |
| 送信トランスフォーマー | チャットサーバーでサポートされているコントロールをチャットインターフェイス固有のレンダリングに変換します。 | Y |
| 着信トランスフォーマー | オプション。チャットプロバイダーに適用されるデフォルトのリッチコントロールを使用できます。入力コントロールごとに個別の着信変換を指定する必要はありません。デフォルトの動作が機能しない場合は、特定の仮想エージェントサーバーコントロールの独自の着信変換でデフォルトを上書きできます。 | Y |
プロバイダー属性アクションスクリプト
| 入力 | 出力 |
|---|---|
|
|
例:プロバイダー属性アクションスクリプト。
(function execute(inputs, outputs) {
var headers = (inputs.headers);
var payload = (inputs.payload);
// check if an authentication token was included. this is optional.
var smsUtil = new VASMSTwilioUtil();
outputs.token = JSON.stringify(smsUtil.getToken(headers, payload));
var data = payload.data;
var request_context = {};
// inspect the actual message. it could be an MMS (attachment) or raw text
if (data['MediaUrl0']) {
var attachment_value = {};
attachment_value.url = data['MediaUrl0'];
attachment_value.content_type = data['MediaContentType0'];
attachment_value.name = smsUtil.getFileName(attachment_value.url , attachment_value.content_type);
request_context.attachment_value = attachment_value;
} else {
request_context.typed_value = data['Body'];
}
// set the mandatory outputs
outputs.request_context = request_context;
outputs.provider_user_id = data.From;
})(inputs, outputs);
送信者アクションスクリプト (Quebec で廃止。送信者サブフローを参照)
送信者アクションスクリプトは、プロバイダーにメッセージを送信する方法を認識しています。スクリプトは、 ワークフロースタジオ または 統合ハブ サブフローを非同期に呼び出す必要があります。仮想エージェントは、外部要求を送信しようとするのではなく、メッセージの処理を続行するために解放されます。
| 入力 | 出力 |
|---|---|
|
なし |
例:送信者アクションスクリプト。
(function execute(inputs, outputs) {
var results = inputs.results;
// transform the inputs to something this custom subflow knows about
var sendInputs = {
app_inbound_id : inputs["app_inbound_id"],
channel_user_id: inputs["channel_user_id"],
messages: JSON.stringify(results)
};
// invoke an asynchronous subflow which will send the external request. so this sender script will immediately return,
// freeing up the chat server thread to do further message processing while putting the external request work on the
// Workflow Studio/Integration Hub
sn_fd.FlowAPI.startSubflowQuick('sn_va_sms_twilio.va_sms_twilio_adapter_send_sms', sendInputs);
})(inputs, outputs);
送信者サブフロー
スクリプトの代わりに、送信者サブフローがプロバイダーにメッセージを送信するプロセスを処理します。メッセージは、サブフローの一部として payload 文字列に含まれます。送信者には service_url と origin_service_urlがありますが、送信 URL はプロバイダーによって異なります。たとえば、MS Teams を介して送信されたメッセージは値 tenant_id を使用します。仮想エージェントがオプションを含むメッセージを送信すると、受信者はオプションを選択します。サブフローは、選択に基づいてメッセージ表示を更新し、オプションを削除します。会話は、ユーザーが選択したオプションに基づいて続行されます。仮想エージェントは、外部要求を送信しようとするのではなく、メッセージの処理を続行するために解放されます。サブフローを作成するときは、サブフロー内でアクションを呼び出すアクションを持たせないでください。サブフローの詳細については、「 」を参照してください。
コンテキストアクションスクリプト
コンテキストアクションスクリプトは、仮想エージェントトピック内でエージェントを入力するなどの特別なキーワードアクションを実行して、ライブエージェントにすぐに渡します。
| 入力 | 出力 |
|---|---|
|
なし |
例:コンテキストアクションスクリプト。
(function execute(inputs, outputs) {
var contextual_action = inputs.request_context.contextual_action;
if (contextual_action === "END_CONVERSATION") {
sn_cs.VASystemObject.endConversation(inputs.conversation_id);
} else if (contextual_action === "AGENT") {
sn_cs.VASystemObject.switchToLiveAgent(inputs.conversation_id);
} else if (contextual_action === "START_CONVERSATION") {
sn_cs.VASystemObject.startConversation(inputs.conversation_id);
}
})(inputs, outputs);
アカウントリンクアクションスクリプト
アカウントリンクアクションスクリプトには、リンクするユーザーの識別子が含まれています。スクリプトには、リンク先のアカウントも含まれています。
| 入力 | 出力 |
|---|---|
|
なし |
例:アカウントリンクアクションスクリプト。
(function execute(inputs, outputs) {
var richControl = (inputs.rich_control);
var value = richControl.value;
outputs.result = richControl.header + ': ' + value.action;
})(inputs, outputs);
応答プロセッサアクションスクリプト
応答プロセッサアクションスクリプトは、メッセージ送信要求に対する応答に基づく特殊アクションを実行します。フレームワークは、基本的なメッセージステータストラッキングを既に実行しています。
| 入力 | 出力 |
|---|---|
|
なし |
例:応答プロセッサアクションスクリプト。
(function execute(inputs, outputs) {
gs.debug("Response from provider: message_id = " + inputs.message_id + ", status_code = " +
inputs.status_code + ", headers = " + JSON.stringify(inputs.headers) + ", body = " + inputs.body);
})(inputs, outputs);
送信トランスフォーマースクリプト
送信トランスフォーマースクリプトは、送信 仮想エージェント メッセージを、会話型カスタムチャット統合に関連するプロトコルに変換します。
入力。
- rich_control (JSON):変換する必要がある 仮想エージェント サーバーリッチコントロールコンポーネント。
- payload (JSON):要求者から受信した最後の応答。
出力。
result (文字列):送信するプロバイダーに適したコンポーネントメッセージ。
| 送信トランスフォーマー名 | スクリプトの例 |
|---|---|
| 仮想エージェント:SMS Twilio アダプタ デフォルトのテキスト 送信トランスフォーマー | |
| 仮想エージェント:SMS Twilio アダプタ デフォルトのリンク 送信トランスフォーマー | |
| 仮想エージェント:SMS Twilio アダプタ デフォルトのピッカー 送信トランスフォーマー | |
| 仮想エージェント:SMS Twilio アダプタ デフォルト マルチリンク送信トランスフォーマー | |
| 仮想エージェント:SMS Twilio アダプタ デフォルトのカード 送信トランスフォーマー | |
着信トランスフォーマースクリプト
着信トランスフォーマースクリプトは、着信した会話型カスタムチャット統合メッセージを、 仮想エージェント が認識するプロトコルに変換します。これにより、ユーザーに提示されるリッチコントロールに挿入する必要がある値が決まります。
入力。
- request_context (JSON):プロバイダー属性スクリプトから渡された要求。
- rich_control (JSON):元の「質問」を含む、要求者に送信された最後のリッチコントロール。
出力。
- 値:sys_idまたはテキスト値。
- search_text:要求者が予期しないものを選択した場合に使用されるテキスト。たとえば、ユーザーがトピックピッカーコンポーネントに応答して、「どのオプションも私の希望と一致しません」など、NLU が役立つ可能性がある内容を入力した場合などです。
| 着信トランスフォーマー名 | スクリプトの例 |
|---|---|
| 仮想エージェント:SMS Twilio アダプタ デフォルト テキスト受信トランスフォーマー 目的:提示された InputText の質問に対するテキスト応答を検索します |
|
| 仮想エージェント:SMS Twilio アダプタ デフォルト ピッカー受信トランスフォーマー 目的:ユーザーがこのピッカーの質問に対して選択したオプションのsys_idを検索します。このスクリプトは、送信トランスフォーマーと同じアルゴリズムを使用します。オプションが選択されておらず、ユーザーが代わりに何かを入力した場合、「search_text」が設定され、NLU に入力されます (このインスタンスで有効になっている場合)。 |
|