

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á.

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

Reproduza um arquivo de áudio em qualquer parte de uma chamada. O áudio pode ser repetido quantas vezes quiser. O áudio em andamento pode ser finalizado usando os dígitos DTMF definidos em `PlaybackTerminators`.

Atualmente, o SDK do Amazon Chime só oferece suporte à reprodução de arquivos de áudio do bucket do Amazon Simple Storage Service (Amazon 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. Isso pode ser feito usando o console do S3 ou a interface de linha de comandos (CLI).

O exemplo de código a seguir mostra uma 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}}"
                }
            }
        }
    ]
}
```

------

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 de código a seguir mostra uma ação 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**  
*Descrição* – `CallId` do participante em `CallDetails`.  
*Valores permitidos*: um ID de chamada válido.  
*Obrigatório* – Não, se `ParticipantTag` estiver presente.  
*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, se `CallId` estiver presente.  
*Valor-padrão*: `ParticipantTag` do `callLeg` invocado. Ignorado se você especificar `CallId`.

**PlaybackTerminator**  
*Descrição* – Encerra o áudio em andamento usando a entrada DTMF do usuário  
*Valores permitidos*: uma matriz dos seguintes valores;“0”, ”1”, ”2”, ”3”, ”4”, ”5”, ”6”, ”7”, ”8”, ”9”, ”\#”, ”\*”  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**Repeat**  
*Descrição* – Repete o áudio o número especificado de vezes  
*Valores permitidos*: um número inteiro maior que zero  
*Obrigatório* – Não  
*Valor-padrão*: 1

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

**AudioSource.BucketName**  
*Descrição* — Para tipos de origem do S3, o bucket do S3 deve pertencer à mesma AWS conta do aplicativo SIP. O bucket deve ter acesso à entidade principal responsável pelo serviço de conector de voz do SDK do Amazon Chime, que é voiceconnector.chime.amazonaws.com.  
*Valores permitidos*: um bucket S3 válido para o qual o SDK do Amazon Chime tem acesso à ação `s3:GetObject`.  
*Obrigatório* – Sim.  
*Valor-padrão*: nenhum.

**AudioSource.key**  
*Descrição* – Para tipos de origem do S3, o nome do arquivo do bucket do S3 especificado no atributo `AudioSource.BucketName`.  
*Valores permitidos*: um arquivo de áudio válido.  
*Obrigatório* – Sim.  
*Valor-padrão*: nenhum.

O aplicativo de mídia SIP tenta reproduzir o áudio do URL de origem. Você pode usar arquivos .wav PCM brutos e não compactados com tamanho não superior a 50 MB. O SDK do Amazon Chime recomenda 8 kHz mono.

Quando a última instrução em um plano de discagem é `PlayAudio` e o arquivo termina a reprodução, ou se um usuário interrompe a reprodução pressionando uma tecla, o aplicativo invoca a AWS Lambda função com o evento mostrado no exemplo a seguir.

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

Depois que um dígito final interromper o áudio, ele não será repetido.

**Tratamento de erros**  
Quando o arquivo de validação contém erros ou ocorre um erro ao executar uma ação, o aplicativo de mídia SIP chama uma AWS Lambda função com o código de erro apropriado.


|  Erro  |  Mensagem  |  Motivo  | 
| --- | --- | --- | 
| `InvalidAudioSource` | O 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 URL. Ou o arquivo de áudio pode falhar na validação devido ao formato, à duração, ao tamanho e assim por diante. | 
| `SystemException` | Erro do sistema ao executar a ação. | Ocorreu outro erro do sistema na execução da ação.  | 
| `InvalidActionParameter` | CallId ou o ParticipantTag parâmetro para ação é inválido. | A ação contém um parâmetro inválido. | 

O código do exemplo a seguir mostra uma falha de invocação típica.

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

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-call-forwarding](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)