Entendendo end-to-end as chamadas - Amazon Chime SDK

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

Entendendo end-to-end as chamadas

Esse caso de uso fornece um exemplo de código para receber uma chamada telefônica de um PSTN chamador, cumprimentá-lo com uma mensagem de áudio, receber a reunião PIN 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 JSON objetos. Os objetos incluem o tipo de evento de invocação e quaisquer metadados relevantes. A AWS Lambda função também retorna ações do aplicativo de SIP mídia como JSON objetos, 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_SUCCESSFUL

CallAndBridge

ReceiveDigits

PlayAudio

PlayAudioAndGetDigits

JoinChimeMeeting

ModifyChimeMeetingAttendees

RecordMeeting

ACTION_FAILED

CallAndBridge

PlayAudio

PlayAudioAndGetDigits

ModifyChimeMeetingAttendees

RecordMeeting

HANGUP

HangUp

DIGITS_RECEIVED

ReceiveDigits
nota

Para implementar o seguinte caso de uso, você precisa de pelo menos um número de telefone em seu SDK inventário do Amazon Chime, um objeto gerenciado por aplicativo de SIP mídia que use uma AWS Lambda função com um Amazon Resource Name (ARN) e uma SIP regra que use 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 PSTN áudio 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 a reuniãoPIN.

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 SIP mídia. Além disso, você deve dar a s3:GetObject permissão ao responsável pelo serviço Amazon Chime SDK Voice Connector—. voiceconnector.chime.amazonaws.com Você pode usar o console S3 ou a interface de linha de comando (CLI) para fazer isso.

  • Você deve usar PCM WAV arquivos com no máximo 50 MB de tamanho. O Amazon Chime SDK recomenda 8 KHz mono.

  • Os metadados do S3 para cada WAV arquivo 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 SIP mídia executa essas ações no trecho de chamada A. Supondo que a PlayAudioAndGetDigits ação receba os dígitos, o aplicativo de SIP mídia invoca a AWS Lambda função com o 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 a reunião PIN recebida anteriormente. Supondo que esteja corretoPIN, você então usa o CreateMeeting e CreateAttendeeAPIspara criar a SDK reunião do Amazon Chime 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 SDK Chime.

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

Supondo que JoinToken seja válido, o aplicativo de SIP mídia se junta à reunião do Amazon SDK Chime e invoca AWS Lambda uma função com ACTION_SUCCESSFUL o evento, CallDetails onde contém os dados do aplicativo de mídia e SIP 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 SIP mídia invoca a AWS Lambda função com o 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 Hangup evento com uma ação, o aplicativo de SIP mídia ignorará a ação se nenhum outro Participants mostrar um Status deConnected.