- What is this?
I want to share with the community how I’m building a Minimum Viable Product (MVP) to enable calls from Asterisk FreePBX to OpenAI Realtime models with the lowest possible latency. This will be an easy-to-configure and ready-to-use solution.
OpenAI Realtime Reference:
https://platform.openai.com/docs/guides/realtime
- How to reach the goal and what is it?
I believe the most user-friendly experience will come from using FreePBX, which provides easy access to features like extensions, trunks, reports, and IVRs. My plan is to build a FreePBX module that includes:
- An ARI ExternalMedia App
- OpenAI APIs integration
- A Control Panel in FreePBX
The Goal:
Enable users to call extension 3000, where an OpenAI Realtime model answers with its voice. The model will listen to your commands, understand them, and respond appropriately with low latency.
- Why?
- To demonstrate how an Asterisk ARI app can integrate with OpenAI’s Realtime provider.
- To create a foundational project for integrating other AI providers (e.g., Grok 3 Voice) into a single app.
- To meet new customers who need ARI customizations and professional services.
- Who am I?
I’m a Cloud Architect with 15 years of experience working with servers, networks, cloud, and AI. I’ve leveraged AI tools to complete other ARI (Asterisk REST Interface) implementations with AI bots, such as Google DialogFlow and AWS Bedrock. This project is an exciting challenge for me, and I’d love to share it with the community.
- Requirements
- OpenAI API keys and credits, with access to Realtime models.
- FreePBX installed.
- Outcomes/Roadmap
- Enable seamless, low-latency communication with OpenAI Realtime models via Asterisk.
- Develop a FreePBX Addon.
- Build an ARI app using ExternalMedia.
- Prepare the solution for scalability.
- Tested On
- Debian 12 with FreePBX 17
- To-Do List
8.1. Research OpenAI Realtime capabilities and requirements. In Progress - Done
8.2. Build a backend Node.js app replicating the OpenAI Realtime Playground to validate all required steps. In Progress - Done
It works!. I can send and receive voice in streaming using OpenAI websockets. Here are the mini-apps that help me test everything:
8.3. Extract all necessary fields for implementation. In Progress
8.4. Build the first ARI app version 0.1.
8.5. Test and debug.
8.6. Create the FreePBX Module. In Progress
8.7. Test and debug.
8.8. Build the second ARI app version 0.2.
8.9. Test and debug.
8.10. Integrate the most popular requested features.
- What can you do?
- Subscribe to this post for updates until the MVP is complete.
- Help me test it and report bugs or issues to the GitHub repo once it’s ready.
- Suggest functionalities! I’ll prioritize the most relevant ones for future versions.