

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

# Ações compatíveis com o serviço de áudio PSTN do SDK do Amazon Chime
<a name="specify-actions"></a>

Você pode especificar diferentes tipos de ações de sinalização e mídia em uma resposta de uma AWS Lambda função. Cada ação tem propriedades diferentes. Os seguintes tópicos fornecem exemplos de código e explicam como usar as ações.

**Topics**
+ [O uso do TransactionAttributes](transaction-attributes.md)
+ [Como usar a gravação de chamadas](sip-apps-call-record.md)
+ [CallAndBridge](call-and-bridge.md)
+ [Hangup](hangup.md)
+ [JoinChimeMeeting](join-chime-meeting.md)
+ [ModifyChimeMeetingAttendee (silenciar e reativar o áudio)](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)

# O uso do TransactionAttributes
<a name="transaction-attributes"></a>

Você usa a estrutura de `TransactionAttributes` dados para armazenar informações específicas do aplicativo, como estados da chamada ou reunião IDs, e depois passa esses dados para as invocações do AWS Lambda. Essa estrutura elimina a necessidade de armazenar dados em bancos de dados externos, como o Amazon DynamoDB. 

`TransactionAttributes`são [objetos JSON](https://www.w3schools.com/js/js_json_objects.asp) que contêm key/value pairs. The objects can contain a maximum of 100 key/value pares, e os objetos têm um tamanho máximo de carga útil de 20 KB. Os dados em uma estrutura `TransactionAttributes` persistem por toda a vida útil de uma transação.

Quando uma AWS Lambda função passa `TransactionAttributes` para um aplicativo de mídia SIP, o aplicativo atualiza todos os atributos armazenados. Se você passar um objeto `TransactionAttributes` com um conjunto de chaves existente, atualizará os valores armazenados. Se você passar um conjunto de chaves diferente, substituirá os valores existentes pelos valores desse conjunto de chaves diferente. Passar um mapa vazio (`{}`) apaga todos os valores armazenados.

**Topics**
+ [Configuração TransactionAttributes](set-trans-attributes.md)
+ [Atualizando TransactionAttributes](update-trans-attributes.md)
+ [Limpando TransactionAttributes](clear-trans-attributes.md)
+ [Manuseio ACTION\$1SUCCESSFUL eventos](attribute-trans-success.md)
+ [Entradas inválidas](attribute-trans-invalid.md)

# Configuração TransactionAttributes
<a name="set-trans-attributes"></a>

O exemplo a seguir mostra como definir ao `TransactionAttributes` lado de uma [PlayAudio](play-audio.md) ação e passar os atributos de uma AWS Lambda função para um aplicativo de mídia 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"
    }
}
```

# Atualizando TransactionAttributes
<a name="update-trans-attributes"></a>

Para modificar o `TransactionAttributes` armazenado, atualize o conteúdo do objeto JSON com novos valores. No exemplo a seguir, as chaves `NewKey1` e `NewKey2` são adicionadas ao `TransactionAttributes`. Essas chaves estão emparelhadas com os valores `NewValue1` e `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"
    }
}
```

Se, no exemplo anterior, você passasse `NewValue1` para `key1`, o valor existente de `key1` seria substituído por `NewValue1`. No entanto, passar um valor para `NewKey1` cria um novo par chave/valor.

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

Para limpar o conteúdo do objeto `TransactionAttributes`, passe o campo `TransactionAttributes` com um objeto JSON vazio:

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

**nota**  
Você não pode apagar dados de uma estrutura `TransactionAttributes` definindo seu valor como`null`. Além disso, omitir a estrutura `TransactionAttribute` não limpa seus dados. Sempre passe um objeto JSON vazio com `TransactionAttributes` para limpar os dados do objeto.

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

O exemplo a seguir mostra como um [PlayAudio](play-audio.md) bem-sucedido envia o `TransactionAttributes`armazenado como parte do `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 inválidas
<a name="attribute-trans-invalid"></a>

O exemplo a seguir mostra uma entrada inválida. Nesse caso, o objeto JSON passa muitos itens para um aplicativo de mídia 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" 
    } 
}
```

O exemplo a seguir mostra a resposta à entrada fornecida anteriormente. Essa saída é passada de um aplicativo de mídia SIP de volta para a função AWS Lambda que invocou o aplicativo.

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

# Como usar a gravação de chamadas
<a name="sip-apps-call-record"></a>

As ações de gravação de chamadas para aplicativos de mídia SIP permitem que você crie soluções de gravação e transcrição pós-chamada para uma variedade de usos. Por exemplo, você pode gravar chamadas de atendimento ao cliente e usá-las para treinamento.

Você usa as ações de gravação de chamadas em conjunto com seus aplicativos de mídia SIP. Você também pode usar as ações sob demanda ou em resposta a um evento SIP. 
+ Para iniciar a gravação sob demanda de uma chamada na aplicação de mídia SIP, use a 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 a aplicação e gerar a ação [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 a gravação de chamadas em resposta a um evento SIP, você retorna a ação `StartCallRecording` em seu aplicativo. 

É possível pausar e retomar uma gravação em andamento. Para pausar, use a ação [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 continuar, use a ação `ResumeCallRecording`. Sempre que você pausa ou retoma uma gravação, a ação captura um tom que indica a pausa ou a retomada. Quando você faz uma pausa, a ação registra o silêncio, que o SDK do Amazon Chime usa para rastrear a duração da pausa e incluir as pausas na sua fatura. É possível pausar e retomar a gravação conforme necessário.

Para interromper a gravação de chamadas, você gera a ação [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). No entanto, as gravações de chamadas param automaticamente quando a chamada é interrompida e, nesse caso, você não precisa retornar explicitamente a ação `StopCallRecording`. Você só pode iniciar e parar a gravação uma vez para um trecho de chamada individual.

O SDK do Amazon Chime fornece gravações de chamadas para um bucket do Amazon S3 selecionado por você. O bucket deve pertencer à sua AWS conta. Quando uma chamada é interrompida, o aplicativo de mídia SIP entrega a gravação na pasta especificada no parâmetro `Destination` da ação [StartCallRecording](start-call-recording.md). O SDK do Amazon Chime grava chamadas em um formato WAV aberto. As chamadas que gravam faixas de entrada e saída usam o modo estéreo, com a faixa de entrada no canal esquerdo e a de saída no canal direito. Se você gravar somente a faixa de entrada ou saída, o sistema usará o modo mono.

**nota**  
As gravações feitas usando esse atributo podem estar sujeitas a leis ou regulamentos relacionados à gravação de comunicações eletrônicas. É responsabilidade sua e de seus usuários finais cumprir todas as leis aplicáveis em relação à gravação, incluindo notificar adequadamente todos os participantes de uma sessão ou comunicação gravada de que a sessão ou comunicação está sendo gravada e obter o consentimento deles.

## Como cobrar pela gravação de chamadas
<a name="call-billing"></a>

O SDK do Amazon Chime cobra por minuto pelo tempo em que a gravação de chamadas está habilitada para um trecho de chamada, e esse tempo inclui todas as pausas. Você será cobrado pelo uso da gravação de chamadas quando a gravação for entregue ao seu bucket do Amazon S3.

# Como gravar faixas de áudio
<a name="record-legs"></a>

Você pode gravar apenas as faixas de entrada ou saída da chamada, ou ambas as faixas de uma chamada.

Esta imagem mostra uma chamada típica recebida com um trecho ou sem ancoragem. 

![\[Uma chamada recebida que só se comunica com um aplicativo de mídia SIP.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/call-record-sma-one-leg.png)


A chamada tem apenas uma etapa com um `callID` de **call-id-1**. A faixa de áudio `INCOMING` é o áudio do chamador para o aplicativo de mídia SIP. A faixa de áudio `OUTGOING` é o áudio do aplicativo de mídia SIP para o chamador. Seu aplicativo de mídia SIP especifica o `CallId` da chamada que você deseja gravar. Para gravar o participante que fez a chamada, você especifica o `INCOMING`. Para gravar o participante que responde a chamada, você especifica o `OUTGOING`. Para registrar os dois participantes, especifique `BOTH`.

Esta imagem mostra uma chamada ancorada típica com dois participantes.

![\[Uma chamada recebida que se comunica com um aplicativo de mídia SIP e um segundo participante.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/call-record-sma-bridged.png)


Neste exemplo, a chamada tem dois trechos de chamada, **call-id-1** e **call-id-2**, e **call-id-1** é ancorado a **call-id-2**. Isso cria quatro faixas de áudio, os fluxos de entrada e saída de áudio para ambas as chamadas. IDs Você pode especificar quais faixas de chamada IDs e áudio devem ser gravadas. Por exemplo, se você quiser gravar a faixa de áudio do participante chamado, você grava a faixa de áudio `INCOMING` especificando **call-id-2** como `CallId` e `INCOMING` como faixa.

Se você quiser gravar tudo o que o chamador ouve, grave a faixa de áudio `OUTGOING` especificando **call-id-1** como `CallId` e `OUTGOING` como faixa. Se você quiser gravar todo o áudio dito e ouvido pelo `Caller`, você grava as faixas de áudio `BOTH` especificando `call-id-1` como `CallId` e `BOTH` como faixa.

# Casos de uso de exemplo
<a name="recording-use-cases"></a>

Os aplicativos de mídia SIP fornecem ações de gravação de chamadas como blocos de construção. Eles oferecem a flexibilidade de criar soluções de gravação de chamadas para seus casos de uso comercial. Os casos a seguir ilustram alguns cenários de uso comuns.

**Topics**
+ [Caso 1: como gravar uma chamada unilateral que envolve ações SIP](#recording-case-1)
+ [Caso 2: gravação seletiva de áudio em uma chamada ancorada](#recording-case-2)
+ [Caso 3: como gravar vários trechos de chamada](#recording-case-3)
+ [Caso 4: gravação sob demanda com pausa e retomada](#on-demand-pause-resume)

## Caso 1: como gravar uma chamada unilateral que envolve ações SIP
<a name="recording-case-1"></a>

Você pode gravar um chamador e qualquer áudio gerado pelas ações do aplicativo de mídia SIP, como as ações [PlayAudio](play-audio.md) e [PlayAudioAndGetDigits](play-audio-get-digits.md). Durante a gravação, se um chamador pressionar um dígito, a gravação captura o tom desse dígito. Este exemplo usa a ação `PlayAudioAndGetDigits`, mas a resposta de voz interativa (IVR) pode ser uma série complexa de ações de aplicativos de mídia SIP.

Neste exemplo, o aplicativo de mídia SIP grava as duas faixas de áudio entre o chamador e o próprio aplicativo de mídia SIP. A gravação começa quando a chamada é estabelecida e é interrompida quando o chamador desliga. A cobrança começa quando a chamada é estabelecida e é interrompida quando o chamador desliga.

![\[Diagrama de um aplicativo de mídia SIP gravando duas faixas de áudio, nesse caso, entre um chamador e o próprio aplicativo.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/sma-recording-case-1.png)


## Caso 2: gravação seletiva de áudio em uma chamada ancorada
<a name="recording-case-2"></a>

Você pode gravar seletivamente a faixa de áudio de um único participante da chamada. É possível usar esse atributo para ativar seletivamente a gravação de chamadas somente para um participante específico.

Neste exemplo, o aplicativo de mídia SIP grava as faixas de áudio de entrada entre a parte chamada e o próprio aplicativo de mídia SIP especificando **call-id-2** como `CallId` e `INCOMING` como faixa. A gravação da chamada começa quando o chamador é conectado à parte chamada, e é também quando a cobrança começa. A gravação é interrompida quando a pessoa chamada desliga e é também quando a cobrança termina. Essa gravação tem apenas a faixa de áudio da pessoa chamada. 

![\[Diagrama de um aplicativo de mídia SIP gravando seletivamente uma faixa.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/sma-recording-case-2.png)


## Caso 3: como gravar vários trechos de chamada
<a name="recording-case-3"></a>

Você pode gravar vários trechos de chamada. Por exemplo, digamos que você ancora uma ligação a um participante. Quando esse participante desliga, a ligação é transferida para outro participante. Você pode ativar a gravação de chamadas para todos os três trechos de chamada. 

Este exemplo mostra três arquivos de gravação separados. A gravação do primeiro trecho da chamada captura a conversa entre o chamador, seu aplicativo e os dois participantes que foram conectados à chamada. A gravação do segundo trecho da chamada captura a conversa entre o chamador e o primeiro participante. A gravação do terceiro trecho da chamada captura a conversa entre o chamador e o segundo participante. 

Esse caso cria três segmentos de chamada, e a cobrança se aplica ao início e ao final de cada segmento de chamada. Em outras palavras, o sistema entrega três gravações em seu bucket S3, e você é cobrado por cada uma. 

![\[Diagrama de um aplicativo de mídia SIP gravando vários trechos de chamada.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/sma-recording-case-3.png)


## Caso 4: gravação sob demanda com pausa e retomada
<a name="on-demand-pause-resume"></a>

É possível iniciar, interromper, pausar e retomar a gravação de chamadas sob demanda usando a 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). Você pode criar um aplicativo cliente que chame a API `UpdateSipMediaApplicationCall` e invoque seu aplicativo de mídia SIP para retornar ações de gravação de chamadas.

Seus usuários finais usam o aplicativo cliente para controlar a gravação da chamada. Por exemplo, em uma central de atendimento, um atendente usaria um aplicativo cliente de desktop para acionar ações de gravação de chamadas sob demanda. No exemplo da central de atendimento, o atendente pode pedir permissão ao chamador para gravar a chamada telefônica e clicar no aplicativo do cliente para iniciar a gravação quando o chamador concordar. Em outro exemplo, o chamador pode precisar fornecer informações como um número da previdência social (SSN). No entanto, a política da central de atendimento exige que o atendente não registre informações como o SSN do cliente. O atendente pode clicar no aplicativo para pausar a gravação enquanto o cliente fornece as informações e clicar novamente para retomá-la. Depois que o atendente processa a solicitação do chamador, ele clica no aplicativo para interromper a gravação e desliga a chamada.

Neste caso de uso, o aplicativo de mídia SIP grava ambas as faixas de áudio entre o chamador e o aplicativo de mídia SIP. Como o trecho `call-id-1` está ancorado ao trecho `call-id-2`, o sistema grava o áudio nos dois trechos, chamador e chamado. A gravação e a cobrança começam quando a API `UpdateSipMediaApplicationCall` invoca a ação `StartCallRecording`. A gravação e a cobrança param quando a API `UpdateSipMediaApplicationCall` invoca a ação `StopCallRecording`. Como lembrete, pausar a gravação não altera sua duração e você é cobrado por todas as pausas. 

![\[Diagrama de um aplicativo de mídia SIP gravando sob demanda com gravação pausada e retomada.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/sma-recording-on-demand.png)


# Ações de gravação de chamadas para aplicativos de mídia SIP
<a name="use-recording-apis"></a>

Você pode especificar diferentes ações de gravação de chamadas em uma resposta a partir da AWS Lambda função do seu aplicativo de mídia SIP. Os seguintes tópicos fornecem exemplos de código e explicam como usar as ações.

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

A ação `StartCallRecording` inicia a gravação de um trecho de chamada. Você inicia a gravação de chamadas em seus aplicativos de mídia SIP, sob demanda ou em resposta a um evento SIP.
+ Para iniciar a gravação sob demanda de uma chamada, você usa a API `UpdateSipMediaApplication` para invocar seu aplicativo e retornar a ação `StartCallRecording`.
+ Para iniciar a gravação de chamadas em resposta a um evento SIP, você retorna a ação `StartCallRecording` em seu aplicativo. 

Você especifica se deseja gravar a faixa de áudio para a etapa de entrada, a etapa de saída ou ambas. As seções a seguir explicam como usar a ação `StartCallRecording`.

**nota**  
As gravações feitas usando esse atributo podem estar sujeitas a leis ou regulamentos relacionados à gravação de comunicações eletrônicas. É responsabilidade sua e de seus usuários finais cumprir todas as leis aplicáveis em relação à gravação, incluindo notificar adequadamente todos os participantes de uma sessão ou comunicação gravada de que a sessão ou comunicação está sendo gravada e obter o consentimento deles.

**Topics**
+ [Solicitando uma StartCallRecording ação](#request-start)
+ [Como especificar um destino de gravação](#recording-destination)
+ [Como conceder permissões do bucket do Amazon S3](#grant-s3-perms)
+ [Resposta bem-sucedida da ação](#action-successful)
+ [Resposta de erro da ação](#action-error)

## Solicitando uma StartCallRecording ação
<a name="request-start"></a>

O exemplo a seguir mostra como solicitar a ação `StartCallRecording` para faixas `BOTH`.

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

**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* – Sim  
*Valor-padrão*: nenhum

**Faixa**  
*Descrição* – Áudio da `Track` da gravação da chamada.  
*Valores permitidos*: `BOTH`, `INCOMING` ou `OUTGOING`  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**Destination.Type**  
*Descrição* – Tipo de destino. Somente o Amazon S3 é permitido.  
*Valores permitidos*: Amazon S3  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**Destination.Location**  
*Descrição* – Um bucket válido do Amazon S3 e um prefixo de chave opcional do Amazon S3. O bucket deve ter permissões para a entidade principal de serviço de conector de voz do SDK do Amazon Chime, o voiceconnector.chime.amazonaws.com.  
*Valores permitidos*: um caminho do Amazon S3 válido para o qual o SDK do Amazon Chime tem acesso às ações `s3:PutObject` e `s3:PutObjectAcl`.  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

## Como especificar um destino de gravação
<a name="recording-destination"></a>

O SDK do Amazon Chime fornece gravações de chamadas para se bucket do Amazon S3. O bucket deve pertencer à sua AWS conta. Você especifica a localização do bucket no parâmetro `Destination` da ação `StartCallRecording`. O campo `Type` no parâmetro `Destination` deve ser `S3`. O campo `Location` consiste em seu bucket do Amazon S3, além de um prefixo de chave de objeto opcional no qual a gravação da chamada é entregue. 

O aplicativo de mídia SIP usa a `Location` especificada, a data e a hora do trecho da chamada, o ID da transação e o ID da chamada para formatar a chave de objeto do Amazon S3. A resposta da ação `StartCallRecording` retorna a chave de objeto completa do Amazon S3.

Quando você fornece somente o bucket do Amazon S3 no campo `Location`, o aplicativo de mídia SIP acrescenta um prefixo-padrão, `Amazon-Chime-SMA-Call-Recordings`, ao caminho do Amazon S3. O aplicativo de mídia SIP também anexa o ano, mês e dia do horário de início da chamada para ajudar a organizar as gravações. O exemplo a seguir mostra o formato geral de um caminho do Amazon S3 com o prefixo-padrão. Este exemplo usa `myRecordingBucket` 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
```

O exemplo a seguir mostra os dados representados no nome de registro de caminho do Amazon S3.

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

Quando você fornece o bucket do Amazon S3 e o prefixo da chave do objeto no campo `Location`, o aplicativo de mídia SIP usa seu prefixo de chave de objeto no caminho de destino do Amazon S3 em vez do prefixo-padrão. O exemplo a seguir mostra o formato geral de um caminho do Amazon S3 de gravação de chamadas com seu prefixo. Por exemplo, você pode especificar myRecordingBucket /TechnicalSupport/English como o. `Location` 

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

O exemplo a seguir mostra os dados no caminho do Amazon S3.

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

A gravação enviada para seu bucket do Amazon S3 contém [metadados de objetos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) adicionais sobre o trecho da chamada. A tabela a seguir lista os metadados do objeto do Amazon S3 compatíveis.


| Name (Nome) | Description | 
| --- | --- | 
| transaction-id | O ID da transação da chamada telefônica | 
| call-id | CallId do participante na invocação CallDetails da AWS Lambda função | 
| recording-duration | Duração da gravação de chamadas em segundos | 
| recording-audio-file-format | Formato de arquivo de áudio de gravação de chamadas representado como tipo de mídia da Internet | 

## Como conceder permissões do bucket do Amazon S3
<a name="grant-s3-perms"></a>

Seu bucket Amazon S3 de destino deve pertencer à mesma AWS conta do seu aplicativo. Além disso, a ação deve conceder permissão `s3:PutObject` e `s3:PutObjectAcl` à entidade principal responsável pelo serviço de conector de voz do SDK do Amazon Chime, `voiceconnector.chime.amazonaws.com`. O exemplo a seguir concede a permissão apropriada. 

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

------

O serviço de áudio PSTN lê e grava no bucket do S3 em nome da aplicação 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 as permissões do bucket do S3 a um único aplicativo de mídia 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"
                }
            }
        }
    ]
}
```

------

## Resposta bem-sucedida da ação
<a name="action-successful"></a>

Quando a gravação da chamada é iniciada com sucesso em um trecho de chamada, o aplicativo de mídia SIP invoca uma AWS Lambda função com o `ACTION_SUCCESSFUL` tipo de evento. A localização da gravação da chamada é retornada na resposta. 

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

## Resposta de erro da ação
<a name="action-error"></a>

Para erros de validação, o aplicativo de mídia SIP chama a AWS Lambda função com a mensagem de erro apropriada. A seguinte tabela lista as mensagens de erro.




| Erro | Mensagem | Motivo | 
| --- | --- | --- | 
| `InvalidActionParameter` | O parâmetro `CallId` para a ação é inválido | Qualquer parâmetro é inválido. | 
| `SystemException` | Erro do sistema ao executar uma ação. | Ocorreu outro tipo de erro do sistema na execução de uma ação. | 

Quando a ação falha ao gravar a mídia em um trecho de chamada, o aplicativo de mídia SIP invoca uma função AWS Lambda com o tipo de evento `ActionFailed`. 

O exemplo a seguir mostra uma resposta de erro 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": {
        ...
    }
}
```

Veja um exemplo prático em 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>

A ação `StopCallRecording` para a gravação de um trecho de chamada. A gravação é interrompida automaticamente quando uma chamada termina, e seu aplicativo não precisa retornar explicitamente a ação `StopCallRecording`. Quando a gravação de um trecho de chamada é interrompida, ela não pode ser iniciada novamente e a gravação é entregue ao destino especificado na ação `StartCallRecording`. 

O exemplo a seguir interrompe a gravação do trecho de chamada `call-id-1`. 

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

**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* – Sim  
*Valor-padrão*: nenhum

Veja um exemplo prático em 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>

A ação `PauseCallRecording` pausa a gravação de um trecho de chamada. Sempre que você pausa uma gravação, a gravação captura um tom que indica a pausa. Quando você pausa, a gravação continua, mas captura apenas o silêncio. Pausar a gravação não afeta a duração total da gravação. É possível pausar e retomar a gravação conforme necessário.

O exemplo a seguir pausa a gravação. 

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

**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* – Sim  
*Valor-padrão*: nenhum

Veja um exemplo prático em 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>

A ação `ResumeCallRecording` retoma a gravação de um trecho de chamada. Antes de a gravação ser reiniciada, um breve tom é reproduzido. Você pode pausar e retomar uma gravação várias vezes durante o trecho da chamada. 

O exemplo a seguir retoma a gravação. 

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

**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* – Sim  
*Valor-padrão*: nenhum

Veja um exemplo prático em 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>

Cria uma chamada de saída para um número de telefone PSTN ou para um tronco SIP configurado como conector de voz do Amazon Chime SDK ou grupo de conectores de voz do SDK do Amazon Chime e, em seguida, faz a ponte com uma chamada existente. Você usa a `PSTN` ao chamar um número de telefone e a `AWS` ao chamar um entroncamento SIP. 

Uma chamada existente pode ser uma chamada de saída criada usando a [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 ou uma chamada de entrada criada por uma regra SIP que invoca a AWS Lambda função com um evento. `NewInboundCall` Ao implementar uma ação `CallAndBridge` em um endpoint de conector de voz ou grupo de conectores de voz, você deve especificar o Amazon Resource Number (ARN) do conector de voz ou grupo de conectores de voz.

Você também pode adicionar cabeçalhos SIP personalizados às chamadas e funções de saída. AWS Lambda Os cabeçalhos personalizados permitem que você transmita valores como números de andares e códigos postais. Para obter mais informações sobre cabeçalhos personalizados, consulte [Usar cabeçalhos SIP no serviço de áudio PTSN do SDK do Amazon Chime](sip-headers.md).

Ao usar a função de chamada e ponte, é importante observar que cada chamada é contada em sua contagem de chamadas simultâneas ativas usada para calcular os limites de chamadas ativas do SMA. Com isso em mente, ao gerenciar seus limites de chamadas ativas do SMA para chamada e ponte, você deve contar 2 chamadas para cada 1 ação de chamada e ponte. Para obter mais informações, consulte [entroncamento SIP e cotas de voz](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas) no. *Referência geral da AWS*

O código de exemplo a seguir mostra uma ação típica que ancora a um endpoint PSTN.

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

O exemplo a seguir mostra uma ação típica que usa um conector de voz ou um grupo de conectores de voz, além de um cabeçalho 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**  
*Descrição* – O intervalo antes de uma chamada expirar. O cronômetro começa na configuração da chamada.  
*Valores permitidos*: entre 1 e 120, inclusive  
*Obrigatório* – Não  
*Valor-padrão* – 30

**CallerIdNumber**  
*Descrição* – Um número pertencente ao cliente ou o número De do trecho A  
*Valores permitidos*: um número de telefone válido no formato E.164  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**Endpoints**  
*Descrição* – Os endpoints de uma chamada  
*Valores permitidos*:   
+ `BridgeEndpointType` – `AWS` para conectores de voz e grupos de conectores de voz, caso contrário, `PSTN`.
+ `Arn` – O ARN de um conector de voz ou grupo de conectores de voz. Exigido apenas quando você usa a `AWS` como o `BridgeEndpointType`. 
+ `Uri` – O valor do URI depende do tipo de endpoint.

  Para endpoints da `PSTN`, o URI deve ser um número de telefone E.164 válido.

  Para endpoints da `AWS`, o valor do URI define o `user` como parte do `Request-URI`. Você deve usar o [formato Backus-Naur aumentado](https://datatracker.ietf.org/doc/html/rfc2234). Comprimento necessário: entre 1 e 36, inclusive. Use os seguintes valores: `a-z, A-Z, 0-9, &, =, +, $, /, %, -, _, !, ~, *, `(`,`), (`.`)

  O valor do host do `Request-URI` é derivado das rotas de entrada do conector de voz de destino. O exemplo a seguir mostra uma ação `CallAndBridge` com um endpoint `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 obter mais informações sobre rotas de entrada e conectores de voz, consulte [Como editar as configurações do conector de voz do SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/ag/edit-voicecon.html).
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**SipHeaders**  
*Descrição* – Permite que você passe valores adicionais. Use somente com o tipo de endpoint `AWS`.  
*Valores permitidos*: cabeçalho SIP válido  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

O exemplo a seguir mostra uma ação `CallAndBridge` bem-sucedida que usa um endpoint da 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"
         }
      ]
   }
}
```

O exemplo a seguir mostra uma ação `CallAndBridge` com falha.

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

## Fluxos de chamadas
<a name="call-bridge-flows"></a>

A ação `CallAndBridge` fornece uma experiência de sinalização de chamada e áudio diferente para um trecho de chamada existente, dependendo dos parâmetros e se o trecho está conectado.

O diagrama a seguir mostra os fluxos de chamadas com parâmetros diferentes quando um trecho de chamada de entrada A já está conectado.

![\[O fluxo de uma chamada atendida por meio da ação CallAndBridge.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


O diagrama a seguir mostra p fluxo de chamadas para uma chamada não atendida.

![\[O fluxo de uma chamada não atendida por meio da ação CallAndBridge.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**Detalhes adicionais**  
Lembre-se desses fatos sobre a ação `CallAndBridge`.
+ `CallTimeoutSeconds`: esse cronômetro começa quando o convite SIP é enviado no trecho B. Você pode definir um valor de destino desejado, mas esse valor pode ser ignorado pelas operadoras upstream.
+ `CallerIdNumber`: esse número de telefone deve pertencer ao cliente ou ser o número de origem de um trecho A.
+ **Comportamento de desligamento e casos extremos** – Se um trecho de chamada for desligado, o outro não desligará automaticamente a chamada. Quando um `Hangup` evento é enviado para a AWS Lambda função, a perna restante deve ser desconectada de forma independente. Se um trecho de chamada ficar suspenso, a chamada será cobrada até que seja desligada. Por exemplo, o cenário a seguir pode levar a cobranças inesperadas:
  + Você tenta se conectar a um número de telefone de destino. O destino está ocupado e envia a chamada diretamente para o correio de voz. Do ponto de vista do serviço de áudio, acessar o correio de voz é uma chamada atendida. O trecho A desliga, mas o trecho B continua ouvindo a mensagem do correio de voz. Enquanto o trecho B escuta, você é cobrado.
  + Como prática recomendada, use a AWS Lambda função, ou a pessoa do outro lado da chamada, para desligar cada segmento de chamada de forma independente.
+ **Cobrança** – Você é cobrado pelo seguinte ao usar `CallAndBridge`:
  + Minutos de chamada ativos para cada trecho de chamada criado (trecho A, trecho B etc.) para a PSTN.
  + Minutos de uso do serviço de áudio.

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-encaminhamento](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-on-gravação de demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

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

Envia um valor `Hangup` com um `SipStatusCode` para qualquer trecho de uma chamada.

Quando o serviço de áudio executa uma ação `Hangup` em um trecho de chamada:
+ Para uma chamada com apenas um trecho de chamada, o aplicativo de mídia SIP invoca a AWS Lambda função com um `HANGUP` evento e ignora a resposta. A chamada é então desconectada.
+ Para um trecho de chamada (trecho A) ancorado a outro trecho de chamada (trecho B), se a ação `Hangup` estiver associada ao trecho de chamada ancorado (trecho B), o serviço de áudio PSTN desconecta o trecho de chamada ancorado e invoca a função do Lambda com um evento `HANGUP` para o trecho B. O serviço de áudio PSTN então executa todas as ações retornadas dessa invocação do Lambda.
+ Para um trecho de chamada (trecho A) ancorado a outro trecho de chamada (trecho B), se a ação `Hangup` estiver associada ao trecho de chamada original (trecho A), o serviço de áudio PSTN desconecta o trecho de chamada original e invoca a função do Lambda com um evento `HANGUP` para o trecho A. O serviço de áudio PSTN então executa todas as ações retornadas dessa invocação do Lambda.
+ Para um segmento de chamada que ingressou em uma reunião usando a ação `JoinMeeting`, se a ação `Hangup` estiver associada ao trecho da reunião (geralmente trecho B), o chamador se desconectará da reunião e receberá um evento `ACTION_SUCCESSFUL` para a ação `Hangup`.

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

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

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

**SipResponseCode**  
*Descrição* – Qualquer um dos códigos de resposta SIP suportados  
*Valores permitidos*: 480: indisponível; 486: ocupado; 0: encerramento normal  
*Obrigatório* – Não  
*Valor-padrão*: 0

Depois que um usuário encerra uma chamada, o aplicativo de mídia SIP invoca uma AWS Lambda função com o código listado em. [Encerrar uma chamada usando o serviço de áudio PSTN do SDK do Amazon Chime](case-5.md)

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-encaminhamento](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificações de chamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-gravação de demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

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

Participe de uma reunião do SDK do Amazon Chime fornecendo o token de participação do participante. Para fazer isso, você faz chamadas AWS do SDK para o [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html) e [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 obter o token e repassá-lo na ação. Veja o exemplo a seguir. 

**nota**  
Você não pode executar essa ação em uma chamada ancorada.

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

**JoinToken**  
*Descrição*: um token de participação válido do participante da reunião do SDK do Amazon Chime  
*Valores permitidos*: token de participação válido  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**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`  
*Obrigatório* – Não  
*Valor-padrão*: `ParticipantTag` do `callLeg` invocado ignorado se você especificar `CallId`

**MeetingId**  
*Descrição*: um ID de reunião válido do SDK do Amazon Chime associado ao `JoinToken`. Se a reunião foi criada usando uma API no namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html), o ID da reunião não é necessário. Se a reunião foi criada usando uma API no namespace [SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html), o ID da reunião é necessário. A reunião é ingressada usando o endpoint da API usado para criar a reunião.  
*Valores permitidos*: um ID de reunião válido.  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

O aplicativo de mídia SIP sempre invoca uma AWS Lambda função depois de executar essa ação. Ele retorna os tipos de eventos de invocação `ACTION_SUCCESSFUL` ou `ACTION_FAILED`. O exemplo a seguir mostra uma estrutura de evento de invocação bem-sucedida.

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

**Gerenciamento de erros**  
Quando ocorre um erro de validação ao interligar uma reunião, o aplicativo SIP chama sua AWS Lambda função com uma das mensagens de erro mostradas na tabela a seguir.


|  Erro  |  Mensagem  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  O valor do parâmetro `JoinToken` é inválido.  |  Qualquer um dos outros parâmetros da ação é inválido ou está ausente.  | 
|  `SystemException`  |  Erro do sistema ao executar a ação.  |  Ocorreu outro tipo de erro do sistema na execução da ação.  | 

O exemplo a seguir mostra um evento de falha típico.

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

Veja um exemplo prático em GitHub: [https://github.com/aws-samples/amazon-chime-sma-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)

# ModifyChimeMeetingAttendee (silenciar e reativar o áudio)
<a name="mute-unmute"></a>

Permite que o aplicativo de mídia SIP modifique o status de um participante de uma chamada telefônica fornecendo o ID da reunião e a lista de participantes do SDK do Amazon Chime.

**nota**  
Atualmente, essa ação oferece suporte às operações de ativar e desativar o áudio em participantes da chamada telefônica. Além disso, o usuário deve participar de uma reunião usando a ação `JoinChimeMeeting`. Essa ação pode ser executada em um `participantTag=“LEG-B”` ou em um `CallId` correspondente. 

Essa ação se aplica somente ao CallLeg que se junta do aplicativo de mídia SIP ao `"+` *13605550122* `"` LEG-B ou ao trecho unido do aplicativo de mídia SIP à reunião.

```
{
"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**  
*Descrição* – A operação a ser executada na lista de participantes  
*Valores permitidos*: ativar, desativar áudio  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**MeetingId**  
*Descrição* – O ID da reunião à qual os participantes pertencem  
*Valores permitidos*: um ID de reunião válido. A pessoa que está ativando ou desativando o áudio também deve pertencer à reunião.  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**CallId**  
*Descrição* – O ID da reunião à qual os participantes pertencem  
*Valores permitidos*: um ID de chamada válido.  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**ParticipantTag**  
*Descrição* – A tag atribuída ao participante.  
*Valores permitidos*: uma tag válida.  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**AttendeeList**  
*Descrição* — Lista de participantes IDs para ativar ou desativar o som  
*Valores permitidos* — Uma lista de participantes válidos IDs  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum, máximo de 100

Depois de executar essa ação, o serviço de áudio sempre invoca um perfil AWS Lambda com o tipo de evento de invocação `ACTION_SUCCESSFUL` ou `ACTION_FAILED`. O código do exemplo a seguir mostra um evento de invocação `ACTION_SUCCESSFUL` 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": {
        ...
    }
}
```

**Tratamento de erros**  
Em casos de parâmetros de instrução inválidos ou falhas de API, os aplicativos de mídia SIP chamam uma AWS Lambda função com a mensagem de erro específica da instrução ou API com falha.


|  Erro  |  Mensagem  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  O valor do parâmetro `ModifyChimeMeetingAttendees Operation` é inválido  |  O valor `Operation` deve ser Desativar ou Ativar.  | 
|     |  O valor do parâmetro ID da reunião é inválido.  |  O ID da reunião está vazio.  | 
|     |  O valor do parâmetro Lista de participantes é inválido.  |  A lista de IDs de participantes está vazia ou excede o máximo de 100.  | 
|     |  Ação inválida na chamada.  |  A ligação não foi ancorada.  | 
|     |  A chamada não está conectada ao Chime Meeting.  |  O participante não está conectado ao Chime Meeting.  | 
|     |  Um ou mais participantes não fazem parte dessa reunião. Todos os participantes devem fazer parte dessa reunião.  |  O participante não está autorizado a modificar os participantes da reunião.  | 
|  `SystemException`  |  Erro do sistema ao executar a ação.  |  Ocorreu um erro do sistema na execução de uma ação.  | 

O código do exemplo a seguir mostra um evento de falha 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": {
        ...
    }
}
```

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

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

Pausa uma chamada por um tempo especificado.

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

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

**DurationInMilliseconds**  
*Descrição* – Duração da pausa, em milissegundos  
*Valores permitidos*: um número inteiro >0  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

Veja exemplos de trabalho em GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificações de chamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-gravação de demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# 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”, ”\$1”, ”\$1”  
*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 Amazon Chime SDK recomenda 8 mono. KHz 

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-encaminhamento](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificações de chamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-gravação de demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-ligar](https://github.com/aws-samples/amazon-chime-sma-update-call)

# 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\$1\$1  
*Obrigatório* – Não  
*Valor-padrão*: \$1

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

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

Quando um usuário insere dígitos que correspondem ao padrão de expressão regular especificado nessa ação, o aplicativo de mídia SIP invoca a função. AWS Lambda 

```
{
    "Type": "ReceiveDigits",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "InputDigitsRegex": "^\d{2}#$",
        "InBetweenDigitsDurationInMilliseconds": 1000, 
        "FlushDigitsDurationInMilliseconds": 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* – Sim  
*Valor-padrão*: nenhum

**InBetweenDigitsDurationInMilliseconds**  
*Descrição* – Intervalo entre dígitos antes de verificar se a entrada corresponde ao padrão de expressão regular  
*Valores permitidos*: duração em milissegundos  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**FlushDigitsDurationInMilliseconds**  
*Descrição* — Intervalo após o qual os dígitos DTMF recebidos são liberados e enviados para a função. AWS Lambda Se o aplicativo de mídia SIP receber um novo dígito após o término do intervalo, o cronômetro reiniciará.  
*Valores permitidos*: `InBetweenDigitsDurationInMilliseconds`  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

O aplicativo de mídia SIP descarta dígitos DTMF durante a chamada até receber uma nova ação `ReceiveDigits`. O intervalo `FlushDigitsDurationInMilliseconds` começa quando o aplicativo de mídia SIP recebe o primeiro dígito DTMF. Se o usuário inserir os dígitos corretos antes que o intervalo expire, o aplicativo de mídia SIP invoca a função descrita em. AWS Lambda [Receber a entrada do chamador para o serviço de áudio PSTN do SDK do Amazon Chime](case-4.md)

Se a entrada do usuário não corresponder ao padrão de expressão regular, o aplicativo de mídia SIP repetirá a mensagem do arquivo de áudio de "falha" até que o aplicativo esgote a contagem de repetições ou o usuário insira dígitos válidos. 

Veja exemplos de trabalho em GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notificações de chamadas](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-gravação de demanda](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-ligar](https://github.com/aws-samples/amazon-chime-sma-update-call)

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

Permite que o aplicativo de mídia SIP grave mídia de um determinado ID de chamada. Por exemplo, um aplicativo de correio de voz e anúncios dos participantes da reunião. O aplicativo grava até atingir a duração que você definiu, ou quando um usuário pressiona um dos `RecordingTerminators`, ou quando o aplicativo detecta o silêncio. Nesses casos, a ação instrui seu aplicativo a colocar o arquivo de mídia resultante no bucket S3 especificado. O bucket do S3 deve pertencer à mesma AWS conta do aplicativo de mídia SIP. Além disso, a ação deve conceder as permissões `s3:PutObject` e `s3:PutObjectAcl` à entidade principal do serviço Voice Connector do SDK do Amazon Chime, [entidade principal do serviço Voice Connector do SDK do Amazon Chime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), `voiceconnector.chime.amazonaws.com`. 

**nota**  
As gravações feitas usando esse atributo podem estar sujeitas a leis ou regulamentos relacionados à gravação de comunicações eletrônicas. É responsabilidade sua e de seus usuários finais cumprir todas as leis aplicáveis em relação à gravação, incluindo notificar adequadamente todos os participantes de uma sessão ou comunicação gravada de que a sessão ou comunicação está sendo gravada e obter o consentimento deles.

O exemplo a seguir dá permissão `s3:PutObject` e `s3:PutObjectAcl` à entidade principal responsável pelo serviço de conector de voz do SDK do Amazon Chime.

------
#### [ 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/*"
        }
    ]
}
```

------

O exemplo a seguir interrompe a gravação quando o chamador pressiona a tecla de tecla jogo-da-velha (\$1), ou 10 segundos se passam sem atividade, ou o chamador permanece em silêncio por 3 segundos e grava o arquivo de mídia resultante no local definido pelo parâmetro `RecordingDestination`.

**nota**  
Este exemplo usa o parâmetro `CallId`. Você pode usar o parâmetro `ParticipantTag` em vez disso, mas não pode usar os dois.

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

**RecordingDestination.Type**  
*Descrição* – Tipo de destino. Somente S3.  
*Valores permitidos*: S3  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**RecordingDestination.BucketName**  
*Descrição* – Um nome de bucket S3 válido. O bucket 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:PutObject` e `s3:PutObjectAcl`.  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

****RecordingDestination.Prefix****  
*Descrição* – prefixo S3 do arquivo de gravação  
*Valores permitidos*: um nome de prefixo válido contendo até 979 caracteres seguros. Para obter mais informações sobre caracteres seguros, consulte [Caracteres seguros](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines-safe-characters) no Guia do usuário do Amazon Simple Storage Service.  
*Obrigatório* – Não  
*Padrão* – Nenhum. Se não for especificada, a gravação será salva na raiz do bucket do S3.

**DurationInSeconds**  
*Descrição* – A duração da gravação, em segundos  
*Valores permitidos*: >0  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

****SilenceDurationInSeconds****  
*Descrição* – A duração do silêncio, em segundos, após a qual a gravação é paralisada. Se não for especificado, a detecção de silêncio será desabilitada.  
*Valores permitidos*: [1; 1000]  
*Obrigatório* – Não  
*Valor-padrão*: 200

****SilenceThreshold****  
*Descrição* – Nível de ruído considerado "silêncio". Se você não especificar um valor para `SilenceDurationInSeconds`, este parâmetro será ignorado.  

**Valores de referência (níveis de ruído e limites para tratar o ruído como silêncio):**
+ 1—30dB ou menos, como uma sala silenciosa
+ 100—40-50 dB, como um sussurro ou um escritório silencioso
+ 200—60dB, como um escritório lotado
+ 1000—75 dB, como uma pessoa barulhenta ou música
*Valores permitidos*: [1; 1000]  
*Obrigatório* – Não  
*Valor-padrão*: 200

**RecordingTerminators**  
*Descrição* – Lista todos os terminadores de gravação disponíveis.  
*Valores permitidos*: uma matriz de dígitos e símbolos únicos de [123456789\$10\$1]  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

## Como tratar eventos ACTION\$1SUCCESSFUL
<a name="handle-action-successful"></a>

Quando a gravação termina, o aplicativo de mídia SIP do Amazon Chime SDK chama a AWS Lambda função e passa para ela o evento ACTION\$1SUCCESSFUL, junto com os resultados da invocação.

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

O evento `ACTION_SUCCESSFUL` contém `ActionData`, que contém os seguintes campos:

**Type**  
*Descrição* – O tipo da ação, `RecordAudio`.

**Parameters**  
*Descrição* – Os parâmetros da ação.

**RecordingDestination.Type**  
*Descrição* – Tipo de destino. Somente S3. 

**RecordingDestination.BucketName**  
*Descrição* – O bucket do S3 que contém o arquivo de gravação. 

**RecordingDestination.Key**  
*Descrição* – A chave S3 do arquivo de gravação.

**RecordingTerminatorUsed**  
*Descrição* – O terminador usado para parar a gravação – um dos terminadores passados no parâmetro `RecordingTerminators`. Se a gravação parar após atingir a duração máxima (`DurationInSeconds`) ou devido ao silêncio (`SilenceDurationInSeconds`), esse par de valores-chave não será incluído na saída.

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


|  Erro  |  Mensagem  |  Motivo  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  O parâmetro `CallId` ou `ParticipantTag` para a ação é inválido. O valor do parâmetro `DurationInSeconds` é inválido. O valor do parâmetro `SilenceDurationInSeconds` é inválido. O valor do parâmetro `SilenceThreshold` é inválido. O valor do parâmetro `RecordingDestination` é inválido. Ocorreu um erro ao fazer o upload da gravação para o bucket do S3.  |  Qualquer parâmetro é inválido.  | 
|  `SystemException`  |  Erro do sistema ao executar uma ação.  |  Ocorreu outro tipo de erro do sistema na execução de uma ação.  | 

## Processar eventos ACTION\$1FAILED
<a name="handle-action-failed"></a>

Quando a ação falha ao gravar a mídia em um trecho de chamada, o aplicativo de mídia SIP invoca uma AWS Lambda função com o `ACTION_FAILED` tipo de evento. Veja o exemplo a seguir.

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

Veja um exemplo prático 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>

Envie até 50 dígitos de multifrequência de tom duplo (DTMF) em qualquer trecho de uma chamada. Os sinais podem incluir o seguinte:
+ Números de 0 a 9
+ Caracteres especiais estrela (\$1) e jogo-da-velha (\$1)
+ Sinais de controle de rede A, B, C, D
+ O caractere de vírgula (,). Esse sinal adiciona um atraso de 0,5 segundo entre os sinais anteriores e os próximos.

**Topics**
+ [Usar o SendDigits action](#send-digits-action)
+ [Manuseio ACTION\$1SUCCESSFUL eventos](#send-digit-success)
+ [Manuseio ACTION\$1FAILED eventos](#send-digit-fail)
+ [Fluxo de chamadas](#send-digits-call-flow)

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

O exemplo a seguir mostra uma ação `SendDigits` típica:

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

**CallId**  
*Descrição* – O `CallId` do participante no `CallDetails` da invocação da função AWS Lambda   
*Valores permitidos*: um ID de chamada válido  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**Digits**  
*Descrição* – Os dígitos a serem enviados no trecho de chamada que corresponde ao `CallId`  
*Valores permitidos*: 0-9, \$1, \$1, A, B, C, D, vírgula (,)  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**ToneDurationInMilliseconds**  
*Descrição* – A quantidade de tempo permitida, em milissegundos, para transmitir cada dígito.  
*Valores permitidos*: qualquer número inteiro entre 50 e 24000  
*Obrigatório* – Não  
*Valor-padrão*: 250

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

O exemplo a seguir mostra um evento `ACTION_SUCCESSFUL` típico para a ação `SendDigits`.

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

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

O exemplo a seguir mostra um evento `ACTION_FAILED` típico para a ação `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": {
        ...
        }
    }
}
```

## Fluxo de chamadas
<a name="send-digits-call-flow"></a>

O diagrama a seguir mostra o fluxo do programa para enviar dígitos de um chamador para um chamador.

![\[Diagrama mostrando o fluxo do programa da ação SendDigits.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/send-digits-1.png)


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

Você pode reproduzir a fala em qualquer trecho de chamada fornecendo texto. Você pode usar texto sem formatação ou Speech Synthesis Markup Language (SSML). O SSML fornece mais controle sobre como o SDK do Amazon Chime gera fala adicionando pausas, enfatizando determinadas palavras ou alterando o estilo de fala.

O Amazon Chime SDK usa o serviço Amazon Polly para converter. text-to-speech O Amazon Polly permite que você escolha entre o mecanismo-padrão ou neural para melhorar a qualidade da fala. O Amazon Polly oferece suporte a mais de 20 idiomas e 60 vozes para personalizar a experiência do usuário do seu aplicativo. O SDK do Amazon Chime fornece atributos de fala gratuitamente, mas você paga pelo uso do Amazon Polly. Consulte a [página de preços](https://aws.amazon.com/polly/pricing/) do Amazon Polly ou seu painel de cobrança para obter informações sobre preços.

**Importante**  
O uso do Amazon Polly está sujeito aos [Termos de Serviço da AWS](https://aws.amazon.com/service-terms/), incluindo os termos específicos dos Serviços de Machine Learning e Inteligência Artificial.

**Topics**
+ [Usar o Speak action](#speak-action)
+ [Manuseio ACTION\$1SUCCESSFUL eventos](#speak-action-success)
+ [Manuseio ACTION\$1FAILED eventos](#speak-action-fail)
+ [Fluxos de programas](#speak-flow)

## Usar o Speak action
<a name="speak-action"></a>

O exemplo a seguir mostra um uso típico da ação `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**  
*Descrição* – O `CallId` do participante no `CallDetails` da invocação da função do Lambda  
*Valores permitidos*: um ID de chamada válido  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**Text**  
*Descrição* – Especifica o texto de entrada a ser sintetizado em fala. Se você especificar `ssml` como `TextType`, siga o formato SSML para o texto de entrada.  
*Valores permitidos*: string  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**Engine**  
*Descrição* – Especifica o mecanismo – padrão ou neural – a ser usado ao processar texto para síntese de fala.  
*Valores permitidos*: standard \$1 neural  
*Obrigatório* – Não  
*Valor-padrão*: padrão

**LanguageCode**  
*Descrição* – Especifica o código do idioma. Apenas necessário se estiver usando uma voz bilíngue. Se você usar uma voz bilíngue sem especificar um código de idioma, o idioma-padrão da voz bilíngue é usado.  
*Valores permitidos*: [Códigos de idioma do Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**TextType**  
*Descrição* – Especifica o tipo de texto de entrada, texto sem formatação ou SSML. Se um tipo de entrada não for especificado, o texto sem formatação será usado como padrão. Para obter mais informações sobre SSML, consulte [Como gerar fala a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) no *Guia do desenvolvedor do Amazon Polly.*  
*Valores permitidos*: ssml \$1 text  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**VoiceId**  
*Descrição* – Especifica o ID da voz que você deseja usar.  
*Valores permitidos* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obrigatório* – Não  
*Valor-padrão*: Joanna

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

O exemplo a seguir mostra um evento `ACTION_SUCCESSFUL` típico para uma ação que sintetiza o texto "Hello World" em fala, em inglês, usando a voz `Joanna` do 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":{       
       ...
    }
}
```

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

O exemplo a seguir mostra um evento `ACTION_FAILED` típico para o mesmo evento usado no exemplo 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":{       
       ...
    }
}
```

**Gerenciamento de erros**  
Essa tabela lista e descreve as mensagens de erro geradas pela ação `Speak`.


| Erro | Mensagem | Motivo | 
| --- | --- | --- | 
| `AccessDenied` | A função vinculada ao serviço `AWSServiceRoleForAmazonChimeVoiceConnector` não está configurada corretamente. | A função vinculada ao serviço usada para fazer solicitações ao Amazon Polly não existe ou há permissões ausentes. Para resolver, consulte as etapas na seção [Como usar a função vinculada ao serviço do conector de voz do SDK do Amazon Chime](speak-and-get-digits.md#speak-digits-policy) | 
| `InvalidActionParameter` |   | Houve um erro ao validar os parâmetros da ação. Consulte a [SynthesizeSpeech API](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech) no *Amazon Polly Developer Guide* para obter mais informações sobre parâmetros. | 
| ActionExecutionThrottled | O Amazon Polly está controlando a utilização da solicitação para sintetizar a fala. | A solicitação para o Amazon Polly está retornando uma exceção de controle de utilização. [Para obter mais informações sobre os limites de limitação do Amazon Polly, consulte 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` | `Text` é um parâmetro obrigatório. | Os parâmetros de ação devem ter um valor `Text` | 
| `MissingRequiredActionParameter` | O `Text` é limitado a 1.000 caracteres | O texto excedeu o limite de caracteres. | 
| `SystemException` | Erro do sistema ao executar a ação. | Ocorreu um erro do sistema na execução da ação. | 

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

O diagrama a seguir mostra o fluxo do programa que ativa a ação `Speak` para um chamador. Neste exemplo, o chamador ouve um texto que 

![\[Diagrama mostrando o fluxo do programa para ativar a ação Speak para um chamador.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/Speak1.png)


**No diagrama**  
Usando um telefone virtual, o chamador insere um número registrado em um aplicativo de mídia SIP. O aplicativo usa o método `INVITE` SIP e envia uma resposta `Trying (100)` ao chamador. Isso indica que o servidor de próximo salto recebeu a solicitação de chamada. O aplicativo SIP usa `INVITE` para entrar em contato com o endpoint. Depois que a conexão é estabelecida, os aplicativos enviam uma resposta `Ringing (180)` ao chamador e o alerta é iniciado. 

Em seguida, o aplicativo de mídia SIP envia um evento `NEW_INBOUND_CALL` para a função do Lambda, que responde com uma ação `Speak` que inclui o ID do chamador e o texto que você deseja converter em fala. O aplicativo SIP então envia uma resposta `200 (OK)` para indicar que a chamada foi atendida. O protocolo também ativa a mídia. 

Se a ação `Speak` for bem-sucedida e converter o texto em fala, ela retornará um evento`ACTION_SUCCESSFUL` para o aplicativo de mídia SIP, que retornará o próximo conjunto de ações. Se a ação falhar, o aplicativo de mídia SIP envia um evento `ACTION_FAILED` para a função do Lambda, que responde com um conjunto de ações `Hangup`. O aplicativo desliga o chamador e retorna um evento `HANGUP` para a função do Lambda, que não realiza nenhuma ação adicional. 



O diagrama a seguir mostra o fluxo do programa que ativa a ação `Speak` para um receptor da chamada.

![\[Diagrama mostrando o fluxo do programa para ativar a ação Speak para um receptor da chamada. Você pode fazer isso em qualquer chamada ancorada.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/Speak2.png)


**No diagrama**  
Um chamador insere um número registrado em um aplicativo de mídia SIP e o aplicativo responde conforme descrito no diagrama anterior. Quando a função do Lambda recebe o evento `NEW_INBOUND_CALL`, ela retorna a ação [CallAndBridge](call-and-bridge.md) para o aplicativo SIP. O aplicativo usa o método `INVITE` SIP e envia as respostas `Trying (100)` e `Ringing (180)` ao receptor da chamada. 

Se o receptor da chamada atender, o aplicativo de mídia SIP receberá uma resposta `200 (OK)` e enviará a mesma resposta ao chamador. Isso estabelece a mídia, e o aplicativo SIP envia um evento `ACTION_SUCCESSFUL` para a ação [CallAndBridge](call-and-bridge.md) para a função do Lambda. A função então retorna a ação Speak e os dados para o aplicativo SIP, que converte 

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

Reproduza a fala fornecendo texto e colete dígitos de frequência múltipla de dois tons (DTMF) do usuário. O texto pode ser texto sem formatação ou texto aprimorado pela Speech Synthesis Markup Language (SSML) para fornecer mais controle sobre como o SDK do Amazon Chime gera fala adicionando pausas, enfatizando determinadas palavras ou alterando o estilo de fala, entre outros atributos SSML compatíveis. Se ocorrer uma falha, como um usuário não digitar o número correto de dígitos DTMF, a ação reproduz a fala de "falha" e, em seguida, reproduz a fala principal até que o aplicativo de mídia SIP esgote o número de tentativas definido no parâmetro `Repeat`.

O SDK do Amazon Chime usa o Amazon Polly, um serviço em nuvem que converte texto em fala realista. O Amazon Polly fornece um mecanismo-padrão e um mecanismo neural para melhorar a qualidade da fala, mais de 20 idiomas compatíveis e 60 vozes. O Amazon Polly fornece atributos de fala gratuitamente, mas você paga pelo uso do Amazon Polly. Consulte a [página de preços](https://aws.amazon.com/polly/pricing/) do Amazon Polly ou seu painel de cobrança para obter informações sobre preços.

**Importante**  
O uso do Amazon Polly está sujeito aos Termos de [AWS Serviço, incluindo os termos](https://aws.amazon.com/service-terms/) específicos dos Serviços de AWS Machine Learning e Inteligência Artificial.

**Topics**
+ [Usar o SpeakAndGetDigits action](#speak-digits-action)
+ [Manuseio ACTION\$1SUCCESSFUL eventos](#speak-digits-success)
+ [Manuseio ACTION\$1FAILED eventos](#speak-digits-fail)
+ [Como usar a função vinculada ao serviço do conector de voz do SDK do Amazon Chime](#speak-digits-policy)

## Usar o SpeakAndGetDigits action
<a name="speak-digits-action"></a>

O exemplo a seguir mostra um uso típico da ação `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**  
*Descrição* — O `CallId` do participante na CallDetails invocação da função Lambda.  
*Valores permitidos*: um `callID` válido  
*Obrigatório* – Sim  
*Valor-padrão*: não

**InputDigitsRegex**  
*Descrição* – Um padrão de expressão regular para ajudar a garantir que os usuários insiram os dígitos e letras corretos.  
*Valores permitidos*: um padrão de expressão regular válido  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**SpeechParameters.Engine**  
*Descrição* – Especifica o mecanismo – padrão ou neural – a ser usado ao processar texto para síntese de fala.  
*Valores permitidos*: `standard` \$1 `neural`  
*Obrigatório* – Não  
*Valor-padrão*: padrão

**SpeechParameters.LanguageCode**  
*Descrição* – Especifica o código do idioma. Isso só é necessário se estiver usando uma voz bilíngue. Se uma voz bilíngue for usada e nenhum código de idioma for especificado, o idioma-padrão da voz bilíngue é usado.  
*Valores permitidos*: [Códigos de idioma do Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obrigatório* – Não  
*Valor-padrão*: nenhum

**SpeechParameters.Text**  
*Descrição* – Especifica o texto de entrada. Se você especificar `ssml` como `SpeechParameters.TextType`, você deve seguir o formato SSML para o texto de entrada. Para obter mais informações sobre SSML, consulte [Como gerar fala a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) no *Guia do desenvolvedor do Amazon Polly.*  
*Valores permitidos*: string  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**SpeechParameters.TextType**  
*Descrição* – Especifica o formato de texto para `SpeechParameters.Text`. Se não for especificado, `text` é usado como padrão. Para obter mais informações sobre SSML, consulte [Como gerar fala a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) no *Guia do desenvolvedor do Amazon Polly.*  
*Valores permitidos*: `ssml` \$1 `text`  
*Obrigatório* – Não  
*Valor-padrão*: `text`

**SpeechParameters.VoiceId**  
*Descrição* – O ID da voz do Amazon Polly usada para falar o texto em `SpeechParameters.Text`.  
*Valores permitidos* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obrigatório* – Não  
*Valor-padrão*: Joanna

**FailureSpeechParameters.Engine**  
*Descrição* – Especifica o mecanismo – padrão ou neural — a ser usado ao processar a mensagem de falha usada quando o cliente insere uma resposta inválida para síntese de fala.  
*Valores permitidos*: `standard` \$1 `neural`  
*Obrigatório* – Não  
*Valor-padrão*: o valor `SpeechParameters.Engine`

**FailureSpeechParameters.LanguageCode**  
*Descrição* – especifica o código do idioma usado quando o cliente insere uma resposta inválida. Apenas necessário se estiver usando uma voz bilíngue. Se você usar voz bilíngue sem especificar um código de idioma, o idioma-padrão da voz bilíngue é usado.  
*Valores permitidos*: [Códigos de idioma do Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obrigatório* – Não  
*Valor-padrão*: o valor `SpeechParameters.LanguageCode`.

**FailureSpeechParameters.Text**  
*Descrição* – especifica o texto de entrada falado quando o cliente insere uma resposta inválida. Se você especificar `ssml` como `FailureSpeechParameters.TextType`, você deve seguir o formato SSML para o texto de entrada.  
*Valores permitidos*: string  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

**FailureSpeechParameters.TextType**  
*Descrição* – Especifica se o texto de entrada especificado em `FailureSpeechParameters.Text` é sem formatação ou SSML. O valor-padrão é texto sem formatação. Para obter mais informações, consulte [Como gerar fala a partir de documentos SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) no *Guia do desenvolvedor do Amazon Polly.*  
*Valores permitidos*: `ssml` \$1 `text`  
*Obrigatório* – Não  
*Valor-padrão*: o valor `SpeechParameters.Text`

**FailureSpeechParameters.VoiceId**  
*Descrição* – O ID da voz usada para falar a string em `FailureSpeechParameters.Text`.  
*Valores permitidos* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obrigatório* – Sim  
*Valor-padrão*: o valor `SpeechParameters.VoiceId`

**MinNumberOfDigits**  
*Descrição* – O número mínimo de dígitos a serem capturados antes de atingir o tempo limite ou reproduzir a mensagem de "falha na chamada".  
*Valores permitidos*: maior ou igual a zero  
*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*: maiores que `MinNumberOfDigits`  
*Obrigatório* – Não  
*Valor-padrão*: 128

**TerminatorDigits**  
*Descrição* — Dígito usado para finalizar a entrada se o usuário digitar menos do que MaxNumberOfDigits  
*Valores permitidos*: qualquer um dos seguintes: 0 1 2 3 4 5 6 7 8 9 \$1 ou \$1  
*Obrigatório* – Não  
*Valor-padrão*: \$1

**InBetweenDigitsDurationInMilliseconds**  
*Descrição* – O tempo de espera em milissegundos entre as entradas de dígitos antes de reproduzir a fala de falha.  
*Valores permitidos*: maiores que zero  
*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. Se você omitir esse parâmetro, o valor-padrão será uma tentativa de coletar dígitos.  
*Valores permitidos*: maiores que zero  
*Obrigatório* – Não  
*Valor-padrão*: 1

**RepeatDurationInMilliseconds**  
*Descrição* – Tempo limite em milissegundos para cada tentativa de obter dígitos.  
*Valores permitidos*: maiores que zero  
*Obrigatório* – Sim  
*Valor-padrão*: nenhum

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

O exemplo a seguir mostra um 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":{       
       ...
    }
}
```

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

O exemplo a seguir mostra um 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":{       
       ...
    }
}
```

**Gerenciamento de erros**  
Essa tabela lista e descreve as mensagens de erro geradas pela ação `Speak`.


| Erro | Mensagem | Motivo | 
| --- | --- | --- | 
| `AccessDenied` | A função `AWSServiceRoleForAmazonChimeVoiceConnector` não está configurada corretamente. | A função usada para fazer solicitações ao Amazon Polly não existe ou há permissões ausentes. Para resolver, consulte as etapas na seção [Como usar a função vinculada ao serviço do conector de voz do SDK do Amazon Chime](#speak-digits-policy) | 
| `InvalidActionParameter` |   | Houve um erro ao validar os parâmetros da ação. Para analisar os parâmetros disponíveis para essa ação e suas opções, consulte [SynthesizeSpeech](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html) no Guia do desenvolvedor do Amazon Polly. | 
| `MissingRequiredActionParameter` | `Text` é um parâmetro obrigatório. | Os parâmetros de ação devem ter um valor `Text` | 
| `MissingRequiredActionParameter` | O `Text` é limitado a 1.000 caracteres | O texto excedeu o limite de caracteres. | 
| `SystemException` | Erro do sistema ao executar a ação. | Ocorreu um erro do sistema na execução da ação. | 

## Como usar a função vinculada ao serviço do conector de voz do SDK do Amazon Chime
<a name="speak-digits-policy"></a>

Você não precisa criar manualmente uma função vinculada ao serviço para as ações `Speak` ou `SpeakAndGetDigits`. Quando você cria ou atualiza um aplicativo de mídia SIP no console do Amazon Chime SDK, no ou na API, AWS Command Line Interface o Amazon Chime SDK cria AWS a função vinculada ao serviço para você.

Para obter mais informações, consulte a [função vinculada ao serviço do conector de voz do Amazon Chime](https://docs.aws.amazon.com/chime/latest/ag/using-service-linked-roles-stream.html), no *Guia do administrador do SDK do Amazon Chime*.

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

A ação `StartBotConversation` estabelece uma conversa de voz entre um usuário final e seu bot Amazon Lex v2. O usuário fornece as informações necessárias ao bot. O bot então retorna as informações para a função do Lambda de áudio da rede telefônica pública comutada (PSTN), e a função executa as tarefas solicitadas.

Por exemplo, o bot pode reproduzir uma mensagem de boas-vindas opcional no início de uma conversa para descrever brevemente a tarefa que a função do Lambda de áudio PSTN pode realizar. A conversa vai e volta entre o usuário e o bot até que o bot reúna as informações necessárias. Quando a conversa termina, o SDK do Amazon Chime invoca sua função do Lambda de áudio PSTN com um evento de sucesso de ação, que contém as informações coletadas pelo bot. Sua função do Lambda de áudio PSTN processa as informações e realiza a tarefa solicitada.

O serviço de áudio oferece uma interação conversacional realista com seus usuários. Por exemplo, os usuários podem interromper o bot e responder a uma pergunta antes que o prompt de áudio termine. Além disso, os usuários podem usar qualquer combinação de dígitos de voz e DTMF para fornecer informações. O bot espera que o usuário forneça informações antes de responder. Você pode configurar quanto tempo o bot espera que o usuário termine de falar antes de interpretar qualquer entrada de fala. O usuário também pode instruir o bot a esperar se precisar de tempo para recuperar informações adicionais durante uma chamada, como números de cartão de crédito.

A ação `StartBotConversation` usa o Amazon Lex e o Amazon Polly durante a conversa do bot. Aplicam-se os custos-padrão do Amazon Lex e do Amazon Polly. Para obter mais informações sobre preços, consulte as páginas de [preços de conversas de streaming do Amazon Lex](https://aws.amazon.com/lex/pricing/) e de [preços do Amazon Polly](https://aws.amazon.com/polly/pricing/).

**nota**  
Você não pode executar essa ação em uma chamada ancorada ou em uma chamada que tenha participado de uma reunião do SDK do Amazon Chime.

**Importante**  
O uso do Amazon Lex e do Amazon Polly está sujeito aos Termos de [AWS Serviço, incluindo os termos](https://aws.amazon.com/service-terms/) específicos dos Serviços de AWS Machine Learning e Inteligência Artificial.

**Topics**
+ [Sintaxe de StartBotConversation](#startbot-syntax)
+ [Usar a ação StartBotConversation](#using-startbot)
+ [Processar eventos ACTION\$1SUCCESSFUL](#bot-action-success)
+ [Processar eventos ACTION\$1FAILED](#bot-action-fail)
+ [Conceder permissões para usar um bot](#bot-permissions)
+ [Como configurar tempos limite de voz e DTMF](#bot-timeouts)
+ [Como usar entradas DTMF durante uma conversa](#bot-dtmf)
+ [Cobrança e service quotas](#bot-billing)

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

O exemplo a seguir mostra a sintaxe `StartBotConversation` típica.

```
{
  "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**  
*Descrição* — O `CallID` de um participante na `CallDetails` invocação da AWS Lambda função. A ação `StartBotConversation` usa esse ID como o `SessionId` do bot. Todas as conversas de bots que ocorrem em uma chamada compartilham a mesma sessão de conversa. É possível modificar o estado da sessão entre seu usuário e seu bot usando a API [PutSession do Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html). Para obter mais informações, consulte [Como gerenciar sessões com a API Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) no *Guia do desenvolvedor do Amazon Lex*.  
*Valores permitidos*: um ID de chamada válido.  
*Obrigatório* – Não, se `ParticipantTag` estiver presente.  
*Valor-padrão*: nenhum.

**ParticipantTag**  
*Descrição* – O `ParticipantTag` de um dos participantes conectados no `CallDetails`.  
*Valores permitidos*: `LEG-A`.  
*Obrigatório* – Não, se `CallId` estiver presente.  
*Valor-padrão*: `ParticipantTag` do `callLeg` invocado. Ignorado se você especificar `CallDetails`.

**BotAliasArn**  
*Descrição* – O alias ARN do bot do seu bot Lex. É necessário criar o bot na mesma região da AWS que a aplicação de áudio PSTN. Um alias de bot válido do Amazon Lex tem este formato: `arn:aws:lex:region:awsAccountId:bot-alias/botId/botAliasId`, onde *`region`* é a região da AWS em que seu bot reside. O `awsAccountId` é o ID da conta da AWS na qual seu bot Amazon Lex é criado. O valor `botId` é o identificador atribuído ao bot quando ele foi criado. Você pode encontrar o ID do bot no console Amazon Lex na página **Detalhes do bot**. O `botAliasId` é o identificador atribuído ao alias do bot quando ele foi criado. Você pode encontrar o ID do alias do bot no console do Amazon Lex na página **Aliases**.   
*Valores permitidos*: um ARN do bot válido.  
*Obrigatório* – Sim.  
*Valor padrão*: nenhum.

**LocaleId**  
*Descrição* – O identificador da localidade que você usou para o bot. Para obter uma lista de localidades e códigos de idioma, consulte [Idiomas e localidades compatíveis com o Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html).  
*Valores permitidos*: [Idiomas e localidades compatíveis com o Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html).  
*Obrigatório* – Não.  
*Valor-padrão*: `en_US`.

**Configuration**  
*Descrição* – A configuração da conversa, incluindo o estado da sessão e as mensagens de boas-vindas. O tamanho total da representação da string JSON do objeto `Configuration` é limitado a 10 KB.  
*Valores permitidos*: objeto `Configuration`.  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

**Configuration.SessionState**  
*Descrição* – O estado da sessão do usuário com o Amazon Lex v2.  
*Valores permitidos*: objeto `SessionState`.  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

**Configuration.SessionState.SessionAttributes**  
*Descrição* — Um mapa dos key/value pares que representam informações de contexto específicas da sessão. Este mapa contém informações do aplicativo passadas entre o Amazon Lex v2 e um aplicativo cliente.  
*Valores permitidos*: mapa de string para string.  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

**Configuration.SessionState.DialogAction.Type**  
*Descrição* – A próxima ação que o bot deve realizar em suas interações com o usuário. Possíveis valores:  
+ O *representante* Amazon Lex v2 determina a próxima ação.
+ *ElicitIntent*A próxima ação provoca uma intenção do usuário.
*Valores permitidos*: `Delegate` \$1 `ElicitIntent`.  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

**Configuration.WelcomeMessages**  
*Descrição* – Uma lista de mensagens a serem enviadas ao usuário no início da conversa. Se você definir o campo `welcomeMessage`, deverá definir o valor `DialogAction.Type` como `ElicitIntent`.  
*Valores permitidos*: objeto de mensagem  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

**Configuration.WelcomeMessages.Content**  
*Descrição* – O texto da mensagem de boas-vindas.  
*Valores permitidos*: string.  
*Obrigatório* – Não.  
*Valor-padrão*: nenhum.

**Configuration.WelcomeMessages.ContentType**  
*Descrição* – Indica o tipo de mensagem de boas-vindas.  
*Valores permitidos*: ` PlainText` \$1 `SSML`  
+ *PlainText*— A mensagem contém texto UTF-8 simples. 
+ *SSML* – A mensagem contém texto formatado para saída de voz.
*Obrigatório* – Sim.  
*Valor-padrão*: nenhum.

## Usar a ação StartBotConversation
<a name="using-startbot"></a>

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

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

## Processar eventos ACTION\$1SUCCESSFUL
<a name="bot-action-success"></a>

O exemplo a seguir mostra um evento `ACTION_SUCCESSFUL` típico para a ação `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**  
O resultado da conversa entre o usuário e o bot.

**SessionId**  
O identificador da sessão de conversa do bot. Quando um usuário começa uma conversa com o bot, o Amazon Lex cria uma sessão. Uma sessão encapsula as informações trocadas entre seu usuário e o bot. A ação `StartBotConversation` usa esse o ID da chamada como o `SessionId` do bot. É possível modificar o estado da sessão entre seu usuário e seu bot usando a 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) do Lex. Para obter mais informações, consulte [Como gerenciar sessões com a API Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) no *Guia do desenvolvedor do Amazon Lex*.

**SessionState**  
O estado da sessão do Amazon Lex v2 do usuário. 

**SessionState.SessionAttributes**  
Mapa de key/value pares que representam informações de contexto específicas da sessão. O mapa contém informações de conversação do bot passadas entre a função do Lambda anexada ao seu bot e a função do Lambda de áudio PSTN.

**Interpretações**  
Uma lista de intenções derivadas do Amazon Lex que podem satisfazer a declaração do cliente. A intenção com a pontuação `NluConfidence` mais alta se torna a intenção do `SessionState`. 

**Interpretações. NluConfidence.Pontuação**  
Uma pontuação que indica o quanto o Amazon Lex v2 tem certeza de que a intenção satisfaz a intenção do usuário. Varia entre 0,00 e 1,00. Pontuações mais altas indicam maior confiança. 

**Intent**  
A ação que o usuário deseja executar.

**Intent.Name**  
O nome da intenção.

**Intent.Slots**  
Um mapa de todos os slots da intenção. O nome do slot é mapeado para o valor do slot. Se um slot não tiver sido preenchido, o valor será nulo.

**Intent.Slots.Value**  
O valor do slot.

**Intent.Slots.Values**  
Uma lista de um ou mais valores que o usuário forneceu para o slot.

**Intent.Slots.Value.OriginalValue**  
O texto da resposta do usuário, inserido para o slot.

**Intent.Slots.Value.InterpretedValue**  
*Descrição* – O valor que o Amazon Lex v2 determina para o slot. O valor real depende da configuração da estratégia de seleção de valor do bot. Você pode optar por usar o valor inserido pelo usuário ou pode fazer com que o Amazon Lex v2 escolha o primeiro valor na lista `resolvedValues`.

**Intent.Slots.Value.ResolvedValues**  
Uma lista de valores adicionais que o Amazon Lex v2 reconhece para o slot.

**Intent.State**  
*Descrição* – Informações de cumprimento da intenção. Possíveis valores:  
+ `Failed`: a função do Lambda não atendeu à intenção.
+ `Fulfilled`: a função do Lambda atendeu à intenção.
+ `ReadyForFulfillment`: as informações da intenção estão presentes e sua função do Lambda pode atender à intenção. 

**Intent.ConfirmationState**  
*Descrição* – Indica a confirmação da intenção. Possíveis valores:  
+ *Confirmado* – A intenção foi cumprida.
+ *Negado* – O usuário respondeu "não" ao prompt de confirmação.
+ *Nenhum* – O usuário não recebeu um prompt de confirmação, ou o usuário recebeu um prompt, mas não o confirmou nem negou.

## Processar eventos ACTION\$1FAILED
<a name="bot-action-fail"></a>

O exemplo a seguir mostra um evento `ACTION_FAILED` típico para a ação `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**  
Uma string que identifica exclusivamente uma condição de erro.

**ErrorMessage**  
Uma descrição genérica da condição do erro.

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

A tabela a seguir lista as mensagens de erro que uma função do Lambda pode retornar em um evento `ACTION_FAILED`.


| Erro | Description | 
| --- | --- | 
|  `InvalidActionParameter` | Um ou mais ações de entrada são inválidas. A mensagem de erro descreve o parâmetro inválido. | 
| `SystemException` | Ocorreu um erro do sistema na execução de uma ação. | 
| `ResourceNotFound` | Um bot especificado não foi encontrado. | 
| `ResourceAccessDenied` | O acesso ao bot é negado. | 
| `ActionExecutionThrottled` | O limite do serviço de conversação com bots foi excedido. A mensagem de erro descreve o limite de serviço específico excedido. | 

## Conceder permissões para usar um bot
<a name="bot-permissions"></a>

O exemplo a seguir concede ao SDK do Amazon Chime permissão para chamar o 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 Você deve conceder explicitamente permissão ao serviço de áudio para usar seu bot. O bloco de condições é necessário para as entidades principais de serviço. O bloco de condições deve usar as chaves de contexto globais `AWS:SourceAccount` e `AWS:SourceArn`. O `AWS:SourceAccount` é seu ID da conta da AWS. O `AWS:SourceArn` é o ARN do recurso da aplicação de áudio PSTN que invoca o bot do 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"
        }
      }
    }
  ]
}
```

------

## Como configurar tempos limite de voz e DTMF
<a name="bot-timeouts"></a>

Você pode configurar os tempos limite de voz e DTMF ao capturar a entrada do usuário. Você pode configurar tempos limite por meio de atributos de sessão ao iniciar uma conversa com um bot e sobrescrevê-los na função do Lambda do seu bot Lex, se necessário. O Amazon Lex permite definir vários slots para uma intenção ou bots. Como você pode especificar que os atributos da sessão se aplicam à intenção e ao nível do slot, é possível especificar que o atributo é definido somente quando estiver coletando um determinado tipo de entrada. Por exemplo, é possível especificar um tempo limite quando estiver coletando um número de conta em comparação a quando estiver coletando uma data. Você pode usar curingas na chave de atributo da sessão. 

Por exemplo, para definir um tempo limite de voz para todos os slots para todas as intenções como 4000 milissegundos, você pode fornecer um atributo de sessão usando: `x-amz-lex:start-timeout-ms:*:*` como nome do atributo da sessão e `4000` como valor do atributo da sessão. Para obter mais informações, consulte [Como configurar tempos limites para capturar a entrada do usuário](https://docs.aws.amazon.com/lexv2/latest/dg/session-attribs-speech.htm) no *Guia do desenvolvedor do Amazon Lex*. 

## Como usar entradas DTMF durante uma conversa
<a name="bot-dtmf"></a>

Os bots do Amazon Lex oferecem suporte à entrada de voz e teclado durante uma conversa. Os bots interpretam a entrada do teclado como dígitos DTMF. É possível solicitar que os contatos encerrem a entrada com uma tecla de jogo-da-velha (\$1) e a cancelem usando a tecla de asterisco (\$1). Se você não solicitar que os clientes terminem suas contribuições com a tecla de jogo-da-velha, o Lex para de esperar por mais pressionamentos de tecla após 5 segundos.

## Cobrança e service quotas
<a name="bot-billing"></a>

AWS cobra os seguintes custos:
+ Uso do SDK do Amazon Chime para a chamada. Para mais informações, consulte o [preço do SDK do Amazon Chime](https://aws.amazon.com/chime/chime-sdk/pricing/).
+ Uso do Amazon Lex para interpretar a fala dos usuários. Para obter mais informações, consulte [Preço de conversas de streaming do Amazon Lex](https://aws.amazon.com/lex/pricing/).
+ Uso do Amazon Polly para sintetizar respostas de texto do seu bot. Para obter mais informações, consulte [Preços do Amazon Polly](https://aws.amazon.com/polly/pricing/).

Você também precisa estar ciente das seguintes service quotas:
+ O SDK do Amazon Chime tem uma quota de serviço para o número máximo de bots do Amazon Lex que podem ser usados com a ação [StartBotConversation](#start-bot-conversation) de áudio PSTN. Para ter mais informações, consulte [SIP trunking and voice quotas](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas), na *Referência geral da AWS *.
+ O Amazon Lex tem uma service quota para o número máximo de conversas de voz simultâneas por bot Lex. Entre em contato com a equipe de atendimento do Amazon Lex para obter aumentos de cota. Para obter mais informações, consulte [Diretrizes e cotas](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html) do Amazon Lex no *Guia do desenvolvedor do Amazon Lex*.
+ O Amazon Polly tem uma service quota para sintetizar respostas de texto. Entre em contato com a equipe de atendimento do Amazon Polly para obter aumentos de cota. Para obter mais informações sobre as service quotas Amazon Polly, consulte [Cotas no Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/limits.html), no *Guia do desenvolvedor do Amazon Polly*.