Comprendre les end-to-end appels - Amazon Chime SDK

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_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 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:GetObjectautorisation 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'PlayAudioAndGetDigitsaction 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'Participantsaffiche un Status deConnected.