Amazon Web Services ブログ

Amazon言語系AIサービスによるコンタクトセンターのライブ通話分析とエージェントアシスト

2023年5月更新 (v0.8.0) – このリリースでは、AnthropicのClaude 大規模言語モデル (LLM: Large Language Model) API (Amazon Bedrockに予定)を使用するオプションを追加することにより、LCAのトランスクリプト要約生成機能を拡張しました – これにより、トランスクリプト長に関する以前の制限がなくなり、要約プロンプトをカスタマイズすることができます。また、Anthropic Claude API(またはお好みの/カスタムのLLM)を使用して、エージェントアシストのための生成系 AI(実験的)を有効にし、AWS上のQnABotで大規模言語モデル – 会話型検索のためのクエリ曖昧さ解消と質問応答生成を実現し、通話中の推奨事項の品質と文脈の関連性を向上させました。また、エージェントがエージェントアシストボットとそのAmazon Kendraナレッジベースと直接対話し、情報を取得したり、通話中や通話後のアクションを自動化できる対話型チャットボットUIコンポーネントを追加しました。 また、このリリースでは、音声の取り込みにAmazon Chime Call Analyticsを選択し、リアルタイムの声調分析を可視化することができます。
その他、オプションのSalesforceプラグイン、通話録音の保持ポリシーの設定可能、などの新機能が追加されています!新機能を見る

コンタクトセンターは、カスタマーからの商品注文、電話によるサポート依頼、予約など、ビジネスとコミュニティをつなぐ存在です。電話応対がうまくいけば、カスタマーはブランドに対してポジティブなイメージを持ち、再来店したり、他の人に勧めたりする可能性が高くなります。そしてその逆も、もちろんあります。

当然ながら、カスタマーに良い体験をしてもらうために、できる限りのことをしたいものです。これには2つの側面があります:

  • スーパーバイザーがカスタマーの体験の質をリアルタイムで評価できるようにする – たとえば、最初は不機嫌だったカスタマーが、通話が進むにつれてハッピーになるかどうかをスーパーバイザーが把握する必要があります。そうでない場合は、なぜでしょうか?うまくいっていない通話に対して、エージェントがカスタマーエクスペリエンスを向上させるために、通話終了前にどのようなアクションを取ることができるでしょうか。
  • エージェントが通話体験の質を最適化するのを支援する – たとえば、ライブ通話書き起こし、通話要約、AI搭載のエージェントアシスタンスを導入することは可能でしょうか。これにより、エージェントがメモを取る必要がなくなり、通話中に文脈に関連した情報やガイダンスが提供されるため、エージェントはポジティブなカスタマー・インタラクションの提供にもっと注意を向けることができるようになります。

Contact Lens for Amazon Connectは、リアルタイムのスーパーバイザーとエージェントアシスト機能を提供し、カスタマーのニーズに応えますが、まだAmazon Connectを使用していない場合もあります。既存のコンタクトセンターと連携できるソリューションが必要です。

Amazon TranscribeAmazon ComprehendAmazon SageMakerなどのAmazon機械学習(ML)サービスは、コンタクトセンターの通話を大規模に書き起こし、そこからインサイトを引き出すために使用できる豊富な機能を備えたAPIを提供します。Amazon Lexは、会話から意図や文脈を取得できる会話AI機能を提供し、Amazon Kendraは、カスタマーのニーズに基づいてエージェントに有用な情報を提供できるインテリジェント検索機能を提供します。これらのサービスを使用して独自のカスタムコール分析およびエージェントアシストソリューションを構築することはできますが、それには時間とリソースが必要です。この記事では、エージェントアシストを備えたライブ通話分析のサンプルソリューションについて説明します。

ソリューションの概要

サンプルソリューションであるライブ通話分析とエージェントアシスト(LCA: Live Call Analytics with Agent Assist)は、コンタクトセンターに接続してインテリジェントなインサイトを提供するエンドツーエンドのソリューションです。

以下のスクリーンショットに示すように、LCAは通話リストのユーザーインターフェイスを備えています。

また、通話詳細のユーザーインターフェイスも備えています。

LCAは現在、以下の機能をサポートしています:

  • 個人を特定できる情報(PII: Personally Identifiable Information)の再編集、カスタム語彙、カスタム言語モデルをサポートした正確なストリーミング文字起こし
  • センチメント(感情)検出
  • Amazon Transcribe Real-time Analyticsを利用した問題検出
  • Amazon Transcribe Real-time Analyticsのカテゴリールールを利用した通話カテゴリー検出
  • メールやテキストメッセージによる通話アラートとアラート通知
  • 付属のPCA(Post Call Analytics)ソリューションとの統合
  • (New!) 音声取り込みの際に利用できる Chime Call Analytics との統合
  • (New!) Chime Call Analytics を利用したリアルタイムな声調分析
  • (New!) 完了した通話の要約生成機能に、Anthropic Claude APIを追加
  • (New!) 文脈を理解したり、ドキュメントにもとづく質問回答生成を行う生成系AIエージェントアシストの機能
  • (New!) エージェントアシストボットの対話型ウィジェットによる、KendraナレッジベースへのクエリやFAQ検索の直接実行や、アクションの自動化
  • (New!) オプションのSalesforce統合プラグイン
  • (New!) Amazon Translateを使ったトランスクリプトのリアルタイム翻訳
  • (New!) 通話トランスクリプトペインでエージェントの通話トランスクリプトを無効化する機能
  • 通話量の変化に対応する自動スケーリング
  • 通話録音とアーカイブ
  • スーパーバイザーとエージェントのための動的に更新されるウェブユーザーインターフェイス:
    • 進行中および完了した通話のリストを表示する通話リストページ。通話のタイムスタンプ、メタデータ、アラート、持続時間、センチメント傾向、検出されたカテゴリなどのサマリー統計が含まれます。
    • 通話詳細ページでは、カスタマーとエージェントの対話のライブターンごとの書き起こし、ターンごとの感情、感情傾向、問題、カテゴリー、アラートを表示します。エージェントアシスト機能は、エージェントがお客様のニーズに対応するための追加のインラインメッセージを提供します。新しいトランスクリプト要約機能は、各通話の短い要約を表示します。
  • 以下のいずれかを使用して、コンタクトセンターと統合します:
    • セッションレコーディングプロトコル(SIPREC: Session Recording Protocol)を使用した標準的なテレフォニー統合
    • Genesys CloudコンタクトセンターにおけるAudiohookの統合
    • Amazon Connect Contact Lens
  • コンタクトセンターのテレフォニーと統合することなく、LCAを素早くインストールして試すことができるスタンドアローンのデモモードが組み込まれています
  • AWS CloudFormationのテンプレート1つでリソースを簡単にインストールできる

これはまだDay1です!皆様のフィードバックに基づき、時間をかけてより多くのエキサイティングな機能を追加し続けることを期待しています。

CloudFormationスタックをデプロイする

AWS CloudFormationを使用して、組み込みのデモモードを有効にしてサンプルソリューションをデプロイすることで、LCAを体験します。

デモモードでは、AWSアカウントのAmazon Elastic Compute Cloud(AmazonEC2)インスタンス上に小さな仮想PBXサーバーをダウンロード、構築、インストールします(無料のオープンソースAsteriskプロジェクトを使用)ので、すぐにテスト電話をかけ、ソリューションの動作を確認できます。お客様独自のユースケースに対するソリューションの機能を評価した後、コンタクトセンターと統合することができます。

  1. ソリューションを使用するAWSリージョンに適したLaunch Stackボタンを使用してください。今後、リージョンを追加していく予定です。
    • 米国東部(バージニア北部)us-east-1
    • 米国西部(オレゴン)us-west-2
  1. Stack nameには、デフォルトであるLCAを使用します。
  2. Admin Email Addressには、有効な電子メール アドレスを使用します。デプロイのための一次パスワードがメールで届きます。
  3. Authorized Account Email Domainには、同じドメインの電子メールアドレスを持つユーザーが新しい UI アカウントを作成できるように、企業の電子メールアドレスのドメイン名部分を使用するか、ユーザーが自分のアカウントを直接作成できないようにするには空白のままにします。
  4. CallAudioSource には、Demo Asterisk PBX Server を選択します。
  5. Allowed CIDR Block for Demo Softphoneでは、ローカルコンピュータのIPアドレスとネットワークマスクの/32を使用します。

コンピュータのIPアドレスを見つけるには、ウェブサイトcheckip.amazonaws.comを使用することができます。

その後、オプションでソフトフォンアプリケーションをコンピュータにインストールし、LCAのデモ用Asteriskサーバに登録することができます。これにより、実際の双方向の電話を使ってLCAを試すことができます。

面倒だと思われる方も、ご安心ください!このパラメータをデフォルトのままにして、後でソフトフォンを登録しないことを選択すればよいのです。それでも、ソリューションをテストすることができます。デモ用Asteriskサーバーが登録されたソフトフォンを検出しない場合、内蔵の音声記録を使用してエージェント側の会話を自動的にシミュレートします。

  1. Enable Agent Assistについては、QnABot on AWS with new Kendra Index (Developer Edition)を選択して、エージェントアシストデモをお試しください。 または、独自のLexボットやLambda関数を使用することもできますし、新しいエージェントアシスト機能を試すことに興味がない場合は、Disabledを選択します。
  2. End of Call Transcript Summaryについては、SAGEMAKERを選択してください。または、独自のLambda関数を使用して他のモデルを使用してサマリーを生成するか、新しいトランスクリプト要約機能に興味がない場合は、DISABLEDを選択してください。
  3. その他のパラメータについては、デフォルトを使用します。

後で設定をカスタマイズしたい場合、例えば、PII再編集やカスタム語彙を適用して精度を向上させたり、異なるエージェントアシストやトランスクリプト要約の設定を試したい場合は、これらのパラメータのスタックを更新することができます。

  1. 2つの確認ボックスをチェックし、Create stackを選択します。

メインのCloudFormationスタックは、ネストしたスタックを使用して、AWSアカウントに以下のリソースを作成します:

  • ビルドアーティファクトと通話録音を保持するS3バケット
  • デモ用AsteriskサーバーがインストールされたEC2インスタンス(t4g.large)。これはVPC、セキュリティグループ、Elastic IPアドレス、インターネットゲートウェイを持ちます。
  • Amazon Kinesis Video Streamsに音声をストリーミングするように構成された、Amazon Chime Voice Connector
  • Kinesis Video Streamsからの音声チャネルストリームを結合し、ステレオストリームとしてAmazon Transcribeに中継し、Kinesis Data Streamsにトランスクリプトセグメントを発行し、ステレオ通話録音を作成し保存するAWS Lambda関数
  • Amazon Kinesis Data Streamで通話イベントとトランスクリプションセグメントをEnrichment処理機能へリレーする。
  • ライブ通話データにアナリティクスとエージェントアシストメッセージを追加するAWS Lambdaトランスクリプト処理(Enrichment)
  • QnABot on AWSソリューションスタック、Amazon Kendraインデックス(developer edition)を含むエージェントアシストリソース
  • 通話トランスクリプト要約を生成するためのAmazon SageMakerエンドポイント
  • AWS AppSync APIは、クエリとリアルタイム更新をサポートするGraphQLエンドポイントを提供
  • S3バケット、Amazon CloudFrontディストリビューション、Amazon Cognitoユーザープールを含むウェブサイトコンポーネント
  • その他、AWS Identity and Access Management (IAM) の役割とポリシー(最小権限のベストプラクティスを使用)、Amazon Virtual Private Cloud (Amazon VPC) リソース、Amazon EventBridge イベントルール、Amazon CloudWatch ロググループ、アラートを購読するための Simple Notifications Service (SNS) トピックなどのその他のサポートリソースがあります。

スタックのデプロイには約45分かかります。すべてがデプロイされると、メインスタックのステータスはCREATE_COMPLETEと表示されます。

パスワードの設定

スタックをデプロイした後、LCA の Web ユーザーインターフェイスを開き、パスワードを設定する必要があります。

  1. AWS CloudFormationコンソールで、メインスタックであるLCAを選択し、Outputsタブを選択します。

  1. 出力にCloudfrontEndpointとして表示されているURLにWebブラウザーを開きます。

ログインページに誘導されます。

  1. 提供したメールアドレスで、”Welcome to Live Call Analytics!”という件名で受け取ったメールを開いてください。

このメールには、生成された仮パスワードが含まれており、これを使用してログインします。ユーザー名はEメールアドレスです。

  1. 新しいパスワードを設定します。

新しいパスワードは、8文字以上で、大文字と小文字、数字、特殊文字が含まれている必要があります。

指示に従ってメールアドレスを確認するか、skipを選択して後で確認します。

これでLCAへのログインは完了です。

テスト通話をする

メインのLCAスタックのAWS CloudFormationの出力にDemoPBXPhoneNumberとして表示されている番号に電話をかけます。

まだソフトフォンアプリを登録していないので、デモのAsteriskサーバーはコールをピックアップし、録音を再生します。録音を聞き、プロンプトが表示されたら質問に答えてください。通話はLCAアプリケーションにストリーミングされ、録音、文字起こし、分析されます。後でUIにログインすると、この通話の記録を見ることができます。

オプション:ソフトフォンのインストールと登録

デモの録音ではなく、ライブの2人用電話でLCAを使用したい場合は、新しいデモ用Asteriskサーバーにソフトフォンアプリケーションを登録することができます。

以下のREADMEには、ローカルコンピュータに無料の(非商用利用の)ソフトフォンをダウンロード、インストール、登録するための手順が記載されています。登録は、Allowed CIDR Block for Demo SoftphoneがローカルマシンのIPアドレスを正しく反映している場合にのみ成功します。間違っていた場合、またはIPアドレスが変更された場合は、AWS CloudFormationでLCAスタックを選択し、Updateを選択してAllowed CIDR Block for Demo Softphoneに新しい値を提供することができます。

それでもソフトフォンの登録がうまくいかず、VPNに接続している場合は、切断してAllowed CIDR Block for Demo Softphoneを更新してください (企業VPNはIP音声トラフィックを制限することがあります)。

ソフトフォンが登録されたら、その電話番号にもう一度電話をかけます。今度は、デフォルトの録音を再生する代わりに、デモAsteriskサーバーがソフトフォンを鳴らすようにします。ソフトフォンで呼び出しに応答し、自分自身と双方向の会話をしてください!さらに、友人にあなたのAsterisk電話番号に電話をかけてもらい、発信者とエージェントのロールプレイでコンタクトセンターの通話をシミュレートすることができます。

ライブ通話分析とエージェントアシスト機能を見る

ライブ通話分析

さて、LCAがデモモードで正常にインストールされたので、通話分析の機能を調べる準備ができました。

  1. メインスタックの出力にCloudfrontEndpointとして表示されているURLを使用して、LCAのWeb UIを開きます。

このURLはよく使うので、ブックマークしておくことをお勧めします!

  1. デモ用Asteriskサーバーにテスト電話をかけます(先ほどと同じです)。
    1. ソフトフォンを登録した場合、あなたのローカルコンピュータで電話が鳴ります。電話に出るか、あるいは他の人に出てもらい、ソフトフォンを使って会話の中でエージェントの役割を果たすとよいでしょう。
    2. ソフトフォンを登録しなかった場合、Asteriskサーバーのデモ音声がエージェントの役割を果たします。

あなたの電話は、すぐにUIの通話リストの一番上に表示され、ステータスはIn Progressとなっています。

通話には以下の詳細があります:

  • Call ID – この電話コールの一意な識別子
  • Alerts – 通話のアラートカウントが表示されます。以下の「カテゴリとアラート」セクションを参照してください。
  • Agent – エージェント名がある場合、表示されます。Setting the AgentId field for a call を参照してください。
  • Initiation Timestamp – 通話が開始された時刻が表示されます。
  • Caller Phone Number – 発信元の電話番号が表示されます。
  • Status – 通話中であることを示します。
  • Caller Sentiment – 平均的な発信者の感情
  • Caller Sentiment Trend -発信者感情トレンド
  • Duration – 通話開始からの経過時間
  • Categories – 通話中に検出された Transcribe Call Analytics のカテゴリが表示されます。以下の「カテゴリとアラート」セクションを参照してください。
  1. In ProgressのコールのCall IDを選択すると、ライブ通話の詳細ページが開きます。

あなたが通話元の電話で話している間、あなたの声とエージェントの声がリアルタイムで書き起こされ、自動スクロールのCall Transcriptペインに表示されます。

会話の各ターン(カスタマーとエージェント)には、センチメント・インディケーターが注釈として表示されます。通話が続くと、カスタマーとエージェントの両方のセンチメントがローリングタイムウィンドウで集約されるため、センチメントがプラスまたはマイナスの方向にトレンドしているかどうかを簡単に確認することができます。

  1. 通話を終了します。
  2. ページ上部のCallsを選択して、通話リストページに戻ります。

通話がリストに表示され、ステータスがDoneになります。

  1. 任意の通話の詳細を表示するには、Call IDを選択して詳細ページを開くか、通話を選択して通話リスト通話詳細ペインを同じページに表示します。通話詳細の設定ツール(歯車アイコン)を使って、横並びのレイアウトに変更することができます。

アプリケーションの動作に慣れるために、さらに何度か電話をかけることができます。ソフトフォンをインストールした状態で、他の人にAsteriskデモサーバーの電話番号に電話をかけてもらいます。ソフトフォンで相手の電話を取り、ターンバイターンの書き起こし(トランスクリプト)がリアルタイムで更新されるのを見ながら相手と会話します。低遅延を観察してください。書き起こしと感情(センチメント)注釈の精度を評価します。完璧ではありませんが、近いと感じるでしょう!技術的な専門用語やドメイン固有の専門用語を使用すると、書き起こしの精度が落ちますが、カスタム語彙カスタム言語モデルを使用して Amazon Transcribe に新しい単語や用語を登録することができます。

カテゴリとアラート

LCAは、新しいAmazon Transcribe Real-time Call Analyticsサービスを使用して、リアルタイムのカテゴリとアラートをサポートするようになりました。 Amazon Transcribe Category Management コンソールを使用して、Category TypeをREAL_TIMEに設定した1つまたは複数のカテゴリを作成します(Creating Categoriesを参照)。通話中にTranscribe Real-time Call Analyticsによってカテゴリがマッチングされると、UIのライブトランスクリプト、通話概要、および通話リスト領域でLCAによって動的に識別されます。

LCA CloudFormationスタックパラメーター “Category Alert Regular Expression” と一致する名前を持つカテゴリーは、LCAによってアラートとして指定されていることを示すために赤色でハイライトされます。通話リストページのアラートカウンターは、アラート付きの通話を識別、ソート、フィルターするために使用され、スーパーバイザーは、進行中であっても潜在的に問題のある通話を迅速に特定することができます。

LCAは、一致したカテゴリーごとに、Amazon Simple Notification Service のトピックに通知を公開します。このトピックを購読して、eメール、SMSテキストメッセージを受信したり、独自のアプリケーションでカテゴリーマッチ通知を統合したりします。詳細については、コールカテゴリのSNS通知を設定するを参照してください。

エージェントアシスト

今こそ、新しいLCA Agent Assist機能を試す時です。デフォルトでは、AWS上のQnABotを使用してAgent Assistが有効になっています。QnABotは、Amazon LexとAmazon Kendraをオーケストレーションして、Agent Assistで使用する会話意図のマッチング、文脈の取得、ナレッジベース検索機能を提供する便利な機能です。また、管理用UIであるコンテンツデザイナーでは、エージェントのメッセージ生成方法を設定することができます。後ほど、エージェントアシストの実装方法として、独自のAmazon Lexボットの統合や、カスタムAWS Lambda関数を使用した独自のビジネスロジックとナレッジベースの統合など、別の選択肢を検討することができます。しかし、まずは内蔵のデモを探索することで、デフォルトの実装で何ができるかを確認してみましょう。

  1. Agent Assistのデモスクリプトを開いて確認します。
  2. デモのAsteriskサーバーに電話をかけ、ライブコールの詳細ページを開きます(先ほど行ったように)。
  3. デモスクリプトのダイアログから発信者の役を演じてください。
  • 理想的には、エージェントの役割を果たすために友人を雇う。エージェントの友人は、ソフトフォン(前述)を使用してあなたの呼び出しに応答し、スクリプトからエージェントの行を話すために使用します。それが難しい場合でも、ご心配なく!ダイアログの発信者部分のみを発声し、デモ録音でエージェントの役を演じさせれば、エージェントアシストを試すことができます。

AGENT_ASSISTANTのラベルがついたメッセージが、ほぼリアルタイムでトランスクリプトに表示されるのを観察してください。これらのメッセージは、エージェントが発信者に対応するためのガイドとなります。

デモスクリプトの各セクションで説明されている機能を観察してください:

  • 後で使用する発信者情報を登録するようエージェントに促す。
  • 先に提供された情報に基づいて、通話相手の質問に対する回答案を提示する。
  • 発信者が要求したトランザクションを実行するためにエージェントをガイドする。
  • あらかじめ設定されたFAQを検索することにより、自己完結型の発信者の質問に回答する。
  • あらかじめ設定されたFAQがない場合、Webページなどの非構造化文書を検索して、通話者の質問に関連する情報を見つける。

これらの例で使用されている概念について考えてみましょう。相対的な重要性を考慮し、コンタクトセンターのシナリオにどのように適用するか考えてみてください。

エージェントアシストメッセージが表示されるのは、発信者がアドリブなしでスクリプトに従ってセリフを言った場合のみであることにお気づきでしょう。エージェントアシスト機能をより多様な状況で効果的に動作させるためには、追加の設定が必要です。より大きなナレッジベース、より大きなFAQのセット、そしてサンプル発話を含むより大きな発信者インテントのセットが必要です。あなたは、これをより強固なものにするのを助けることができます!

機能をカスタマイズして拡張する方法の詳細については、エージェントアシストのREADMEを参照してください。文脈の理解と検索結果を生成的な質問回答に変換する実験的な大規模言語モデルの機能について探ってみましょう。新しい設定を試してみてください。あなた自身のユースケースを反映した様々な状況に対して、有用な提案を提供できるようにしましょう。スクリプトのない呼び出しに対して、少なくとも一部の時間、動作させることができますか?

通話詳細ページの新しい対話型ボットウィジェットを使用して、エージェントアシストボットと直接対話することもできるようになりました。これを使用して、ボットに質問をしたり、通話中または通話後に必要に応じてアクションを実行することができます。

今後のリリースでは、Amazon Transcribeの新機能や、最新のLarge Language Modelsと新たに発表されたAmazon Bedrockによる生成系AI機能を活用して、LCA Agent Assistantの機能を追加する予定です。あなたにとって重要な他の機能を教えてください。

ライブ翻訳

LCAは、Amazon Translateを使用した通話録音のリアルタイム翻訳に対応し、エージェントやスーパーバイザーが選択した言語で通話録音の確認ができるようになりました。Call Transcriptペインの上部にあるEnable Translationを使用し、Amazon Translateがサポートする利用可能な言語のリストから選択します。選択した言語は、再度翻訳を有効にする際のデフォルトとなります。選択した言語の翻訳テキストは、進行中の通話では各完了したトランスクリプトセグメントの下に、完了した通話ではトランスクリプト全体の下に、リアルタイムで表示されます。ライブ通話中に翻訳を有効にすると、その後のトランスクリプトセグメントがリアルタイムで翻訳され、通話が終了するとトランスクリプト全体が自動的に翻訳されるため、ページを開いたまま通話内容を音声言語と翻訳言語の両方で確認することができます。

トランスクリプト要約

LCAは、Real Time Transcribe Call Analyticsの既存の抽出要約機能に加えて、短い抽象的な通話記録要約を生成して表示できるようになりました。現在、トランスクリプト要約機能は実験的なものと考えています。あるケースでは非常にうまく機能しますが、他のケースではあまりうまく機能しないことがあります。

私たちは、Amazon SageMakerエンドポイント上で動作する事前学習済みのML要約モデルを使用しています。トランスクリプト要約のSAGEMAKERオプションを使用してLCAをデプロイすると、すべてが自動的にデプロイされ、設定されます。すでにテストコールから生成されたトランスクリプト要約を確認することができたと思います。要約は通話終了後約20秒、サーバーレスのSageMakerエンドポイントオプションを導入した場合は1分強で通話詳細ページに表示されます。

また、独自のLambda関数を使用するようにLCAを構成することで、トランスクリプション要約を生成することもできます。このオプションを使用して、他の事前訓練済みまたは微調整された大規模言語モデルで実験し、何が最適かを確認します。

この機能を拡張しカスタマイズする方法の詳細については、Transcript Summarizationを参照してください。今後のリリースでは、LCAが使用する技術やモデルを変更し、早期採用からのフィードバックに基づいた機能を追加する予定です。ぜひ試してみて、ご意見をお聞かせください!

処理フローの概要

LCAはどのようにテスト電話を書き起こし、分析したのでしょうか。その仕組みについて簡単に見てみましょう。

次の図は、主なアーキテクチャのコンポーネントと、それらがどのように高いレベルで組み合わされているかを示しています。

デモ用Asteriskサーバーは、Voice Connectorを使用するように構成されており、インバウンドおよびアウトバウンドコールのルーティングに必要な電話番号とSIPトランクを提供します。Chime Voice Connector (SIPREC) オプションを使用してコンタクトセンターと統合するようにLCAを構成する場合、デモ用Asteriskサーバの代わりに、Voice ConnectorはSIPベースのメディア録音(SIPREC)またはネットワークベースの録音(NBR)を使用して既存のコンタクトセンターと統合するように構成されています。どちらの場合も、Voice Connectorは、通話ごとに2つのストリーム(発信者用とエージェント用)を使用して、Kinesis Video Streamsに音声をストリームします。(LCAは、Genesys Cloud AudioHookとAmazon Connectという2つの追加コール入力ソースもサポートしています。これらは、取り込みに異なるアーキテクチャを使用しています。この投稿で後述する「コンタクトセンターとの統合」というタイトルのセクションを参照してください)。

新しい発信者またはエージェントのKinesis Videoストリームが開始されると、EventBridgeを使用してイベントが発行されます。このイベントはCall Transcriber Lambda関数をトリガーします。発信者ストリームとエージェントストリームの両方が確立されると、カスタムコール初期化Lambdaフック関数(指定されている場合)が呼び出されます(コール初期化LambdaHookFunctionを参照)。次に、Call Transcriber関数が、両方の入力ストリームからリアルタイムのオーディオフラグメントの消費を開始し、それらを結合して新しいステレオオーディオストリームを作成します。ステレオオーディオは、Amazon Transcribe Real-time Call Analyticsまたは標準のAmazon Transcribeセッション(スタックパラメータ値による)にストリーミングされ、書き起こし結果はKinesis Data Streamsにリアルタイムで書き込まれます。

各通話処理セッションは、通話が終了するまで実行されます。AWS Lambda関数呼び出しの最大継続時間(15分)を超えて継続するセッションは、Amazon Transcribeによる連続した書き起こしセッションを維持しながら、同じ関数の新しい「連鎖」呼び出しに自動的にシームレスに移行されます。この関数の連鎖は、通話が終了するまで必要に応じて繰り返されます。呼び出しが終わると、関数はAmazon S3にステレオ録音ファイルを作成します。

別のLambda関数であるCall Event Processorは、Kinesis Data Streamsによって供給され、通話のメタデータとトランスクリプションセグメントを処理し、エンリッチします。Call Event Processorは、(オプションの)エージェントアシストサービスと統合されます。デフォルトでは、LCAエージェントアシストは、オープンソースのQnABot on AWSソリューションを使用して、Amazon LexとAmazon Kendraによって駆動されます。また、AWS Lambda関数の形で独自のエージェントアシストボットまたはカスタムエージェントアシストロジックを提供することもできます。コールイベントプロセッサは、通話が終了したときに(オプションの)Transcript Summarization Lambdaを呼び出して、フルトランスクリプトから通話の要約を生成することもできます。

Call Event Processor関数は、AWS AppSyncと連携してDynamoDBに変更(変異)を永続化し、ログインしているWebクライアントにリアルタイムで更新を送信します。

LCAのWeb UIアセットはAmazon S3にホストされ、CloudFront経由で提供されます。認証はAmazon Cognitoで提供されます。デモモードでは、ユーザーIDはAmazon Cognitoのユーザープールに構成されています。本番環境では、Amazon Cognitoを既存のIDプロバイダー(IdP)と統合するように構成し、認証されたユーザーが企業の認証情報でログインできるようにすることが考えられます。

ユーザーが認証されると、Web アプリケーションは AWS AppSync API への安全な GraphQL 接続を確立し、通話リストページの新しい通話や通話状態の変更、通話詳細ページの新規または更新されたトランスクリプションセグメントや計算された分析などのリアルタイムイベントの受信にサブスクライブします。翻訳が有効な場合、ウェブアプリケーションはAmazon Translateと安全にやりとりして、通話記録を選択した言語に翻訳します。

インジェストされた音声からウェブページのライブ更新まで、すべての処理フローはイベント駆動であるため、エンドツーエンドのレイテンシーは小さく、通常は数秒程度です。

モニタリングとトラブルシューティング

AWS CloudFormationは、関連するスタックイベントタブでデプロイの失敗と原因を報告します。一般的なデプロイメントの問題については、CloudFormation のトラブルシューティングを参照してください。LCAスタックは、デフォルトのアカウントとリージョンサービスクォータが適用されるリソースを作成するため、リミット超過エラーによるデプロイメント失敗に注意してください。

Amazon Transcribeには、デフォルトで25の同時トランスクリプトストリームの制限があり、LCAは25の同時呼び出しに制限されています。より多くの同時呼び出しに対応する必要がある場合は、ストリーミングトランスクリプトの同時 HTTP/2 ストリーム数の増加をリクエストしてください。

LCAは、CloudWatchを使用して、各コンポーネントの実行時監視とログを提供します:

  • 通話処理Lambda関数 – Lambdaコンソールで、LCA-AISTACK-CallTranscriber関数を開いてください。Monitorタブを選択し、ファンクションのメトリクスを確認します。View logs in CloudWatch を選択して、関数のログを検査します。
  • Call Event Processor Lambda関数 – Lambdaコンソールで、LCA-AISTACK-CallEventProcessor関数を開いてください。Monitorタブを選択し、関数のメトリクスを確認します。View logs in CloudWatch を選択し、関数のログを検査します。
  • AWS AppSync API – AWS AppSyncコンソールで、CallAnalytics-LCAAPIを開きます。ナビゲーションペインでMonitoringを選択して、API メトリクスを表示します。View logs in CloudWatch を選択して、AppSyncAPI のログを検査します。
  • QnABot on AWSとAmazon Lex、Amazon Kendra for Agent Assistを併用する場合は、Agent Assist READMEQnABotソリューション実装ガイドを参照してください。

コスト評価

デモ用Asteriskサーバーを有効にすると、t4g.large EC2インスタンスに約0.07ドル/時間の小さな時間コストが発生します – Amazon EC2 料金を参照してください。

QnABot on AWS with new Kendra Indexを使用してエージェントアシストを有効にする場合、KendraインデックスとQnABotが使用するサービスのための追加の時間単位の料金が発生します。Amazon Kendraインデックスは現在、Developer Editionで1.125ドル/時間(最初の750時間は無料)、Enterprise Editionで1.40ドル/時間(本番ワークロードに推奨)です – Amazon Kendraの料金参照。QnABotソリューションが使用する追加のAWSサービスのコストは約0.77ドル/時間です – QnABot on AWSソリューションのコストを参照してください。QnABotの新しい実験的なANTHROPICまたはLAMBDAオプションを有効にした場合、LLM関連の料金は別途お客様のご負担となります。

Amazon SageMakerを使用してTranscript Summarizationを有効にすると、SageMakerエンドポイントのInitial Instance Count for Summarization SageMaker Endpoint(デフォルトはプロビジョニングされた1ノードのml.m5.xlargeエンドポイント)に入力した値に応じて、追加料金が発生します。SageMaker Serverless Inferenceを選択するために「0」を入力した場合は、使用料のみが請求されます。関連するコストとFree Tierの資格に関する情報については、Amazon SageMakerの料金を参照してください。ANTHROPICまたはLAMBDAオプションによる要約を選択された場合、LLM関連の料金は別途ご負担いただきます。

残りのソリューションコストは、すべて使用量に基づきます。

利用料金は、5分間の通話で約0.17ドルですが、これは選択したオプション、Transcribe分析または標準モードを使用するかどうか、および総利用量に基づいて異なる場合があります。使用料が発生するサービスの詳細については、以下を参照してください:

LCAのコストをご自身で調べるには、AWS Cost Explorerを使用するか、AWS Billing DashboardBill Detailsを選択して、サービスごとの月次支出を確認します。

コンタクトセンターとの統合

AWS CloudFormationを使用してコンタクトセンターへの実際の通話を分析するためにLCAを導入するには、CallAudioSourceパラメータを変更して既存のLCAデモスタックを更新します。

または、既存の LCA デモスタックを削除し、CallAudioSource パラメーターの適切なオプションを使用して新しい LCA スタックをデプロイします。

また、別のAWSアカウントまたはリージョンに新しいLCAスタックをデプロイすることもできます。

Genesys Cloud

これらのパラメータを使用して、Genesys Cloudコンタクトセンター統合のためのLCAを構成します:

  1. Call Audio Sourceは、Genesys Cloud Audiohook Web Socketを選択します。
  2. Allowed CIDR Block for Demo Softphoneは、デフォルトのままにしておきます。
  3. Allowed CIDR List for SIPREC Integrationは、デフォルトのままにしておきます。
  4. Amazon Connect instance ARN (existing)は、デフォルトのままにします。

LCAを導入すると、Genesys Audiohook Webソケット統合に必要なすべてのリソースが作成されます。アーキテクチャや詳細な手順については、LCA Genesys Cloud Audiohook READMEを参照してください。

Chime Voice コネクタ(SIPREC)

これらのパラメータを使用して、標準的なSIPRECベースのコンタクトセンター統合のためにLCAを構成します:

  1. Call Audio Sourceは、Chime Voice Connector (SIPREC)を選択します。
  2. Call Audio Processorは、Chime Call Analytics をオプションで選択し、Chime Voice Tone Analysisを有効化します。既知の課題: Chime Call Analyticsの有効化は、現在、PCAとの統合を無効化します。これは今後のリリースで対処します。
  3. Allowed CIDR Block for Demo Softphoneは、デフォルトのままにしておきます。
  4. Allowed CIDR List for SIPREC Integrationは、SBCサーバーなどのSIPRECソースホストのCIDRブロックを使用します。複数のCIDRブロックを入力する場合は、カンマで区切ってください。
  5. Lambda Hook Function ARN for SIPREC Call Initialization (existing)は、デフォルトのまま、またはオプションで、処理するコールの選択、エージェント/発信者ストリームの切り替え、AgentIdの割り当て、CallIdと表示電話番号の値の変更を行う独自のLambda関数のARNを指定します。通話初期化LambdaHookFunctionを参照してください。
  6. Amazon Connect instance ARN (existing)は、デフォルトのままにします。

通話のAgentId属性を提供または更新するための情報については、AgentIdを設定するを参照してください。

通話のトランスクリプションの開始を遅らせるオプションについては、進行中の通話の処理を開始するを参照してください。コンタクトセンターのSBCが各通話の開始時にSIPRECセッションを開始するが、発信者とエージェントが接続されるまで通話の書き起こしを開始したくない場合、これを行うことができます。

LCAを導入すると、Voice Connectorが作成されます。このVoice ConnectorとPBX/SBCをSIPベースのメディア録音(SIPREC)またはネットワークベースの録音(NBR)用に設定するためのガイダンスとして、Voice Connectorドキュメントを使用します。Voice Connectorリソースページには、以下のようなベンダー固有の設定例ガイドがあります:

  • SIPREC構成ガイド: SIPREC 設定ガイド:Cisco Unified Communications Manager (CUCM) および Cisco Unified Border Element (CUBE)
  • SIPREC コンフィギュレーション ガイド: Avaya Aura Communication Manager および Session Manager と Sonus SBC 521

LCA GitHubリポジトリには、SIPREC.mdを参照し、参考になるベンダー固有の注意事項が追加されています。

Amazon Connect

Amazon Connect Contact Lens統合のためにLCAを構成するには、これらのパラメータを使用します:

  1. Call Audio Sourceは、Amazon Connect Contact Lensを選択します。
  2. Allowed CIDR Block for Demo Softphoneは、デフォルトのままにしておきます。
  3. Allowed CIDR List for SIPREC Integrationは、デフォルトのままにしておきます。
  4. Amazon Connect instance ARN (existing)は、既存のAmazon ConnectインスタンスのAmazonリソース名(ARN)を入力します。

LCAを導入すると、指定したConnectインスタンスとの連携が自動的に構成されます。アーキテクチャ、前提条件、詳細な手順については、LCA Connect Integration READMEを参照してください。

デプロイメントをカスタマイズする

スタックを作成または更新する際に、以下のCloudFormationテンプレートパラメータを使用して、LCAデプロイメントをカスタマイズします:

  • 通話録音に独自の S3 バケットを使用するには、Call Audio Recordings Bucket NameAudio File Prefix を使用します。
  • Amazon Transcribe Real-time Analytics API を有効にするには、Transcribe API モードanalytics に設定します。これにより、通話カテゴリ、アラート、検出された問題、および既存のPost Call Analytics(PCA)展開(下記参照)との統合を含む機能が有効になります。
  • トランスクリプトから PII を再編集するには、IsContentRedactionEnabledtrue に設定します。詳細については、リアルタイムストリームのPIIを再編集または特定するを参照してください。
  • 技術的およびドメイン固有の略語や専門用語のトランスクリプション精度を向上させるには、Transcription Custom Vocabulary NameをAmazon Transcribeで既に作成したカスタム語彙の名前に設定し、Transcription Custom Language Model Nameを以前に作成したカスタム言語モデルの名前に設定します。詳細については、トランスクリプションの精度を向上させるを参照してください。
  • 米国英語以外のサポートされる言語で通話を書き起こすには、Language for Transcriptionの希望する値を選択します。
  • トランスクリプト処理をカスタマイズするには、オプションで、Lambda Hook Function ARN for Custom Transcript Segment Processing (existing)を、独自のLambda関数のARNに設定します。詳細については、Lambda関数を使用して、トランスクリプト処理用のカスタムロジックをオプションで提供するを参照してください。
  • エージェントアシストに独自のカスタムボットまたはカスタムナレッジベースを使用する、またはエージェントアシスト機能を無効にするには、Enable Agent Assistオプションから選択します。
  • QnABot on AWSソリューション、Amazon Lex、Amazon Kendra、(オプションで)大規模言語モデル統合に基づいてAgent Assistの機能をカスタマイズするには、Agent AssistのREADMEをご覧ください。
  • 独自のLambda関数を呼び出すようにLCAを構成してTranscript Summarizationをカスタマイズするには、Transcript Summarization LAMBDAオプションを参照してください。
  • 保存期間を変更するには、Record Expiration In Daysを希望の値に設定します。この期間を過ぎると、すべての通話データはLCA DynamoDBストレージから永久に削除されます。この設定の変更は、更新後に受信した新しい通話にのみ適用されます。
  • 処理する通話の選択、エージェント/発信者ストリームの切り替え、AgentIdの割り当て、およびCallIdと表示電話番号の値の変更を行うには、Lambda Hook Function ARN for SIPREC Call Initialization(existing)に、カスタムロジックを実装するLambda関数のARNを設定します。LambdaHookFunctionを参照してください。

LCAはオープンソースのプロジェクトです。LCA GitHubリポジトリをフォークしてコードを拡張し、プルリクエストを送信することで、あなたの改良を取り込んで共有することができます!

既存のLCAスタックを更新する

既存のLCAスタックを最新リリースに簡単に更新できます。既存のスタックを更新するを参照してください。

クリーンアップ

このソリューションの実験が終わったら、AWS CloudFormationコンソールを開き、デプロイしたLCAスタックを削除して、リソースをクリーンアップします。これにより、ソリューションをデプロイすることによって作成されたリソースが削除されます。記録されたS3バケット、DynamoDBテーブル、およびCloudWatch Logグループは、スタックが削除された後も保持され、データの削除を回避します。

事後通話分析(PCA): 関連ソリューション

関連ソリューションである事後通話分析(PCA: Post Call Analytics)は、Amazon Transcribe Call AnalyticsバッチAPIを使用することにより、追加のインサイトと分析機能を提供し、共通の問題、中断、沈黙、話者の音量、通話カテゴリなどを検出します。ストリーミングオーディオをリアルタイムで書き起こし分析するLCAとは異なり、PCAは通話が終了した後に通話を分析します。新しいAmazon Transcribe Real-time Call Analyticsサービスでは、通話終了後わずか数分でストリーミングセッションから通話後の分析結果を出力します。LCAは、この通話後の分析データをPCAの最新バージョン(v0.4.0)に送信し、音声をもう一度書き写すことなく、ストリーミングセッションの分析を可視化することができるようになりました。LCA CloudFormationテンプレートのパラメータにPost Call Analytics (PCA) Integrationと表示されているものを使用して、既存のPCA導入v0.4.0以降と統合するようにLCAを構成する。2つのソリューションを一緒に使用して、両方の長所を得ることができます。詳細については、Amazon言語AIサービスによるコンタクトセンターのポストコールアナリティクスをご覧ください。

まとめ

エージェントアシストサンプルソリューション付きライブ通話分析(LCA)は、スーパーバイザーとエージェントを支援する機能を備えたライブ通話分析を提供し、通話者の体験への集中力を高めるためのスケーラブルで費用対効果の高いアプローチを提供します。Amazon Transcribe、Amazon Comprehend、Amazon Lex、Amazon KendraなどのAmazon MLサービスを使用して、コンタクトセンターの音声を書き起こし、リアルタイムにインサイトを抽出します。

LCAのサンプルアプリケーションはオープンソースとして提供されています。これを独自のソリューションの出発点として使用し、GitHubのプルリクエストを通じて修正や機能を提供することで、より良いものにするためにご協力ください。LCAのGitHubリポジトリにアクセスしてコードを確認し、Watchを選択して新しいリリースの通知を受け、READMEをチェックして最新のドキュメントを更新してください。

専門家の支援については、AWSプロフェッショナルサービスやその他のAWSパートナーがお手伝いします。

ぜひお声をお聞かせください。コメント欄でご意見をお聞かせいただくか、LCA GitHubリポジトリ内のissueフォーラムをご利用ください。


執筆者について

Bob StrahanはAWS Language AI Servicesチームのプリンシパルソリューションアーキテクトです。

Oliver Atoaは、AWS Language AI Servicesチームのプリンシパル・ソリューション・アーキテクトです。

Sagar Khasnisは、Productivity Applicationsのアプリケーション構築に注力するシニアソリューションアーキテクトです。彼は、AWSのサービスを使用して革新的なソリューションを構築し、お客様のビジネス目標の達成を支援することに情熱を燃やしています。自由時間には、伝記を読んだり、ハイキングをしたり、フィットネススタジオで汗を流したり、自宅でパーソナルリグに熱中しています。

Court SchuettはChime Specialist SAで、テレフォニーの経歴を持ち、現在はモノを作ることが好きです。

Christopher Lottは、AWS AI Language Servicesチームのシニアソリューションアーキテクトです。彼は20年のエンタープライズソフトウェア開発の経験を持っています。Chrisはカリフォルニア州サクラメントに住んでおり、ガーデニング、航空宇宙、世界旅行が趣味です。

Babu Srinivasanは、AWSのWorld Wide Specialist組織のSr. Specialist SA – Language AI servicesで、IT分野で24年以上の経験を持ち、過去6年間はAWSクラウドに注力しています。AI/MLに情熱を注いでいる。仕事以外では、木工を楽しみ、手品カードマジックで友人や家族(時には見知らぬ人)を楽しませます。

Kishore Dhamodaranは、AWSのシニアソリューションアーキテクトです。長年にわたる業界とクラウドの経験を活かし、戦略的なお客様のクラウドエンタープライズ戦略や移行の旅を支援しています。


翻訳は機械学習ソリューションアーキテクト伊藤が担当しました。原文はこちらです。