end-to-endEntender las llamadas - 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.

end-to-endEntender las llamadas

Este caso de uso proporciona un código de ejemplo para recibir una llamada telefónica de la persona que PSTN llama, saludar a la persona que llama con un mensaje de audio, solicitar la reunión PIN 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 las funciones como objetos. AWS Lambda JSON Los objetos incluyen el tipo de evento de invocación y cualquier metadato relevante. La AWS Lambda función también devuelve las acciones de las aplicaciones SIP multimedia como JSON objetos, 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, necesitas al menos un número de teléfono en tu SDK inventario de Amazon Chime, un objeto gestionado por aplicaciones SIP multimedia que utilice una AWS Lambda función con un nombre de recurso de Amazon (ARN) y una SIP regla que utilice el número de teléfono como activador.

Cuando Amazon Chime SDK recibe una llamada al número de teléfono especificado en la regla, el servicio de PSTN audio invoca una AWS Lambda función con el tipo de evento de NEW_INBOUND_CALL invocación.

{ "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 la convocatoria de una reuniónPIN.

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 SIP multimedia. Además, debe conceder el s3:GetObject permiso al director del servicio Amazon Chime SDK Voice Connector:. voiceconnector.chime.amazonaws.com Para ello, puede utilizar la consola S3 o la interfaz de línea de comandos (CLI).

  • Debe utilizar PCM WAV archivos que no superen los 50 MB de tamaño. Amazon Chime SDK recomienda 8 monoKHz.

  • Los metadatos de S3 de cada WAV archivo 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 SIP multimedia ejecuta estas acciones en el tramo A de la llamada. Suponiendo que la PlayAudioAndGetDigits acción reciba los SIP dígitos, 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 la reunión PIN recibida anteriormente. Suponiendo que es correctoPIN, entonces se utiliza el CreateMeeting y CreateAttendeeAPIspara crear la SDK reunión de Amazon Chime y generar el token de unión utilizado por el asistente a la reunión. La AWS Lambda función responde con la acción de unirse a la reunión de Amazon ChimeSDK.

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

Suponiendo que JoinToken sea válido, la aplicación SIP multimedia se une a la SDK reunión de Amazon Chime e invoca una AWS Lambda función con el ACTION_SUCCESSFUL evento, donde CallDetails contiene los datos de la aplicación SIP multimedia 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 SIP multimedia 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 respondes a un Hangup evento con una acción, la aplicación SIP multimedia ignorará la acción si ninguna otra Participants muestra una. Status Connected