Passer au contenu principal

CDX Telecom

Intégration de l’API OpenAI & Twilio avec les appels via SIP

Découvrez la FTTO (Fiber To The Office), une solution fibre optique dédiée aux entreprises

Pourquoi utiliser SIP avec OpenAI ?

Pour connecter l’API aux réseaux téléphoniques, OpenAI supporte SIP (Session Initiation Protocol). Ce protocole est le standard de l’industrie pour initier et gérer les appels vocaux. De plus, SIP est compatible avec la majorité des systèmes VoIP, PBX et opérateurs comme Twilio.

En combinant OpenAI Realtime avec SIP, vous permettez aux appelants de composer un numéro classique et de parler à un agent IA en temps réel, sans besoin de traductions supplémentaires.

Matériel et prérequis nécessaires

Avant de commencer, assurez-vous de disposer de :

Flux d’appel

Figure : Intégration SIP OpenAI & Twilio
  1. L’appelant compose un numéro de téléphone

  2. L’appel entrant atteint votre numéro Twilio

  3. Twilio envoie l’appel vers l’URI SIP OpenAI via Session Initiation Protocol

  4. L’appel atteint le point de terminaison SIP OpenAI et déclenche une requête vers votre webhook ; votre application reçoit la requête et répond avec des instructions (voix, comportement, outils) pour l’agent

  5. Optionnel : votre application peut établir une connexion websocket avec l’API Realtime OpenAI pour recevoir les événements d’appel

Étape 1 — Créer un webhook (ngrok)

1. Installez le CLI ngrok et connectez votre compte, en suivant les instructions pour votre système d’exploitation. Ci-dessous, les instructions pour macOS :

1
2
brew install ngrok
ngrok config add-authtoken $YOUR_TOKEN

2. Exécutez la commande suivnte pour obtenir le webhook. Cette commande connecte votre port local 8000 au webhook, permettant à votre application de communiquer avec l’API Realtime OpenAI.

1
ngrok http 8000

Notez l’URL de redirection (ex. https://<random>.ngrok.io) — vous la collerez dans la console OpenAI.

Étape 2 — Configurer le webhook dans la console OpenAI et obtenir l’URI SIP

Figure : Configuration OpenAI Webhook
  • Dans la console OpenAI (https://platform.openai.com/), sous Paramètres du projet → Realtime (SIP), ajoutez votre URL de webhook générée précédemment.

  • Choisissez le type d’événement realtime.call.incoming (déclenché lorsqu’un appel SIP atteint votre projet).

  • Une fois enregistré, copiez le secret de signature et enregistrez-le dans votre fichier .env avec votre clé API OpenAI.

  • Clonez le dépôt Python de démonstration sur GitHub, mettez à jour le fichier .env, puis exécutez l’application :

1
python handle_webhook.py

Étape 3 — (Optionnel) Test direct d’un appel vers OpenAI via SIP

Avant de connecter Twilio, vous pouvez appeler l’URI SIP OpenAI depuis un softphone pour valider que votre webhook fonctionne et que l’agent répond.

Exemple avec pjsua (terminal softphone) :

1
2
3
4
pjsua \
  --id="sip:test@voipnuggets.com" \
  --use-tls \
  "sip:<YOUR_OPENAI_PROJECT_SIP_ID>@sip.api.openai.com;transport=tls"
  • L’identifiant peut être n’importe quel URI SIP valide, il n’est pas vérifié par OpenAI.

  • L’URI de destination doit utiliser votre OpenAI Project SIP ID (format proj_…). Vous le trouvez sous Projects → Paramètres.

  • Pour installer pjsua sur macOS :

1
brew install pjproject

Étape 4 — Test de bout en bout du webhook

Avec l’application Python et ngrok en cours d’exécution :

  1. Passez l’appel pjsua décrit ci-dessus.

  2. Observez les logs de l’application : à la première sonnerie, OpenAI enverra un événement POST realtime.call.incoming vers votre webhook.

  3. Votre réponse JSON définit la voix et les instructions de l’agent, qui devrait vous saluer en moins d’une seconde.

Étape 5 — Créer un Twilio Elastic SIP Trunk

  1. Dans Twilio Console → Elastic SIP Trunking, créez un nouveau trunk (ex. openai-realtime-trunk).

Origination (de Twilio → OpenAI) :

ORIGINATION URI

PRIORITÉ

POIDS

ACTIVÉ

sip:proj_123@sip.api.openai.com;transport=tls

10

10

✔

Étape 6 — Attacher un numéro de téléphone et router les appels vers le trunk

  • Dans Twilio Console → Numéros de téléphone, achetez ou sélectionnez un numéro, et définissez le routage vocal vers Elastic SIP Trunking → votre trunk.

  • Vous pouvez également attacher le numéro au trunk sous l’onglet Numbers de Elastic SIP Trunking.

  • Passez un appel vers ce numéro — Twilio le transmettra à OpenAI via SIP.

cdxtelecom-logo-100-white

CDX Telecom est l'opérateur télécom du Groupe Hanlong Arialink, dédié aux entreprises PME, Hôtelerie etc. Expert des télécoms, de système vidéo-protection, CDX est né de la volonté de construire une relation client basée sur le service digital et personnalisé.

Cloud Infrastructure

Cyber Sécurité

©Tous droits réservés CDX Telecom 2021   |  Mentions légales  |  Conditions générales  |  Blog