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