Amazon Connectのコンタクト完了イベントがAmazon EventBridgeに送信されるようになりました

Amazon Connectのコンタクト完了イベントがAmazon EventBridgeに送信されるようになりました

Clock Icon2025.05.02

はじめに

Amazon Connect から「コンタクト完了(Post Contact Completion)」イベントを Amazon EventBridge に送信できるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/05/amazon-connect-publishes-post-contact-completion-events-contact-event-stream/

https://docs.aws.amazon.com/connect/latest/adminguide/contact-events.html

これにより、エージェントの後処理(ACW:After Contact Work)が終わった瞬間など、コンタクトが“完全に終了したタイミング”をトリガーにしてワークフローを自動化できます。

例えば以下のような処理を自動化できます。

  • エージェントが ACW を完了したらフォローアップチケットを作成
  • 特定のコンタクトで ACW 時間が長かった場合に管理者へ通知

本記事では、EventBridge でメール通知を行う手順を例に、以下の流れで検証していきます。

  1. 送られてくるイベントの中身を確認
  2. EventBridge のイベントパターンでフィルタリング

検証環境の構築

まずは EventBridge にルールを作成して、コンタクト完了イベントを受け取る環境を構築します。

EventBridge ルールの設定

イベントパターンは以下のように設定します。今回のアップデートで追加された COMPLETED イベントタイプを指定することで、コンタクト完了イベントのみをフィルタリングします。また、チャネルは音声(VOICE)に限定します。

{
  "source": ["aws.connect"],
  "detail-type": ["Amazon Connect Contact Event"],
  "detail": {
    "eventType": ["COMPLETED"],
    "channel": ["VOICE"]
  }
}

EventBridgeルール設定画面

通知先(ターゲット)には、メール送信用の Amazon SNS トピックを指定しました。

EventBridgeターゲット設定画面

イベント内容の検証

エージェント対応後の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が終了すると即メールが通知されましたが、その際、コンタクト詳細のステータスは進行中のままでした。

cm-hirai-screenshot 2025-05-02 8.56.01

エージェント未対応の場合

エージェントが対応する前に顧客が切断した場合の(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 など)の利用も検討してください。

別の仕組みについては、以下のブログ記事を参考ください。

https://dev.classmethod.jp/articles/amazon-eventbridge-not-triggering-connect-events/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.