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

Oct 13, 2025 @ 10:03
Intégration de l’API OpenAI & Twilio avec les appels via SIP

L’API OpenAI Realtime est un modèle de langage speech-to-speech conçu pour des conversations naturelles et en temps réel. Contrairement aux systèmes classiques qui nécessitent des pipelines séparés de speech-to-text (STT) et text-to-speech (TTS), cette API interagit directement avec l’audio des appelants. Ainsi, vous obtenez des réponses plus rapides, une latence réduite et un dialogue plus fluide, proche des conversations humaines au téléphone.

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 :

  • Un compte OpenAI avec accès à l’API Realtime et support SIP

  • Un compte Twilio avec Elastic SIP Trunking activé

  • Un compte ngrok pour créer un tunnel HTTPS public vers votre webhook local

  • Un softphone SIP pour tester les appels pendant le développement

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.

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

    Contactez nous


      Contactez nous


      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é.

      À propos

      Cloud Infrastructure

      Cyber Sécurité

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