Exemplend-to-end d'appel électronique - Kit SDK Amazon Chime

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_CALLinvocation.

{ "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:GetObjectautorisation 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'PlayAudioAndGetDigitsaction 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'ParticipantsafficheStatus deConnected.