

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.

# 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\#\*  
*Obligatorio:* no  
*Valor predeterminado*: \#

**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-call](https://github.com/aws-samples/amazon-chime-sma-update-call)