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

2018.06.02

事業開発部の酒匂です。
Amazon Connectのコンタクト履歴情報(マニュアル原文だと"Contact Trace Record(略してCTR)"、日本語版の管理画面だと"問い合わせ追跡レコード"と表現されております)をKinesis Firehose経由でS3に保存してみました。

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

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

問い合わせ追跡レコードの「Kinesis Firehose」を選択します。今回の手順ではKinesis Firehoseを作成します。

Kinesis Firehoseの作成、S3 Bucketの作成

Kinesis Firehoseの作成画面が表示されるので、「Create Delivery Stream」を選択します。

任意のDelivery Stream Nameを入力します。

今回はS3に保存するので、「Direct PUT or other sources」を選択します。

「Next」を選択します。

画面を下に移動します。

データ変換をしないので、「Disabled」を選択します。「Next」を選択します。

保存先がS3なので、「Amazon S3」を選択します。

保存先のS3 Bucketを作成するので、「Create New」を選択します。

Bucket Nameに任意の名前を入力します。リージョンを選択します。「Create S3 bucket」を選択します。

作成したS3 bucketが設定されることを確認し、「Next」を選択する。

今回は検証用に作成するため、設定値はデフォルトのままとします。

今回は検証用に作成するため、両方ともDisableにします。

エラーログは出るようにしておくため、「Enabled」にします。

IAM Roleも今回用に作成しますので、「Create new or choose」を選択します。

「新しいIAMロールの作成」のままにしておきます。

「許可」を選択します。

IAMロールが作成され、設定されていることを確認します。「Next」を選択します。

設定内容を確認し、「Create delivery stream」を選択します。

作成されるまで待ちます。「Successfully created delivery stream ・・・」と表示されたら完了です。

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

先ほど作成したkinesis firehoseを設定し、「保存」を選択します。

動作確認

コンタクト履歴データが作成されるように、電話を着信させ、応答します。少し間を置いた後にS3 Bucket上にファイルが作成されていることを確認します。

中身を開いてみると、以下のようにコンタクト情報情報が出力されております。

{
  "AWSAccountId": "************",
  "AWSContactTraceRecordFormatVersion": "2017-03-10",
  "Agent": {
    "ARN": "arn:aws:connect:ap-southeast-2:************:instance/************************************/agent/88849252-6525-450b-9c92-ab804080517a",
    "AfterContactWorkDuration": 3,
    "AfterContactWorkEndTimestamp": "2018-05-29T15:30:07Z",
    "AfterContactWorkStartTimestamp": "2018-05-29T15:30:03Z",
    "AgentInteractionDuration": 12,
    "ConnectedToAgentTimestamp": "2018-05-29T15:29:51Z",
    "CustomerHoldDuration": 0,
    "HierarchyGroups": null,
    "LongestHoldDuration": 0,
    "NumberOfHolds": 0,
    "RoutingProfile": {
      "ARN": "arn:aws:connect:ap-southeast-2:************:instance/************************************/routing-profile/a4600719-b42e-4ed2-9c36-08222b8a0ef6",
      "Name": "問い合わせチーム"
    },
    "Username": "*****001"
  },
  "AgentConnectionAttempts": 1,
  "Attributes": {},
  "Channel": "VOICE",
  "ConnectedToSystemTimestamp": "2018-05-29T15:29:44Z",
  "ContactId": "ee1d577a-d35e-434d-9273-505eb0b92bcd",
  "CustomerEndpoint": {
    "Address": "+8150********",
    "Type": "TELEPHONE_NUMBER"
  },
  "DisconnectTimestamp": "2018-05-29T15:30:03Z",
  "InitialContactId": null,
  "InitiationMethod": "INBOUND",
  "InitiationTimestamp": "2018-05-29T15:29:44Z",
  "InstanceARN": "arn:aws:connect:ap-southeast-2:************:instance/************************************",
  "LastUpdateTimestamp": "2018-05-29T15:31:14Z",
  "MediaStreams": [
    {
      "Type": "AUDIO"
    }
  ],
  "NextContactId": null,
  "PreviousContactId": null,
  "Queue": {
    "ARN": "arn:aws:connect:ap-southeast-2:************:instance/************************************/queue/49962424-ed87-4091-a2bc-652b76d7e0be",
    "DequeueTimestamp": "2018-05-29T15:29:51Z",
    "Duration": 5,
    "EnqueueTimestamp": "2018-05-29T15:29:45Z",
    "Name": "問い合わせ受付"
  },
  "Recording": {
    "DeletionReason": null,
    "Location": "connect-****************/connect/**********/CallRecordings/2018/05/29/ee1d577a-d35e-434d-9273-505eb0b92bcd_20180529T15:29_UTC.wav",
    "Status": "AVAILABLE",
    "Type": "AUDIO"
  },
  "SystemEndpoint": {
    "Address": "+8150********",
    "Type": "TELEPHONE_NUMBER"
  },
  "TransferCompletedTimestamp": null,
  "TransferredToEndpoint": null
}

さいごに

データ分析やレポート作成のためにコールセンターのデータを連携することがあると思いますが、Amazon Connectではデータ連携がしやすいと感じました。他にもAgent Streamデータも同様の手順で連携することができるため、今後書いていきたいと思います。