Découvrez la FTTO (Fiber To The Office), une solution fibre optique dédiée aux entreprises
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.
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.
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
L’appelant compose un numéro de téléphone
L’appel entrant atteint votre numéro Twilio
Twilio envoie l’appel vers l’URI SIP OpenAI via Session Initiation Protocol
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
Optionnel : votre application peut établir une connexion websocket avec l’API Realtime OpenAI pour recevoir les événements d’appel
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.
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 |
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 |
Avec l’application Python et ngrok en cours d’exécution :
Passez l’appel pjsua décrit ci-dessus.
Observez les logs de l’application : à la première sonnerie, OpenAI enverra un événement POST realtime.call.incoming
vers votre webhook.
Votre réponse JSON définit la voix et les instructions de l’agent, qui devrait vous saluer en moins d’une seconde.
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 | ✔ |
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.
©Tous droits réservés CDX Telecom 2021 | Mentions légales | Conditions générales | Blog