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 Amazon Chime Audio SDK PTSN

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

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 PSTN audio, SIP les applications multimédia 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 L'interface UpdateSipMediaApplicationCallAPIvous 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 UpdateSipMediaApplicationCallAPIdans 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 qu'Amazon SDK Chime organise la réunion. Une fois la configuration terminée, Amazon Chime SDK 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 SIP multimédia 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 UpdateSipMediaApplicationCallAPIet passe l'appel transactionId et dans JoinToken le cadre de ses arguments. Cet API appel déclenche à nouveau la fonction Lambda, désormais associée à l'CALL_UPDATE_REQUESTEDévénement. La MyMeetingService fonction est JoinToken transmise à la Lambda dans le cadre de l'événement, et le jeton est utilisé pour renvoyer l'JoinChimeMeetingaction à l'application SIP multimédia, qui interrompt l'PlayAudioaction et connecte l'appelant à la réunion.

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

L'interface UpdateSipMediaApplicationCallAPIrenvoie HTTP 202 (Accepté). L'application SIP multimédia 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 la part de 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 SIP multimédia 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 JSON schéma (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 UpdateSipMediaApplicationCall API demande

  • 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 SIP multimédia 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 SIP multimédia 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.