[AWS]Amazon ConnectのCTRデータをAmazon OpenSearch Serviceで可視化してみる

AWS事業本部コンサルティング部の洲崎です!Amazon Connectで取れるCTRというデータを元にOpenSearch Serviceで可視化してみました。
2021.09.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon Connectではレポート機能もありますが、Amazon OpenSearch Service (Amazon Elasticsearch Service の後継サービス)を利用することでダッシュボードを作成してグラフ等で可視化することができます。
今回はAmazon ConnectからAmazon KinesisFirehoseを通って、OpenSerch Serviceで可視化してみます。

今回可視化できる部分はAmazon ConnectのCTRという情報の部分です。
CTRという情報はAmazon Connectインスタンスで発生するイベントや、属性、キュー、エージェントのやり取りをキャプチャしたものになります。
Amazon KinesisFirehoseを通って、80~100秒でOpenSearch Serviceに書き込まれる形になります。
CTRのデータ項目については下記をご確認ください。

Amazon Connectの問い合わせ追跡レコード(Contact Trace Record)のデータ項目の説明

実際の構成は下記となります。

※今回はIP制限のみで行う為、Cognitoを構築しないのですが、実際にセキュアなアクセス管理を行う場合は検討する形になります。

やってみる

Amazon OpenSearch Serviceドメインの作成

まずはAmazon OpenSearch Serviceのドメインを作成します。
下記画面の”新しいドメインを作成”をクリックします。

今回はテスト用途のため、デプロイタイプは”開発およびテスト”、バージョンはデフォルトのままで進めていきます。
ドメイン名はわかりやすい名前、自動調整は有効化、インスタンスタイプはt3.small.searchで進めていきます。
今回はIPアドレスで許可する形を行いますのでパブリックアクセス、カスタムアクセスポリシーで自身の利用するIPアドレスを入力しましょう。

これでドメインを作成します。作成まで約10分かかります。ステータスがアクティブになるまで待ちましょう。

Amazon Kinesis Data Firehoseの設定

次にAmazon Kinesis Data Firehoseの設定を行います。
Kinesisサービスのコンソールを開き、Kinesis Data Firehoseをクリックします。

SourceはDirect PUTを選択し、DestinationはAmazon Elasticsearch Serviceを選択します。

Elasticsearch domainで作成したOpenSearchのドメインを選択し、Indexは管理しやすい値をいれます。
インデックスのローテーションも決めていきます。

バックアップ設定のところもS3にデータを貯めることができるのでバケットを指定して進めていきます。
バケットがない場合、Createボタンを押すことでバケット作成の画面に移動します。
Advanced settingsのところでIAMロール(KinesisからOpenSerachにアクセスする権限)の設定がありますが、Createを選択することでよしなに作成してくれます。
全て指定ができたらCreate delivery streamをクリックします。
作成が完了し、StatusがActiveなことを確認します。

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

Amazon Connectのインスタンス画面を開き、データストリーミング→データストリーミングの有効化にチェックを入れて、作成したKinesis Firehoseを設定します。

これで設定完了となります。

ログが入ってるかの確認

実際に通話テストをすると、80~100秒ほどのラグでOpenSearch Serviceのインデックスにログが溜まっていきます。
今回作成したtest-ctrというインデックスの確認ができました。

このログを使ってOpenSearch ダッシュボードで可視化していきます。

OpenSearchダッシュボードの設定

インデックスパターンの作成

OpenSearchのダッシュボードに入って設定を行なっていきます。
コンソールのダッシュボードURLにアクセスします。
IP制限を設定したIPアドレスであればアクセスできると思いますが、アクセスできない場合、アクション→アクセスポリシーの変更で設定を確認してみてください。
ダッシュボードにアクセスしたら、左のバーにあるStack Managementをクリックします。

Index Patternsを選択、Create index patternを選択します。

Index Patternを今回は作成したインデックスの名前-*と入力します。

Time fieldはLastUpdateTimestampを選択し、インデックスパターンを作成します。

Visualizeの設定

左側のメニューの"Visualize"を選択します。

Create new visualizationを選択し、Data Tableを選択、先ほど作成したインデックスパターンを選択します。
右側のMetricsにて下記パラメーターを選択します。
Aggregation : Unique Count
Field : ContactId.keyword
Custom Label : Calls

また、BucketsからSplit Rowsを選択して、下記パラメーターを入力していきます。
Aggregation : Date Histogram
Field : LastUpdateTimestamp
Interval : Daily
Custom Label : Date

Updateを押すと、実際の結果が右側に反映されます。
今回は9/23に1回電話してみたのでそちらの結果が表示されています。
(出ない場合は右上にあるカレンダーマークを押して表示する期間を伸ばしてみましょう)

結果が問題なく表示されましたら右上のSaveをクリックし保存します。

dashboardの設定

あとはいつでも複数のVisualizeがすぐみれる様にdashboardの設定をしておきます。
左のサイドバーからDashboardをクリックします。

Create new dashboardを押すとdashboard設定画面に映ります。
Add an existingをクリックすると、先ほど保存したVisualizeが選択可能になっています。

先ほど保存したVisualizeを選択すると、dashboardに反映されました!

CTRのデータを元に棒グラフや円グラフ等、さまざまなグラフで可視化することができるので色々試してみてください。

まとめ

今回はAmazon ConnectのCTRのデータをOpenSearch Serviceで可視化をしてみました。
コールセンターの情報は一般的にBIツールと呼ばれる製品で検討していくと思いますが、全てAWSサービスで実装できるのはよいですね。
AWS内で完結している為、スムーズに連携することができました。

今回はCTRのデータを可視化してみましたが、次はAgentのデータも可視化してみようと思います。

ではまた!コンサルティング部の洲崎でした。

参考

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