

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

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

Reproduz áudio e reúne dígitos DTMF. Se ocorrer uma falha, como um usuário não digitar o número correto de dígitos DTMF, a ação reproduz o áudio de "falha" e, em seguida, reproduz o áudio principal até que o aplicativo de mídia SIP esgote o número de tentativas definido no parâmetro `Repeat`.

Você deve reproduzir arquivos de áudio do bucket do S3. O bucket do S3 deve pertencer à mesma AWS conta do aplicativo de mídia SIP. Além disso, você deve dar a permissão `s3:GetObject` à [entidade principal responsável pelo serviço de conector de voz do SDK do Amazon Chime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`. Você pode usar o console S3 ou a CLI para fazer isso. 

O exemplo de código a seguir mostra uma política de bucket do S3 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}}"
                }
            }
        }
    ]
}
```

------

O serviço de áudio lê e grava no seu bucket do S3 em nome do seu aplicativo de mídia Sip. Para evitar o [problema do substituto confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), você pode restringir o acesso ao bucket do S3 a um único aplicativo de mídia 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}}"
                }
            }
        }
    ]
}
```

------

O exemplo a seguir mostra uma ação `PlayAudioAndGetDigits` típica. 

```
{
    "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**  
*Descrição* — `CallId` do participante na `CallDetails` invocação da AWS Lambda função  
*Valores permitidos*: um ID de chamada válido  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**ParticipantTag**  
*Descrição* – `ParticipantTag` de um dos participantes conectados no `CallDetails`  
*Valores permitidos*: `LEG-A` ou `LEG-B`  
*Obrigatório* – Não  
*Valor-padrão*: `ParticipantTag` do `callLeg` invocado ignorado se você especificar `CallId`

**InputDigitsRegex**  
*Descrição* – Um padrão de expressão regular  
*Valores permitidos*: um padrão de expressão regular válido  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**AudioSource.Type**  
*Descrição* – Tipo de fonte para o tipo de arquivo de áudio  
*Valores permitidos*: um bucket S3  
*Obrigatório* – Sim  
*Valor-padrão*: `"S3"`

**AudioSource.BucketName**  
*Descrição* — Para `AudioSource.Type` valores do S3, o bucket do S3 deve pertencer à mesma AWS conta do aplicativo de mídia SIP. O bucket S3 deve ter acesso à [entidade principal responsável pelo serviço de conector de voz do SDK do Amazon Chime,](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) `voiceconnector.chime.amazonaws.com`.  
*Valores permitidos*: um bucket S3 válido para o qual o SDK do Amazon Chime tem acesso às ações `s3:GetObject`.  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**AudioSource.Key**  
*Descrição* – O nome da chave do objeto de áudio no bucket do S3 `AudioSource.BucketName`.  
*Valores permitidos*: arquivos de áudio válidos  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**FailureAudioSource.Type**  
*Descrição* – O nome da chave do objeto de áudio no bucket do S3 `FailureAudioSource.BucketName`.  
*Valores permitidos*: S3  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**FailureAudioSource.BucketName**  
*Descrição* — Para tipos de origem do S3, o bucket do S3 deve pertencer à mesma AWS conta do aplicativo de mídia SIP. A [entidade principal responsável pelo serviço de conector de voz do SDK do Amazon Chime,](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) `voiceconnector.chime.amazonaws.com`, deve ter acesso ao bucket do S3.  
*Valores permitidos*: um bucket S3 válido para o qual o SDK do Amazon Chime tem acesso às ações `s3:GetObject`.  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**FailureAudioSource.Key**  
*Descrição* – O nome da chave do objeto de áudio no bucket do S3 `FailureAudioSource.BucketName`.  
*Valores permitidos*: arquivos de áudio válidos  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**MinNumberOfDigits**  
*Descrição* – O número mínimo de dígitos a serem capturados antes de atingir o tempo limite ou reproduzir o áudio de "falha na chamada".  
*Valores permitidos*: >=0  
*Obrigatório* – Não  
*Valor-padrão*: 0

**MaxNumberOfDigits**  
*Descrição* – O número máximo de dígitos a serem capturados antes de parar sem um dígito final.  
*Valores permitidos*: >`MinNumberOfDigits`  
*Obrigatório* – Não  
*Valor-padrão*: 128

**TerminatorDigits**  
*Descrição* – Dígitos usados para finalizar a entrada se o usuário digitar menos do que `MaxNumberOfDigits`  
*Valores permitidos*: qualquer um desses dígitos: 0123456789\#\*  
*Obrigatório* – Não  
*Valor-padrão*: \#

**InBetweenDigitsDurationInMilliseconds**  
*Descrição* – O tempo de espera em milissegundos entre as entradas de dígitos antes de reproduzir o `FailureAudio`.  
*Valores permitidos*: >0  
*Obrigatório* – Não  
*Valor-padrão*: se não for especificado, o valor assumirá `RepeatDurationInMilliseconds` como padrão.

**Repeat**  
*Descrição* – Número total de tentativas de obter dígitos  
*Valores permitidos*: >0  
*Obrigatório* – Não  
*Valor-padrão*: 1

**RepeatDurationInMilliseconds**  
*Descrição* – Tempo de espera em milissegundos entre as `Repeat` tentativas  
*Valores permitidos*: >0  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

O aplicativo de mídia SIP sempre invoca sua AWS Lambda função após executar a `PlayAudioAndGetDigits` ação, com um tipo de evento de `ACTION_FAILED` invocação `ACTION_SUCCESSFUL` ou. Quando o aplicativo coleta dígitos com sucesso, ele define o valor `ReceivedDigits` no objeto `ActionData`. O exemplo a seguir mostra a estrutura do evento de invocação dessa AWS Lambda função.

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

**Tratamento de erros**  
Quando ocorre um erro de validação, o aplicativo de mídia SIP chama a função AWS Lambda com a mensagem de erro correspondente. A seguinte tabela lista as mensagens de erro possíveis.


|  Erro  |  Mensagem  |  Motivo  | 
| --- | --- | --- | 
| `InvalidAudioSource` | O valor do parâmetro da fonte de áudio é inválido. | Esse erro pode ocorrer por vários motivos. Por exemplo, o aplicativo de mídia SIP não pode acessar o arquivo devido a problemas de permissão ou problemas com o bucket do S3. Ou o arquivo de áudio pode falhar na validação devido à duração, tamanho ou formato não suportado. | 
| `InvalidActionParameter` | O parâmetro `CallId` ou `ParticipantTag` para a ação é inválido. | Um parâmetro `CallId`, `ParticipantTag`, ou outro não é válido. | 
| `SystemException` | Erro do sistema ao executar a ação. | Ocorreu um erro do sistema na execução da ação. | 

Quando a ação falha em coletar o número de dígitos especificados devido a um tempo limite ou a muitas tentativas, o aplicativo de mídia SIP invoca a AWS Lambda função com o tipo de evento de invocação. `ACTION_FAILED`

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

Veja exemplos de trabalho em 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)