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.
Exemplend-to-end d'appel électronique
Ce cas d'utilisation fournit un exemple de code permettant de recevoir un appel téléphonique d'un appelant PSTN, d'accueillir l'appelant par un message audio, d'obtenir le code PIN de la réunion auprès de l'appelant, de diffuser du son et de rejoindre l'appelant à la réunion.
Événements et actions d'invocation
Le service audio transmet les événements d'invocation auxAWS Lambda fonctions en tant qu'objets JSON. Les objets incluent le type d'événement d'invocation et toutes les métadonnées pertinentes. LaAWS Lambda fonction renvoie également les actions de l'application multimédia SIP sous forme d'objets JSON, 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_RÉUSSIE |
CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting |
ACTION_A ÉCHOUÉ |
CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting |
RACCROCHER |
HangUp |
CHIFFRES_REÇUS |
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 inventaire du SDK Amazon Chime, d'un objet géré par une application multimédia SIP qui utilise uneAWS Lambda fonction associée à un Amazon Resource Name (ARN) et d'une règle SIP utilisant le numéro de téléphone comme déclencheur.
Lorsque le SDK Amazon Chime reçoit un appel au numéro de téléphone spécifié dans la règle, le service PSTN Audio appelle uneAWS 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 laAWS Lambda fonction pour valider les détails des appels et les stocker pour une utilisation future. Lors d'unNEW_INBOUND_CALL
événement, laAWS Lambda fonction répond par un ensemble d'actions qui déclenchent un message de bienvenue et demandent le code PIN de la réunion.
Les fichiers audio présentent les exigences suivantes :
Pour silier des fichiers audio, vous devez silier un compartiment Amazon Simple Storage Service (S3). Le compartiment S3 doit appartenir au mêmeAWS compte que l'application multimédia SIP. En outre, vous devez donner l'
s3:GetObject
autorisation au responsable 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 fichiers PCM WAV d'une taille maximale de 50 Mo. Le SDK Amazon Chime recommande une fréquence de 8 kHz en mono.
Les métadonnées S3 de chaque fichier WAV 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 multimédia SIP exécute ces actions sur la branche d'appel A. En supposant que l'PlayAudioAndGetDigits
action reçoit les chiffres, l'application multimédia SIP invoque laAWS 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 uneAWS Lambda fonction pour identifier l'appelant en fonction desCallDetails
données. Vous pouvez également valider le code PIN de réunion reçu précédemment. En supposant que le code PIN est correct, vous utilisez ensuite les CreateAttendeeAPI CreateMeetinget pour créer la réunion du SDK Amazon Chime et générer le jeton de participation utilisé par le participant à la réunion. LaAWS Lambda fonction répond par l'action de participer à la réunion du SDK Amazon Chime.
{ "SchemaVersion": "1.0", "Actions": [ { "Type": "JoinChimeMeeting", "Parameters": { "JoinToken": "
meeting-attendee-join-token
" } } ] }
En supposant que celaJoinToken
soit valide, l'application multimédia SIP participe à la réunion du SDK Amazon Chime et appelle uneAWS Lambda fonction associée à l'ACTION_SUCCESSFUL
événement,CallDetails
qui contient les données de l'application multimédia SIP 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 sur l'appel ou l'étape d'appel à ce stade, vous pouvez répondre avec un ensemble d'actions vide.
{ "SchemaVersion": "1.0" "Actions": [] }
Une fois que l'appelant a raccroché, l'application multimédia SIP invoque laAWS Lambda fonction avec l'HANGUP
événement.
{ "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 à unHangup
événement par une action, l'application multimédia SIP ignore l'action si aucune autre n'Participants
afficheStatus
deConnected
.