VoiceBot Exchange

このヘルプページはStudio向けです。 この情報は、Desktop Studio用にも提供されています。

セルフサービスを統合します仮想エージェント閉じた ライブの人間のエージェントの代わりに顧客とのやり取りを処理するソフトウェアアプリケーション。を音声スクリプトと統合します このアクションは、スクリプトのループで使われます。 スクリプトには、少なくとも2つのVoiceBot Exchange アクションを含める必要があります。 仮想エージェントはこのアクションをサポートする必要があります。

Voicebot Exchange アクションは、複雑なバーチャルエージェントに使用するか、ターンごとにバーチャルエージェントの動作をカスタマイズする必要がある場合に使用します。 コンタクトとバーチャルエージェント間の会話をターンごとに監視します。 各発話閉じた コンタクトが発言または入力すること。を仮想エージェントに送信します。 仮想エージェントは、発話の意図閉じた コンタクトが発言または入力した内容の背後にある意味や目的。コンタクトが伝えたいことや達成したいこと。と文脈を分析し、どう応答するかを決定します。 アクションは、コンタクトにバーチャルエージェントの応答を渡します。 会話が完了すると、アクションはスクリプトを続行します。

バージインまたは入力なしを設定したい場合、追加のスクリプトが必要です。

このアクションをダブルクリックするとVirtual Agent Hubが開き、ここですべての仮想エージェントを管理できます。

依存関係

  • スクリプトには、ループで接続されたVoiceBot Exchange アクションを少なくとも2つ含める必要があります。
  • このアクションを使用するには、仮想エージェントが会話のターンごとのカスタマイズをサポートしている必要があります。
  • 会話のターンとは次のように定義されます:

    1. 仮想エージェントに送信される連絡先の発話。
    2. 発話を処理し、カスタムペイロード情報を定義する仮想エージェント
    3. 連絡先に返される回答
    4. nextPromptBehaviorsプロパティで決定される、実行する追加のアクション(データベースや外部API呼び出しなど)。 インタラクションが完了したときや、コンタクトがライブエージェントに転送されるときに、会話ループを終了するように設定することもできます。
  • カスタムペイロードをGoogle Dialogflow ESまたはGoogle Dialogflow CX仮想エージェントに含める場合は、カスタムペイロードのベストプラクティスとガイドラインに従ってください。  CXおよびESのガイドラインは、このページに記載されています。

サポートされているスクリプトタイプ

電話

類似アクションの比較

以下のアクションには同様の機能がありますが、いくつかの重要な相違点があります。

  • Textbot Exchange:このアクションは、より複雑なバーチャルエージェントのインタラクションに使用されます。 これにより、交換パラメーターを含め、コンタクトと仮想エージェント間の会話のさまざまな側面をカスタマイズできます。
  • Voicebot Exchange:このアクションは、より複雑なバーチャルエージェントのインタラクションに使用されます。 これにより、交換パラメーターを含め、コンタクトと仮想エージェント間の会話のさまざまな側面をカスタマイズできます。

サポートされているバーチャルエージェント

このアクションは、次のバーチャルエージェントをサポートします。

このアクションに仮想エージェントを割り当てる前に、Virtual Agent Hubで仮想エージェントにアプリを追加して構成する必要があります。 各仮想エージェントに必要なアプリは1つだけです。 スクリプト内の複数の仮想エージェントアクションに同じアプリを割り当てることができます。 構成の詳細については、使用している仮想エージェントプロバイダーのヘルプページをを参照してください。

入力プロパティ

これらのプロパティは、アクションが実行時に使用するデータを定義します。

このアクションのプロパティの中には、Snippetアクションにカスタムコードを必要とするものが1つ以上あります。

プロパティ

説明

Add Caption

スクリプト内でこのアクションを一意に識別できる、短いフレーズを入力します。 アクションアイコンにカーソルを合わせるとキャプションが表示されます。

Virtual Agent ID Virtual Agent Hubで選択された仮想エージェントの名前。 Virtual Agent HubStudioアクションに仮想エージェントアプリを割り当てると、このプロパティが自動的に設定されます。 名前は、Virtual Agent HubアプリのVirtual Agent (Bot) Nameフィールドで使用される名前です。
Custom Payload

このプロパティは、カスタムペイロードデータを仮想エージェントに渡す必要がある場合にのみ設定します。 カスタムペイロードオブジェクトはStudioスクリプトから設定されます。 これを使用して、ウェルカムメッセージで使用されるCRM閉じた コンタクト、販売情報、サポートの詳細、ケース履歴などを管理するサードパーティーシステム。からの連絡先の名前などの情報を渡すことができます。

スクリプトから仮想エージェントにデータを渡すJSONオブジェクトの名前を入力します。 Snippetアクションでカスタムペイロードオブジェクトを定義する必要があります。 オブジェクトはスニペットまたはcustomPayloadプロパティのいずれかでJSONに変換する必要があります。

特定の仮想エージェントプロバイダーの要件:

仮想エージェントがスクリプトに返すデータを処理する必要がある場合は、このプロパティを使用しないでください。 代わりにcustomPayloadVarName (out)変数を使用します。

Next Prompt Sequence

連絡先に対して再生される仮想エージェントから受信した応答。 関数asJSON()を用いてnextPromptSequenceVarName (out)で指定された変数でこのプロパティを設定します。 また、SnippetアクションでnextPromptSequenceVarName (out)の内容をJSONに変換して、そのJSONを含む変数でこのプロパティを設定することもできます。

Next Prompt Behaviors

会話における次のプロンプトの構成と動作を指定します。 Snippetアクションを使用し、デフォルトの次のプロンプト動作または次のプロンプト動作スニペットの例に従って、表示する動作を定義します。 この例では、コンフォートノイズ、DTMFコレクション、およびオーディオ再生中に連絡先が話すことを許可する(バージ)ことを設定するために使用できるプロパティについて説明します。

スニペットコードで使用したオブジェクトの名前でnextPromptBehaviorプロパティを設定します。 これにより、このプロパティとそのアクションに設定が渡されます。 たとえば、次のプロンプト動作スニペットのでは、このプロパティに{nextPromptBehaviorsOutjson} と入力します。 このアクションを使用してテキストバーチャルエージェントが音声インタラクションを処理できるようにする場合のみ、このプロパティを設定する必要があります。

Bot Session State

設定方法で設定する必要があります。 バーチャルエージェントプロバイダーによって自動的に割り当てられます。 識別子は、会話のターンごとに新しいセッションが作成されるのを防ぎ、バーチャルエージェントがターン間でコンテクストを維持するのに役立ちます。

プロバイダーは、会話の開始時に識別子を作成し、最初の応答とともにスクリプトに渡します。 スクリプトは、このアクションbotSessionStateVarName (out)プロパティで指定された変数に識別子を保存します。 最後に、スクリプトは前のターンのbotSessionStateVarName (out)プロパティの識別子をbotSessionStateプロパティに渡します。

スクリプトは、このプロパティまたはその変数に書き込んではなりません。 ボットセッション状態識別子を使用するには、スクリプトを正しく設定する必要があります。

Automated Intent

収集されたユーザー入力を仮想エージェントに解釈させるのではなく、仮想エージェントが応答する特定のインテントを名前で入力します。 一般的な使用例は、仮想エージェントから最初のウェルカムメッセージを引き出すことです。 Welcomeは、最初の挨拶の標準文字列です。

出力プロパティ

これらのプロパティには、実行したアクションから返されたデータを保持する変数が含まれています。 これらはアクションが完了したときに参照・使用することができます。

プロパティ

説明

Next Prompt Behaviors Variable Name

次の会話ターンでユーザーにプロンプトを表示するための動作を定義します。

Next Prompt Sequence Variable Name

仮想エージェントからの応答を保持し、nextPromptSequenceプロパティに渡します。

Custom Payload VarName

仮想エージェントからスクリプトにカスタムJSONデータを返します。 仮想エージェントが提供するデータをスクリプトで処理する場合は、この変数を使用します。 フルフィルメントデータが含まれる場合があります。

仮想エージェントにデータを提供する場合は、customPayloadプロパティを使用します。

Error Details VarName

エラーインテントシーケンスを要求します。ライブエージェントへの転送につながる可能性があります。

Intent Info VarName

現在のユーザーの意図を示す仮想エージェントからの詳細を保持する変数。

Bot Session State VarName

仮想エージェントプロバイダーから送信されたボットセッション状態識別子をスクリプトが格納するための変数を保持します。 変数の内容はbotSessionStateプロパティに渡されます。

仮想エージェントが正しく動作するには、このプロパティが適切に設定されている必要があります。 設定方法に関する詳細は、ボットセッション状態スニペットのヘルプページを参照してください。

結果分岐条件

結果の分岐条件を使用すると、アクションが実行されたときにさまざまな結果を処理できるように、スクリプトにブランチを作成できます。

条件

説明

Default スクリプトが他のブランチのいずれかを取る必要がある条件を満たさない限り、パスが取られます。 他のブランチが未定義の場合にも使用されます。
PromptAndCollectNextResponse

仮想エージェントがインタラクションを継続することを決定し、コンタクトからの人間の入力の準備ができている場合に取られるパス。 会話の次のターンのプロンプト。

Error 予期しない問題(たとえば、接続不良、構文エラーなど)が発生したときに使用されるパス。 _ERR変数には、問題の簡潔な説明を入力する必要があります。
ReturnControlToScript 仮想エージェントが会話の終了を示し、通話を転送または終了するための制御をStudioスクリプトに戻す場合に使用されるパス。 customPayload結果で処理されるフルフィルメントデータがある場合があります。
DTMFBreakout

次の場合にたどるパス DTMF閉じた ユーザーが電話のキーパッドのキーを押すかタップしたときに生成される信号音。スクリプトのルールが満たされました。

UserInputTimeout

プロンプト行動スニペット(デフォルトまたはのプロンプト行動スニペット)で指定された時間内にユーザーからの応答がない場合に取られるパス。

GoogleDialogflowの場合は、Virtual Agent Hub Dialogflowアプリで発生させたいイベントを設定します。 Dialogflow ESの場合は、Timeout Event フィールドを設定します。 Dialogflow CXの場合、Timeout Event Handlerを設定します。 イベントが設定されていない場合、デフォルトでは、Dialogflowコンソールで設定されたデフォルトのフォールバックインテントが使用されます。

必要であれば、スクリプト内の異なるポイントで異なるイベントを使用するように、このブランチを設定することができます。

UserInputNotUnderstood

バーチャルエージェントが相手の応答を理解できないとき、または相手がタイムアウトしたときに取られるパス。

必要なSNIPPETアクションコード

このアクションのプロパティの中には、Snippetアクションに次のカスタムコードを必要とするものが1つ以上あります。

Google Dialogflow CXでのカスタムペイロードのベストプラクティス

Google Dialogflow CXでこのアクションを使用する際は、以下のベストプラクティスに従ってカスタムペイロードを統合してください。

  • DialogflowCXは、DialogflowESのようにデータをDialogflowインテント閉じた コンタクトが発言または入力した内容の背後にある意味や目的。コンタクトが伝えたいことや達成したいこと。に渡すためにコンテキストを使用しません。
  • カスタムデータはJSONキー値ペアを使用してDialogflow CXに渡すことができます。 スクリプト内のSnippetアクションで、ダイナミックcustomPayloadオブジェクトを作成して、それにキー値ペアを追加します。 例:

    DYNAMIC customPayload
    customPayload.ani = ani
    customPayload.contactID = contactId
    customPayload.masterContactId = masterId
    customPayloadJSON = "{customPayload.asJSON()}"	
  • スクリプトのExchange アクションで、customPayloadプロパティを構成します。このプロパティは、値にasJSON()関数を含む変数で構成されます。 この変数はcustomPayloadオブジェクトにあります。
  • QueryParametersPayloadプロパティを使用して、customPayloadJSONをバーチャルエージェントに渡します。 Google Dialogflow CX用のQueryParameters中央から右上隅の外側方向に向いた矢印を持つ正方形。に関するGoogleのドキュメンテーションを参照してください。
  • QueryParametersによってパスされるデータはDialogflowCXのwebhookが受け取ります。 パスされるデータを処理するために、Dialogflow CXコンソールでコードとを作成することができます。
  • customPayloadオブジェクトの中にオブジェクトをネストしないでください。 ネストされたオブジェクトはリテラル文字列として送信されます。
  • DialogflowCXバーチャルエージェントからスクリプトにカスタムデータを渡すには、DialogflowCXコンソールのカスタムペイロードフィールドを使用します。 CXone Mpowerで使用している仮想エージェントのコンソールにいることを確認してください。 スクリプトのcustomPayloadVarName (out)またはVOICEBOT EXCHANGE TEXTBOT EXCHANGEアクションでStudio変数を使用して、これをスクリプトにマップします。 たとえば、これを使用して次のプロンプトの動作を設定できます。
  • customPayloadを使用して設定されたパラメーターは、外部Webhookでのみ使用できます。 外部Webhookの外部で使用するパラメーターを設定する場合は、session_paramsフィールドを持つSnippetアクションにそれらを設定します。 例:

    {
    	"session_params":
    	{ 
    		"name": "Winnie Le Pooh"
    		"job": "Food critic"
    		"location": "Hundred Acre Wood"
    	}
    }

    次の構文を使用して、DialogflowCXエージェントインテントのセッションパラメタにアクセスします。

    $session.params.name = Winnie Le Pooh

    $session.params.job = Food critic

    $session.params.location = 100 Acre Wood

    セッションパラメーターは、DialogflowCXバーチャルエージェントでのみ使用されます。 DialogflowESボットで同様の結果を得るには、コンテキストを使用します。

  • スピーチコンテキストのヒントは、speechContextsパラメーターにカスタムペイロードで渡すことができます。 speechContexts.phrases の値は、提供したいヒントのGoogleクラストークン中央から右上に向かって矢印が伸びている正方形。でなければなりません。 このトークンは、コンタクトの言語およびロケールと一致している必要があります。 例:

    DYNAMIC customPayload
    customPayload.speechContexts.phrases="$OOV_CLASS_ALPHANUMERIC_SEQUENCE"
    customPayload.speechContexts.boost=10		
  • コンタクトが話している途中一時停止したときにバーチャルエージェントが待機する時間を構成するには、maxPostEnergySilenceMSパラメーターNext Prompt BehaviorsまたはDefault Next Prompt BehaviorsSnippetアクションに追加します。

Google Dialogflow ESでのカスタムペイロードのベストプラクティス

Google Dialogflow ESでこのアクションを使用する際は、以下のベストプラクティスに従ってカスタムペイロードを統合してください。

  • CustomPayloadインテント閉じた コンタクトが発言または入力した内容の背後にある意味や目的。コンタクトが伝えたいことや達成したいこと。のためにコンテキストを渡すために使用します。 コンテキストはバーチャルエージェントがユーザーのインテントを理解するために役立ちます。 コンテキストは必須ではありませんが、バーチャルエージェントが発話閉じた コンタクトが発言または入力すること。をインテントに一致させるために役立ちます。
  • スクリプトのSnippet アクションで、RESTリソース用のGoogle Dialogflow ESドキュメンテーションリンク先が外部Webサイトであることを示すアイコンで概説されている形式に従うcustomPayloadオブジェクトを作成します: projects.agent.sessions.context Studioオンラインヘルプには、ダナミックデータ変数およびオブジェクトに関する詳細情報が用意されています。
  • また、コンテンツなしのcustomPayloadでカスタムデータを渡すことができます。 そのためには、標準JSONキー値ペアをダイナミックデータオブジェクトに含めるようにします。
  • 音声コンテキストは、speech_contactパラメーターのカスタムペイロードで渡されます。 このパラメーターの内容は、Studioのトレースやアプリケーションログで確認できます。
  • スクリプト例に示すように、customPayloadDYNAMICオブジェクトはJSONのバーチャルエージェントパラメーターとして渡されます。
  • スピーチコンテキストのヒントは、speechContextsパラメーターにカスタムペイロードで渡すことができます。 speechContexts.phrases の値は、提供したいヒントのGoogleクラストークン中央から右上に向かって矢印が伸びている正方形。でなければなりません。 このトークンは、コンタクトの言語およびロケールと一致している必要があります。 例:

    DYNAMIC customPayload
    customPayload.speechContexts.phrases="$OOV_CLASS_ALPHANUMERIC_SEQUENCE"
    customPayload.speechContexts.boost=10		

ヒントとコツ

Virtual Agent Hubとバーチャルエージェント間の音声が聞こえない場合は、スクリプトトレースでトランスクリプトがあるかどうかを確認してください。 ある場合には、Google Dialogflowバーチャルエージェントを調整する必要があります。

スクリプトの例

これは、このアクションをスクリプトでどのように使用できるかを示す例です。 完全なスクリプトではありません。 追加のスクリプト作成が必要な場合があります。

VoiceBot Exchangeアクションをループ内で使用する必要があります。 つまり、スクリプトで少なくとも2つ使用する必要があります。 最初のアクションは、仮想エージェントのAPIへの呼び出しを開始し、その前にデフォルトの次のプロンプト動作Snippetアクションを実行する必要があります。 最初のアクションはWelcomeDefaultで、最初のスクリプトループ、つまり1つの会話型の「ターン」を開始します。

VoicebotExchangeアクションを使用するスクリプトの例。

このスクリプトをダウンロードします。

Google Dialogflow ESを使用したカスタムペイロードのスクリプト例

これは、このアクションをスクリプトでどのように使用できるかを示す例です。 完全なスクリプトではありません。 追加のスクリプト作成が必要な場合があります。

このスクリプトは、Google Dialogflow ESバーチャルエージェントとカスタムペイロードを統合する方法の例です。 このスクリプトはVoicebot Exchangeアクションを使用していますが、代わりにTEXTBOT EXCHaNGEを使用しても動作します。

Google Dialogflow CXでカスタムペイロードを処理する方法を示すスクリプト例。

このスクリプトをダウンロードします

別のタイムアウトイベントのスクリプト例

これは、このアクションをスクリプトでどのように使用できるかを示す例です。 完全なスクリプトではありません。 追加のスクリプト作成が必要な場合があります。

スクリプト内の異なるポイントで、異なるタイムアウトイベントの使用が可能です。 たとえば、UserInputTimeout プロパティがトリガーされた1回目と2回目で、異なるタイムアウトイベントを使用したい場合があるとします。 このスクリプトの例では、これを実現するための一つの可能な方法を示しています。

このスクリプトでは、Snippet アクションを使用して、タイムアウトカウンターを作成およびインクリメントします。 2回目のタイムアウト後、Snippet アクションを使用して、別のタイムアウトイベントを設定します。 代替のタイムアウトイベントは、automatedIntent プロパティを介してSnippet アクションからボイスボットアクションに渡されます。

このスクリプトをダウンロードします