✓ Verified 💻 Development ✓ Enhanced Data

Telnyx Voice Sip

Voice interface using Telnyx Call Control API.

Rating
4.1 (126 reviews)
Downloads
674 downloads
Version
1.0.0

Overview

Voice interface using Telnyx Call Control API.

Key Features

1

Low-latency — 500ms-1.5s response time with enable_thinking: false

2

Barge-in — Interrupt the assistant anytime by speaking

3

Function calling — Native tool support with Qwen

4

Auto-setup — Cloudflare tunnel and Call Control app created automatically

5

Personalization — Reads IDENTITY.md and USER.md for context

Complete Documentation

View Source →

SIP Voice Call Control

Voice interface for OpenClaw using Telnyx Call Control API. Call via SIP and have natural conversations with your AI assistant.

How It Works

text
Your Phone (SIP) → Telnyx Call Control → Webhooks → This Server → Commands back
                         ↓                              ↓
                    STT/TTS/Media              LLM + Tool Execution

This is not WebRTC — it's server-side SIP call handling. Telnyx handles all audio; we just receive webhooks and send commands.

Setup

1. Install Dependencies

bash
cd skills/sip-voice-call-control
npm install

2. Configure

bash
cp .env.example .env

Edit .env:

env
TELNYX_API_KEY=KEY_your_api_key_here

3. Start Server

bash
npm run start

Console shows:

text
🎙️  Assistant Voice Server ready on port 3000
📞 Dial: sip:[email protected]

Agent Setup Flow

When setting up for a user, agents should:

1. Collect Configuration

Ask for:

  • Telnyx API Key (required)
  • Get from: https://portal.telnyx.com/#/app/auth/v2
  • Needs Voice API + Inference permissions
  • TTS Voice (optional)
  • Telnyx.NaturalHD.astra — Female, warm and clear (default, recommended)
  • Telnyx.NaturalHD.atlas — Male, deep and authoritative
  • Polly.Amy-Neural — British female
  • Polly.Brian-Neural — British male
  • Polly.Joanna-Neural — American female
  • Polly.Matthew-Neural — American male
  • Azure.en-US-JennyNeural — American female
  • Azure.en-GB-RyanNeural — British male
  • See .env.example for full list
  • Voice Model (optional)
  • Qwen/Qwen3-235B-A22B — Best for function calling (default)
  • meta-llama/Meta-Llama-3.1-8B-Instruct — Fastest
  • meta-llama/Llama-3.3-70B-Instruct — Balanced
Personalization (assistant name, user name, timezone) is pulled automatically from workspace files (IDENTITY.md, USER.md).

2. Write .env File

bash
cat > .env << 'EOF'
TELNYX_API_KEY=<user_api_key>
VOICE_MODEL=Qwen/Qwen3-235B-A22B
TTS_VOICE=Telnyx.NaturalHD.astra
EOF

3. Start in Background (Persistent)

The server must run persistently to receive calls. Use nohup to keep it alive:

bash
cd /path/to/sip-voice-call-control
nohup npm run start > sip-voice-call-control.log 2>&1 &

Or from an agent:

typescript
// Use nohup to keep process alive after session ends
exec({ 
  command: "cd /path/to/sip-voice-call-control && nohup npm run start > sip-voice-call-control.log 2>&1 &",
  background: true 
})

Important: Without nohup, the process will die when the parent session ends. Always use nohup or a process manager for production.

To check if running:

bash
ps aux | grep "tsx.*dev" | grep -v grep

To stop:

bash
pkill -f "tsx.*dev.ts"

To view logs:

bash
tail -f /path/to/sip-voice-call-control/sip-voice-call-control.log

4. Extract SIP Address

Poll the process logs and give the user the SIP dial-in:

text
📞 Dial: sip:openclaw@<connection>.sip.telnyx.com

Environment Variables

VariableRequiredDefaultDescription
TELNYX_API_KEYYesTelnyx API key
VOICE_MODELNoQwen/Qwen3-235B-A22BModel for inference
TTS_VOICENoPolly.Amy-NeuralText-to-speech voice
PORTNo3000Server port
ENABLE_TUNNELNotrueCreate Cloudflare tunnel
WORKSPACE_DIRNo~/clawdFor memory search tool

Available Tools

ToolTrigger PhrasesWhat It Does
list_cron_jobs"what reminders", "my schedule", "cron jobs"Lists scheduled tasks
add_reminder"remind me", "set a reminder"Creates new reminder
remove_cron_job"delete", "cancel" + job nameRemoves a scheduled task
get_weather"weather", "temperature", "forecast"Gets current weather
search_memory"what have we been working on", "projects"Searches workspace files

Features

  • Low-latency — 500ms-1.5s response time with enable_thinking: false
  • Barge-in — Interrupt the assistant anytime by speaking
  • Function calling — Native tool support with Qwen
  • Auto-setup — Cloudflare tunnel and Call Control app created automatically
  • Personalization — Reads IDENTITY.md and USER.md for context

Troubleshooting

No response after speaking:

  • Check Telnyx API key has Voice API + Inference permissions
  • Verify webhook URL is reachable (tunnel must be active)
Slow responses (>3s):
  • Ensure using function-calling branch (not main)
  • Check model availability on your Telnyx account
Tool not executing:
  • Ensure openclaw CLI is in PATH
  • Check WORKSPACE_DIR is set correctly
Port already in use:
  • Kill existing server: pkill -f "tsx.*dev.ts"
  • Or change PORT in .env

Resources

  • Telnyx Call Control: https://developers.telnyx.com/docs/voice/call-control
  • Telnyx Inference: https://developers.telnyx.com/docs/inference
  • See ARCHITECTURE.md for technical details

Installation

Terminal bash

openclaw install telnyx-voice-sip
    
Copied!

💻Code Examples

STT/TTS/Media LLM + Tool Execution

-sttttsmedia-llm--tool-execution.txt
This is **not WebRTC** — it's server-side SIP call handling. Telnyx handles all audio; we just receive webhooks and send commands.

## Setup

### 1. Install Dependencies

📞 Dial: sip:[email protected]

-dial-sipopenclawyourconnectionsiptelnyxcom.txt
## Agent Setup Flow

When setting up for a user, agents should:

### 1. Collect Configuration

Ask for:

1. **Telnyx API Key** (required)
   - Get from: https://portal.telnyx.com/#/app/auth/v2
   - Needs Voice API + Inference permissions

2. **TTS Voice** (optional)
   - `Telnyx.NaturalHD.astra` — Female, warm and clear **(default, recommended)**
   - `Telnyx.NaturalHD.atlas` — Male, deep and authoritative
   - `Polly.Amy-Neural` — British female
   - `Polly.Brian-Neural` — British male
   - `Polly.Joanna-Neural` — American female
   - `Polly.Matthew-Neural` — American male
   - `Azure.en-US-JennyNeural` — American female
   - `Azure.en-GB-RyanNeural` — British male
   - See `.env.example` for full list

3. **Voice Model** (optional)
   - `Qwen/Qwen3-235B-A22B` — Best for function calling (default)
   - `meta-llama/Meta-Llama-3.1-8B-Instruct` — Fastest
   - `meta-llama/Llama-3.3-70B-Instruct` — Balanced

Personalization (assistant name, user name, timezone) is pulled automatically from workspace files (`IDENTITY.md`, `USER.md`).

### 2. Write .env File

EOF

eof.txt
### 3. Start in Background (Persistent)

The server must run persistently to receive calls. Use `nohup` to keep it alive:

})

.txt
**Important:** Without `nohup`, the process will die when the parent session ends. Always use `nohup` or a process manager for production.

To check if running:

tail -f /path/to/sip-voice-call-control/sip-voice-call-control.log

tail--f-pathtosip-voice-call-controlsip-voice-call-controllog.txt
### 4. Extract SIP Address

Poll the process logs and give the user the SIP dial-in:
example.txt
Your Phone (SIP) → Telnyx Call Control → Webhooks → This Server → Commands back
                         ↓                              ↓
                    STT/TTS/Media              LLM + Tool Execution
example.sh
cat > .env << 'EOF'
TELNYX_API_KEY=<user_api_key>
VOICE_MODEL=Qwen/Qwen3-235B-A22B
TTS_VOICE=Telnyx.NaturalHD.astra
EOF
example.ts
// Use nohup to keep process alive after session ends
exec({ 
  command: "cd /path/to/sip-voice-call-control && nohup npm run start > sip-voice-call-control.log 2>&1 &",
  background: true 
})

Tags

#cli_utilities #api

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author teamtelnyx
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install telnyx-voice-sip