

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

# Como usar o serviço de áudio PSTN do SDK do Amazon Chime
<a name="sdk-use-pstn-service"></a>

**nota**  
Esta seção descreve o serviço de áudio PSTN do SDK do Chime, anteriormente chamado de “Aplicações de mídia SIP (SMA)” nas versões anteriores da documentação e em algumas publicações do blog. No futuro, quando nos referimos a “Aplicativos de mídia SIP”, estamos nos referindo aos itens de configuração no console do Amazon Chime SDK e AWS ao SDK associados ao serviço de áudio PSTN.

Esta seção explica como usar o serviço de áudio da rede telefônica pública comutada (PSTN) do SDK do Amazon Chime. Com o serviço de áudio PSTN, os desenvolvedores podem criar aplicativos de telefonia personalizados usando a agilidade e a simplicidade operacional de uma função sem servidor. AWS Lambda 

Suas AWS Lambda funções controlam o comportamento das chamadas telefônicas, como reproduzir comandos de voz, coletar dígitos, gravar chamadas, rotear chamadas para os dispositivos PSTN e Session Initiation Protocol (SIP) usando o Amazon Chime SDK Voice Connector. Os tópicos a seguir fornecem uma visão geral e informações arquitetônicas sobre o serviço de áudio PSTN, incluindo como criar AWS Lambda funções para controlar chamadas. 

**nota**  
Os tópicos desta seção pressupõem que você compreenda o AWS Lambda serviço. Para obter mais informações sobre AWS Lambda, consulte [Introdução ao AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html). Além disso, para usar esta seção do SDK do Amazon Chime com sucesso, um administrador do SDK do Amazon Chime deve criar pelo menos uma regra SIP e um aplicativo de mídia SIP. Para obter mais informações sobre como concluir essas tarefas, consulte [Como gerenciar aplicativos de mídia SIP](https://docs.aws.amazon.com/chime-sdk/latest/ag/manage-sip-applications.html) no *Guia do administrador do SDK do Amazon Chime*.

**Topics**
+ [Migrar para o namespace de voz do SDK do Amazon Chime](voice-namespace-migration.md)
+ [Entendendo números de telefone, regras SIP, aplicativos de mídia SIP e AWS Lambda funções para áudio PSTN do SDK do Amazon Chime](using-lambda.md)
+ [Noções básicas sobre o modelo de programação do serviço de áudio PSTN do SDK do Amazon Chime](pstn-model.md)
+ [Encaminhamento de chamadas e eventos para AWS Lambda funções de áudio PSTN do SDK do Amazon Chime](route-calls-events.md)
+ [Roteamento de chamadas para AWS Lambda funções para áudio PSTN do SDK do Amazon Chime ()AWS CLI](route-calls-events-cli.md)
+ [Saiba como usar trechos de chamada do serviço de áudio PSTN do SDK do Amazon Chime](call-architecture.md)
+ [Noções básicas sobre o fluxo de chamadas para áudio PSTN do SDK do Amazon Chime](call-flow.md)
+ [AWS Lambda Funções de criação para o serviço de áudio PSTN do Amazon Chime SDK](writing-lambdas.md)

# Migrar para o namespace de voz do SDK do Amazon Chime
<a name="voice-namespace-migration"></a>

O namespace [Amazon Chime SDK Voice](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) é um local dedicado para quem cria e gerencia recursos de voz do APIs Amazon Chime SDK. Você usa o namespace para endereçar os endpoints da API de voz do Amazon Chime SDK em AWS qualquer região que os disponibilize. Use esse namespace se você acabou de começar a usar o SDK do Amazon Chime. Para obter mais informações sobre as regiões, consulte [Regiões da AWS disponíveis para o SDK do Amazon Chime](sdk-available-regions.md) neste guia.

Os aplicativos existentes que usam o namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) devem planejar a migração para o namespace dedicado a fim de usar recursos novos e atualizados. APIs 

**Topics**
+ [Motivos para migrar](#first-concept-chapter)
+ [Antes de migrar](#voice-before-migrate)
+ [Diferenças entre os namespaces](#voice-namespace-diffs)

## Motivos para migrar
<a name="first-concept-chapter"></a>

Recomendamos migrar para o namespace [SDK Voice do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) pelos seguintes motivos:

**Escolha do endpoint de API**  
O SDK do Amazon Chime permite usar endpoints de API em qualquer [região em que estejam disponíveis](https://docs.aws.amazon.com/chime-sdk/latest/dg/sdk-available-regions.html). Se quiser usar outros endpoints da API diferentes de `us-east-1`, você deve usar o namespace de voz SDK do Amazon Chime. Para obter mais informações sobre os endpoints atuais, consulte [Mapeamento de API](migrate-from-chm-namespace.md#name-end-map) neste guia.

**Voz atualizada e nova APIs**  
Só adicionamos ou atualizamos a voz APIs no namespace Amazon Chime SDK Voice.

## Antes de migrar
<a name="voice-before-migrate"></a>

Antes de migrar, observe as diferenças entre os namespaces. A tabela a seguir lista e descreve-os.


|  | Namespace de voz SDK do Amazon Chime | Namespace Amazon Chime | 
| --- | --- | --- | 
| **AWS namespace** | `ChimeSDKVoice` | `Chime` | 
| **Regiões** | Vários | Somente `us-east-1` | 
| **Endpoints** | `https://voice-chime.region.amazonaws.com` | `service.chime.aws.amazon.com` | 
| **Entidade principal do serviço** | `chime.amazonaws.com` | `chime.amazonaws.com` | 
| **APIs** | Somente APIs para o serviço de áudio PSTN | APIs para áudio PSTN e outras partes do Amazon Chime | 
| Gerenciamento de conectores de voz | Várias regiões | us-east-1 | 
| Gerenciamento de grupos de conectores de voz | Várias regiões | us-east-1 | 
| Aplicativo de mídia SIP e gerenciamento de regras SIP | Várias regiões | us-east-1 | 
| Gerenciamento de números de telefone | Várias regiões | us-east-1 | 
| Análise de chamadas | Disponível | Indisponível | 
| Domínios de perfil de voz | Disponível | Indisponível | 
| Gerenciamento de chamadas de emergência | Várias regiões | us-east-1 | 
| Gerenciamento de sessões de telefone proxy | Várias regiões | us-east-1 | 
| Gerenciamento de streaming | Várias regiões | us-east-1 | 
| Gerenciamento de registros de log e métricas | Várias regiões | us-east-1 | 

Para ter mais informações sobre as regiões disponíveis, consulte [Regiões de voz](sdk-available-regions.md#voice-regions).

## Diferenças entre os namespaces
<a name="voice-namespace-diffs"></a>

As seções a seguir explicam as diferenças entre os namespaces `Amazon Chime SDK Voice` e `Amazon Chime`.

**AWS namespace**  
O namespace SDK do Amazon Chime usa o nome formal `Chime`. O namespace de voz SDK do Amazon Chime usa o nome formal `ChimeSDKVoice`. O formato preciso do nome varia de acordo com a plataforma.

Por exemplo, se você usar o AWS SDK no Node.js para criar reuniões, use a seguinte linha de código para endereçar o namespace.

```
const chimeVoice = AWS.Chime();
```

Para migrar para o namespace de voz SDK do Amazon Chime, atualize essa linha de código com o novo namespace e a região do endpoint.

```
const chimeVoice = AWS.ChimeSDKVoice({ region: "eu-central-1" });
```

**Regiões**  
O namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) só pode referenciar endpoints de API na região `us-east-1`. O namespace de [voz SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html) pode endereçar os endpoints da API de voz do SDK do Amazon Chime em qualquer região em que estejam disponíveis. Para obter uma lista atual das regiões de voz, consulte [Regiões da AWS disponíveis para o SDK do Amazon Chime](sdk-available-regions.md) neste guia.

**Endpoints**  
O namespace de [voz SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) usa endpoints de API diferentes do namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html).

Somente o endpoint usado para criar uma ação de voz pode ser usado para modificá-la. Isso significa que uma ação de voz criada por meio de um endpoint em `eu-central-1` pode ser modificada via `eu-central-1`. Isso também significa que você não pode abordar uma ação de voz criada por meio do namespace `Chime` com o namespace `ChimeSDKVoice` em `us-east-1`. Para obter mais informações sobre os endpoints atuais, consulte [Mapeamento de API](migrate-from-chm-namespace.md#name-end-map) neste guia.

**Entidade principal do serviço**  
Ambos os namespaces usam a entidade principal de serviço `chime.amazonaws.com`. Se você tiver políticas de acesso que concedam acesso ao serviço, não precisará atualizar essas políticas.

**APIs**  
O namespace [Amazon Chime SDK Voice](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) contém apenas ações de voz APIs para criar e gerenciar. O namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) inclui APIs voz e outras partes do serviço Amazon Chime, como reuniões.

**Tags**  
Somente o namespace de [voz SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Voice.html) suporta tags. Para obter mais informações sobre tags, consulte [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_TagResource.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_TagResource.html) e [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UntagResource.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_UntagResource.html).

**Regiões de mídia**  
Se você usar o namespace `Chime` para criar recursos como conectores de voz e aplicativos de mídia SIP, só poderá fazer isso em `us-east-1` e `us-west-2`, e deverá usar o endpoint `us-east-1`. 

Por outro lado, o namespace `ChimeSDKVoice` permite a criação de recursos em todas as regiões suportadas, não apenas `us-east-1` e `us-west-2`. Para obter mais informações sobre a cobertura regional, consulte [Regiões da AWS disponíveis para o SDK do Amazon Chime](sdk-available-regions.md).

# Entendendo números de telefone, regras SIP, aplicativos de mídia SIP e AWS Lambda funções para áudio PSTN do SDK do Amazon Chime
<a name="using-lambda"></a>

Antes de usar o serviço de áudio PSTN, um administrador do SDK do Amazon Chime deve provisionar seus números de telefone e criar objetos gerenciados chamados regras SIP e aplicações de mídia SIP. Você pode usar o console do Amazon Chime SDK ou o AWS SDK para provisionar números de telefone e provisionar a regra SIP e os objetos gerenciados pelo aplicativo de mídia SIP.

Esta imagem mostra a relação entre os objetos gerenciados que compõem o serviço de áudio PSTN. Os números na imagem correspondem aos números no texto abaixo dela.

![\[Objetos gerenciados no serviço de áudio PSTN do SDK do Amazon Chime.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/pstn-diagram2.png)


Você só pode atribuir números de telefone e conectores de voz do SDK do Amazon Chime (1) às regras SIP (2). Além disso, é necessário provisionar o número de telefone ou o Voice Connector em seu serviço de áudio PSTN. Ao receber uma chamada de entrada para um número de telefone ou uma solicitação de chamada de saída de um conector de voz, a regra SIP invoca um aplicativo de mídia SIP e uma função associada (4). AWS Lambda A AWS Lambda função executa um conjunto predefinido de ações, como tocar música em espera ou participar de uma reunião. Para fornecer resiliência multirregional, as regras SIP podem especificar aplicativos alternativos de mídia SIP de destino em diferentes AWS regiões (3) por ordem de prioridade para failover. Se um destino falhar, o serviço de áudio PSTN tentará o próximo, e assim por diante. Observe que cada alvo alternativo deve residir em uma AWS região diferente. 

Além disso, vários aplicativos de mídia SIP podem invocar uma determinada AWS Lambda função. Em outras palavras, quando você cria uma AWS Lambda função, qualquer aplicativo de mídia SIP pode usar essa função.

Para obter mais informações sobre o provisionamento de aplicativos e regras de mídia SIP, consulte [Como gerenciar aplicativos e regras de mídia SIP](https://docs.aws.amazon.com/chime-sdk/latest/ag/manage-sip-applications.html) no *Guia do administrador do SDK do Amazon Chime*.

# Noções básicas sobre o modelo de programação do serviço de áudio PSTN do SDK do Amazon Chime
<a name="pstn-model"></a>

O serviço de áudio PSTN usa um modelo de request/response programação que, por sua vez, usa AWS Lambda funções. Sua AWS Lambda função é invocada automaticamente para chamadas de entrada e saída. *Por exemplo, quando chega uma nova chamada, o serviço de áudio PSTN invoca sua AWS Lambda função com um `NEW_INCOMING_CALL` evento e aguarda os comandos chamados Ações.* Por exemplo, seu aplicativo pode escolher ações como reproduzir um prompt de áudio, coletar dígitos, gravar áudio ou encaminhar a chamada para frente. Essas ações formatadas em JSON são enviadas de volta ao serviço de áudio PSTN usando um retorno de chamada da sua função. AWS Lambda 

Este exemplo mostra uma ação `PlayAudio`.

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

Este exemplo mostra uma ação `RecordAudio`.

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

Depois que o serviço de áudio PSTN executa a ação, ele invoca sua AWS Lambda função novamente com uma indicação de sucesso ou falha. 

Seu aplicativo também pode fazer chamadas telefônicas externas e usar sua AWS Lambda função para controlar o fluxo de chamadas, a experiência do chamador e o contexto da chamada. Nesse caso, você chama 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 e a sua AWS Lambda é invocada com um `NEW_OUTBOUND_CALL` evento. Depois que a chamada for atendida, você poderá retornar ações, como reproduzir um comando de voz e coletar dígitos inseridos pelo usuário. Você também pode acionar sua AWS Lambda função usando a [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API para implementar cronômetros, silenciamento de participantes e salas de espera.

# Encaminhamento de chamadas e eventos para AWS Lambda funções de áudio PSTN do SDK do Amazon Chime
<a name="route-calls-events"></a>

O serviço de áudio PSTN fornece as seguintes maneiras de encaminhar as chamadas telefônicas recebidas para sua AWS Lambda função para tratamento.
+ Você pode rotear chamadas com base no número chamado. Para fazer isso, um administrador do SDK do Amazon Chime cria uma regra SIP com o **Tipo de acionador** definido como **Para número de telefone**. Esse número de telefone deve existir no inventário de números de telefone do SDK do Amazon Chime, na mesma AWS conta da regra SIP. 
+ Você pode rotear chamadas para a AWS Lambda função com base no URI de solicitação de uma chamada SIP recebida do Voice Connector. Para fazer isso, um administrador do SDK do Amazon Chime cria uma regra SIP com o **Tipo de acionador** definido como **Solicitar nome de host URI**. Esse campo deve conter um nome de domínio totalmente qualificado especificado no campo “nome do host de saída” de um conector de voz provisionado na mesma AWS conta da regra SIP.

**nota**  
Ao usar o tipo de gatilho **Request URI hostname**, o serviço de áudio PSTN valida a `user` parte da entrada `Request-URI` (a parte antes do sinal). `@` 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, &, =, +, $, /, %, -, _, !, ~, *, ` (`,`), (`.`). Se seu provedor SIP precisar passar valores mais longos, use um cabeçalho SIP personalizado. Para obter mais informações, consulte [Usar cabeçalhos SIP no serviço de áudio PTSN do SDK do Amazon Chime](sip-headers.md).

Em seguida, o administrador provisiona pelo menos um aplicativo de mídia SIP de destino. Opcionalmente, você pode provisionar vários aplicativos de mídia SIP em ordem prioritária para suportar redundância e failover. Por exemplo, você pode provisionar dois aplicativos de mídia SIP em duas AWS regiões diferentes e especificar sua ordem de prioridade. Se uma regra SIP tiver mais de um aplicativo de mídia SIP de destino, as funções do Lambda do aplicativo de mídia SIP serão invocadas na ordem de prioridade. A AWS Lambda função no aplicativo de mídia SIP com a ordem mais alta de prioridade (o menor número, como 1) é executada primeiro. Se o serviço de áudio PSTN não puder invocar essa AWS Lambda função, a AWS Lambda função no aplicativo de mídia SIP com a próxima ordem mais alta de prioridade (o próximo menor número, como 2) será invocada. Se todas as tentativas de executar as aplicações de mídia SIP especificadas na regra SIP falharem, o serviço de áudio PSTN será desligado. 

Depois que as regras SIP e os aplicativos de mídia SIP necessários forem provisionados, o serviço de áudio PSTN roteará as chamadas recebidas para sua função. AWS Lambda O diagrama a seguir mostra uma sequência típica usando o tipo de acionador **Para número de telefone**.

![\[Diagrama de uma regra SIP e uma regra de fluxo de trabalho do aplicativo de mídia SIP que usa um tipo de acionador Para número de telefone.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/SMA Images-CS-2021-05-05-SIP Rules-PSTN-W-Lambda.png)


No diagrama:

1. O serviço de áudio PSTN recebe uma chamada para um número de telefone provisionado em uma regra SIP na mesma conta. AWS 

1. O serviço de áudio PSTN, então, avalia a regra SIP e busca a aplicação de mídia SIP com a ordem mais alta de prioridade (nesse caso, prioridade 1).

1. O serviço então invoca a AWS Lambda função associada ao aplicativo de mídia SIP.

1. Opcional. Se o serviço não puder invocar o associado AWS Lambda com a ordem de prioridade mais alta, ele tentará executar o aplicativo de mídia SIP com a próxima ordem mais alta de prioridade (nesse caso, prioridade 2), se houver.

1. Opcional. Se todas as aplicações de mídia SIP de destino falharem, o serviço de áudio PSTN desligará a chamada. 

O diagrama a seguir mostra uma regra típica que usa um tipo de acionador **Solicitar nome de host URI**.

![\[Diagrama de uma regra que usa um tipo de acionador Solicitar nome de host URI.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/SMA Images-CS-2021-05-05-SIP Rules-VC-W-Lambda.png)


No diagrama:

1. O serviço de áudio PSTN recebe uma chamada em um conector de voz do Amazon Chime SDK com um **nome de host de URI de solicitação** que corresponde a uma regra SIP provisionada na mesma conta. AWS 

1. Em seguida, o serviço avalia a regra SIP e busca o aplicativo de mídia SIP com a prioridade mais baixa (nesse caso, o único aplicativo de mídia SIP de destino com prioridade 1). 

1. O serviço então invoca a AWS Lambda função associada ao aplicativo de mídia SIP.

1. Opcional. Se o serviço não puder invocar o associado AWS Lambda com a prioridade mais baixa, ele tentará executar o aplicativo de mídia SIP com a próxima prioridade mais baixa, se houver. Nesse caso, há apenas um aplicativo de mídia SIP de destino.

1. Opcional. Se todas as aplicações de mídia SIP de destino falharem, o serviço de áudio PSTN desligará a chamada.

Além disso, é possível criar uma chamada de saída e, posteriormente, invocar a função do AWS Lambda para processamento adicional usando a API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html). Para usar essa API, você especifica o **ID do aplicativo de mídia SIP** provisionado como um parâmetro. 

Por fim, você pode acionar sua AWS Lambda função a qualquer momento enquanto uma chamada estiver ativa usando a [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API. Para usar a API, você especifica o **ID do aplicativo de mídia SIP** provisionado como um parâmetro.

# Roteamento de chamadas para AWS Lambda funções para áudio PSTN do SDK do Amazon Chime ()AWS CLI
<a name="route-calls-events-cli"></a>

Este tutorial orienta você pelo processo de configuração do roteamento de chamadas para funções Lambda usando o serviço de áudio PSTN do Amazon Chime SDK. Você aprenderá a criar funções Lambda, configurar aplicativos de mídia SIP e configurar regras SIP para lidar com chamadas recebidas.

## Pré-requisitos
<a name="route-calls-events-cli-prerequisites"></a>

Antes de começar este tutorial, faça o seguinte:
+ Instale AWS CLI o. Para obter mais informações, consulte [Instalar ou atualizar para a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário do AWS CLI *.
+ Configure seu AWS CLI com as credenciais apropriadas. Caso ainda não tenha realizado a configuração das credenciais, execute o comando `aws configure`.
+ Tenha familiaridade básica com AWS Lambda os conceitos do Amazon Chime SDK.
+ Configure permissões suficientes para criar e gerenciar recursos do Amazon Chime SDK e Lambda em sua conta da AWS.
+ Para o roteamento baseado em números de telefone, você precisa ter um número de telefone em seu inventário de números de telefone do Amazon Chime SDK.
+ Para o roteamento baseado no Voice Connector, você precisa ter um conector de voz configurado em sua conta.

## Considerações sobre custos
<a name="route-calls-events-cli-cost"></a>

O tutorial inclui instruções de limpeza para garantir que você não incorra em cobranças contínuas após a conclusão. Para obter mais informações, consulte os preços [do Amazon Chime SDK](https://aws.amazon.com/chime/chime-sdk/pricing/).

Vamos começar a configurar o roteamento de chamadas para o áudio PSTN do SDK do Amazon Chime.

## Pesquise e forneça números de telefone
<a name="route-calls-events-cli-search-provision"></a>

Antes de criar regras SIP com acionadores de números de telefone, você precisa ter números de telefone em seu inventário do Amazon Chime SDK. Veja como pesquisar os números de telefone disponíveis e provisioná-los.

**Example : Pesquise os números de telefone disponíveis**  

```
# Search for available toll-free phone numbers
aws chime-sdk-voice search-available-phone-numbers \
  --phone-number-type TollFree \
  --country US \
  --toll-free-prefix 844 \
  --max-results 5 \
  --region us-east-1
```

Esse comando procura os números de telefone gratuitos disponíveis com o prefixo 844 nos EUA. Você pode modificar os parâmetros para pesquisar diferentes tipos de números.

**Example : Provisionar um número de telefone**  
Depois de encontrar um número de telefone disponível, você pode provisioná-lo usando o seguinte comando:  

```
# Order a phone number
aws chime-sdk-voice create-phone-number-order \
  --product-type SipMediaApplicationDialIn \
  --e164-phone-numbers "+18445550100" \
  --region us-east-1
```

`+18445550100`Substitua por um número de telefone real disponível nos resultados da pesquisa. Esse comando provisionará o número de telefone para sua conta.

**Example : Verifique o status do número de telefone**  
Depois de solicitar um número de telefone, você pode verificar seu status:  

```
# Get the phone number order status
aws chime-sdk-voice get-phone-number-order \
  --phone-number-order-id abcd1234-5678-90ab-cdef-EXAMPLE55555 \
  --region us-east-1
```

Substitua o ID do pedido pelo retornado pelo `create-phone-number-order` comando.

**Example : Liste números de telefone em seu inventário**  
Para ver todos os números de telefone em seu inventário:  

```
# List all phone numbers
aws chime-sdk-voice list-phone-numbers \
  --region us-east-1
```
Para encontrar números de telefone não atribuídos que possam ser usados para regras SIP:  

```
# List unassigned phone numbers
aws chime-sdk-voice list-phone-numbers \
  --region us-east-1 \
  --query "PhoneNumbers[?Status=='Unassigned'].E164PhoneNumber"
```

## Crie uma função Lambda para tratamento de chamadas
<a name="route-calls-events-cli-create-function"></a>

Agora, vamos criar uma função Lambda que manipulará as chamadas recebidas. A função receberá eventos do serviço de áudio PSTN e responderá com instruções sobre como lidar com a chamada.

**Example : Crie uma função do IAM para o Lambda**  
Antes de criar a função Lambda, você precisa criar uma função do IAM que conceda as permissões necessárias.  

```
cat > lambda-trust-policy.json << EOF
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF
```

```
aws iam create-role --role-name ChimeSDKLambdaRole \
  --assume-role-policy-document file://lambda-trust-policy.json
```

```
aws iam attach-role-policy --role-name ChimeSDKLambdaRole \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
```
Esses comandos criam uma função do IAM que permite ao Lambda assumi-la e anexar a política de execução básica, que fornece permissões para o Lambda gravar registros. CloudWatch

**Example Crie uma função do Lambda:**  
Agora, crie uma função Lambda simples que manipulará as chamadas recebidas.  

```
mkdir -p lambda
cat > lambda/index.js << EOF
exports.handler = async (event) => {
  console.log('Received event:', JSON.stringify(event, null, 2));
  
  // Simple call handling logic
  const response = {
    SchemaVersion: '1.0',
    Actions: [
      {
        Type: 'Speak',
        Parameters: {
          Engine: 'neural',
          Text: 'Hello! This is a test call from Amazon Chime SDK PSTN Audio.',
          VoiceId: 'Joanna'
        }
      },
      {
        Type: 'Hangup',
        Parameters: {
          SipResponseCode: '200'
        }
      }
    ]
  };
  
  return response;
};
EOF
```

```
cd lambda
zip -r function.zip index.js
cd ..
```

```
# Get your AWS account ID
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)

aws lambda create-function \
  --function-name ChimeSDKCallHandler \
  --runtime nodejs18.x \
  --role arn:aws:iam::${ACCOUNT_ID}:role/ChimeSDKLambdaRole \
  --handler index.handler \
  --zip-file fileb://lambda/function.zip
```
Essa função Lambda responde às chamadas recebidas com uma mensagem falada e depois desliga.

**Example : Adicione a permissão Lambda para o Amazon Chime SDK**  
Conceda permissão ao serviço Amazon Chime SDK para invocar sua função Lambda.  

```
# Get your AWS account ID
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)

aws lambda add-permission \
  --function-name ChimeSDKCallHandler \
  --statement-id ChimeSDK \
  --action lambda:InvokeFunction \
  --principal voiceconnector.chime.amazonaws.com \
  --source-account ${ACCOUNT_ID}
```
Esse comando permite que o serviço Amazon Chime SDK Voice Connector invoque sua função Lambda.

## Crie um aplicativo de mídia SIP
<a name="route-calls-events-cli-create-sip-app"></a>

Os aplicativos de mídia SIP conectam sua função Lambda ao serviço de áudio PSTN. Nesta seção, você criará um aplicativo de mídia SIP que usa sua função Lambda.

**Example : Crie o aplicativo de mídia SIP**  

```
# Get your Lambda function ARN
LAMBDA_ARN=$(aws lambda get-function --function-name ChimeSDKCallHandler --query Configuration.FunctionArn --output text)

aws chime-sdk-voice create-sip-media-application \
  --aws-region us-east-1 \
  --name "MyCallHandlerApp" \
  --endpoints "[{\"LambdaArn\":\"${LAMBDA_ARN}\"}]"
```
O aplicativo de mídia SIP atua como uma ponte entre o serviço de áudio PSTN e sua função Lambda.

**Example : Obtenha o ID do aplicativo de mídia SIP**  
Depois de criar o aplicativo de mídia SIP, você precisa recuperar seu ID para uso posterior no tutorial.  

```
SIP_MEDIA_APP_ID=$(aws chime-sdk-voice list-sip-media-applications \
  --query "SipMediaApplications[?Name=='MyCallHandlerApp'].SipMediaApplicationId" \
  --output text)

echo "SIP Media Application ID: ${SIP_MEDIA_APP_ID}"
```
Anote o ID do aplicativo de mídia SIP retornado por esse comando, pois você precisará dele ao criar regras SIP.

## Configurar o roteamento de chamadas com regras SIP
<a name="route-calls-events-cli-call-routing-sip-rules"></a>

As regras SIP determinam como as chamadas recebidas são roteadas para seus aplicativos de mídia SIP. Você pode criar regras com base em números de telefone ou nomes de host do Voice Connector.

**Example : Crie uma regra SIP com gatilho de número de telefone**  
Para rotear chamadas com base em um número de telefone, use o seguinte comando:  

```
# Get an unassigned phone number from your inventory
PHONE_NUMBER=$(aws chime-sdk-voice list-phone-numbers \
  --query "PhoneNumbers[?Status=='Unassigned'].E164PhoneNumber | [0]" \
  --output text)

# If no unassigned phone number is found, you'll need to provision one
if [ -z "$PHONE_NUMBER" ] || [ "$PHONE_NUMBER" == "None" ]; then
  echo "No unassigned phone numbers found. Please provision a phone number first."
  exit 1
fi

echo "Using phone number: ${PHONE_NUMBER}"

aws chime-sdk-voice create-sip-rule \
  --name "IncomingCallRule" \
  --trigger-type ToPhoneNumber \
  --trigger-value "${PHONE_NUMBER}" \
  --target-applications "[{\"SipMediaApplicationId\":\"${SIP_MEDIA_APP_ID}\",\"Priority\":1}]"
```
Esse comando cria uma regra SIP que encaminha as chamadas para o seu número de telefone para o aplicativo de mídia SIP.

**Example : Crie uma regra SIP com o gatilho Request URI hostname**  
Como alternativa, você pode rotear chamadas com base no URI de solicitação de uma chamada SIP recebida do Voice Connector:  

```
# Replace with your Voice Connector hostname
VOICE_CONNECTOR_HOST="example.voiceconnector.chime.aws"

aws chime-sdk-voice create-sip-rule \
  --name "VoiceConnectorRule" \
  --trigger-type RequestUriHostname \
  --trigger-value "${VOICE_CONNECTOR_HOST}" \
  --target-applications "[{\"SipMediaApplicationId\":\"${SIP_MEDIA_APP_ID}\",\"Priority\":1}]"
```
Substitua o nome do host pelo nome do host de saída do Voice Connector.

## Configure a redundância com vários aplicativos de mídia SIP
<a name="route-calls-events-cli-sip-redundancy"></a>

Para redundância e failover, você pode criar vários aplicativos de mídia SIP na mesma região da AWS e especificar sua ordem de prioridade.

**Example : Crie uma função Lambda de backup**  
Primeiro, crie uma função Lambda de backup na mesma região.  

```
cat > lambda/backup-index.js >< EOF
exports.handler = async (event) => {
  console.log('Received event in backup handler:', JSON.stringify(event, null, 2));

  // Simple call handling logic for backup
  const response = {
    SchemaVersion: '1.0',
    Actions: [
      {
        Type: 'Speak',
        Parameters: {
          Engine: 'neural',
          Text: 'Hello! This is the backup handler for Amazon Chime SDK PSTN Audio.',
          VoiceId: 'Matthew'
        }
      },
      {
        Type: 'Hangup',
        Parameters: {
          SipResponseCode: '200'
        }
      }
    ]
  };

  return response;
};
EOF
```

```
                    cd lambda
                    zip -r backup-function.zip backup-index.js
                    cd ..
```

```
                    # Get your AWS account ID
                    ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
                    
                    aws lambda create-function \
                    --function-name ChimeSDKBackupHandler \
                    --runtime nodejs18.x \
                    --role arn:aws:iam::${ACCOUNT_ID}:role/ChimeSDKLambdaRole \
                    --handler backup-index.handler \
                    --zip-file fileb://lambda/backup-function.zip
```

**Example : Adicione a permissão Lambda para o Amazon Chime SDK à função de backup**  

```
                    # Get your AWS account ID
                    ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
                    
                    aws lambda add-permission \
                    --function-name ChimeSDKBackupHandler \
                    --statement-id ChimeSDK \
                    --action lambda:InvokeFunction \
                    --principal voiceconnector.chime.amazonaws.com \
                    --source-account ${ACCOUNT_ID}
```

**Example : Crie um aplicativo de mídia SIP de backup**  

```
# Get your backup Lambda function ARN
BACKUP_LAMBDA_ARN=$(aws lambda get-function --function-name ChimeSDKBackupHandler --query Configuration.FunctionArn --output text)

aws chime-sdk-voice create-sip-media-application \
  --aws-region us-east-1 \
  --name "BackupCallHandlerApp" \
  --endpoints "[{\"LambdaArn\":\"${BACKUP_LAMBDA_ARN}\"}]"

# Get the backup SIP media application ID
BACKUP_SIP_MEDIA_APP_ID=$(aws chime-sdk-voice list-sip-media-applications \
  --query "SipMediaApplications[?Name=='BackupCallHandlerApp'].SipMediaApplicationId" \
  --output text)
```

**Example : Obtenha o ID da regra SIP**  

```
SIP_RULE_ID=$(aws chime-sdk-voice list-sip-rules \
  --query "SipRules[?Name=='IncomingCallRule'].SipRuleId" \
  --output text)
```

**Example : atualize a regra SIP para incluir os dois aplicativos com prioridades**  

```
aws chime-sdk-voice update-sip-rule \
  --sip-rule-id ${SIP_RULE_ID} \
  --target-applications "[{\"SipMediaApplicationId\":\"${SIP_MEDIA_APP_ID}\",\"Priority\":1},{\"SipMediaApplicationId\":\"${BACKUP_SIP_MEDIA_APP_ID}\",\"Priority\":2}]"
```
Esse comando atualiza a regra SIP para incluir os aplicativos de mídia SIP primários e de backup com suas respectivas prioridades.

## Crie chamadas externas
<a name="route-calls-events-cli-create-outbound"></a>

Você também pode criar chamadas externas que invocam sua função Lambda usando a API. `CreateSIPMediaApplicationCall`

```
# Use a phone number from your inventory for outbound calling
FROM_PHONE_NUMBER=${PHONE_NUMBER}
TO_PHONE_NUMBER="+12065550102"  # Replace with a valid destination number

aws chime-sdk-voice create-sip-media-application-call \
  --from-phone-number "${FROM_PHONE_NUMBER}" \
  --to-phone-number "${TO_PHONE_NUMBER}" \
  --sip-media-application-id ${SIP_MEDIA_APP_ID}
```

Substitua o número de telefone de destino por um número válido. Você precisa ter os números de telefone em seu inventário para fazer chamadas reais.

## Acione o Lambda durante uma chamada ativa
<a name="route-calls-events-cli-trigger-lambda"></a>

Você pode acionar sua função Lambda durante uma chamada ativa usando a `UpdateSIPMediaApplicationCall` API.

```
# Replace with an actual transaction ID from an active call
TRANSACTION_ID="txn-3ac9de3f-6b5a-4be9-9e7e-EXAMPLE33333"

aws chime-sdk-voice update-sip-media-application-call \
  --sip-media-application-id ${SIP_MEDIA_APP_ID} \
  --transaction-id ${TRANSACTION_ID} \
  --arguments '{"action":"custom-action"}'
```

O ID da transação é fornecido nos dados do evento enviados para sua função Lambda quando uma chamada está ativa.

## Limpar os recursos
<a name="route-calls-events-cli-cleanup-resources"></a>

Ao concluir este tutorial, você deve excluir os recursos criados para evitar cobranças adicionais.

**Example : Excluir regras SIP**  

```
# Get the SIP rule ID if you don't have it
SIP_RULE_ID=$(aws chime-sdk-voice list-sip-rules \
  --query "SipRules[?Name=='IncomingCallRule'].SipRuleId" \
  --output text)

aws chime-sdk-voice delete-sip-rule --sip-rule-id ${SIP_RULE_ID}
```

**Example : Excluir aplicativos de mídia SIP**  

```
# Get SIP media application IDs if you don't have them
SIP_MEDIA_APP_ID=$(aws chime-sdk-voice list-sip-media-applications \
  --query "SipMediaApplications[?Name=='MyCallHandlerApp'].SipMediaApplicationId" \
  --output text)

BACKUP_SIP_MEDIA_APP_ID=$(aws chime-sdk-voice list-sip-media-applications \
  --query "SipMediaApplications[?Name=='BackupCallHandlerApp'].SipMediaApplicationId" \
  --output text)

aws chime-sdk-voice delete-sip-media-application --sip-media-application-id ${SIP_MEDIA_APP_ID}
aws chime-sdk-voice delete-sip-media-application --sip-media-application-id ${BACKUP_SIP_MEDIA_APP_ID}
```

**Example : Excluir funções do Lambda**  

```
aws lambda delete-function --function-name ChimeSDKCallHandler
aws lambda delete-function --function-name ChimeSDKBackupHandler
```

**Example : Excluir função do IAM**  

```
aws iam detach-role-policy --role-name ChimeSDKLambdaRole \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

aws iam delete-role --role-name ChimeSDKLambdaRole
```

**Example : Divulgue números de telefone**  
Se você não precisar mais dos números de telefone, você pode liberá-los:  

```
# List phone numbers
aws chime-sdk-voice list-phone-numbers

# Delete a specific phone number
aws chime-sdk-voice delete-phone-number --phone-number-id ${PHONE_NUMBER}
```

Observe que os números de telefone entram no status ReleaseInProgress "" por 7 dias antes de serem totalmente liberados. Durante esse período, você pode restaurá-los usando o `restore-phone-number` comando, se necessário.

## Transição para o ambiente de produção
<a name="route-calls-events-cli-going-to-production"></a>

Este tutorial demonstra a funcionalidade básica de rotear chamadas para funções do Lambda usando o áudio PSTN do SDK do Amazon Chime. No entanto, para ambientes de produção, você deve considerar as seguintes práticas recomendadas:

### Considerações sobre segurança
<a name="route-calls-events-cli-security"></a>
+ Implemente permissões de privilégio mínimo. Crie políticas personalizadas do IAM que concedam somente as permissões específicas necessárias para suas funções do Lambda.
+ Adicione condições de ARN de origem às permissões do Lambda. Restrinja quais aplicativos de mídia SIP podem invocar suas funções do Lambda.
+ Implemente a validação de entrada. Adicione validação às suas funções do Lambda para garantir que elas processem somente eventos válidos.
+ Considere a implantação de VPC. Para aumentar a segurança, implante suas funções do Lambda em uma VPC com grupos de segurança apropriados.
+ Criptografe dados confidenciais. Use AWS Key Management Service para criptografar todos os dados confidenciais usados pelo seu aplicativo.

### Considerações sobre arquitetura
<a name="route-calls-events-cli-architecture"></a>
+ Implemente monitoramento e registro. Configure CloudWatch alarmes e registros para monitorar a integridade e o desempenho do seu aplicativo.
+ Adicione tratamento de erros. Implemente um tratamento abrangente de erros em suas funções do Lambda.
+ Considere os limites de escala. Esteja ciente das cotas de serviço e dos aumentos de solicitações, se necessário, para altos volumes de chamadas.
+ Implemente a infraestrutura como código. Use CloudFormation ou o AWS CDK para implantar sua infraestrutura.
+ Configure CI/CD oleodutos. Implemente integração e implantação contínuas para suas funções Lambda.

Para obter mais informações sobre a criação de aplicativos prontos para produção, consulte:
+ [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html) 
+ [Práticas recomendadas de segurança, identidade e conformidade](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Perspectiva de aplicativos com tecnologia sem servidor ](https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens/welcome.html) 

## Próximas etapas
<a name="route-calls-events-cli-next-steps"></a>

Agora que você aprendeu a rotear chamadas para funções do Lambda usando o áudio PSTN do SDK do Amazon Chime, você pode explorar recursos mais avançados:
+ Integre-se ao Amazon Lex para gerenciar a interação de diálogo para um cenário de agente inteligente. Para obter mais informações, consulte [Criar um bot do Amazon Lex V2 para o sistema de mensagens do SDK do Amazon Chime](create-lex-bot.md).
+ Configure a análise de voz para obter informações sobre suas chamadas. Para obter mais informações, consulte [Gerar insights de chamadas usando analytics de chamadas para o SDK do Amazon Chime](call-analytics.md).
+ Explore ações avançadas de controle de chamadas para criar fluxos de chamadas sofisticados. Para obter mais informações, consulte [Usar as configurações de analytics de chamadas do SDK do Amazon Chime](using-call-analytics-configurations.md).

# Saiba como usar trechos de chamada do serviço de áudio PSTN do SDK do Amazon Chime
<a name="call-architecture"></a>

O serviço de áudio PSTN pode operar em um ou mais trechos de chamada. Por exemplo, você tem um único trecho de chamada ao gravar ou entregar uma mensagem de voz e vários trechos de chamada ao participar de uma reunião do SDK do Amazon Chime.

O diagrama a seguir mostra o fluxo de uma chamada de trecho único.

![\[Diagrama da arquitetura de uma chamada de trecho único.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/single-leg-architecture.png)


O diagrama a seguir mostra a arquitetura de uma chamada com vários trechos.

![\[Diagrama da arquitetura de uma chamada com vários trechos.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/multi-leg-architecture.png)


O diagrama a seguir mostra o fluxo de uma chamada ancorada com vários trechos.

![\[Diagrama da arquitetura de uma chamada ancorada com vários trechos.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/Multi-Leg-Architecture-w-Bridge.png)


# Noções básicas sobre o fluxo de chamadas para áudio PSTN do SDK do Amazon Chime
<a name="call-flow"></a>

Esse diagrama mostra o fluxo de uma chamada por meio do serviço de áudio PSTN do Amazon Chime SDK e da função do cliente. AWS Lambda Neste exemplo, o aplicativo reproduz uma solicitação para o chamador, reúne dígitos de multifrequência de dois tons (DTMF) e os conecta a uma reunião do SDK do Amazon Chime. 

Os números no diagrama correspondem às explicações numeradas abaixo do diagrama.

![\[Diagrama do fluxo básico de chamadas pelo serviço de áudio PSTN e as funções do AWS Lambda .\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/pstn-call-flow-diagram.png)


No diagrama:

1. O serviço de áudio PSTN do SDK do Amazon Chime recebe uma chamada para um número de telefone provisionado em uma regra SIP.

1. O serviço de áudio PSTN busca o aplicativo de mídia SIP associado e invoca a AWS Lambda função associada com um evento (LEG-A). `NEW_INBOUND_CALL`

1. A AWS Lambda função retorna uma lista de ações, incluindo`PlayAudioAndGetDigits`, que instrui o serviço de áudio PSTN a atender a chamada, reproduzir um arquivo de áudio para o chamador e coletar os dígitos DTMF inseridos pelo chamador.

1. O serviço de áudio PSTN atende à chamada, reproduz um prompt de áudio e coleta dígitos DTMF inseridos pelo chamador.

1. O serviço de áudio PSTN invoca a AWS Lambda função com a entrada de dígitos DTMF. A AWS Lambda função usa o AWS SDK para criar uma reunião do Amazon Chime SDK e um participante da reunião. 

1. Depois que o AWS SDK retorna um `MeetingId` e`AttendeeId`, a AWS Lambda função retorna uma ação para participar da chamada para a reunião de SDK do Amazon Chime (LEG-B).

1. Uma sessão de protocolo de transporte em tempo real (RTP) é estabelecida entre o chamador da rede telefônica pública comutada (PSTN) e o serviço de mídia do SDK do Amazon Chime. 

1. Quando o chamador PSTN desliga, o serviço de áudio PSTN invoca a AWS Lambda função com um evento HANGUP e a função exclui o participante. AWS Lambda 

# AWS Lambda Funções de criação para o serviço de áudio PSTN do Amazon Chime SDK
<a name="writing-lambdas"></a>

Os tópicos desta seção explicam como criar as AWS Lambda funções usadas pelo serviço de áudio PSTN. 

**Topics**
+ [Noções básicas sobre eventos de telefonia do serviço de áudio PSTN do SDK do Amazon Chime](pstn-invocations.md)
+ [Noções básicas sobre as ações do serviço de áudio PSTN do SDK do Amazon Chime](about-actions.md)
+ [Saiba mais sobre os eventos de telefonia que invocam AWS Lambda funções para o serviço de áudio PSTN do Amazon Chime SDK](invoking-Lambda.md)
+ [Responder a invocações com listas de ações usando o serviço de áudio PSTN do SDK do Amazon Chime](invoke-on-call-leg.md)
+ [Ações compatíveis com o serviço de áudio PSTN do SDK do Amazon Chime](specify-actions.md)
+ [Usar cabeçalhos SIP no serviço de áudio PTSN do SDK do Amazon Chime](sip-headers.md)
+ [Usar registros de detalhes de chamadas no serviço de áudio PTSN do SDK do Amazon Chime](attributes.md)
+ [Noções básicas sobre os tempos limite e as tentativas do serviço de áudio PTSN do SDK do Amazon Chime](timeouts.md)
+ [Depurar e solucionar problemas do serviço de áudio PTSN do SDK do Amazon Chime](debug-pstn.md)
+ [Noções básicas sobre VoiceFocus do serviço de áudio PTSN do SDK do Amazon Chime](voice-focus.md)
+ [Glossário do serviço de áudio PSTN do SDK do Amazon Chime](chm-dg-glossary.md)

# Noções básicas sobre eventos de telefonia do serviço de áudio PSTN do SDK do Amazon Chime
<a name="pstn-invocations"></a>

O serviço de áudio invoca sua AWS AWS Lambda função quando certos eventos ocorrem durante uma chamada. O exemplo a seguir mostra os eventos e o texto após o exemplo explica cada evento.

```
{ 
    "SchemaVersion": "1.0", 
    "Sequence": 3, 
    "InvocationEventType": "event-type", 
    "CallDetails": { 
        "TransactionId": "transaction-id-1", 
        "AwsAccountId": "aws-acct-id-1", 
        "AwsRegion": "us-east-1", 
        "SipMediaApplicationId": "sip-media-app-id-1", 
        "Participants": [ 
            { 
                "CallId": "call-id-1", 
                "ParticipantTag": "LEG-A", 
                "To": "e164PhoneNumber", 
                "From": "e164PhoneNumber", 
                "Direction": "Inbound/Outbound", 
                "StartTimeInMilliseconds": "1641998241509", 
                "Status": "Connected/Disconnected" 
            } 
        ] 
    } 
}
```

**SchemaVersion**  
A versão do esquema usada para criar esse objeto de evento.

**Sequence**  
A sequência de eventos que invocam sua AWS Lambda função. Sempre que sua função é invocada durante uma chamada, a sequência é incrementada.

**InvocationEventType**  
O tipo de evento que aciona uma AWS Lambda invocação. Para obter mais informações, consulte [Tipos de eventos](#pstn-event-types) mais adiante neste tópico.

**CallDetails**  
Informações sobre a chamada associada à AWS Lambda invocação.

**TransactionId**  
O ID de uma chamada associada a uma AWS Lambda invocação.

**AwsAccountId**  
O ID da AWS conta associado ao aplicativo de mídia SIP que resultou no roteamento de chamadas.

**SipMediaApplicationId**  
O ID do aplicativo de mídia SIP associado à chamada.

**Participants**  
Informações sobre os participantes da chamada que invoca uma AWS AWS Lambda função.

**CallId**  
Um ID exclusivo atribuído a cada participante.

**ParticipantTag**  
Cada participante da chamada recebe uma etiqueta, `LEG-A` ou`LEG-B`.

**To**  
O número de telefone "para" do participante, no formato E.164.

**From**  
O número de telefone “de” do participante, no formato E.164.

**Direction**  
A direção de onde vem um trecho de chamada. `Inbound` representa uma chamada feita para o serviço de áudio. `Outbound` representa uma chamada feita a partir do serviço de áudio.

**StartTimeInMilliseconds**  
O tempo de espera em milissegundos, começando quando um participante entra em uma chamada.

**Status**  
Se um participante está `Connected` ou `Disconnected`

## Tipos de eventos
<a name="pstn-event-types"></a>

O serviço de áudio invoca a função do Lambda com esses tipos de eventos:

**NEW\$1INBOUND\$1CALL**  
Uma nova chamada foi iniciada por um número de telefone associado ao seu aplicativo de mídia SIP.

**NEW\$1OUTBOUND\$1CALL**  
Uma nova chamada externa foi feita por meio da [CreateSipMediaApplicationCall](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html)API.

**ACTION\$1SUCCESSFUL**  
Uma ação retornada de sua AWS Lambda função foi bem-sucedida. Ações bem-sucedidas incluem `ActionData` que correspondem à ação bem-sucedida.   

```
    "ActionData": {
        // The previous successful action 
    },
```

**ACTION\$1FAILED**  
Uma ação retornada de sua AWS Lambda função não foi bem-sucedida. As ações malsucedidas incluem `ActionData` que correspondem à ação com falha, um tipo de erro e uma mensagem de erro que descreve a falha:  

```
    "ActionData": {
        // The previous unsuccessful action
        "ErrorType": "error-type",
        "ErrorMessage": "error message"
    },
```

**ACTION\$1INTERRUPTED**  
Uma ação no processo de execução foi interrompida por uma invocação [ UpdateSipMediaApplicationCall](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)da API. `ActionData` inclui as ações interrompidas:   

```
"ActionData": {
        // The action that was interrupted
    },
```

**HANGUP**  
Um usuário ou o aplicativo desligou um trecho de chamada. `ActionData` inclui os seguintes detalhes sobre o evento:  

```
   "ActionData": {
        "Type": "Hangup",
        "Parameters": {
            "SipResponseCode": 486,
            "CallId": "c70f341a-adde-4406-9dea-1e01d34d033d",
            "ParticipantTag": "LEG-A"
        }
    },
```  
**Type**  
Hangup.  
**Parameters**  
As informações sobre o evento `HANGUP`:   
+ **SipResponseCode**— O código de resposta associado ao evento. Os códigos mais comuns são:
  + **0** – Limpeza normal
  + **480** – Sem resposta
  + **486** – Usuário ocupado
+ **CallId**O ID do participante que desligou.
+ **ParticipantTag**A etiqueta do participante que desligou.

**CALL\$1ANSWERED**  
O serviço de áudio atendeu e uma chamada de entrada foi atendida. Esse evento é retornado em uma chamada discada, a menos que a chamada seja interliga seja ancorada.

**INVALID\$1LAMBDA\$1RESPONSE**  
A resposta fornecida à última AWS Lambda invocação causou um problema. `ActionData` inclui esses campos adicionais:  

```
    "ErrorType": "error-type-1", 
    "ErrorMessage": "error-msg-1"
```

**DIGITS\$1RECEIVED**  
O aplicativo recebeu dígitos do DTMF após a conclusão de uma ação `ReceiveDigits`. `ActionData` inclui os dígitos recebidos.  

```
    "ActionData": {
        "ReceivedDigits": ###
        // The ReceiveDigits action data
    },
```

**CALL\$1UPDATE\$1REQUESTED**  
A [UpdateSipMediaApplicationCall](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API foi invocada. `ActionData` inclui informações sobre a solicitação de atualização:  

```
    "ActionData": {
        "Type": "CallUpdateRequest", 
        "Parameters": {
            "Arguments": {
                "leg": "LEG-A"
                }
            }
        },
    }
```

**RINGING**  
Um trecho de chamada está tocando

# Noções básicas sobre as ações do serviço de áudio PSTN do SDK do Amazon Chime
<a name="about-actions"></a>

No serviço de áudio PSTN, os aplicativos de mídia SIP acionam funções. AWS Lambda Por sua vez, as AWS Lambda funções podem retornar uma lista de instruções conhecidas como *ações*. Uma ação é um item que você deseja executar em uma parte de uma chamada telefônica, como enviar ou receber dígitos, participar de uma reunião, e assim por diante. As ações também podem retornar dados, para que você possa pensar nas ações como objetos com campos de dados. Para ter mais informações sobre as ações invocadas pelo serviço de áudio PSTN, consulte [Noções básicas sobre eventos de telefonia do serviço de áudio PSTN do SDK do Amazon Chime](pstn-invocations.md).

# Saiba mais sobre os eventos de telefonia que invocam AWS Lambda funções para o serviço de áudio PSTN do Amazon Chime SDK
<a name="invoking-Lambda"></a>

O serviço de áudio invoca AWS Lambda funções em resposta a eventos diferentes. Cada invocação especifica um tipo de evento de invocação e fornece os detalhes da chamada, incluindo seus participantes, se aplicável. Os tópicos a seguir descrevem os eventos do Serviço de Áudio que invocam AWS Lambda funções. 

# Fazer uma chamada de saída para usar o serviço de áudio PSTN do SDK do Amazon Chime
<a name="use-create-call-api"></a>

Para criar uma chamada de saída, use a API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html). A API invoca o endpoint de um especificado `SIP media application ID`. Os clientes podem controlar o fluxo da chamada fornecendo diferentes ações de sinalização e [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html) por meio do endpoint. 

No caso de uma resposta bem-sucedida, a API exibe um código de status http 202 com um transactionId, que pode ser usado com 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) para atualizar uma chamada em andamento.

O diagrama a seguir mostra as invocações feitas no endpoint da AWS Lambda função para uma chamada de saída.

![\[Diagrama mostrando o fluxo de programação para invocações feitas no endpoint do AWS Lambda.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/sip-api-1.png)


O endpoint configurado para o aplicativo de mídia SIP é chamado para diferentes status da chamada de saída. Quando um cliente inicia uma chamada, o SDK do Amazon Chime invoca o endpoint com um tipo de evento de invocação `NEW_OUTBOUND_CALL`. 

Este exemplo mostra um evento de invocação típico para `NEW_OUTBOUND_CALL`.

```
{
    "SchemaVersion": "1.0",
        "Sequence": 1,
        "InvocationEventType": "NEW_OUTBOUND_CALL",
        "CallDetails": {
            "TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234"
                }
            ]
    }
}
```

Qualquer resposta para uma AWS Lambda invocação relacionada a um evento é ignorada.

Quando recebemos uma notificação `RINGING` do receptor, o SDK do Amazon Chime invoca novamente o endpoint configurado. 

Este exemplo mostra um evento de invocação típico para `RINGING`.

```
{
    "SchemaVersion": "1.0",
        "Sequence": 1,
        "InvocationEventType": "RINGING",
        "CallDetails": {
            "TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234"
                }
           ]
    }
}
```

Qualquer resposta para uma AWS Lambda invocação relacionada a um evento é ignorada.

Se o receptor não atender a chamada ou a chamada falhar devido a um erro, o Chime desconectará a chamada e invocará o endpoint com o tipo de evento `Hangup`. Para obter mais informações sobre os tipos de evento `Hangup`, consulte [Encerrar uma chamada usando o serviço de áudio PSTN do SDK do Amazon Chime](case-5.md). 

Se a chamada for atendida, o Chime invoca o endpoint com a ação `CALL_ANSWERED`. Este exemplo mostra um evento de invocação típico.

```
{
  "SchemaVersion": "1.0",
    "Sequence": 1,
    "InvocationEventType": "CALL_ANSWERED",
    "CallDetails": {
        ""TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Nesse ponto, você pode retornar ações respondendo à invocação com uma lista de ações. Se você não quiser executar nenhuma ação, responda com uma lista vazia. Você pode responder com no máximo 10 ações para cada AWS Lambda invocação e pode invocar uma função Lambda 1.000 vezes por chamada. Para obter mais informações sobre como responder com conjuntos de ações, consulte [Responder a invocações com listas de ações usando o serviço de áudio PSTN do SDK do Amazon Chime](invoke-on-call-leg.md).

# Receber uma chamada de entrada usando o serviço de áudio PSTN do SDK do Amazon Chime
<a name="case-1"></a>

Quando ocorre um evento `NEW_INCOMING_CALL`, o serviço de áudio cria um `TransactionID` único e um `CallID` único que persiste até que o evento `HANGUP` ocorra.

Você pode responder de várias maneiras a um evento `NEW_INCOMING_CALL`. Por exemplo:
+ Envie ações `PlayAudio` ou `RecordAudio` e atenda automaticamente a chamada. 
+ Envie uma ação `Pause`.
+ Envie uma ação `Hangup`. Nesse caso, a chamada não será atendida e o cliente não será cobrado.
+ Envie uma ação `CallAndBridge` e adicione outro usuário à chamada.
+ Não faça nada, a tentativa de chamada atinge o tempo limite após 30 segundos.

Quando uma nova chamada de entrada é recebida, o aplicativo de mídia SIP invoca uma função AWS Lambda com essa carga.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "NEW_INBOUND_CALL"
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

# Especificar ações em resposta a eventos de telefonia do serviço de áudio PSTN do SDK do Amazon Chime
<a name="use-case-2"></a>

No Serviço de Áudio, os aplicativos de mídia SIP AWS Lambda invocam funções. Por sua vez, as funções do Lambda podem retornar uma lista de instruções conhecidas como *ações*. Uma ação é um item que você deseja executar em uma parte de uma chamada telefônica, como enviar ou receber dígitos, participar de uma reunião, e assim por diante. Para ter mais informações sobre as ações invocadas pelo serviço de áudio PSTN, consulte [Noções básicas sobre eventos de telefonia do serviço de áudio PSTN do SDK do Amazon Chime](pstn-invocations.md).

Quando um aplicativo de mídia SIP executa com êxito uma lista de ações, o aplicativo chama a AWS Lambda função com um evento de invocação do tipo. `ACTION_SUCCESSFUL` Se alguma das ações não for concluída, o aplicativo de mídia SIP chamará a AWS Lambda função com o `ACTION_FAILED` evento.

O aplicativo de mídia SIP só retornará `ACTION_SUCCESSFUL` se todas as ações na lista forem bem-sucedidas. Se alguma das ações na lista falhar, o aplicativo de mídia SIP invoca a AWS Lambda função com o `ACTION_FAILED` evento e limpa as ações restantes na lista após a falha. Em seguida, o aplicativo de mídia SIP executa a próxima ação retornada pela AWS Lambda função. Você usa a chave `ActionData` para identificar qual chamada invocou a função.

O evento a seguir mostra um exemplo de carga útil para o tipo de evento de invocação `ACTION_SUCCESSFUL` após uma ação `PlayAudioAndGetDigits`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "failure-audio-file.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "failure-audio-file.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ReceivedDigits": "123"
    }
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
                }
            ]
        }
    }
}
```

Quando qualquer ação em uma lista não é concluída com êxito, o aplicativo de mídia SIP invoca a AWS Lambda função para notificá-lo sobre a falha e fazer com que um novo conjunto de ações seja executado nessa chamada. O evento a seguir mostra o exemplo de carga útil para o tipo de evento de invocação `ACTION_FAILED` após uma ação `PlayAudio`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "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": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
}
```

# Receber a entrada do chamador para o serviço de áudio PSTN do SDK do Amazon Chime
<a name="case-4"></a>

Você usa a ação `ReceiveDigits` para coletar dígitos DTMF de entrada e compará-los com uma expressão regular. Quando o aplicativo de mídia SIP recebe dígitos que correspondem à expressão regular, ele invoca uma AWS Lambda função com um evento. `ACTION_SUCCESSFUL` Os dígitos coletados aparecem no valor `ReceivedDigits` do objeto `ActionData`.

Por exemplo:

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "ReceivedDigits": "",
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-1",
            "InputDigitsRegex": "^\d{2}#$",
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "FlushDigitsDurationInMilliseconds": 10000
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Quando o chamador insere dígitos que correspondem ao seu padrão de expressão regular, o aplicativo de mídia SIP invoca uma AWS Lambda função que retorna o seguinte tipo de carga útil:

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "DIGITS_RECEIVED",
    "ActionData": {
        "ReceivedDigits": "11#",
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-1",
            "InputDigitsRegex": "^\d{2}#$",
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "FlushDigitsDurationInMilliseconds": 10000
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

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)

# Atualizar chamadas em andamento para áudio PTSN do SDK do Amazon Chime
<a name="update-sip-call"></a>

Como parte do serviço de áudio PSTN, as aplicações de mídia SIP permitem determinar ações que são executadas em uma chamada invocando funções do Lambda definidas pelo usuário com base nos eventos da chamada, como uma chamada de entrada ou dígitos DTMF. A [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)A API permite que você acione uma função Lambda a qualquer momento enquanto uma chamada está ativa, substituindo as ações atuais por novas ações retornadas pela invocação.

**Fluxo de trabalho**  
Você usa o [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API em vários casos, como adicionar participantes a uma reunião, ativar e desativar o som do usuário, desconectá-lo e assim por diante. O caso de uso a seguir descreve um fluxo de trabalho típico.

Um usuário chama e escuta música enquanto o SDK do Amazon Chime configura a reunião. Após a conclusão da configuração, o SDK do Amazon Chime interrompe o áudio e admite o chamador na reunião. Em seguida, suponha o uso de um sistema separado, `MyMeetingService`, que gerencia reuniões. Todas as chamadas recebidas devem ser suspensas. O Chime notifica MyMeetingService sobre as chamadas recebidas e, em MyMeetingService seguida, cria um participante para cada chamada e, quando MyMeetingService estiver pronto para iniciar a reunião, notifica o aplicativo de mídia SIP e fornece um token para ingressar na reunião.

Para lidar com esse caso, a função do Lambda precisa implementar a seguinte lógica. 
+ Quando chega uma nova chamada, o Lambda é invocado com um evento `NEW_INBOUND_CALL`. O Lambda chama `MyMeetingService` e passa o `transactionId` que identifica a chamada atual e retorna à ação `PlayAudio`.
+ Quando o `MyMeetingService` estiver pronto para adicionar o chamador à reunião, o serviço chama o [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API e passa a chamada `transactionId` e `JoinToken` como parte de seus argumentos. Essa chamada de API aciona a função do Lambda novamente, agora com o evento `CALL_UPDATE_REQUESTED`. Eles MyMeetingService passam `JoinToken` para a função Lambda como parte do evento, e o token é usado para retornar a `JoinChimeMeeting` ação ao aplicativo de mídia SIP, que interrompe a `PlayAudio` ação e conecta o chamador à reunião.

![\[Diagrama mostrando o fluxo de dados na API UpdateSipMediaApplicationCall.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/update-sip-call-flow3.png)


**nota**  
A [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)A API retorna HTTP 202 (aceito). O aplicativo de mídia SIP confirma que a chamada está em andamento e pode ser atualizada, então ele tenta invocar a função do Lambda. A invocação é executada de forma assíncrona, portanto, uma resposta bem-sucedida da API não garante que a função do Lambda tenha sido iniciada ou concluída.

O exemplo a seguir mostra a sintaxe da solicitação.

```
{
    "SipMediaApplicationId": "string",
    "TransactionId": "string",
    "Arguments": {
        "string": "string"
    } 
}
```

**Parâmetros de solicitação**
+ `SipMediaApplicationId`: o ID da aplicação de mídia SIP que processa a chamada. 
+ `TransactionId`: o ID da transação da chamada. Para chamadas de entrada, o `TransactionId` pode ser obtido do evento `NEW_INCOMING_CALL` passado para a função do Lambda em sua primeira invocação. Para chamadas de saída, `TransactionId` é retornado na resposta de [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html). 
+ **Argumentos** – Argumentos personalizados disponibilizados para a função do Lambda como parte dos dados da ação `CallUpdateRequest`. Pode conter de 0 a 20 pares de chave/valor.

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

```
aws chime update-sip-media-application-call --sip-media-application-id feb37a7e-2b66-49fb-b2dd-30f4780dc36d --transaction-id 1322a4e7-c106-4e70-aaaf-a8fa4c77c0cb --arguments '{"JoinToken": "abc123"}'
```

**Sintaxe da resposta**

```
{
  "SipMediaApplicationCall": {
  "TransactionId": "string"
  }
}
```

**Elementos de resposta**
+ **TransactionId**— O ID da transação da chamada, o mesmo ID da solicitação.

O exemplo a seguir mostra um evento de invocação `CALL_UPDATE_REQUESTED`.

```
{
  "SchemaVersion": "1.0",
  "Sequence": 2,
  "InvocationEventType": "CALL_UPDATE_REQUESTED",
  "ActionData": {
    "Type": "CallUpdateRequest",
    "Parameters": {
      "Arguments": {
        "string": "string"
      }
    }
  },
  "CallDetails": {
    ...
  }
}
```

**Elementos de evento**
+ **SchemaVersion**— A versão do esquema JSON (1.0)
+ **Sequência** – O número de sequência do evento na chamada
+ **InvocationEventType**— O tipo de evento de invocação do Lambda, neste caso, `CALL_UPDATE_REQUESTED`
+ **ActionData**— Os dados associados à `CallUpdateRequest` ação.
  + **Tipo** – O tipo de ação, nesse caso, `CallUpdateRequest`
  + **Parâmetros** – Os parâmetros da ação
    + **Argumentos** – Os argumentos passados como parte da solicitação da API `UpdateSipMediaApplicationCall`
+ **CallDetails**— As informações sobre o estado atual da chamada

**Como entender ações interruptíveis e não interruptíveis**  
Quando uma função do Lambda retorna uma nova lista de ações enquanto as ações existentes são executadas, todas as ações que seguem a ação em andamento são substituídas pelas novas ações. Em alguns casos, a função do Lambda interrompe as ações em andamento para executar novas ações imediatamente.

O diagrama a seguir mostra um exemplo típico. O texto abaixo do diagrama explica a lógica.

![\[Diagrama mostrando como as ações podem ser substituídas durante uma chamada contínua do aplicativo de mídia SIP.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/update-sip-actions.png)


Se a Ação 2 for interruptível, nós a paramos e, em vez disso, executamos a nova Ação 1.

Se a Ação 2 não for interruptível, ela será concluída antes do início da nova Ação 1.

Em ambos os casos, a Ação 3 não é executada.

Se algo interromper uma ação, a função do Lambda é invocada com um evento `ACTION_INTERRUPTED`. Este evento é usado apenas para fins informativos. O aplicativo de mídia SIP ignora todas as ações retornadas por essa invocação.

Tipos de ações interruptíveis:
+ `PlayAudio`
+ `RecordAudio`
+ `Pause`

**Amostra de função do Lambda**  
Este exemplo mostra uma função do Lambda típica que reproduz um arquivo de áudio, passa um token de junção e atualiza a chamada.

```
const MMS = require('my-meeting-service');
const myMeetingServiceClient = new MMS.Client();

exports.handler = async (event) => {
    console.log('Request: ' + JSON.stringify(event));
    
    const playAudio = () => {
      return {
        Type: 'PlayAudio',
        Parameters: {
          ParticipantTag: 'LEG-A',
          AudioSource: {
            Type: 'S3',
            BucketName: 'chime-meetings-audio-files-bucket-name',
            Key: 'welcome.wav'
          }
        }
      }
    }
    
    const joinChimeMeeting = (joinToken) => {
      return {
        Type: 'JoinChimeMeeting',
        Parameters: {
          JoinToken: joinToken
        }
      }
    }
    
    const response = (...actions) => {
      const r = {
        SchemaVersion: '1.0',
        Actions: actions
      };
      console.log('Response: ' + JSON.stringify(r));
      return r;
    };
    
    switch (event.InvocationEventType) {
      case 'NEW_INBOUND_CALL': 
        myMeetingServiceClient.addPendingCall(event.CallDetails.TransactionId);         
        return response(playAudio());      
      case 'CALL_UPDATE_REQUESTED':
        const joinToken = event.ActionData.Parameters.Arguments['JoinToken']
        return response(joinChimeMeeting(joinToken));
      default:
        return response();
    }
}
```

# Encerrar uma chamada usando o serviço de áudio PSTN do SDK do Amazon Chime
<a name="case-5"></a>

É possível usar a API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html) para encerrar uma chamada de saída. A API invoca o endpoint de um **ID de aplicativo de mídia SIP** especificado. Os clientes podem controlar o fluxo da chamada retornando as ações ao aplicativo de mídia SIP.

No caso de uma resposta bem-sucedida, a API exibe um código de status http 202 com o `transactionId`, que pode ser usado com 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) para atualizar uma chamada em andamento.

O diagrama a seguir mostra as invocações feitas no endpoint da AWS Lambda função para uma chamada de saída.

![\[O fluxo de dados quando você invoca a API CreateSipMediaApplicationCall. A API invoca um endpoint diferente quando o status de uma chamada de saída é alterado.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/sip-api-1.png)


O endpoint configurado para o aplicativo de mídia SIP é chamado para diferentes status da chamada de saída. Quando um cliente encerra uma chamada, o SDK do Amazon Chime invoca o endpoint com um tipo de evento de invocação `HANGUP`. 

Este exemplo mostra um evento de invocação típico para `HANGUP`.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 6,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "Hangup",
        "Parameters": {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "Direction": "Inbound",
                 "To": "+12065551212",
                "From": "+15105550101",
                "StartTimeInMilliseconds": "1597009588",
                "Status": "Disconnected"
            }
        ]
    }
}

// if LEG-B receives a hangup in a bridged call, such as a meeting ending
{
    "SchemaVersion": "1.0",
    "Sequence": 6,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "Leg-A",
                 "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "1597009588",
                "Status": "Connected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "Leg-B",
                "To": "+17035550122",
                "From": "SMA",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "15010595",
                "Status": "Disconnected"
            }
        ]
    }
}
```

# Entendendo end-to-end as chamadas para o serviço de áudio PSTN do Amazon Chime SDK
<a name="use-cases"></a>

Esse caso de uso fornece um exemplo de código para receber uma chamada telefônica de um chamador PSTN, cumprimentar o chamador com uma mensagem de áudio, obter o PIN da reunião do chamador, reproduzir áudio e juntar o chamador à reunião.

**Eventos de invocação e ações**  
O serviço de áudio transmite eventos de invocação para AWS Lambda funções como objetos JSON. Os objetos incluem o tipo de evento de invocação e quaisquer metadados relevantes. A função AWS Lambda também retorna ações do aplicativo de mídia SIP como objetos JSON, e esses objetos incluem um tipo de ação e quaisquer metadados relevantes.

A tabela a seguir lista os eventos de invocação e os possíveis `ActionData.Type` quando você recebe um evento de invocação.


|  Evento de invocação  |  ActionData.Tipo  | 
| --- | --- | 
|  ACTION\$1SUCCESSFUL  |  CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits  JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting  | 
|  ACTION\$1FAILED  |  CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting  | 
| HANGUP |  HangUp  | 
|  DIGITS\$1RECEIVED  | ReceiveDigits | 

**nota**  
Para implementar o seguinte caso de uso, você precisa de pelo menos um número de telefone em seu inventário do SDK do Amazon Chime, um objeto gerenciado pelo aplicativo de mídia SIP que usa uma função AWS Lambda com um nome do recurso da Amazon (ARN) e uma regra SIP que usa o número de telefone como acionador.

Quando o Amazon Chime SDK recebe uma chamada para o número de telefone especificado na regra, o serviço de áudio PSTN invoca uma AWS Lambda função com o tipo de evento de invocação. `NEW_INBOUND_CALL`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 1,
    "InvocationEventType": "NEW_INBOUND_CALL",
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Você pode programar a AWS Lambda função para validar os detalhes da chamada e armazená-los para uso futuro. Para um `NEW_INBOUND_CALL` evento, a AWS Lambda função responde com um conjunto de ações que reproduzem uma solicitação de boas-vindas e solicitam o PIN da reunião.

Os arquivos de áudio têm os seguintes requisitos:
+ É necessário reproduzir arquivos de áudio de um bucket do Amazon Simple Storage Service (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 — `voiceconnector.chime.amazonaws.com`. Você pode usar o console do S3 ou a interface de linha de comandos (CLI) para fazer isso.
+ Você deve usar arquivos PCM WAV de tamanho não superior a 50 MB. O Amazon Chime SDK recomenda 8 mono. KHz 
+ Os metadados do S3 para cada arquivo WAV devem conter `{'ContentType': 'audio/wav'}`.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type" : "PlayAudio",    
            "Parameters" : {
                "CallId": "call-id-1",
                
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "welcome-to-meetings.wav"
                }
            }
        },
        {
            "Type": "PlayAudioAndGetDigits",
            "Parameters" : {
                "ParticipantTag": "LEG-A",
                
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "enter-meeting-pin.wav"
                },
                "FailureAudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "invalid-meeting-pin.wav"
                },
                "MinNumberOfDigits": 3,
                "MaxNumberOfDigits": 5,
                "TerminatorDigits": ["#"],
                "InBetweenDigitsDurationInMilliseconds": 5000,
                "Repeat": 3,
                "RepeatDurationInMilliseconds": 10000
            }
        }
    ]
}
```

O aplicativo de mídia SIP executa essas ações no trecho de chamada A. Supondo que a `PlayAudioAndGetDigits` ação receba os dígitos, o aplicativo de mídia SIP invoca a função com o AWS Lambda tipo de evento. `ACTION_SUCCESSFUL`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "ParticipantTag": "LEG-A",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "chime-meetings-audio-files-bucket-name",
                "Key": "enter-meeting-pin.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "chime-meetings-audio-files-bucket-name",
                "Key": "invalid-meeting-pin.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ReceivedDigits": "12345" // meeting PIN
    },
    "CallDetails": {
        ... // same as in previous event
    }
}
}
```

Você pode programar uma AWS Lambda função para identificar o chamador com base nos `CallDetails` dados. Você também pode validar o PIN da reunião recebido anteriormente. Assumindo um PIN correto, você então usa [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 criar a reunião do Amazon Chime SDK e gerar o token de junção usado pelo participante da reunião. A AWS Lambda função responde com a ação de participar da reunião do Amazon Chime SDK.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "JoinChimeMeeting",
            "Parameters": {
                "JoinToken": "meeting-attendee-join-token"
            }
        }
    ]
}
```

Supondo que `JoinToken` seja válido, o aplicativo de mídia SIP se junta à reunião do Amazon Chime SDK e invoca uma AWS Lambda função com o `ACTION_SUCCESSFUL` evento, onde `CallDetails` contém os dados do aplicativo de mídia SIP e do serviço Chime Media () `LEG-B` 

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "JoinChimeMeeting",
        "Parameters" : {
            "JoinToken": "meeting-attendee-join-token"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id", 
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "LEG-B",
                "To": "SMA",
                "From": "+17035550122",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Se você quiser parar de executar ações na chamada ou no trecho da chamada neste momento, você pode responder com um conjunto vazio de ações.

```
{
    "SchemaVersion": "1.0"
    "Actions": []
}
```

Depois que o chamador desliga, o aplicativo de mídia SIP invoca a função com o AWS Lambda evento. `HANGUP` 

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "Hangup",
        "Parameters": {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id", 
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Disconnected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "LEG-B",
                "To": "SMA",
                "From": "+17035550122",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Disconnected"
            }
        ]
    }
}
```

Se você responder a um evento `Hangup` com uma ação, o aplicativo de mídia SIP ignorará a ação se nenhum outro `Participants` mostrar um `Status` de `Connected`.

# Responder a invocações com listas de ações usando o serviço de áudio PSTN do SDK do Amazon Chime
<a name="invoke-on-call-leg"></a>

Você pode responder a um evento de AWS Lambda invocação com uma lista de ações a serem executadas nos participantes individuais de uma chamada. Você pode responder com no máximo 10 ações para cada AWS Lambda invocação e pode invocar uma AWS Lambda função 1.000 vezes por chamada.

Por padrão, os aplicativos de mídia SIP atingem o tempo limite se uma função do Lambda não responder após 20 segundos.

O exemplo a seguir mostra a estrutura de resposta geral.

```
{
    "SchemaVersion": "1.0",
    "Actions": [        
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "bucket-name",
                    "Key": "audio-file.wav"
                }
            }
        },
        {
            "Type": "RecordAudio",
            "Parameters": {
                "DurationInSeconds": "10",
                "RecordingTerminators": ["#"],
                "RecordingDestination": {
                    "Type": "S3",
                    "BucketName": "bucket-name"
                }
            }
        }
    ]
}
```

Quando a AWS Lambda função retorna a lista de ações para o aplicativo de mídia SIP, as seguintes operações ocorrem:

1. O aplicativo termina de executar a ação atual em uma chamada.

1. Em seguida, o aplicativo substitui o conjunto de ações antigo por um novo conjunto de ações recebido do evento de invocação mais recente.

Se a aplicação de mídia SIP receber um conjunto de ações `NULL`, ela manterá as ações existentes. 

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

# Usar cabeçalhos SIP no serviço de áudio PTSN do SDK do Amazon Chime
<a name="sip-headers"></a>

Agora você pode enviar e receber um User-To-User cabeçalho, um cabeçalho de desvio e cabeçalhos SIP personalizados em suas AWS Lambda funções quando quiser trocar informações de contexto de chamada com sua infraestrutura SIP. 
+ O cabeçalho User-to-User (UUI) pode ser usado para enviar dados de controle de chamadas. Esses dados são inseridos pelo aplicativo que inicia uma sessão e usados pelo aplicativo que aceita a sessão. Ele não é usado para nenhuma funcionalidade básica do SIP. Por exemplo, você pode usar o cabeçalho UUI em uma central de chamadas para transmitir informações entre atendentes sobre uma chamada.
+ O cabeçalho de desvio é usado para mostrar de onde a chamada foi desviada e por quê. Você pode usar esse cabeçalho para ver as informações de desvio de outros atendentes SIP ou repassá-las.
+ Os cabeçalhos SIP personalizados permitem que você transmita qualquer outra informação que desejar. Por exemplo, se quiser transmitir um id de conta, você pode criar um cabeçalho X chamado “X-Account-Id” e adicionar essas informações.

Você deve prefixar seus cabeçalhos SIP personalizados com `x-`. Os cabeçalhos são expostos na AWS Lambda função e recebidos como parte de um `NEW_INBOUND_CALL` evento durante uma chamada de entrada. Você também pode incluir esses cabeçalhos nos segmentos de chamada de saída ao acionar uma ação ou o [CallAndBridge](call-and-bridge.md) [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html)API.

A seção `Participants` de uma função do Lambda contém o campo `SipHeaders`. Esse campo está disponível quando você recebe um cabeçalho personalizado ou quando você preenche o cabeçalho `User-to-User` ou `Diversion`.

Este exemplo mostra uma resposta esperada quando uma invocação do AWS Lambda contém cabeçalhos SIP.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type":"actionType",
        "Parameters":{
            // Parameters vary by actionType
        }
    },
    "CallDetails":{
        .....
        .....
        "Participants":[
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                ..... 
                "Status": "Connected"
                "SipHeaders": {
                    "X-Test-Value": "String",
                    "User-to-User": "616d617a6f6e5f6368696d655f636f6e6e6563745f696e746567726174696f6e;encoding=hex",
                    "Diversion": "sip:+11234567891@public.test.com;reason=unconditional"
                }
            },
            {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B",
            .....
            "Status": "Connected"
            }
        ]
    }
}
```

O exemplo a seguir mostra uma ação [CallAndBridge](call-and-bridge.md) bem-sucedida devido a uma entrada inválida para o parâmetro `SipHeaders`. 

```
{
    "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":[
               {
                    "Uri":"e164PhoneNumber", // required
                    "BridgeEndpointType":"PSTN" // required
               }
            ],
            "SipHeaders": {
                "X-Test-Value": "String",
                "User-to-User": "616d617a6f6e5f6368696d655f636f6e6e6563745f696e746567726174696f6e;encoding=hex",
                "Diversion": "sip:+11234567891@public.test.com;reason=unconditional"
            }
         }
      }
   ]
}
```

O exemplo a seguir mostra uma ação [CallAndBridge](call-and-bridge.md) com falha causada por um parâmetro inválido `SipHeaders`.

```
{
    "SchemaVersion":"1.0",
    "Sequence":3,
    "InvocationEventType":"ACTION_FAILED",
    "ActionData":{
        "Type":"actionType",
        "Parameters":{
            // Parameters vary by Action Type
            "SipHeaders": {
                "X-AMZN": "String",
                "User-to-User": "616d617a6f6e5f6368696d655f636f6e6e6563745f696e746567726174696f6e;encoding=hex",
                "Diversion": "sip:+11234567891@public.test.com;reason=unconditional"
             },
        },
        "ErrorType": "InvalidActionParameter",
        "ErrorMessage": "Invalid SIP header(s) provided: X-AMZN"
   },
   "CallDetails":{
      .....
      "Participants":[
         {
            "CallId":"call-id-1",
            "ParticipantTag":"LEG-A",
            .....   
            "Status":"Connected"
         },
         {
            "CallId":"call-id-2",
            "ParticipantTag":"LEG-B",
            .....
            "Status":"Connected"
         }
      ]
   }
}
```

## Usar o SipHeaders Campo
<a name="custom-headers"></a>

Quando você aciona o [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html)API, o `SipHeaders` campo opcional, permite que você passe cabeçalhos SIP personalizados para um trecho de chamada de saída. As chaves válidas de cabeçalho devem incluir um dos seguintes: 
+ O prefixo `x-`
+ O cabeçalho `User-to-User`
+ O cabeçalho `Diversion`

O `X-AMZN` é um cabeçalho reservado. Se você usar esse cabeçalho em uma chamada de API, ele falhará. Os cabeçalhos podem ter um tamanho máximo de 2048 caracteres. 

O exemplo a seguir mostra uma típica [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html)API na interface de linha de comando com o parâmetro opcional`SipHeaders`.

```
create-sip-media-application-call
    --from-phone-number value // (string)
    --to-phone-number value // (string)
    --sip-media-application-id value // (string)
    --sip-headers // (map)
```

Para obter mais informações, consulte [Um mecanismo para transportar informações de controle de User-to-User chamadas no SIP](https://datatracker.ietf.org/doc/html/rfc7433) e [Indicação de desvio](https://datatracker.ietf.org/doc/html/rfc5806) no SIP.

# Usar registros de detalhes de chamadas no serviço de áudio PTSN do SDK do Amazon Chime
<a name="attributes"></a>

*Os administradores do Amazon Chime SDK podem configurar os conectores de voz do Amazon Chime SDK para armazenar registros de detalhes da chamada ().* CDRs *Para obter mais informações sobre como configurar conectores de voz do Amazon Chime SDK para CDRs armazenamento, [consulte Gerenciamento de configurações globais no Amazon Chime SDK no Guia de administração do SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/ag/manage-global.html).*

Depois de habilitar CDRs, após cada chamada, o aplicativo de mídia SIP envia os registros para uma pasta chamada **Amazon-Chime- SMADRs** no seu bucket do S3.

A tabela a seguir lista os atributos de um CDR e mostra sua formatação adequada. Os registros contêm todos os campos listados aqui para todas as chamadas.


|  Value  |  Description  | 
| --- | --- | 
|  `"AwsAccountId":"AWS-account-ID"`  |  A ID da AWS conta associada ao aplicativo de mídia SIP que iniciou o uso da PSTN  | 
|  `"TransactionId":"transaction-ID" `  |  O ID da transação da chamada  | 
|  `"CallId":"SIP-media-application-call-ID"`  |  O ID da chamada do participante para o uso associado  | 
|  `"VoiceConnectorId":"voice-connector-ID"`  |  UIDD do ID do conector de voz do SDK do Amazon Chime  | 
|  `"Status":"status"`  |  Status da chamada (concluída, falha)  | 
|  `"BillableDurationSeconds":"billable-duration-in-seconds"`  |  Duração faturável da chamada em segundos  | 
|  `"SchemaVersion":"schema-version"`  |  A versão do esquema CDR  | 
|  `"SourcePhoneNumber":"12075550155"`  |  Número de telefone de origem E.164  | 
| "SourcePhoneNumberName":"North Campus Reception" | O nome atribuído ao número de telefone de origem | 
|  `"DestinationPhoneNumber":"13605551214"`  |  Número de telefone de destino E.164  | 
| "DestinationPhoneNumberName":"South Campus Reception" | O nome atribuído ao número de telefone de destino | 
|  `"UsageType":"usage-type"`  |  Detalhes de uso do item de linha na API da lista de preços  | 
|  `"ServiceCode":"service-code" `  |  O código do serviço na API da lista de preços  | 
|  `"Direction":"direction"`  |  Direção da chamada, `Outbound` ou `Inbound`  | 
|  `"TimeStampEpochSeconds":"start-time-epochseconds"`  |  O carimbo de data/hora do registro em epoch/Unix formato de carimbo de data/hora  | 
|  `"Region":"AWS-region"`  |  AWS Região do conector de voz do Amazon Chime SDK  | 
|  `"SipRuleId":"sip-rule-id"`  |  O ID da regra sip que é acionada quando uma chamada é recebida no serviço de áudio PSTN  | 
|  `"SipApplicationId":"sip-application-id"`  |  O ID do aplicativo SIP que processa a chamada  | 
|  `"CallLegTriggerType":"trigger-type"`  |  O tipo de evento que acionou uma chamada  | 
|  `"BillableVoiceFocusSeconds":"billable-voice-focus-in-seconds"`  |  O valor faturável do uso do Voice Focus, em segundos  | 

# Noções básicas sobre os tempos limite e as tentativas do serviço de áudio PTSN do SDK do Amazon Chime
<a name="timeouts"></a>

O serviço de áudio PSTN interage com AWS Lambda as funções de forma síncrona. Os aplicativos aguardam 5 segundos para que AWS Lambda as funções respondam antes de tentar novamente uma invocação. Se nenhuma resposta for recebida após 20 segundos, o serviço de áudio PSTN emitirá um [desligamento](unexpected-hangups.md). Quando uma função retorna um erro com um dos códigos de status 4*XX*, por padrão, o aplicativo de mídia SIP só repete a invocação uma vez. Se você ficar sem novas tentativas, as chamadas serão encerradas com o código de erro `480 Unavailable`. Para obter mais informações sobre AWS Lambda erros, consulte [Solucionar problemas de invocação](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-invocation.html) em. AWS Lambda

# Depurar e solucionar problemas do serviço de áudio PTSN do SDK do Amazon Chime
<a name="debug-pstn"></a>

Use as seguintes informações para ajudar a diagnosticar e corrigir problemas comuns que podem ser encontrados ao trabalhar com o serviço de áudio PSTN do SDK do Amazon Chime.

**Topics**
+ [Conferir os logs do serviço de áudio PTSN do SDK do Amazon Chime](check-logs.md)
+ [Depurar desligamentos inesperados no serviço de áudio PTSN do SDK do Amazon Chime](unexpected-hangups.md)
+ [Como depurar eventos inesperados de ACTION\$1FAILED](unexpected-action-fail.md)

# Conferir os logs do serviço de áudio PTSN do SDK do Amazon Chime
<a name="check-logs"></a>

Se você estiver depurando um aplicativo de mídia SIP, verifique nos registros do Cloudwatch a função AWS Lambda associada ao aplicativo. 

Em seguida, verifique os logs associados ao aplicativo de mídia SIP. Conforme necessário, você pode configurar o aplicativo de mídia SIP para registro de log. Para mais informações, consulte [Como usar aplicativos de mídia SIP](https://docs.aws.amazon.com/chime-sdk/latest/ag/use-sip-apps.html) no *Guia do administrador do SDK do Amazon Chime*. Se você habilitar o registro em log, poderá encontrar os logs no Cloudwatch, no grupo de logs `/aws/ChimeSipMediaApplicationSipMessages/<SIP-media-application-Id>`.

# Depurar desligamentos inesperados no serviço de áudio PTSN do SDK do Amazon Chime
<a name="unexpected-hangups"></a>

Execute as seguintes ações de solução de problemas se você tiver interrupções inesperadas ou mensagens de erro com as AWS Lambda funções do serviço de áudio PSTN:
+ Verifique se sua AWS Lambda política concede a `lambda:InvokeFunction` permissão ao diretor de serviço [voiceconnector.chime.amazonaws.com](http://voiceconnector.chime.amazonaws.com/).
+ Verifique os registros da sua AWS Lambda função para garantir que ela esteja sendo invocada com sucesso.
+ Se os registros mostrarem eventos recebidos e ações retornadas, verifique se você não retorna uma ação de desligamento quando a AWS Lambda função é invocada.
+ Verifique os CloudWatch registros do seu aplicativo de mídia SIP. A tabela a seguir lista algumas das mensagens que você pode encontrar.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/unexpected-hangups.html)

# Como depurar eventos inesperados de ACTION\$1FAILED
<a name="unexpected-action-fail"></a>

Se você receber um evento `ACTION_FAILED` inesperado, faça o seguinte:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/unexpected-action-fail.html)

# Noções básicas sobre VoiceFocus do serviço de áudio PTSN do SDK do Amazon Chime
<a name="voice-focus"></a>

Permite aplicar a supressão de ruído do Amazon Voice Focus aos trechos de chamadas de entrada e saída em uma chamada pública de rede telefônica comutada (PSTN). Quando você aplica o Amazon Voice Focus, ele reduz o ruído de fundo sem afetar a fala humana. Isso pode facilitar a audição do alto-falante atual.

Para criar segmentos de chamada de entrada, você usa uma [regra SIP](https://docs.aws.amazon.com/chime/latest/ag/manage-sip-applications.html) que invoca uma função AWS Lambda com um evento `NewInboundCall`. É possível criar segmentos de chamada de saída usando a ação [CallAndBridge](call-and-bridge.md) ou uma operação da API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html). Para obter mais informações sobre o Amazon Voice Focus, consulte [Como funciona o cancelamento de ruído do SDK do Amazon Chime](https://www.amazon.science/blog/how-amazon-chimes-challenge-winning-noise-cancellation-works).

 O Amazon Voice Focus reduz ruídos indesejados que não são de fala, incluindo: 
+ **Ruídos ambientais** – vento, ventiladores, água corrente
+ **Ruídos de fundo** – cortadores de grama, latido de cães
+ **Ruídos em primeiro plano** – digitação, embaralhamento de papéis

**nota**  
Quando você usa o Amazon Voice Focus, AWS cobra pelos minutos de chamada ativos de cada trecho de chamada e por cada minuto de uso do aplicativo de mídia SIP.

Este exemplo mostra uma ação `VoiceFocus` típica.

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "VoiceFocus",
            "Parameters": {
                "Enable": True|False,            // required
                "CallId": "call-id-1",           // required    
            }
        }
    ]
}
```

**Enable**  
*Descrição* – Ativa ou desativa o Amazon Voice Focus  
*Valores permitidos*: `True` \$1 `False`  
*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* – Sim  
*Valor-padrão*: nenhum

Este exemplo mostra um evento `ACTION_SUCCESSFUL` bem-sucedido para a ação `VoiceFocus`.

```
{
   "SchemaVersion": "1.0",
   "Sequence": 3,
   "InvocationEventType": "ACTION_SUCCESSFUL",
   "ActionData": {
      "Type": "VoiceFocus",
      "Parameters": {
         "Enable": True,
         "CallId": "call-id-1"
      }
   },
   "CallDetails":{
      .....
      .....
      "Participants":[
         {
            "CallId": "call-id-of-caller",
            .....   
            "Status": "Connected"
         },
         {
            "CallId": "call-id-of-callee",
            .....
            "Status": "Connected"
         }
      ]
   }
}
```

Este exemplo mostra um evento `ACTION_FAILED` típico para a ação `VoiceFocus`.

```
{
   "SchemaVersion": "1.0",
   "Sequence":2,
   "InvocationEventType": "ACTION_FAILED",
      "ActionData":{
      "Type": "VoiceFocus",
      "Parameters": {
         "Enable": True,
         "CallId": "call-id-1"
      }
      },
      "ErrorType": "SystemException",
      "ErrorMessage": "System error while running action"
   },
   "CallDetails":{
      .....
      .....
      "Participants":[
         {
            "CallId": "call-id-of-caller",
            .....   
         }
      ]
   }
}
```

**Tratamento de erros**  
Por motivos de segurança, as ações de áudio PSTN têm um limite de cinco solicitações de chamada por segundo, por conta de cliente (CPS). Quando as solicitações de chamada excedem o limite de 5 CPS, a ação retorna uma mensagem de erro. Esta tabela lista as mensagens de erro apresentadas pela ação `VoiceFocus`.


| Erro | Mensagem | Motivo | 
| --- | --- | --- | 
| `ActionExecutionThrottled` | Falha ao executar a ação. O número máximo de ações por segundo foi atingido. | O número de solicitações de ação do Voice Focus por segundo excedeu o limite do sistema.  | 
| `MissingRequiredActionParameter` | Parâmetro de ação obrigatório ausente. | Falta um ou mais dos parâmetros obrigatórios ao executar a ação. | 
| `SystemException` | Erro do sistema ao executar a ação. | Ocorreu um erro do sistema na execução da ação. | 

**Fluxos de chamadas**  
Este diagrama mostra o fluxo de chamadas para ativar e desativar o Amazon Voice Focus para uma ação `CallAndBridge` entre duas chamadas PSTN.

![\[O fluxo de chamadas quando você ativa ou desativa o foco do Amazon Voice para duas chamadas PSTN ancoradas.\]](http://docs.aws.amazon.com/pt_br/chime-sdk/latest/dg/images/voice_focus-pstn1.png)


Para o trecho de chamada externa, a AWS Lambda função permite que o Amazon Voice se concentre no chamador e retorna um conjunto de ações, inclusive. `CallAndBridge` Depois que a chamada é interrompida, a ação `VoiceFocus` retorna um evento `ACTION_SUCCESSFUL` e a função do Lambda retorna outro conjunto de eventos que habilita o Amazon Voice Focus para a pessoa que está sendo chamada. Esse conjunto de ações inclui `VoiceFocus`, `Enable`, `True` e o ID do chamador. Nenhuma outra ação é tomada até que o chamador desligue. Em seguida, a função do Lambda envia uma ação `Hangup` para o aplicativo de mídia SIP. O aplicativo desliga a pessoa que está sendo chamada e envia uma função Hangup de volta para a função do Lambda, que não realiza nenhuma ação adicional.

# Glossário do serviço de áudio PSTN do SDK do Amazon Chime
<a name="chm-dg-glossary"></a>

\$1 [A](#a) \$1 [C](#c) \$1 [E](#e) \$1 [eu](#i) \$1 [L](#l) \$1 [M](#m) \$1 [N](#n) \$1 [O](#o) \$1 [P](#p) \$1 [S](#s) \$1 [T](#t) \$1 [V](#v) \$1 

## A
<a name="a"></a>

**Ação**  
Em uma AWS Lambda função, uma ação é um item que você deseja executar em uma parte de uma chamada telefônica, como enviar ou receber dígitos, participar de uma reunião e assim por diante. Para ter mais informações sobre ações aceitas pelo serviço de áudio PSTN, consulte [Ações compatíveis com o serviço de áudio PSTN do SDK do Amazon Chime](specify-actions.md).

**AWS Lambda**  
Um serviço de computação que permite que você execute o código de praticamente qualquer tipo de aplicativo ou serviço de back-end sem provisionar nem gerenciar servidores.

**AWS Lambda função**  
No contexto do serviço de áudio PSTN, uma função é executada em resposta aos dados transmitidos por uma aplicação de mídia SIP, como fazer uma chamada de saída. 

## C
<a name="c"></a>

**Registro de detalhes de chamada**  
Dados das chamadas do Amazon Chime SDK Voice Connector, como conta IDs, números de telefone de origem e países de destino. Os registros chegam como objetos em um bucket do Amazon Simple Storage Service (S3) em sua conta. Para obter mais informações, consulte [Gerenciamento de configurações globais no SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/ag/manage-global.html) no *Guia do administrador do SDK do Amazon Chime*. Para obter mais informações sobre o esquema de registro, consulte [Usar registros de detalhes de chamadas no serviço de áudio PTSN do SDK do Amazon Chime](attributes.md) neste guia.

**ID da chamada**  
O ID atribuído aos elementos de todas as chamadas recebidas.

**Elemento de chamada**  
Uma parte de uma ligação. Nos aplicativos do SDK do Amazon Chime, as chamadas podem vir de números de telefone válidos, de um PSTN ou de Voice Connectors do SDK do Amazon Chime. Para obter mais informações, consulte [Saiba como usar trechos de chamada do serviço de áudio PSTN do SDK do Amazon Chime](call-architecture.md) neste guia. 

**Carrier**  
Uma empresa que fornece serviços móveis. Abreviação de **operadora de conectividade sem fio**.

**Amazon Chime**  
Um serviço unificado de comunicação e colaboração fornecido pela AWS.

**SDK do Amazon Chime**  
Um kit de desenvolvimento de software usado por desenvolvedores para adicionar mídia e comunicações em tempo real a aplicativos de comunicação personalizados. 

## E
<a name="e"></a>

**E.164**  
O único formato aceito para números de telefone no serviço de áudio PSTN. Uma recomendação da ITU-T, os números usam um código de país de 1 a 3 dígitos, seguido por um número máximo de assinante de 12 dígitos. Por exemplo: EUA: `+14155552671`, Reino Unido: `+442071838750 44`, Austrália: `+61285993444`. 

**Endpoint**  
 Um dispositivo de hardware ou serviço de software, como um telefone ou um aplicativo de comunicação unificada. 

**EventBridge**  
É um serviço de barramento de eventos de tecnologia sem servidor que permite conectar os aplicativos a dados de uma série de fontes.  
Os aplicativos de mídia SIP não enviam dados para o. EventBridge Para obter mais informações, consulte [Automatização do SDK do Amazon Chime com o Guia do administrador do SDK EventBridge](https://docs.aws.amazon.com/chime-sdk/latest/ag/automating-chime-with-cloudwatch-events.html) do Amazon *Chime*.

## eu
<a name="i"></a>

**IVR**  
Resposta de voz interativa. Um sistema que permite que as pessoas interajam com um sistema telefônico operado por computador por meio de reconhecimento de voz ou teclados de toque.

## L
<a name="l"></a>

**Elemento**  
Consulte [Call leg](#call-leg).

## M
<a name="m"></a>

**Mídia**  
As mensagens de áudio, vídeo ou chat disponíveis para uso durante uma reunião do SDK do Amazon Chime. Um aplicativo de comunicação personalizado pode conter um ou mais de cada tipo de mídia.

**Pipeline de mídia**  
Um mecanismo para streaming e captura de áudio, vídeo, mensagens e eventos durante uma reunião do SDK do Amazon Chime. Para obter mais informações, consulte [Como criar pipelines de mídia do SDK do Amazon Chime](media-pipelines.md) neste guia.

## N
<a name="n"></a>

**Portabilidade numérica**  
A capacidade de mover números de telefone entre operadoras telefônicas ou sistemas de comunicação unificada. 

## O
<a name="o"></a>

**Origem**  
O processo de receber uma chamada de uma PSTN e transferir essa chamada para um endpoint de VoIP. 

## P
<a name="p"></a>

**Tag do participante**  
Um identificador atribuído a cada participante da chamada, `LEG-A` ou `LEG-B`.

**Política**  
O SDK do Amazon Chime exige os seguintes tipos de políticas:  
+ **Política de usuário do IAM**: uma política que define as permissões para usuários do Gerenciamento de identidade e acesso. 
+ **Política de reunião**: uma política que permite que um usuário controle o computador de outro usuário ao compartilhar telas durante uma reunião e permite que os participantes da reunião participem de reuniões recebendo uma chamada telefônica do SDK do Amazon Chime.

**PSTN**  
Rede pública de telefonia comutada. A infraestrutura e os serviços que fornecem recursos de chamadas telefônicas.

**Serviço de áudio PSTN**  
Um serviço SDK do Amazon Chime que permite aos desenvolvedores adicionar recursos de áudio às suas soluções de comunicação.

## R
<a name="r"></a>

**Roteamento**  
Os aplicativos criados usando o SDK do Amazon Chime usam um ou mais tipos de roteamento:  
+ **Roteamento de rede**: o processo de selecionar um caminho para o tráfego em uma rede ou entre várias redes.
+ **Roteamento de interações**: o processo de garantir que uma chamada vá para o destinatário ou o endpoint correto. 
+ **Roteamento de chamadas**: um atributo de gerenciamento de chamadas que enfileira e distribui chamadas de entrada para destinatários ou endpoints predefinidos.

## S
<a name="s"></a>

**SBC**  
Controlador de borda de sessão. Um elemento de rede implantado para proteger redes de voz sobre protocolo de Internet (VoIP) baseadas em SIP.

**Sequence**  
A sequência de eventos que invocam uma AWS Lambda função. Sempre que uma função é invocada durante uma chamada, a sequência é incrementada.

**Limite de serviço/service quota**  
O número máximo de recursos, como reuniões, streams de áudio ou compartilhamentos de conteúdo, permitidos pelo SDK do Amazon Chime. Para obter mais informações, consulte [Audio](meetings-sdk.md#audio) neste guia.

**SIP**  
Protocolo de iniciação de sessão, um protocolo de sinalização usado para iniciar, manter e encerrar sessões em tempo real que incluem qualquer combinação de aplicativos de voz, vídeo e mensagens. Para obter mais informações, consulte [SIP: Protocolo de iniciação da sessão](https://www.rfc-editor.org/rfc/rfc3261.html).

**Cabeçalhos SIP**  
Parâmetros em AWS Lambda funções que contêm dados de controle de chamadas, além de outros dados, como conta de usuário IDs.

**Aplicativo de mídia SIP**  
Um objeto gerenciado que passa valores de uma regra SIP para uma AWS Lambda função de destino. Os desenvolvedores podem ligar para o [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplication.html)API para criar aplicativos de mídia SIP, mas eles devem ter permissões administrativas para fazer isso.

**Regra SIP**  
Um objeto gerenciado que passa números de telefone do Amazon Chime SDK Voice Connector URIs para um aplicativo de mídia SIP de destino.

**Tronco SIP**  
Consulte [Amazon Chime SDK Voice Connector](#voice-connector).

**SMA**  
Consulte aplicação de mídia SIP.

**ID SMA**  
Consulte aplicação de mídia SIP.

## T
<a name="t"></a>

**Telco**  
Um provedor de serviços de telecomunicações.

**Rescisão**  
O processo de encerrar uma chamada.

**TRANSACTION**  
Uma chamada que contém um ou mais elementos de chamada. Para obter mais informações, consulte [Saiba como usar trechos de chamada do serviço de áudio PSTN do SDK do Amazon Chime](call-architecture.md) neste guia.

**ID da transação**  
O ID de uma transação que contém vários elementos de chamada. Para obter mais informações, consulte [Saiba como usar trechos de chamada do serviço de áudio PSTN do SDK do Amazon Chime](call-architecture.md) neste guia.

## V
<a name="v"></a>

**Voice Connector do SDK do Amazon Chime**  
Um objeto que fornece o serviço de entroncamento do Protocolo de iniciação de sessão (SIP) para sistemas telefônicos. Os administradores usam o console administrativo do SDK do Amazon Chime para criar e gerenciar Voice Connectors. Para obter mais informações, consulte [Gerenciamento de Voice Connectors do SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/ag/voice-connectors.html) no *Guia do administrador do SDK do Amazon Chime*.

**Grupo de Voice Connectors do SDK do Amazon Chime**  
Um invólucro que contém vários conectores de voz de diferentes AWS regiões. Grupos permitem que chamadas de entrada façam failover entre regiões, o que cria um mecanismo tolerante a falhas. Para obter mais informações, consulte [Gerenciamento de grupos de Voice Connectors do SDK do Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/ag/voice-connector-groups.html) no *Guia do administrador do SDK do Amazon Chime*.