Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comprendre les end-to-end appels
Ce cas d'utilisation fournit un exemple de code pour recevoir un appel téléphonique d'un PSTN appelant, accueillir l'appelant avec un message audio, obtenir la réunion PIN de l'appelant, écouter du son et rejoindre l'appelant à la réunion.
Événements et actions d'invocation
Le service audio transmet les événements d'invocation aux AWS Lambda fonctions sous forme d'JSONobjets. Les objets incluent le type d'événement d'invocation et toutes les métadonnées pertinentes. La AWS Lambda fonction renvoie également les actions SIP des applications multimédia sous forme d'JSONobjets, et ces objets incluent un type d'action et toutes les métadonnées pertinentes.
Le tableau suivant répertorie les événements d'invocation, et les événements possiblesActionData.Type
, lorsque vous recevez un événement d'invocation.
Événement d'invocation | ActionData.Type |
---|---|
ACTION_SUCCESSFUL |
CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting |
ACTION_FAILED |
CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting |
HANGUP |
HangUp |
DIGITS_RECEIVED |
ReceiveDigits |
Note
Pour implémenter le cas d'utilisation suivant, vous avez besoin d'au moins un numéro de téléphone dans votre SDK inventaire Amazon Chime, d'un objet géré par une application SIP multimédia qui utilise une AWS Lambda fonction avec un nom de ressource Amazon (ARN) et d'une SIP règle utilisant le numéro de téléphone comme déclencheur.
Lorsqu'Amazon Chime SDK reçoit un appel au numéro de téléphone spécifié dans la règle, le service PSTN audio appelle une AWS Lambda fonction avec le type d'événement d'NEW_INBOUND_CALL
invocation.
{ "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" } ] } }
Vous pouvez programmer la AWS Lambda fonction pour valider les détails de l'appel et les enregistrer pour une utilisation future. Pour un NEW_INBOUND_CALL
événement, la AWS Lambda fonction répond par un ensemble d'actions qui lancent une invite de bienvenue et demandent la tenue d'une réunionPIN.
Les fichiers audio répondent aux exigences suivantes :
Vous devez lire des fichiers audio à partir d'un bucket Amazon Simple Storage Service (S3). Le compartiment S3 doit appartenir au même AWS compte que l'application SIP multimédia. En outre, vous devez donner l'
s3:GetObject
autorisation au principal du service Amazon Chime SDK Voice Connector...voiceconnector---chime.amazonaws.com
Pour ce faire, vous pouvez utiliser la console S3 ou l'interface de ligne de commande (CLI).Vous devez utiliser des PCM WAV fichiers d'une taille maximale de 50 Mo. L'Amazon Chime SDK recommande 8 KHz monos.
Les métadonnées S3 de chaque WAV fichier doivent contenir
{'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
} } ] }
L'application SIP multimédia exécute ces actions sur le segment d'appel A. En supposant que l'PlayAudioAndGetDigits
action reçoit les chiffres, l'application SIP multimédia invoque la AWS Lambda fonction avec le type d'ACTION_SUCCESSFUL
événement.
{ "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 } } }
Vous pouvez programmer une AWS Lambda fonction pour identifier l'appelant en fonction des CallDetails
données. Vous pouvez également valider la réunion PIN reçue plus tôt. En supposant que c'PINest correct, vous utilisez ensuite le CreateMeeting et CreateAttendeeAPIspour créer la SDK réunion Amazon Chime et générer le jeton de participation utilisé par le participant à la réunion. La AWS Lambda fonction répond par l'action de rejoindre la réunion Amazon Chime. SDK
{ "SchemaVersion": "1.0", "Actions": [ { "Type": "JoinChimeMeeting", "Parameters": { "JoinToken": "
meeting-attendee-join-token
" } } ] }
En supposant que JoinToken
c'est valide, l'application SIP multimédia rejoint la SDK réunion Amazon Chime et invoque une AWS Lambda fonction avec l'ACTION_SUCCESSFUL
événement, qui CallDetails
contient les données de l'application SIP multimédia et du service 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 vous souhaitez arrêter d'exécuter des actions lors de l'appel ou du volet appel à ce stade, vous pouvez répondre par un ensemble d'actions vide.
{ "SchemaVersion": "1.0" "Actions": [] }
Une fois que l'appelant a raccroché, l'application SIP multimédia invoque la AWS Lambda fonction associée à l'événement. 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 vous répondez à un Hangup
événement par une action, l'application SIP multimédia ignore l'action si aucun autre n'Participants
affiche un Status
deConnected
.