Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Mise à jour des appels en cours pour l'audio PTSN du SDK Amazon Chime

Mode de mise au point
Mise à jour des appels en cours pour l'audio PTSN du SDK Amazon Chime - 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.

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.

Dans le cadre du service audio PSTN, les applications multimédia SIP vous permettent de définir des actions à exécuter lors d'un appel en invoquant des fonctions Lambda définies par l'utilisateur en fonction des événements de l'appel, tels qu'un appel entrant ou des chiffres DTMF. La UpdateSipMediaApplicationCallL'API vous permet de déclencher une fonction Lambda à tout moment pendant qu'un appel est actif, en remplaçant les actions en cours par de nouvelles actions renvoyées par l'invocation.

Flux de travail

Vous utilisez le UpdateSipMediaApplicationCallAPI dans divers cas, tels que l'ajout de participants à une réunion, la désactivation ou la désactivation d'un utilisateur, sa déconnexion, etc. Le cas d'utilisation suivant décrit un flux de travail typique.

Un utilisateur appelle et écoute de la musique pendant que le SDK Amazon Chime organise la réunion. Une fois la configuration terminée, le SDK Amazon Chime arrête le son et admet l'appelant dans la réunion. Supposons ensuite l'utilisation d'un système distinct qui gère les réunions. MyMeetingService Chaque appel entrant doit être mis en attente. Chime MyMeetingService avertit des appels entrants, MyMeetingService puis crée un participant pour chaque appel, et lorsque celui-ci MyMeetingService est prêt à démarrer la réunion, il avertit l'application multimédia SIP et fournit un jeton pour rejoindre la réunion.

Pour gérer ce cas, la fonction Lambda doit implémenter la logique suivante.

  • Lorsqu'un nouvel appel entrant arrive, le Lambda est invoqué avec un NEW_INBOUND_CALL événement. Le Lambda appelle le MyMeetingService et transmet transactionId celui qui identifie l'appel en cours et renvoie l'PlayAudioaction.

  • Lorsque le service MyMeetingService est prêt à ajouter l'appelant à la réunion, il appelle UpdateSipMediaApplicationCallAPI et transmet l'appel transactionId et dans JoinToken le cadre de ses arguments. Cet appel d'API déclenche à nouveau la fonction Lambda, désormais associée à l'CALL_UPDATE_REQUESTEDévénement. La fonction est MyMeetingService transmise JoinToken à la Lambda dans le cadre de l'événement, et le jeton est utilisé pour renvoyer l'JoinChimeMeetingaction à l'application multimédia SIP, qui interrompt l'PlayAudioaction et connecte l'appelant à la réunion.

Schéma illustrant le flux de données dans l'UpdateSipMediaApplicationCallAPI.
Note

La UpdateSipMediaApplicationCallL'API renvoie HTTP 202 (accepté). L'application multimédia SIP confirme que l'appel est en cours et peut être mis à jour. Elle tente donc d'appeler la fonction Lambda. L'appel étant effectué de manière asynchrone, une réponse réussie de l'API ne garantit pas le démarrage ou la fin de la fonction Lambda.

L'exemple suivant montre la syntaxe de la demande.

{ "SipMediaApplicationId": "string", "TransactionId": "string", "Arguments": { "string": "string" } }

Paramètres de requête

  • SipMediaApplicationId— L'ID de l'application multimédia SIP qui gère l'appel.

  • TransactionId— L'identifiant de la transaction d'appel. Pour les appels entrants, ils TransactionId peuvent être obtenus à partir de l'NEW_INCOMING_CALLévénement transmis à la fonction Lambda lors de son premier appel. Pour les appels sortants, TransactionId est renvoyé dans la réponse de CreateSipMediaApplicationCall.

  • Arguments — Arguments personnalisés mis à la disposition de la fonction Lambda dans le cadre des données d'CallUpdateRequestaction. Peut contenir de 0 à 20 paires clé-valeur.

L'exemple suivant illustre une demande type.

aws chime update-sip-media-application-call --sip-media-application-id feb37a7e-2b66-49fb-b2dd-30f4780dc36d --transaction-id 1322a4e7-c106-4e70-aaaf-a8fa4c77c0cb --arguments '{"JoinToken": "abc123"}'

Syntaxe de réponse

{ "SipMediaApplicationCall": { "TransactionId": "string" } }

Éléments de réponse

  • TransactionId— L'identifiant de la transaction d'appel, le même identifiant que celui de la demande.

L'exemple suivant montre un événement d'CALL_UPDATE_REQUESTEDinvocation.

{ "SchemaVersion": "1.0", "Sequence": 2, "InvocationEventType": "CALL_UPDATE_REQUESTED", "ActionData": { "Type": "CallUpdateRequest", "Parameters": { "Arguments": { "string": "string" } } }, "CallDetails": { ... } }

Éléments de l'événement

  • SchemaVersion— La version du schéma JSON (1.0)

  • Séquence — Le numéro de séquence de l'événement dans l'appel

  • InvocationEventType— Le type d'événement d'invocation Lambda, dans ce cas, CALL_UPDATE_REQUESTED

  • ActionData— Les données associées à l'CallUpdateRequestaction.

    • Type — Le type d'action, dans ce cas, CallUpdateRequest

    • Paramètres — Les paramètres de l'action

      • Arguments — Les arguments transmis dans le cadre de la demande UpdateSipMediaApplicationCall d'API

  • CallDetails— Les informations sur l'état actuel de l'appel

Comprendre les actions interruptibles et non interruptibles

Lorsqu'une fonction Lambda renvoie une nouvelle liste d'actions alors que des actions existantes sont exécutées, toutes les actions qui suivent l'action en cours sont remplacées par les nouvelles actions. Dans certains cas, la fonction Lambda interrompt les actions en cours afin d'exécuter immédiatement de nouvelles actions.

Le schéma suivant illustre un exemple typique. Le texte situé sous le diagramme explique la logique.

Schéma montrant comment les actions peuvent être remplacées lors d'un appel d'application multimédia SIP en cours.

Si l'action 2 est interruptible, nous l'arrêtons et exécutons la nouvelle action 1 à la place.

Si l'action 2 n'est pas interruptible, elle se termine avant le début de la nouvelle action 1.

Dans les deux cas, l'Action 3 n'est pas exécutée.

Si quelque chose interrompt une action, la fonction Lambda est invoquée avec ACTION_INTERRUPTED un événement. Cet événement est utilisé à titre informatif uniquement. L'application multimédia SIP ignore toutes les actions renvoyées par cet appel.

Types d'actions interruptibles :

  • PlayAudio

  • RecordAudio

  • Pause

Exemple de fonction Lambda

Cet exemple montre une fonction Lambda typique qui lit un fichier audio, transmet un jeton de jointure et met à jour l'appel.

const MMS = require('my-meeting-service'); const myMeetingServiceClient = new MMS.Client(); exports.handler = async (event) => { console.log('Request: ' + JSON.stringify(event)); const playAudio = () => { return { Type: 'PlayAudio', Parameters: { ParticipantTag: 'LEG-A', AudioSource: { Type: 'S3', BucketName: 'chime-meetings-audio-files-bucket-name', Key: 'welcome.wav' } } } } const joinChimeMeeting = (joinToken) => { return { Type: 'JoinChimeMeeting', Parameters: { JoinToken: joinToken } } } const response = (...actions) => { const r = { SchemaVersion: '1.0', Actions: actions }; console.log('Response: ' + JSON.stringify(r)); return r; }; switch (event.InvocationEventType) { case 'NEW_INBOUND_CALL': myMeetingServiceClient.addPendingCall(event.CallDetails.TransactionId); return response(playAudio()); case 'CALL_UPDATE_REQUESTED': const joinToken = event.ActionData.Parameters.Arguments['JoinToken'] return response(joinChimeMeeting(joinToken)); default: return response(); } }

Rubrique suivante :

Fin d'un appel
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.