対話型IVRをシナリオで使用する方法
シナリオを介してBright Patternの対話型IVR機能を起動させるには、受信音声シナリオを変更して、チャットボット選択アカウントやAsk a Botなどのボット専用のシナリオブロックと Play-Listenシナリオブロックを追加します。これらのブロックは、統合された音声認識テクノロジーと連携して音声記録の認識および書き起こしを行い、統合されたチャットボットと連携して音声入力を分析し、回答を提案し、発信者をスムーズにエージェントにルーティングします。
ここでは、以下のことができるようにするため、上記のブロックを基本的な音声シナリオに追加する方法について説明します:
- お客様に対して挨拶し、応答を聞くこと;
- 音声プロンプトを使って最大3回まで変身すること;
- お客様からの情報を収集すること;
- ボット/IVRが役に立てなかったときに、エージェントを検索して電話を接続すること;
- エージェントが応答したとき、収集された情報および/またはIVR対話のトランスクリプトをスクリーンポップすること;
必須条件
この記事で説明されている設定を行う前に以下のステップを実行してください:
- Watson Assistant, Alterra Answer ボット、 Amazon Lex ボットを設定します。
- ボット/チャットサジェスト機能エンジンの統合アカウントを追加します。
- サービスプロバーダーに依頼して音声認識エンジンをセットアップします。
- 音声認識統合アカウントを追加します。
- サービスプロバイダーに依頼して音声合成エンジンをセットアップします。
- 音声合成統合アカウントを追加します。
- ボットシナリオテンプレートをダウンロードと インポート します: File:App Conversational IVR Example.zip
シナリオフロー
シナリオは、対話の処理方法を指定するシナリオブロックで構成されています。Bright Patternシナリオブロックに関する詳しい情報は、本ガイドのシナリオブロックの定義セクションをご覧ください。
以下の一連のアクションは、対話型IVRを起動させるボット駆動の音声シナリオでシナリオブロックがどのように機能するかを示しています。このシナリオの例では、統合されたWatson AssistantチャットボットとGoogle 音声認識機能が使われています。
アクション 1: "プロンプト言語の設定"は、対話型IVRの音声が使う言語を指定します。
対話型IVRはお客様と会話するために音声プロンプトを使います。プロンプト言語の設定のシナリオブロックのプロパティを編集することにより、このシナリオで使用されるすべての音声プロンプトの言語を任意で設定できます。
言語でプロンプトに使う言語を選択します。この例では、 "英語 - アメリカ"を選択しました。
TTS音声で、使用する音声合成 (TTS) タイプを選択します。この例では、"en-US-standard-C"を選択しました。
これらの設定により、プロンプトテキストは読むことも電話中に聴くこともできます(言語は英語です)。
アクション 2: "変数の設定"は、お客様とボットとの対話件数を数えます。
この例では、発信者がエージェントにルーティングされるまでの、発信者とチャットボットとの対話件数を3回未満とします。こうやって対話を制限することにより、ボットが役に立たなくなったときにお客様による電話放棄を防ぎます。
変数の設定 ブロックは、ボットとの対話件数を数えます。カウンターはゼロから始まるため、値を"0"に指定します。
アクション 3: "チャットボット選択アカウント"は、ボットの統合アカウントを指定します。
ボットを使う全てのシナリオには、 チャットボット選択アカウントブロックが含まれます。このブロックでは、コンタクトセンター用に設定済みのボット/チャットサジェスト機能エンジン統合アカウントを選択しています。
コンタクトセンターでは複数の統合アカウントを使うことは可能です。そのため、特定のシナリオで使うアカウントを指定することが重要です。リストにご希望のアカウントが表示されない場合は、一旦戻って統合アカウントを追加します。
アクション 4: "Play-Listen" は発信者と会話し、回答を収集します。
Play-Listen ブロックは、音声認識と合成音声技術を使って、ボットの回答テキストを音声プロンプトに変換し、お客様の回答を認識し、テキストメッセージとして書き起こします。
対話型IVRがお客様と"対話"できるように、音声プロンプトを指定または作成します。この例では、お客様はここで指定したプロンプトによりグリーティングされます。
transcriberとは、コンタクトセンター用に設定済みの音声認識統合アカウントです。
この例では、recognized phrase (つまり、変数) を"user_phrase"に設定します。この変数は、お客様が話す内容を受信する変数です。その後のブロックでもこの変数を使ってエージェントに対してお客様の回答をテキストメッセージ ("内部メッセージ"を参照)として送信します。後で同じ変数名を使用する限り、変数を任意で追加できます。
信頼性とは、 STTエンジンが理解するお客様の音声入力の量を表す変数です。recognized phrase変数と同様に、この変数を後で一貫して使用する限り、ここに必要な値を入力できます。 STTエンジンは、数値を通じて信頼性を伝えます。例えば、"0.999"など高い数値は、STTエンジンが音声を正しく認識したことを意味します。低い数値(例えば、"0.001")は、エンジンの音声認識能力が非常に低いことを示しています。例えば、お客様が"I need a new phone"と言ったことに対して、エンジンが "I need a sea foam"と認識した場合、信頼性は非常に低くなります。信頼性のレベルは、サービスエンジン(例えば、Watson Assistant)で確認できます。
最大タイムアウト とは、対話型IVRがタイムアウトしてシナリオの次のステップへ移動する前に発信者の応答を待つ期間(秒数)です。
Play-Listenの 条件付き出口では、発信者がDTMFタッチトーンを使用する場合、または発信者が沈黙している場合、シナリオの次のステップを定義できます。
アクション 5: "Ask a Bot"は、ボットがお客様と会話できるようにします。
Ask a Bot ブロックを使うことによって、エージェントへ接続する前にボットが会話を自動化できます。ボットは、生の回答(つまり、サジェスト)をお客様に提供します。
メッセージフィールドに、以前にシナリオで設定した 変数$(user_phrase)が導入されています。このフィールドにuser_phraseを配置することで、 シナリオは、ボットのダイアログフローで処理を行うために、発信側の音声入力(つまり、話し言葉)を統合チャットボット(この場合はWatson Assistant)に渡すことができます。この処理によりサジェスト(提案)が作成され、エージェント宛にエージェントデスクトップへ渡されます。
生の回答は、Watson Assistant ダイヤログフローまたはAlterra Answer Bot設定で設定されます。Bright Patternとは無関係です。この例では、このフィールドを空白のままにしました。
タイムアウトでは、タイムアウトするまでボットのサジェストを待つ期間(秒数)を設定します。
Ask a Botブロックの条件付き出口では、このブロックが失敗した場合、タイムアウトした場合、またはデータがない場合に次のステップをシナリオに指示する他のブロックをドラッグしました。この例で行った操作の詳しい内容については、シナリオテンプレートをご覧ください。
アクション 6: "If" は、ボットがデータを収集できなかった場合の処理方法を定義します。
Ask a Botには、 データなしという条件付き出口があります。ボットが発信者から情報を収集できなかった場合の次のステップを定義するために、ここへ他のシナリオブロックをドラッグしました。
先ず、変数の設定を使って、 "Attempts"変数を to =$(Attempts)+1に設定します。 この変数は、ボットによる発信者との会話試行およびサジェストの回数をカウントするために使用されます。
次に、 If を使って、ボットによる会話試行回数が3回未満である場合、再試行を行うという条件を追加します。この手順のアクション2では、ボットステップの対話のカウントを開始するには、変数の設定ブロックが使われています。
If ブロックの下に、もう一つのPlay-Listenブロックを追加しました。このブロックは条件が満たされた場合に起動します。この Play-Listen ブロックでは、ボットが発信者からデータ収集を行うのにもう一つの試行が必要である場合、プロンプトを "申し訳ありませんが、わかりかねます…."に設定しました。
それでも情報の収集ができない場合、シナリオは、 Gotoブロックを使ってエージェントを検索し、電話を接続します。 プロンプトの再生ブロックは、ボットによる対応が難しいため、エージェントへ接続することを発信者に伝えます。
アクション 7: "変数の設定"はボットのサジェストを定義します。
変数の設定 は、ボットの回答(つまり、サジェスト)の変数名を定義するために使用されます。サジェストは、Watson Assistantまたは他のチャットボットで設定した内容と一致します。
この例では、変数に対して "bot_phrase"という名前を付け、 "$(suggestions[0].msg)"という値を指定しました。その後、スクリーンポップを介して対話 IVRトランスクリプトをエージェントに転送する際に、 "bot_phrase" および "user_phrase" 変数を介して対話を呼び出します。
アクション 8: 発信者が話し中である場合、別の "If"がエージェントを検索します。
この例では、"user_phrase が空ではない" (つまり、発信者が話し中である)場合、シナリオが分岐する条件を追加しました。
アクション 9: "Webスクリーンポップ"は対話トランスクリプトをエージェントに転送します。
Webスクリーンポップのプロパティでは、エージェントが電話の受付をする際に表示されるテキストを指定しました。“表示するテキスト”フィールドには、“user_phrase” と “bot_phrase”変数を基本的なHTMLで記入しました。このテキストは、エージェントのデスクトップに表示されます。
アクション 10: "エージェントの検索"は、適切なスキルを持つエージェントを探します。
エージェントの検索 ブロックは、適切なスキルを持っており受付可能なエージェントを検索します。エージェントの検索ブロックを使って 待機時間を設定し、予測待機時間(EWT)についてお客様にメッセージを送信できます。
アクション11: "電話の接続" は常に"エージェントの検索"の後に来ます。
エージェントの検索ブロックは、受付可能なエージェントを検索できる一方、 "配信"メカニズムを含んでいません。電話の接続ブロックは対話の配信メカニズムです。
アクション 12: "終了" ブロックはシナリオを終了します。
終了 ブロックはシナリオを終了します。そのブロックが設定されていない場合、シナリオは、お客様が電話を切断するまで、構成されたフローを繰り返します。
最後のアクション: 保存!
変更を適用するには、必ず 保存 をクリックしてください。ウェブブラウザーウィンドウまたはタブを閉じると、シナリオビルダーが保存せずに終了してしまいます。今までの作業は台無しです。
参考情報
受信音声設定とボットセットアップに関する詳しい情報は以下のBright Patternチュートリアルをご覧ください: