対話型AIの構築〜Google Cloud CCAIおよびTwilio Voice/Flex/Segmentの連携

November 03, 2022
執筆者
Hussain Chinoy
寄稿者
Twilio の寄稿者によって表明された意見は彼ら自身のものです
レビュー担当者
Paul Kamp
Twilion

この記事はChris Feehanこちらで公開した記事(英語)を日本語化したものです。

Twilio SIGNAL 2022イベントで「顧客エンゲージメントの好循環」と題した45分間のスポットライト講演をお届けしました。同講演ではTwilioとGoogle Cloudの両テクノロジーを活用し、対話型AI戦略を実現したテクノロジー志向の自動車メーカー「Owl Car」(架空)の事例を紹介しました。Owl Carは、Twilioが開発した「Google Cloud Dialogflow CX(CCAI)との1-クリック音声統合」を使用して、Twilio VoiceTwilio SegmentTwilio FlexによるConversational AIエクスペリエンスを強化しました。

このブログ記事では、Google Cloudのフセイン・チノイさんと私とで1-クリック統合の仕組みをデモンストレーションし、本統合機能の優位性を皆さんに理解いただき、Twilioが提供する強力なコミュニケーション機能の活用方法と、拡張性が高く堅牢・安全なバーチャルエージェントをDialogflow CX上に構築するためのベストプラクティスを紹介します。また、その過程でOwl Carの例をさらに発展させ、ユースケースの詳細とOwl Carが実装に用いたデザインパラダイムを共有し、ここで提供する例をベースに皆さんが独自のソリューションを構築・発展させられるよう、参考となる記事にしたいと思います。

前提条件

このブログ記事を最大限に活用いただくために、1-クリック統合のオンボーディングガイドに従って必要最低限のセットアップを行うことをお勧めします(約5~10分)。ガイドに従ってバーチャルエージェントに接続するための電話番号を設定するセクションまで進んでいただき、そこから先はこのブログ記事に戻ってきてください。

Dialogflow CXバーチャルエージェントのセットアップを行う際には、クイックリファレンス型ボットとして「注文とアカウント マネジメント エージェント」をご利用になることをお勧めします。

(日本語編集上の補足: Google Cloudさんのドキュメントページでは、ページ右上部の言語セレクタで日本語表示を行うことが可能です。)

ガイドを読み終えたら、Twilio経由で架電しバーチャルエージェントに接続する基本的な設定ができているはずです。もちろんこの時点では基本的な設定に過ぎませんが、Owl Carのユースケースを深堀りしていくための適切な通過ポイントであると思いますし、皆さん自身が想定するユースケースの下に構築する際の足場作りにもなっているはずです。

Twilio Voice統合の構成について

Twilio統合の差別化ポイント - シンプルさと拡張性

Google Cloud Dialogflow CXのテレフォニー統合でTwilioと競合他社を差別化しているポイントは何だろうかと疑問に思われているかもしれません。Twilioではないテレフォニーパートナーの提供するGoogle Cloud CCAI統合では駄目なのでしょうか?

Twilioは過去数年間、市場で最も深く、最も強力な機能セットを有する堅牢な統合を構築することに専念してきました。TwilioとGoogle Cloudのコンビを選択すれば、標準的なIVR体験に甘んじることなく、個々の顧客の体験に合わせて微調整できる業界最高水準の統合機能を手に入れ、さらにカスタマイズ性の力を活用し、対話型AI設計に織り込まれた深いパーソナライゼーションを推進できます。

Twilioが開発したネイティブ統合の特徴を、以下に簡単に説明します。

  1. 1-クリック統合の体験 - ガイド付きワークフローを通じて数ステップで、Dialogflow CXバーチャルエージェントをTwilioの音声インフラと接続したうえで正しく動作するようにします。統合設定体験の裏側で何が起こっているかというと、Twilioのマーケットプレイス上のアドオンコネクタ「Dialogflow CX Connector」およびTwilio Studioの該当フローをプロビジョニングし、Twilio側とGoogle Cloud側の両方で統合動作を実現するために必要な複雑なステップを抽象化して実施しています。1-クリックで統合設定が完了したら、Dialogflow CXコネクタに戻って変更を加え、皆さまの要件に合わせた体験を提供することが可能です。(これについては後ほど説明します。)
  2. テレフォニーとWebsocketのホスティング - 複雑なインフラはTwilioクラウド側に構築・ホスティングされているので、お客様が当該インフラストラクチャーを構築する必要はありません。インフラのオーバーヘッドはTwilioクラウド側で配慮させていただきますので、皆さんは優れた顧客エンゲージメントの設計と構築に完全に集中できます。
  3. DTMFバージインのサポート - DTMFトーンの捕捉機能やバージイン動作がすぐに使えるように、サービスをアップデートしました。これらの機能は、Dialogflow CXのコンソール画面から直接制御できます。
  4. アドオン・コネクタ - Twilioコンソールで該当コネクタをインストール・有効化いただけるようにしており、Dialogflow CXバーチャルエージェントへの接続を管理するためのシンプルなUXを提供します。このコネクターは、バーチャルエージェントを設定するための基本的な情報を提供するという点で本当にシンプルです。1-クリック統合の設定体験でインストールした後、コネクタ内で設定を直接変更することができます。
  5. Twilio Studioの専用ウィジェット - TwilioのServerlessプラットフォームを活用して統合とコールフローロジックを管理したいお客様のために、ウィジェット「Connect Virtual Agent」を用意いたしました。本ウィジェットはServerlessベースのソリューションの中核をなすもので、よりシンプルな対話型AI体験を求める場合にはノーコードで、より堅牢なソリューションを構築したい場合にはローコードで、着信と発信の両シナリオで直接接続を行うことが可能です。ウィジェット内で提供するローコードツールは実に広範囲なタスクを行えるようになっており、statusCallback URLの変更、Dialogflowに送信するセッションパラメータの定義、コネクタのデフォルト設定オプションの上書き、また使用するSTT(Speech-to-Text)モデルの指定やカスタム音声の設定などのカスタム設定に関する上書きが可能です。さらに、Twilio Flex上のエージェントへの有人エスカレーション(Live Agent Hand-off)を駆動する機能など、ネイティブなトランジションも構築されています。
  6. TwiML言語とヘルパーライブラリのサポート - Twilio Studioにおける本統合機能のウィジェットではなく、独自アプリケーション内でバーチャルエージェントへの接続ロジックを処理したい場合、TwiML言語とヘルパーライブラリを活用することでこのような要件を満たすことができます。このアプローチは、アプリケーションロジックの制御、カスタムイベントの駆動、バックエンドシステムとの直接統合などを望む、より洗練された開発チームにとって有用です。ドキュメントページでは、ヘルパーライブラリがサポートするプログラミング言語やTwiML言語をスコープとし、様々な例を用いて、どのように洗練された処理アプローチに着手できるかを説明しています。

TwGoogleCCAIIntegJP

基本的なユースケースを素早く効率的に設定でき、かつ、対話型AIの構築開始と反復を行う際に自分のペースで設定・変更できる非常に強力な対話型AI体験をTwilio側で独自に作成したことをご理解いただけたのではないかと思います。

Dialogflow CX アドオンコネクタ

1-クリック統合の設定体験が完了すると、Twilioコンソール側のAdd-ons -> Installed -> [BETA] Dialogflow CX Connectorの画面で設定内容を確認できるようになります。表示されている設定は、1-クリック統合の設定プロセスで実際に指定された設定です。(Unique NameVoice NameLanguageWelcome IntentSentiment Analysisなど。)また、1-クリックプロセスの一部として裏で実行される設定も含まれます。(Conversation Profile IDProject IDAgent Locationなど。)

Dialogflow CX Connector画面の設定フィールドは編集可能ですが、特にConversation Profile ID、Project ID、Agent Locationの各フィールドについては、予期せぬ動作をする可能性がありますので変更しないことを強く推奨します。変更が必要な場合は、Twilio Studioのフロー、TwiML言語、またはヘルパーライブラリといった各実装方式においてOverride(上書き)を実装することをお勧めします。

GoogleCCAIConnectorJP

1-クリックプロセスで設定した内容によって、この段階で確認できるデフォルト設定は異なります。1-クリック統合でDialogflow CXのバーチャルエージェントを複数個設定した場合、各インスタンスの設定値がそれぞれ反映されます。以降で、これら設定をTwilio Studioのフローでオーバーライドする方法を説明します。

Twilio Studioフローにおける統合用ウィジェット

1-クリック統合が完了したら、TwilioコンソールでStudio -> Flowsに移動し、1-クリック統合の設定プロセスで指定したTwilio Studioフローの名前をクリックしてフロー内容を確認できます。

後ほどTwiML言語や関連するヘルパーライブラリ(Java、PHPなど)に実装を移行することもできますが、Twilio Studioでコンセプトの実証を行うことを推奨しており、このブログ記事ではその部分に焦点を当てます。

1-クリック統合の設定プロセスでは、着信通話がConnect Virtual Agentウィジェットに接続されるように構成されていることに気づきます。1-クリック統合のオンボーディングガイドに沿っていただけていればすでに電話番号を設定し、この設定を利用して架電、そしてバーチャルエージェントに接続できるかどうかテストいただけていることと思います。ここまでの段階が、Owl Carを題材として我々が行ったようなカスタマイズを皆さんが実装するための出発点です。

以下のスクリーンショットでは、Owl Carというユースケースの前提の下、ウィジェットの内蔵機能を使ってTwilio側からDialogflow CXのバーチャルエージェント側へカスタムパラメータを渡す機能を構成していることに注目してください。具体的には、通話の発信者の携帯電話番号を格納するキーと値のペアを提供しています。このパラメータ値は後ほど、Dialogflow CX側のWebhookの機構を利用してTwilio Segment(顧客データプラットフォーム)に対してクエリを掛け、顧客プロフィールデータを取得する際に利用されます。

(日本語編集上の補足: 以下のアニメーションGIFにおける「Parameters」セクションに相当します。)

また、いくつかの簡単な設定オーバーライドを通して、ユーザー体験の向上とパーソナライズを行っています。今回のTwilio StudioフローはOwl Careという車を商材とする企業のカスタマーケア業務を前提としているため、その体験に紐づく特定要件を満たす特定のGoogle音声およびスピーチモデルを使用したいと思います。この場合、Google Dialogflow CXの音声認識モデル「latest_short」を使用し、また、1-クリック統合で設定されたデフォルト音声を米国英語の女性音声(WaveNet版)へと上書きしています。

(日本語編集上の補足: 以下のアニメーションGIFにおける「Configurations」セクションに相当します。)

また、コネクタで用意されているトランジション「Live Agent Handoff」(日本語編集上の補足: 以下のアニメーションGIFにおける緑色部分に相当)も利用します。このトランジションをTwilio Functionsベースのロジックに接続することで、バーチャルエージェントで通話の詳細を収集し、適切なルーティング設定を行い、Twilio Flexに通話をキューイングし、Owl Car社の最適な顧客ケアスペシャリストが対応するようにします。

gdfcx-twstudiowidgetJP

着信通話の処理、通話の発信といったシナリオに関わらず、各ユースケース毎に独立したTwilio Studioのフローを作成することをお勧めします。通話の発信の場合、Twilio Studioのフロー実行用REST APIを使ってフローを駆動し、そのフローの冒頭で通話発信(Make Outgoing Call)ウィジェットを呼び出し、そのうえでConnect Virtual Agentウィジェットを呼び出すことで、通話をDialogflow CXに接続することができます。またREST APIの利用においては、カスタムパラメータを渡して顧客対応の文脈に応じたパーソナライゼーションを促進することができます。

Google Cloud Dialogflow CXの構築

Dialogflow CXデザイン入門

対話型AIの優れた点は、顧客エンゲージメントの自動化を大幅に向上させる可能性を秘めていることです。しかし、その強力な機能を活用するためには、熟慮された設計と堅牢な実装が必要です。

Owl Carの例では、自動車業界の一般的なコールセンターやカスタマーケアのIVRがどのように構成されているかを調べました。そして、そのIVRを、エンドユーザーが問い合わせをしてきそうなトピックに分解して、メニューシステムのナビゲーションの経路を文書化しました。最もよくある質問や、お客様が必要な情報をできるだけ早く得られるような質問など、カスタマーケアチームとOwl Carのお客様の両方に役立つ指標に焦点を当てることで、向上しながら信頼を得られるような対話体験を設計することができます。

バーチャルエージェント体験をどのように設計し構築するかは、幸いなことに普遍的な問題です。TwilioとGoogle Cloudはこの分野の専門家であり、両社でコラボレーションして開発したネイティブソリューションのオーナーとして経験豊富なソートリーダーシップを発揮し、お客様の設計と開発を迅速に開始するために支援させていただくつもりです。以降のセクションでは、Dialogflow CXの最も重要なビルディングブロックをOwl Carのシナリオ例を参照しながら説明します。

Dialogflow CXの構成要素 - フロー、ページ、インテント

Dialogflow CXの視覚的な対話デザインのフロントエンドは、AI駆動のナビゲーショングラフを中心に構成されています。このグラフの中核となるのが「フロー」と呼ばれる概念です。

フローとは、ユーザーの質問対象となる類似のユースケースや、ボットから応答やアクションを引き出す可能性のある様々な状態を表す存在です。Dialogflow CXのAIは、ユーザーのインタラクションの意図(インテント)を判断し、フロー内のページ間の遷移、あるいは別のフローへのルーティングを制御します。またページとは、ユーザーへの返答や、追加の情報を求める機会に相当します。

Twilio SIGNALイベントのスポットライト講演「顧客エンゲージメントの好循環」でOwl Carのデモをお届けしましたが、デモの各所において、フローとページの具体的な側面が幾つか実際に使われていたことに気づかれたかもしれません。ユーザーがヘルプラインに問い合わせると、デフォルトのスタートフローのスタートページが外部データソースを素早くチェックし、電話番号をキーにして顧客を識別し、ユーザーの名前で冒頭の挨拶をパーソナライズします。ユーザーが抱えているBluetoothの問題について質問すると、Dialogflow CXのバーチャルエージェントはインテントを判断し、ユーザーをマルチメディアフローにルーティングして問題解決にあたります。

GDFCX-TwSegment-JP

エンティティの活用とフォームフィリング

Dialogflow CXのAIは「インテント」と「エンティティ」の両方を駆使して、ユーザーが持つ対話への期待値をより良く処理・解決していくようにします。インテントとは、トピックの一般的な分類にマッピングされるフレーズのような存在で、エンティティとは、Owl Carのサポートチームが必要とする明確な項目のようなものです。例えば、「2010年製のカムリの社内でブルートゥースデバイスを接続する手順を教えてほしい」と言われた場合、「ブルートゥース」「カムリ」「2010」という項目がそれぞれTopic, Vehicle, VehicleYearというエンティティとして抽出され、ページで意思決定に利用されることになります。このフレーズは全体として、「Troubleshooting〜Multimedia」というインテントに分類され、「Multimedia」フローにハイレベルにルーティングされるだけでなく、エンティティTopicとして値「Bluetooth」が捕捉されているため、フロー内の特定のページ「Bluetooth」の箇所に具体的にルーティングされます。Dialogflow CXがユーザーのインテントを判断するだけでなく、詳細を抽出できる能力は、ユーザー体験を合理化することに大きく寄与し、ユーザーからすでにいただいた情報を繰り返すことはありません。

Twilio Segmentが提供するユーザーデータとDialogflow CXで検出されるインテントやエンティティ情報を組み合わせることで、収集済みの情報をユーザーに繰り返させることなく(優れた顧客体験であれば推論可能です!)、バーチャルエージェントの処理をフロー「Multimedia」そしてページ「Bluetooth」に直接ルーティングすることができました。必要な情報(エンティティ)の一部が提供されていない場合、Dialogflow CXは、必須エンティティ毎にカスタム質問を更問いすることで、「フォーム入力」的な体験向上にもつながっています。

GDFtrainingJP

(👆 インテントトレーニングのサンプルフレーズが既知のエンティティに対して自動的にタグ付けされています 〜 Dialogflow CXの管理画面より)

Dialogflow CXの管理画面上のデザイナー経験

以下の図はDialogflow CXのデザイン画面上に見るフロー「Multimedia」の一部です。このフローはいくつかのステップを経て、ユーザーに取扱説明書への参照が必要かを尋ね、必要な場合にはTwilio Programmable SMSサービスのWebhookを呼び出して該当情報をSMSで送信します。あるいは、ユーザーがエージェントへのエスカレーションを求める場合には、同じ様にエスカレーション処理を実行します。

GDFCX-ui-designer-JP

(👆 Owl Carのフロー「Multimedia」 〜 Dialogflow CXの管理画面より)

対話が噛み合わないケースでユーザが一番望まないのは「もう一度言ってもらえますか?」の無限ループです。Dialogflow CXの内蔵システムイベントを使えば、適切な会話の修復を設計することができます。例えば、NO MATCHイベント(バーチャルエージェントがユーザーの発言からインテントを判断できないときに発火)を使って、イベントハンドラをカスタマイズして、2回トライした後にライブエージェントにエスカレーションすることができます。(最大6回まで設定可能です。)

gdfcx-evtHandler-JP

(👆Owl Carのライブエージェントへのリダイレクト、ユーザーのインテントの明確化に2回失敗したシナリオ 〜 Dialogflow CXの管理画面より)

Dialogflow CXのWebhooksをSegmentで使用する

セキュアなリソースに外部関数呼び出しやデータディップを導入する場合、お客様の多くは通信が適切に保護されていることを担保するために、熟考されたデザインパラダイムと堅牢なツールを期待されると思います。顧客データをクラウド処理に取り込む際の機密性要件を考慮し、Owl Carがどのように構築されたかを説明していきます。また、ここに記載されているベストプラクティスのいくつかに従って、お客様自身のソリューションがエンタープライズグレードのセキュリティで強化されていることを確認することをお勧めします。

HighLvlArchitectureJP

Dialogflow CXのスムーズな対話型デザインは、Webhook経由で外部データにアクセスし、そのレスポンスを意思決定のパラメータとして使用する機能によって強化されています。異なるシステム間で通信を行う場合セキュリティは重要な考慮事項であり、TwilioとDialogflow CXは共に素晴らしい出発点と追加オプションを提供していると言えます。まず、すべてのトラフィックはHTTPSである必要があります。したがって、Dialogflow CXからTwilio FunctionsあるいはGoogle Cloud Functionsに接続する場合、HTTPSで通信する必要があります。次に、標準的なOAuth2/JWTベースのセキュリティのためにBearerトークンを追加するか、またはカスタム証明書を使用して相互TLSを使用するかのいずれかを採用(または両方を選択する)ことが可能です。

また、対話型アプリケーションにリッチなデータを提供するサーバーレス機能を設計・作成する際には、セキュリティに関するいくつかのベストプラクティスがあります。ユーザーがOwl Carのバーチャルエージェントに電話をかけると、ユーザーに応答する前に、Dialogflow CXはCloud FunctionのWebhookをHTTPS上で呼び出し、Twilio Segmentから関連する顧客データを取得します。このCloud Functionは、Segment API呼び出しにおいてはAccess Tokenを使うというSegmentのベストプラクティスに従っています。Access Tokenは安全であるべき資産なので、我々の実装ではCloud Secret ManagerにAccess Tokenを追加し、Cloud Functionが関数や環境変数にそれら情報を埋め込まなくて済むようにしています。その代わりに、Cloud FunctionのIAM制限付きサービスアカウントプリンシパルを介してリアルタイムに検索され、値が取得されます。クラウド機能の外側でセキュリティ資産を管理することで、セキュリティに配慮したライフサイクルが可能になっており、Cloud Functionのデプロイメントライフサイクルの外側で、トークンのローテーション、変更、監査ができるようになります。

さらに、バーチャルエージェントの設計では、現状の実装例のように着信呼の電話番号でユーザーをすぐに識別するのではなく、ユーザーを認証するための他の選択肢も考えられます。透明性などのブランド目標に沿った達成したい対話体験を理解することで、セキュリティに敏感なインタラクションにどのオプションを選択するかが決まります。

皆さんのソリューションで採用可能な認証方式の例が以下のように幾つかかあります。

  1. SIGNALイベントのスポットライト講演で取扱説明書を送る際にSMSが使用されたのと同様に、他要素認証の文脈における第1または第2の認証要素としてSMSチャネルを使用できます。
  2. スポットライト講演「The Virtuous Cycle of Customer Engagement」ではユーザーがOwl Carのエージェントに転送される際に、ワンタイムパスコードを用いたSMS認証ソリューションであるTwilio Verifyの利用が提示されていました。
  3. Google CloudのSpeaker IDのような音声バイオメトリクス技術を、Dialogflow CXの組み込み型の登録フローで使用することができ、ユーザーに通知してオプトインしてもらうことが可能です。その後、検証フローにおいてアクティブ(パスフレーズ経由)またはパッシブ(声紋経由)な検証や識別を行い、認証処理の判断に使用できます。

Dialogflow CX Agentから顧客データプラットフォームのTwilio Segmentに安全に接続し、動的な顧客データを取り込む方法について、いくつかの展望を得ることができたと思います。対話話型AIにSegmentからリアルタイムの顧客データを取り込むことで、CXデザインにデータを活用し、文脈が伴い共感が得られる顧客サービスを提供できる大きな可能性を持っていると考えています。

TwilioとGoogle Cloud CCAIで独自の対話型AIを構築する

このブログ記事では、TwilioとGoogle Cloud Dialogflow CXの連携で構築できる全体像の表面部分をお伝えしたにすぎません。TwilioとGoogle Cloudの技術を使えば、素晴らしい対話型AI体験を顧客に提供することができます。

ブログでは、各種の参考リソースを参照してきましたが、TwilioとGoogleの営業部門は、お客様の特定のニーズに合わせた対話型AI体験の構築を支援するための体制を整えています。Twilioの営業チームに直接ご連絡いただくか、連絡先が不明な場合にはお問い合わせページよりご連絡ください。

クリス・フィーハンは、Twilioのコンタクトセンター・ソリューション・アーキテクトです。Twilioの最大手の企業顧客をサポートし、複数のTwilio製品を横断する革新的なソリューションを構築しています。また、R&Dとの連携にも深く関わっており、戦略的パートナーとの統合のためのコンセプトアーキテクチャやソリューションの青写真を構築しています。その一環として最近では、Google Cloud Dialogflow CX(Google Cloud CCAI)とTwilioとのネイティブ音声連携の製品化をサポートしました。

フセイン・チノイさんは Google Cloud のカスタマーエンジニアで、アプリケーションの近代化(API、統合、サーバーレスなど)と、Contact Center AI、Dialogflow CX、自然言語モデルなどの対話型AIアプリケーションにフォーカスしています。