Amazon Connectのデータストリーミング機能でAgent Event StreamsをKinesis Streamに送る

2018.06.06

事業開発部の酒匂です。
先日、コンタクト履歴情報(Contact Trace Record)をKinesis firehose経由でS3に保存する手順について書いたので、今回はAgent Event StreamsをKinesis streamに送る手順について書いていきたいと思います。

Amazon Connectのデータストリーミング機能でコンタクト履歴情報をKinesis Firehose経由でS3に保存する

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

Amazon Connectインスタンスの設定メニューの「データストリーミング」を選択します。「データストリーミングの有効化」にチェックをつけます。

エージェントイベントの「新しいKinesis Streamを作成する」を選択します。今回の手順ではKinesis Streamを作成します。

ちなみにKinesis Streamはエージェントイベント用と問い合わせ追跡レコード用と共用することも可能ですが、別々に分けることが推奨されております。

Kinesisストリームの作成

下記の画面が表示されたら、kinesisストリームの作成を選択します。

Kinesisストリームの名前に任意の名前を入力します。

シャード数は、今回は検証用なので、1で作成することにします。入力したら、Kinesisストリームの作成を選択します。

作成されるまで、待ちます。

作成されました。

データストリーミングの設定(続き)

先ほど作成したkinesisストリームを設定し、「保存」を選択します。

動作確認

amazon connectにログインし、CCP上でエージェントのステータス変更などを行います。そのあとにKinesisストリームのデータを参照してみます。

Kinesisストリームの情報を参照します。

aws kinesis --profile amazon-connect describe-stream --stream-name amazon-connect-event-streams-test
{
    "StreamDescription": {
        "KeyId": null,
        "EncryptionType": "NONE",
        "StreamStatus": "ACTIVE",
        "StreamName": "amazon-connect-event-streams-test",
        "Shards": [
            {
                "ShardId": "shardId-000000000000",
                "HashKeyRange": {
                    "EndingHashKey": "340282366920938463463374607431768211455",
                    "StartingHashKey": "0"
                },
                "SequenceNumberRange": {
                    "StartingSequenceNumber": "49585140691622066774210269436656396257631218903742939138"
                }
            }
        ],
        "StreamARN": "arn:aws:kinesis:ap-southeast-2:************:stream/amazon-connect-event-streams-test",
        "EnhancedMonitoring": [
            {
                "ShardLevelMetrics": []
            }
        ],
        "StreamCreationTimestamp": 1528209540.0,
        "RetentionPeriodHours": 24
    }
}

下記のコマンドでデータの中身を確認します。

aws kinesis --profile amazon-connect get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name amazon-connect-event-streams-test | jq -r '.ShardIterator' |xargs aws kinesis --profile amazon-connect get-records --shard-iterator | jq -r '.Records[].Data' | base64 --decode | jq
{
  "AWSAccountId": "************",
  "AgentARN": "arn:aws:connect:ap-southeast-2:************:instance/e7ea8566-****-****-****-2ba1b1917d1a/agent/88849252-6525-450b-9c92-ab804080517a",
  "CurrentAgentSnapshot": {
    "AgentStatus": {
      "ARN": "arn:aws:connect:ap-southeast-2:************:instance/e7ea8566-****-****-****-2ba1b1917d1a/agent-state/f5c57fc6-39bb-4c06-993a-10348e6fe73a",
      "Name": "受付可",
      "StartTimestamp": "2018-06-04T15:41:28.028Z"
    },
    "Configuration": {
      "AgentHierarchyGroups": null,
      "FirstName": "太郎",
      "LastName": "田和",
      "RoutingProfile": {
        "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/routing-profile/a4600719-b42e-4ed2-9c36-08222b8a0ef6",
        "DefaultOutboundQueue": {
          "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
          "Name": "問い合わせ受付"
        },
        "InboundQueues": [
          {
            "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
            "Name": "問い合わせ受付"
          }
        ],
        "Name": "問い合わせチーム"
      },
      "Username": "*****001"
    },
    "Contacts": [
      {
        "Channel": "VOICE",
        "ConnectedToAgentTimestamp": "2018-06-04T15:43:39.039Z",
        "ContactId": "c8bf3cb0-7aa7-4ac9-8977-b740e5289a2c",
        "InitialContactId": "5f3929f9-d175-4453-ae29-4dd0f97b347b",
        "InitiationMethod": "CALLBACK",
        "Queue": {
          "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
          "Name": "問い合わせ受付"
        },
        "QueueTimestamp": "2018-06-04T15:40:27.027Z",
        "State": "ENDED",
        "StateStartTimestamp": "2018-06-04T15:43:42.042Z"
      }
    ]
  },
  "EventId": "74d86e68-5769-47eb-8272-2bd27952f9bf",
  "EventTimestamp": "2018-06-05T14:53:07.007Z",
  "EventType": "HEART_BEAT",
  "InstanceARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************",
  "PreviousAgentSnapshot": {
    "AgentStatus": {
      "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/agent-state/f5c57fc6-39bb-4c06-993a-10348e6fe73a",
      "Name": "受付可",
      "StartTimestamp": "2018-06-04T15:41:28.028Z"
    },
    "Configuration": {
      "AgentHierarchyGroups": null,
      "FirstName": "太郎",
      "LastName": "田和",
      "RoutingProfile": {
        "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/routing-profile/a4600719-b42e-4ed2-9c36-08222b8a0ef6",
        "DefaultOutboundQueue": {
          "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
          "Name": "問い合わせ受付"
        },
        "InboundQueues": [
          {
            "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
            "Name": "問い合わせ受付"
          }
        ],
        "Name": "問い合わせチーム"
      },
      "Username": "*****001"
    },
    "Contacts": [
      {
        "Channel": "VOICE",
        "ConnectedToAgentTimestamp": "2018-06-04T15:43:39.039Z",
        "ContactId": "c8bf3cb0-7aa7-4ac9-8977-b740e5289a2c",
        "InitialContactId": "5f3929f9-d175-4453-ae29-4dd0f97b347b",
        "InitiationMethod": "CALLBACK",
        "Queue": {
          "ARN": "arn:aws:connect:ap-southeast-2:************:instance/********-****-****-****-************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
          "Name": "問い合わせ受付"
        },
        "QueueTimestamp": "2018-06-04T15:40:27.027Z",
        "State": "ENDED",
        "StateStartTimestamp": "2018-06-04T15:43:42.042Z"
      }
    ]
  },
  "Version": "2017-10-01"
}

こんな感じでデータが登録されていることが分かりました。

さいごに

コンタクト履歴情報(Contact Trace Record)と同様に簡単な設定でデータ連携をすることができました。今後は実際にこれらのデータをどう活用していけるのか?ということについて書いてみたいと思います。