A reference integration between Teler and openai in Node, based on Media Streaming Bridge over WebSockets.
Teler is a programmable voice API by FreJun. It handles carriers, phone numbers, and real-time audio streaming so you can connect AI models directly to phone calls. → frejun.ai
-
Clone and configure:
git clone https://github.com/frejun-tech/teler-openai-node-bridge.git cd teler-openai-node-bridge cp .env.example .env # Edit .env with your actual values
-
Run with Docker:
docker compose up -d --build
| Variable | Description | Default |
|---|---|---|
OPENAI_WEBSOCKET_URL |
Your OpenAI Websocket URL | Required |
OPENAI_API_KEY |
Your OpenAI API KEY | Required |
OPENAI_SAMPLE_RATE |
Audio sample rate | 8k |
TELER_API_KEY |
Your Teler API key | Required |
NGROK_AUTHTOKEN |
Your ngrok auth token | Required |
GET /- Health check with server domainGET /health- Service statusGET /ngrok-status- Current ngrok status and URLPOST /api/v1/calls/initiate-call- Start a new call with dynamic phone numbersPOST /api/v1/calls/flow- Get call flow configurationWebSocket /media-stream- Audio streamingPOST /api/v1/webhooks/receiver- Teler webhook receiver
curl -X POST "https://your_ngrok_domain/api/v1/calls/initiate-call" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+918064xxx",
"to_number": "+919967xxx"
}'- Bi-directional media streaming - Bridges audio between Teler and openai (Voice API) over WebSockets.
- Real-time audio handling - Receives live audio chunks from Teler, processes them, and forwards to openai; streams responses back to Teler.
- Dockerized setup - Comes with Dockerfile and docker-compose.yaml for easy local development and deployment.
- Dynamic ngrok URL detection - Automatically detects current ngrok domain