

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Processador de analytics de chamadas e destinos de saída do SDK do Amazon Chime
<a name="call-analytics-processor-and-output-destinations"></a>

 Você só pode especificar elementos exclusivos uma vez por configuração do pipeline de insights de mídia. Todos os processadores e coletores devem residir na mesma AWS conta e você deve criá-los na mesma AWS região do endpoint que você chama. Por exemplo, se você usa o endpoint do `us-east-1` para os pipelines de mídia do SDK do Amazon Chime, não pode passar um fluxo de dados do Kinesis da região `us-west-2`. 

Expanda cada seção para obter informações sobre cada destino.

## Destinos do processador do Amazon Transcribe Call Analytics
<a name="amazon-transcribe-call-analytics-processor"></a>

Coletores suportados: `KinesisDataStreamSink`.

Não é possível combinar esse processador com um processador do Amazon Transcribe. Para obter mais informações sobre o Amazon Transcribe Call Analytics, consulte [Análise de chamadas em tempo real](https://docs.aws.amazon.com/transcribe/latest/dg/call-analytics-streaming.html), no *Guia do desenvolvedor do Amazon Transcribe*. Se habilitar a [Análise pós-chamada](https://docs.aws.amazon.com/transcribe/latest/dg/tca-post-call.html), ao incluir `PostCallAnalyticsSettings` na chamada de API `AmazonTranscribeCallAnalyticsProcessorConfiguration`, você receberá artefatos no local especificado do Amazon S3 quando o pipeline de insights de mídia for interrompido e o processamento for concluído.

**nota**  
Se você pausar o pipeline por mais de 35 segundos e depois retomá-lo, os artefatos pós-chamada serão gerados em arquivos separados com sessões diferentes IDs no bucket do Amazon S3.

Os artefatos pós-chamada incluem um arquivo JSON de análise e um arquivo de gravação de áudio WAV ou Opus. O URL do bucket do Amazon S3 para arquivos de gravação editados (se a edição de conteúdo estiver habilitada) e não editados é enviado ao fluxo de dados do Kinesis uma vez para cada sessão pós-chamada do Amazon Transcribe Call Analytics, como parte dos `onetimeMetadata`, na seção de metadados.

A análise de chamadas com o Amazon Transcribe Call Analytics usa a entrada de dados de áudio do stream de vídeo do Kinesis.
+ Codificação de mídia suportada: áudio little-endian de 16 bits assinado pelo PCM.
+ Taxas de amostragem de mídia suportadas: entre 8.000 Hz e 48.000 Hz.

Entrada de `StreamConfiguration` para um processo de análise do Amazon Transcribe:
+ Você deve especificar o `KinesisVideoStreamArn` para cada stream.
+ (Opcional) O `FragmentNumber` do KVS inicia um trabalho de análise de chamada da parte após um fragmento especificado. Se não for fornecido, ele usa a parte mais recente do stream de vídeo do Kinesis.
+ `StreamChannelDefinition` define quem está falando. O Amazon Transcribe Call Analytics requer áudio de dois canais. É necessário especificar qual locutor está em qual canal ao chamar a API [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). Por exemplo, se seu atendente falar primeiro, você define o `ChannelId` como `0` para indicar o primeiro canal e o `ParticipantRole` como `AGENT` para indicar que o atendente está falando.

**nota**  
Quando usar um conector de voz para criar um `MediaInsightsPipeline` com um processador do Amazon Transcribe Call Analytics, o áudio da perna da conta do conector de voz será o `AGENT` e o áudio da perna do PSTN será o `CUSTOMER` para o `ParticipantRole`.  
Para o conector de voz SIPREC, dependemos dos metadados do SIPREC. Na maioria dos casos, o rótulo do stream com o menor valor lexicográfico é considerado o `AGENT`.

O exemplo a seguir mostra a entrada do stream de vídeo do Kinesis para um stream de áudio de dois canais.

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

 Por outro lado, o exemplo a seguir mostra duas entradas mono de dois streams diferentes do Kinesis Video. 

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

## Saída do Amazon Transcribe Call Analytics
<a name="amazon-transcribe-call-analytics-output"></a>

 Cada registro do Amazon Transcribe contém um `UtteranceEvent` ou um `CategoryEvent`, mas não ambos. `CategoryEvents` têm um `detail-type` do `TranscribeCallAnalyticsCategoryEvent`. 

O exemplo a seguir mostra o formato único de saída de metadados para o 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"
}
```

 O exemplo a seguir mostra o formato de saída do 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
                }]
            }
        }
    }
}
```

## Metadados de atualizações de streaming do conector de voz do SDK do Amazon Chime
<a name="cvc-stream-update-metadata"></a>

Se a configuração de análise de chamadas estiver associada a um conector de voz do SDK do Amazon Chime, a seguinte carga útil de atualização do conector de voz será enviada quando houver uma [atualização de streaming do conector de voz](https://docs.aws.amazon.com/chime-sdk/latest/ag/automating-chime-with-cloudwatch-events.html).

O exemplo a seguir mostra um formato de metadados de atualização para o processador do Amazon Transcribe e o processador do 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"
}
```

O exemplo a seguir mostra um formato de metadados de atualização para a gravação do Amazon S3 do Call Analytics.

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

## Metadados de gravação de chamadas de SIP
<a name="sip-update-metadata"></a>

Os exemplos a seguir mostram os metadados para gravar uma chamada de SIP entre duas pessoas, Alice e Bob. Ambos os participantes enviam e recebem áudio e vídeo. Para simplificar, o exemplo tem apenas trechos de SIP e SDP, e o SRC grava os streamings de cada participante no SRS sem misturar.

```
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>
```

O exemplo a seguir mostra os metadados atualizados quando um participante da chamada coloca o outro em espera. Nesse caso, `participant_id srfBElmCRp2QB23b7Mpk0w==` apenas recebe streamings de mídia e não envia nenhuma mídia, portanto, o elemento XML `send` é omitido. Por outro lado, `participant_id zSfPoSvdSDCmU3A3TRDxAw==` envia, mas não recebe mídia do outro participante, portanto, o elemento XML `recv` é omitido.

```
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>
```

O exemplo a seguir mostra a atualização dos metadados quando a chamada é retomada. A carga útil agora tem os elementos XML `send` e `recv`.

```
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>
```

## Destinos do processador do Amazon Transcribe
<a name="amazon-transcribe-processors"></a>

Coletores suportados: `KinesisDataStreamSink`.

Não é possível combinar esse processador com o do Amazon Transcribe Call Analytics. Para obter mais informações sobre a entrada e a saída do Amazon Transcribe, consulte [Transcrever streaming de áudio](https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html) no *Guia do desenvolvedor do Amazon Transcribe*.

A sessão de análise de chamadas com o Amazon Transcribe usa a entrada de dados de áudio do stream de vídeo do Kinesis.
+ Suportado MediaEncoding: áudio little-endian de 16 bits assinado por PCM.
+ Taxas MediaSampleRate de amostragem suportadas: entre 8.000 Hz e 48.000 Hz.

 Entrada de `StreamConfiguration` para processadores do Amazon Transcribe: 
+ Você deve especificar o `KinesisVideoStreamArn` para cada stream.
+ (Opcional) `FragmentNumber` do KVS: inicia um trabalho de análise de chamada da parte após um fragmento específico. Se não for fornecido, ele usará a parte mais recente do stream de vídeo no Kinesis.
+ Atualmente, a `StreamChannelDefinition` do Amazon Transcribe suporta áudio com dois canais. Você precisa especificar o `NumberOfChannels` no runtime da `StreamChannelDefinition`. Além disso, você deve passar o `ChannelId` se enviar áudio mono em dois canais separados. Na transcrição, são atribuídos os rótulos `ch_0` e `ch_1` aos canais. O exemplo a seguir mostra a entrada KVS para um stream de canal de áudio mono.

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

 O exemplo a seguir mostra a entrada KVS para duas entradas de áudio mono em dois streams diferentes. 

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

**nota**  
Para o conector de voz `MediaInsightsPipeline` criado com um processador do Amazon Transcribe, o áudio da perna da conta do conector de voz é atribuído ao `channel-0` e o áudio da perna da PSTN ao `channel-1`.  
Para o conector de voz SIPREC, dependemos dos metadados do SIPREC. Na maioria dos casos, o rótulo do stream com o menor valor lexicográfico é atribuído ao `channel-0`.  
Para os processadores do Amazon Transcribe e do Amazon Transcribe Call Analytics, se você transmitir dois streams de vídeo do Kinesis e cada stream contiver um canal de áudio mono, intercalaremos os dois canais em um único stream de áudio antes de processar o Transcribe ou os dados da análise de chamadas do Transcribe.

## Saída do Amazon Transcribe
<a name="amazon-transcribe-output"></a>

O exemplo a seguir mostra um formato único de saída de metadados para o 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"
}
```

O exemplo a seguir mostra o formato de saída do 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
            }]
        }
    }
}
```

## Destinos do processador de análise de voz
<a name="voice-analytics-processor"></a>

 Coletores compatíveis: `KinesisDataStreamSink`, `SqsQueueSink`, `SnsTopicSink` e `LambdaFunctionSink`. 

 É possível combinar esse processador com o processador do Amazon Transcribe Call Analytics, o processador do Amazon Transcribe ou a gravação de chamadas. Você deve usar o [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)ou [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 para invocar um processador de análise de voz. Para obter mais informações sobre o uso de análise de voz, consulte [Como usar a análise de voz do SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/dg/voice-analytics.html). 

## Usar o fluxo de dados do Kinesis como coletor
<a name="kinesis-data-stream-destination"></a>

Os registros do fluxo de dados do Kinesis (KDS) gerados pela análise de chamadas incluem o ID do pipeline de mídia, o tipo de detalhe, os metadados e as seções específicas do processador. Para obter informações sobre o consumo de dados de um fluxo de dados do Kinesis, consulte [Leitura de dados do Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html), no *Guia do desenvolvedor do Amazon Kinesis Streams*. Para criar uma configuração com esse coletor, você deve ter permissão para `kinesis:DescribeStream` no stream especificado. 

 **Metadados**

 A seção `metadata` dos registros KDS gerados contém todos os pares de chave-valor especificados nos `CallAnalyticsRuntimeMetadata` durante a chamada de API [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). Se uma sessão de análise de chamadas foi iniciada por um conector de voz, a seção de metadados será preenchida automaticamente com os seguintes parâmetros: 
+ `transactionId`
+ `fromNumber`
+ `toNumber`
+ `callId`
+ `voiceConnectorId`
+ `direction`

 Além dos parâmetros mostrados acima, a seção de metadados das sessões de analytics de chamadas iniciadas pelo Voice Connector será preenchida com um campo `oneTimeMetadata`, que contém: 
+ `inviteHeaders`
+ `siprecMetadata`

Isso é publicado no fluxo de dados do Kinesis somente uma vez no início da sessão e tem um `detail-type` de `CallAnalyticsMetadata`.

É possível transmitir identificadores exclusivos nos `MediaInsightsRuntimeMetadata` para cada chamada de API [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) para poder identificar com exclusividade a origem de cada registro entregue ao fluxo de dados do Kinesis.

## Gravação de chamadas do Amazon S3
<a name="amazon-s3-call-recording"></a>

 A gravação de análise de chamadas lê o áudio de um stream do KVS, o grava como um arquivo de áudio e carrega o arquivo bucket do Amazon S3 especificado. Depois de gravar a chamada, a análise também envia os metadados da chamada junto com a localização do arquivo para o KDS. Se você habilitar um data warehouse, os metadados da chamada (incluindo metadados SIPREC, se o SIPREC tiver sido usado) serão entregues ao data warehouse em um conjunto de tabelas Parquet que você pode consultar.

Como qualquer outro processador de análise de chamadas, primeiro deve ser criada uma configuração para o pipeline. É possível usar o console do SDK do Amazon Chime ou a CLI para criar a configuração. Então, use a CLI para criar um pipeline. Para mais informações sobre como usar o console para criar configurações de gravação, consulte [Criar configurações de analytics de chamadas do SDK do Amazon Chime](creating-ca-configuration.md), anteriormente nesta seção. Para obter mais informações sobre o uso dos fluxos de trabalho de gravação, consulte [Noções básicas sobre fluxos de trabalho para gravar chamadas para o SDK do Amazon Chime](recording-workflows.md), anteriormente nesta seção.

 **Como usar a CLI para criar uma configuração**

 Execute este comando: . 

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

 O exemplo a seguir mostra um arquivo JSON de configuração com somente a gravação habilitada: 

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

Lembre-se do seguinte:
+ Para habilitar a gravação de chamadas por meio do Kinesis Video Streams, o áudio deve ser little-endian de 16 bits assinado pelo PCM. A taxa de amostragem deve ser 8KHz. 
+ Os criadores devem definir um período de retenção de dados do Kinesis Video Stream suficientemente longo, para garantir que os fragmentos sejam retidos e possam ser consumidos pela analytics de chamadas. 
+ Se você habilitar a gravação de chamadas, sozinha ou em combinação com outros processadores, deverá fornecer dois Kinesis Video Stream ARNs para gravação. A gravação de chamadas não suporta uma entrada única de áudio estéreo. 

## Saída de metadados de gravação de chamadas do Amazon S3
<a name="s3-recording-metadata-output"></a>

O exemplo a seguir mostra o formato de saída de metadados para a gravação de analytics de chamadas do 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"
}
```

## Ativar o aprimoramento de voz
<a name="voice-enhancement-sink"></a>

Para habilitar o aprimoramento de voz, inclua um elemento `VoiceEnhancementSinkConfiguration` em uma chamada de API [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).

Este exemplo mostra um elemento típico.

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

Para atualizar uma configuração, adicione o elemento `VoiceEnhancementSinkConfiguration` a uma chamada de API [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). Ao fazer isso, a 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) inclui o elemento `VoiceEnhancementSinkConfiguration` nos resultados.

Este exemplo de solicitação mostra como habilitar o aprimoramento de voz e a gravação no 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"
}
```

**nota**  
O elemento `VoiceEnhancementSink` sempre exige um elemento `S3RecordingSink` em uma configuração de análise de chamadas.

# Combinar a transcrição com coletores de gravação do SDK do Amazon Chime
<a name="combining-recording-transcription"></a>

É possível combinar os processadores do Amazon Transcribe e do Amazon Transcribe Call Analytics com um coletor de gravação do Amazon S3. Os criadores podem transmitir um S3 RecordingSinkConfiguration além dos processadores Amazon Transcribe em [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)uma chamada de API ou usando o console.

Em conjunto com o coletor de gravação do Amazon S3, é possível usar um processador do Amazon Transcribe ou do Amazon Transcribe Call Analytics, mas nunca ambos. Também é possível adicionar análise de voz à mesma configuração, além de um coletor de gravação, com ou sem um processador de transcrição.

**nota**  
É possível ativar a gravação com qualquer um dos processadores listados acima. No entanto, se você habilitar o Amazon Transcribe Call Analytics, além da gravação de chamadas do Amazon S3, você deverá fornecer dois fluxos de vídeo do Kinesis e receberá arquivos de gravação duplicados, um do Amazon Transcribe Call Analytics e um da gravação de chamadas do Amazon S3.

Lembre-se do seguinte:
+ Você deve usar um `MediaInsightsPipelineConfigurationName` exclusivo.
+ Para obter informações sobre o `ResourceAccessRoleArn`, consulte [Usar o perfil de acesso ao recurso de analytics de chamadas do SDK do Amazon Chime](call-analytics-resource-access-role.md) neste guia.
+ O valor de `Destination` deve ser um ARN do caminho do S3. O bucket do Amazon S3 deve ser de propriedade da mesma conta.
+ Se usar uma configuração com Transcribe e gravação para criar um pipeline, pausas e retomadas só aparecerão nos insights gerados por um fluxo de dados do Kinesis. Todos os dados nos streams do KVS são registrados e enviados para o Amazon S3.
+ Se uma configuração usa o Amazon Transcribe ou Transcribe Call Analytics (TCA) além da gravação, o pipeline de insights de mídia fornece informações da transcrição ou insights do Transcribe Call Analytics em tempo real, seguidos pela gravação do Amazon S3 ao final da chamada. Se os serviços de transcrição falharem durante a análise da chamada, o trabalho de gravação do S3 ainda tentará ser executado. Por outro lado, uma falha na gravação do Amazon S3 não afeta os insights da transcrição, pois ela é executada após a conclusão da transcrição.

O exemplo mostra uma configuração com um processador do Amazon Transcribe e um coletor de gravação do Amazon S3. O exemplo também permite a estabilização parcial dos resultados, o que pode reduzir a latência na saída, mas pode afetar a precisão. Para obter mais informações, consulte [Estabilização parcial de resultados](https://docs.aws.amazon.com/transcribe/latest/dg/streaming-partial-results.html#streaming-partial-result-stabilization), no *Guia do desenvolvedor do Amazon Transcribe*.

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

# Usando EventBridge notificações da Amazon para o Amazon Chime SDK
<a name="using-eventbridge-notifications"></a>

O Amazon Chime SDK Call Analytics suporta o envio de eventos para o EventBridge barramento padrão quando o estado do pipeline de insights de mídia muda ou quando as condições de alerta em tempo real da análise de chamadas são atendidas. Para as atualizações de status de erro do pipeline do media insights, recomendamos que você configure um EventBridge alvo para notificá-lo se seus recursos falharem de forma assíncrona. As notificações de análise de chamadas têm uma fonte aws.chime e vários tipos de detalhes, que são compartilhados nas seções a seguir. Para obter mais informações, consulte o [Guia EventBridge do usuário da Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html).

**Topics**
+ [Atualizações de status](#status-updates)
+ [Alertas em tempo real](#realtime-alerts)

## Atualizações de status
<a name="status-updates"></a>

 Os pipelines de insights de mídia enviam EventBridge notificações à medida que uma sessão de análise de chamadas avança e termina com sucesso ou encontra erros. Você recebe uma EventBridge notificação com o tipo de detalhe “Alteração de estado do Media Insights” quando: 
+ O status de um pipeline de insights de mídia mudar.
+ O status do elemento de um pipeline de insights de mídia mudar.
+ Algum elemento do pipeline for interrompido.
+ Algum elemento do pipeline falhar.

A seção de detalhe sempre inclui os campos a seguir:
+ `version`
+ `mediaInsightsPipelineArn`
+ `eventType`

A seção de detalhes também inclui um campo `mediaInsightsPipelineElementStatuses` se o pipeline de insights de mídia contiver vários elementos, como processadores de análise e coletores de dados. Esse campo indica os status de cada elemento no pipeline. O status possível para cada elemento do pipeline pode ser:
+ `NotStarted`
+ `InProgress`
+ `Stopped`
+ `Failed`

 A seção de detalhes também inclui todos os pares de chave-valor especificados em `MediaInsightsRuntimeMetadata` durante a chamada de API [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). Se uma sessão de análise de chamadas foi iniciada por um conector de voz, a seção de metadados é preenchida automaticamente com os parâmetros a seguir: 
+ `transactionId`
+ `fromNumber`
+ `toNumber`
+ `callId`
+ `voiceConnectorId`
+ `direction`

 Os seguintes tipos de eventos podem aparecer sempre que um pipeline de insights de mídia contém um único elemento. Expanda cada seção para saber mais.

### Insights de mídia do SDK do Amazon Chime em andamento
<a name="insights-in-progress"></a>

Este exemplo mostra uma estrutura típica de evento.

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

### Insights de mídia do SDK do Amazon Chime pausados
<a name="insights-paused"></a>

Este exemplo mostra uma estrutura típica de evento.

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

### Insights de mídia do SDK do Amazon Chime interrompidos
<a name="insights-stoppped"></a>

Este exemplo mostra uma estrutura típica de evento.

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

### Falha temporária dos insights de mídia do SDK do Amazon Chime
<a name="insights-temp-failure"></a>

Indica que o serviço encontrou uma falha temporária e vai tentar novamente. Não é necessária nenhuma ação sua.

Este exemplo mostra uma estrutura típica de evento.

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

### Falha permanente de insights de mídia do SDK do Amazon Chime
<a name="insights-perm-failure"></a>

Indica uma falha que exige uma ação sua. Use o `failureReason` para solucionar o problema. As falhas típicas podem incluir o seguinte:
+ Permissões insuficientes da função de acesso ao recurso
+ Recursos ausentes ou excluídos
+ Limitação a partir de um AWS serviço que a análise de chamadas invoca em seu nome, como o Amazon Transcribe ou o Amazon Kinesis.
+ Formatos de mídia incompatíveis em streams KVS

Este exemplo mostra uma estrutura típica de evento.

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

**nota**  
O campo `failureReason` é opcional. Por exemplo, um motivo típico pode ser `Access denied when assuming resource access role`.

Os seguintes tipos de eventos podem aparecer sempre que um pipeline de insights de mídia for criado ou a tentativa de criação falhar para uma sessão de análise de chamadas iniciada por um conector de voz do SDK do Amazon Chime. Expanda cada seção para saber mais.

### Insights de mídia do SDK do Amazon Chime criados
<a name="vc-pipeline-created"></a>

Este exemplo mostra um evento típico com êxito.

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

### Falha na criação de insights de mídia do SDK do Amazon Chime
<a name="vc-pipeline-failed"></a>

Este exemplo mostra um evento de falha típico.

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

Os seguintes tipos de eventos podem aparecer quando um pipeline de insights de mídia contiver vários elementos. As notificações de exemplo são do `AmazonTranscribeProcessor` combinadas com o `S3RecordingSink`. Expanda cada seção para saber mais. 

### AmazonTranscribeProcessor está em andamento e o S3 não RecordingSink foi iniciado
<a name="processor-running-sink-not-started"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 foi bem-sucedido e o S3 RecordingSink está em andamento
<a name="processor-success-sink-in-progress"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 falhou e o S3 RecordingSink está em andamento
<a name="processor-fail-sink-in-process"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 falhou e o S3 RecordingSink foi bem-sucedido
<a name="processor-fail-record-finish"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 teve sucesso e o S3 falhou RecordingSink
<a name="processor-success-recording-fail"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 está pausado e o S3 RecordingSink não foi iniciado
<a name="processor-pause-recording-no-start"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 falhou temporariamente e o S3 não RecordingSink foi iniciado
<a name="processor-temp-fail-recording-no-start"></a>

Este exemplo mostra uma estrutura típica de evento.

```
{
    "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 e o S3 teve sucesso RecordingSink
<a name="processor-sink-success"></a>

Este exemplo mostra uma estrutura típica de evento.

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

### O S3 RecordingSink foi bem-sucedido e VoiceEnhancement está em andamento
<a name="voice-enhancement-sink-inprogress"></a>

Este exemplo mostra uma estrutura típica de evento.

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

### O S3 RecordingSink foi bem-sucedido e VoiceEnhancement falhou devido a chamadas de mais de 30 minutos
<a name="voice-enhancement-sink-fail-longerthan30minutes"></a>

Este exemplo mostra uma estrutura típica de evento.

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

### O S3 RecordingSink foi bem-sucedido e VoiceEnhancement falhou devido a chamadas de menos de 30 minutos
<a name="voice-enhancement-sink-fail-lessthan30minutes"></a>

Este exemplo mostra uma estrutura típica de evento.

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

## Alertas em tempo real
<a name="realtime-alerts"></a>

**nota**  
Somente os processadores do Amazon Transcribe e do Amazon Transcribe Call Analytics suportam alertas em tempo real.

 A análise de chamadas do SDK do Amazon Chime permite que os desenvolvedores configurem regras para enviar alertas em tempo real por meio de um processador durante uma sessão de análise. Os alertas são enviados para a Amazon EventBridge com o tipo de detalhe`Media Insights Rules Matched`. EventBridge oferece suporte à integração com serviços downstream, como Lambda, Amazon SQS e Amazon SNS, para acionar notificações para o usuário final ou iniciar outra lógica comercial personalizada.

 Os alertas em tempo real são configurados como parte do campo `RealTimeAlertConfiguration` para a `MediaInsightsPipelineConfiguration`. Você pode usar o console do Amazon Chime SDK para configurar o campo ou pode chamar o ou. [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 

 Este exemplo mostra como criar ou atualizar uma configuração de alerta em tempo real por meio da 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"
            }
        }
    ]
}
```

Cada regra em uma configuração de alerta em tempo real é acionada de forma independente. Você poderá receber várias EventBridge notificações se várias condições de regra forem atendidas ao mesmo tempo. Para criar uma lista de regras para seus alertas, você pode selecionar entre os seguintes tipos de regras:

Correspondência de palavra-chave  
Alerta quando um conjunto específico de palavras-chave ou frases for correspondido em um evento de enunciado ou transcrição. É possível configurar o alerta para emitir um evento se:  
+ Todas as palavras-chave especificadas forem faladas e `Negate` estiver definido como `false`.
+ Todas as palavras-chave especificadas não forem faladas durante toda a chamada, se `Negate` estiver definido como `true`.
O Amazon Transcribe e a análise do Amazon Transcribe oferecem suporte a esse tipo de regra.

Análise de sentimento  
Alerta quando um determinado tipo de sentimento está em andamento por um período de tempo contínuo. Somente o Transcribe Call Analytics suporta essa regra.

Detecção de problemas  
Alerta quando um problema é detectado em um evento de enunciado. Somente o Transcribe Call Analytics suporta esse tipo de regra.

O exemplo a seguir mostra um evento de alerta em tempo real para uma regra `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",
    }
}
```

Alguns EventBridge campos são específicos para o tipo de regra correspondente:

**Campos de correspondência de palavras-chave**  
`utteranceId`: ID da transcrição que contém uma palavra-chave correspondente se você usar o Amazon Transcribe Call Analytics. Somente para correspondência falada de palavras-chave.  
`resultId`: ID da transcrição que contém uma palavra-chave correspondente se você usar o Amazon Transcribe. Somente para correspondência falada de palavras-chave.  
`beginTimestamp`: hora de início da transcrição que contém uma palavra-chave correspondente. Somente para correspondência falada de palavras-chave.

**Campos de análise de sentimento**  
`beginTimestamp`: hora de início da janela contínua para o sentimento correspondente.  
`endTimestamp`: hora de término da janela contínua para o sentimento correspondente.

# Criação de um data lake do SDK do Amazon Chime
<a name="ca-data-lake"></a>

O data lake de análise de chamadas do SDK do Amazon Chime permite que você transmita os insights baseados em machine learning e todos os metadados do Amazon Kinesis Data Stream para o bucket do Amazon S3. Por exemplo, usando o data lake URLs para acessar as gravações. Para criar o data lake, você implanta um conjunto de AWS CloudFormation modelos do console do Amazon Chime SDK ou programaticamente usando o. AWS CLI O data lake permite que você consulte seus metadados de chamadas e dados de análise de voz fazendo referência às tabelas de dados do AWS Glue no Amazon Athena.

**Topics**
+ [Pré-requisitos](#data-lake-prereqs)
+ [Terminologia e conceitos de data lake](#data-lake-terms)
+ [Criação de vários data lakes](#creating-multiple-data-lakes)
+ [Disponibilidade regional do data lake](#data-lake-regions)
+ [Arquitetura de data lake](#data-lake-architecture)
+ [Configuração de data lake](#data-lake-setup)

## Pré-requisitos
<a name="data-lake-prereqs"></a>

Você deve ter os seguintes itens para criar um lake do SDK do Amazon Chime:
+ Um Amazon Kinesis data stream. Para obter mais informações, consulte [Como criar um stream por meio do Console de Gerenciamento da AWS](https://docs.aws.amazon.com/streams/latest/dev/how-do-i-create-a-stream.html) no *Guia do desenvolvedor do Amazon Kinesis Streams*.
+ Um bucket do S3. Para obter mais informações, consulte [Criar seu primeiro bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) no *Guia do usuário do Amazon S3*.

## Terminologia e conceitos de data lake
<a name="data-lake-terms"></a>

Use os termos e conceitos a seguir para entender como funciona o data lake.

**Amazon Kinesis Data Firehose**  
Um serviço de extração, transformação e carregamento (ETL) que captura, transforma e fornece dados de streaming de forma confiável para data lakes, data stores e serviços de análise. Para obter mais informações, consulte O que é o Amazon Kinesis Data Firehose?

**Amazon Athena**  
O Amazon Athena é um serviço de consulta interativa que permite analisar dados no Amazon S3 usando o SQL padrão. Como o Athena é uma tecnologia sem servidor, não há infraestrutura para ser gerenciada e você paga apenas pelas consultas que executar. Para usar o Athena, aponte para seus dados no Amazon S3, defina o esquema e use consultas SQL padrão. Você também pode usar grupos de trabalho para agrupar usuários e controlar os recursos aos quais eles têm acesso quando executam consultas. Os grupos de trabalho permitem gerenciar a simultaneidade de consultas e priorizar a execução de consultas em diferentes grupos de usuários e workloads.

**Glue Data Catalog**  
No Amazon Athena, as tabelas e os bancos de dados contêm os metadados que detalham um esquema para os dados de origem subjacente. Para cada conjunto de dados, é necessário existir uma tabela no Athena. Os metadados na tabela informam o Athena a localização do seu bucket do Amazon S3. Também especificam a estrutura de dados, como nomes de colunas, tipos de dados e o nome da tabela. Os bancos de dados contêm apenas os metadados e as informações do esquema de um conjunto de dados.

## Criação de vários data lakes
<a name="creating-multiple-data-lakes"></a>

Vários data lakes podem ser criados fornecendo um nome de banco de dados Glue exclusivo para especificar onde armazenar os insights de chamadas. Para uma determinada AWS conta, pode haver várias configurações de análise de chamadas, cada uma com um data lake correspondente. Isso significa que a separação de dados pode ser aplicada a determinados casos de uso sobre como os dados são armazenados, como a personalização da política de retenção e a política de acesso. Podem ser aplicadas diferentes políticas de segurança para acesso a insights, gravações e metadados.

## Disponibilidade regional do data lake
<a name="data-lake-regions"></a>

O data lake do SDK do Amazon Chime está disponível nas regiões a seguir.


| Region | Tabela Glue | Quick | 
| --- | --- | --- | 
| us-east-1 | Available (Disponível) | Available (Disponível) | 
| us-west-2 | Available (Disponível) | Available (Disponível) | 
| eu-central-1 | Available (Disponível) | Available (Disponível) | 

## Arquitetura de data lake
<a name="data-lake-architecture"></a>

O diagrama a seguir mostra a arquitetura de data lake. Os números no desenho correspondem ao texto numerado abaixo.

![\[O programa flui por meio de um data lake.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/call-analytics-data-lake-architecture.png)


No diagrama, depois de usar o AWS console para implantar o CloudFormation modelo do fluxo de trabalho de configuração do pipeline de mídia Insights, os seguintes dados fluem para o bucket do Amazon S3:

1. A análise de chamadas do SDK do Amazon Chime começará a transmitir dados em tempo real para o fluxo de dados do Kinesis do cliente. 

1. O Amazon Kinesis Firehose armazena esses dados em tempo real até que eles acumulem 128 MB, ou 60 segundos, o que ocorrer primeiro. Em seguida, o Firehose usa o `amazon_chime_sdk_call_analytics_firehose_schema` no Glue Data Catalog para compactar os dados e transformar os registros JSON em um arquivo parquet.

1. O arquivo parquet reside no bucket do Amazon S3, em um formato particionado.

1. Além dos dados em tempo real, os arquivos resumidos .wav do Amazon Transcribe Call Analytics pós-chamada (editados e não editados, se especificados na configuração) e os arquivos .wav de gravação de chamadas também são enviados para o bucket do Amazon S3. 

1. É possível usar o Amazon Athena e o SQL padrão para consultar os dados no bucket do Amazon S3.

1. O CloudFormation modelo também cria um Glue Data Catalog para consultar esses dados resumidos pós-chamada por meio do Athena.

1. Todos os dados no bucket do Amazon S3 também podem ser visualizados usando o Quick. QuickSight cria uma conexão com um bucket do Amazon S3 usando o Amazon Athena.

A tabela do Amazon Athena usa os seguintes atributos para otimizar o desempenho da consulta:

**Particionamento de dados**  
O particionamento divide a tabela em partes e mantém os dados relacionados juntos com base em valores de coluna, como data, país ou região. As partições funcionam como colunas virtuais. Nesse caso, o CloudFormation modelo define partições na criação da tabela, o que ajuda a reduzir a quantidade de dados digitalizados por consulta e melhora o desempenho. Também é possível filtrar por partição para restringir a quantidade de dados digitalizados por consulta. Para mais informações, consulte [Particionamento de dados no Athena](https://docs.aws.amazon.com/athena/latest/ug/partitions.html) no *Guia do usuário do Amazon Athena*.  
Este exemplo mostra a estrutura de particionamento com data de 1º de janeiro de 2023:  

1. 

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

1. em que `DETAIL_TYPE` é dos itens a seguir:

   1. `CallAnalyticsMetadata`

   1. `TranscribeCallAnalytics`

   1. `TranscribeCallAnalyticsCategoryEvents`

   1. `Transcribe`

   1. `Recording`

   1. `VoiceAnalyticsStatus`

   1. `SpeakerSearchStatus`

   1. `VoiceToneAnalysisStatus`

**Otimizar a geração de armazenamento de dados colunares**  
O Apache Parquet usa compactação em colunas, compactação com base no tipo de dado e passagem de predicados para armazenar dados. Com melhores taxas de compactação ou ao ignorar blocos de dados significa ler menos bytes do bucket do Amazon S3. Isso leva a um melhor desempenho de consulta e a um menor custo. Para essa otimização, é ativada a conversão de dados de JSON para parquet no Amazon Kinesis Data Firehose.

**Projeção de partições**  
Esse atributo do Athena cria partições automaticamente para cada dia para melhorar o desempenho das consultas baseadas em datas.

## Configuração de data lake
<a name="data-lake-setup"></a>

Use o console do SDK do Amazon Chime para realizar as etapas a seguir.

1. **Inicie o console do Amazon Chime SDK ([ https://console.aws.amazon.com/chime-sdk/home](https://console.aws.amazon.com/chime-sdk/home)) e, no painel de navegação, em **Call Analytics**, escolha Configurações.**

1. Concluída a etapa 1, escolha **Avançar** e, na página etapa 2, marque a caixa de seleção **Análise de voz**.

1. Em **Detalhes da saída**, marque a caixa de seleção **Data warehouse para realizar análise histórica** e, em seguida, escolha o link **Implantar CloudFormation pilha**.

   O sistema envia você para a página de **criação rápida da pilha** no CloudFormation console.

1. Insira um nome para a pilha e, em seguida, insira os seguintes parâmetros:

   1. `DataLakeType`— Escolha **Criar análise de chamadas DataLake**.

   1. `KinesisDataStreamName`: escolha seu stream. Deve ser o stream usado para streaming de análise de chamadas.

   1. `S3BucketURI`: escolha o bucket do Amazon S3. O URI deve ter o prefixo `s3://bucket-name`

   1. `GlueDatabaseName`: escolha um nome exclusivo do banco de dados do AWS Glue. Você não pode reutilizar um banco de dados existente na conta da AWS .

1. Marque a caixa de seleção de confirmação e, em seguida, escolha **Criar data lake**. Aguarde 10 minutos para que o sistema crie o data lake.

### Configuração do data lake usando AWS CLI
<a name="data-lake-setup-using-cli"></a>

Use AWS CLI para criar uma função com permissões para a pilha CloudFormation de criação da chamada. Siga o procedimento abaixo para criar e configurar os perfis do IAM. Para obter mais informações, consulte [Criação de uma pilha](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html) no *Guia do AWS CloudFormation usuário*.

1. Crie uma função chamada *AmazonChimeSdkCallAnalytics-Datalake-Provisioning-Role e anexe uma política de confiança à função*, permitindo que você assuma a função. CloudFormation 

   1. Crie uma política de confiança do IAM usando o modelo a seguir e salve o arquivo no formato .json.

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

****  

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

------

   1. Execute o comando **aws iam create-role** e passe a política de confiança como parâmetro.

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

   1. Anote o *ARN da função* retornado na resposta. Será necessário um *ARN de função* na próxima etapa.

1. Crie uma política com permissão para criar uma CloudFormation pilha.

   1. Crie uma política do IAM usando o modelo a seguir e salve o arquivo no formato .json. Esse arquivo será necessário para chamar create-policy.

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

****  

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

------

   1. Execute **aws iam create-policy** e passe a política de criação de pilha como parâmetro.

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

   1. Anote o *ARN da função* retornado na resposta. Será necessário um *ARN de função* na próxima etapa.

1. Anexe a política do **aws iam attach-role-policy** à função.

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

1. Crie uma CloudFormation pilha e insira os parâmetros necessários:**aws cloudformation create-stack**.

   Forneça valores de parâmetros para cada ParameterKey uso 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}
   ```

#### Recursos criados pela configuração do data lake
<a name="cf-resources"></a>

A tabela a seguir lista os recursos criados quando um data lake é criado.

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

# Configuração de um painel rápido para o Amazon Chime SDK
<a name="quicksight-setup-setup"></a>

Depois de configurar o data lake, você pode configurar um painel rápido com métricas predefinidas que visualizam seus dados. Você pode usar os seguintes painéis:
+ **Transcrição de análise de chamadas \$1 Análise de voz**. As métricas incluem imagens resumidas e detalhadas de turn-by-turn transcrições, problemas detectados, resultados, detecção de entidades e correspondências de ID de perfil de voz.
+ **Transcrição \$1 Análise de voz**. As métricas incluem imagens resumidas e detalhadas de turn-by-turn transcrições, correspondências de vocabulário, tom de voz e correspondências de ID de perfil de voz.

Os tópicos a seguir explicam como configurar uma conta rápida, se você ainda não tiver uma, e como configurar um painel.

**Topics**
+ [Criando uma QuickSight conta](#create-quicksight-account)
+ [Configurando sua conta QuickSight](#configure-qs-acct)
+ [Criação de um QuickSight painel](#create-qs-dashboard)

## Criando uma QuickSight conta
<a name="create-quicksight-account"></a>

As etapas desta seção explicam como criar uma conta rápida. Se você já tem uma conta, pode pular para [Criação de um QuickSight painel](#create-qs-dashboard).

Você pode criar uma QuickSight conta da seguinte forma:
+ Usando CloudFormation modelos da Amazon.
+ Usando o console do SDK do Amazon Chime.

### Pré-requisitos
<a name="qs-account-prereqs"></a>

Reúna as informações a seguir antes de começar:
+ O nome do seu bucket de análise de chamadas do Amazon S3.
+ Um endereço de e-mail de notificação. O sistema envia QuickSight notificações para esse endereço.

### Usando CloudFormation modelos para criar uma conta
<a name="account-by-cft"></a>

As etapas a seguir explicam como criar uma conta Quick implantando um CloudFormation modelo da Amazon. O processo só inscreve você em uma conta Enterprise. Para obter informações sobre preços, consulte [Quick Pricing](https://aws.amazon.com/quicksight/pricing/).

**Para implantar o modelo**

1. Inicie o AWS console e faça login na sua conta da AWS.

1. Cole a URL a seguir na barra de endereço do navegador. Insira sua região conforme indicado.

   `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. Na página **Criar uma pilha**, insira o seguinte:

   1. Em **Nome da pilha**, insira um nome para a sua conta.

   1. Abaixo **QuickSightNotificationEmail**do endereço de e-mail que você coletou anteriormente.

   1. Em **QuickSightSubscriptionForDataVisualization**, escolha **Criar nova AWS QuickSight conta**.

   1. Em **S3 BucketName**, insira o nome do seu bucket Amazon S3.

   1. Selecione a opção **Eu reconheço que a AWS CloudFormation pode criar recursos do IAM.** caixa de seleção.

1. Selecione **Criar pilha**.

   O sistema leva aproximadamente 10 minutos para criar a pilha.

1. Quando a compilação terminar, escolha **Ir para Rápido** e insira seu endereço de e-mail para entrar na sua conta.

### Usar o console para criar uma conta
<a name="account-by-console"></a>

As etapas a seguir explicam como usar o console do Amazon Chime SDK para criar uma conta Quick. Você deve usar uma conta Enterprise ou Enterprise \$1 Q.

**Para usar o console do**

1. Inicie o console do Amazon Chime SDK em [ https://console.aws.amazon.com/chime-sdk/casa](https://console.aws.amazon.com/chime-sdk/home), pesquise e**QuickSight**, nos resultados da pesquisa, escolha. **QuickSight**  
![\[Um resultado de pesquisa vinculado ao Quick.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/quicksightsetup-1.png)

1. Escolha **Inscrever-se** em QuickSight. 

1. Escolha **Enterprise** ou **Enterprise \$1 Q** e, em seguida, escolha **Continuar**.

1. Insira seu nome, sobrenome, número de telefone e o endereço de e-mail que você anotou anteriormente e escolha **Continuar**.

1. Faça o seguinte:

   1. Em **Método de autenticação**, escolha uma opção. 
**nota**  
Se você escolher a opção com usuários federados, precisará das permissões corretas do IAM. Para obter mais informações, consulte [Inscrever-se para uma assinatura rápida](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) no *Guia rápido do usuário*.

   1. Em **QuickSight Região**, selecione uma região.

   1. Em **Informações da conta**, insira um nome para a conta e o endereço de e-mail que você anotou anteriormente.

   1. Em **QuickSight Acesso aos serviços da AWS**, use a função padrão ou escolha **Usar uma função existente** e selecione uma função na lista.

   1. (Opcional) conforme necessário, em **Permitir acesso e descoberta automática para esses recursos**, escolha recursos adicionais.

   1. Quando terminar, escolha **Concluir**.

   1. Quando a compilação terminar, escolha **Ir para Rápido** e insira seu endereço de e-mail para entrar na sua conta.

## Configurando sua conta QuickSight
<a name="configure-qs-acct"></a>

Depois de fazer login na sua QuickSight conta, você precisa configurar a segurança e se adicionar a um grupo criado pelo processo de configuração.

**Para configurar a segurança**

1. Escolha o ícone do perfil no canto superior direito e escolha **Gerenciar** no QuickSight menu resultante.  
![\[Um menu com o QuickSight comando Gerenciar.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. No painel de navegação, escolha **Segurança e permissões**.

1. Em **QuickSight Acesso aos AWS serviços**, escolha **Gerenciar** e verifique se os seguintes serviços estão selecionados.
   + banco de dados de origem
   + Amazon RDS
   + Amazon S3
   + Amazon Athena
   +  IAM

1. Escolha o link **Selecionar buckets do Amazon S3**.

1. Marque a caixa de seleção ao lado do seu bucket do Amazon S3 e, em seguida, selecione a caixa de seleção à direita, na coluna **Permissão de gravação para o Athena Workgroup**.

1. Escolha **Terminar**.

1. Escolha **Salvar**.

**Para se adicionar ao grupo**

1. No painel de navegação, escolha **Gerenciar grupos** e, em seguida, escolha o nome do grupo com **Administradores** no nome. Por exemplo, *S3 BucketName* — **Admins**.

1. Escolha **Adicionar usuário** e, em seguida, insira o alias de seu e-mail na caixa que aparece.

   Seu nome aparece como **Administrador – ***seu alias*.

1. Escolha **Adicionar**.

## Criação de um QuickSight painel
<a name="create-qs-dashboard"></a>

Depois de criar um data lake, você pode criar um QuickSight painel que visualiza seus dados. Você pode usar um CloudFormation modelo da Amazon ou o console do Amazon Chime SDK para criar o painel. As etapas a seguir explicam como usar os dois métodos.

**Para usar um modelo**

1. Inicie o CloudFormation console da Amazon.

1. Cole o link a seguir na barra de endereço do navegador: `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. Na página **Criar pilha de forma rápida**, em **Nome da pilha**, insira um nome para a conta.

1. Em **ActiveQuickSightAccount**, escolha **Verdadeiro**.

1. Em **QuicksightDashboardSelection**, escolha **Análise de chamadas — Transcrever painel Análise de chamadas e análise de voz ou Análise** **de chamadas — painel Transcrever e análise** de voz.

1. Em **Amazon S3 BucketName**, insira o URI do seu bucket do Amazon S3.

1. Em **GlueDatabaseName**, insira o banco de dados Glue no qual você deseja que o QuickSight painel seja implantado.

1. Escolha a caixa de seleção **Eu reconheço que a AWS CloudFormation pode criar recursos do IAM** e, em seguida, escolha **Criar pilha**.

**Para configurar um QuickSight painel manualmente**

1. Navegue até sua QuickSight conta.

1. No canto superior direito, escolha o ícone do perfil e escolha **Gerenciar QuickSight**.  
![\[A caixa de diálogo QuickSight da conta e o QuickSight comando Gerenciar.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. No painel de navegação, escolha **Gerenciar grupos** e escolha o grupo criado pelo processo de configuração.

1. Escolha **Adicionar usuário**, insira seu endereço de e-mail e escolha **Adicionar**.

   O sistema leva 10 minutos para implantar a página.

1. Use o console do Amazon Chime SDK para fazer login na sua QuickSight conta e usar o painel.