

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Chime SDK の通話分析プロセッサと出力先
<a name="call-analytics-processor-and-output-destinations"></a>

 各メディアインサイトパイプライン設定では、一意の要素を 1 回のみ指定できます。すべてのプロセッサとシンクは同じ AWS アカウントに存在し、呼び出すエンドポイントと同じ AWS リージョンに作成する必要があります。例えば、Amazon Chime SDK メディアパイプライン向けに `us-east-1` のエンドポイントを使用する場合、`us-west-2` リージョンから Kinesis Data Stream を渡すことはできません。

各送信先に関する情報については、各セクションを展開してください。

## Amazon Transcribe Call Analytics プロセッサの送信先
<a name="amazon-transcribe-call-analytics-processor"></a>

対応シンク: `KinesisDataStreamSink`

このプロセッサを Amazon Transcribe プロセッサと組み合わせることはできません。Amazon Transcribe Call Analytics の詳細については、「* Amazon Transcribe Developer Guide*」の「[Real-time call analytics](https://docs.aws.amazon.com/transcribe/latest/dg/call-analytics-streaming.html)」を参照してください。`AmazonTranscribeCallAnalyticsProcessorConfiguration` API コールで `PostCallAnalyticsSettings` を指定して[通話後分析](https://docs.aws.amazon.com/transcribe/latest/dg/tca-post-call.html)を有効にすると、メディアインサイトパイプラインが停止し、処理が終了したタイミングで、送信先に指定した Amazon S3 にアーティファクトが保存されます。

**注記**  
パイプラインを 35 秒以上一時停止した後に再開すると、通話後分析のアーティファクトは、異なるセッション ID を持つ個別のファイルとして Amazon S3 バケット内に保存されます。

通話後分析のアーティファクトは、分析 JSON ファイルと音声録音 (WAV または Opus ファイル) で構成されています。編集済み (コンテンツの編集を有効にした場合) および編集済みでない録音ファイルの Amazon S3 バケット URL は、メタデータセクションの `onetimeMetadata` の一部として、Amazon Transcribe Call Analytics の通話後分析セッションごとに 1 回 Kinesis Data Stream に送信されます。

Amazon Transcribe Call Analytics による通話分析では、Kinesis Video Streams から音声データの入力を取得します。
+ 対応メディアエンコーディング: PCM 符号付き 16 ビットリトルエンディアン音声。
+ 対応メディアサンプリングレート: 8,000 Hz～48,000 Hz

Amazon Transcribe Analytics プロセスの `StreamConfiguration` 入力:
+ ストリームごとに `KinesisVideoStreamArn` を指定する必要があります。
+ (オプション) KVS `FragmentNumber` により、指定したフラグメントの後のチャンクを使用して通話分析ジョブが開始されます。指定していない場合は、Kinesis Video Streams の最新のチャンクが使用されます。
+ `StreamChannelDefinition` により、スピーカーを定義します。Amazon Transcribe Call Analytics には 2 チャネルの音声が必要です。そのため、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html) API を呼び出すときに、どのスピーカーがどのチャネルにいるかを指定する必要があります。例えば、エージェントが最初に話す場合、`ChannelId` を `0` に設定して最初のチャネルを示し、`ParticipantRole` を `AGENT` に設定してエージェントがスピーカーであることを示します。

**注記**  
Voice Connector を使用して、Amazon Transcribe Call Analytics プロセッサで `MediaInsightsPipeline` を作成する場合、Voice Connector アカウントレッグの音声には `AGENT` を、PSTN レッグの音声には `ParticipantRole` の `CUSTOMER` を設定します。  
Voice Connector で SIPREC を使用する場合は、SIPREC メタデータによってそれらが決定されます。ほとんどの場合、辞書順に基づく値が最も小さいストリームラベルのスピーカーが `AGENT` と見なされます。

次の例は、1 つのデュアルチャネルオーディオストリームを使用する Kinesis Video Streams の入力を示しています。

```
"StreamChannelDefinition" : {
    "NumberOfChannels" : 2
    "ChannelDefinitions": [
        {
            "ChannelId": 0,
            "ParticipantRole": "AGENT"
        },
        {
            "ChannelId": 1,
            "ParticipantRole": "CUSTOMER"
        }
    ]
}
```

 対照的に、次の例は、2 つの異なる Kinesis Video Streams から取得した 2 つのモノラル入力を示しています。

```
KVS-1:
    "StreamChannelDefinition" : {
        "NumberOfChannels"  : 1
        "ChannelDefinitions": [
            {
                "ChannelId": 0,
               "ParticipantRole": "AGENT"
            }
        ]
    }
KVS-2:
    "StreamChannelDefinition" : {
        "NumberOfChannels"  : 1
        "ChannelDefinitions": [
            {
                "ChannelId": 1,
               "ParticipantRole": "CUSTOMER"
            }
        ]
    }
```

## Amazon Transcribe Call Analytics の出力
<a name="amazon-transcribe-call-analytics-output"></a>

 各 Amazon Transcribe レコードには、`UtteranceEvent` または `CategoryEvent` が含まれますが、両方は含まれません。`CategoryEvents` には、`detail-type` の `TranscribeCallAnalyticsCategoryEvent` があります。

次の例は、Amazon Transcribe に使用する 1 回限りのメタデータ出力形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "CallAnalyticsMetadata",
    "mediaInsightsPipelineId": "string",
    "metadata": "string" // JSON encoded string of the metadata object
}

// metadata object
{
    "voiceConnectorId": "string",
    "callId": "string",
    "transactionId": "string",
    "fromNumber": "string",
    "toNumber": "string",
    "direction": "string",
    "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object
}
 
// onetimeMetadata object
{
    "inviteHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair
    "siprecMetadata": "string", // siprec metadata in XML 
    "siprecMetadataJson": "string", // siprec metadata in JSON (converted from above XML) 
    
    // If PostcallSettings are enabled for Amazon Transcribe Call Analytics
    "s3RecordingUrl": "string", 
    "s3RecordingUrlRedacted": "string"
}
 
// inviteHeaders object
{
    "string": "string"
}
```

 次の例は、Amazon Transcribe Call Analytics の出力形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "TranscribeCallAnalytics",
    "mediaInsightsPipelineId": "string",
    "metadata": {
        "voiceConnectorId": "string",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "direction": "string"
    },
    "UtteranceEvent": {
        "UtteranceId": "string",
        "ParticipantRole": "string",
        "IsPartial": boolean,
        "BeginOffsetMillis": number,
        "EndOffsetMillis": number,
        "Transcript": "string",
        "Sentiment": "string",
        "Items": [{
            "Content": "string",
            "Confidence": number,
            "VocabularyFilterMatch": boolean,
            "Stable": boolean,
            "ItemType": "string",
            "BeginOffsetMillis": number,
            "EndOffsetMillis": number,
        }, ]
        "Entities": [{
            "Content": "string",
            "Confidence": number,
            "Category": "string", // Only PII is supported currently
            "Type": "string",
            "BeginOffset": number,
            "EndOffset": number,
        }, ],
        "IssuesDetected": [{
            "CharacterOffsets": {
                "Begin": number,
                "End": number
            }
        }]
    },
    "CategoryEvent": {
        "MatchedCategories": ["string"],
        "MatchedDetails": {
            "string": {
                "TimestampRanges": [{
                    "BeginOffsetMillis": number,
                    "EndOffsetMillis": number
                }]
            }
        }
    }
}
```

## Amazon Chime SDK Voice Connector ストリーミング更新メタデータ
<a name="cvc-stream-update-metadata"></a>

コール分析設定が Amazon Chime SDK Voice Connector に関連付けられている場合、[Voice Connector のストリーミング更新](https://docs.aws.amazon.com/chime-sdk/latest/ag/automating-chime-with-cloudwatch-events.html)があると、次の Voice Connector Update ペイロードが送信されます。

次の例は、Amazon Transcribe プロセッサと Transcribe Call Analytics プロセッサの更新メタデータ形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "CallAnalyticsMetadata",
    "callevent-type": "Update",
    "metadata": "string" // JSON encoded string of the metadata object
}

// metadata object
{
    "voiceConnectorId": "string",
    "callId": "string",
    "transactionId": "string",
    "fromNumber": "string",
    "toNumber": "string",
    "direction": "string",
    "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object
}
 
// onetimeMetadata object
{
    "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair
    "siprecMetadata": "string", // siprec metadata in XML 
    "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) 
}
 
// sipHeaders object
{
    "string": "string"
}
```

次の例は、Call Analytics Amazon S3 Recording のメタデータ更新形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "Recording",
    "callevent-type": "Update",
    "metadata": "string" // JSON encoded string of the metadata object
}

// metadata object
{
    "voiceConnectorId": "string",
    "callId": "string",
    "transactionId": "string",
    "fromNumber": "string",
    "toNumber": "string",
    "direction": "string",
    "oneTimeMetadata": "string" // JSON encoded in string of oneTimeMetadata object
}

// onetimeMetadata object
{
    "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair
    "siprecMetadata": "string", // siprec metadata in XML 
    "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) 
}

// sipHeaders object
{
    "string": "string"
}
```

## SIP コール記録メタデータ
<a name="sip-update-metadata"></a>

次の例は、Alice と Bob の 2 人の間の SIP 通話を記録するためのメタデータを示しています。両方の参加者が音声と動画を送受信します。わかりやすくするために、この例では SIP と SDP のスニペットのみを使用しており、SRC は各参加者のストリームをミックスせずに SRS に記録しています。

```
INVITE sip:recorder@example.com SIP/2.0
   Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9
   From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247
   To: <sip:recorder@example.com>
   Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a
   Session-ID: ab30317f1a784dc48ff824d0d3715d86
    ;remote=00000000000000000000000000000000
   CSeq: 101 INVITE
   Max-Forwards: 70
   Require: siprec
   Accept: application/sdp, application/rs-metadata,
   application/rs-metadata-request
   Contact: <sip:2000@src.example.com>;+sip.src
   Content-Type: multipart/mixed;boundary=boundary
   Content-Length: [length]

   Content-Type: application/SDP
   ...
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000
   a=label:96
   a=sendonly
   ...
   m=video 49174 RTP/AVPF 96
   a=rtpmap:96 H.264/90000
   a=label:97
   a=sendonly
   ...
   m=audio 51372 RTP/AVP 0
   a=rtpmap:0 PCMU/8000
   a=label:98
   a=sendonly
   ...
   m=video 49176 RTP/AVPF 96
   a=rtpmap:96 H.264/90000
   a=label:99
   a=sendonly
   ....

Content-Type: application/rs-metadata
Content-Disposition: recording-session

<?xml version="1.0" encoding="UTF-8"?>
<recording xmlns='urn:ietf:params:xml:ns:recording:1'>
  <datamode>complete</datamode>
        <group group_id="7+OTCyoxTmqmqyA/1weDAg==">
                <associate-time>2010-12-16T23:41:07Z</associate-time>
                <!-- Standardized extension -->
                <call-center xmlns='urn:ietf:params:xml:ns:callcenter'>
                        <supervisor>sip:alice@atlanta.com</supervisor>
                </call-center>
                <mydata xmlns='http://example.com/my'>
                        <structure>structure!</structure>
                        <whatever>structure</whatever>
                </mydata>
        </group>
        <session session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <sipSessionID>ab30317f1a784dc48ff824d0d3715d86;
                                      remote=47755a9de7794ba387653f2099600ef2</sipSessionID>
                <group-ref>7+OTCyoxTmqmqyA/1weDAg==
                </group-ref>
                <!-- Standardized extension -->
                <mydata xmlns='http://example.com/my'>
                        <structure>FOO!</structure>
                        <whatever>bar</whatever>
                </mydata>
        </session>
        <participant
              participant_id="srfBElmCRp2QB23b7Mpk0w==">
                <nameID aor="sip:alice@atlanta.com">
                        <naSRCme xml:lang="it">Alice</name>
                </nameID>
                <!-- Standardized extension -->
                <mydata xmlns='http://example.com/my'>
                        <structure>FOO!</structure>
                        <whatever>bar</whatever>
                </mydata>
        </participant>
        <participant
               participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
                <nameID aor="sip:bob@biloxy.com">
                        <name xml:lang="it">Bob</name>
                </nameID>
                <!-- Standardized extension -->
                <mydata xmlns='http://example.com/my'>
                        <structure>FOO!</structure>
                        <whatever>bar</whatever>
                </mydata>
        </participant>
        <stream stream_id="UAAMm5GRQKSCMVvLyl4rFw=="
               session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <label>96</label>
        </stream>
        <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw=="
               session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <label>97</label>
        </stream>
        <stream stream_id="8zc6e0lYTlWIINA6GR+3ag=="
               session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <label>98</label>
        </stream>
        <stream stream_id="EiXGlc+4TruqqoDaNE76ag=="
               session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <label>99</label>
        </stream>
        <sessionrecordingassoc session_id="hVpd7YQgRW2nD22h7q60JQ==">
            <associate-time>2010-12-16T23:41:07Z</associate-time>
        </sessionrecordingassoc>
        <participantsessionassoc
              participant_id="srfBElmCRp2QB23b7Mpk0w=="
              session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <associate-time>2010-12-16T23:41:07Z</associate-time>
        </participantsessionassoc>
        <participantsessionassoc
               participant_id="zSfPoSvdSDCmU3A3TRDxAw=="
               session_id="hVpd7YQgRW2nD22h7q60JQ==">
                <associate-time>2010-12-16T23:41:07Z</associate-time>
        </participantsessionassoc>
        <participantstreamassoc
              participant_id="srfBElmCRp2QB23b7Mpk0w==">
                <send>i1Pz3to5hGk8fuXl+PbwCw==</send>
                <send>UAAMm5GRQKSCMVvLyl4rFw==</send>
                <recv>8zc6e0lYTlWIINA6GR+3ag==</recv>
                <recv>EiXGlc+4TruqqoDaNE76ag==</recv>
        </participantstreamassoc>
        <participantstreamassoc
               participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
                <send>8zc6e0lYTlWIINA6GR+3ag==</send>
                <send>EiXGlc+4TruqqoDaNE76ag==</send>
                <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv>
                <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv>
        </participantstreamassoc>
</recording>
```

次の例は、ある通話参加者がもう片方を保留にしたときの更新されたメタデータを示しています。この場合、`participant_id srfBElmCRp2QB23b7Mpk0w==` は、メディアストリームのみを受信し、メディアは送信しないため、`send` XML 要素は省略されます。これとは対照的に、`participant_id zSfPoSvdSDCmU3A3TRDxAw==` は、他の参加者にはメディアを送信しますが、相手からはメディアを受信しないため、`recv` XML 要素は省略されます。

```
INVITE sip:recorder@example.com SIP/2.0
            Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9
      From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247
      To: <sip:recorder@example.com>
      Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a
      Session-ID: ab30317f1a784dc48ff824d0d3715d86
       ;remote=f81d4fae7dec11d0a76500a0c91e6bf6
      CSeq: 101 INVITE
      Max-Forwards: 70
      Require: siprec
      Accept: application/sdp, application/rs-metadata,
      application/rs-metadata-request
      Contact: <sip:2000@src.example.com>;+sip.src
      Content-Type: multipart/mixed;boundary=foobar
      Content-Length: [length]

      Content-Type: application/SDP
      ...
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=label:96
      a=sendonly
      ...
      m=video 49174 RTP/AVPF 96
      a=rtpmap:96 H.264/90000
      a=label:97
      a=sendonly
      ...
      m=audio 51372 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=label:98
      a=sendonly
      ...
      m=video 49176 RTP/AVPF 96
      a=rtpmap:96 H.264/90000
      a=label:99
      a=sendonly
      ....

   Content-Type: application/rs-metadata
   Content-Disposition: recording-session

      <?xml version="1.0" encoding="UTF-8"?>
        <recording xmlns='urn:ietf:params:xml:ns:recording:1'>
          <datamode>partial</datamode>
            <participantstreamassoc
             participant_id="srfBElmCRp2QB23b7Mpk0w==">
             <recv>8zc6e0lYTlWIINA6GR+3ag==</recv>
             <recv>EiXGlc+4TruqqoDaNE76ag==</recv>
            </participantstreamassoc>
            <participantstreamassoc
             participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
              <send>8zc6e0lYTlWIINA6GR+3ag==</send>
              <send>EiXGlc+4TruqqoDaNE76ag==</send>
             </participantstreamassoc>
           </recording>
```

次の例は、通話が再開されたときのメタデータの更新を示しています。これで、ペイロードには `send` と `recv` XML 要素が含まれるようになりました。

```
INVITE sip:recorder@example.com SIP/2.0
      Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9
      From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247
      To: <sip:recorder@example.com>
      Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a
      Session-ID: ab30317f1a784dc48ff824d0d3715d86
       ;remote=f81d4fae7dec11d0a76500a0c91e6bf6
      CSeq: 101 INVITE
      Max-Forwards: 70
      Require: siprec
      Accept: application/sdp, application/rs-metadata,
      application/rs-metadata-request
      Contact: <sip:2000@src.example.com>;+sip.src
      Content-Type: multipart/mixed;boundary=foobar
      Content-Length: [length]

      Content-Type: application/SDP
      ...
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=label:96
      a=sendonly
      ...
      m=video 49174 RTP/AVPF 96
      a=rtpmap:96 H.264/90000
      a=label:97
      a=sendonly
      ...
      m=audio 51372 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=label:98
      a=sendonly
      ...
      m=video 49176 RTP/AVPF 96
      a=rtpmap:96 H.264/90000
      a=label:99
      a=sendonly
      ....
    
   Content-Type: application/rs-metadata
   Content-Disposition: recording-session

      <?xml version="1.0" encoding="UTF-8"?>
        <recording xmlns='urn:ietf:params:xml:ns:recording:1'>
          <datamode>partial</datamode>
            <participantstreamassoc
             participant_id="srfBElmCRp2QB23b7Mpk0w==">
             <send>i1Pz3to5hGk8fuXl+PbwCw==</send>
             <send>UAAMm5GRQKSCMVvLyl4rFw==</send>
             <recv>8zc6e0lYTlWIINA6GR+3ag==</recv>
             <recv>EiXGlc+4TruqqoDaNE76ag==</recv>
            </participantstreamassoc>
            <participantstreamassoc
             participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
              <send>8zc6e0lYTlWIINA6GR+3ag==</send>
              <send>EiXGlc+4TruqqoDaNE76ag==</send>
              <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv>
             <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv>
             </participantstreamassoc>
           </recording>
```

## Amazon Transcribe プロセッサの送信先
<a name="amazon-transcribe-processors"></a>

対応シンク: `KinesisDataStreamSink`

このプロセッサを Amazon Transcribe Call Analytics と組み合わせることはできません。Amazon Transcribe への入力と出力の詳細については、「*Amazon Transcribe Developer Guide*」の「[Transcribe streaming audio](https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html)」を参照してください。

Amazon Transcribe による通話分析セッションでは、Kinesis Video Streams から音声データの入力を取得します。
+ 対応メディアエンコーディング: PCM 符号付き 16 ビットリトルエンディアン音声。
+ 対応 MediaSampleRate サンプリングレート: 8,000 Hz～48,000 Hz

 Amazon Transcribe プロセッサの `StreamConfiguration` 入力: 
+ ストリームごとに `KinesisVideoStreamArn` を指定する必要があります。
+ (オプション) KVS `FragmentNumber` により、指定したフラグメントの後のチャンクを使用して通話分析ジョブが開始されます。指定していない場合は、Kinesis Video Streams の利用可能な最新のチャンクが使用されます。
+ `StreamChannelDefinition` Amazon Transcribe は現在、2 つのチャネルの音声に対応しています。`NumberOfChannels` は、ランタイム `StreamChannelDefinition` で指定する必要があります。さらに、モノラル音声を 2 つの個別チャネルで送信する場合は、`ChannelId` を渡さなければなりません。トランスクリプトでは、チャネルに `ch_0` および `ch_1` というラベルが割り当てられます。次の例は、1 つのモノラル音声チャネルストリームに使用する KVS 入力を示しています。

```
"StreamChannelDefinition" : {"
    NumberOfChannels" : 1
}
```

 次の例は、2 つの異なるストリームの 2 つのモノラル音声入力に使用する KVS 入力を示しています。

```
KVS-1:
    "StreamChannelDefinition" : {
        "NumberOfChannels"  : 1
        "ChannelDefinitions": [
            {
                "ChannelId": 0
            }
        ]
    }
KVS-2:
    "StreamChannelDefinition" : {
        "NumberOfChannels"  : 1
        "ChannelDefinitions": [
            {
                "ChannelId": 1
            }
        ]
    }
```

**注記**  
Amazon Transcribe プロセッサを使用して `MediaInsightsPipeline` を作成する Voice Connector の場合、Voice Connector アカウントレッグの音声は `channel-0` に、PSTN レッグの音声は `channel-1` に割り当てられます。  
Voice Connector で SIPREC を使用する場合は、SIPREC メタデータによってそれらが決定されます。ほとんどの場合、辞書順に基づく値が最も小さいストリームラベルの音声が `channel-0` に割り当てられます。  
Amazon Transcribe および Amazon Transcribe Call Analytics プロセッサでは、2 つの Kinesis Video Streams を渡し、各ストリームにモノラル音声チャネルが含まれている場合、両方のチャネルが 1 つの音声ストリームにインターリーブされた後に、Transcribe または Transcribe Call Analytics のデータが処理されます。

## Amazon Transcribe の出力
<a name="amazon-transcribe-output"></a>

次の例は、Amazon Transcribe に使用する 1 回限りのメタデータ出力形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "CallAnalyticsMetadata",
    "mediaInsightsPipelineId": "string",
    "metadata": "string" // JSON encoded string of the metadata object
}

// metadata object
{
    "voiceConnectorId": "string",
    "callId": "string",
    "transactionId": "string",
    "fromNumber": "string",
    "toNumber": "string",
    "direction": "string",
    "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object
}
 
// onetimeMetadata object
{
    "inviteHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair
    "siprecMetadata": "string", // siprec metadata in XML 
    "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) 
}
 
// inviteHeaders object
{
    "string": "string"
}
```

次の例は、Amazon Transcribe の出力形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "Transcribe",
    "mediaInsightsPipelineId": "string",
    "metadata": {
        "voiceconnectorId": "string",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "direction": "string"
    }
    "TranscriptEvent": {
        "Transcript": {
            "Results": [{
                "Alternatives": [{
                    "Entities": [{
                        "Category": "string",
                        "Confidence": number,
                        "Content": "string",
                        "EndTime": number,
                        "StartTime": number,
                        "Type": "string"
                    }],
                    "Items": [{
                        "Confidence": number,
                        "Content": "string",
                        "EndTime": number,
                        "Speaker": "string",
                        "Stable": boolean,
                        "StartTime": number,
                        "Type": "string",
                        "VocabularyFilterMatch": boolean
                    }],
                    "Transcript": "string"
                }],
                "ChannelId": "string",
                "EndTime": number,
                "IsPartial": boolean,
                "LanguageCode": "string",
                "LanguageIdentification": [{
                    "LanguageCode": "string",
                    "Score": number
                }],
                "ResultId": "string",
                "StartTime": number
            }]
        }
    }
}
```

## 音声分析プロセッサの送信先
<a name="voice-analytics-processor"></a>

 対応シンク:`KinesisDataStreamSink`、`SqsQueueSink`、`SnsTopicSink`、`LambdaFunctionSink`。

 このプロセッサは、Amazon Transcribe Call Analytics プロセッサ、Amazon Transcribe プロセッサ、または通話録音と組み合わせることができます。音声分析プロセッサを呼び出すには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartSpeakerSearchTask.html) または [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartVoiceToneAnalysisTask.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_StartVoiceToneAnalysisTask.html) API を使用する必要があります。音声分析の使用方法の詳細については、「[Using Amazon Chime SDK voice analytics](https://docs.aws.amazon.com/chime-sdk/latest/dg/voice-analytics.html)」を参照してください。

## Kinesis Data Stream をシンクとして使用する
<a name="kinesis-data-stream-destination"></a>

通話分析によって生成される Kinesis Data Stream (KDS) レコードには、メディアパイプライン ID、詳細タイプ、メタデータ、プロセッサ固有のセクションが含まれます。Kinesis Data Stream からのデータを利用する方法については、「*Amazon Kinesis Streams Developer guide*」の「[Reading Data from Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html)」を参照してください。このシンクを使用して設定を行うには、指定されたストリームの `kinesis:DescribeStream` 権限が必要です。

 **メタデータ**

 生成した KDS レコードの `metadata` セクションには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html) API の呼び出し中に `CallAnalyticsRuntimeMetadata` で指定したキーと値のペアが含まれています。通話分析セッションを Voice Connector によって開始した場合、メタデータセクションには次のパラメータが自動的に入力されます。
+ `transactionId`
+ `fromNumber`
+ `toNumber`
+ `callId`
+ `voiceConnectorId`
+ `direction`

 上記のパラメータに加え、Voice Connector で開始した通話分析セッションのメタデータセクションには、次の内容を含む `oneTimeMetadata` フィールドが設定されます。
+ `inviteHeaders`
+ `siprecMetadata`

これは、セッションの開始時に 1 回だけ Kinesis Data Streams に発行され、`CallAnalyticsMetadata` の `detail-type` を持ちます。

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html) API の呼び出しごとに `MediaInsightsRuntimeMetadata` で一意の識別子を渡すことで、Kinesis Data Stream に配信する各レコードソースを一意に識別できます。

## Amazon S3 での通話録音
<a name="amazon-s3-call-recording"></a>

 通話分析の録音では、KVS ストリームから音声を読み取り、録音を音声ファイルにし、そのファイルを指定した Amazon S3 バケットにアップロードします。録音後、ファイルの場所と共に通話メタデータも KDS に送信します。データウェアハウスを有効にすると、通話メタデータ (SIPREC を使用している場合は、SIPREC メタデータも含まれる) は、クエリ可能な Parquet テーブルのセットとしてデータウェアハウスに配信されます。

他の通話分析プロセッサと同様に、最初にパイプラインの設定を行う必要があります。この設定を行うには、Amazon Chime SDK コンソールまたは CLI を使用します。次に、CLI を使用してパイプラインを作成します。コンソールを使用して録音設定を行う方法については、このセクションで前述した「[Amazon Chime SDK の通話分析を設定する](creating-ca-configuration.md)」で詳しく確認できます。録音ワークフローの使用方法については、このセクションで前述した「[Amazon Chime SDK の通話を記録するためのワークフローについて](recording-workflows.md)」で詳しく確認できます。

 **CLI を使用して設定を行うには**

 次のコマンドを実行します。

```
aws chime-sdk-media-pipeline create-media-insights-pipeline-configuration --cli-input-json file://configuration.json 
```

 次の例は、記録のみ有効にする設定用 JSON ファイルを示しています。

```
{
    "MediaInsightsPipelineConfigurationName": configuration_name,
    "ResourceAccessRoleArn": role_arn,
    "Elements": [
        {
            "KinesisDataStreamSinkConfiguration": {
                "InsightsTarget": KDS_arn //Where recording live metadata will be delivered.
            },
            "Type": "KinesisDataStreamSink"
        },
        {
            "S3RecordingSinkConfiguration": {
                "Destination": "arn:aws:s3:::kvs-recording-testing",
                "RecordingFileFormat": file_format // Specify "Opus" or "WAV" as the recording file format.
            },
            "Type": "S3RecordingSink"
        }         
    ]
}
```

次の点に注意してください。
+ Kinesis Video Streams による通話録音を有効にするには、PCM 符号付き 16 ビットリトルエンディアン音声を使用する必要があります。サンプルレートは 8 kHz でなければなりません。
+ Kinesis Video Streams のデータ保持期間を十分に長く設定してフラグメントを保持し、通話分析でそれらを利用できるようにする必要があります。
+ 通話録音を有効にする場合は、単独で使用する場合も、他のプロセッサと組み合わせて使用する場合も、録音用の Kinesis Video Streams ARN を 2 つ指定する必要があります。通話録音は 1 つのステレオ音声入力には対応していません。

## Amazon S3 に通話録音する場合のメタデータ出力
<a name="s3-recording-metadata-output"></a>

次の例は、Amazon S3 に録音する通話分析でのメタデータ出力形式を示しています。

```
{
    "time": "string", // ISO8601 format
    "service-type": "CallAnalytics",
    "detail-type": "Recording",   
    "mediaInsightsPipelineId": "string",
    "s3MediaObjectConsoleUrl": "string",
    "recordingDurationSeconds": "number",
    "metadata": "string" // JSON encoded string of the metadata object
}

// metadata object
{
    "voiceConnectorId": "string",
    "callId": "string",
    "transactionId": "string",
    "fromNumber": "string",
    "toNumber": "string",
    "direction": "string",
    "startTime": "string", // ISO8601 format
    "endTime": "string", // ISO8601 format
    "oneTimeMetadata": "string" // JSON encoded in string of oneTimeMetadata object
}

// onetimeMetadata object
{
    "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair
    "siprecMetadata": "string", // siprec metadata in XML 
    "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) 
}

// sipHeaders object
{
    "string": "string"
}
```

## 音声エンハンスメントを有効にする
<a name="voice-enhancement-sink"></a>

音声強化を有効にするには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipelineConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipelineConfiguration.html) API コールに `VoiceEnhancementSinkConfiguration` 要素を含めます。

一般的な要素の例を次に示します。

```
{
  "Type":"VoiceEnhancementSink",
  "VoiceEnhancementSinkConfiguration": {
       "Disabled": Boolean (string) // FALSE ==> Voice Enhancement will be performed
}
```

設定を更新するには、`VoiceEnhancementSinkConfiguration` 要素を [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaInsightsPipelineConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaInsightsPipelineConfiguration.html) API コールに追加します。これを行うと、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaInsightsPipelineConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_GetMediaInsightsPipelineConfiguration.html) API には `VoiceEnhancementSinkConfiguration` 要素が結果に含まれます。

このリクエスト例は、音声エンハンスメントと Amazon S3 への録音を有効にする方法を示しています。

```
POST /media-insights-pipeline-configurations HTTP/1.1
Content-type: application/json

{
   "MediaInsightsPipelineConfigurationName":"media_insights_configuration_name",
   "ResourceAccessRoleArn":"arn:aws:iam::account_id:role/resource_access_role",
   "Elements":[
      {
         "Type":"S3RecordingSink",
         "S3RecordingSinkConfiguration":{
            "Destination":"arn:aws:s3:::input_bucket_path",
            "RecordingFileFormat":"Wav"
         }
      },
      {
         "Type":"VoiceEnhancementSink",
         "VoiceEnhancementSinkConfiguration": {
            "disabled":"false"
         }
      }
   ],
   "ClientRequestToken":"client_request_token"
}
```

**注記**  
`VoiceEnhancementSink` 要素を使用するには、通話分析の設定で `S3RecordingSink` 要素を常に設定する必要があります。

# Amazon Chime SDK の文字起こしの機能と録音シンクを組み合わせる
<a name="combining-recording-transcription"></a>

Amazon Transcribe と Amazon Transcribe Call Analytics のプロセッサを Amazon S3 録音シンクと連携させることができます。Amazon Transcribe プロセッサに加え S3RecordingSinkConfiguration を渡すには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipelineConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipelineConfiguration.html) API を呼び出すか、コンソールを使用します。

Amazon S3 録音シンクと連携させた場合、Amazon Transcribe または Amazon Transcribe Call Analytics のプロセッサを使用できますが、両方を使用することはできません。これと同じ設定には、文字起こしプロセッサの有無にかかわらず、録音シンクの他に音声分析を追加できます。

**注記**  
前述のプロセッサのいずれでも、録音を有効にできます。ただし、Amazon Transcribe Call Analytics と Amazon S3 通話録音の両方を有効にする場合、2 つの Kinesis Video Streams を指定する必要があります。すると、録音ファイルが重複して配信されます。1 つは Amazon Transcribe Call Analytics から、もう 1 つは Amazon S3 通話録音からのファイルです。

次の点に注意してください。
+ 一意の `MediaInsightsPipelineConfigurationName` を使用する必要があります。
+ `ResourceAccessRoleArn` 詳細については、このガイドの「[Amazon Chime SDK で通話分析のリソースアクセスロールを使用する](call-analytics-resource-access-role.md)」を参照してください。
+ `Destination` 値には S3 パスの ARN を指定する必要があります。同じアカウントで所有している Amazon S3 バケットを指定する必要があります。
+ Transcribe と録音の指定がある設定を使用してパイプラインを作成する場合、一時停止と再開は Kinesis Data Stream で生成したインサイトにのみ表示されます。KVS ストリーム内のすべてのデータが記録され、Amazon S3 にアップロードされます。
+ 設定で、録音に加え、Amazon Transcribe または Transcribe Call Analytics (TCA) を指定すると、メディアインサイトパイプラインによって、文字起こしまたは Transcribe Call Analytics のインサイトがリアルタイムで生成されます。その後、通話が終了すると、Amazon S3 への録音が行われます。通話分析中に文字起こしサービスで障害が発生しても、S3 録音ジョブの実行は試行されます。Amazon S3 への録音は、文字起こし完了後に実行されるため、録音が失敗しても、文字起こしのインサイトは影響を受けません。

この例は、Amazon Transcribe プロセッサと Amazon S3 録音シンクを指定した設定を示しています。この例を使用すると、結果を部分的に安定化でき、出力のレイテンシーも抑えられますが、精度上の影響が出る可能性があります。詳細については、「*Amazon Transcribe Developer Guide*」の「[Partial-result stabilization](https://docs.aws.amazon.com/transcribe/latest/dg/streaming-partial-results.html#streaming-partial-result-stabilization)」を参照してください。

```
{
    "MediaInsightsPipelineConfigurationName": unique_configuration_name,
    "ResourceAccessRoleArn": role_arn,
    "Elements": [{
            "AmazonTranscribeProcessorConfiguration": {
                "ContentIdentificationType": "string",
                "ContentRedactionType": "string",
                "EnablePartialResultsStabilization": boolean, //Enables partial result stabilization. Can reduce latency. May impact accuracy. 
                "FilterPartialResults": boolean, //To control partial utterance events
                "LanguageCode": "string",
                "LanguageModelName": "string",
                "PartialResultsStability": "string",
                "PiiEntityTypes": "string",
                "ShowSpeakerLabel": boolean,
                "VocabularyFilterMethod": "string",
                "VocabularyFilterName": "string",
                "VocabularyName": "string"
            },
            "Type": "AmazonTranscribeProcessor"
        },
        {
            "KinesisDataStreamSinkConfiguration": {
                "InsightsTarget": KDS_arn //Where recording and insights live metadata will be delivered.
            },
            "Type": "KinesisDataStreamSink"
        },
        {
            "S3RecordingSinkConfiguration": {
                "Destination": S3_Arn,
                "RecordingFileFormat": file_format // Specify "Opus" or "WAV" as the recording file format.
            },
            "Type": "S3RecordingSink"
        }
    ]
}
```

# Amazon Chime SDK で Amazon EventBridge の通知を使用する
<a name="using-eventbridge-notifications"></a>

Amazon Chime SDK Call Analytics では、メディアインサイトパイプラインの状態が変化した場合や、通話分析のリアルタイムアラート条件が満たされた場合に、デフォルトの EventBridge バスにイベントを送信できます。メディアインサイトパイプラインのエラーステータスの更新では、リソースでの障害が非同期に発生した場合に通知を受けられるよう、EventBridge のターゲットを設定することをお勧めします。通話分析の通知には、aws.chime ソースに加え、さまざまな詳細タイプがあります。この点については、次のセクションで説明します。詳細については、[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)を参照してください。

**Topics**
+ [ステータスの更新](#status-updates)
+ [リアルタイムアラート](#realtime-alerts)

## ステータスの更新
<a name="status-updates"></a>

 メディアインサイトパイプラインでは、通話分析セッションが進み正常終了するか、エラーが発生すると、EventBridge 通知が送信されます。次の場合、「Media Insights State Change」という詳細タイプの EventBridge 通知が送信されます。
+ メディアインサイトパイプラインのステータスが変化した。
+ メディアインサイトパイプライン要素のステータスが変化した。
+ いずれかのパイプライン要素が停止した。
+ いずれかのパイプライン要素で障害が発生した。

詳細セクションには、次のフィールドが常に含まれています。
+ `version`
+ `mediaInsightsPipelineArn`
+ `eventType`

メディアインサイトパイプラインで分析プロセッサやデータシンクなどの要素を複数使用している場合、詳細セクションには `mediaInsightsPipelineElementStatuses` フィールドもあります。このフィールドは、パイプライン内の各要素のステータスを示しています。想定される各パイプライン要素のステータスを次に示します。
+ `NotStarted`
+ `InProgress`
+ `Stopped`
+ `Failed`

 詳細セクションには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipeline.html) API の呼び出し中に `MediaInsightsRuntimeMetadata` で指定したキーと値のペアも含まれています。通話分析セッションを Voice Connector によって開始した場合、メタデータセクションには次のパラメータが自動的に入力されます。
+ `transactionId`
+ `fromNumber`
+ `toNumber`
+ `callId`
+ `voiceConnectorId`
+ `direction`

 メディアインサイトパイプライン内に要素が 1 つしかない場合は、次のイベントタイプが示されることがあります。詳細については、各セクションを展開してください。

### Amazon Chime SDK メディアインサイトは稼働している
<a name="insights-in-progress"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": {
        "version": "0",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsInProgress",
        "version": "0",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string"
    }
}
```

### Amazon Chime SDK メディアインサイトは一時停止している
<a name="insights-paused"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": {
        "version": "0",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsPaused",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string"
    }
}
```

### Amazon Chime SDK メディアインサイトは停止している
<a name="insights-stoppped"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": {
        "version": "0",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsStopped",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string"
    }
}
```

### Amazon Chime SDK メディアインサイトに一時的な障害が発生している
<a name="insights-temp-failure"></a>

サービスに一時的な障害が発生し、再試行されることを示しています。ユーザーのアクションは必要ありません。

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": {
        "version": "0",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsTemporaryFailure",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string"
    }
}
```

### Amazon Chime SDK メディアインサイトに永続的な障害が発生している
<a name="insights-perm-failure"></a>

ユーザーのアクションが必要な障害を示しています。`failureReason` に基づいて、トラブルシューティングを行います。一般的な障害として、次の状況が挙げられます。
+ リソースアクセスロールの権限が不足している
+ リソースが見つからないか、削除されている
+ 分析を呼び出す AWS サービスからのスロットリングは、Amazon Transcribe や Amazon Kinesis など、ユーザーに代わって を呼び出します。
+ KVS ストリームのメディア形式に互換性がない

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": {
        "version": "0",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsPermanentFailure",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string",
        "failureReason": "string"              
    }
}
```

**注記**  
`failureReason` フィールドはオプションです。一般的な理由として `Access denied when assuming resource access role` が示されることがあります。

Amazon Chime SDK Voice Connector で開始した通話分析セッションでは、メディアインサイトパイプラインが作成されるか、作成の試行が失敗すると、次のイベントタイプが示される場合があります。詳細については、各セクションを展開してください。

### Amazon Chime SDK メディアインサイトが作成された
<a name="vc-pipeline-created"></a>

この例は、一般的な正常終了イベントを示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": 
    {
        "version": "0",
        "mediaInsightsPipelineConfigurationArn": "string",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsCreated",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string",
    }
}
```

### Amazon Chime SDK メディアインサイトの作成に失敗した
<a name="vc-pipeline-failed"></a>

この例は、一般的な障害イベントを示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights State Change",     
    "source": "aws.chime", 
    "account": number,
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "resources": [] 
    "detail": 
    {
        "version": "0",
        "mediaInsightsPipelineConfigurationArn": "string",
        "eventType": "chime:MediaInsightsCreateFailed", 
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string",
        "failureOrigin": "Voice Connector",
        "httpStatusCode": "string",
        "failureReason": "string"
    }
}
```

メディアインサイトパイプライン内に複数の要素がある場合は、次のイベントタイプが示されることがあります。この例は、`AmazonTranscribeProcessor` と `S3RecordingSink` を連携させた場合の通知を示しています。詳細については、各セクションを展開してください。

### AmazonTranscribeProcessor は稼働中だが、S3RecordingSink は起動していない
<a name="processor-running-sink-not-started"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsInProgress",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "InProgress",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "NotStarted",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string" 
    } 
}
```

### AmazonTranscribeProcessor が正常終了し、S3RecordingSink が稼働している
<a name="processor-success-sink-in-progress"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsInProgress",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "Stopped",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "InProgress",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string" 
    } 
}
```

### AmazonTranscribeProcessor は正常稼働できなかったが、S3RecordingSink は稼働している
<a name="processor-fail-sink-in-process"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsInProgress",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "Failed",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "InProgress",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string" 
    } 
}
```

### AmazonTranscribeProcessor は正常稼働できなかったが、S3RecordingSink は正常終了した
<a name="processor-fail-record-finish"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsPermanentFailure",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "Failed",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "Stopped",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string",
        "failureReason": "string" 
    } 
}
```

### AmazonTranscribeProcessor は正常終了したが、S3RecordingSink は処理に失敗した
<a name="processor-success-recording-fail"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsPermanentFailure",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "Stopped",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "Failed",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string",
        "failureReason": "string" 
    } 
}
```

### AmazonTranscribeProcessor が一時停止しており、S3RecordingSink が起動していない
<a name="processor-pause-recording-no-start"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsPaused",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "Paused",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "NotStarted",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string" 
    } 
}
```

### AmazonTranscribeProcessor に一時的な障害が発生しており、S3RecordingSink が起動していない
<a name="processor-temp-fail-recording-no-start"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsTemporaryFailure",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "TemporarilyFailed",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "NotStarted",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string" 
    } 
}
```

### AmazonTranscribeProcessor と S3RecordingSink が正常終了した
<a name="processor-sink-success"></a>

次の例は、一般的なイベント構造を示しています。

```
{
    "version": "0", 
    "id": "string",
    "detail-type": "Media Insights State Change", 
    "source": "aws.chime", 
    "account": number, 
    "region": "string",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail": {
        "version": "0", 
        "mediaInsightsPipelineArn": "string", 
        "eventType": "chime:MediaInsightsStopped",
        "mediaInsightsPipelineElementStatuses": [
            { 
                "type": "AmazonTranscribeProcessor", 
                "status": "Stopped",
                "updatedOn": 1686184070655             
            },
            { 
                "type": "S3RecordingSink", 
                "status": "Stopped",
                "updatedOn": 1686184070655 
            }
        ] 
        "callId": "string", 
        "transactionId": "string", 
        "fromNumber": "string", 
        "toNumber": "string", 
        "voiceConnectorId": "string", 
        "direction": "string" 
    } 
}
```

### S3RecordingSink が正常終了し、VoiceEnhancement が稼働している
<a name="voice-enhancement-sink-inprogress"></a>

次の例は、一般的なイベント構造を示しています。

```
{
  "version": "0",
  "id": "string",
  "detail-type": "Media Insights State Change",
  "source": "aws.chime",
  "account": number,
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "string",
  "detail": {
    "mediaInsightsPipelineArn": "string",
    "eventType": "chime:MediaInsightsInProgress",
    "version": "0",
    "mediaInsightsPipelineElementStatuses": [
      {
        "type": "VoiceEnhancementSink",
        "status": "InProgress",
        "updatedOn": 1686184070655
      },
      {
        "type": "S3RecordingSink",
        "status": "Stopped",
        "updatedOn": 1686184070655
      }
    ]
  }
}
```

### S3RecordingSink は正常終了したが、通話が 30 分を超えたため VoiceEnhancement は処理に失敗した
<a name="voice-enhancement-sink-fail-longerthan30minutes"></a>

次の例は、一般的なイベント構造を示しています。

```
{
  "version": "0",
  "id": "string",
  "detail-type": "Media Insights State Change",
  "source": "aws.chime",
  "account": number,
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "string",
  "detail": {
    "mediaInsightsPipelineArn": "string",
    "eventType": "chime:MediaInsightsStopped",
    "version": "0",
    "mediaInsightsPipelineElementStatuses": [
      {
        "type": "VoiceEnhancement",
        "status": "NotSupported",
        "updatedOn": 1686184070655,
        "statusDetail": "Unsupported recording length"
      },
      {
        "type": "S3RecordingSink",
        "status": "Stopped",
        "updatedOn": 1686184070655
      }
    ]
  }
}
```

### S3RecordingSink は正常終了したが、通話が 30 分未満だったため VoiceEnhancement は処理に失敗した
<a name="voice-enhancement-sink-fail-lessthan30minutes"></a>

次の例は、一般的なイベント構造を示しています。

```
{
  "version": "0",
  "id": "string",
  "detail-type": "Media Insights State Change",
  "source": "aws.chime",
  "account": number,
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "string",
  "detail": {
    "mediaInsightsPipelineArn": "string",
    "eventType": "chime:MediaInsightsPermanentFailure",
    "version": "0",
    "mediaInsightsPipelineElementStatuses": [
      {
        "type": "VoiceEnhancement",
        "status": "Failed",
        "updatedOn": 1686184070655
      },
      {
        "type": "S3RecordingSink",
        "status": "Stopped",
        "updatedOn": 1686184070655
      }
    ]
  }
}
```

## リアルタイムアラート
<a name="realtime-alerts"></a>

**注記**  
Amazon Transcribe と Amazon Transcribe Call Analytics のプロセッサのみがリアルタイムアラートに対応しています。

 Amazon Chime SDK 通話分析では、分析セッション中にプロセッサを介して、リアルタイムアラートの送信ルールを設定できます。これにより、`Media Insights Rules Matched` の詳細タイプを示すアラートが Amazon EventBridge に送信されます。EventBridge は、Lambda、Amazon SQS、Amazon SNS などのダウンストリームサービスにも対応しているため、エンドユーザーへの通知をトリガーしたり、他のカスタムビジネスロジックを開始したりできます。

 リアルタイムアラートは、`MediaInsightsPipelineConfiguration` の `RealTimeAlertConfiguration` フィールドの一部として設定します。Amazon Chime SDK コンソールを使用してフィールドを設定するか、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipelineConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_CreateMediaInsightsPipelineConfiguration.html) または [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaInsightsPipelineConfiguration.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_media-pipelines-chime_UpdateMediaInsightsPipelineConfiguration.html) API を呼び出すことができます。

 次の例は、API を使用して、リアルタイムアラートを設定または更新する方法を示しています。

```
{
    "MediaInsightsPipelineConfigurationName": "config_name",
    "ResourceAccessRoleArn": "arn:aws:iam::account_id:role/role_name",
    "RealTimeAlertConfiguration": {
        "Disabled": false,
        "Rules": [{
                "Type": "KeywordMatch",
                "KeywordMatchConfiguration": {
                    "RuleName": "rule_name_1",
                    "Keywords": [
                        "hello",
                        "thank you"
                    ],
                    "Negate": false
                }
            },
            {
                "Type": "Sentiment",
                "RuleName": "rule_name_2",
                "SentimentType": "NEGATIVE",
                "TimePeriod": 60
            },
            {
                "Type": "IssueDetection",
                "RuleName": "rule_name_3"
            }
        ]
    },
    "Elements": [{
            "Type": "AmazonTranscribeCallAnalyticsProcessor",
            "AmazonTranscribeCallAnalyticsProcessorConfiguration": {
                "LanguageCode": "en-US"
            }
        },
        {
            "Type": "KinesisDataStreamSink",
            "KinesisDataStreamSinkConfiguration": {
                "InsightsTarget": "arn:aws:kinesis:us-east-1:account_id:stream/stream_name"
            }
        }
    ]
}
```

リアルタイムアラート設定の各ルールは、個別にトリガーされます。複数のルール条件が同時に満たされると、複数の EventBridge 通知が届く場合があります。アラートルールリストの作成では、次のルールタイプを選択できます。

キーワードの一致  
指定したキーワードまたはフレーズのセットが発話イベントまたは文字起こしイベントで一致したときにアラートが送信されます。次の場合にイベントが発行されるよう、アラートを設定できます。  
+ `Negate` を `false` に設定しており、指定したキーワードが発話された。
+ `Negate` を `true` に設定しており、指定したいずれのキーワードも通話中に発話されなかった。
Amazon Transcribe と Amazon Transcribe Analytics は、このルールタイプに対応しています。

センチメント分析  
特定のセンチメントタイプが、ローリングウィンドウの期間継続した場合にアラートが発行されます。Transcribe Call Analytics のみ、このルールに対応しています。

問題検出  
発話イベントで、特定の問題が検出されるとアラートが発行されます。Transcribe Call Analytics のみ、このルールタイプに対応しています。

次の例は、`KeywordMatch` ルールのリアルタイムアラートイベントを示しています。

```
{
    "version": "0",
    "id": "string",
    "detail-type": "Media Insights Rules Matched", 
    "source": "aws.chime", 
    "account": number,
    "region": "us-east-1",
    "time": "yyyy-mm-ddThh:mm:ssZ", 
    "resources": [],
    "detail":   {
        "version": "0",
        "sourceMetadata": {}
        "ruleName": "string"
        "utteranceId": "string",
        "beginTimestamp": "yyyy-mm-ddThh:mm:ssZ",
    }
}
```

EventBridge フィールドの中には、次のように、一致するルールタイプに固有のフィールドもあります。

**キーワード一致のフィールド**  
`utteranceId`: 一致するキーワードが含まれる文字起こし文の ID (Amazon Transcribe Call Analytics を使用する場合)。発話されたキーワードの一致のみが対象。  
`resultId`: 一致するキーワードが含まれる文字起こし文の ID (Amazon Transcribe を使用する場合)。発話されたキーワードの一致のみが対象。  
`beginTimestamp`: 一致したキーワードが含まれる文字起こし文の開始時間。発話されたキーワードの一致のみが対象。

**センチメント分析のフィールド**  
`beginTimestamp`: 一致したセンチメントのローリングウィンドウが開始した時間。  
`endTimestamp`: 一致したセンチメントのローリングウィンドウが終了した時間。

# Amazon Chime SDK データレイクを作成する
<a name="ca-data-lake"></a>

Amazon Chime SDK 通話分析データレイクを使用すると、機械学習を活用したインサイトやメタデータを Amazon Kinesis Data Streams から Amazon S3 バケットにストリーミングできます。例えば、データレイクを使用して、記録用の URL にアクセスすることが可能です。データレイクを作成するには、Amazon Chime SDK コンソールから、または を使用してプログラムで AWS CloudFormation テンプレートのセットをデプロイします AWS CLI。データレイクを使用すると、Amazon Athena の AWS Glue データテーブルを参照することで、通話メタデータと音声分析データをクエリできます。

**Topics**
+ [前提条件](#data-lake-prereqs)
+ [データレイクの用語と概念](#data-lake-terms)
+ [複数のデータレイクを作成する](#creating-multiple-data-lakes)
+ [リージョン別に見たデータレイクの可用性](#data-lake-regions)
+ [データレイクのアーキテクチャ](#data-lake-architecture)
+ [データレイクをセットアップする](#data-lake-setup)

## 前提条件
<a name="data-lake-prereqs"></a>

Amazon Chime SDK データレイクを作成するには、次の機能が必要です。
+ 1 つの Amazon Kinesis Data Streams。詳細については、「*Amazon Kinesis Streams Developer Guide*」の「[Creating a Stream via the AWS Management Console](https://docs.aws.amazon.com/streams/latest/dev/how-do-i-create-a-stream.html)」を参照してください。
+ S3 バケット 詳細については、「Amazon S3 ユーザーガイド」の「[最初の S3 バケットを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)」を参照してください。

## データレイクの用語と概念
<a name="data-lake-terms"></a>

データレイクの仕組みを理解するには、次の用語と概念を参考にしてください。

**Amazon Kinesis Data Firehose**  
抽出、変換、ロード (ETL) サービス。これにより、ストリーミングデータをデータレイク、データストア、分析サービスに、確実にキャプチャ、変換、配信することが可能です。詳細については、「Amazon Kinesis Data Firehose とは何ですか?」を参照してください。

**Amazon Athena**  
Amazon Athena は、標準 SQL を使用して Amazon S3 のデータを分析できるインタラクティブなクエリサービスです。Athena は、サーバーレスであるため、インフラストラクチャを管理する必要がなく、料金は実行したクエリに対してのみ発生します。Athena を利用するには、Amazon S3 内のデータを指定してスキーマを定義し、標準 SQL クエリを使用します。また、ワークグループでユーザーをグループ化し、クエリの実行時にユーザーがアクセスできるリソースを制御することもできます。ワークグループを使用すると、クエリの同時実行を管理して、さまざまなユーザーグループやワークロードによるクエリ実行に優先順位を付けることが可能です。

**Glue Data Catalog**  
Amazon Athena のテーブルとデータベースには、基礎となるソースデータのスキーマを詳細に示すメタデータが格納されています。また、Athena では、データセットごとにテーブルが存在する必要があります。このテーブル内のメタデータによって Amazon S3 バケットの場所が判断されます。また、列名、データ型、テーブル名などのデータ構造も指定されます。データベースで保持されるのは、データセットのメタデータとスキーマ情報のみです。

## 複数のデータレイクを作成する
<a name="creating-multiple-data-lakes"></a>

一意の Glue データベース名を指定して通話のインサイトを保存する場所を指定することで、複数のデータレイクを作成できます。特定の AWS アカウントでは、複数の通話分析設定があり、それぞれに対応するデータレイクがあります。つまり、特定のユースケースにデータ分離を適用することが可能です。例えば、保持ポリシーや、データの保存方法に関するアクセスポリシーなどをカスタマイズできます。インサイト、録音データ、メタデータへのアクセスに、さまざまなセキュリティポリシーを適用することも可能です。

## リージョン別に見たデータレイクの可用性
<a name="data-lake-regions"></a>

Amazon Chime SDK データレイクは、次のリージョンで利用できます。


| リージョン | Glue テーブル | Quick | 
| --- | --- | --- | 
| us–east–1 | 利用可能 | 使用可能 | 
| us-west-2 | 利用可能 | 使用可能 | 
| eu-central-1 | 利用可能 | 使用可能 | 

## データレイクのアーキテクチャ
<a name="data-lake-architecture"></a>

データレイクのアーキテクチャを次の図に示します。図の数字は、次の各説明の番号に対応しています。

![\[データレイクを使用するプログラムフローの図。\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/images/call-analytics-data-lake-architecture.png)


この図では、 AWS コンソールを使用してメディアインサイトパイプライン設定ワークフローから CloudFormation テンプレートをデプロイすると、次のデータが Amazon S3 バケットに流れます。

1. Amazon Chime SDK 通話分析によって、顧客の Kinesis Data Stream に対しリアルタイムデータのストリーミングが開始されます。

1. Amazon Kinesis Firehose では、128 MB まで蓄積される、または 60 秒が経過するまで (どちらか早い方が適用される)、このリアルタイムデータをバッファリングします。次の Firehose では、Glue データカタログの `amazon_chime_sdk_call_analytics_firehose_schema` を使用して、データを圧縮し、JSON レコードを Parquet 形式のファイルに変換します。

1. Parquet ファイルは、パーティション形式で Amazon S3 バケットに格納されます。

1. リアルタイムデータの他に、Amazon Transcribe Call Analytics の通話後概要データ .wav ファイル (設定で指定している場合、編集済みと未編集のファイル) と、通話録音の .wav ファイルも Amazon S3 バケットに送信されます。

1. Amazon Athena と標準 SQL を使用して、Amazon S3 バケット内のデータをクエリすることができます。

1. CloudFormation テンプレートでは、Glue データカタログも作成して、この通話後概要データを Athena 経由でクエリすることができます。

1. Amazon S3 バケット上のすべてのデータは、Quick を使用して視覚化することもできます。QuickSight では、Amazon Athena を使用して Amazon S3 バケットとの接続を確立します。

Amazon Athena テーブルでは、次の機能を使用して、クエリのパフォーマンスを最適化します。

**データのパーティション化**  
パーティショニングを行うと、テーブルが複数部分に分割され、日付、国、地域などの列の値に基づいて関連データがまとめられます。パーティションは仮想の列として機能します。この場合、テーブル作成時に CloudFormation テンプレートによってパーティションを定義します。これにより、クエリごとにスキャンされるデータの量が減少し、パフォーマンスが向上します。パーティションでフィルタリングして、クエリの際にスキャンするデータの量を制限することもできます。詳細については、「Amazon Athena ユーザーガイド」の「[Athena でのデータのパーティション化](https://docs.aws.amazon.com/athena/latest/ug/partitions.html)」を参照してください。  
次の例は、2023 年 1 月 1 日の日付を指定したパーティション構造を示しています。  

1. 

   ```
   s3://example-bucket/amazon_chime_sdk_data_lake
                               /serviceType=CallAnalytics/detailType={DETAIL_TYPE}/year=2023
                               /month=01/day=01/example-file.parquet
   ```

1. `DETAIL_TYPE` には次のいずれかを指定します。

   1. `CallAnalyticsMetadata`

   1. `TranscribeCallAnalytics`

   1. `TranscribeCallAnalyticsCategoryEvents`

   1. `Transcribe`

   1. `Recording`

   1. `VoiceAnalyticsStatus`

   1. `SpeakerSearchStatus`

   1. `VoiceToneAnalysisStatus`

**列指向データストアの生成を最適化する**  
Apache Parquet では、列単位の圧縮、データ型に基づく圧縮、述語プッシュダウンを使用してデータを保存します。圧縮率を上げたり、データブロックをスキップしたりすると、Amazon S3 バケットから読み取るバイト数が減少するため、クエリのパフォーマンスが向上すると共に、コストが削減されます。こうした最適化のために、Amazon Kinesis Data Firehose では、JSON からパーケットへのデータ変換が有効になっています。

**パーティション射影**  
Athena のこの機能では、パーティションを日ごとに自動作成することで、日付ベースのクエリのパフォーマンスを向上させます。

## データレイクをセットアップする
<a name="data-lake-setup"></a>

Amazon Chime SDK コンソールを使用して、次の手順を完了します。

1. Amazon Chime SDK コンソール ([https://console.aws.amazon.com/chime-sdk/home](https://console.aws.amazon.com/chime-sdk/home)) を起動し、ナビゲーションペインの **[通話分析]** で **[設定]** を選択します。

1. [ステップ 1] を完了して **[次へ]** を選択し、[ステップ 2] ページの **[音声分析]** チェックボックスを選択します。

1. **[出力の詳細]** で **[履歴による分析を行うためのデータウェアハウス]** チェックボックスを選択し、**[CloudFormation スタックをデプロイ]** リンクを選択します。

   CloudFormation コンソールの **[スタックのクイック作成]** ページに画面が切り替わります。

1. スタックの名前を入力し、次のパラメータを入力します。

   1. `DataLakeType` — **[通話分析のデータレイクを作成]** を選択します。

   1. `KinesisDataStreamName` — 対象のストリームを選択します。通話分析ストリーミングに使用するストリームを指定する必要があります。

   1. `S3BucketURI` — Amazon S3 バケットを選択します。URI にはプレフィックス `s3://bucket-name` が必要です。

   1. `GlueDatabaseName` — 一意の AWS Glue データベース名を選択します。 AWS アカウント内の既存のデータベースは再利用できません。

1. 確認のチェックボックスを選択し、**[データレイクを作成]** を選択します。データレイクの作成には、10 分かかります。

### を使用したデータレイクのセットアップ AWS CLI
<a name="data-lake-setup-using-cli"></a>

を使用して AWS CLI 、CloudFormation の create スタックを呼び出すアクセス許可を持つロールを作成します。次の手順に従って IAM ロールを作成しセットアップします。詳細については、「AWS CloudFormation ユーザーガイド」の「[スタックの作成](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html)」を参照してください。

1. *AmazonChimeSdkCallAnalytics-Datalake-Provisioning-Role* ロールを作成して信頼ポリシーをそれにアタッチし、CloudFormation にそのロールを持たせることを許可します。

   1. 次のテンプレートを使用して IAM 信頼ポリシーを作成し、そのファイルを .json 形式で保存します。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "cloudformation.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {}
              }
          ]
      }
      ```

------

   1. **aws iam create-role** コマンドを実行し、信頼ポリシーをパラメータとして渡します。

      ```
                                          aws iam create-role \
          --role-name AmazonChimeSdkCallAnalytics-Datalake-Provisioning-Role
          --assume-role-policy-document file://role-trust-policy.json
      ```

   1. レスポンスで返ったロール ARN を書き留めておきます。ロール ARN は次の手順で必要になります。

1. CloudFormation スタックの作成権限を持つポリシーを作成します。

   1. 次のテンプレートを使用して IAM ポリシーを作成し、そのファイルを .json 形式で保存します。create-policy を呼び出すときに、このファイルが必要となります。

------
#### [ JSON ]

****  

      ```
      {  
          "Version":"2012-10-17",		 	 	   
          "Statement": [  
              {  
                  "Sid": "DeployCloudFormationStack",  
                  "Effect": "Allow",  
                  "Action": [  
                      "cloudformation:CreateStack"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. **aws iam create-policy** を実行し、スタック作成のポリシーをパラメータとして渡します。

      ```
                                      aws iam create-policy --policy-name testCreateStackPolicy 
      --policy-document file://create-cloudformation-stack-policy.json
      ```

   1. レスポンスで返ったロール ARN を書き留めておきます。ロール ARN は次の手順で必要になります。

1. **aws iam attach-role-policy** ポリシーをロールにアタッチします。

   ```
                               aws iam attach-role-policy --role-name {Role name created above}
   --policy-arn {Policy ARN created above}
   ```

1. CloudFormation スタックを作成し、次に示す必要なパラメータを入力します: **aws cloudformation create-stack**。

   ParameterValue を使用して、各 ParameterKey のパラメータ値を指定します。

   ```
                               aws cloudformation create-stack  --capabilities CAPABILITY_NAMED_IAM 
   --stack-name testDeploymentStack 
   --template-url https://chime-sdk-assets.s3.amazonaws.com/public_templates/AmazonChimeSDKDataLake.yaml 
   --parameters  ParameterKey=S3BucketURI,ParameterValue={S3 URI}
   ParameterKey=DataLakeType,ParameterValue="Create call analytics datalake" 
   ParameterKey=KinesisDataStreamName,ParameterValue={Name of Kinesis Data Stream}
   --role-arn {Role ARN created above}
   ```

#### データレイクのセットアップによって作成されるリソース
<a name="cf-resources"></a>

データレイク作成によって作成されるリソースを次の表に示します。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/ca-data-lake.html)

# Amazon Chime SDK のクイックダッシュボードの設定
<a name="quicksight-setup-setup"></a>

データレイクを設定したら、データを視覚化する事前定義されたメトリクスを使用してクイックダッシュボードを設定できます。利用可能なダッシュボードを次に示します。
+ **Transcribe Call Analytics と音声分析**。このメトリクスを使用すると、スピーカーごとのトランスクリプト、検出された問題、結果、エンティティ検出、音声プロファイル ID の一致について、大まかな視覚化と詳細な視覚化を行えます。
+ **Transcribe と音声分析**。このメトリクスを使用すると、スピーカーごとのトランスクリプト、語彙の一致、ボイストーン、音声プロファイル ID の一致について、大まかな視覚化と詳細な視覚化を行えます。

以下のトピックでは、クイックアカウントをまだ持っていない場合は設定する方法と、ダッシュボードを設定する方法について説明します。

**Topics**
+ [QuickSight アカウントを作成する](#create-quicksight-account)
+ [QuickSight アカウントを設定する](#configure-qs-acct)
+ [QuickSight ダッシュボードを作成する](#create-qs-dashboard)

## QuickSight アカウントを作成する
<a name="create-quicksight-account"></a>

このセクションのステップでは、クイックアカウントを作成する方法について説明します。アカウントがある場合は、この手順をスキップして [QuickSight ダッシュボードを作成する](#create-qs-dashboard) に進んでください。

QuickSight アカウントの作成では、次の機能を使用できます。
+ Amazon CloudFormation テンプレート。
+ Amazon Chime SDK コンソール。

### 前提条件
<a name="qs-account-prereqs"></a>

アカウントの作成前に、次の情報を収集します。
+ 通話分析に使用する Amazon S3 バケットの名前。
+ 通知用のメールアドレス。QuickSight 通知は、このアドレスに配信されます。

### CloudFormation テンプレートを使用してアカウントを作成する
<a name="account-by-cft"></a>

次の手順では、Amazon CloudFormation テンプレートをデプロイしてクイックアカウントを作成する方法について説明します。このプロセスでは、Enterprise アカウントのみ、サブスクライブします。料金の詳細については、[「クイック料金](https://aws.amazon.com/quicksight/pricing/)表」を参照してください。

**テンプレートをデプロイするには**

1.  AWS コンソールを起動し、AWS アカウントにログインします。

1. 次の URL をブラウザのアドレスバーに貼り付けます。表示どおりに地域を入力したことを確認してください。

   `https://region.console.aws.amazon.com/cloudformation/home?region=region#/stacks/quickcreate?templateURL=https://chime-sdk-assets.s3.amazonaws.com/public_templates/AmazonChimeSDKQuickSightSubscription.yaml`.

1. **[スタックのクイック作成]** ページで、次のように入力します。

   1. **[スタック名]** に、アカウントの名前を入力します。

   1. **[QuickSightNotificationEmail]** に、先ほど収集したメールアドレスを入力します。

   1. **QuickSightSubscriptionForDataVisualization** で、Create **new AWS QuickSight アカウント**を選択します。

   1. **[S3BucketName]** に Amazon S3 バケットの名前を入力します。

   1. **[AWS CloudFormation によって IAM リソースが作成される場合があることを承認します]** チェックボックスを選択します。

1. **[スタックの作成]** を選択してください。

   スタックの作成には約 10 分かかります。

1. ビルドが完了したら、**「クイックに移動**」を選択し、E メールアドレスを入力してアカウントにサインインします。

### コンソールを使用してアカウントを作成する
<a name="account-by-console"></a>

次の手順では、Amazon Chime SDK コンソールを使用してクイックアカウントを作成する方法について説明します。ここでは、エンタープライズ版またはエンタープライズ版 \$1 Q のアカウントを使用する必要があります。

**コンソールを使用するには**

1. [https://console.aws.amazon.com/chime-sdk/home](https://console.aws.amazon.com/chime-sdk/home) で Amazon Chime SDK コンソールを起動して「**QuickSight**」を検索し、検索結果で **[QuickSight]** を選択します。  
![\[Quick にリンクする検索結果。\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/images/quicksightsetup-1.png)

1. [**Sign up for QuickSight (QuickSight にサインアップする)**] を選択します。

1. **[エンタープライズ版]** または **[エンタープライズ版 \$1 Q]** を選択し、**[次へ]** を選択します。

1. 氏名、電話番号、先ほど収集したメールアドレスを入力して、**[次へ]** を選択します。

1. 以下の操作を実行します。

   1. **[認証方法]** で、オプションを選択します。
**注記**  
フェデレーションユーザーを使用するオプションの選択には、適切な IAM アクセス許可が必要です。詳細については、「 [クイックユーザーガイド」の「クイックサブスクリプションにサインアップ](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html)する」を参照してください。 **

   1. **[QuickSight リージョン]** で、リージョンを選択します。

   1. **[アカウント情報]** に、アカウントの名前と、先ほど収集したメールアドレスを入力します。

   1. **[QuickSight の AWS のサービスへのアクセス]** で、デフォルトのロールを使用するか、**[既存のロールを使用]** を選択してリストからロールを選択します。

   1. (オプション) 必要に応じて、**[これらのリソースへのアクセスと自動検出を許可]** で、追加のリソースを選択します。

   1. 完了したら、**[完了]** を選択します。

   1. ビルドが完了したら、Go **to Quick **を選択し、E メールアドレスを入力してアカウントにサインインします。

## QuickSight アカウントを設定する
<a name="configure-qs-acct"></a>

QuickSight アカウントにログインしたら、セキュリティを設定して、セットアッププロセスで作成したグループに自分を追加する必要があります。

**セキュリティを設定するには**

1. 右上にあるプロファイルアイコンを選択し、表示されたメニューから **[QuickSight の管理]** を選択します。  
![\[[QuickSight の管理] コマンドのあるメニューを示す画像。\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. ナビゲーションペインで、**[セキュリティとアクセス権限]** を選択します。

1. ** AWS サービスへの QuickSight アクセス**で、**管理**を選択し、次のサービスが選択されていることを確認します。
   + Amazon Redshift
   + Amazon RDS
   + Amazon S3
   + Amazon Athena
   +  IAM

1. **[Amazon S3 バケットを選択]** リンクを選択します。

1. Amazon S3 バケットの横にあるチェックボックスを選択し、**[Athena Workgroup の書き込みアクセス許可]** 列の右側にあるチェックボックスを選択します。

1. [**Finish**] を選択してください。

1. **[保存]** を選択します。

**自分をグループに追加するには**

1. ナビゲーションペインで、**[グループの管理]** を選択し、名前に **[管理者]** が含まれるグループを選択します。例: *S3BucketName*–**[管理者]**。

1. **[ユーザーの追加]** を選択し、表示されているボックスにメールエイリアスを入力します。

   自分の名前が次のように表示されます: **[管理者 – ]** 自分のエイリアス。

1. **[Add]** (追加) を選択します。

## QuickSight ダッシュボードを作成する
<a name="create-qs-dashboard"></a>

データレイクを作成したら、QuickSight ダッシュボードを作成して、データを視覚化できます。ダッシュボードの作成には、Amazon CloudFormation テンプレートまたは Amazon Chime SDK コンソールを使用できます。次の手順は、その 2 つの方法を示しています。

**テンプレートを使用するには**

1. Amazon CloudFormation コンソールを起動します。

1. 次のリンクをブラウザのアドレスバーに貼り付けます。`https://region.console.aws.amazon.com/cloudformation/home?region=region#/stacks/quickcreate?templateURL=https://chime-sdk-assets.s3.amazonaws.com/public_templates/AmazonChimeSDKQuickSightDashboards.yaml`

1. **[スタックのクイック作成]** ページの **[スタック名]** に、アカウントの名前を入力します。

1. **[ActiveQuickSightAccount]** で **[True]** を選択します。

1. **[QuicksightDashboardSelection]** で、**[通話分析 — Transcribe Call Analytics および音声分析ダッシュボード]** または **[通話分析 — Transcribe および音声分析ダッシュボード]** を選択します。

1. **[Amazon S3BucketName]** に、Amazon S3 バケットの URI を入力します。

1. **[GlueDatabaseName]** に、QuickSight ダッシュボードをデプロイする Glue データベースを入力します。

1. **[AWS CloudFormation によって IAM リソースが作成される場合があることを承認します]** チェックボックスを選択した後に、**[スタックの作成]** を選択します。

**QuickSight ダッシュボードを手動で設定するには**

1. 自分の QuickSight アカウントに移動します。

1. 右上にあるプロファイルアイコンを選択し、**[QuickSight の管理]** を選択します。  
![\[QuickSight アカウントダイアログボックスと [QuickSight の管理] コマンドを示す画像。\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. ナビゲーションペインで **[グループの管理]** を選択し、セットアッププロセスで作成したグループを選択します。

1. **[ユーザーの追加]** を選択してメールアドレスを入力し、**[追加]** を選択します。

   ページのデプロイには 10 分かかります。

1. Amazon Chime SDK コンソールから QuickSight アカウントにログインし、ダッシュボードを利用します。