Amazon Connectから問い合わせ追跡レコード(CTR)をエクスポート
Amazon Connectから発信した電話に出たのか、出なかったのかを確認したく、たどり着いた手段の一つがCTR(問い合わせ追跡レコード)のエクスポートでした。
Python SDKのboto3でAmazon ConnectのAPIから取得できないかと思い、describe_contactで試してみたものの、接続日時、切断理由がレスポンスには含まれておらずでした。
そこで、まずはCTRをS3バケットにエクスポートしてみて確認しました。
結果、接続日時、切断理由が取得できていました。
電話に出なかったときは接続していないので接続日時がnullでした。
切断理由も取得できましたが、接続日時で判定できそうなので今回は切断理由の値を詳しく調べるのはやめておきました。
ただし、Kinesis Firehoseなので、最大60秒のタイムラグが発生します。
これが許容できればありですね。
それでは設定です。
Amazon Connectで該当インスタンスを選択しました。
左ペインで[Data streaming]を選択して、「データストリーミングの有効化」をチェックしました。
送信先はKinesis Firehoseを選択しました。
FirehoseはS3バケットへ送信するよう作成済みです。
今回の要件ではエージェントイベントは発生しないので、未選択のままで作成しました。
AWS Lambda(Python)で生成した文字をAmazon Connectで音声を設定して発信する
電話を発信してみて、少し待ってからS3バケットを見るとCTRのオブジェクトが送信されていました。
マネジメントコンソールからオブジェクトを選択して[アクション]-[S3 Selectを使用したクエリ]でフォーマットをJSONにして確認しました。
電話に出なかったときのCTR
ConnectedToSystemTimestampがnullになっています。
発信先電話番号も含まれるので取り扱い注意ですね。
発信した際のレスポンスにContactIdが含まれるので、ContactIdで検索できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
{ "AWSAccountId": "123456789012", "AWSContactTraceRecordFormatVersion": "2017-03-10", "Agent": null, "AgentConnectionAttempts": 0, "AnsweringMachineDetectionStatus": null, "Attributes": { "ReminderText": "電話で発信した音声テキスト" }, "Campaign": { "CampaignId": null }, "Channel": "VOICE", "ConnectedToSystemTimestamp": null, "ContactDetails": {}, "ContactId": "743c92b6-e84e-46da-a2d0-381ec0604307", "CustomerEndpoint": { "Address": "+819012345678", "Type": "TELEPHONE_NUMBER" }, "DisconnectReason": "CUSTOMER_DISCONNECT", "DisconnectTimestamp": "2022-04-28T09:14:13Z", "InitialContactId": null, "InitiationMethod": "API", "InitiationTimestamp": "2022-04-28T09:13:13Z", "InstanceARN": "arn:aws:connect:ap-northeast-1:123456789012:instance/1f483564-cc9f-4b1b-8fba-3e7412d81d3e", "LastUpdateTimestamp": "2022-04-28T09:15:20Z", "MediaStreams": [ { "Type": "AUDIO" } ], "NextContactId": null, "PreviousContactId": null, "Queue": null, "Recording": null, "Recordings": null, "References": [], "ScheduledTimestamp": null, "SystemEndpoint": { "Address": "+815098765432", "Type": "TELEPHONE_NUMBER" }, "TransferCompletedTimestamp": null, "TransferredToEndpoint": null, "VoiceIdResult": null } |
電話に出たときのCTR
ConnectedToSystemTimestampに日時値があります。
これで判定できそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
{ "AWSAccountId": "123456789012", "AWSContactTraceRecordFormatVersion": "2017-03-10", "Agent": null, "AgentConnectionAttempts": 0, "AnsweringMachineDetectionStatus": null, "Attributes": { "ReminderText": "電話で発信した音声テキスト" }, "Campaign": { "CampaignId": null }, "Channel": "VOICE", "ConnectedToSystemTimestamp": "2022-04-28T09:15:09Z", "ContactDetails": {}, "ContactId": "fa23008d-f42c-4293-8721-11ec1382d038", "CustomerEndpoint": { "Address": "+819012345678", "Type": "TELEPHONE_NUMBER" }, "DisconnectReason": "CONTACT_FLOW_DISCONNECT", "DisconnectTimestamp": "2022-04-28T09:15:12Z", "InitialContactId": null, "InitiationMethod": "API", "InitiationTimestamp": "2022-04-28T09:15:04Z", "InstanceARN": "arn:aws:connect:ap-northeast-1:123456789012:instance/1f483564-cc9f-4b1b-8fba-3e7412d81d3e", "LastUpdateTimestamp": "2022-04-28T09:16:18Z", "MediaStreams": [ { "Type": "AUDIO" } ], "NextContactId": null, "PreviousContactId": null, "Queue": null, "Recording": null, "Recordings": null, "References": [], "ScheduledTimestamp": null, "SystemEndpoint": { "Address": "+815098765432", "Type": "TELEPHONE_NUMBER" }, "TransferCompletedTimestamp": null, "TransferredToEndpoint": null, "VoiceIdResult": null } |
結論
今回の要件では、60秒のバッファは待てないので、EventBridgeでイベントルールを作って同じようにConnectedToSystemTimestampが含まれているかを確認してみます。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2023/01/9784815617929-1-407x596.jpg)
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2024/01/9784815625382-3-420x596.jpg)
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
![](https://www.shuwasystem.co.jp//images/book/637791.jpg)
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
![](https://book.mynavi.jp/files/topics/135344_ext_06_0.jpg?v=1673514682)
「AWSではじめるLinux入門ガイド」という本を書きました。
![](https://www.yamamanx.com/wp-content/uploads/2023/12/81Rp5O9We6L._SY522_.jpg)
![@yamamanx](https://www.yamamanx.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Windows EC2インスタンスでEBSとインスタンスストアを使用する
Amazon EBS基本のデモ(「AWS認定試験テキスト AWS認定 クラウドプ …
-
-
JAWS FESTA 2019 Sapporo 参加&当日スタッフ&企業サポーターで!
2019年のJAWS FESTA は札幌です! 今回もありがたいことに、所属して …
-
-
AWS Systems Managerパラメータストアで「Parameter name must be a fully qualified name.」
パラメータストアでパラメータ階層を作成しようとして、パラメータ名に例えば「wor …
-
-
AWS Client VPNの接続ログを確認しました
AWS Client VPNを設定しましたで証明書とかせっかく作ったので、いろい …
-
-
AWS Storage Gatewayボリュームゲートウェイを作成してWindowsから使用
ボリュームゲートウェイの作成 Storage Gateway作成メニューからボリ …
-
-
Amazon EC2のAMIイメージを自動取得して保持日数が過ぎたら削除
画像の保存をEC2に戻した事もあってEC2のバックアップの自動取得を勉強がてらや …
-
-
AWS LambdaでChrome HeadlessドライバをAWS Lambda Layersから使う
この記事はSelenium/Appium Advent Calendar 201 …
-
-
AWSアカウント内特定リージョン内のDynamoDBテーブルを全削除するLambda(Python)
やりたいこと タイトル通りですが、特定アカウントの特定リージョン内のDynamo …
-
-
Intel 82599 VF インターフェイスで拡張ネットワーキングが有効なEC2インスタンスで帯域幅を確認してみました
拡張ネットワーキングが有効なEC2インスタンスとそうではないインスタンスの2セッ …
-
-
Amazon EC2 Auto ScalingのVPCは変更できる
EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …