Amazon Web Services ブログ

Elasticsearch と Kibana を使って Amazon Connect のデータをリアルタイムに活用する

このブログポストでは、Amazon Elasticsearch Service (Amazon ES) と Kibana を使って、どのように Amazon Connect コンタクトセンターでリアルタイムなデータ分析を行うかを紹介します。問い合わせ対応時間やサービスレベル、問い合わせの効率具合、エージェントのパフォーマンス、顧客満足度など、様々なサービス・メトリクスを改善するためにコンタクトセンターのパフォーマンスをモニタリングできます。

加えて、Amazon ES を使って問い合わせ追跡レコード (CTR) 、エージェントのイベント・ストリーム、Amazon CloudWatch で取得できる問い合わせフローログを処理し、Kibana を使ってリアルタイムに近い形で可視化するソリューションも紹介します。Elasticsearch はオープンソースの、分散システムの検索と分析のエンジンで、ログ分析や全文検索に利用されています。Kibana はデータ集約と可視化のツールです。Amazon ES と Kibana を用いて、リアルタイムにデータを検索、可視化、分析、洞察することができます。

Amazon Connect は顧客とのやり取りで発生したイベントの詳細をリアルタイムに問い合わせフローログとして提供します。問い合わせフローとは顧客が問い合わせを行ったときの顧客体験を定義したもので、再生するプロンプトや顧客からの入力、問い合わせキューの転送などを定義します。

さらに、Amazon Connect は 分析用にデータをエクスポートするために CTR を Amazon Kinesis Data Firehose に、エージェントのイベントを Amazon Kinesis Data Streams にストリーミングできます。CTR は Amazon Connect インスタンスで発生するイベントや、属性、キュー、エージェントのやり取りをキャプチャーしたものです。エージェントのイベントは、Amazon Connect インスタンスにて起こる、ログイン、ログアウト、ステータスの変更といったエージェントのアクティビティを記録したものです。

ソリューション概要

以下の図は Amazon Connect からの問い合わせフローログや CTR、エージェントのイベントを処理し、Amazon ES と Kibana を使ってデータを可視化するアーキテクチャを表しています。

コンタクトセンターの分析ソリューションのためのアーキテクチャ図

このソリューションでは、Amazon Connect は Amazon CloudWatch に問い合わせフローログを送るように構成されています。CloudWatch は監視サービスで、メトリクスの追跡や、ログファイルの収集、検知されたイベントをもとにアラームをセットできます。ここでは、CloudWatch Logs のサブスクリプションを作成し、Amazon ES に問い合わせフローログを書き込む AWS Lambda 関数を呼び出します。そして、バックアップと追加の分析用に Amazon Simple Storage Service (Amazon S3) にデータをコピーします。

さらに、CTR を Amazon Kinesis Data Firehose へ、エージェントのイベントログを Amazon Kinesis Data Streams にストリーミングするように構成します。CTR は JSON フォーマットでストリームにエクスポートされ、イベント、属性、キュー、問い合わせでエージェントがやりとりしたときのデータが含まれます。エージェントのイベントも同様に JSON フォーマットでエクスポートされ、ログイン、ログアウト、ステータスの変更といったエージェントのアクティビティの詳細が含まれます。

Kinesis Data Firehose は CTR データを Amazon ES に書き込み、バックアップと追加の分析用にデータを Amazon S3 にコピーします。先ほどの Firehose とは別に Firehose を構成し、 Kinesis Data Stream からエージェントのイベントデータをキャプチャーし、Amazon ES にデータを送ります。エージェントのイベントの生データはバックアップと追加の分析用に同様に Amazon S3 にコピーします。

問い合わせフローログや CTR、エージェントのイベントログが Amazon ES に書き込まれたら、データを検索し、ほぼリアルタイムにデータを分析するために Kibana を用います。問い合わせフローログとエージェントのアクティビティデータはリアルタイムで利用可能ですが、CTR は問い合わせが終わった後、 80〜100 秒で Amazon ES に書き込まれます。

ソリューションを構成する

このソリューションを構築する前に、Amazon Connect のインスタンスを作成し問い合わせフローログを有効化する必要があります。
問い合わせフローログを有効化する時、ログの保存先として表示される CloudWatch Logs の場所を書き留めてください。(aws/connect/instancealias など) 次のステップで AWS CloudFormation テンプレートを構成するときの値として使います。

Amazon Connect インスタンスを作成すると、AWS マネジメントコンソールにログインして、このブログ記事のために作成した AWS CloudFormation テンプレートを用いたソリューションをデプロイできます。このテンプレートは必要な IAM サービスロール群、1つの AWS Lambda 関数、1つの Amazon Kinesis Data Stream、2つの Kinesis Data Firehose ストリーム、1つの S3 バケット、そして 1つの Amazon ES ドメインを作成します。

CloudFormation テンプレートを更新するために

  1. CloudFormation テンプレートを開く
    • もし、Amazon Connect インスタンスが米国東部(バージニア北部)リージョンにある場合、このテンプレートを使います。
    • もし、Amazon Connect インスタンスが米国西部(オレゴン)リージョンにある場合、このテンプレートを使います。
  2. テンプレートの指定画面にて、次へをクリックします。
  3. スタックの詳細の指定画面にて、あなたの環境に合わせて以下のパラメータの値を変更します。
    • ContactFlowLogGroup ― 問い合わせフローログを有効化したときに書き留めた CloudWatch Logs のロググループ名を指定します。
    • ElasticsearchName ― CloudFormation テンプレートで作成されたドメイン名です。                  CloudFormation でスタックを作成するスタックの詳細の指定画面
  4. 次へ をクリックし、スタックオプションの設定画面では、値はそのままにして 次へ をクリックします。
  5. 確認 画面にて、以下の設定に変更します。
    • 機能と変換 にて、すべてのチェックボックスにチェックを入れる
    • 変更セットの作成 を選択する
    • 次のセクションに進む前にスタックが作成完了になるのを待つ。完了すると、ステータス列に CREATE_COMPLETE と表示される

Amazon Connect にてデータストリーミングを有効化する

CloudFormation スタックが作成された後、問い合わせ追跡レコードとエージェントイベントを Kinesis Data Streams にストリーミングするために Amazon Connect インスタンスを構成します。Kinesis のストリームは CloudFormation テンプレートによって作成されています。

Amazon Connect からデータのストリーミングを有効化するために

  1. Amazon Connect コンソールにて、このソリューションで使っているインスタンス・エイリアスを選択する
  2. データストリーミング を選択し、データストリーミングの有効化にチェックを入れる
  3. 問い合わせ追跡レコード にて、Kinesis Firehose を選択し、ドロップダウンリストから AmznConnectCtrDeliveryStream を含むストリーム名を選択する
  4. エージェントイベント にて、リストから AgentKinesisStreamを含むストリーム名を選択します。

Amazon Connect のデータストリーミング設定画面

データストリーミングが有効化されると、Amazon Connect Contact Control Panel (CCP)を使った架電もしくは受電でデータが生成されます。架電もしくは受電の数分後に、S3 バケットと Amazon ES ドメインでデータが見られます。

Kibana で データを可視化する

Amazon ES にデータがロードされた後、Kibana で可視化できます。可視化する前に Kibana にアクセスできるように Elasticsearch ドメインへのアクセス権を付与します。CloudFormation テンプレートは 1つの IPアドレスからのドメインへのアクセスを許可するアクセスポリシーを含んでいます。この記事では、使用中のPC のパブリック IPアドレスでポリシー内の IP アドレスを置き換えてあります。詳細な情報は Elasticsearch Service アクセスコントロールKibana の Amazon Cognito 認証を参照してください。

Kibana 用にアクセスポリシーを更新する

  1. Amazon ES コンソールを開く
  2. ドメインを選択し、CloudFormation テンプレートで作成された amznconnect-elk-dev を選ぶ
  3. アクセスポリシーの変更を選択する
  4. ドメインアクセスポリシーの設定 にて、特定の IP からのドメインへのアクセスを許可 テンプレートを選択する
  5. 使用しているパブリック IP アドレスを入力し、OKを選択する。不明な場合は、”my IP address” のキーワードで IPアドレスを確認するサイトを検索可能です
  6. 送信を選択し、ドメインのステータスがアクティブと表示されるまで待つ
  7. 概要タブで、Kibana の隣に表示されるリンクを選択する

Kibana をロードした後、可視化する前にインデックスのパターンを作成する必要があります。

Kibana でエージェントイベントのインデックスパターンを作成する

  1. Kibana の左側のナビゲーションメニューから、Managementを選択する
  2. Managementページから、Index Patternsを選択する
  3. インデックスパターンとして、agent-logs-*を入力し、Next stepを選択する

    Kibana の Management 設定ページにてインデックスパターンを作成

  4. Time Filter field nameとして、EventTimestampを選び、Create index patternをクリックする

Kibana の Management 設定ページにて create an index pattern の Step 2

エージェントイベントのインデックスパターンを作成した後、ログデータで可視化します。この例では、ステータス別にエージェント数を表示するために縦のバーチャートを作成します。

データで可視化するために

  1. 左側のナビゲーションメニューから、Visualize を選択する
  2. Create a visualization を選択する
  3. Basic Charts から、Vertical Bar を選択する
  4. Select Index から、agent-logs-* を選択する
  5. Metrics から、Y-Axis を展開し、以下のパラメータを設定する
    • Aggregation : Unique Count
    • Field : CurrentAgentSnapshot.Configuration.Username.keyword
    • Custom Label : Agent
  6. Buckets から、X-Axis を選択し、以下のパラメータを設定する
    • Aggregation : Terms
    • Field : CurrentAgentSnapshot.AgentStatus.Name.keyword
    • Order By : metric: Agent
    • Size : 50
    • Custom Label : Status
  7. Add a filter を選択し、以下のパラメータを設定する
    • Filter : EventTimestamp, is between, now-10s と now

      Kibana で EventTimestamp 用のフィルター設定

  8. Save を選択し、変更を適用するために Play をクリックする
  9. リボンメニューから、Save をクリックする
  10. Visualization の名前を設定し、Save をクリックする

この Visualization は Amazon Connect インスタンス内のエージェント数と最新のステータスを表示します。エージェントのステータスはほぼリアルタイムで対応可能なエージェント数を見るために直近 10 秒のステータスです。

Kibana でステータス別にエージェント数を表示するグラフ

次に、CTR を使って可視化を作成します。そのために、CTR データからインデックスパターンを作成します。

CTR でインデックスパターンを作成するために

  1. 左側のナビゲーションメニューから、Management を選択する
  2. Kibana Management ページから、Index Patterns を選択する
  3. Index Patterns から、+Create Index Pattern を選択する
  4. Index pattern として、ctr-logs-* を入力し、Next step を選択する
  5. Time Filter field name として、LastUpdateTimestamp を選び、Create index pattern をクリックする

CTR インデックスパターンを作成した後、そのデータで可視化します。この例では、日ごとの受電数を表示する表を作成します。

CTR を可視化するために

  1. 左側のナビゲーションメニューから、Visualize を選択する
      注: この前のステップからエージェントイベントの Visualization を表示している場合、Visualize を選択し、はじめから行います
  2. “+” アイコンをクリックし、新しい Visualization を作成する
  3. Data から、Data Table を選択する
  4. Select Index から、ctr-logs-* を選択する
  5. Metrics から、Metrics を展開し、以下のパラメータを設定す
    • Aggregation : Unique Count
    • Field : ContactId.keyword
    • Custom Label : Calls
  6. Buckets から、Split Rows を選択し、以下のパラメータを設定する
    • Aggregation : Date Histogram
    • Field : LastUpdateTimestamp
    • Interval : Daily
    • Custom Label : Date
  7. 変更を適用するために、Play をクリックする
  8. リボンメニューから、Save をクリックする
  9. Visualization の名前を設定し、Save をクリックする

この Visualization は日ごとに Amazon Connect で受電した数を表示します。

日ごとの受電数を表示する Kibana の表

問い合わせフローログからのデータで可視化し、分析ができます。そのために問い合わせフローログからインデックスパターンを作成します。

問い合わせフローログからインデックスパターンを作成するために

  1. 左側のナビゲーションメニューから、Management を選択する
  2. Kibana Management ページから、Index Patterns を選択する
  3. Index Patterns から、+Create Index Pattern を選択する
  4. Index pattern として、cwl-* を入力し、Next step を選択する
  5. Time Filter field name として、 Timestamp を選択し、 Create Index pattern をクリックする

複数の Visualization を作成し、左側のナビゲーションメニューから以下のようにして、それらをダッシュボードに追加できます。

Visualization を表示する Kibana ダッシュボード

結論

Amazon Connect は 問い合わせ追跡レコードやエージェントイベント、問い合わせフローのメトリクスを提供します。Amazon Kinesis Data Streams や Amazon Elasticsearch Service のような AWS の分析サービスと統合するとデータをリアルタイムで検索したり、コンタクトセンターの運用や生産性を監視することができます。そして、エージェントや問い合わせキューのパフォーマンスを改善する、リアルタイムな意思決定ができます。

原文:https://aws.amazon.com/jp/blogs/contact-center/use-amazon-connect-data-in-real-time-with-elasticsearch-and-kibana/

翻訳:ソリューションアーキテクト 松本 和久