シナリオでの会話型IVRの使用方法
シナリオを通じてBright Patternの会話型IVR機能を呼び出すには、インバウンド音声シナリオを修正し、「チャットボットのアカウント選択」や「ボットに質問」といったボット専用のシナリオブロックと、「再生・リスニング」シナリオブロックを含めるだけで済みます。 これらのブロックは、統合された音声認識(Speech-to-Text)技術と連携して音声入力を認識・文字起こしを行うほか、統合されたチャットボットと連携して音声入力を分析し、返信候補を提案し、発信元をエージェントへ適切に転送します。
この記事では、基本的な音声シナリオにこれらのブロックを組み込み、以下のことを実現する方法をご紹介します:
- 顧客に挨拶し、応答を待つ
- 音声プロンプトを使用して、顧客に最大3回まで返信する
- 顧客から情報を収集する
- ボットやIVRでは対応できないと判断された場合、エージェントを探してコールを接続する
- インタラクションを承認した際、収集したデータやIVRの会話トランスクリプトをエージェントの画面にポップアップ表示する
前提条件
まだ行っていない場合は、先に進む前に以下のステップを完了してください:
- サービスプロバイダーを通じて音声認識(Speech-to-Text)エンジンを設定してください
- サービスプロバイダーを通じて音声合成(TTS)エンジンを設定する
- テキスト読み上げ連携アカウントを追加する
- 当社のボットシナリオテンプレートをダウンロードし、インポートしてください: File:App Conversational IVR Example.zip
シナリオフロー
シナリオは、対話処理の方法を指定するシナリオブロックで構成されています。Bright Patternのシナリオブロックの詳細な説明は、本ガイドの「シナリオブロックの定義」セクションで利用可能です。
以下のアクションの順序は、会話型IVRを呼び出すボット駆動型の音声シナリオにおいて、シナリオブロックがどのように機能するかを示しています。このサンプルシナリオでは、統合されたWatson AssistantチャットボットとGoogle Speech-to-Textを使用しています。
アクション 1:「プロンプト言語の設定」では、対話型 IVR の音声で使用する言語を指定します
対話型IVRは、音声プロンプトを利用して電話の発信元に話しかけます。「プロンプト言語の設定」シナリオブロックのプロパティを編集することで、このシナリオで使用されるすべての音声プロンプトの言語を設定できます。
[言語] で、プロンプトに使用する言語を選択します。この例では、「英語 - 米国」を選択しました。
[TTS 音声] で、使用するTTS(音声合成)の音声タイプを選択します。この例では、「en-US-standard-C」を選択しました。
これらの設定により、プロンプトのテキストが英語で読み上げられ、電話を通じて音声として再生されるようになります。
アクション 2:「変数の設定」は、顧客がボットとやり取りした回数をカウントします
この例では、発信元がエージェントに転送されるまでに、チャットボットと3回までしかやり取りできないように設定します。このようにやり取りの回数を制限することで、ボットが役に立たなくなった際に顧客が通話を切り上げてしまうのを防ぐことができます。 「変数の設定」 ブロックを使用して、ボットとの対話試行回数をカウントします。カウンターはゼロから始まるため、値として「0」を指定します。
アクション 3:「チャットボットのアカウント選択」では、ボットに使用する連携アカウントを指定します
ボットを組み込んだすべてのシナリオには、 「チャットボットのアカウント選択」 ブロックが含まれます。このブロックでは、コンタクトセンター用にすでに設定済みのボット/チャット提案エンジンの連携アカウントを選択します。
コンタクトセンターには複数の連携アカウントが存在する可能性があるため、このシナリオでどのアカウントを使用するかを指定することが重要です。目的のアカウントがリストに表示されない場合は、前の画面に戻り、連携アカウントを追加してください。
アクション 4:「再生・リスニング」機能により、発信元と会話し、応答を収集します
この 「再生・リスニング」 ブロックは、テキスト読み上げ(TTS)および音声認識(STT)技術を使用して、ボットの応答テキストを音声プロンプトに変換し、顧客の返答を認識してテキストメッセージに変換します。
対話型 IVR が顧客と「会話」できるよう、音声プロンプトを指定または作成してください。この例では、ここで指定したプロンプトが顧客への挨拶として再生されます。
文字起こし機能は、コンタクトセンター向けにすでに設定済みの音声認識(Speech-To-Text)連携アカウントです。
この例では、認識されたフレーズ(つまり変数)を「user_phrase」に設定しています。これは、顧客の発言を受け取る変数です。このシナリオの後のブロックで、この変数を使用して、顧客の応答をテキストメッセージとしてエージェントに送信します(「内部メッセージ」を参照してください)。 後で同じ名前を使用する限り、任意の変数を追加することができます。
「信頼度」は、STTエンジンが顧客の音声入力のどの程度を理解したかを示す変数です。「認識されたフレーズ」変数と同様に、後で一貫して使用するのであれば、ここには任意の名前を入力することができます。 STT エンジンは信頼度を数値で表します。数値が高いほど(例:「0.999」)、STT エンジンは音声を正しく認識できたという確信度が高くなります。 数値が低い場合(例:「0.001」)、エンジンは音声認識に対して非常に低い信頼度を持っていることを示します。例えば、顧客が「新しい電話が欲しい」と言ったのに、エンジンが「シーフォームが欲しい」と聞き取った場合、信頼度は非常に低くなる可能性が高いでしょう。 この信頼度レベルは、サービスエンジン(例:Watson Assistant)で利用可能です。
最大タイムアウトとは、会話型IVRが発信元の応答を待ち、タイムアウトとなってシナリオの次のステップに進むまでの秒数を指します。 「再生・リスニング」の条件付き終了 では、発信元がDTMFトーンを使用した場合や沈黙した場合に、シナリオがどのように動作すべきかを定義できます。
アクション 5:「ボットに質問」を使用すると、ボットが顧客と対話できるようになります
「ボットに質問」 ブロックを使用すると、エージェントが接続される前に、ボットが会話を自動化できます。これにより、ボットの生の応答(つまり、提案)が顧客に届けられます。
「メッセージ」フィールドには、変数 $(user_phrase) を挿入している点にご注意ください。これは、シナリオの前の段階で設定したのと同じ変数です。 ここに $(user_phrase) を配置することで、シナリオは発信元の音声入力(つまり、発話されたフレーズ)を統合されたチャットボット(この場合は Watson Assistant)に渡し、ボットのダイアログフローで処理できるようになります。この処理により、提案が生成され、エージェントデスクトップ上のエージェントに渡すことができます。
「生レスポンス」は、Watson Assistantのダイアログフロー設定で構成されるものであり、Bright Patternとは関係ありません。この例では、このフィールドを空欄のままにしています。
「タイムアウト」では、ボットからの提案を待つ秒数を設定し、その時間が経過するとタイムアウトとなります。
「ボットに質問」ブロックの 条件付き分岐には、このブロックが失敗した場合、タイムアウトした場合、またはデータがない場合にシナリオがどのように動作するかを指定するその他のブロックをドラッグして配置しました。この例で実施した内容に関するより詳細なコメントについては、シナリオテンプレートをご参照ください。
アクション 6:「If」は、ボットがデータを収集できなかった場合の処理を定義します
「ボットに質問」内には、「No Data」という条件付き分岐があります。ここでは、ボットが発信元から情報を収集できなかった場合にシナリオがどのように動作すべきかを定義するため、その他のシナリオブロックをドラッグして配置しました。
まず、「変数の設定」を使用して、変数名「Attempts」に =$(Attempts)+1 を設定します。これは、ボットが発信元と会話を試行し、推奨される返信を提案した回数をカウントするために使用されます。
次に、 「If」 を使用して、「ボットが3回未満しか呼び出し元との対話を試みなかった場合は、再試行する」という条件を追加します。なお、この手順のアクション2では、「変数の設定」を使用して、ボットのステップごとの対話回数のカウントを開始したことを思い出してください。
「If」ブロックの下に、条件が満たされた場合にトリガーされるもう1つの「再生・リスニング」ブロックを追加しました。この「再生・リスニング」ブロックでは、ボットが発信元からデータを収集するために再度試行する必要がある場合、プロンプトとして「申し訳ありません、おっしゃったことが理解できませんでした……」と表示されるように定義しています。
それでも情報の収集に失敗した場合は、このシナリオでは 「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:「終了」はシナリオを終了させます
この 「終了」 ブロックにより、シナリオが完了します。これがない場合、シナリオは顧客がコールを終了するまで、設定されたフローを繰り返し実行し続けます。
最後のアクション:「保存」!
変更内容を適用するには、必ず[保存]をクリックしてください。なお、Webブラウザのウィンドウやタブを閉じることで、保存せずにシナリオビルダーが終了し、作業内容が失われてしまいますのでご注意ください。
推奨文献
インバウンド音声の設定およびボットのセットアップに関する詳細については、以下のBright Patternチュートリアルをご覧ください: