

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Llamada al procesador de análisis y a los destinos de salida de Amazon Chime SDK
<a name="call-analytics-processor-and-output-destinations"></a>

 Solo puede especificar elementos únicos una vez por configuración de canalización de información multimedia. Todos los procesadores y receptores deben residir en la misma AWS cuenta y debe crearlos en la misma AWS región que el punto final al que llame. Por ejemplo, si usa el punto de conexión de `us-east-1` para las canalizaciones multimedia de Amazon Chime SDK, no podrá transferir un flujo de datos de Kinesis desde la región de `us-west-2`. 

Amplíe cada sección para obtener información sobre cada destino.

## Destinos del procesador de análisis de llamadas con Amazon Transcribe
<a name="amazon-transcribe-call-analytics-processor"></a>

Receptores compatibles: `KinesisDataStreamSink`.

No puede combinar este procesador con un procesador Amazon Transcribe. Para obtener más información sobre los análisis de llamadas con Amazon Transcribe, consulte [Análisis de llamadas en tiempo real](https://docs.aws.amazon.com/transcribe/latest/dg/call-analytics-streaming.html) en la *Guía para desarrolladores de Amazon Transcribe*. Si habilita el [análisis posterior a la llamada](https://docs.aws.amazon.com/transcribe/latest/dg/tca-post-call.html) mediante la inclusión de `PostCallAnalyticsSettings` en la llamada a la API `AmazonTranscribeCallAnalyticsProcessorConfiguration`, recibirá artefactos en la ubicación de Amazon S3 especificada cuando la canalización de información multimedia se detenga y finalice el procesamiento.

**nota**  
Si pausas la canalización durante más de 35 segundos y, a continuación, la reanudas, los artefactos posteriores a la llamada se generan en archivos separados con sesiones diferentes IDs en el bucket de Amazon S3.

Los artefactos posteriores a la llamada incluyen un archivo JSON de análisis y un archivo WAV u Opus de grabación de audio. La URL del bucket de Amazon S3 para los archivos de grabación redactados (si habilita la redacción de contenido) y no redactados se envía al flujo de datos de Kinesis una vez por cada sesión posterior a la llamada de análisis de llamadas con Amazon Transcribe como parte de `onetimeMetadata` en la sección de metadatos.

El análisis de llamadas con Amazon Transcribe utiliza los datos de audio introducidos desde la transmisión de video de Kinesis.
+ Codificación multimedia compatible: audio little-endian de 16 bits firmado por PCM.
+ Frecuencias de muestreo multimedia compatibles: entre 8000 Hz y 48 000 Hz.

Entrada de `StreamConfiguration` para un proceso de Amazon Transcribe Analytics:
+ Debe especificar el `KinesisVideoStreamArn` para cada transmisión.
+ (Opcional) El KVS de `FragmentNumber` inicia un trabajo de análisis de llamadas con el fragmento situado tras un fragmento especificado. Si no se proporciona, utiliza la última parte de la transmisión de video de Kinesis.
+ `StreamChannelDefinition` define quién habla. El análisis de llamadas con Amazon Transcribe requiere audio de dos canales. Debe especificar qué interlocutor está en qué canal cuando llame a la 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 ejemplo, si el agente habla primero, se configura `ChannelId` para que `0` indique el primer canal y `ParticipantRole` para que `AGENT` indique que el agente está hablando.

**nota**  
Cuando utiliza un Voice Connector para crear una `MediaInsightsPipeline` con un procesador de análisis de llamadas con Amazon Transcribe, el audio del tramo de la cuenta de Voice Connector es `AGENT` y el audio del tramo de la PSTN es `CUSTOMER` para el `ParticipantRole`.  
En el caso del Voice Connector SIPREC, nos basamos en los metadatos del SIPREC. En la mayoría de los casos, la etiqueta de flujo con el valor lexicográfico más bajo se considera el `AGENT`.

El siguiente ejemplo muestra la entrada de Kinesis Video Stream para una transmisión de audio de dos canales.

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

 Por el contrario, en el siguiente ejemplo se muestran dos entradas mono de dos transmisiones de video de Kinesis diferentes. 

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

## Resultados de análisis de llamadas con Amazon Transcribe
<a name="amazon-transcribe-call-analytics-output"></a>

 Cada registro de Amazon Transcribe contiene un `UtteranceEvent` o un `CategoryEvent`, pero no ambos. `CategoryEvents` tienen un `detail-type` de `TranscribeCallAnalyticsCategoryEvent`. 

El siguiente ejemplo muestra el formato de salida de metadatos de un solo uso para 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"
}
```

 En el siguiente ejemplo se muestra el formato de salida del análisis de llamadas con 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
                }]
            }
        }
    }
}
```

## Metadatos de actualizaciones de streaming de Voice Connector de Amazon Chime SDK
<a name="cvc-stream-update-metadata"></a>

Si la configuración de análisis de llamadas está asociada a un Voice Connector de Amazon Chime SDK, se enviará la siguiente carga de actualización del conector de voz cuando haya una [actualización de streaming del conector de voz](https://docs.aws.amazon.com/chime-sdk/latest/ag/automating-chime-with-cloudwatch-events.html).

El siguiente ejemplo muestra un formato de metadatos de actualización para el procesador Amazon Transcribe y el procesador de análisis de llamadas 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"
}
```

El siguiente ejemplo muestra un formato de metadatos de actualización para la grabación de Amazon S3 de análisis de llamadas.

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

## Metadatos de grabación de llamadas SIP
<a name="sip-update-metadata"></a>

Los siguientes ejemplos muestran los metadatos para grabar una llamada SIP entre dos personas, Alice y Bob. Ambos participantes envían y reciben audio y video. Para simplificar, el ejemplo solo tiene fragmentos de SIP y SDP, y el SRC graba las transmisiones de cada participante en SRS sin mezclarlas.

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

En el siguiente ejemplo, se muestran los metadatos actualizados cuando un participante de la llamada pone al otro en espera. En este caso, `participant_id srfBElmCRp2QB23b7Mpk0w==` solo recibe secuencias de contenido multimedia y no envía ningún contenido multimedia, por lo que se omite el elemento XML `send`. Por el contrario, `participant_id zSfPoSvdSDCmU3A3TRDxAw==` envía contenido multimedia al otro participante, pero no recibe contenido de él, por lo que se omite el elemento XML `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==">
             <recv>8zc6e0lYTlWIINA6GR+3ag==</recv>
             <recv>EiXGlc+4TruqqoDaNE76ag==</recv>
            </participantstreamassoc>
            <participantstreamassoc
             participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
              <send>8zc6e0lYTlWIINA6GR+3ag==</send>
              <send>EiXGlc+4TruqqoDaNE76ag==</send>
             </participantstreamassoc>
           </recording>
```

En el siguiente ejemplo, se muestra la actualización de metadatos cuando se reanuda la llamada. La carga ahora tiene los elementos XML `send` y `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 del procesador Amazon Transcribe
<a name="amazon-transcribe-processors"></a>

Receptores compatibles: `KinesisDataStreamSink`.

No puede combinar este procesador con el análisis de llamadas con Amazon Transcribe. Para obtener más información sobre la entrada y la salida de Amazon Transcribe, consulte [Transcribir transmisión de audio](https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html) en la *Guía para desarrolladores de Amazon Transcribe*.

La sesión de análisis de llamadas con Amazon Transcribe toma los datos de audio introducidos desde Kinesis Video Stream.
+ Compatible MediaEncoding: audio little-endian de 16 bits firmado por PCM.
+ Frecuencias MediaSampleRate de muestreo compatibles: entre 8.000 Hz y 48.000 Hz.

 `StreamConfiguration` de entrada para los procesadores Amazon Transcribe: 
+ Debe especificar el `KinesisVideoStreamArn` para cada transmisión.
+ (Opcional) `FragmentNumber` de KVS: inicia un trabajo de análisis de llamadas con el fragmento situado después de un fragmento específico. Si no se proporciona, utilizará el último fragmento disponible en Kinesis Video Stream.
+ La `StreamChannelDefinition` de Amazon Transcribe admite audio con dos canales. Debe especificar el `NumberOfChannels` en el tiempo de ejecución de la `StreamChannelDefinition`. Además, debe pasar el `ChannelId` si envía audio mono en dos canales separados. En su transcripción, a los canales se les asignan las etiquetas `ch_0` y `ch_1`. El siguiente ejemplo muestra la entrada KVS para una transmisión de un canal de audio mono.

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

 El siguiente ejemplo muestra la entrada KVS para dos entradas de audio mono en dos flujos diferentes. 

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

**nota**  
En el caso de la `MediaInsightsPipeline` creada por Voice Connector con un procesador Amazon Transcribe, se asigna el audio del tramo de la cuenta del Voice Connector a `channel-0` y el audio del tramo de la PSTN a `channel-1`.  
En el caso del Voice Connector SIPREC, nos basamos en los metadatos del SIPREC. En la mayoría de los casos, se asigna la etiqueta de flujo con el valor lexicográfico más bajo a `channel-0`.  
Para los procesadores de análisis de llamadas con Amazon Transcribe y Amazon Transcribe, si pasa dos transmisiones de Kinesis Video y cada transmisión contiene un canal de audio mono, intercalamos ambos canales en una sola transmisión de audio antes de procesar los datos de análisis de llamadas de Transcribe o Transcribe.

## Salida de Amazon Transcribe
<a name="amazon-transcribe-output"></a>

En el siguiente ejemplo se muestra un formato de salida de metadatos de un solo uso para 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"
}
```

En el siguiente ejemplo se muestra el formato de salida de 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 de los procesadores de análisis de voz
<a name="voice-analytics-processor"></a>

 Receptores compatibles: `KinesisDataStreamSink`, `SqsQueueSink`, `SnsTopicSink` y`LambdaFunctionSink`. 

 Puede combinar este procesador con el procesador de análisis de llamadas con Amazon Transcribe, el procesador Amazon Transcribe o la grabación de llamadas. Debe utilizar la [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)o [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 un procesador de análisis de voz. Para obtener más información sobre el uso del análisis de voz, consulte [Uso del análisis de voz de Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/dg/voice-analytics.html). 

## Uso de un flujo de datos de Kinesis como receptor
<a name="kinesis-data-stream-destination"></a>

Los registros de flujo de datos de Kinesis (KDS) generados por el análisis de llamadas incluyen el ID del canal multimedia, el tipo de detalle, los metadatos y las secciones específicas del procesador. Para obtener información sobre el consumo de datos de una transmisión de datos de Kinesis, consulte [Lectura de datos de Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html), en la *Guía para desarrolladores de Amazon Kinesis Streams*. Para crear una configuración con este receptor, debe tener permiso de `kinesis:DescribeStream` en la transmisión especificada. 

 **Metadatos**

 La sección de `metadata` de los registros KDS generados contiene todos los pares clave-valor especificados en `CallAnalyticsRuntimeMetadata` durante la llamada a la 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). Si un Voice Connector inició una sesión de análisis de llamadas, la sección de metadatos se rellena automáticamente con los siguientes parámetros: 
+ `transactionId`
+ `fromNumber`
+ `toNumber`
+ `callId`
+ `voiceConnectorId`
+ `direction`

 Además de los parámetros mostrados anteriormente, la sección de metadatos de las sesiones de análisis de llamadas iniciadas por Voice Connector se rellenará con un campo `oneTimeMetadata` que contiene: 
+ `inviteHeaders`
+ `siprecMetadata`

Esto se publica en Kinesis Data Streams solo una vez al principio de la sesión y tiene un `detail-type` de `CallAnalyticsMetadata`.

Puede pasar identificadores únicos de `MediaInsightsRuntimeMetadata` para cada llamada a la 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 de forma única la fuente de cada registro entregado a su flujo de datos de Kinesis.

## Grabación de llamadas de Amazon S3
<a name="amazon-s3-call-recording"></a>

 La grabación de análisis de llamadas lee el audio de una transmisión de KVS, lo graba como un archivo de audio y lo carga en el bucket de Amazon S3 especificado. Tras grabar las llamadas, Analytics también envía los metadatos de la llamada junto con la ubicación del archivo a KDS. Si habilita un almacenamiento de datos, los metadatos de la llamada (incluidos los metadatos del SIPREC si se utilizó el SIPREC) se envían al almacenamiento de datos en un conjunto de tablas de Parquet que puede consultar.

Como cualquier otro procesador de análisis de llamadas, primero debe crear una configuración para la canalización. Puede utilizar la consola de Amazon Chime SDK o la CLI para crear la configuración. A continuación, usará la CLI para crear la canalización. Para obtener más información sobre el uso de la consola para crear configuraciones de grabación, consulte [Creaión de configuraciones de análisis de llamadas de Amazon Chime SDK](creating-ca-configuration.md) en la sección anterior. Para obtener más información sobre el uso de los flujos de trabajo de grabación, consulte [Descripción de los flujos de trabajo para grabar llamadas para Amazon Chime SDK](recording-workflows.md) en la sección anterior.

 **Para usar la CLI para crear una configuración**

 Use el siguiente comando: 

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

 En el siguiente ejemplo se muestra un archivo JSON de configuración con solo la grabación 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"
        }         
    ]
}
```

Recuerde lo siguiente:
+ Para habilitar la grabación de llamadas a través de Kinesis Video Streams, el audio debe ser little-endian de 16 bits firmado por PCM. La frecuencia de muestreo debe ser 8KHz. 
+ Los creadores deben establecer un período de retención de datos lo suficientemente largo para la transmisión de video de Kinesis a fin de garantizar que los fragmentos se retengan y pueda consumirlos un análisis de llamadas. 
+ Si habilita la grabación de llamadas, sola o en combinación con otros procesadores, debe suministrar dos Kinesis Video Stream ARNs para la grabación. La grabación de llamadas no admite una sola entrada de audio estéreo. 

## Salida de metadatos de grabación de llamadas de Amazon S3
<a name="s3-recording-metadata-output"></a>

El siguiente ejemplo muestra el formato de salida de los metadatos del análisis de llamada para la grabación de 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"
}
```

## Habilitación de ajustes de voz
<a name="voice-enhancement-sink"></a>

Para habilitar la mejora de la voz, incluya un elemento `VoiceEnhancementSinkConfiguration` en una llamada a la 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).

En este ejemplo se muestra un elemento típico.

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

Para actualizar una configuración, añada el elemento `VoiceEnhancementSinkConfiguration` a una llamada a la 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). Cuando lo haga, la 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) incluirá el elemento `VoiceEnhancementSinkConfiguration` en los resultados.

Esta solicitud de ejemplo muestra cómo habilitar la mejora de voz y la grabación en 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**  
El elemento `VoiceEnhancementSink` siempre requiere un elemento `S3RecordingSink` en la configuración de análisis de llamadas.

# Combinación de la transcripción con los receptores de grabación para el Amazon Chime SDK
<a name="combining-recording-transcription"></a>

Puede combinar los procesadores Amazon Transcribe y análisis de llamadas con Amazon Transcribe con un receptor de grabación Amazon S3. Los desarrolladores pueden transferir un S3 RecordingSinkConfiguration además de los procesadores Amazon Transcribe en una llamada a la [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 o mediante la consola.

Junto con el receptor de grabación Amazon S3, puede utilizar un procesador Amazon Transcribe o análisis de llamadas con Amazon Transcribe, pero nunca ambos. También puede añadir análisis de voz a la misma configuración además de un receptor de grabación, con o sin un procesador de transcripción.

**nota**  
Puede habilitar la grabación con cualquiera de los procesadores enumerados anteriormente. Sin embargo, si habilita el análisis de llamadas con Amazon Transcribe junto con la grabación de llamadas de Amazon S3, debe ofrecer dos flujos de video de Kinesis y recibirá archivos de grabación duplicados, uno de análisis de llamadas con Amazon Transcribe y otro de la grabación de llamadas de Amazon S3.

Recuerde lo siguiente:
+ Debe utilizar un `MediaInsightsPipelineConfigurationName` único.
+ Para obtener información sobre el `ResourceAccessRoleArn`, consulte [Uso de la función de acceso a los recursos de análisis de llamadas de Amazon Chime SDK](call-analytics-resource-access-role.md) en esta guía.
+ El valor `Destination` debe ser un ARN de ruta S3. El bucket de Amazon S3 debe pertenecer a la misma cuenta.
+ Si utiliza una configuración con Transcribe y grabación para crear una canalización, las pausas y reanudaciones solo aparecen en la información generada por un flujo de datos de Kinesis. Todos los datos de las transmisiones de KVS se graban y se cargan en Amazon S3.
+ Si una configuración utiliza Amazon Transcribe o Transcribe Call Analytics (TCA) además de la grabación, la canalización de información multimedia proporciona información sobre la transcripción o Transcribe Call Analytics en tiempo real, seguida de la grabación de Amazon S3 al final de la llamada. Si los servicios de transcripción fallan durante el análisis de la llamada, el trabajo de grabación de S3 sigue intentando ejecutarse. Por el contrario, un error de grabación en Amazon S3 no afecta a la información de la transcripción, ya que se ejecuta una vez que se completa la transcripción.

Este ejemplo muestra una configuración con un procesador Amazon Transcribe y un receptor de grabación Amazon S3. El ejemplo también permite la estabilización parcial de los resultados, lo que puede reducir la latencia en la salida, pero puede afectar a la precisión. Para obtener más información, consulte [Estabilización de resultados parciales](https://docs.aws.amazon.com/transcribe/latest/dg/streaming-partial-results.html#streaming-partial-result-stabilization) en la *Guía para desarrolladores de 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"
        }
    ]
}
```

# Uso de EventBridge las notificaciones de Amazon para el SDK de Amazon Chime
<a name="using-eventbridge-notifications"></a>

El análisis de llamadas del SDK de Amazon Chime permite enviar eventos al EventBridge bus predeterminado cuando cambia el estado de la canalización de información multimedia o cuando se cumplen las condiciones de alerta en tiempo real de Call Analytics. Para actualizar el estado de los errores de Media Insights Pipeline, le recomendamos que configure un EventBridge objetivo para que le notifique si sus recursos fallan de forma asíncrona. Las notificaciones de análisis de llamadas tienen una fuente de aws.chime y varios tipos de detalles, que se muestran en las siguientes secciones. Para obtener más información, consulta la [Guía del EventBridge usuario de Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html).

**Topics**
+ [Actualizaciones de estado](#status-updates)
+ [Alertas en tiempo real](#realtime-alerts)

## Actualizaciones de estado
<a name="status-updates"></a>

 Los canales de información multimedia envían EventBridge notificaciones a medida que avanza una sesión de análisis de llamadas y finaliza correctamente o detecta errores. Recibirás una EventBridge notificación con el tipo de detalle «Media Insights State Change» cuando: 
+ Cambia el estado de una canalización de información multimedia.
+ Cambia el estado de un elemento del canalización de información multimedia.
+ Se detiene cualquier elemento de la canalización.
+ Falla cualquier elemento de la canalización.

La sección de detalles siempre incluye los siguientes campos:
+ `version`
+ `mediaInsightsPipelineArn`
+ `eventType`

La sección de detalles también incluye un campo `mediaInsightsPipelineElementStatuses` si la canalización de información multimedia contiene varios elementos, como procesadores de análisis y receptores de datos. Este campo indica los estados de cada elemento de la canalización. El estado posible de cada elemento de la canalización podría ser:
+ `NotStarted`
+ `InProgress`
+ `Stopped`
+ `Failed`

 La sección de detalles también incluye los pares clave-valor especificados de `MediaInsightsRuntimeMetadata` durante la llamada a la 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). Si un Voice Connector inició una sesión de análisis de llamadas, la sección de metadatos se rellena automáticamente con los siguientes parámetros: 
+ `transactionId`
+ `fromNumber`
+ `toNumber`
+ `callId`
+ `voiceConnectorId`
+ `direction`

 Los siguientes tipos de eventos pueden aparecer siempre que una canalización de información multimedia contenga un solo elemento. Amplíe cada sección para obtener más información.

### Información multimedia sobre el Amazon Chime SDK en progreso
<a name="insights-in-progress"></a>

Este ejemplo muestra una estructura de eventos típica.

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

### Contenido multimedia de Amazon Chime SDK pausado
<a name="insights-paused"></a>

Este ejemplo muestra una estructura de eventos típica.

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

### Contenido multimedia de Amazon Chime SDK detenido
<a name="insights-stoppped"></a>

Este ejemplo muestra una estructura de eventos típica.

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

### Fallo temporal de la información multimedia de Amazon Chime SDK
<a name="insights-temp-failure"></a>

Indica que el servicio ha detectado un error temporal e intentará volver a intentarlo. No es necesario que realice ninguna acción.

Este ejemplo muestra una estructura de eventos típica.

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

### Fallo permanente de la información multimedia de Amazon Chime SDK
<a name="insights-perm-failure"></a>

Indica un error que requiere que tome medidas. Utilice la `failureReason` para solucionar el problema. Los errores típicos pueden incluir los siguientes:
+ Permisos insuficientes para el rol de acceso a recursos
+ Recursos ausentes o eliminados
+ Limitarse desde un AWS servicio que invoca el análisis en su nombre, como Amazon Transcribe o Amazon Kinesis.
+ Formatos multimedia incompatibles en las transmisiones de KVS

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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**  
El campo `failureReason` es opcional. Por ejemplo, una razón típica podría ser `Access denied when assuming resource access role`.

Los siguientes tipos de eventos pueden aparecer siempre que se cree una canalización de información multimedia, o cuando el intento de creación falle, para una sesión de análisis de llamadas iniciada por un Voice Connector de Amazon Chime SDK. Amplíe cada sección para obtener más información.

### Contenido multimedia de Amazon Chime SDK creado
<a name="vc-pipeline-created"></a>

En este ejemplo se muestra un evento de éxito 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",
        "mediaInsightsPipelineArn": "string",
        "eventType": "chime:MediaInsightsCreated",
        "callId": "string",
        "transactionId": "string",
        "fromNumber": "string",
        "toNumber": "string",
        "voiceConnectorId": "string", 
        "direction": "string",
    }
}
```

### Fallo en la creación de información multimedia de Amazon Chime SDK
<a name="vc-pipeline-failed"></a>

En este ejemplo, se muestra un evento de error 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"
    }
}
```

Los siguientes tipos de eventos pueden aparecer cuando una canalización de información multimedia contiene varios elementos. Las notificaciones de ejemplo son para el `AmazonTranscribeProcessor` en combinación con el `S3RecordingSink`. Amplíe cada sección para obtener más información. 

### AmazonTranscribeProcessor está en curso y S3 no se ha iniciado RecordingSink
<a name="processor-running-sink-not-started"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 ha tenido éxito y el S3 RecordingSink está en curso
<a name="processor-success-sink-in-progress"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 ha fallado y S3 RecordingSink está en curso
<a name="processor-fail-sink-in-process"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 ha fallado y S3 RecordingSink ha tenido éxito
<a name="processor-fail-record-finish"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 ha tenido éxito y S3 RecordingSink ha fallado
<a name="processor-success-recording-fail"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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á en pausa y S3 no RecordingSink se ha iniciado
<a name="processor-pause-recording-no-start"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 ha fallado temporalmente y S3 no RecordingSink se ha iniciado
<a name="processor-temp-fail-recording-no-start"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 y S3 RecordingSink lo consiguió
<a name="processor-sink-success"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
    "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 tuvo éxito y VoiceEnhancement está en progreso
<a name="voice-enhancement-sink-inprogress"></a>

Este ejemplo muestra una estructura de eventos típica.

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

### S3 RecordingSink tuvo éxito y VoiceEnhancement falló debido a llamadas de más de 30 minutos
<a name="voice-enhancement-sink-fail-longerthan30minutes"></a>

Este ejemplo muestra una estructura de eventos típica.

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

### S3 RecordingSink tuvo éxito y VoiceEnhancement falló debido a que las llamadas duraron menos de 30 minutos
<a name="voice-enhancement-sink-fail-lessthan30minutes"></a>

Este ejemplo muestra una estructura de eventos típica.

```
{
  "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 en tiempo real
<a name="realtime-alerts"></a>

**nota**  
Solo los procesadores Amazon Transcribe y de análisis de llamadas con Amazon Transcribe admiten alertas en tiempo real.

 El análisis de llamadas de Amazon Chime SDK permite a los desarrolladores configurar reglas para enviar alertas en tiempo real a través de un procesador durante una sesión de análisis. Las alertas se envían a Amazon EventBridge con el tipo de detalle`Media Insights Rules Matched`. EventBridge admite la integración con servicios descendentes como Lambda, Amazon SQS y Amazon SNS para activar notificaciones para el usuario final o iniciar otra lógica empresarial personalizada.

 Las alertas en tiempo real se configuran como parte del campo `RealTimeAlertConfiguration` para la `MediaInsightsPipelineConfiguration`. Puede usar la consola del SDK de Amazon Chime para configurar el campo o puede llamar al [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)o. [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) APIs 

 En este ejemplo, se muestra cómo crear o actualizar una configuración de alertas en tiempo real mediante la 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 regla de una configuración de alertas en tiempo real se activa de forma independiente. Es posible que reciba varias EventBridge notificaciones si se cumplen varias condiciones de la regla al mismo tiempo. Para crear una lista de reglas para sus alertas, puede seleccionar uno de los siguientes tipos de reglas:

Coincidencia de palabra clave  
Alerta cuando un conjunto específico de palabras clave o frases coincide en un evento de enunciado o transcripción. Puede configurar la alerta para que emita un evento si:  
+ Todas las palabras clave especificadas se pronuncian y `Negate` se configura como `false`.
+ Todas las palabras clave especificadas no se pronuncian durante toda la llamada, si `Negate` se establece como `true`.
Amazon Transcribe y Amazon Transcribe Analytics admiten este tipo de regla.

Análisis de opiniones  
Avisa cuando un tipo de sentimiento en particular está en curso durante un período de tiempo continuo. Solo Transcribe Call Analytics admite esta regla.

Detección de problema  
Alerta cuando se detecta un problema en un evento de enunciado. Solo Transcribe Call Analytics admite este tipo de regla.

En el siguiente ejemplo se muestra un evento de alerta en tiempo real para una regla de `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",
    }
}
```

Algunos EventBridge campos son específicos del tipo de regla que coincide:

**Campos de coincidencia de palabras clave**  
`utteranceId`: ID de la transcripción que contiene una palabra clave coincidente si utiliza el análisis de llamadas con Amazon Transcribe. Solo para la coincidencia de palabras clave pronunciadas.  
`resultId`: ID de la transcripción que contiene una palabra clave coincidente si utiliza Amazon Transcribe. Solo para la coincidencia de palabras clave pronunciadas.  
`beginTimestamp`: Hora de inicio de la transcripción que contiene una palabra clave coincidente. Solo para la coincidencia de palabras clave pronunciadas.

**Campos de análisis de sentimiento**  
`beginTimestamp`: Hora de inicio de la ventana móvil del sentimiento coincidente.  
`endTimestamp`: Hora de finalización de la ventana variable del sentimiento coincidente.

# Creación de un lago de datos de Amazon Chime SDK
<a name="ca-data-lake"></a>

El lago de datos de análisis de llamadas de Amazon Chime SDK le permite transmitir información basada en el machine learning y cualquier metadato de Amazon Kinesis Data Streams a su bucket de Amazon S3. Por ejemplo, usar el lago de datos para acceder URLs a las grabaciones. Para crear el lago de datos, debe implementar un conjunto de AWS CloudFormation plantillas desde la consola del SDK de Amazon Chime o mediante programación mediante. AWS CLI El lago de datos le permite consultar los metadatos de sus llamadas y los datos de análisis de voz haciendo referencia a las tablas de datos de AWS Glue en Amazon Athena.

**Topics**
+ [Requisitos previos](#data-lake-prereqs)
+ [Terminología y conceptos de lagos de datos](#data-lake-terms)
+ [Creación de lagos de datos](#creating-multiple-data-lakes)
+ [Disponibilidad regional de lago de datos](#data-lake-regions)
+ [Arquitectura de lagos de datos](#data-lake-architecture)
+ [Configuración del lago de datos](#data-lake-setup)

## Requisitos previos
<a name="data-lake-prereqs"></a>

Debe tener los siguientes elementos para crear un lago de Amazon Chime SDK:
+ Un Amazon Kinesis Data Streams. Para obtener más información, consulte [Creación de una transmisión mediante la consola de administración de AWS](https://docs.aws.amazon.com/streams/latest/dev/how-do-i-create-a-stream.html) en la *Guía para desarrolladores de Amazon Kinesis Streams*.
+ Un bucket de S3. Para obtener más información, consulte [Cómo crear su primer bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) en la *Guía del usuario de Amazon S3*.

## Terminología y conceptos de lagos de datos
<a name="data-lake-terms"></a>

Utilice los siguientes términos y conceptos para comprender cómo funciona el lago de datos.

**Amazon Kinesis Data Firehose**  
Un servicio de extracción, transformación y carga (ETL) que captura, transforma y entrega datos de manera fiable a lagos de datos, almacenes de datos y servicios de análisis. Para obtener más información, consulte ¿Qué es Amazon Kinesis Data Firehose?.

**Amazon Athena**  
Amazon Athena es un servicio de consulta interactivo que le permite analizar datos en Amazon S3 usando SQL estándar. Athena funciona sin servidor, por lo que no hay una infraestructura para administrar y solo pagará por las consultas que ejecute. Para usar Athena, señale sus datos en Amazon S3, defina el esquema y utilice consultas SQL estándar. También puede usar grupos de trabajo para agrupar a los usuarios y controlar los recursos a los que tienen acceso cuando ejecutan consultas. Los grupos de trabajo le permiten administrar la simultaneidad de consultas y priorizar la ejecución de las consultas en diferentes grupos de usuarios y cargas de trabajo.

**Catálogo de datos de Glue**  
En Amazon Athena, las tablas y bases de datos son contenedores de los metadatos que definen un esquema para los datos de origen subyacentes. Para cada conjunto de datos debe existir una tabla en Athena. Los metadatos de la tabla indican a Athena la ubicación del bucket de Amazon S3. También especifica la estructura de datos, como los nombres de las columnas, los tipos de datos y el nombre de la tabla. Las bases de datos solo contienen los metadatos y la información del esquema de un conjunto de datos.

## Creación de lagos de datos
<a name="creating-multiple-data-lakes"></a>

Se pueden crear varios lagos de datos proporcionando un nombre único de base de datos de Glue para especificar dónde almacenar la información sobre las llamadas. Para una AWS cuenta determinada, puede haber varias configuraciones de análisis de llamadas, cada una con su correspondiente lago de datos. Esto significa que la separación de datos se puede aplicar para determinados casos de uso, como la personalización de la política de retención y la política de acceso sobre cómo se almacenan los datos. Se pueden aplicar diferentes políticas de seguridad para el acceso a la información, las grabaciones y los metadatos.

## Disponibilidad regional de lago de datos
<a name="data-lake-regions"></a>

El lago de datos de Amazon Chime SDK está disponible en las siguientes regiones.


| Region | Tabla de Glue | Quick | 
| --- | --- | --- | 
| us-east-1 | Disponible | Disponible | 
| us-west-2 | Disponible | Disponible | 
| eu-central-1 | Disponible | Disponible | 

## Arquitectura de lagos de datos
<a name="data-lake-architecture"></a>

En el siguiente diagrama se muestra la arquitectura de lago de datos. Los números del dibujo corresponden al texto numerado que aparece a continuación.

![\[El programa fluye a través de un lago de datos.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/call-analytics-data-lake-architecture.png)


En el diagrama, una vez que utilice la AWS consola para implementar la CloudFormation plantilla desde el flujo de trabajo de configuración del pipeline de Media Insights, los siguientes datos fluyen al bucket de Amazon S3:

1. El análisis de llamadas de Amazon Chime SDK empezará a transmitir datos en tiempo real al flujo de datos de Kinesis del cliente. 

1. Amazon Kinesis Firehose almacena en búfer estos datos en tiempo real hasta que acumulen 128 mb o hasta que pasen 60 segundos, lo que ocurra primero. A continuación, Firehose utiliza el `amazon_chime_sdk_call_analytics_firehose_schema` en el catálogo de datos de Glue para comprimir los datos y transformar los registros JSON en un archivo tipo parquet.

1. El archivo parquet se encuentra en su bucket de Amazon S3, en un formato particionado.

1. Además de los datos en tiempo real, los archivos.wav de resumen de análisis de llamadas con Amazon Transcribe posteriores a la llamada (redactados y no redactados, si se especifica en la configuración) y los archivos.wav de grabación de llamadas también se envían a su bucket de Amazon S3. 

1. Puede utilizar Amazon Athena y SQL estándar para consultar los datos del bucket de Amazon S3.

1. La CloudFormation plantilla también crea un catálogo de datos de Glue para consultar estos datos resumidos posteriores a la llamada a través de Athena.

1. Todos los datos del bucket de Amazon S3 también se pueden visualizar con Quick. QuickSight crea una conexión con un bucket de Amazon S3 mediante Amazon Athena.

La tabla Amazon Athena utiliza las siguientes características para optimizar el rendimiento de las consultas:

**Particiones de datos**  
Las particiones dividen la tabla en partes y mantienen los datos relacionados juntos de acuerdo con propiedades como la fecha, el país o la región. Las claves de partición actúan como columnas virtuales. En este caso, la CloudFormation plantilla define las particiones al crear la tabla, lo que ayuda a reducir la cantidad de datos escaneados por consulta y mejora el rendimiento. También puede filtrar por partición para restringir la cantidad de datos escaneados por una consulta. Para obtener más información, consulte [Particiones de datos en Athena](https://docs.aws.amazon.com/athena/latest/ug/partitions.html) en la *Guía del usuario de Amazon Athena*.  
En este ejemplo se muestra la estructura de particiones con una fecha del 1 de enero 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. donde `DETAIL_TYPE` es uno de los siguientes:

   1. `CallAnalyticsMetadata`

   1. `TranscribeCallAnalytics`

   1. `TranscribeCallAnalyticsCategoryEvents`

   1. `Transcribe`

   1. `Recording`

   1. `VoiceAnalyticsStatus`

   1. `SpeakerSearchStatus`

   1. `VoiceToneAnalysisStatus`

**Optimizar la generación de almacenes de datos en columnas**  
Apache Parquet utiliza la compresión por columnas, la compresión basada en el tipo de datos y la compresión de predicados para almacenar los datos. Unos índices de compresión mejores o la omisión de bloques de datos implican leer menos bytes del bucket de Amazon S3. Esto conduce a un mejor rendimiento de las consultas y a una reducción de los costos. Para esta optimización, la conversión de datos de JSON a parquet está habilitada en Amazon Kinesis Data Firehose.

**Proyección de particiones**  
Esta característica de Athena crea particiones automáticamente para cada día para mejorar el rendimiento de las consultas basadas en fechas.

## Configuración del lago de datos
<a name="data-lake-setup"></a>

Utilice la consola de Amazon Chime SDK para completar los siguientes pasos.

1. **Inicie la consola del SDK de Amazon Chime ([ https://console.aws.amazon.com/chime-sdk/principal](https://console.aws.amazon.com/chime-sdk/home)) y, en el panel de navegación, en **Call Analytics**, elija Configuraciones.**

1. Complete el paso 1, seleccione **Siguiente** y, en la página del paso 2, seleccione la casilla **Análisis de voz**.

1. En **Detalles de salida**, seleccione la casilla **Almacén de datos para realizar un análisis histórico** y, a continuación, seleccione el enlace **Implementar CloudFormation pila**.

   El sistema lo envía a la página de **creación rápida de pilas** en la CloudFormation consola.

1. Indique un nombre para la pila y, a continuación, los siguientes parámetros:

   1. `DataLakeType`— Elija **Crear análisis de llamadas DataLake**.

   1. `KinesisDataStreamName`— Seleccione su transmisión. Debe ser la transmisión utilizada para la transmisión de análisis de llamadas.

   1. `S3BucketURI`— Seleccione su bucket de Amazon S3. La URI debe tener el prefijo `s3://bucket-name`

   1. `GlueDatabaseName`— Seleccione un nombre único para la base de datos de AWS Glue. No puede reutilizar una base de datos existente en la cuenta de AWS .

1. Seleccione la casilla de confirmación y, a continuación, seleccione **Crear lago de datos**. Espere 10 minutos para que el sistema cree el lago.

### Configuración del lago de datos mediante AWS CLI
<a name="data-lake-setup-using-cli"></a>

Se usa AWS CLI para crear un rol con permisos para llamar a CloudFormation la pila de creación. Siga el procedimiento que se indica a continuación para crear y configurar los roles de IAM. Para obtener más información, consulte [Creación de una pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html) en la *Guía del AWS CloudFormation usuario*.

1. Cree un rol denominado *AmazonChimeSdkCallAnalytics-Datalake-Provisioning-Role y adjunte una política de confianza al rol* que permita asumirlo. CloudFormation 

   1. Cree una política de confianza de IAM con la siguiente plantilla y guarde el archivo en formato.json.

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

****  

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

------

   1. Ejecute el comando **aws iam create-role** y pase la política de confianza como parámetro.

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

   1. Anote el *ARN de rol* que devuelve la respuesta. Se requiere *un ARN de rol* en el siguiente paso.

1. Cree una política con permiso para crear una pila. CloudFormation

   1. Cree una política de IAM con la siguiente plantilla y guarde el archivo en formato.json. Este archivo es obligatorio para llamar a create-policy.

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

****  

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

------

   1. Ejecute **aws iam create-policy** y pase la política de creación de pila como parámetro.

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

   1. Anote el *ARN de rol* que devuelve la respuesta. Se requiere *un ARN de rol* en el siguiente paso.

1. Asocie la política de **aws iam attach-role-policy** al rol.

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

1. Cree una CloudFormation pila e introduzca los parámetros necesarios:**aws cloudformation create-stack**.

   Proporcione los valores de los 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 creados por la configuración del lago de datos
<a name="cf-resources"></a>

La siguiente tabla muestra los recursos que se crean al crear un lago de datos.

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

# Configuración de un panel rápido para el SDK de Amazon Chime
<a name="quicksight-setup-setup"></a>

Una vez que haya configurado el lago de datos, podrá configurar un panel rápido con métricas predefinidas que visualicen sus datos. Con los paneles, puede crear lo siguiente:
+ **Transcribir el análisis de llamadas \$1 el análisis de voz**. Las métricas incluyen imágenes resumidas y detalladas de las turn-by-turn transcripciones, los problemas detectados, los resultados, la detección de entidades y las coincidencias de los identificadores de los perfiles de voz.
+ **Transcribir \$1 análisis de voz**. Las métricas incluyen imágenes resumidas y detalladas de las turn-by-turn transcripciones, las coincidencias de vocabulario, el tono de voz y las coincidencias de los identificadores del perfil de voz.

En los siguientes temas se explica cómo configurar una cuenta Quick si aún no la tiene y cómo configurar un panel.

**Topics**
+ [Crear una QuickSight cuenta](#create-quicksight-account)
+ [Configurando tu QuickSight cuenta](#configure-qs-acct)
+ [Crear un panel QuickSight](#create-qs-dashboard)

## Crear una QuickSight cuenta
<a name="create-quicksight-account"></a>

Los pasos de esta sección explican cómo crear una cuenta Quick. Si ya tiene una cuenta, puede pasar a [Crear un panel QuickSight](#create-qs-dashboard).

Puede crear una QuickSight cuenta de la siguiente manera:
+ Uso de CloudFormation plantillas de Amazon.
+ Uso de la consola de Amazon Chime SDK.

### Requisitos previos
<a name="qs-account-prereqs"></a>

Recopile la información necesaria antes de empezar:
+ El nombre del bucket de Amazon S3 de análisis de llamadas.
+ Dirección de correo electrónico de notificación. El sistema envía QuickSight las notificaciones a esta dirección.

### Uso CloudFormation de plantillas para crear una cuenta
<a name="account-by-cft"></a>

En los siguientes pasos se explica cómo crear una cuenta rápida mediante el despliegue de una CloudFormation plantilla de Amazon. El proceso solo lo suscribe a una cuenta empresarial. Para obtener información sobre los precios, consulta [Quick Pricing](https://aws.amazon.com/quicksight/pricing/).

**Para implementar la plantilla**

1. Inicie la AWS consola e inicie sesión en su cuenta de AWS.

1. Pegue la siguiente URL en la barra de direcciones del navegador. Asegúrese de introducir su región tal y como se indica.

   `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. En la página **Creación rápida de pila**, indique los siguientes parámetros:

   1. En **Nombre de pila**, indique un nombre para su cuenta.

   1. En **QuickSightNotificationEmail**la dirección de correo electrónico que recopiló anteriormente.

   1. En **QuickSightSubscriptionForDataVisualization**, selecciona **Crear nueva AWS QuickSight cuenta**.

   1. En **S3 BucketName**, introduce el nombre de tu bucket de Amazon S3.

   1. Seleccione **Acepto que AWS CloudFormation podría crear recursos de IAM**. casilla de verificación.

1. Seleccione **Creación de pila**.

   Las pilas tardan unos 10 minutos en crearse.

1. Cuando finalice la construcción, selecciona **Ir a la sección Rápida** e introduce tu dirección de correo electrónico para iniciar sesión en tu cuenta.

### Usar la consola para crear una cuenta
<a name="account-by-console"></a>

En los siguientes pasos se explica cómo usar la consola del SDK de Amazon Chime para crear una cuenta Quick. Debe utilizar una cuenta Enterprise o Enterprise \$1 Q.

**Para utilizar la consola de**

1. Inicie la consola del SDK de Amazon Chime en [ https://console.aws.amazon.com/chime-sdk/casa](https://console.aws.amazon.com/chime-sdk/home)**QuickSight**, busque y elija en los resultados de búsqueda. **QuickSight**  
![\[Un resultado de búsqueda que enlaza con Quick.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/quicksightsetup-1.png)

1. Selecciona **Registrarse en QuickSight**. 

1. Seleccione **Enterprise** o **Enterprise \$1 Q y**, a continuación, seleccione **Continuar**.

1. Indique su nombre, apellidos, número de teléfono y la dirección de correo electrónico que recopiló anteriormente y, a continuación, seleccione **Continuar**.

1. Haga lo siguiente:

   1. En **Método de autenticación**, seleccione una opción. 
**nota**  
Si elige la opción con usuarios federados, necesitará los permisos de IAM correctos. Para obtener más información, consulte Cómo [suscribirse a una suscripción rápida](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) en la *Guía rápida del usuario*.

   1. En **QuickSight Región**, selecciona una región.

   1. En **Información de la cuenta**, introduzca un nombre para la cuenta y la dirección de correo electrónico que recopiló anteriormente.

   1. En **QuickSight Acceso a los servicios de AWS**, utilice el rol predeterminado o elija **Usar un rol existente** y seleccione un rol de la lista.

   1. (Opcional) según sea necesario, en **Permitir el acceso y la detección automática de estos recursos**, seleccione recursos adicionales.

   1. Cuando termine, seleccione **Finalizar**.

   1. Cuando finalice la creación, elija **Ir a la sección Rápida** e introduzca su dirección de correo electrónico para iniciar sesión en su cuenta.

## Configurando tu QuickSight cuenta
<a name="configure-qs-acct"></a>

Después de iniciar sesión en su QuickSight cuenta, debe configurar la seguridad y agregarse a un grupo creado por el proceso de configuración.

**Para configurar la seguridad**

1. Selecciona el icono del perfil en la esquina superior derecha y, a continuación, selecciona **Administrar** en el QuickSight menú que aparece.  
![\[Un menú con el comando QuickSight Administrar.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. En el panel de navegación, seleccione **Seguridad y permisos**.

1. En el **QuickSight área de acceso a AWS los servicios**, seleccione **Administrar** y asegúrese de que estén seleccionados los siguientes servicios.
   + Amazon Redshift
   + Amazon RDS
   + Amazon S3
   + Amazon Athena
   +  IAM

1. Seleccione el enlace **Seleccionar buckets de Amazon S3**.

1. Seleccione la casilla de verificación situada junto a su bucket de Amazon S3 y, a continuación, la situada a la derecha, en la columna **Permiso de escritura para grupo de trabajo de Athena**.

1. Seleccione **Finalizar**.

1. Seleccione **Save**.

**Para añadirse al grupo**

1. En el panel de navegación, seleccione **Administrar grupos** y, a continuación, seleccione el grupo con **Admins** en el nombre. Por ejemplo, *S3 BucketName* — **Admins.**

1. Seleccione **Añadir usuario** e introduzca su alias de correo electrónico en el cuadro que aparece.

   Su nombre aparece como **Admin, es decir,** *su alias*.

1. Elija **Añadir**.

## Crear un panel QuickSight
<a name="create-qs-dashboard"></a>

Después de crear un lago de datos, puede crear un QuickSight panel que visualice sus datos. Puede usar una CloudFormation plantilla de Amazon o la consola del SDK de Amazon Chime para crear el panel. En los siguientes pasos se explican ambos métodos.

**Para utilizar una plantilla**

1. Inicia la CloudFormation consola Amazon.

1. Pegue el siguiente enlace en la barra de direcciones de su 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. En la página de **Creación rápida de pila**, en **Nombre de pila**, introduzca un nombre para la cuenta.

1. En **ActiveQuickSightAccount**, selecciona **True**.

1. En **QuicksightDashboardSelection**, selecciona el panel **Análisis de llamadas — Transcribe el panel de análisis de llamadas y análisis de voz o el panel** Análisis de **llamadas: Transcribe y análisis** de voz.

1. En **Amazon S3 BucketName**, introduzca el URI de su bucket de Amazon S3.

1. En **GlueDatabaseName**, introduzca la base de datos de Glue en la que desea que se despliegue el QuickSight panel.

1. Seleccione la **casilla Acepto que AWS CloudFormation podría crear recursos de IAM** y, a continuación, seleccione **Crear pila**.

**Para configurar un QuickSight panel de forma manual**

1. Navegue hasta su QuickSight cuenta.

1. En la esquina superior derecha, selecciona el icono del perfil y, a continuación, selecciona **Administrar QuickSight**.  
![\[El cuadro de diálogo de la QuickSight cuenta y el QuickSight comando Administrar.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/quicksightsetup-1-a.png)

1. En el panel de navegación, seleccione **Administrar grupos** y, a continuación, el grupo creado por el proceso de configuración.

1. Seleccione **Añadir usuario**, introduzca su dirección de correo electrónico y, a continuación, seleccione **Añadir**.

   El sistema tarda 10 minutos en implementar la página.

1. Utilice la consola del SDK de Amazon Chime para iniciar sesión en su QuickSight cuenta y utilizar el panel de control.