Définition d'un webhook audio

Cette fonction n'est actuellement prise en charge qu'avec le connecteur audio Genesys de l'intégration téléphonique.

Un webhook audio appelle un service ou une application externe chaque fois qu'un type de réponse enregistrement est utilisé pour collecter des données audio. Le service externe traite l'audio et, en cas d'erreur, déconnecte l'appel. Le webhook audio est souvent utilisé pour stocker l'audio pour des raisons de conformité, car l'assistant d'intelligence artificielle ne stocke pas l'audio.

Avant de commencer

L'appel par programmation au service externe doit répondre aux conditions suivantes :

  • L'appel doit être une demande HTTP POST.

  • Le corps de la demande doit être un objet JSON (Content-Type : multipart/form-data).

  • L'appel doit revenir dans un délai de 30 secondes ou moins.

Pour plus d'informations sur l'enregistrement audio, voir Enregistrement de l'énoncé d'un appelant.

Procédure

Pour ajouter les détails du webhook, procédez comme suit :

  1. Allez dans Accueil > Environnements.

  2. Cliquez sur Settings Icône d'engrenage à partir de l'onglet Draft > Draft environment ou de l'onglet Live > Live environment.

  3. Cliquez sur Audio webhook.

  4. Réglez le commutateur du webhook audio sur Enabled.

  5. Dans le champ URL ajoutez le URL pour l'application externe à laquelle vous voulez envoyer la requête HTTP POST. Assurez-vous que le site URL utilise le protocole SSL (commençant par exemple par https).

  6. Dans le champ Secret, ajoutez une clé privée à transmettre avec la demande d'authentification auprès du service externe. La clé doit être spécifiée sous la forme d'une chaîne de texte (par exemple, licorne violette), d'une longueur maximale de 1 024 caractères.

    Vous ne pouvez pas spécifier une variable de contexte. Si le service externe ne nécessite pas de jeton, indiquez la chaîne de votre choix. Vous ne pouvez pas laisser cette zone vide. Pour afficher le secret au fur et à mesure que vous le saisissez, cliquez sur Afficher le mot de passe avant de le taper. Après avoir enregistré le secret, des astérisques remplacent la chaîne et vous ne pouvez plus la consulter. Pour plus d'informations sur l'utilisation de ce champ, voir Sécurité des webhooks pour l'expérience classique uniquement.

  7. Dans le champ Délai, indiquez la durée (en secondes) pendant laquelle l'assistant doit attendre une réponse du webhook avant de renvoyer une erreur. La durée du délai d'attente doit être comprise entre 1 et 30 secondes.

  8. Dans la section Headers, ajoutez les en-têtes que vous souhaitez transmettre au service, l'un après l'autre, en cliquant sur Add header.

    Par exemple, si l'application externe que vous appelez renvoie une réponse, elle peut être en mesure d'envoyer une réponse dans plusieurs formats. Le webhook nécessite que la réponse soit formatée au format JSON. Le tableau suivant montre comment ajouter un en-tête pour s'assurer que la valeur à renvoyer est au format JSON.

    Exemple d'en-tête
    Nom d'en-tête Valeur d'en-tête
    Content-Type application/json

Après avoir enregistré la valeur de l'en-tête, la chaîne est remplacée par des astérisques et ne peut plus être consultée.

Les détails du webhook sont sauvegardés automatiquement.

Pour plus d'exemples, voir les exemples de webhooks audio.

Test du webhook

Effectuez un test complet de votre webhook avant de l'activer pour un assistant qui est utilisé dans un environnement de production.

Le webhook est déclenché lorsqu'un type de réponse d'enregistrement est utilisé lors d'un appel téléphonique. Si la demande au webhook échoue, l'appel se déconnecte. Vous pouvez consulter les journaux d'intégration du téléphone pour obtenir plus de détails sur la raison de l'échec du webhook. Pour plus d'informations, voir Dépannage de l'intégration téléphonique.

Corps de demande

Il est utile de connaître le format du corps de la requête du webhook audio afin que votre code externe puisse le traiter.

La charge utile contient l'audio et les métadonnées en tant que Content-Type : multipart/form-data. Voici un exemple de demande :

POST /audio-webhook HTTP/1.1
Content-Type: multipart/form-data; boundary=----------3676416B-9AD6-440C-B3C8-FC66DDC7DB45
----------3676416B-9AD6-440C-B3C8-FC66DDC7DB45
Content-Disposition: form-data; name="metadata"
Content-Type: application/json
{
    "assistant_id": "dadf4b56-3b67-411a-b48d-079806b626d3",
    "environment_id": "6205aead-fe91-44af-bfe1-b4435015ba23",
    "session_id": "50989a59-9976-4b3f-9a98-af42adcad69a",
    "recording_id": "3daeb5d2-f52b-4c3e-a869-328b6fc6327c",
    "start_timestamp": "2024-10-21T17:22:07.789Z",
    "stop_timestamp": "2024-10-21T17:22:37.789Z"
}
----------3676416B-9AD6-440C-B3C8-FC66DDC7DB45
Content-Disposition: form-data; name="audio_recording"
Content-Type: audio/mulaw;rate=8000

<binary data>