Give your OpenClaw bot a phone number.
Voice calling and SMS messaging for Clawdbot. Talk to your bot by phone or exchange texts. Powered by Telnyx.
- Approval requests: Voice callers can request bot approval for actions that require confirmation
- Missions: Configure AI-powered outbound call campaigns for automated outreach
- Call control ID logging: Track individual call legs with unique control IDs for better debugging
See CHANGELOG.md for the full release history.
Phone → Telnyx (STT) → ClawdTalk Server → WebSocket → OpenClaw Gateway → Agent → TTS → Phone
│ │
└── Speech-to-text └── Routes to /v1/chat/completions
│ │
└── Text-to-speech └── Bot processes like any message
- Voice calls: Real-time conversations with your bot via phone
- SMS messaging: Send and receive text messages
- Tool integration: Your bot's full capabilities, accessible by voice
- Approval requests: Get caller confirmation for sensitive actions
- Missions: Run AI-driven outbound call campaigns
- Call control IDs: Debug calls with unique leg identifiers
To update to the latest version, run:
./update.shOr just ask your bot to update by pasting the repo URL:
Update clawdtalk to the latest version: https://github.com/team-telnyx/clawdtalk-client
The update script pulls the latest changes and restarts the connection if needed.
- Clawdbot or OpenClaw with gateway running
- Node.js, bash, jq
- ClawdTalk account (clawdtalk.com)
# Clone or download to your skills directory
cd ~/clawd/skills/clawdtalk-client
# Run setup
./setup.sh
# Start the WebSocket connection
./scripts/connect.sh startThe setup script will ask for your API key, configure gateway connection details and tools policy, and create skill-config.json.
Start the connection, then call your ClawdTalk number:
./scripts/connect.sh start # Start (run in background or via cron)
./scripts/connect.sh stop # Stop
./scripts/connect.sh status # Check status
./scripts/connect.sh restart # RestartKeep it running via crontab:
Note: This keeps a persistent WebSocket connection to clawdtalk.com. Voice transcripts are transmitted in real-time when calls are active.
# Add to crontab (crontab -e):
@reboot cd ~/clawd/skills/clawdtalk-client && ./scripts/connect.sh startHave the bot call you:
./scripts/call.sh # Call with default greeting
./scripts/call.sh "Hey, what's up?" # Custom greeting
./scripts/call.sh status <call_id> # Check status
./scripts/call.sh end <call_id> # End call./scripts/sms.sh send +15551234567 "Hello from ClawdTalk!"
./scripts/sms.sh send +15551234567 "With image" --media https://example.com/photo.jpg
./scripts/sms.sh list
./scripts/sms.sh list --contact +15551234567
./scripts/sms.sh conversationsskill-config.json:
{
"api_key": "cc_live_xxx",
"server": "https://clawdtalk.com"
}| Option | Description |
|---|---|
api_key |
Your API key from clawdtalk.com |
server |
ClawdTalk server URL (default: https://clawdtalk.com) |
Instead of storing credentials in plaintext, use ${ENV_VAR} references:
{
"api_key": "${CLAWDTALK_API_KEY}",
"server": "https://clawdtalk.com"
}Set the variable in one of these locations (checked in order):
~/.openclaw/.env~/.clawdbot/.env<skill-dir>/.env
Example .env file:
CLAWDTALK_API_KEY=cc_live_xxxThe gateway auth token in openclaw.json/clawdbot.json also supports this:
{
"gateway": {
"auth": {
"token": "${GATEWAY_TOKEN}"
}
}
}The voice assistant uses sessions_send to proxy questions to your Clawdbot. You must allow it on the gateway's /tools/invoke endpoint:
{
"gateway": {
"tools": {
"allow": ["sessions_send"]
}
}
}Without this, the voice assistant will handle calls on its own but won't be able to forward questions to your bot (you'll see sessions_send failed: 404 in the logs).
Run ./scripts/connect.sh status to check if this is configured correctly.
Voice: Phone calls connect via Telnyx to the ClawdTalk server. The WebSocket client (ws-client.js) routes transcribed speech to your gateway's /v1/chat/completions endpoint. Your bot processes it like any other message with the same tools and context. The response is converted to speech and played back.
SMS: Messages route through the ClawdTalk API. Inbound messages can trigger your bot via webhooks.
| Issue | Fix |
|---|---|
| Auth failed | Regenerate API key at clawdtalk.com |
| Empty responses | Run ./setup.sh, then clawdbot gateway restart |
sessions_send failed: 404 |
Add sessions_send to gateway.tools.allow in your OpenClaw config (see Gateway Tools above) |
| Connection drops | Check tail -f .connect.log for errors |
| Debug mode | DEBUG=1 ./scripts/connect.sh restart |
MIT