Amazon Connectのコンタクト完了イベントがAmazon EventBridgeに送信されるようになりました
はじめに
Amazon Connect から「コンタクト完了(Post Contact Completion)」イベントを Amazon EventBridge に送信できるようになりました。
これにより、エージェントの後処理(ACW:After Contact Work)が終わった瞬間など、コンタクトが“完全に終了したタイミング”をトリガーにしてワークフローを自動化できます。
例えば以下のような処理を自動化できます。
- エージェントが ACW を完了したらフォローアップチケットを作成
- 特定のコンタクトで ACW 時間が長かった場合に管理者へ通知
本記事では、EventBridge でメール通知を行う手順を例に、以下の流れで検証していきます。
- 送られてくるイベントの中身を確認
- EventBridge のイベントパターンでフィルタリング
検証環境の構築
まずは EventBridge にルールを作成して、コンタクト完了イベントを受け取る環境を構築します。
EventBridge ルールの設定
イベントパターンは以下のように設定します。今回のアップデートで追加された COMPLETED
イベントタイプを指定することで、コンタクト完了イベントのみをフィルタリングします。また、チャネルは音声(VOICE)に限定します。
{
"source": ["aws.connect"],
"detail-type": ["Amazon Connect Contact Event"],
"detail": {
"eventType": ["COMPLETED"],
"channel": ["VOICE"]
}
}
通知先(ターゲット)には、メール送信用の Amazon SNS トピックを指定しました。
イベント内容の検証
エージェント対応後のACW完了時
架電してエージェントが対応し、ACW(後処理)を完了させた際のイベントを確認します。ACW終了と同時に以下のイベントが EventBridge に送信され、メールで通知されました。
{
"version": "0",
"id": "ae0374eb-77c3-b64f-b1e1-b7c757050e68",
"detail-type": "Amazon Connect Contact Event",
"source": "aws.connect",
"account": "111111111111",
"time": "2025-05-01T23:55:05Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c",
"arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c/contact/3d1088c5-f95e-42f0-bcb1-5c2e187c0ebd"
],
"detail": {
"eventType": "COMPLETED",
"contactId": "3d1088c5-f95e-42f0-bcb1-5c2e187c0ebd",
"channel": "VOICE",
"instanceArn": "arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c",
"initiationMethod": "INBOUND",
"queueInfo": {
"queueArn": "arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c/queue/ba8d05d9-27b3-406e-b089-f5707174697e",
"enqueueTimestamp": "2025-05-01T23:54:46.079Z",
"queueType": "STANDARD"
},
"agentInfo": {
"agentArn": "arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c/agent/104b4727-a2ef-4f12-8daf-6068ce627667",
"connectedToAgentTimestamp": "2025-05-01T23:54:52.199Z",
"afterContactWorkDuration": 4,
"afterContactWorkStartTimestamp": "2025-05-01T23:54:58.388Z",
"afterContactWorkEndTimestamp": "2025-05-01T23:55:02.815Z"
},
"initiationTimestamp": "2025-05-01T23:54:35.532Z",
"connectedToSystemTimestamp": "2025-05-01T23:54:36.159Z",
"disconnectTimestamp": "2025-05-01T23:54:58.388Z",
"tags": {
"aws:connect:instanceId": "3ff2093d-af96-43fd-b038-3c07cdd7609c",
"aws:connect:systemEndpoint": "+8150xxxxxxxx"
},
"segmentAttributes": {
"connect:Subtype": { "valueString": "connect:Telephony" }
},
"contactLens": {
"conversationalAnalytics": {
"configuration": {
"enabled": true,
"channelConfiguration": { "analyticsModes": ["PostContact"] },
"languageLocale": "ja-JP",
"redactionConfiguration": { "behavior": "Disable", "policy": "None" }
}
}
},
"systemEndpoint": {
"type": "TELEPHONE_NUMBER",
"address": "+8150xxxxxxxx"
},
"contactDetails": {}
}
}
イベント内の agentInfo
セクションには、ACWに関する情報が含まれていました。
afterContactWorkStartTimestamp
: ACW開始時刻afterContactWorkEndTimestamp
: ACW終了時刻afterContactWorkDuration
: ACW所要時間(秒)
なお、今回のコンタクトの終了イベントは、コンタクト詳細のステータスとは関係ありません。
ACWが終了すると即メールが通知されましたが、その際、コンタクト詳細のステータスは進行中のままでした。
エージェント未対応の場合
エージェントが対応する前に顧客が切断した場合の(ACWが存在しない)イベントも確認しました。
IVR中に切断した場合、以下のようなイベントが発行されます。
{
"version": "0",
"id": "5fb65bbf-d4cb-2523-c2e3-7a95e2cc9213",
"detail-type": "Amazon Connect Contact Event",
"source": "aws.connect",
"account": "111111111111",
"time": "2025-05-02T00:02:28Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c",
"arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c/contact/3292e050-4c7e-481e-9489-76c390c263c3"
],
"detail": {
"eventType": "COMPLETED",
"contactId": "3292e050-4c7e-481e-9489-76c390c263c3",
"channel": "VOICE",
"instanceArn": "arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c",
"initiationMethod": "INBOUND",
"queueInfo": {
"queueArn": "arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c/queue/ba8d05d9-27b3-406e-b089-f5707174697e",
"enqueueTimestamp": "2025-05-02T00:02:22.642Z",
"queueType": "STANDARD"
},
"initiationTimestamp": "2025-05-02T00:02:13.905Z",
"connectedToSystemTimestamp": "2025-05-02T00:02:14.445Z",
"disconnectTimestamp": "2025-05-02T00:02:28.412Z",
"tags": {
"aws:connect:instanceId": "3ff2093d-af96-43fd-b038-3c07cdd7609c",
"aws:connect:systemEndpoint": "8150xxxxxxxx"
},
"segmentAttributes": {
"connect:Subtype": { "valueString": "connect:Telephony" }
},
"contactLens": {
"conversationalAnalytics": {
"configuration": {
"enabled": true,
"channelConfiguration": { "analyticsModes": ["PostContact"] },
"languageLocale": "ja-JP",
"redactionConfiguration": { "behavior": "Disable", "policy": "None" }
}
}
},
"systemEndpoint": {
"type": "TELEPHONE_NUMBER",
"address": "8150xxxxxxxx"
},
"contactDetails": {}
}
}
エージェント未対応の場合は、イベント内に agentInfo
セクションが存在しないことが特徴です。
この違いを利用して、ACW完了時のみやACWが存在しない場合に特化したイベント処理を実装できます。
イベントパターンをACW完了時だけに絞り込む
実際のユースケースでは、ACW完了時のみをトリガーにしたいことが多いでしょう。
そのような場合は、イベントパターンに agentInfo.afterContactWorkEndTimestamp
の存在チェックを追加することで、フィルタリングが可能です。
{
"source": ["aws.connect"],
"detail-type": ["Amazon Connect Contact Event"],
"detail": {
"eventType": ["COMPLETED"],
"channel": ["VOICE"]
"agentInfo": {
"afterContactWorkEndTimestamp": [{
"exists": true
}]
}
}
}
このパターンを使用することで、「エージェントが対応し、ACWを完了したコンタクト」のみを抽出できます。IVR中の切断やエージェント未対応のケースは自動的に除外されるため、ACW完了をトリガーとした自動化ワークフローに最適です。
注意点
Amazon Connectのコンタクトイベントは基本的にEventBridgeに送信されますが、配信はベストエフォート方式で行われます。
イベントは、ベストエフォートベースで出力されます。
https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/contact-events.html#subscribe-contact-events
稀に取りこぼしが発生するため、100% の確実性が求められるケースでは別の仕組み(例えば Amazon Kinesis Data Streams など)の利用も検討してください。
別の仕組みについては、以下のブログ記事を参考ください。