Ejemplo de llamada E nd-to-end - Amazon Chime SDK

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo de llamada E nd-to-end

Este caso de uso proporciona un código de ejemplo para recibir una llamada telefónica de una persona que llama a través de la PSTN, saludar a la persona que llama con un mensaje de audio, obtener el PIN de la reunión de la persona que llama, reproducir audio y unir a la persona que llama a la reunión.

Acciones y eventos de invocación de

El servicio de audio transfiere los eventos de invocación a AWS Lambda las funciones como objetos JSON. Los objetos incluyen el tipo de evento de invocación y cualquier metadato relevante. La función AWS Lambda también devuelve las acciones de las aplicaciones multimedia SIP como objetos JSON, y esos objetos incluyen un tipo de acción y cualquier metadato relevante.

En la siguiente tabla se enumeran los eventos de invocación y los posibles ActionData.Type cuando recibe un evento de invocación.

Evento de invocación 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 el siguiente caso de uso, necesita al menos un número de teléfono en su inventario del SDK de Amazon Chime, un objeto gestionado por aplicaciones multimedia SIP que utilice una AWS Lambda función con un nombre de recurso de Amazon (ARN) y una regla SIP que utilice el número de teléfono como activador.

Cuando el SDK de Amazon Chime recibe una llamada al número de teléfono especificado en la regla, el servicio de audio PSTN invoca una AWS Lambda función con el tipo de evento de invocación. 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" } ] } }

Puede programar la AWS Lambda función para validar los detalles de las llamadas y guardarlos para utilizarlos en el futuro. Para un NEW_INBOUND_CALL evento, la AWS Lambda función responde con un conjunto de acciones que reproducen un mensaje de bienvenida y solicitan el PIN de la reunión.

Los archivos de audio tienen los siguientes requisitos:

  • Debe reproducir los archivos de audio de un bucket de Amazon Simple Storage Service (S3). El bucket S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. Además, debe conceder el permiso de s3:GetObject a la entidad principal del servicio Amazon Chime SDK Voice Connector: voiceconnector.chime.amazonaws.com. Para ello puede utilizar la consola S3 o la interfaz de la línea de comandos (CLI).

  • Debe utilizar archivos WAV PCM de un tamaño no superior a 50 MB. Amazon Chime SDK recomienda 8 kHz en mono.

  • Los metadatos de S3 de cada archivo WAV deben contener {'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 } } ] }

La aplicación multimedia SIP ejecuta estas acciones en el tramo A de la llamada. Si la PlayAudioAndGetDigits acción recibe los dígitos, la aplicación multimedia SIP invoca la AWS Lambda función con el tipo de ACTION_SUCCESSFUL evento.

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

Puede programar una AWS Lambda función para identificar a la persona que llama en función de los CallDetails datos. También puede validar el PIN de la reunión recibido anteriormente. Si se utiliza un PIN correcto, se utilizan las CreateAttendeeAPI CreateMeetingy para crear la reunión del SDK de Amazon Chime y generar el token de unión que utilizará el asistente a la reunión. La AWS Lambda función responde con la acción de unirse a la reunión del SDK de Amazon Chime.

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

Suponiendo que JoinToken sea válido, la aplicación multimedia SIP se une a la reunión del SDK de Amazon Chime e invoca una AWS Lambda función con el ACTION_SUCCESSFUL evento, donde CallDetails contiene los datos de la aplicación multimedia SIP y el servicio 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" } ] } }

Si desea dejar de ejecutar acciones en la llamada o el tramo de llamada en este momento, puede responder con un conjunto de acciones vacío.

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

Cuando la persona que llama cuelga, la aplicación multimedia SIP invoca la función junto con el evento. AWS Lambda 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" } ] } }

Si responde a un evento Hangup con una acción, la aplicación multimedia SIP ignora la acción si ningún otro Participants muestra ningún Status como Connected.