

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

# 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)