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çãoStartCallRecording
.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.
Tópicos
Como solicitar uma ação StartCallRecording
O exemplo a seguir mostra como solicitar a ação StartCallRecording
para faixas BOTH
.
{
"Version": "2012-10-17",
"Statement": [
{
"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 noCallDetails
da invocação do perfil AWS LambdaValores 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
ouOUTGOING
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
es3:PutObjectAcl
.Obrigatório – Sim
Valor padrão: nenhum
Como especificar um destino de gravação
O SDK do Amazon Chime fornece gravações de chamadas para se bucket do Amazon S3. O bucket deve pertencer à sua conta da AWS. 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 adicionais sobre o trecho da chamada. A tabela a seguir lista os metadados do objeto do Amazon S3 compatíveis.
Nome | Descrição |
---|---|
transaction-id |
O ID da transação da chamada telefônica |
call-id |
CallId do participante no CallDetails da invocação da função AWS Lambda |
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
Seu bucket do Amazon S3 de destino deve pertencer à mesma conta da AWS 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.
{
"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": "aws-account-id
"
}
}
}
]
}
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, você pode restringir as permissões do bucket do S3 a um único aplicativo de mídia SIP.
{
"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": "aws-account-id
",
"aws:SourceArn": "arn:aws:chime:region
:aws-account-id
:sma/sip-media-application-id
"
}
}
}
]
}
Resposta bem-sucedida da ação
Quando a gravação da chamada é iniciada com êxito em um trecho de chamada o aplicativo de mídia SIP invoca uma função AWS Lambda com o tipo de evento ACTION_SUCCESSFUL
. 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
Para erros de validação, o aplicativo de mídia SIP chama a função AWS Lambda com a mensagem de erro apropriada. A seguinte tabela lista as mensagens de erro.
Erro | Message | Motivo |
---|---|---|
|
O parâmetro |
Qualquer parâmetro é inválido. |
|
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 funcional no GitHub: https://github.com/aws-samples/amazon-chime-sma-on-demand-recording