

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Chime SDK 的呼叫分析处理器和输出目的地
<a name="call-analytics-processor-and-output-destinations"></a>

 对于每个媒体见解管道配置，您只能指定一次唯一元素。所有处理器和接收器必须位于同一个 AWS 账户中，并且您必须在与您调用的终端节点相同的 AWS 区域中创建它们。例如，如果您使用 Amazon Chime SDK 媒体管道的 `us-east-1` 终端节点，则无法传递来自 `us-west-2` 区域的 Kinesis Data Stream。

展开每个部分，了解有关每个目的地的信息。

## Amazon Transcribe 通话分析功能处理器目的地
<a name="amazon-transcribe-call-analytics-processor"></a>

支持的接收器：`KinesisDataStreamSink`。

您不能将此处理器与 Amazon Transcribe 处理器结合使用。有关 Amazon Transcribe 呼叫分析的更多信息，请参阅《Amazon Transcribe 开发者指南》**中的[实时通话分析](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 秒然后恢复管道，则会在 Amazon S3 存储桶中使用不同的会话在单独的文件 IDs 中生成调用后工件。

通话后构件包括分析 JSON 文件和录音 WAV 或 Opus 文件。作为元数据章节中 `onetimeMetadata` 的一部分，对于每个 Amazon Transcribe 通话分析功能通话后会话，已编辑（如果您启用内容编辑）和未编辑录音文件的 Amazon S3 存储桶 URL 都会发送到 Kinesis Data Streams 一次。

使用 Amazon Transcribe 通话分析功能进行呼叫分析采用 Kinesis 视频流中的音频数据输入。
+ 支持的媒体编码：PCM 签名的 16 位小端序音频。
+ 支持的媒体采样率：介于 8,000Hz 和 48,000Hz 之间。

Amazon Transcribe 分析流程的 `StreamConfiguration` 输入：
+ 必须为每个流指定 `KinesisVideoStreamArn`。
+ （可选）KVS `FragmentNumber` 使用指定片段之后的数据块启动呼叫分析作业。如果未提供，则它将使用 Kinesis 视频流中的最新片段。
+ `StreamChannelDefinition` 定义了发言人。Amazon Transcribe 通话分析功能需要双声道音频。当您调用 [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 通话分析功能处理器的 `MediaInsightsPipeline` 时，Voice Connector 账户分支音频是 `AGENT`，PSTN 分支音频是用于 `ParticipantRole` 的 `CUSTOMER`。  
对于 Voice Connector SIPREC，我们依赖于 SIPREC 元数据。在大多数情况下，认为 `AGENT` 是词典值最低的流标签。

以下示例介绍了一个双声道音频流的 Kinesis 视频流输入。

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

 相比之下，以下示例介绍了来自两个不同的 Kinesis 视频流的两个单声道输入。

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

## Amazon Transcribe 通话分析功能输出
<a name="amazon-transcribe-call-analytics-output"></a>

 每条 Amazon Transcribe 记录都包含 `UtteranceEvent` 或 `CategoryEvent`，但不会两者兼而有之。`CategoryEvents` 具有 `TranscribeCallAnalyticsCategoryEvent` 的 `detail-type`。

以下示例介绍了 Amazon Transcribe 的一次性元数据输出格式。

```
{
    "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 通话分析功能输出格式。

```
{
    "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 更新有效负载。

以下示例显示了 Amazon Transcribe 处理器和 Transcribe 通话分析处理器的更新元数据格式。

```
{
    "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"
}
```

以下示例显示了通话分析 Amazon S3 录音的更新元数据格式。

```
{
    "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 两个人之间的 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 通话分析功能结合使用。有关 Amazon Transcribe 的输入和输出的更多信息，请参阅《Amazon Transcribe 开发者指南》**中的[转录流式传输音频](https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html)。

Amazon Transcribe 的呼叫分析会话采用 Kinesis 视频流中的音频数据输入。
+ 支持 MediaEncoding：PCM 签名的 16 位小端音频。
+ 支持的 MediaSampleRate 采样率：介于 8,000 Hz 和 48,000 Hz 之间。

 Amazon Transcribe 处理器的 `StreamConfiguration` 输入：
+ 必须为每个流指定 `KinesisVideoStreamArn`。
+ （可选）KVS `FragmentNumber`：使用特定片段之后的数据块启动呼叫分析作业。如果未提供，它将使用 Kinesis 视频流中最新的可用区块。
+ `StreamChannelDefinition` Amazon Transcribe 目前支持两个频道的音频。您必须在运行时系统 `StreamChannelDefinition` 中指定 `NumberOfChannels`。此外，如果您在两个不同的频道中发送单声道音频，则必须通过 `ChannelId`。在您的转录中，频道被分配了标签 `ch_0` 和 `ch_1`。以下示例显示了一个单声道音频频道流的 KVS 输入。

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

 以下示例显示了两个不同流中两个单声道音频输入的 KVS 输入。

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

**注意**  
对于 Voice Connector 使用 Amazon Transcribe 处理器创建的 `MediaInsightsPipeline`，Voice Connector 账户分支音频分配给 `channel-0`，PSTN 分支音频分配给 `channel-1`。  
对于 Voice Connector SIPREC，我们依赖于 SIPREC 元数据。在大多数情况下，会将词典值最低的流标签分配给 `channel-0`。  
对于 Amazon Transcribe 和 Amazon Transcribe 通话分析功能处理器，如果您传递两个 Kinesis 视频流，并且每个流都包含一个单声道音频频道，则在处理 Transcribe 或 Transcribe 呼叫分析数据之前，我们会将两个频道交错成一个音频流。

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

以下示例介绍了适用于 Amazon Transcribe 的一次性元数据输出格式。

```
{
    "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 通话分析功能处理器、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) APIs 来调用语音分析处理器。有关使用语音分析的更多信息，请参阅[使用 Amazon Chime SDK 语音分析](https://docs.aws.amazon.com/chime-sdk/latest/dg/voice-analytics.html)。

## 将 Kinesis Data Streams 用作接收器
<a name="kinesis-data-stream-destination"></a>

呼叫分析生成的 Kinesis Data Streams (KDS) 记录包括媒体管道 ID、详细信息类型、元数据和处理器特定部分。有关使用来自 Kinesis Data Streams 的数据的更多信息，请参阅《Amazon Kinesis Streams 开发者指南》**中的[从 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`

这仅在会话开始时一次性发布到 Kinesis Data Streams，并且具有 `CallAnalyticsMetadata` 的 `detail-type`。

您可以在 `MediaInsightsRuntimeMetadata` 中为每个 [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 调用传递唯一标识符，这样您就可以对传送到 Kinesis Data Streams 的每条记录来源进行唯一性标识。

## 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 视频流 ARNs 进行录音。通话录音不支持单个立体声音频输入。

## 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 通话分析功能处理器与 Amazon S3 录音接收器结合使用。除了 Amazon RecordingSinkConfiguration Transcribe 处理器之外，生成器还可以通过 [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 调用或使用控制台传递 S3。

与 Amazon S3 录音接收器配合使用，您可以使用 Amazon Transcribe 或 Amazon Transcribe 通话分析功能处理器，但不能两者兼而有之。除了带或不带转录处理器的录音接收器外，您还可以在相同的配置中添加语音分析。

**注意**  
您可以使用上面列出的任何处理器启用录制。但是，如果您同时启用 Amazon Transcribe 通话分析功能和 Amazon S3 通话录音，您必须提供两个 Kinesis 视频流，并且您将收到重复的录音文件，一个来自 Amazon Transcribe 通话分析功能，另一个来自 Amazon S3 通话录音。

请记住以下事项：
+ 您必须使用唯一的 `MediaInsightsPipelineConfigurationName`。
+ 有关 `ResourceAccessRoleArn` 的更多信息，请参阅本指南中的 [针对 Amazon Chime SDK 使用通话分析资源访问角色](call-analytics-resource-access-role.md)。
+ `Destination` 值必须是 S3 路径 ARN。Amazon S3 存储桶必须由同一账户拥有。
+ 如果您使用带有 Transcribe 和录制功能的配置来创建管道，则暂停和恢复仅显示在 Kinesis Data Streams 生成的见解中。KVS 流中的所有数据都被记录下来并上传到 Amazon S3。
+ 如果配置除了录音之外还使用 Amazon 转录或转录呼叫分析 (TCA)，则媒体见解管道会实时提供转录或转录呼叫分析见解，然后在通话结束时提供 Amazon S3 录音。如果转录服务在呼叫分析期间失败，S3 录音作业仍会尝试运行。相反，Amazon S3 录制失败不会影响转录见解，因为它是在转录完成后运行的。

此示例显示了使用 Amazon Transcribe 处理器和 Amazon S3 录音接收器的配置。该示例还启用了部分结果稳定功能，这可以减少输出延迟，但可能会影响准确性。有关更多信息，请参阅《Amazon Transcribe 开发者指南》**中的[部分结果稳定功能](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"
        }
    ]
}
```

# 为亚马逊 Chime 软件开发工具包使用亚马逊 EventBridge 通知
<a name="using-eventbridge-notifications"></a>

Amazon Chime SDK 呼叫分析支持在媒体见解渠道的状态发生变化或呼叫分析实时警报条件满足时，向默认 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 通知，要么成功结束，要么遇到错误。在以下情况下，您会收到一条包含 “媒体见解状态变更” 详细信息的 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`

 每当媒体见解管道包含单个元素时，就会出现以下事件类型。展开每个部分以了解更多信息。

### 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"
    }
}
```

当媒体见解管道包含多个元素时，可能会出现以下事件类型。示例通知针对与 `S3RecordingSink` 组合使用的 `AmazonTranscribeProcessor`。展开每个部分以了解更多信息。

### AmazonTranscribeProcessor 正在进行且 S3 RecordingSink 尚未启动
<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 已成功且 S3 RecordingSink 正在进行中
<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 已失败且 S3 RecordingSink 正在进行中
<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 已失败且 S3 RecordingSink 已成功
<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 已成功且 S3 RecordingSink 失败
<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 已暂停且 S3 RecordingSink 尚未启动
<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 已暂时失败且 S3 RecordingSink 尚未启动
<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 然后 S3 RecordingSink 成功了
<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" 
    } 
}
```

### S3 RecordingSink 成功且正在 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
      }
    ]
  }
}
```

### 由于呼叫时间超过 30 分钟，S3 RecordingSink 成功 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
      }
    ]
  }
}
```

### 由于呼叫时间少于 30 分钟，S3 RecordingSink 成功 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 通话分析功能处理器支持实时提醒。

 Amazon Chime SDK 呼叫分析允许开发者设置规则，以便在分析会话期间通过处理器发送实时警报。提醒将以详细类型发送到亚马逊 EventBridge `Media Insights Rules Matched`。 EventBridge 支持与 Lambda、Amazon SQS 和 Amazon SNS 等下游服务集成，以触发终端用户的通知或启动其他自定义业务逻辑。

 针对 `MediaInsightsPipelineConfiguration` 将实时警报设置为 `RealTimeAlertConfiguration` 字段的一部分。您可以使用 Amazon Chime 软件开发工具包控制台来配置该字段，也可以调用或。[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) APIs

 此示例说明如何通过 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 分析支持这种规则类型。

情绪分析  
当特定情绪类型持续一段滚动窗口期时发出警报。只有 Transcribe 呼叫分析支持此规则。

问题检测  
在语音事件中检测到问题时发出警报。只有 Transcribe 呼叫分析支持此规则类型。

以下示例介绍了一个 `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`：如果您使用 Amazon Transcribe 通话分析功能，则为包含匹配关键字的转录 ID。仅适用于口语关键词匹配。  
`resultId`：如果您使用 Amazon Transcribe，则为包含匹配关键字的转录 ID。仅适用于口语关键词匹配。  
`beginTimestamp`：包含匹配关键字的转录开始时间。仅适用于口语关键词匹配。

**情感分析字段**  
`beginTimestamp`：匹配情绪的滚动窗口的开始时间。  
`endTimestamp`：匹配情绪的滚动窗口的结束时间。

# 创建 Amazon Chime SDK 数据湖
<a name="ca-data-lake"></a>

Amazon Chime SDK 呼叫分析数据湖允许您将基于机器学习的见解和来自 Amazon Kinesis Data Streams 的任何元数据流传输到您的 Amazon S3 存储桶。例如，使用数据湖 URLs 访问录音。要创建数据湖，您可以从 Amazon Chime 软件开发工具包控制台部署一组 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 数据湖，您必须具备以下物品：
+ Amazon Kinesis Data Streams。有关更多信息，请参阅《Amazon Kinesis 流开发者指南》**中的[通过 AWS 管理控制台创建流](https://docs.aws.amazon.com/streams/latest/dev/how-do-i-create-a-stream.html)。
+ 一个 S3 存储桶。有关更多信息，请参阅《Amazon S3 用户指南》**中的[创建第一个 Amazon 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 数据目录**  
在 Amazon Athena 中，表和数据库包含详细说明底层源数据架构的元数据。每个数据集都必须在 Athena 中有一个对应的表。表中的元数据将 Amazon S3 存储桶的位置告知 Athena。元数据还指定数据结构，例如列名、数据类型和表名。数据库仅保存数据集的元数据和架构信息。

## 创建多个数据湖
<a name="creating-multiple-data-lakes"></a>

通过提供唯一的 Glue 数据库名称来指定呼叫见解的存储位置，可以创建多个数据湖。对于给定 AWS 账户，可以有多种呼叫分析配置，每种配置都有相应的数据湖。这意味着可以将数据分离应用于某些用例，例如自定义保留策略和数据存储方式的访问策略。可以采用不同的安全策略来访问见解、记录和元数据。

## 数据湖区域可用性
<a name="data-lake-regions"></a>

Amazon Chime SDK 数据湖在以下区域中推出。


| Region | Glue 表 | Quick | 
| --- | --- | --- | 
| us-east-1 | 可用 | 可用 | 
| us-west-2 | 可用 | 可用 | 
| eu-central-1 | 可用 | 可用 | 

## 数据湖架构
<a name="data-lake-architecture"></a>

下图显示的是数据湖的架构。绘图中的数字对应于下面的编号文本。

![\[该程序流经数据湖。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/call-analytics-data-lake-architecture.png)


在图中，使用 AWS 控制台从媒体见解管道配置设置工作流程部署 CloudFormation模板后，以下数据将流向 Amazon S3 存储桶：

1. Amazon Chime SDK 呼叫分析将开始将实时数据流式传输到客户的 Kinesis Data Streams。

1. Amazon Kinesis Firehose 会缓冲这些实时数据，直到其累积 128MB，或时间达到 60 秒，以先到者为准。然后，Firehose 使用 Glue 数据目录中的 `amazon_chime_sdk_call_analytics_firehose_schema` 来压缩数据，并将 JSON 记录转换为 Parquet 文件。

1. Parquet 文件以分区格式存放在您的 Amazon S3 存储桶中。

1. 除了实时数据外，通话后的 Amazon Transcribe 通话分析功能摘要 .wav 文件（如果在配置中指定，则经过编辑和未编辑）和通话录音 .wav 文件也将发送到您的 Amazon S3 存储桶。

1. 您可以使用 Amazon Athena 和标准 SQL 来查询 Amazon S3 存储桶中的数据。

1. 该 CloudFormation 模板还创建了一个 Glue 数据目录，用于通过 Athena 查询此通话后摘要数据。

1. Amazon S3 存储桶上的所有数据也可以使用 Quick 进行可视化。 QuickSight 使用亚马逊 Athena 与亚马逊 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 到 parquet 的数据转换。

**分区投影**  
这项 Athena 功能会自动为每天创建分区，以提高基于日期的查询性能。

## 数据湖设置
<a name="data-lake-setup"></a>

使用 Amazon Chime SDK 控制台完成以下步骤。

1. **启动 Amazon Chime SDK 控制台（[ https://console.aws.amazon.com/chime-sdk/主页](https://console.aws.amazon.com/chime-sdk/home)），然后在导航窗格的 “**呼叫分析**” 下，选择 “配置”。**

1. 完成步骤 1，选择**下一步**，然后在步骤 2 页面上，选中**语音分析**复选框。

1. 在 “**输出详细信息**” 下，选中 “**要执行历史分析的数据仓库**” 复选框，然后选择 “**部署 CloudFormation 堆栈**” 链接。

   系统会将您发送到 CloudFormation 控制台中的**快速创建堆栈**页面。

1. 输入堆栈的名称，然后输入以下参数：

   1. `DataLakeType`— 选择**创建通话分析 DataLake**。

   1. `KinesisDataStreamName`：选择您的流。它应该是用于呼叫分析流的流。

   1. `S3BucketURI`：选择您的 Amazon S3 存储桶。URI 必须具有前缀 `s3://bucket-name`

   1. `GlueDatabaseName`：选择一个唯一的 AWS Glue 数据库名称。您不能重复使用 AWS 账户中的现有数据库。

1. 选中确认复选框，然后选择 **Create data lake**。等待 10 分钟让系统创建数据湖。

### 使用数据湖设置 AWS CLI
<a name="data-lake-setup-using-cli"></a>

 AWS CLI 用于创建具有调用创建堆栈权限 CloudFormation的角色。按照以下步骤创建和设置 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**。

   为每种 ParameterKey 使用提供参数值 ParameterValue。

   ```
                               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/zh_cn/chime-sdk/latest/dg/ca-data-lake.html)

# 为 Amazon Chime 软件开发工具包配置快速控制面板
<a name="quicksight-setup-setup"></a>

设置数据湖后，您可以配置带有预定义指标的 Quick 仪表板，以实现数据的可视化。您可以使用以下控制面板：
+ **Transcribe 呼叫分析 \$1 语音分析**。指标包括 turn-by-turn笔录、检测到的问题、结果、实体检测和语音配置文件 ID 匹配的摘要和详细视觉效果。
+ **Transcribe \$1 语音分析**。指标包括 turn-by-turn笔录、词汇匹配、语音和语音配置文件 ID 匹配的摘要和详细视觉效果。

以下主题说明了如何设置 Quick 帐户（如果您还没有），以及如何配置控制面板。

**Topics**
+ [创建 QuickSight 账户](#create-quicksight-account)
+ [配置您的 QuickSight 账户](#configure-qs-acct)
+ [创建 QuickSight 仪表板](#create-qs-dashboard)

## 创建 QuickSight 账户
<a name="create-quicksight-account"></a>

本节中的步骤说明了如何创建 Quick 帐户。如果您已有账户，请跳到 [创建 QuickSight 仪表板](#create-qs-dashboard)。

您可以通过以下方式创建 QuickSight 账户：
+ 使用亚马逊 CloudFormation 模板。
+ 使用 Amazon Chime SDK 控制台。

### 先决条件
<a name="qs-account-prereqs"></a>

开始之前，请收集以下信息：
+ Amazon S3 存储桶的呼叫分析的名称。
+ 通知电子邮件地址。系统将 QuickSight通知发送到该地址。

### 使用 CloudFormation 模板创建账户
<a name="account-by-cft"></a>

以下步骤说明了如何通过部署 Amazon CloudFormation 模板来创建快速账户。该流程仅向您订阅企业版账户。有关定价的信息，请参阅[快速定价](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**，选择 “**创建新 AWS QuickSight账户**”。

   1. 在 **S3** 下BucketName，输入您的亚马逊 S3 存储桶的名称。

   1. 选择 “**我确认 AWS CloudFormation 可能会创建 IAM 资源”。** 复选框。

1. 选择**创建堆栈**。

   系统创建堆栈需要约 10 分钟的时间。

1. 构建完成后，选择 **Go to Quick** 并输入您的电子邮件地址以登录您的帐户。

### 使用控制台创建账户
<a name="account-by-console"></a>

以下步骤说明了如何使用 Amazon Chime 软件开发工具包控制台创建 Quick 账户。您必须使用企业版或企业版 \$1 Q 账户。

**要使用 控制台**

1. 在[ https://console.aws.amazon.com/chime-sdk/家](https://console.aws.amazon.com/chime-sdk/home)中启动 Amazon Chime SDK 控制台，进行搜索**QuickSight**，然后在搜索结果中选择。**QuickSight**  
![\[链接到 Quick 的搜索结果。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/quicksightsetup-1.png)

1. 选择**注册 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. （可选）根据需要，在 **Allow access and autodiscovery for these resources** 下，选择其他资源。

   1. 完成后选择**完成**。

   1. 构建完成后，选择 **Go to Quick** 并输入您的电子邮件地址以登录您的帐户。

## 配置您的 QuickSight 账户
<a name="configure-qs-acct"></a>

登录 QuickSight 账户后，您需要配置安全性并将自己添加到设置过程中创建的群组中。

**若要配置安全性**

1. 选择右上角的个人资料图标，然后 QuickSight从出现的菜单中选择 “**管理**”。  
![\[带有 “管理” QuickSight 命令的菜单。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. 在导航窗格中，选择**安全性和权限**。

1. 在 “**QuickSight 访问 AWS 服务**” 下，选择 “**管理**”，并确保选择了以下服务。
   + Amazon Redshift
   + Amazon RDS
   + Amazon S3
   + Amazon Athena
   +  IAM

1. 选择 **Select Amazon S3 buckets** 链接。

1. 选中您的 Amazon S3 存储桶旁边的复选框，然后在 **Athena 工作组的写入权限**列中选中右边的复选框。

1. 选择**结束**。

1. 选择**保存**。

**将自己加入群组**

1. 在导航窗格中，选择**管理组**，然后选择名称中包含**管理员**的组。例如，*S3 BucketName* — **管理员。**

1. 选择**添加用户**，然后在出现的框中输入您的电子邮件别名。

   您的姓名显示为**Admin – ***您的别名*。

1. 选择**添加**。

## 创建 QuickSight 仪表板
<a name="create-qs-dashboard"></a>

创建数据湖后，您可以创建一个可视化数据的 QuickSight 仪表板。您可以使用亚马逊 CloudFormation 模板或 Amazon Chime 软件开发工具包控制台来创建控制面板。以下步骤解释了这两种方法。

**若要使用模板**

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**，选择**真**。

1. 在 **QuicksightDashboardSelection**“**呼叫分析”-“转录呼叫分析和语音分析” 控制面板或 “呼叫分析”** **-“转录和语音分析**” 控制面板。

1. 在 **Amazon S3** 下BucketName，输入您的亚马逊 S3 存储桶的 URI。

1. 在下方 **GlueDatabaseName**，输入要在其上部署 QuickSight 仪表板的 Glue 数据库。

1. 选中**我确认 AWS CloudFormation 可能会创建 IAM 资源**复选框，然后选择**创建堆栈**。

**手动配置 QuickSight 仪表板**

1. 导航到您的 QuickSight 账户。

1. 在右上角选择个人资料图标，然后选择**管理 QuickSight**。  
![\[“ QuickSight 帐户” 对话框和 “管理” QuickSight 命令。\]](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. 在导航窗格中，请选择**管理组**，然后选择设置过程创建的组。

1. 选择**添加用户**，输入您的电子邮件地址，然后选择**添加**。

   系统需要 10 分钟来部署该页面。

1. 使用 Amazon Chime 软件开发工具包控制台登录您的 QuickSight 账户并使用控制面板。