VoiceBot Exchange

This help page is for Desktop Studio.This information is also available for CXone Studio.

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

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

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

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

依存関係

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

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

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

The icon for the Phone script type - an old-style phone handset with curved lines indicating sound coming out of it.

電話

類似アクションの比較

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

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

サポートされている仮想エージェント

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

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

入力プロパティ

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

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

プロパティ

説明

Caption

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

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

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

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

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

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

nextPromptSequence

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

nextPromptBehaviors

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

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

botSessionState

バーチャルエージェントプロバイダーは、コンタクトとバーチャルエージェント間の各会話に、一意の識別子を割り当てます。この識別子は、会話のターンごとに新しいセッションが作成されるのを防止できます。プロバイダーは、会話の開始時に識別子を作成し、最初の応答とともにスクリプトに渡します。スクリプトは、このアクションのbotSessionStateVarName (out)プロパティで指定された変数に識別子を格納します。そして、その識別子をbotSessionStateプロパティに渡します。

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

automatedIntent

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

出力プロパティ

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

プロパティ

説明

nextPromptBehaviorsVarName (out)

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

nextPromptSequenceVarName (out)

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

customPayloadVarName (out)

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

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

errorDetailsVarName (out)

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

intentInfoVarName (out)

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

botSessionStateVarName (out)

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

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

結果ブランチ条件

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

条件

説明

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

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

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

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

OnUserInputTimeout

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

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

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

OnUserInputNotUnderstood

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

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

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

Google Dialogflow CXを使用したカスタムペイロードのベストプラクティス

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

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

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

ヒントとコツ

バーチャルエージェントハブとバーチャルエージェント間の音声が聞こえない場合は、スクリプトトレースでトランスクリプトがあるかどうかを確認してください。ある場合には、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 アクションからボイスボットアクションに渡されます。

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