

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.

# Acciones compatibles con el servicio de audio PSTN de Amazon Chime SDK
<a name="specify-actions"></a>

Puede especificar diferentes tipos de acciones multimedia y de señalización en una respuesta de una AWS Lambda función. Cada acción tiene propiedades diferentes. En los siguientes temas se proporciona código de ejemplo y se explica cómo utilizar las acciones.

**Topics**
+ [Utilización TransactionAttributes](transaction-attributes.md)
+ [Uso de la grabación de llamadas](sip-apps-call-record.md)
+ [CallAndBridge](call-and-bridge.md)
+ [Hangup](hangup.md)
+ [JoinChimeMeeting](join-chime-meeting.md)
+ [ModifyChimeMeetingAttendee (activación y desactivación del audio)](mute-unmute.md)
+ [Pause](pause.md)
+ [PlayAudio](play-audio.md)
+ [PlayAudioAndGetDigits](play-audio-get-digits.md)
+ [ReceiveDigits](listen-to-digits.md)
+ [RecordAudio](record-audio.md)
+ [SendDigits](send-digits.md)
+ [Speak](speak.md)
+ [SpeakAndGetDigits](speak-and-get-digits.md)
+ [StartBotConversation](start-bot-conversation.md)

# Utilización TransactionAttributes
<a name="transaction-attributes"></a>

La estructura de `TransactionAttributes` datos se utiliza para almacenar información específica de la aplicación, como los estados de las llamadas o las reuniones IDs, y luego se pasan esos datos a las invocaciones de Lambda AWS . Esta estructura elimina la necesidad de almacenar datos en bases de datos externas, como Amazon DynamoDB. 

`TransactionAttributes`son [objetos JSON](https://www.w3schools.com/js/js_json_objects.asp) que contienen key/value pairs. The objects can contain a maximum of 100 key/value pares y los objetos tienen un tamaño máximo de carga útil de 20 KB. Los datos de una estructura de `TransactionAttributes` se conservan durante toda la transacción.

Cuando una AWS Lambda función pasa `TransactionAttributes` a una aplicación multimedia SIP, la aplicación actualiza todos los atributos almacenados. Si pasa un objeto de `TransactionAttributes` con un conjunto de claves existente, actualice los valores almacenados. Si pasa un conjunto de claves diferente, reemplaza los valores existentes por los valores de ese conjunto de claves diferente. Al pasar un mapa vacío (`{}`) se borran todos los valores almacenados.

**Topics**
+ [Opción TransactionAttributes](set-trans-attributes.md)
+ [Actualización TransactionAttributes](update-trans-attributes.md)
+ [Borrando TransactionAttributes](clear-trans-attributes.md)
+ [Manipulación ACTION\$1SUCCESSFUL eventos](attribute-trans-success.md)
+ [Entradas no válidas](attribute-trans-invalid.md)

# Opción TransactionAttributes
<a name="set-trans-attributes"></a>

En el siguiente ejemplo, se muestra cómo establecer `TransactionAttributes` junto a una [PlayAudio](play-audio.md) acción y pasar los atributos de una AWS Lambda función a una aplicación multimedia SIP.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "mtg1-sipmedia-app-iad",
                    "Key": "Welcome3.wav"
                }
            }
        }
    ],
    "TransactionAttributes": {
        "key1": "value1",
        "key2": "value2"
    }
}
```

# Actualización TransactionAttributes
<a name="update-trans-attributes"></a>

Para modificar los `TransactionAttributes` almacenados, actualice el contenido del objeto JSON con valores nuevos. En el siguiente ejemplo, las claves `NewKey1` y `NewKey2` se añaden a los `TransactionAttributes`. Estas claves se emparejan con los valores `NewValue1` y `NewValue2`, respectivamente.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "mtg1-sipmedia-app-iad",
                    "Key": "Welcome3.wav"
                }
            }
        }
    ],
    "TransactionAttributes": {
        "NewKey1": "NewValue1",
        "NewKey2": "NewValue2"
    }
}
```

Si, en el ejemplo anterior, se pasa `NewValue1` a `key1`, el valor existente de se `key1` sustituirá por `NewValue1`. Sin embargo, al pasar un valor a se `NewKey1` crea un nuevo par clave/valor.

# Borrando TransactionAttributes
<a name="clear-trans-attributes"></a>

Para borrar el contenido del objeto `TransactionAttributes`, pase el campo `TransactionAttributes` con un objeto JSON vacío:

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "mtg1-sipmedia-app-iad",
                    "Key": "Welcome3.wav"
                }
            }
        }
    ],
    "TransactionAttributes": {
    }
}
```

**nota**  
No se pueden borrar los datos de una estructura de `TransactionAttributes` estableciendo su valor como `null`. Además, omitir la estructura de `TransactionAttribute` no borra sus datos. Pase siempre un objeto JSON vacío de `TransactionAttributes` para borrar los datos del objeto.

# Manipulación ACTION\$1SUCCESSFUL eventos
<a name="attribute-trans-success"></a>

El siguiente ejemplo muestra cómo un usuario [PlayAudio](play-audio.md) envía correctamente los `TransactionAttributes` almacenados como parte de los `CallDetails `.

```
{ 
    "SchemaVersion": "1.0", 
    "Sequence": 2, 
    "InvocationEventType": "ACTION_SUCCESSFUL", 
    "ActionData": { 
        "Type": "PlayAudio", 
        "Parameters": { 
            "AudioSource": { 
                "Type": "S3", 
                "BucketName": "mtg1-sipmedia-app-iad", 
                "Key": "Welcome3.wav" 
            }, 
            "Repeat": 1, 
            "ParticipantTag": "LEG-A" 
        } 
    }, 
    "CallDetails": { 
        "TransactionId": "mtg1-tx-id", 
        "TransactionAttributes": { 
            "key1": "value1", 
            "key2": "value2" 
        }, 
        "AwsAccountId": "166971021612", 
        "AwsRegion": "us-east-1", 
        "SipRuleId": "aafbd402-b7a2-4992-92f8-496b4563c492", 
        "SipMediaApplicationId": "e88f4e49-dd21-4a3f-b538-bc84eae11505", 
        "Participants": [ 
            { 
                "CallId": "bbff30c5-866a-41b5-8d0a-5d23d5e19f3e", 
                "ParticipantTag": "LEG-A", 
                "To": "+14345550101", 
                "From": "+14255550199", 
                "Direction": "Inbound", 
                "StartTimeInMilliseconds": "1644539405907", 
                "Status": "Connected" 
            } 
        ] 
    } 
}
```

# Entradas no válidas
<a name="attribute-trans-invalid"></a>

En el siguiente ejemplo, se muestra una entrada no válida. En este caso, el objeto JSON pasa demasiados elementos a una aplicación multimedia SIP.

```
{ 
    "SchemaVersion": "1.0", 
    "Actions": [ 
        { 
            "Type": "PlayAudio", 
            "Parameters": { 
                "ParticipantTag": "LEG-A", 
                "AudioSource": { 
                    "Type": "S3", 
                    "BucketName": "mtg1-sipmedia-app-iad", 
                    "Key": "Welcome3.wav" 
                } 
            } 
        } 
    ], 
    "TransactionAttributes": { 
        "key1": "value1", 
        "key2": "value2", 
        "key3": "value3", 
        "key4": "value4", 
        "key5": "value5", 
        "key6": "value6", 
        "key7": "value7", 
        "key8": "value8", 
        "key9": "value9", 
        "key10": "value10", 
        "key11": "value11" 
    } 
}
```

En el siguiente ejemplo, se muestra la respuesta a la entrada proporcionada anteriormente. Esta salida se pasa de una aplicación multimedia SIP a la función AWS Lambda que invocó la aplicación.

```
{ 
    "SchemaVersion": "1.0", 
    "Sequence": 2, 
    "InvocationEventType": "INVALID_LAMBDA_RESPONSE", 
    "CallDetails": { 
        "TransactionId": "mtg1-tx-id", 
        "AwsAccountId": "166971021612", 
        "AwsRegion": "us-east-1", 
        "SipRuleId": "aafbd402-b7a2-4992-92f8-496b4563c492", 
        "SipMediaApplicationId": "e88f4e49-dd21-4a3f-b538-bc84eae11505", 
        "Participants": [ 
            { 
                "CallId": "72cbec69-f098-45d8-9ad6-e26cb9af663a", 
                "ParticipantTag": "LEG-A", 
                "To": "+14345550101", 
                "From": "+14255550199", 
                "Direction": "Inbound", 
                "StartTimeInMilliseconds": "1644540839987" 
            } 
        ] 
    }, 
    "ErrorType": "TransactionAttributesInvalidMapSize", 
    "ErrorMessage": "Transaction Attributes has too many mappings. Maximum number of mappings is 10" 
}
```

# Uso de la grabación de llamadas
<a name="sip-apps-call-record"></a>

Las acciones de grabación de llamadas para las aplicaciones multimedia SIP le permiten crear soluciones de grabación y transcripción posterior a las llamadas para una variedad de usos. Por ejemplo, puede grabar las llamadas de atención al cliente y utilizarlas como formación.

Puede utilizar las acciones de grabación de llamadas junto con sus aplicaciones multimedia SIP. También puede utilizar las acciones a pedido o en respuesta a un evento SIP. 
+ Para iniciar la grabación bajo demanda de una llamada en su aplicación multimedia SIP, utilice la API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice_chime_UpdateSipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice_chime_UpdateSipMediaApplication.html) para invocar la aplicación y devolver la acción [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartCallRecording.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartCallRecording.html). 
+ Para iniciar la grabación de llamadas en respuesta a un evento SIP, devuelva la acción de `StartCallRecording` a su aplicación. 

Puede pausar y reanudar una grabación en curso. Para pausar, use la acción [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_PauseCallRecording.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_PauseCallRecording.html). Para reanudar, use la acción `ResumeCallRecording`. Cada vez que pausa o reanuda una grabación, la acción captura un tono que indica la pausa o la reanudación. Cuando hace una pausa, la acción registra el silencio, que Amazon Chime SDK utiliza para hacer un seguimiento de la duración de la pausa e incluir las pausas en la factura. Puede pausar y reanudar la grabación tantas veces como sea necesario.

Para detener la grabación de llamadas, devuelva la acción [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopCallRecording.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopCallRecording.html). Sin embargo, las grabaciones de llamadas se detienen automáticamente cuando la llamada se detiene y, en ese caso, no es necesario que devuelvas la acción de `StopCallRecording` de forma explícita. Solo puede iniciar y detener la grabación una vez para cada tramo de llamada individual.

Amazon Chime SDK proporciona grabaciones de llamadas al bucket de Amazon S3 que se seleccione. El depósito debe pertenecer a tu AWS cuenta. Una vez que se detiene la llamada, la aplicación multimedia SIP envía la grabación a la carpeta especificada en el parámetro `Destination` de la acción [StartCallRecording](start-call-recording.md). Amazon Chime SDK graba las llamadas en un formato WAV abierto. Las llamadas que graban pistas entrantes y salientes utilizan el modo estéreo, con la pista entrante en el canal izquierdo y la pista saliente en el canal derecho. Si graba solo la pista entrante o saliente, el sistema utiliza el modo mono.

**nota**  
Las grabaciones realizadas con esta característica pueden estar sujetas a las leyes o reglamentos relativos a la grabación de comunicaciones electrónicas. Es su responsabilidad y la de sus usuarios finales cumplir con todas las leyes aplicables en relación con la grabación, incluida la notificación adecuada a todos los participantes de una sesión o comunicación grabada de que la sesión o comunicación se está grabando y la obtención de su consentimiento.

## Facturación de la grabación de llamadas
<a name="call-billing"></a>

Amazon Chime SDK le factura por minuto el tiempo que la grabación de llamadas esté habilitada para un tramo de llamada, y ese tiempo incluye todas las pausas. Se le facturará el uso de la grabación de llamadas una vez que la grabación de llamadas se entregue a su bucket de Amazon S3.

# Grabación de pistas de audio
<a name="record-legs"></a>

Puede grabar solo las pistas entrantes o salientes de una llamada, o ambas pistas de una llamada.

Esta imagen muestra una llamada entrante típica con una sola pierna o sin puente. 

![\[Una llamada entrante que solo se comunica con una aplicación multimedia SIP.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/call-record-sma-one-leg.png)


La llamada solo tiene un tramo con un `callID` de **call-id-1**. La pista de audio `INCOMING` es el audio de la persona que llama a la aplicación multimedia SIP. La pista de audio `OUTGOING` es el audio de la aplicación multimedia SIP a la persona que llama. La aplicación multimedia SIP especifica el `CallId` de la llamada que desea grabar. Para grabar al participante que realizó la llamada, especifique `INCOMING`. Para grabar al participante que responde a una llamada, especifique `OUTGOING`. Para grabar a ambos participantes, especifique `BOTH`.

Esta imagen muestra una llamada puente típica con dos participantes.

![\[Una llamada entrante que se comunica con una aplicación multimedia SIP y con un segundo participante.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/call-record-sma-bridged.png)


En este ejemplo, la llamada tiene dos tramos de llamada, **call-id-1** y **call-id-2**, y **call-id-1** se conecta mediante un puente con **call-id-2**. Esto crea cuatro pistas de audio, las transmisiones de audio entrantes y salientes de ambas llamadas IDs. Puede especificar qué pistas de audio IDs y llamada desea grabar. Por ejemplo, si desea grabar la pista de audio del participante llamado, grabe la pista de audio `INCOMING` especificando **call-id-2** como `CallId` y `INCOMING` como pista.

Si desea grabar todo lo que escucha la persona que llama, grabe la pista de audio `OUTGOING` especificando **call-id-1** como `CallId` y `OUTGOING` como pista. Si desea grabar todo el audio que el `Caller` ha dicho y escuchado, grabe `BOTH` pistas de audio especificando `call-id-1` como `CallId` y `BOTH` como pista.

# Caso de uso de ejemplo
<a name="recording-use-cases"></a>

Las aplicaciones multimedia SIP proporcionan acciones de grabación de llamadas como componentes básicos. Le brindan la flexibilidad necesaria para crear soluciones de grabación de llamadas para sus casos de uso empresarial. Los siguientes casos ilustran algunos escenarios de uso comunes.

**Topics**
+ [Caso 1: Grabación de una llamada unidireccional que implica acciones de SIP](#recording-case-1)
+ [Caso 2: Grabación selectiva de audio en una llamada puente](#recording-case-2)
+ [Caso 3: Grabación de varios tramos de llamadas](#recording-case-3)
+ [Caso 4: Grabación bajo demanda con pausa y reanudación](#on-demand-pause-resume)

## Caso 1: Grabación de una llamada unidireccional que implica acciones de SIP
<a name="recording-case-1"></a>

Puede grabar a la persona que llama y cualquier audio generado por las acciones de una aplicación multimedia SIP, como las acciones de [PlayAudio](play-audio.md) y [PlayAudioAndGetDigits](play-audio-get-digits.md). Durante la grabación, si la persona que llama presiona un dígito, la grabación captura el tono de ese dígito. En este ejemplo se utiliza la acción `PlayAudioAndGetDigits`, pero la respuesta de voz interactiva (IVR) puede consistir en una serie compleja de acciones de una aplicación multimedia SIP.

En este ejemplo, la aplicación multimedia SIP graba ambas pistas de audio entre la persona que llama y la propia aplicación multimedia SIP. La grabación comienza cuando se establece la llamada y se detiene cuando la persona que llama cuelga. La facturación comienza cuando se establece la llamada y se detiene cuando la persona que llama cuelga.

![\[Diagrama de una aplicación multimedia SIP que graba dos pistas de audio, en este caso, entre la persona que llama y la propia aplicación.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/sma-recording-case-1.png)


## Caso 2: Grabación selectiva de audio en una llamada puente
<a name="recording-case-2"></a>

Puede grabar de forma selectiva la pista de audio de un solo participante de la llamada. Puede usar esta característica para habilitar selectivamente la grabación de llamadas solo para un participante específico.

En este ejemplo, la aplicación multimedia SIP graba las pistas de audio entrantes entre la persona llamada y la propia aplicación multimedia SIP especificando **call-id-2** como `CallId` y `INCOMING` como pista. La grabación de la llamada comienza cuando la persona que llama se conecta con la persona que llama, y ahí es también cuando comienza la facturación. La grabación se detiene cuando la persona que llama cuelga y es también cuando finaliza la facturación. Esta grabación solo tiene la pista de audio de la persona llamada. 

![\[Diagrama de una aplicación multimedia SIP que graba selectivamente una pista.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/sma-recording-case-2.png)


## Caso 3: Grabación de varios tramos de llamadas
<a name="recording-case-3"></a>

Puede grabar varios tramos de llamadas. Por ejemplo, supongamos que conecta una llamada con un participante. Cuando ese participante cuelga, la llamada telefónica se transfiere a otro participante. Puede activar la grabación de llamadas en los tres tramos de llamadas. 

En este ejemplo, se muestran tres archivos de grabación independientes. La grabación del primer tramo de la llamada captura la conversación entre la persona que llama, la aplicación y los dos participantes que estuvieron conectados a la llamada. La grabación del segundo tramo de la llamada captura la conversación entre la persona que llama y el primer participante. La grabación del tercer tramo de la llamada captura la conversación entre la persona que llama y el segundo participante. 

Este caso crea tres tramos de llamada y la facturación se aplica al inicio y al final de cada tramo de llamada. Dicho de otro modo, el sistema envía tres grabaciones a su bucket de S3 y se le factura por cada una. 

![\[Diagrama de una aplicación multimedia SIP que graba varios tramos de llamadas.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/sma-recording-case-3.png)


## Caso 4: Grabación bajo demanda con pausa y reanudación
<a name="on-demand-pause-resume"></a>

Puede iniciar, detener, pausar y reanudar la grabación de llamadas bajo demanda mediante la API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html). Puede crear una aplicación cliente que llame a la API `UpdateSipMediaApplicationCall` e invoque la aplicación multimedia SIP para devolver las acciones de grabación de llamadas.

Los usuarios finales utilizan la aplicación cliente para controlar la grabación de las llamadas. Por ejemplo, en un centro de llamadas, un agente utilizaría una aplicación cliente de escritorio para activar acciones de grabación de llamadas bajo demanda. En el ejemplo de un centro de llamadas, el agente puede pedir permiso a la persona que llama para grabar la llamada y hacer clic en la aplicación cliente para iniciar la grabación una vez que la persona que llama esté de acuerdo. En otro ejemplo, es posible que la persona que llama deba proporcionar información como un número de seguro social (SSN). Sin embargo, la política del centro de llamadas exige que el agente no registre información como el número de seguro social del cliente. El agente puede hacer clic en la aplicación para pausar la grabación mientras el cliente proporciona la información y, a continuación, volver a hacer clic para reanudar la grabación. Una vez que el agente tramita la solicitud de la persona que llama, hace clic en la aplicación para detener la grabación y cuelga la llamada.

En este caso de uso, la aplicación multimedia SIP graba las pistas de audio entre la persona que llama y la aplicación multimedia SIP. Como el tramo `call-id-1` está unido al tramo `call-id-2`, el sistema graba el audio en ambos tramos, la de la persona que llama y la que llama. El registro y la facturación comienzan cuando la API `UpdateSipMediaApplicationCall` invoca la acción `StartCallRecording`. El registro y la facturación se detienen cuando la API `UpdateSipMediaApplicationCall` invoca la acción `StopCallRecording`. Como recordatorio, pausar la grabación no cambia su duración y se facturarán todas las pausas. 

![\[Diagrama de una aplicación multimedia SIP que graba bajo demanda con la grabación pausada y reanudada.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/sma-recording-on-demand.png)


# Acciones de grabación de llamadas para aplicaciones multimedia SIP
<a name="use-recording-apis"></a>

Puede especificar diferentes acciones de grabación de llamadas en una respuesta desde la AWS Lambda función de su aplicación multimedia SIP. En los siguientes temas se proporciona código de ejemplo y se explica cómo utilizar las acciones.

**Topics**
+ [StartCallRecording](start-call-recording.md)
+ [StopCallRecording](stop-call-recording.md)
+ [PauseCallRecording](pause-call-recording.md)
+ [ResumeCallRecording](resume-call-recording.md)

# StartCallRecording
<a name="start-call-recording"></a>

La acción `StartCallRecording` inicia la grabación del tramo de una llamada. Puede iniciar la grabación de llamadas en sus aplicaciones multimedia SIP, ya sea bajo demanda o en respuesta a un evento SIP.
+ Para iniciar la grabación bajo demanda de una llamada, utilice la API `UpdateSipMediaApplication` para invocar la aplicación y devolver la acción `StartCallRecording`.
+ Para iniciar la grabación de llamadas en respuesta a un evento SIP, devuelva la acción de `StartCallRecording` a su aplicación. 

Especifique si desea grabar la pista de audio para el tramo entrante, el tramo saliente o ambos. En las secciones siguientes se explica cómo utilizar la acción `StartCallRecording`.

**nota**  
Las grabaciones realizadas con esta característica pueden estar sujetas a las leyes o reglamentos relativos a la grabación de comunicaciones electrónicas. Es su responsabilidad y la de sus usuarios finales cumplir con todas las leyes aplicables en relación con la grabación, incluida la notificación adecuada a todos los participantes de una sesión o comunicación grabada de que la sesión o la comunicación se está grabando y obtener su consentimiento.

**Topics**
+ [Solicitar una StartCallRecording acción](#request-start)
+ [Especificación de un destino de grabación](#recording-destination)
+ [Conceder permisos de bucket de Amazon S3](#grant-s3-perms)
+ [Respuesta correcta de la acción](#action-successful)
+ [Respuesta incorrecta de la acción](#action-error)

## Solicitar una StartCallRecording acción
<a name="request-start"></a>

El siguiente ejemplo muestra cómo restringir la acción `StartCallRecording` a `BOTH` pistas.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "StartCallRecording",
            "Parameters":
            {
                "CallId": "call-id-1",
                "Track": "BOTH",
                "Destination":
                {
                    "Type": "S3",
                    "Location": "valid-bucket-name-and-optional-prefix"
                }
            }
        }
    ]
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la AWS Lambda función  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Pista**  
*Descripción*: `Track` de audio de la grabación de la llamada.  
*Valores permitidos*: `BOTH`, `INCOMING` o `OUTGOING`.  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Tipo de destino**  
*Descripción*: tipo de destino. Solo se permite Amazon S3.  
*Valores permitidos*: Amazon S3  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Ubicación de destino**  
*Descripción*: un bucket de Amazon S3 válido y un prefijo de clave de Amazon S3 opcional. El bucket debe tener permisos para la entidad principal de servicio de Amazon Chime SDK Voice Connector, voiceconnector.chime.amazonaws.com.  
*Valores permitidos*: una ruta de Amazon S3 válida para la que el Amazon Chime SDK tiene permisos para las acciones `s3:PutObject` y `s3:PutObjectAcl`.  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

## Especificación de un destino de grabación
<a name="recording-destination"></a>

Amazon Chime SDK proporciona grabaciones de llamadas a su bucket de Amazon S3. El depósito debe pertenecer a tu AWS cuenta. La ubicación del bucket se especifica en el parámetro `Destination` de la acción `StartCallRecording`. El campo `Type` del parámetro `Destination` debe ser `S3`. El campo `Location` consta de su bucket de Amazon S3 y un prefijo de clave de objeto opcional en el que se entrega la grabación de la llamada. 

La aplicación multimedia SIP utiliza la `Location` especificada, la fecha y hora del tramo de llamada, el identificador de transacción y el identificador de llamada para formatear la clave de objeto de Amazon S3. La respuesta a la acción `StartCallRecording` devuelve la clave de objeto completa de Amazon S3.

Si solo proporciona el bucket de Amazon S3 en el campo `Location`, la aplicación multimedia SIP añade un prefijo predeterminado, `Amazon-Chime-SMA-Call-Recordings`, a la ruta de Amazon S3. La aplicación multimedia SIP también agrega el año, el mes y el día de la hora de inicio de la llamada para ayudar a organizar las grabaciones. El siguiente ejemplo muestra el formato general de una ruta de Amazon S3 con el prefijo predeterminado. En este ejemplo `myRecordingBucket` se utiliza como valor de `Location`.

```
myRecordingBucket/Amazon-Chime-SMA-Call-Recordings/2019/03/01/2019–03–01–17–10–00–010_c4640e3b–1478–40fb-8e38–6f6213adf70b_7ab7748e–b47d–4620-ae2c–152617d3333c.wav
```

En el ejemplo siguiente se muestran los datos que se representan en la ruta de Amazon S3 de la grabación de la llamada.

```
s3Bucket/Amazon-Chime-SMA-Call-Recordings/year/month/date/year-month-date-hour-minute-second-millisecond_transactionId_callId.wav
```

Cuando proporciona el bucket de Amazon S3 y el prefijo de clave de objeto en el campo `Location`, la aplicación multimedia SIP utiliza su prefijo de clave de objeto en la ruta de Amazon S3 de destino en lugar del prefijo predeterminado. El siguiente ejemplo muestra el formato general de una llamada grabando la ruta de Amazon S3 con su prefijo. Por ejemplo, puede especificar myRecordingBucket /TechnicalSupport/English como. `Location` 

```
myRecordingBucket/technicalSupport/english/2019/03/01/2019–03–01–17–10–00–010_c4640e3b1478–40fb–8e38-6f6213adf70b_7ab7748e–b47d–4620–ae2c–152617d3333c.wav
```

En el siguiente ejemplo, se muestran los datos de la ruta de Amazon S3.

```
s3Bucket/yourObjectKeyPrefix/year/month/date/year-month-date-hour-minute-second-millisecond_transactionId_callId.wav
```

La grabación enviada a su bucket de Amazon S3 contiene [metadatos de objetos de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) adicionales sobre el tramo de llamada. En la siguiente tabla se muestran los metadatos de objetos de Amazon S3 admitidos.


| Name | Description (Descripción) | 
| --- | --- | 
| transaction-id | ID de transacción de la llamada de teléfono | 
| call-id | CallId del participante en la invocación de la función CallDetails AWS Lambda  | 
| recording-duration | Duración de la grabación de llamadas en segundos | 
| recording-audio-file-format | Formato de archivo de audio para grabación de llamadas representado como tipo de medio de Internet | 

## Conceder permisos de bucket de Amazon S3
<a name="grant-s3-perms"></a>

El bucket de Amazon S3 de destino debe pertenecer a la misma AWS cuenta que la aplicación. Además, la acción debe otorgar a `s3:PutObject` y `s3:PutObjectAcl` permiso a la entidad principal del servicio Amazon Chime SDK Voice Connector, `voiceconnector.chime.amazonaws.com`. En el siguiente ejemplo, se otorgan los permisos. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SIP media applicationRead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [                
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
	    "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

El servicio de audio PSTN lee y escribe en su bucket S3 en nombre de su aplicación multimedia Sip. Para evitar este [problema de suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), puede restringir los permisos del bucket S3 a una sola aplicación multimedia SIP.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SIP media applicationRead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [                
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
	    "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

## Respuesta correcta de la acción
<a name="action-successful"></a>

Cuando la grabación de la llamada se inicia correctamente en un tramo de llamada, la aplicación multimedia SIP invoca una AWS Lambda función con el tipo de `ACTION_SUCCESSFUL` evento. En la respuesta se recupera la ubicación de la grabación de la llamada. 

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "StartCallRecording",
        "Parameters": {
            "CallId": "call-id-1",
            "Track": "BOTH",
            "Destination": {
                "Type": "S3",
                "Location": "valid-bucket-name"
            }
        }
        "CallRecordingDestination": {
            "Type": "S3",
            "Location": "call-recording-bucket-and-key"
        }
    }
    "CallDetails": {
        ...
    }
}
```

## Respuesta incorrecta de la acción
<a name="action-error"></a>

En caso de errores de validación, la aplicación multimedia SIP llama a la AWS Lambda función con el mensaje de error correspondiente. En la siguiente tabla se muestran los mensajes de error.




| Error | Mensaje | Motivo | 
| --- | --- | --- | 
| `InvalidActionParameter` | El parámetro de acción `CallId` no es válido | Cualquier parámetro no es válido. | 
| `SystemException` | Error del sistema al ejecutar una acción. | Se ha producido otro tipo de error del sistema al ejecutar una acción. | 

Cuando la acción no graba el contenido multimedia de un tramo de llamada, la aplicación multimedia SIP invoca una función de AWS Lambda con el tipo de evento `ActionFailed`. 

El ejemplo siguiente muestra una respuesta de error típica.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "StartCallRecording",
        "Parameters": {
            "CallId": "call-id-1",
            "Track": "BOTH",
            "Destination": {
                "Type": "S3",
                "Location": "valid-bucket-name"
            }
        }
        "Error": "NoAccessToDestination: Error while accessing destination"
    }
    "CallDetails": {
        ...
    }
}
```

Consulte un ejemplo práctico en GitHub: [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# StopCallRecording
<a name="stop-call-recording"></a>

La acción `StopCallRecording` detiene la grabación de un tramo de llamada. La grabación se detiene automáticamente cuando finaliza una llamada y su aplicación no necesita devolver la acción `StopCallRecording` de forma explícita. Una vez que se detiene la grabación de una llamada, no se puede volver a iniciar y la grabación se envía al destino especificado en la acción `StartCallRecording`. 

En el siguiente ejemplo, se detiene la grabación del tramo de llamada `call-id-1`. 

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "StopCallRecording",
            "Parameters": {
                "CallId": "call-id-1"
            }
        }
    ]
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la función AWS Lambda   
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

[Vea un ejemplo práctico en GitHub: https://github.com/aws-samples/ amazon-chime-sma-on -demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# PauseCallRecording
<a name="pause-call-recording"></a>

La acción `PauseCallRecording` pausa la grabación de un tramo de llamada. Cada vez que pausa una grabación, la grabación captura un tono que indica la pausa. Al hacer una pausa, la grabación continúa, pero solo captura el silencio. La pausa en la grabación no afecta a la duración total de la grabación. Puede pausar y reanudar la grabación tantas veces como sea necesario.

El siguiente ejemplo hace una pausa en la grabación. 

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "PauseCallRecording",
            "Parameters": {
                "CallId": "call-id-1"
            }
        }
    ]
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la función AWS Lambda   
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

[Vea un ejemplo práctico en GitHub: https://github.com/aws-samples/ amazon-chime-sma-on -demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# ResumeCallRecording
<a name="resume-call-recording"></a>

La acción `ResumeCallRecording` reanuda la grabación de un tramo de llamada. Antes de que se reinicie la grabación, se reproduce un tono breve. Puede pausar y reanudar una grabación varias veces mientras dure la llamada. 

En el siguiente ejemplo, se reanuda la grabación. 

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "ResumeCallRecording",
            "Parameters": {
                "CallId": "call-id-1"
            }
        }
    ]
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la función AWS Lambda   
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

[Vea un ejemplo práctico en GitHub: https://github.com/aws-samples/ amazon-chime-sma-on -demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# CallAndBridge
<a name="call-and-bridge"></a>

Crea una llamada saliente a un número de teléfono de la PSTN o a un enlace troncal SIP configurado como un conector de voz del SDK de Amazon Chime o un grupo de conectores de voz del SDK de Amazon Chime y, a continuación, la enlaza con una llamada existente. Se usa `PSTN` cuando se llama a un número de teléfono y `AWS` cuando se llama a un enlace troncal SIP. 

Una llamada existente puede ser una llamada saliente creada mediante la [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html)API o una llamada entrante creada mediante una regla SIP que invoca la función con un evento. AWS Lambda `NewInboundCall` Al implementar una acción `CallAndBridge` en un punto de conexión de Voice Connector o grupo de conectores de voz, debe especificar el número de recurso de Amazon (ARN) del Voice Connector o grupo de conectores de voz.

También puedes añadir cabeceras SIP personalizadas a las llamadas y funciones salientes. AWS Lambda Los encabezados personalizados le permiten pasar valores como números de piso y códigos postales. Para obtener más información sobre los encabezados personalizados, consulte [Uso de encabezados SIP en el servicio de audio PTSN de Amazon Chime SDK](sip-headers.md).

Al utilizar la función de llamadas y puentes, es importante tener en cuenta que cada llamada se tiene en cuenta para el recuento de llamadas simultáneas activas que se utiliza para calcular los límites de llamadas activas de SMA. Teniendo esto en cuenta, al gestionar los límites de llamadas activas de SMA para llamadas y bridge, debe contar 2 llamadas por cada acción de llamada y bridge. Para obtener más información, consulte las [cuotas de voz y enlaces troncales SIP](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas) en. *Referencia general de AWS*

El siguiente código de ejemplo muestra una acción típica que enlaza con un punto de conexión de la PSTN.

```
{
    "SchemaVersion": "1.0",
    "Actions": [{
            "Type": "CallAndBridge",
            "Parameters": {
                "CallTimeoutSeconds": 30,
                "CallerIdNumber": "e164PhoneNumber", // required            
                "Endpoints": [{
                    "BridgeEndpointType": "PSTN", // required
                    "Uri": "e164PhoneNumber", // required                       
                }],
            }
        }
    ]
}
```

El siguiente ejemplo muestra una acción típica que utiliza un Voice Connector o un grupo de conectores de voz, además de un encabezado SIP personalizado.

```
{
   "SchemaVersion":"1.0",
   "Actions":[
      {
         "Type":"CallAndBridge",
         "Parameters":{
            "CallTimeoutSeconds":30,
            "CallerIdNumber": "e164PhoneNumber", // required
            "RingbackTone": { // optional
                    "Type": "S3",
                    "BucketName": "s3_bucket_name",
                    "Key": "audio_file_name"
                },
            "Endpoints":[
               {
                  "BridgeEndpointType":"AWS", // enum type, required                                  
                  "Arn":"arn:aws:chime:us-east-1:0123456789101:vc/abcdefg1hijklm2nopq3rs" //VC or VCG ARN, required for AWS endpoints
                  "Uri":"ValidString", // required, see description below  
               }
            ],
            "SipHeaders": { 
                "x-String":"String"
            }
         }
      }
   ]
}
```

**CallTimeoutSeconds**  
*Descripción*: el intervalo antes de que se agote el tiempo de espera de una llamada. El temporizador se inicia al configurar la llamada.  
*Valores permitidos*: entre 1 y 120, ambos inclusive  
*Obligatorio:* no  
*Valor predeterminado:* 30

**CallerIdNumber**  
*Descripción*: un número que pertenece al cliente o el número de origen del tramo A  
*Valores permitidos*: un número de teléfono válido en formato E.164  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Endpoints**  
*Descripción*: los puntos de conexión de una llamada  
*Valores permitidos*:   
+ `BridgeEndpointType`— `AWS` para Voice Connectors y grupos de conectores de voz; en caso contrario `PSTN`.
+ `Arn`— El ARN de un Voice Connector o grupo de conectores de voz. Solo se requiere cuando se usa `AWS` como `BridgeEndpointType`. 
+ `Uri`— El valor del URI depende del tipo de punto de conexión.

  Para los puntos de conexión de `PSTN`, el URI debe ser un número de teléfono E.164 válido.

  En el caso de los puntos de conexión de `AWS`, el valor del URI establece la parte `user` del `Request-URI`. Debe utilizar el formato [Backus-Naur aumentado](https://datatracker.ietf.org/doc/html/rfc2234). Longitud requerida: entre 1 y 36, ambos inclusive. Use los siguientes valores: `a-z, A-Z, 0-9, &, =, +, $, /, %, -, _, !, ~, *, `(`,`), (`.`)

  El valor de host del `Request-URI` se deriva de las rutas de entrada del Voice Connector de destino. En el ejemplo siguiente se muestra una acción de `CallAndBridge` con un punto de conexión de `AWS`.

  ```
  {
     "SchemaVersion":"1.0",
     "Actions":[
        {
           "Type":"CallAndBridge",
           "Parameters":{
              "CallTimeoutSeconds":30,
              "CallerIdNumber": "+18005550122",
              "Endpoints":[
                 {
                    "BridgeEndpointType":"AWS",                                   
                    "Arn":"arn:aws:chime:us-east-1:0123456789101:vc/abcdefg1hijklm2nopq3rs", 
                    "Uri":"5550"   
                 }
              ],
              "SipHeaders": { 
                  "x-String":"String"
              }
           }
        }
     ]
  }
  ```

  Para obtener más información sobre las rutas entrantes y los conectores de voz, consulte [Edición de la configuración del Voice Connector de Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/ag/edit-voicecon.html).
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**SipHeaders**  
*Descripción*: le permite pasar valores adicionales. Úselo solo con el tipo de punto de conexión de `AWS`.  
*Valores permitidos*: encabezado SIP válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

En el ejemplo siguiente, se muestra una acción de `CallAndBridge` correcta que utiliza un punto de conexión de PSTN:

```
{
   "SchemaVersion": "1.0",
   "Sequence": 3,
   "InvocationEventType": "ACTION_SUCCESSFUL",
   "ActionData": {
      "Type": "CallAndBridge",
      "Parameters": {
         "CallTimeoutSeconds": 30,
         "CallerIdNumber": "e164PhoneNumber",
         "Endpoints":[
            {
               "BridgeEndpointType": "PSTN",
               "Uri": "e164PhoneNumber"               
            }
         ],
         "CallId": "call-id-1"
      }
   },
   "CallDetails":{
      .....
      .....
      "Participants":[
         {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            .....   
            "Status": "Connected"
         },
         {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B",
            .....
            "Status": "Connected"
         }
      ]
   }
}
```

En el ejemplo siguiente se muestra una acción de `CallAndBridge` fallida.

```
{
   "SchemaVersion": "1.0",
   "Sequence":2,
   "InvocationEventType": "ACTION_FAILED",
      "ActionData":{
      "Type": "CallAndBridge",
      "Parameters":{
         "CallTimeoutSeconds": 30,
         "CallerIdNumber": "e164PhoneNumber",
         "Endpoints": [
            {
               "BridgeEndpointType": "PSTN",
               "Uri": "e164PhoneNumber"           
            }
         ],
         "CallId": "call-id-1"
      },
      "ErrorType": "CallNotAnswered",
      "ErrorMessage": "Call not answered"
   },
   "CallDetails":{
      .....
      .....
      "Participants":[
         {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            .....   
         }
      ]
   }
}
```

## Flujos de llamadas
<a name="call-bridge-flows"></a>

La acción de `CallAndBridge` proporciona una señalización de llamada y una experiencia de audio diferentes para un tramo de llamada existente, en función de los parámetros y de si el tramo está conectado.

El siguiente diagrama muestra los flujos de llamadas con diferentes parámetros cuando el tramo A de una llamada entrante ya está conectado.

![\[El flujo de una llamada respondida a lo largo de la acción de CallAndBridge.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


En el siguiente diagrama se muestra el flujo de llamadas de una llamada sin respuesta.

![\[El flujo de una llamada no respondida a lo largo de la acción de CallAndBridge.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**Detalles adicionales**  
Recuerde estos datos sobre la acción de `CallAndBridge`.
+ `CallTimeoutSeconds`: este temporizador se inicia cuando se envía la invitación SIP por el tramo B. Puede establecer un valor objetivo deseado, pero los operadores de primera línea pueden ignorarlo.
+ `CallerIdNumber`: este número de teléfono debe pertenecer al cliente o ser el número de origen de un tramo A.
+ **Comportamiento de bloqueo y casos extremos**: si un tramo de llamada cuelga, el otro no cuelga automáticamente la llamada. Cuando se envía un `Hangup` evento a la AWS Lambda función, el tramo restante debe desconectarse de forma independiente. Si un tramo de llamada queda pendiente, la llamada se facturará hasta que se cuelgue. Por ejemplo, el siguiente escenario puede provocar cargos inesperados:
  + Intenta conectarse a un número de teléfono de destino. El destino está ocupado y envía la llamada directamente al buzón de voz. Desde la perspectiva del servicio de audio, ir al correo de voz es una llamada respondida. El tramo A cuelga, pero el tramo B sigue escuchando el mensaje del correo de voz. Mientras el tramo B escucha, se le factura a usted.
  + Como práctica recomendada, utilice la AWS Lambda función, o la persona que esté al otro lado de la llamada, para colgar cada tramo de la llamada de forma independiente.
+ **Facturación**: se le facturará según se detalla a continuación cuando utilice `CallAndBridge`:
  + Minutos de llamada activos para cada tramo de llamada creado (tramo A, tramo B, etc.) a la PSTN.
  + Minutos de uso del servicio de audio.

Vea ejemplos prácticos sobre GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)
+ [https://github.com/aws-samples/amazon-chime-sma-call-reenvío](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-on-grabación por demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# Hangup
<a name="hangup"></a>

Envíe un valor `Hangup` con `SipStatusCode` a cualquier tramo de una llamada.

Cuando el servicio de audio ejecuta una acción de `Hangup` en un tramo de llamada:
+ En el caso de una llamada con un solo tramo, la aplicación multimedia SIP invoca la AWS Lambda función con un `HANGUP` evento e ignora la respuesta. A continuación, se desconecta la llamada.
+ Para un tramo de llamada (tramo A) que está enlazado con otro tramo de llamada (tramo B), si la acción `Hangup` está asociada al tramo de llamada puenteado (tramo B), el servicio de audio PSTN desconecta el tramo de llamada puenteado y, a continuación, invoca la función de Lambda con un evento `HANGUP` para el tramo B. El servicio de audio PSTN ejecuta entonces cualquier acción devuelta por esa invocación de Lambda.
+ Para un tramo de llamada (tramo A) que está enlazado con otro tramo de llamada (tramo B), si la acción `Hangup` está asociada al tramo de llamada original (tramo A), el servicio de audio PSTN desconecta el tramo de llamada original y, a continuación, invoca la función de Lambda con un evento `HANGUP` para el tramo A. El servicio de audio PSTN ejecuta entonces cualquier acción devuelta por esa invocación de Lambda.
+ En el caso de un tramo de llamada que se unió a una reunión mediante la acción `JoinMeeting`, si la acción `Hangup` está asociada al tramo de la reunión (normalmente el tramo B), la persona que llama se desconecta de la reunión y recibe un evento `ACTION_SUCCESSFUL` para la acción `Hangup`.

A continuación se muestra una acción típica de `Hangup`.

```
{
    "Type": "Hangup",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "SipResponseCode": "0"
    }
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la función AWS Lambda   
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`  
*Valores permitidos*: `LEG-A` o `LEG-B`  
*Obligatorio:* no  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado ignorado si se especifica el `CallId`

**SipResponseCode**  
*Descripción*: cualquiera de los códigos de respuesta SIP compatibles  
*Valores permitidos*: 480: no disponible; 486: ocupado; 0: terminación normal  
*Obligatorio:* no  
*Valor predeterminado:* 0

Cuando un usuario finaliza una llamada, la aplicación multimedia SIP invoca una AWS Lambda función con el código que aparece en. [Uso del servicio de audio PSTN de Amazon Chime SDK para terminar una llamada](case-5.md)

Consulte algunos ejemplos prácticos sobre GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)
+ [https://github.com/aws-samples/amazon-chime-sma-call-reenvío](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificaciones de llamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-grabación por demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# JoinChimeMeeting
<a name="join-chime-meeting"></a>

Para unirse a una reunión de Amazon Chime SDK, proporcione el token de acceso de los asistentes. Para ello, debe realizar llamadas AWS del SDK al [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html) y [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html) APIs para obtener el token y transmitirlo en la acción. Consulte el siguiente ejemplo. 

**nota**  
No puede ejecutar esta acción en una llamada puente.

```
{
    "Type": "JoinChimeMeeting",
    "Parameters": {
        "JoinToken": "meeting-attendee-join-token",
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "MeetingId": "meeting-id"
    }
}
```

**JoinToken**  
*Descripción*: un token de unión válido del asistente a la reunión de Amazon Chime SDK  
*Valores permitidos:* token de unión válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la AWS Lambda función  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`  
*Valores permitidos*: -`LEG-A`  
*Obligatorio:* no  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado ignorado si se especifica el `CallId`

**MeetingId**  
*Descripción*: un ID de reunión de Amazon Chime SDK válido asociado al `JoinToken`. Si la reunión se creó mediante una API en el espacio de nombres [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html), no se requiere el ID de la reunión. Si la reunión se creó mediante una API en el espacio de nombres de [Amazon Chime SDK Meetings](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html), se requiere el ID de la reunión. Se accede a la reunión mediante el punto de conexión de la API utilizado para crear la reunión.  
*Valores permitidos*: un identificador de reunión válido.  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

La aplicación multimedia SIP siempre invoca una AWS Lambda función después de ejecutar esta acción. Devuelve el tipo de evento `ACTION_SUCCESSFUL` o el tipo de evento `ACTION_FAILED` de invocación. En el siguiente ejemplo se muestra una estructura de eventos de invocación correcta.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEvent": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "JoinChimeMeeting",
        "Parameters": {
            "JoinToken": "meeting-attendee-join-token",
            "CallId": "call-id-1"
            "ParticipantTag": "LEG-A"
        }
    }
    "CallDetails": {
        ...
    }
}
```

**Gestión de errores**  
Cuando se produce un error de validación al cerrar una reunión, la aplicación SIP llama a su AWS Lambda función con uno de los mensajes de error que se muestran en la siguiente tabla.


|  Error  |  Mensaje  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  El valor del parámetro `JoinToken` no es válido.  |  Falta alguno de los demás parámetros de la acción o no es válido.  | 
|  `SystemException`  |  Error del sistema al ejecutar la acción.  |  Se ha producido otro tipo de error de sistema al ejecutar la acción.  | 

En el siguiente ejemplo, se muestra un evento típico de fallo.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEvent": "ACTION_FAILED",
    "ActionData": {
        "Type": "JoinChimeMeeting",
        "Parameters": {
            "JoinToken": "meeting-attendee-join-token",
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        },
        "Error": "ErrorJoiningMeeting: Error while joining meeting."
    }
    "CallDetails": {
        ...
    }
}
```

[Vea un ejemplo práctico en GitHub: -call https://github.com/aws-samples/ amazon-chime-sma-update](https://github.com/aws-samples/amazon-chime-sma-update-call)

# ModifyChimeMeetingAttendee (activación y desactivación del audio)
<a name="mute-unmute"></a>

Permite que la aplicación multimedia SIP modifique el estado de un asistente de telefonía al proporcionar el ID de reunión de Amazon Chime SDK y la lista de asistentes.

**nota**  
Actualmente, esta acción admite las operaciones de silenciamiento y reactivación del silencio de los asistentes de telefonía. Además, el usuario debe unirse a una reunión mediante la acción `JoinChimeMeeting`. Esta acción se puede realizar en un `participantTag=“LEG-B”`, o en un `CallId` correspondiente. 

Esta acción solo se aplica al CallLeg que se une desde la aplicación multimedia SIP al `"+` *13605550122* `"` LEG-B o al tramo que se une desde la aplicación multimedia SIP a la reunión.

```
{
"SchemaVersion": "1.0",
  "Actions": [
    {
      "Type" : "ModifyChimeMeetingAttendees",
      "Parameters" : {
        "Operation": "Mute",
        "MeetingId": "meeting-id",
        "CallId": "call-id",
        "ParticipantTag": LEG-B",
        "AttendeeList": ["attendee-id-1", "attendee-id-2"]
      }
    }
  ]
}
```

**Operation**  
*Descripción:* la operación que se debe realizar en la lista de asistentes  
*Valores permitidos*: silenciar, reactivar el silencio  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**MeetingId**  
*Descripción*: el ID de la reunión a la que pertenecen los asistentes  
*Valores permitidos*: un identificador de reunión válido. La persona que silencia o desactiva el sonido también debe pertenecer a la reunión.  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**CallId**  
*Descripción*: el ID de la reunión a la que pertenecen los asistentes  
*Valores permitidos*: un identificador de llamada válido.  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la etiqueta asignada al asistente.  
*Valores permitidos*: una etiqueta válida.  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**AttendeeList**  
*Descripción*: lista de asistentes IDs a los que se debe silenciar o reactivar  
*Valores permitidos: lista* de asistentes válidos IDs  
*Obligatorio*: sí  
*Valor predeterminado*: ninguno, máximo 100

Tras ejecutar esta acción, Audio Service siempre invoca una función de AWS Lambda con el tipo de evento de invocación `ACTION_SUCCESSFUL` o `ACTION_FAILED`. En el siguiente ejemplo de código se muestra un evento `ACTION_SUCCESSFUL` de invocación típico.

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "ModifyChimeMeetingAttendees",
        "Parameters" : {
            "Operation": "Mute",
            "MeetingId": "meeting-id",
            "CallId": "call-id",
            "ParticipantTag": "LEG-B",
            "AttendeeList": ["attendee-id-1", "attendee-id-2"]
        }
    }
    "CallDetails": {
        ...
    }
}
```

**Gestión de errores**  
En los casos de parámetros de instrucción no válidos o errores en la API, las aplicaciones multimedia SIP llaman a una AWS Lambda función con el mensaje de error específico de la instrucción o API fallida.


|  Error  |  Mensaje  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  El valor del parámetro `ModifyChimeMeetingAttendees Operation` no es válido.  |  El valor de `Operation` debe ser silenciado o no silenciado.  | 
|     |  El valor del parámetro de ID de reunión no es válido.  |  La ID de la reunión está vacía.  | 
|     |  El valor del parámetro de la lista de asistentes no es válido.  |  La lista de identificadores de asistentes está vacía o supera el máximo de 100.  | 
|     |  Acción no válida en la llamada.  |  La llamada no está gestionada.  | 
|     |  La llamada no está conectada a Chime Meeting.  |  El asistente no está conectado a una reunión de Chime.  | 
|     |  Uno o más asistentes no forman parte de esta reunión. Todos los asistentes deben ser parte de esta reunión.  |  El asistente no está autorizado a modificar a los asistentes a la reunión.  | 
|  `SystemException`  |  Error del sistema al ejecutar la acción.  |  Se ha producido un error del sistema al ejecutar una acción.  | 

En el siguiente ejemplo de código se muestra un evento de error típico:

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "ModifyChimeMeetingAttendees",
        "Parameters" : {
            "Operation": "Mute",
            "MeetingId": "meeting-id",
            "CallId": "call-id",
            "ParticipantTag": "LEG-B",
            "AttendeeList": ["attendee-id-1", "attendee-id-2"]
        },
        "ErrorType": "",
        "ErrorMessage": "",
        "ErrorList": []
    }
    "CallDetails": {
        ...
    }
}
```

Consulte algunos ejemplos prácticos en GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-update-llamar](https://github.com/aws-samples/amazon-chime-sma-update-call)

# Pause
<a name="pause"></a>

Pause una llamada durante un tiempo específico.

```
{
    "Type": "Pause",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "DurationInMilliseconds": "3000"
    }
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la AWS Lambda función  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`  
*Valores permitidos*: `LEG-A` o `LEG-B`  
*Obligatorio:* no  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado ignorado si se especifica el `CallId`

**DurationInMilliseconds**  
*Descripción*: duración de la pausa en milisegundos  
*Valores permitidos*: un número entero superior a 0  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

Vea ejemplos prácticos sobre GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificaciones de llamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-grabación por demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# PlayAudio
<a name="play-audio"></a>

Reproduzca un archivo de audio en cualquier parte de una llamada. El audio se puede repetir tantas veces como se desee. El audio en curso se puede terminar utilizando los dígitos DTMF configurados en `PlaybackTerminators`.

En la actualidad, Amazon Chime SDK solo habilita a reproducir archivos de audio del bucket de Amazon Simple Storage Service (Amazon S3). El bucket de S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. Además, debe conceder el permiso `s3:GetObject` a la entidad principal del servicio Amazon Chime SDK Voice Connector. Para ello, puede usar la consola de S3 o la interfaz de la línea de comandos (CLI).

El siguiente ejemplo de código muestra una política de bucket típica.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

El servicio de audio lee y escribe en su bucket de S3 en nombre de su aplicación multimedia Sip. Para evitar el [problema de adjunto confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), puede restringir el acceso al bucket de S3 a una única aplicación multimedia SIP.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

El siguiente ejemplo de código muestra una acción típica.

```
{
    "Type": "PlayAudio",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "PlaybackTerminators": ["1", "8", "#"],
        "Repeat": "5",
        "AudioSource": {
            "Type": "S3",
            "BucketName": "valid-S3-bucket-name",
            "Key": "wave-file.wav"
        }
    }
}
```

**CallID**  
*Descripción*: la `CallId` del participante en los `CallDetails`.  
*Valores permitidos*: un identificador de llamada válido.  
*Obligatorio*: no, si `ParticipantTag` está presente.  
*Valor predeterminado:* ninguno.

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`.  
*Valores permitidos:* `LEG-A` o `LEG-B`.  
*Obligatorio*: no, si `CallId` está presente.  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado. Se omite si se especifica `CallId`.

**PlaybackTerminator**  
*Descripción*: finaliza el audio en curso mediante la entrada DTMF del usuario  
*Valores permitidos*: matriz de los siguientes valores: «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «\$1», «\$1»  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**Repeat**  
*Descripción*: repite el audio el número de veces especificado  
*Valores permitidos*: un número entero mayor que cero  
*Obligatorio:* no  
*Valor predeterminado*: 1

**AudioSource.Type**  
*Descripción*: tipo de fuente del archivo de audio.  
*Valores permitidos*: S3.  
*Obligatorio*: sí.  
*Valor predeterminado:* ninguno.

**AudioSource.BucketName**  
*Descripción*: para los tipos de fuentes S3, el bucket S3 debe pertenecer a la misma AWS cuenta que la aplicación SIP. El bucket debe tener acceso a la entidad principal de Amazon Chime SDK Voice Connector, que es voiceconnector.chime.amazonaws.com.  
*Valores permitidos*: un bucket de S3 válido para el que Amazon Chime SDK tiene acceso a la acción de `s3:GetObject`.  
*Obligatorio*: sí.  
*Valor predeterminado:* ninguno.

**AudioSource.key**  
*Descripción*: para los tipos de fuentes de S3, el nombre del archivo del bucket de S3 especificado en el atributo `AudioSource.BucketName`.  
*Valores permitidos*: un archivo de audio válido.  
*Obligatorio*: sí.  
*Valor predeterminado:* ninguno.

La aplicación multimedia SIP intenta reproducir el audio desde la URL de origen. Puede utilizar archivos.wav PCM sin procesar y sin comprimir de un tamaño no superior a 50 MB. El SDK de Amazon Chime recomienda 8 en mono KHz .

Cuando la última instrucción de un plan de marcado es `PlayAudio` y el archivo termina de reproducirse, o si un usuario detiene la reproducción al pulsar una tecla, la aplicación invoca la AWS Lambda función con el evento que se muestra en el siguiente ejemplo.

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "valid-S3-bucket-name",
                "Key": "wave-file.wav",
         }           
     }
}
```

Cuando un dígito final detenga el audio, no se repetirá.

**Gestión de errores**  
Cuando el archivo de validación contiene errores o se produce un error al ejecutar una acción, la aplicación multimedia SIP llama a una AWS Lambda función con el código de error correspondiente.


|  Error  |  Mensaje  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  El parámetro de la fuente de audio no es válido.  |  Este error puede producirse por varios motivos. Por ejemplo, la aplicación multimedia SIP no puede acceder al archivo debido a problemas con los permisos o con la URL. O bien, es posible que el archivo de audio no pase la validación debido al formato, la duración, el tamaño, etc.  | 
|  `SystemException`  |  Error del sistema al ejecutar la acción.  |  Se ha producido otro error del sistema al ejecutar la acción.   | 
|  `InvalidActionParameter`  |  CallId o ParticipantTag el parámetro de acción no es válido.  |  La acción contiene un parámetro no válido.  | 

El siguiente ejemplo de código muestra un error de invocación típico.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file.wav"
            },
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        ...
    }
}
```

Consulte los ejemplos prácticos en GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-call-reenvío](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificaciones de llamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-grabación por demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-llamada](https://github.com/aws-samples/amazon-chime-sma-update-call)

# PlayAudioAndGetDigits
<a name="play-audio-get-digits"></a>

Reproduce audio y recopila dígitos DTMF. Si se produce un error, por ejemplo, si el usuario no introduce el número correcto de dígitos del DTMF, la acción reproduce el audio “defectuoso” y, a continuación, reproduce el audio principal hasta que la aplicación multimedia SIP agote el número de intentos definido en el parámetro `Repeat`.

Debe reproducir archivos de audio del bucket de S3. El bucket S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. Además, debe conceder el permiso `s3:GetObject` a la [entidad principal del servicio Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`. Para ello, puede utilizar la consola de S3 o la CLI. 

La política de bucket de S3 típica se muestra en el ejemplo de código siguiente.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

El servicio de audio lee y escribe en su bucket de S3 en nombre de su aplicación multimedia Sip. Para evitar el [problema de adjunto confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), puede restringir el acceso al bucket de S3 a una única aplicación multimedia SIP.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

A continuación se muestra una acción típica de `PlayAudioAndGetDigits`. 

```
{
    "Type" : "PlayAudioAndGetDigits",
    "Parameters" : {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A"      
        "InputDigitsRegex": "^\d{2}#$",
        "AudioSource": {
            "Type": "S3",
            "BucketName": "bucket-name",
            "Key": "audio-file-1.wav"
        },
        "FailureAudioSource": {
            "Type": "S3",
            "BucketName": "bucket-name",
            "Key": "audio-file-failure.wav"
        },
        "MinNumberOfDigits": 3,
        "MaxNumberOfDigits": 5,
        "TerminatorDigits": ["#"],        
        "InBetweenDigitsDurationInMilliseconds": 5000,
        "Repeat": 3,
        "RepeatDurationInMilliseconds": 10000
    }
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la AWS Lambda función  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`  
*Valores permitidos*: `LEG-A` o `LEG-B`  
*Obligatorio:* no  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado ignorado si se especifica el `CallId`

**InputDigitsRegex**  
*Descripción:* patrón de expresión regular  
*Valores permitidos*: un patrón de expresión regular válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**AudioSource.Type**  
*Descripción*: tipo de fuente para el tipo de archivo de audio  
*Valores permitidos*: un bucket S3  
*Obligatorio*: sí  
*Valor predeterminado:* - `"S3"`

**AudioSource.BucketName**  
*Descripción*: para `AudioSource.Type` los valores de S3, el bucket de S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. El bucket S3 debe tener acceso al servidor de la [entidad principal de Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`.  
*Valores permitidos*: un bucket de S3 válido al que Amazon Chime SDK tiene acceso a las acciones de `s3:GetObject`.  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**AudioSource.Key**  
*Descripción*: el nombre clave del objeto de audio del `AudioSource.BucketName` del bucket de S3.  
*Valores permitidos*: archivos de audio válidos  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**FailureAudioSource.Type**  
*Descripción*: el nombre clave del objeto de audio del `FailureAudioSource.BucketName` del bucket de S3.  
*Valores permitidos*: S3  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**FailureAudioSource.BucketName**  
*Descripción*: para los tipos de fuentes S3, el bucket S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. La [entidad principal del servicio Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`, debe tener acceso al bucket de S3.  
*Valores permitidos*: un bucket de S3 válido al que Amazon Chime SDK tiene acceso a las acciones de `s3:GetObject`.  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**FailureAudioSource.Key**  
*Descripción*: el nombre clave del objeto de audio del `FailureAudioSource.BucketName` del bucket de S3.  
*Valores permitidos*: archivos de audio válidos  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**MinNumberOfDigits**  
*Descripción*: el número mínimo de dígitos que se deben capturar antes de que se agote el tiempo de espera o se reproduzca el audio de “llamada fallida”.  
*Valores permitidos*: – >=0  
*Obligatorio:* no  
*Valor predeterminado:* 0

**MaxNumberOfDigits**  
*Descripción*: el número máximo de dígitos que se deben capturar antes de detenerse sin un dígito final.  
*Valores permitidos:* – >`MinNumberOfDigits`  
*Obligatorio:* no  
*Valor predeterminado*: 128

**TerminatorDigits**  
*Descripción*: dígitos que se utilizan para finalizar la entrada si el usuario introduce un número inferior al `MaxNumberOfDigits`  
*Valores permitidos*: cualquiera de estos dígitos: 0123456789\$1\$1  
*Obligatorio:* no  
*Valor predeterminado*: \$1

**InBetweenDigitsDurationInMilliseconds**  
*Descripción*: el tiempo de espera en milisegundos entre las entradas de dígitos antes de la reproducción de `FailureAudio`.  
*Valores permitidos*: >0  
*Obligatorio:* no  
*Valor predeterminado*: si no se especifica, el valor predeterminado es `RepeatDurationInMilliseconds`.

**Repeat**  
*Descripción*: número total de intentos de obtener dígitos  
*Valores permitidos*: >0  
*Obligatorio:* no  
*Valor predeterminado*: 1

**RepeatDurationInMilliseconds**  
*Descripción*: tiempo de espera en milisegundos entre intentos de `Repeat`  
*Valores permitidos*: >0  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

La aplicación multimedia SIP siempre invoca su AWS Lambda función después de ejecutar la `PlayAudioAndGetDigits` acción, con un tipo de evento de `ACTION_FAILED` invocación `ACTION_SUCCESSFUL` o. Cuando la aplicación recopila dígitos correctamente, establece el valor `ReceivedDigits` del objeto `ActionData`. El siguiente ejemplo muestra la estructura de eventos de invocación de esa función. AWS Lambda 

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            "InputDigitsRegex": "^\d{2}#$",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-1.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-failure.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    },
        "ReceivedDigits": "1234"
    },
    "CallDetails": {
        ...
    }
}
```

**Gestión de errores**  
Cuando se produce un error de validación, la aplicación multimedia SIP llama a la función AWS Lambda con el mensaje de error correspondiente. En la siguiente tabla se enumeran los posibles mensajes de error.


|  Error  |  Mensaje  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  El valor del parámetro de la fuente de audio no es válido.  |  Este error puede producirse por varios motivos. Por ejemplo, la aplicación multimedia SIP no puede acceder al archivo debido a problemas con los permisos o con el bucket de S3. O bien, es posible que el archivo de audio no se valide debido a su duración, tamaño o formato no compatible.  | 
|  `InvalidActionParameter`  |  El parámetro `CallId` o `ParticipantTag` de la acción no es válido.  |  Un `CallId`, `ParticipantTag`, u otro parámetro no es válido.  | 
|  `SystemException`  |  Error del sistema al ejecutar la acción.  |  Se ha producido un error del sistema al ejecutar la acción.  | 

Cuando la acción no recopila el número de dígitos especificado debido a un tiempo de espera o a demasiados reintentos, la aplicación multimedia SIP invoca la AWS Lambda función con el `ACTION_FAILED` tipo de evento de invocación.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            "InputDigitsRegex": "^\d{2}#$",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-1.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-failure.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        ...
    }
}
```

Consulte algunos ejemplos prácticos sobre: GitHub
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-update-llamar](https://github.com/aws-samples/amazon-chime-sma-update-call)

# ReceiveDigits
<a name="listen-to-digits"></a>

Cuando un usuario introduce dígitos que coinciden con el patrón de expresión regular especificado en esta acción, la aplicación multimedia SIP invoca la AWS Lambda función.

```
{
    "Type": "ReceiveDigits",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "InputDigitsRegex": "^\d{2}#$",
        "InBetweenDigitsDurationInMilliseconds": 1000, 
        "FlushDigitsDurationInMilliseconds": 10000
    }
}
```

**CallId**  
*Descripción*: `CallId` del participante en la `CallDetails` invocación de la AWS Lambda función  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`  
*Valores permitidos*: `LEG-A` o `LEG-B`  
*Obligatorio:* no  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado ignorado si se especifica el `CallId`

**InputDigitsRegex**  
*Descripción:* patrón de expresión regular  
*Valores permitidos*: un patrón de expresión regular válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**InBetweenDigitsDurationInMilliseconds**  
*Descripción*: intervalo entre dígitos antes de comprobar si la entrada coincide con el patrón de expresión regular  
*Valores permitidos*: duración en milisegundos  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**FlushDigitsDurationInMilliseconds**  
*Descripción*: intervalo tras el cual los dígitos DTMF recibidos se vacían y se envían a la función. AWS Lambda Si la aplicación multimedia SIP recibe un nuevo dígito una vez finalizado el intervalo, el temporizador se reiniciará.  
*Valores permitidos*: -`InBetweenDigitsDurationInMilliseconds`  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

La aplicación multimedia SIP descarta los dígitos del DTMF durante la llamada hasta que reciba una nueva acción `ReceiveDigits`. El intervalo `FlushDigitsDurationInMilliseconds` comienza cuando la aplicación multimedia SIP recibe el primer dígito del DTMF. Si el usuario introduce los dígitos correctos antes de que caduque el intervalo, la aplicación multimedia SIP invoca la función descrita en. AWS Lambda [Recepción de una llamada entrante mediante el servicio de audio PSTN de Amazon Chime SDK](case-4.md)

Si la entrada del usuario no coincide con el patrón de expresiones regulares, la aplicación multimedia SIP repite el mensaje del archivo de audio «fallido» hasta que la aplicación agote el recuento de repeticiones o hasta que el usuario introduzca dígitos válidos. 

Consulte algunos ejemplos prácticos sobre GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificaciones de llamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-grabación por demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-llamada](https://github.com/aws-samples/amazon-chime-sma-update-call)

# RecordAudio
<a name="record-audio"></a>

Permite que la aplicación multimedia SIP grabe contenido multimedia desde un identificador de llamada determinado. Por ejemplo, una aplicación de correo de voz y anuncios para los participantes de una reunión. La aplicación graba hasta que alcanza la duración establecida, o cuando un usuario pulsa una de ellas o cuando la aplicación `RecordingTerminators` detecta silencio. En esos casos, la acción indica a la aplicación que coloque el archivo multimedia resultante en el bucket de S3 especificado. El bucket S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. Además, la acción debe conceder a `s3:PutObject` y `s3:PutObjectAcl` permiso a la entidad principal del servicio Amazon Chime SDK Voice Connector, a la entidad principal del servicio del conector de [voz de Amazon Chime SDK](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`. 

**nota**  
Las grabaciones realizadas con esta característica pueden estar sujetas a las leyes o reglamentos relativos a la grabación de comunicaciones electrónicas. Es su responsabilidad y la de sus usuarios finales cumplir con todas las leyes aplicables en relación con la grabación, incluida la notificación adecuada a todos los participantes de una sesión o comunicación grabada de que la sesión o la comunicación se está grabando y obtener su consentimiento.

El siguiente ejemplo otorga el permiso a `s3:PutObject` y `s3:PutObjectAcl` y el permiso a la entidad principal de servicio Amazon Chime SDK Voice Connector.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [                
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*"
        }
    ]
}
```

------

En el siguiente ejemplo, se detiene la grabación cuando la persona que llama pulsa la tecla mayúscula (\$1), o si transcurren 10 segundos sin actividad, o cuando la persona que llama permanece en silencio durante 3 segundos y escribe el archivo multimedia resultante en la ubicación definida por el parámetro `RecordingDestination`.

**nota**  
Este ejemplo utiliza el parámetro `CallId`. Puede usar el parámetro `ParticipantTag` en su lugar, pero no puede usar ambos.

```
{
    "Type": "RecordAudio",
    "Parameters": {
        "CallId": "call-id-1",
        "DurationInSeconds": "10",
        "SilenceDurationInSeconds": 3,
        "SilenceThreshold": 100,
        "RecordingTerminators": [
            "#"
        ],
        "RecordingDestination": {
            "Type": "S3",
            "BucketName": "valid-bucket-name",
            "Prefix": "valid-prefix-name"
        }
    }
}
```

**CallId**  
*Descripción*: `CallId` del participante en la invocación `CallDetails` de la AWS Lambda función  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`  
*Valores permitidos*: `LEG-A` o `LEG-B`  
*Obligatorio:* no  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado ignorado si se especifica el `CallId`

**RecordingDestination.Type**  
*Descripción:* tipo de destino. Solo S3.  
*Valores permitidos*: S3  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**RecordingDestination.BucketName**  
*Descripción:* un nombre de bucket de S3 válido. El bucket debe tener acceso a la [entidad principal de servicio de Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`.  
*Valores permitidos*: un bucket de S3 válido al que Amazon Chime SDK tiene acceso a las acciones `s3:PutObject` y `s3:PutObjectAcl`.  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

****RecordingDestination.Prefix****  
*Descripción:* prefijo S3 del archivo de grabación  
*Valores permitidos*: un nombre de prefijo válido que contiene hasta 979 caracteres seguros. Para obtener más información acerca de los caracteres seguros, consulte la sección de [caracteres seguros](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines-safe-characters) de la Guía del usuario de Amazon Simple Storage Service.  
*Obligatorio:* no  
*Valor predeterminado*: ninguno. Si no se especifica, las grabaciones se guardan en la raíz del bucket de S3.

**DurationInSeconds**  
*Descripción*: duración, en segundos, de la grabación  
*Valores permitidos*: >0  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

****SilenceDurationInSeconds****  
*Descripción*: la duración del silencio en segundos, tras la cual se detiene la grabación. Si no se especifica, la detección de silencio está desactivada  
*Valores permitidos*: [1; 1000]  
*Obligatorio:* no  
*Valor predeterminado:* 200

****SilenceThreshold****  
*Descripción*: nivel de ruido que se considera “silencio”. Si no especifica la `SilenceDurationInSeconds`, este parámetro se ignora.  

**Valores de referencia (niveles y umbrales de ruido para tratar el ruido como silencio):**
+ De 1 a 30 dB o menos, como en una habitación silenciosa
+ De 100 a 40-50 dB, como en una oficina silenciosa o un suspiro
+ De 200 a 60 dB, como en una oficina abarrotada
+ De 1000 a 75 dB, como una persona o música ruidosa
*Valores permitidos*: [1; 1000]  
*Obligatorio:* no  
*Valor predeterminado:* 200

**RecordingTerminators**  
*Descripción*: enumera todos los terminadores de grabación disponibles.  
*Valores permitidos*: matriz de un solo dígito y símbolos de [123456789\$10\$1]  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

## Gestión de los eventos ACTION\$1SUCCESSFUL
<a name="handle-action-successful"></a>

Cuando finaliza la grabación, la aplicación multimedia SIP del SDK de Amazon Chime llama a la AWS Lambda función y le pasa el evento ACTION\$1SUCCESSFUL, junto con los resultados de la invocación.

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "RecordAudio",
        "Parameters": {
           ...           
        },
        "RecordingDestination": {
            "Type": "S3",
            "BucketName": "valid-bucket-name",
            "Key": "valid-S3-key"              
        },
        "RecordingTerminatorUsed":"#"
    },
    "CallDetails": {
        ...
    }
}
```

El evento `ACTION_SUCCESSFUL` contiene `ActionData`, que contiene los siguientes campos:

**Type**  
*Descripción*: el tipo de acción, `RecordAudio`.

**Parameters**  
*Descripción*: los parámetros de la acción.

**RecordingDestination.Type**  
*Descripción:* tipo de destino. Solo S3. 

**RecordingDestination.BucketName**  
*Descripción*: bucket de S3 que contiene el archivo de grabación. 

**RecordingDestination.Key**  
*Descripción*: la clave S3 del archivo de grabación.

**RecordingTerminatorUsed**  
*Descripción*: el terminador utilizado para detener la grabación, uno de los terminadores incluidos en el parámetro `RecordingTerminators`. Si la grabación se detiene después de alcanzar la duración máxima (`DurationInSeconds`) o debido al silencio (`SilenceDurationInSeconds`), este par clave-valor no se incluye en la salida.

**Gestión de errores**  
En caso de errores de validación, la aplicación multimedia SIP llama a la AWS Lambda función con el mensaje de error correspondiente. En la siguiente tabla se enumeran los posibles mensajes de error.


|  Error  |  Mensaje  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  El parámetro `CallId` o `ParticipantTag` de acción no es válido. El valor del parámetro `DurationInSeconds` no es válido. El valor del parámetro `SilenceDurationInSeconds` no es válido. El valor del parámetro `SilenceThreshold` no es válido. El valor del parámetro `RecordingDestination` no es válido. Se ha producido un error al cargar la grabación en el bucket de S3.  |  Cualquier parámetro no es válido.  | 
|  `SystemException`  |  Error del sistema al ejecutar una acción.  |  Se produjo otro tipo de error del sistema al ejecutar una acción.  | 

## Gestión de eventos de ACTION\$1FAILED
<a name="handle-action-failed"></a>

Cuando la acción no graba el contenido multimedia de un tramo de llamada, la aplicación multimedia SIP invoca una AWS Lambda función con el tipo de `ACTION_FAILED` evento. Consulte el siguiente ejemplo.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "RecordAudio",
        "Parameters": {
           ...           
        },
        "ErrorType": "InvalidActionParameter",
        "ErrorMessage": "RecordingDestination parameter value is invalid."
    },
    "CallDetails": {
        ...
    }
}
```

Vea un ejemplo práctico sobre GitHub: [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)

# SendDigits
<a name="send-digits"></a>

Envíe hasta 50 dígitos de doble tono y multifrecuencia (DTMF) en cualquier tramo de una llamada. Las señales pueden incluir lo siguiente:
+ Números del 0 al 9
+ Caracteres especiales como asterisco (\$1) y almohadilla (\$1)
+ Señales de control de red A, B, C, D
+ El carácter de coma (,). Esta señal añade un retraso de 0,5 segundos entre la señal anterior y la siguiente.

**Topics**
+ [Uso de SendDigits acción](#send-digits-action)
+ [Manipulación ACTION\$1SUCCESSFUL eventos](#send-digit-success)
+ [Manipulación ACTION\$1FAILED eventos](#send-digit-fail)
+ [Flujo de llamada](#send-digits-call-flow)

## Uso de SendDigits acción
<a name="send-digits-action"></a>

A continuación se muestra una acción típica de `SendDigits`.

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "SendDigits",
            "Parameters": {
                "CallId": "call-id-1", // required
                "Digits": ",,*1234,56,7890ABCD#", // required
                "ToneDurationInMilliseconds": 100 // optional
            }
        }
    ]
}
```

**CallId**  
*Descripción*: el `CallId` de un participante en la invocación de los `CallDetails` de la función AWS Lambda   
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Digits**  
*Descripción*: los dígitos que se van a enviar en el tramo de llamada que corresponde al `CallId`  
*Valores permitidos*: 0-9, \$1, \$1, A, B, C, D, coma (,)  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**ToneDurationInMilliseconds**  
*Descripción*: cantidad de tiempo permitida, en milisegundos, para transmitir cada dígito.  
*Valores permitidos*: cualquier número entero entre 50 y 24000  
*Obligatorio:* no  
*Valor predeterminado:* 250

## Manipulación ACTION\$1SUCCESSFUL eventos
<a name="send-digit-success"></a>

En el ejemplo siguiente se muestra un evento `ACTION_SUCCESSFUL` típico para la acción `SendDigits`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "SendDigits",
        "Parameters": {
            "Digits": "1,2A#",
            "ToneDurationInMilliseconds": 100,
            "CallId": "call-id-1"
        },  
    "CallDetails": { 
        ...
        }
    }
}
```

## Manipulación ACTION\$1FAILED eventos
<a name="send-digit-fail"></a>

En el ejemplo siguiente se muestra un evento `ACTION_FAILED` típico para la acción `SendDigits`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "SendDigits",
        "Parameters": {
            "Digits": "1,2A#",
            "ToneDurationInMilliseconds": 20000000,
            "CallId": "call-id-1"
        },
    "ErrorType": "InvalidActionParameter",
    "ErrorMessage": "ToneDuration parameter value is invalid."
    },
    "CallDetails": {
        ...
        }
    }
}
```

## Flujo de llamada
<a name="send-digits-call-flow"></a>

El siguiente diagrama muestra el flujo del programa para enviar dígitos de una persona que llama a una persona que recibe la llamada.

![\[Diagrama que muestra el flujo programático de la acción SendDigits.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/send-digits-1.png)


# Speak
<a name="speak"></a>

Puede reproducir la voz en cualquier tramo de llamada proporcionando texto. Puede introducir texto sin formato o lenguaje de marcado de síntesis de voz (SSML). SSML proporciona un mayor control sobre la forma en que Amazon Chime SDK genera la voz al añadir pausas, hacer hincapié en determinadas palabras o cambiar el estilo de expresión.

El SDK de Amazon Chime utiliza el servicio Amazon Polly para realizar conversiones. text-to-speech Amazon Polly le permite elegir entre el motor estándar o el motor neuronal para mejorar la calidad de la voz. Amazon Polly admite más de 20 idiomas y 60 voces para personalizar la experiencia de usuario de la aplicación. Amazon Chime SDK ofrece características de voz sin costo alguno, pero usted paga por usar Amazon Polly. Consulte la [página de precios](https://aws.amazon.com/polly/pricing/) de Amazon Polly o su panel de facturación para obtener información sobre los precios.

**importante**  
El uso de Amazon Polly está sujeto a las [condiciones de servicio de AWS](https://aws.amazon.com/service-terms/), incluidas las condiciones específicas de los servicios de AWS Machine Learning e Inteligencia Artificial.

**Topics**
+ [Uso de Speak acción](#speak-action)
+ [Manipulación ACTION\$1SUCCESSFUL eventos](#speak-action-success)
+ [Manipulación ACTION\$1FAILED eventos](#speak-action-fail)
+ [Flujos de programas](#speak-flow)

## Uso de Speak acción
<a name="speak-action"></a>

En el ejemplo siguiente se muestra una utilización típica de la acción `Speak`.

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "Speak",
            "Parameters": {
                "Text": "Hello, World!",        // required
                "CallId": "call-id-1",          // required
                "Engine": "neural",             // optional. Defaults to standard
                "LanguageCode": "en-US",        // optional
                "TextType": "text",             // optional
                "VoiceId": "Joanna"             // optional. Defaults to Joanna
            }
        }
    ]
}
```

**CallId**  
*Descripción*: la `CallId` del participante en los `CallDetails` de la invocación de la función de Lambda  
*Valores permitidos*: un identificador de llamada válido  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Text**  
*Descripción*: especifica el texto de entrada que se va a sintetizar en voz. Si especifica `ssml` como `TextType`, siga el formato SSML para el texto de entrada.  
*Valores permitidos:* cadena  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**Engine**  
*Descripción*: especifica el motor (estándar o neuronal) que se utilizará al procesar texto para la síntesis de voz.  
*Valores permitidos*: estándar \$1 neuronal  
*Obligatorio:* no  
*Valor predeterminado*: estándar

**LanguageCode**  
*Descripción:* especifica el código de lenguaje. Solo es necesario si se utiliza una voz bilingüe. Si utiliza una voz bilingüe sin código de idioma, se utiliza el idioma predeterminado de la voz bilingüe.  
*Valores permitidos*: códigos de lenguaje de [Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**TextType**  
*Descripción*: especifica el tipo de texto de entrada, texto sin formato o SSML. Si no se especifica un tipo de entrada, se utiliza texto sin formato como predeterminado. Para obtener más información sobre SSML, consulte [Generación de voz a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) en la *Guía para desarrolladores de Amazon Polly.*  
*Valores permitidos*: ssml \$1 texto  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**VoiceId**  
*Descripción*: especifica el ID de voz que desea usar.  
*Valores permitidos* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obligatorio:* no  
*Valor predeterminado*: Joanna

## Manipulación ACTION\$1SUCCESSFUL eventos
<a name="speak-action-success"></a>

El siguiente ejemplo muestra un evento `ACTION_SUCCESSFUL` típico de una acción que sintetiza el texto «Hello World» en forma oral, en inglés, utilizando la voz de `Joanna` de Amazon Polly.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
       "Type": "Speak",
       "Parameters": {
          "CallId": "call-id-1",          
          "Engine":  "neural",             
          "LanguageCode":  "en-US",        
          "Text": "Hello World",          
          "TextType":  "text",             
          "VoiceId":  "Joanna"        
       }
    },
    "CallDetails":{       
       ...
    }
}
```

## Manipulación ACTION\$1FAILED eventos
<a name="speak-action-fail"></a>

En el siguiente ejemplo, se muestra un evento `ACTION_FAILED` típico del mismo evento utilizado en el ejemplo anterior.

```
{
    "SchemaVersion": "1.0",
    "Sequence":2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
       "Type": "Speak",
       "Parameters": {
          "CallId": "call-id-1",          
          "Engine":  "neural",             
          "LanguageCode":  "en-US",        
          "Text": "Hello  World",          
          "TextType":  "text",             
          "VoiceId":  "Joanna"        
       },
       "ErrorType": "SystemException",
       "ErrorMessage": "System error while running  action"
    },
    "CallDetails":{       
       ...
    }
}
```

**Gestión de errores**  
En esta tabla se enumeran y describen los mensajes de error generados por la acción `Speak`.


| Error | Mensaje | Motivo | 
| --- | --- | --- | 
| `AccessDenied` | La función `AWSServiceRoleForAmazonChimeVoiceConnector` vinculada al servicio no está configurada correctamente. | El rol vinculado al servicio que se utiliza para hacer solicitudes a Amazon Polly no existe o le faltan permisos. Para resolverlo, consulte los pasos de la sección [Uso de la función vinculada al servicio Amazon Chime SDK Voice Connector](speak-and-get-digits.md#speak-digits-policy) | 
| `InvalidActionParameter` |   | Se ha producido un error al validar los parámetros de acción. Consulte la [SynthesizeSpeech API](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech) en la *Guía para desarrolladores de Amazon Polly* para obtener más información sobre los parámetros. | 
| ActionExecutionThrottled | Amazon Polly está limitando la solicitud de sintetizar voz. | La solicitud a Amazon Polly devuelve una excepción de limitación. [Para obtener más información sobre los límites de regulación de Amazon Polly, consulta https://docs.aws.amazon.com/polly/ latest/dg/limits .html \$1limits -throttle.](https://docs.aws.amazon.com/polly/latest/dg/limits.html#limits-throttle) | 
| `MissingRequiredActionParameter` | El `Text` ahora es un parámetro obligatorio. | Los parámetros de acción deben tener un valor `Text` | 
| `MissingRequiredActionParameter` | El `Text` está limitado a 1000 caracteres. | El texto ha superado el límite de caracteres. | 
| `SystemException` | Error del sistema al ejecutar la acción. | Se ha producido un error del sistema al ejecutar la acción. | 

## Flujos de programas
<a name="speak-flow"></a>

El siguiente diagrama muestra el flujo del programa que habilita la acción `Speak` para la persona que llama. En este ejemplo, la persona que llama escucha un texto que 

![\[Diagrama que muestra el flujo del programa para habilitar la acción Speak para la persona que llama.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/Speak1.png)


**En el diagrama**  
Con un teléfono móvil, la persona que llama introduce un número registrado en una aplicación multimedia SIP. La aplicación utiliza el método `INVITE` de SIP y envía una respuesta `Trying (100)` a la persona que llama. Esto indica que el servidor de siguiente salto recibió la solicitud de llamada. A continuación, la aplicación SIP utiliza `INVITE` para ponerse en contacto con el punto de conexión. Una vez establecida la conexión, las aplicaciones envían una respuesta `Ringing (180)` a la persona que llama y comienzan las alertas. 

A continuación, la aplicación multimedia SIP envía un evento `NEW_INBOUND_CALL` a la función de Lambda, que responde con una acción `Speak` que incluye el identificador de la persona que llama y el texto que se desea convertir en voz. A continuación, la aplicación SIP envía una respuesta `200 (OK)` para indicar que se ha respondido a la llamada. El protocolo también habilita los medios. 

Si la acción `Speak` se realiza correctamente y convierte el texto en voz, devuelve un evento `ACTION_SUCCESSFUL` a la aplicación multimedia SIP, que devuelve el siguiente conjunto de acciones. Si la acción falla, la aplicación multimedia SIP envía un evento `ACTION_FAILED` a la función de Lambda, que responde con un conjunto de acciones `Hangup`. La aplicación cuelga a la persona que llama y devuelve un evento `HANGUP` a la función de Lambda, que no realiza ninguna otra acción. 



El siguiente diagrama muestra el flujo del programa que habilita la acción `Speak` para la persona que recibe la llamada.

![\[Diagrama que muestra el flujo del programa para habilitar la acción Speak para una persona que recibe la llamada. Puede hacer lo siguiente en cualquier llamada puente.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/Speak2.png)


**En el diagrama**  
La persona que llama introduce un número registrado en una aplicación multimedia SIP y la aplicación responde como se describe en el diagrama anterior. Cuando la función de Lambda recibe el evento `NEW_INBOUND_CALL`, devuelve la acción [CallAndBridge](call-and-bridge.md) a la aplicación SIP. A continuación, la aplicación utiliza el método `INVITE` de SIP para enviar las respuestas `Trying (100)` y `Ringing (180)` a la persona que recibe la llamada. 

Si la persona que recibe la llamada responde, la aplicación multimedia SIP recibe una respuesta `200 (OK)` y envía la misma respuesta a la persona que llama. Esto establece los medios y la aplicación SIP envía un evento `ACTION_SUCCESSFUL` para la acción [CallAndBridge](call-and-bridge.md) a la función de Lambda. A continuación, la función devuelve la acción de voz y los datos a la aplicación SIP, que los convierte 

# SpeakAndGetDigits
<a name="speak-and-get-digits"></a>

Reproduzca la voz proporcionando texto y recopile los dígitos multifrecuencia (DTMF) de doble tono del usuario. El texto puede ser texto sin formato o texto mejorado con el lenguaje de marcado de síntesis de voz (SSML) para proporcionar un mayor control sobre la forma en que Amazon Chime SDK genera la voz mediante la adición de pausas, el énfasis en determinadas palabras o el cambio del estilo de expresión, entre otras características de SSML compatibles. Si se produce un error, por ejemplo, si un usuario no introduce el número correcto de dígitos del DTMF, la acción reproduce el discurso de «fallo» y, a continuación, reproduce el discurso principal hasta que la aplicación multimedia SIP agote el número de intentos definido en el parámetro `Repeat`.

Amazon Chime SDK utiliza Amazon Polly, un servicio en la nube que convierte el texto en voz realista. Amazon Polly proporciona un motor estándar y uno neuronal para mejorar la calidad de la voz, más de 20 idiomas compatibles y 60 voces. Amazon Polly ofrece características de voz sin costo alguno, pero usted paga por usar Amazon Polly. Consulte la [página de precios](https://aws.amazon.com/polly/pricing/) de Amazon Polly o el panel de facturación para obtener información sobre los precios.

**importante**  
El uso de Amazon Polly está sujeto a las [Condiciones del AWS servicio](https://aws.amazon.com/service-terms/), incluidas las condiciones específicas de los Servicios de AWS Machine Learning e Inteligencia Artificial.

**Topics**
+ [Uso de SpeakAndGetDigits acción](#speak-digits-action)
+ [Manipulación ACTION\$1SUCCESSFUL eventos](#speak-digits-success)
+ [Manipulación ACTION\$1FAILED eventos](#speak-digits-fail)
+ [Uso de la función vinculada al servicio Amazon Chime SDK Voice Connector](#speak-digits-policy)

## Uso de SpeakAndGetDigits acción
<a name="speak-digits-action"></a>

En el ejemplo siguiente, se muestra una utilización típica de la acción `SpeakAndGetDigits`:

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "SpeakAndGetDigits",
            "Parameters": {
                "CallId": "call-id-1",          // required
                "InputDigitsRegex": "^\d{2}#$", // optional
                "SpeechParameters": {
                    "Text": "Hello World",      // required
                    "Engine": "neural",         // optional. Defaults to standard
                    "LanguageCode": "en-US",    // optional
                    "TextType": "text",         // optional
                    "VoiceId": "Joanna"         // optional. Defaults to Joanna
                },
                "FailureSpeechParameters": {
                    "Text": "Hello World",      // required
                    "Engine": "neural",         // optional. Defaults to the Engine value in SpeechParameters
                    "LanguageCode": "en-US",    // optional. Defaults to the LanguageCode value in SpeechParameters
                    "TextType": "text",         // optional. Defaults to the TextType value in SpeechParameters
                    "VoiceId": "Joanna"         // optional. Defaults to the VoiceId value in SpeechParameters
                },
                "MinNumberOfDigits": 3,         // optional
                "MaxNumberOfDigits": 5,         // optional
                "TerminatorDigits": ["#"],      // optional
                "InBetweenDigitsDurationInMilliseconds": 5000,  // optional
                "Repeat": 3,                    // optional
                "RepeatDurationInMilliseconds": 10000           // required
            }
        }
    ]
}
```

**CallId**  
*Descripción*: el `CallId` del participante en la CallDetails invocación de la función Lambda.  
*Valores permitidos*: un `callID` válido  
*Obligatorio*: sí  
*Valor predeterminado*: No

**InputDigitsRegex**  
*Descripción*: patrón de expresión regular que ayuda a garantizar que los usuarios escriban los dígitos y letras correctos.  
*Valores permitidos*: un patrón de expresión regular válido  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**SpeechParameters.Engine**  
*Descripción*: especifica el motor (estándar o neuronal) que se utilizará al procesar texto para la síntesis de voz.  
*Valores permitidos* – `standard` \$1 `neural`  
*Obligatorio:* no  
*Valor predeterminado*: estándar

**SpeechParameters.LanguageCode**  
*Descripción:* especifica el código de lenguaje. Esto solo es necesario si se utiliza una voz bilingüe. Si se usa una voz bilingüe y no se especifica ningún código de idioma, se usa el idioma predeterminado de la voz bilingüe.  
*Valores permitidos*: códigos de lenguaje de [Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obligatorio:* no  
*Valor predeterminado:* ninguno

**SpeechParameters.Text**  
*Descripción:* especifica el texto de entrada. Si especifica `ssml` como `SpeechParameters.TextType`, debe seguir el formato SSML para el texto de entrada. Para obtener más información sobre SSML, consulte [Generación de voz a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) en la *Guía para desarrolladores de Amazon Polly.*  
*Valores permitidos:* cadena  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**SpeechParameters.TextType**  
*Descripción: * especifica el formato de texto para `SpeechParameters.Text`. Si no se especifica ninguno, se utilizará `text` de forma predeterminada. Para obtener más información sobre SSML, consulte [Generación de voz a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) en la *Guía para desarrolladores de Amazon Polly.*  
*Valores permitidos* – `ssml` \$1 `text`  
*Obligatorio:* no  
*Valor predeterminado:* - `text`

**SpeechParameters.VoiceId**  
*Descripción*: el identificador de la voz de Amazon Polly utilizada para pronunciar el texto en `SpeechParameters.Text`.  
*Valores permitidos* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obligatorio:* no  
*Valor predeterminado*: Joanna

**FailureSpeechParameters.Engine**  
*Descripción*: especifica el motor (estándar o neuronal) que se utilizará al procesar el mensaje de error que se utiliza cuando el cliente introduce una respuesta no válida para la síntesis de voz.  
*Valores permitidos* – `standard` \$1 `neural`  
*Obligatorio:* no  
*Valor predeterminado*: el valor `SpeechParameters.Engine`

**FailureSpeechParameters.LanguageCode**  
*Descripción*: especifica el código de idioma utilizado cuando el cliente introduce una respuesta no válida. Solo es necesario cuando se utiliza una voz bilingüe. Si utiliza una voz bilingüe sin especificar un código de idioma, se utilizará el idioma predeterminado de la voz bilingüe.  
*Valores permitidos*: códigos de lenguaje de [Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obligatorio:* no  
*Valor predeterminado*: el valor `SpeechParameters.LanguageCode`.

**FailureSpeechParameters.Text**  
*Descripción*: especifica el texto de entrada que se pronunciará cuando el cliente introduzca una respuesta no válida. Si especifica `ssml` como `FailureSpeechParameters.TextType`, debe seguir el formato SSML para el texto de entrada.  
*Valores permitidos:* cadena  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

**FailureSpeechParameters.TextType**  
*Descripción*: especifica si el texto de entrada especificado en `FailureSpeechParameters.Text` es texto plano o SSML. El valor predeterminado es texto sin formato. Para obtener más información, consulte [Generación de voz a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) en la *Guía para desarrolladores de Amazon Polly*.  
*Valores permitidos* – `ssml` \$1 `text`  
*Obligatorio:* no  
*Valor predeterminado*: el valor `SpeechParameters.Text`

**FailureSpeechParameters.VoiceId**  
*Descripción*: el identificador de la voz utilizada para pronunciar la cadena en `FailureSpeechParameters.Text`.  
*Valores permitidos* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obligatorio*: sí  
*Valor predeterminado*: el valor `SpeechParameters.VoiceId`

**MinNumberOfDigits**  
*Descripción*: el número mínimo de dígitos que se deben capturar antes de que se agote el tiempo de espera o se reproduzca el mensaje de «llamada fallida».  
*Valores permitidos*: mayor o igual que cero  
*Obligatorio:* no  
*Valor predeterminado:* 0

**MaxNumberOfDigits**  
*Descripción*: el número máximo de dígitos que se deben capturar antes de detenerse sin un dígito final.  
*Valores permitidos*: superiores a `MinNumberOfDigits`  
*Obligatorio:* no  
*Valor predeterminado*: 128

**TerminatorDigits**  
*Descripción*: dígito que se utiliza para finalizar la entrada si el usuario introduce un número inferior al MaxNumberOfDigits  
*Valores permitidos*: cualquiera de los siguientes: 0 1 2 3 4 5 6 7 8 9 \$1 o \$1  
*Obligatorio:* no  
*Valor predeterminado*: \$1

**InBetweenDigitsDurationInMilliseconds**  
*Descripción*: el tiempo de espera en milisegundos entre las entradas de dígitos antes de reproducir la voz de error.  
*Valores permitidos*: superiores a cero  
*Obligatorio:* no  
*Valor predeterminado*: si no se especifica, el valor predeterminado es `RepeatDurationInMilliseconds`.

**Repeat**  
*Descripción*: número total de intentos de obtener dígitos. Si omite este parámetro, el valor predeterminado es un intento de recopilar dígitos.  
*Valores permitidos*: superiores a cero  
*Obligatorio:* no  
*Valor predeterminado*: 1

**RepeatDurationInMilliseconds**  
*Descripción*: tiempo de espera en milisegundos para cada intento de obtener dígitos.  
*Valores permitidos*: superiores a cero  
*Obligatorio*: sí  
*Valor predeterminado:* ninguno

## Manipulación ACTION\$1SUCCESSFUL eventos
<a name="speak-digits-success"></a>

En el siguiente ejemplo, se muestra un evento `ACTION_SUCCESSFUL` típico.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
            "Type":  "SpeakAndGetDigits",
            "Parameters": {
                "CallId": "call-id-1",          
                "InputDigitsRegex":  "^\d{2}#$", 
                "SpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode": "en-US",    
                    "Text":  "Hello World",           
                    "TextType":  "text",         
                    "VoiceId": "Joanna"         
                },
                "FailureSpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode":  "en-US",    
                    "Text":  "Hello World",           
                    "TextType": "text",         
                    "VoiceId": "Joanna"         
                },
                "MinNumberOfDigits": 3,         
                "MaxNumberOfDigits": 5,         
                "TerminatorDigits": ["#"],      
                "InBetweenDigitsDurationInMilliseconds": 5000,  
                "Repeat": 3,                    
                "RepeatDurationInMilliseconds": 10000           
            },
            "ReceivedDigits": "1234"
    },
    "CallDetails":{       
       ...
    }
}
```

## Manipulación ACTION\$1FAILED eventos
<a name="speak-digits-fail"></a>

En el siguiente ejemplo, se muestra un evento `ACTION_FAILED` típico.

```
{
    "SchemaVersion": "1.0",
    "Sequence":2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
            "Type":  "SpeakAndGetDigits",
            "Parameters": {
                "CallId": "call-id-1",          
                "InputDigitsRegex":  "^\d{2}#$", 
                "SpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode": "en-US",    
                    "Text":  "Hello World",           
                    "TextType":  "text",         
                    "VoiceId": "Joanna"         
                },
                "FailureSpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode":  "en-US",    
                    "Text":  "Hello World",          
                    "TextType": "text",        
                    "VoiceId": "Joanna"        
                },
                "MinNumberOfDigits": 3,      
                "MaxNumberOfDigits": 5,        
                "TerminatorDigits": ["#"],      
                "InBetweenDigitsDurationInMilliseconds": 5000,  
                "Repeat": 3,                    
                "RepeatDurationInMilliseconds": 10000         
            },
            "ErrorType":  "SystemException",
            "ErrorMessage":  "System error while running action"
    },
    "CallDetails":{       
       ...
    }
}
```

**Gestión de errores**  
En esta tabla se enumeran y describen los mensajes de error generados por la acción `Speak`.


| Error | Mensaje | Motivo | 
| --- | --- | --- | 
| `AccessDenied` | El rol `AWSServiceRoleForAmazonChimeVoiceConnector` no se ha configurado correctamente. | El rol utilizado para realizar solicitudes a Amazon Polly no existe o le faltan permisos. Para resolverlo, consulte los pasos de la sección [Uso de la función vinculada al servicio Amazon Chime SDK Voice Connector](#speak-digits-policy) | 
| `InvalidActionParameter` |   | Se ha producido un error al validar los parámetros de acción. Para revisar los parámetros disponibles para esta acción y sus opciones, consulte [SynthesizeSpeech](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html) en la Guía para desarrolladores de Amazon Polly. | 
| `MissingRequiredActionParameter` | El `Text` ahora es un parámetro obligatorio. | Los parámetros de la acción deben tener un valor `Text` | 
| `MissingRequiredActionParameter` | El `Text` está limitado a 1000 caracteres. | El texto ha superado el límite de caracteres. | 
| `SystemException` | Error del sistema al ejecutar la acción. | Se ha producido un error del sistema al ejecutar la acción. | 

## Uso de la función vinculada al servicio Amazon Chime SDK Voice Connector
<a name="speak-digits-policy"></a>

No necesita crear manualmente el rol vinculado al servicio para las acciones `Speak` o `SpeakAndGetDigits`. Al crear o actualizar una aplicación multimedia SIP en la consola, la o la AWS API del SDK de Amazon Chime AWS Command Line Interface, el SDK de Amazon Chime crea el rol vinculado al servicio por usted.

Para obtener más información, consulte [Uso del rol vinculado al servicio de Amazon Chime](https://docs.aws.amazon.com/chime/latest/ag/using-service-linked-roles-stream.html) en la *Guía del administrador de Amazon Chime SDK.*

# StartBotConversation
<a name="start-bot-conversation"></a>

La acción `StartBotConversation` establece una conversación de voz entre un usuario final y su bot de Amazon Lex v2. El usuario proporciona la información requerida al bot. A continuación, el bot devuelve la información a la función de Lambda de audio de la red telefónica pública conmutada (PSTN) y la función realiza las tareas solicitadas.

Por ejemplo, el bot puede reproducir un mensaje de bienvenida opcional al inicio de una conversación para describir brevemente la tarea que puede realizar la función de Lambda de audio PSTN. La conversación va y viene entre el usuario y el bot hasta que el bot recopila la información requerida. Una vez finalizada la conversación, Amazon Chime SDK invoca la función de Lambda de audio PSTN con un evento de acción exitosa, que contiene la información recopilada por el bot. La función de Lambda de audio PSTN procesa la información y realiza la tarea solicitada.

El servicio de audio proporciona una interacción conversacional realista con sus usuarios. Por ejemplo, los usuarios pueden interrumpir el bot y responder a una pregunta antes de que finalice el mensaje de audio. Además, los usuarios pueden usar cualquier combinación de dígitos de voz y DTMF para proporcionar información. El bot espera a que el usuario introduzca información antes de responder. Puede configurar cuánto tiempo espera el bot a que el usuario termine de hablar antes de interpretar cualquier entrada de voz. El usuario también puede indicar al bot que espere si necesita tiempo para recuperar información adicional durante una llamada, como números de tarjetas de crédito.

La acción `StartBotConversation` utiliza Amazon Lex y Amazon Polly durante la conversación del bot. Se aplican los costos estándar de Amazon Lex y Amazon Polly. Para obtener más información sobre los precios, consulte las páginas de [precios de las conversaciones en transmisión de Amazon Lex](https://aws.amazon.com/lex/pricing/) y de [precios de Amazon Polly](https://aws.amazon.com/polly/pricing/).

**nota**  
No puede ejecutar esta acción en una llamada puente ni en una llamada que se haya unido a una reunión de Amazon Chime SDK.

**importante**  
El uso de Amazon Lex y Amazon Polly está sujeto a las [Condiciones del AWS servicio](https://aws.amazon.com/service-terms/), incluidas las condiciones específicas de los Servicios de AWS Machine Learning e Inteligencia Artificial.

**Topics**
+ [Sintaxis de StartBotConversation](#startbot-syntax)
+ [Uso de la acción StartBotConversation](#using-startbot)
+ [Gestión de eventos de ACTION\$1SUCCESSFUL](#bot-action-success)
+ [Gestión de eventos de ACTION\$1FAILED](#bot-action-fail)
+ [Concesión de permisos para usar un bot](#bot-permissions)
+ [Configuración de los tiempos de espera de voz y DTMF](#bot-timeouts)
+ [Uso de entradas DTMF durante una conversación](#bot-dtmf)
+ [Service Quotas y cuotas de facturación](#bot-billing)

## Sintaxis de StartBotConversation
<a name="startbot-syntax"></a>

A continuación se muestra un ejemplo típico de sintaxis de `StartBotConversation`.

```
{
  "SchemaVersion": "1.0",
  "Actions":[
    {
      "Type": "StartBotConversation",
      "Parameters": {
        "CallId": "string",
        "ParticipantTag": "string",
        "BotAliasArn": "string",
        "LocaleId": "string",
        "Configuration": {
          "SessionState": {
             "SessionAttributes": {
                "string": "string" 
             },
             "DialogAction" : {
               "Type": "string"
             }
          },
          "WelcomeMessages": [
            {
              "Content": "string",
              "ContentType": "string" 
            }
          ]
        }
      }
    }
  ]
}
```

**CallId**  
*Descripción*: la `CallID` de un participante en la invocación `CallDetails` de la AWS Lambda función. La acción `StartBotConversation` usa este ID como el de la `SessionId` del bot. Todas las conversaciones de bots que tienen lugar en una llamada comparten la misma sesión de conversación. Puede modificar el estado de la sesión entre su usuario y su bot mediante la API [PutSession de Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html). Para obtener más información, consulte [Gestión de sesiones con la API Amazon Lex v2](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) en la *Guía para desarrolladores de Amazon Lex*.  
*Valores permitidos*: un identificador de llamada válido.  
*Obligatorio*: no, si `ParticipantTag` está presente.  
*Valor predeterminado:* ninguno.

**ParticipantTag**  
*Descripción*: la `ParticipantTag` de uno de los participantes conectados en los `CallDetails`.  
*Valores permitidos*: `LEG-A`.  
*Obligatorio*: no, si `CallId` está presente.  
*Valor predeterminado*: `ParticipantTag` del `callLeg` invocado. Se omite si se especifica `CallDetails`.

**BotAliasArn**  
*Descripción*: el alias de bot ARN de su bot Lex. Debe crear el bot en la misma región de AWS que la aplicación de audio de PSTN. Un alias de bot de Amazon Lex válido tiene este formato: `arn:aws:lex:region:awsAccountId:bot-alias/botId/botAliasId`, donde *`region`* se encuentra la región de AWS en la que reside el bot. El `awsAccountId` es el ID de cuenta de AWS en el que se creó el bot de Amazon Lex. El valor `botId` es el identificador asignado al bot cuando se creó. Puede encontrar el ID del bot en la consola Amazon Lex, en la página de **detalles del bot**. El `botAliasId` es el identificador asignado al alias del bot cuando se creó. Puede ver el ID del alias del bot en la consola de Amazon Lex en la página **Alias**.   
*Valores permitidos*: un ARN de bot válido.  
*Obligatorio*: sí.  
*Valor predeterminado: ninguno*.

**LocaleId**  
*Descripción*: el identificador de la configuración regional que utilizó para su bot. Para obtener una lista de las configuraciones regionales y los códigos de idioma, consulte [Idiomas y configuraciones regionales compatibles con Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html).  
*Valores permitidos*: [lenguajes y configuraciones regionales compatibles con Amazon Lex.](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)  
*Obligatorio:* no.  
*Valor predeterminado:* `en_US`.

**Configuration**  
*Descripción*: la configuración de la conversación, incluidos el estado de la sesión y los mensajes de bienvenida. El tamaño total de la representación en cadena JSON del objeto de `Configuration` está limitado a 10 KB.  
*Valores permitidos*: `Configuration` objeto.  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

**Configuration.SessionState**  
*Descripción*: el estado de la sesión del usuario con Amazon Lex v2.  
*Valores permitidos*: `SessionState` objeto.  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

**Configuration.SessionState.SessionAttributes**  
*Descripción*: mapa de los key/value pares que representan información de contexto específica de la sesión. Este mapa contiene la información de la aplicación que se transmite entre Amazon Lex v2 y una aplicación cliente.  
*Valores permitidos*: mapa de cadena a cadena.  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

**Configuration.SessionState.DialogAction.Type**  
*Descripción*: la siguiente acción que realiza el bot en sus interacciones con el usuario. Valores posibles:  
+ *Delegado*: Amazon Lex v2 determina la siguiente acción.
+ *ElicitIntent*La siguiente acción suscita una intención por parte del usuario.
*Valores permitidos*: `Delegate` \$1 `ElicitIntent`.  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

**Configuration.WelcomeMessages**  
*Descripción*: lista de mensajes para enviar al usuario al inicio de la conversación. Si establece el campo `welcomeMessage`, debe establecer el valor `DialogAction.Type` como `ElicitIntent`.  
*Valores permitidos*: objeto de mensaje  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

**Configuration.WelcomeMessages.Content**  
*Descripción*: el texto del mensaje de bienvenida.  
*Valores permitidos*: cadena.  
*Obligatorio:* no.  
*Valor predeterminado:* ninguno.

**Configuration.WelcomeMessages.ContentType**  
*Descripción:* indica el tipo de mensaje de bienvenida.  
*Valores permitidos*: ` PlainText` \$1 `SSML`  
+ *PlainText*— El mensaje contiene texto UTF-8 plano. 
+ *SSML*: el mensaje contiene texto con formato para salida de voz.
*Obligatorio*: sí.  
*Valor predeterminado:* ninguno.

## Uso de la acción StartBotConversation
<a name="using-startbot"></a>

A continuación se muestra una acción típica de `StartBotConversation`.

```
{
  "SchemaVersion": "1.0",
  "Actions":[
    {
      "Type": "StartBotConversation",
      "Parameters": {
        "CallId": "call-id-1",
        "BotAliasArn": "arn:aws:lex:us-east-1:123456789012:bot-alias/ABCDEFGHIH/MNOPQRSTUV",
        "LocaleId": "en_US",
        "Configuration": {
          "SessionState": {
             "SessionAttributes": {
                "mykey1": "myvalue1" 
             },
             "DialogAction" : {
               "Type": "ElicitIntent"
             }
          },
          "WelcomeMessages": [
            {
              "Content": "Welcome. How can I help you?",
              "ContentType": "PlainText" 
            }
          ]
        }
      }
    }
  ]
}
```

## Gestión de eventos de ACTION\$1SUCCESSFUL
<a name="bot-action-success"></a>

En el ejemplo siguiente se muestra un evento `ACTION_SUCCESSFUL` típico para la acción `StartBotConversation`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": number,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData":
    {
        "CallId": "string",
        "Type": "StartBotConversation",
        "Parameters": {
            // parameters provided in the StartBotConversation action.
        },
        "CallDetails": {
            // Information about the call associated with the AWS Lambda invocation.
        },
        "IntentResult": {
            "SessionId": "string",
            "SessionState": {
                "SessionAttributes": {
                    "string": "string"
                },
                "Intent": {
                    "Name": "string",
                    "Slots":  {
                        "string": {
                            "Value": {
                                "OriginalValue": "string",
                                "InterpretedValue": "string",
                                "ResolvedValues": ["string"]
                            },
                            "Values": []
                        }
                    },
                    "State": "string",
                    "ConfirmationState": "string"
                }
            },
            "Interpretations": [
                {
                    "NluConfidence": {
                        "Score": number
                    },
                    "Intent": {
                        "Name": "string",
                        "Slots": {
                            "string": {
                                "Value": {
                                    "OriginalValue": "string",
                                    "InterpretedValue": "string",
                                    "ResolvedValues": ["string"]
                                },
                                "Values": []
                            }
                        },
                        "State": "string",
                        "ConfirmationState": "string"
                    }
                }
            ]
        }
    }
}
```

**IntentResult**  
El resultado de la conversación entre el usuario y el bot.

**SessionId**  
Identificador de la sesión de conversación del bot. Cuando un usuario inicia una conversación con un bot, Amazon Lex crea una sesión. Una sesión encapsula la información intercambiada entre el usuario y el bot. La acción `StartBotConversation` usa el ID de llamada como el de la `SessionId` del bot. Puede modificar el estado de la sesión entre su usuario y su bot mediante la API [https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_PutSession.html](https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_PutSession.html) de Amazon Lex. Para obtener más información, consulte [Gestión de sesiones con la API Amazon Lex v2](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) en la *Guía para desarrolladores de Amazon Lex*.

**SessionState**  
El estado de la sesión del usuario con Amazon Lex V2. 

**SessionState.SessionAttributes**  
Mapa de key/value pares que representan información de contexto específica de la sesión. El mapa contiene la información de la conversación del bot que se transmite entre la función de Lambda adjunta al bot y la función de Lambda de audio PSTN.

**Interpretaciones**  
Una lista de intenciones derivada de Amazon Lex que pueden satisfacer la expresión del cliente. La intención con la puntuación de `NluConfidence` más alta se convierte en la intención de `SessionState`. 

**Interpretaciones. NluConfidence.Puntuación**  
Una puntuación que indica el grado de confianza de Amazon Lex v2 de un en lo que respecta a la capacidad de una intención para satisfacer las expectativas del usuario. Varía entre 0.00 y 1.00. Una puntuación más alta indica una mayor confianza. 

**Intent**  
La acción que el usuario desea realizar.

**Intent.Name**  
El nombre de la intención.

**Intent.Slots**  
Un mapa de todos los espacios para la intención. El nombre de la ranura se asigna al valor de la ranura. Si no se ha ocupado un espacio, el valor es nulo.

**Intent.Slots.Value**  
El valor del tipo de ranura.

**Intent.Slots.Values**  
Una lista de uno o más valores que el usuario ha proporcionado para la ranura.

**Intent.Slots.Value.OriginalValue**  
El texto de la respuesta del usuario, introducido para el espacio.

**Intent.Slots.Value.InterpretedValue**  
*Descripción*: el valor que Amazon Lex v2 determina para la ranura. El valor real depende de la configuración de la estrategia de selección de valores del bot. Puede optar por utilizar el valor introducido por el usuario o puede hacer que Amazon Lex v2 elija el primer valor de la lista de `resolvedValues`.

**Intent.Slots.Value.ResolvedValues**  
Una lista de valores adicionales que Amazon Lex v2 reconoce para la ranura.

**Intent.State**  
*Descripción*: información sobre el cumplimiento de la intención. Valores posibles:  
+ `Failed`: la función de Lambda no cumplió con la intención.
+ `Fulfilled`: la función de Lambda cumplió la intención.
+ `ReadyForFulfillment`: la información de la intención está presente y su función de Lambda puede cumplirla. 

**Intent.ConfirmationState**  
*Descripción*: indica la confirmación de la intención. Valores posibles:  
+ *Confirmado*: se cumple la intención.
+ *Denegado*: el usuario respondió “no” a la solicitud de confirmación.
+ *Ninguno*: no se solicitó la confirmación al usuario o se le pidió al usuario que confirmara o rechazara la solicitud, pero no la confirmó o rechazó.

## Gestión de eventos de ACTION\$1FAILED
<a name="bot-action-fail"></a>

En el ejemplo siguiente se muestra un evento `ACTION_FAILED` típico para la acción `StartBotConversation`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": number,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
        "CallId": "string",
        "Type": "StartBotConversation",
        "Parameters": {
            // parameters provided in the StartBotConversation action
        },
        "ErrorType": "string",
        "ErrorMessage": "string"
    },
    "CallDetails":{
    }
}
```

**ErrorType**  
Una cadena que identifica de forma exclusiva una condición de error.

**ErrorMessage**  
Una descripción genérica de la condición de error.

### Códigos de error
<a name="action-errors"></a>

En la siguiente tabla se enumeran los mensajes de error que una función de Lambda puede devolver en un evento de `ACTION_FAILED`.


| Error | Description (Descripción) | 
| --- | --- | 
|  `InvalidActionParameter` | Uno o más parámetros de acción no son válidos. El mensaje de error describe el parámetro no válido. | 
| `SystemException` | Se ha producido un error del sistema al ejecutar una acción. | 
| `ResourceNotFound` | No se encuentra un bot especificado. | 
| `ResourceAccessDenied` | El acceso al bot se deniega. | 
| `ActionExecutionThrottled` | Se ha superado el límite del servicio de conversación entre bots. El mensaje de error describe el límite de servicio específico que se ha superado. | 

## Concesión de permisos para usar un bot
<a name="bot-permissions"></a>

El siguiente ejemplo concede al SDK de Amazon Chime permiso para llamar a Amazon Lex. [https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_StartConversation.html](https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_StartConversation.html) APIs Debe conceder explícitamente permiso al servicio de audio para que use su bot. El bloque de condiciones es obligatorio para las entidades principales de servicio. El bloque de condiciones debe usar las claves de contexto globales `AWS:SourceAccount` y `AWS:SourceArn`. `AWS:SourceAccount` es el ID de su cuenta de AWS. `AWS:SourceArn` es el ARN de recurso de la aplicación de audio PSTN que invoca el bot Lex.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowChimePstnAudioUseBot",
      "Effect": "Allow",
      "Principal": {
        "Service": "voiceconnector.chime.amazonaws.com"
      },
      "Action": "lex:StartConversation",
  "Resource": "arn:aws:lex:us-east-1:123456789012:bot-alias/botId/aliasId",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "123456789012"
        },
        "ArnEquals": {
        "AWS:SourceArn": "arn:aws:chime:us-east-1:123456789012:sma/smaId"
        }
      }
    }
  ]
}
```

------

## Configuración de los tiempos de espera de voz y DTMF
<a name="bot-timeouts"></a>

Puede configurar los tiempos de espera de voz y DTMF al capturar las entradas del usuario. También puede configurar los tiempos de espera mediante atributos de sesión al iniciar una conversación con un bot y sobrescribirlos en su función de Lambda si es necesario. Amazon Lex le permite establecer varias ranuras para una intención o bots. Dado que puede especificar que los atributos de sesión se apliquen en el nivel de intención y ranura, puede especificar que el atributo se establezca solo cuando obtenga un determinado tipo de entrada. Por ejemplo, puede especificar un tiempo de espera más largo cuando recopile un número de cuenta que cuando recopile una fecha. Puede utilizar caracteres comodín en la clave de atributo de la sesión. 

Por ejemplo, para establecer un tiempo de espera de voz para todos los intervalos a todos los efectos en 4000 milisegundos, puede proporcionar un atributo de sesión utilizando: `x-amz-lex:start-timeout-ms:*:*` como nombre del atributo de sesión y `4000` como valor del atributo de sesión. Para obtener más información, consulte [Configuración de los tiempos de espera para capturar la entrada del usuario](https://docs.aws.amazon.com/lexv2/latest/dg/session-attribs-speech.htm) en la *Guía para desarrolladores de Amazon Lex*. 

## Uso de entradas DTMF durante una conversación
<a name="bot-dtmf"></a>

Los bots de Amazon Lex admiten la entrada de voz y teclado durante una conversación. Los bots interpretan las entradas del teclado como dígitos DTMF. Puede solicitar a los contactos que finalicen su entrada con la tecla almohadilla (\$1) y que cancelen una conversación con la tecla asterisco (\$1). Si no pide a los clientes que finalicen sus entradas con la tecla almohadilla, Lex deja de esperar a que se presionen más teclas después de 5 segundos.

## Service Quotas y cuotas de facturación
<a name="bot-billing"></a>

AWS le factura los siguientes costos:
+ Uso de Amazon Chime SDK para la llamada. Para obtener más información, consulte los [Precios de Amazon Chime SDK](https://aws.amazon.com/chime/chime-sdk/pricing/).
+ Uso de Amazon Lex para interpretar el discurso de los usuarios. Para obtener más información, consulte [Precios de Amazon Lex Streaming Conversation](https://aws.amazon.com/lex/pricing/).
+ Uso de Amazon Polly para sintetizar las respuestas de texto de su bot. Para obtener más información, consulte [precios de Amazon Polly](https://aws.amazon.com/polly/pricing/).

También debe conocer las siguientes Service Quotas:
+ El Amazon Chime SDK tiene una cuota de servicio para el número máximo de bots de Amazon Lex que se pueden crear con la acción [StartBotConversation](#start-bot-conversation) de audio PSTN. Para obtener más información, consulte [Cuotas de voz y enlaces troncales SIP](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas) en la *Referencia general de AWS *.
+ Amazon Lex tiene una Service Quota para el número máximo de conversaciones de voz simultáneas por bot Lex. Puede ponerse en contacto con el equipo de servicio de Amazon Lex para obtener más cuotas. Para obtener más información, consulte las [directrices y cuotas](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html) de Amazon Lex en la *Guía para desarrolladores de Amazon Lex*.
+ Amazon Polly tiene una Service Quota para sintetizar respuestas de texto. Puede ponerse en contacto con el equipo de servicio de Amazon Polly para obtener más cuotas. Para obtener más información sobre las Service Quotas de Amazon Polly, consulte [Cuotas en Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/limits.html), en la *Guía para desarrolladores de Amazon Polly*.