Voice Call (plugin)
Voice calls for Moltbot via a plugin. Supports outbound notifications and multi-turn conversations with inbound policies. Current providers:twilio(Programmable Voice + Media Streams)telnyx(Call Control v2)plivo(Voice API + XML transfer + GetInput speech)mock(dev/no network)
- Install plugin
- Restart Gateway
- Configure under
plugins.entries.voice-call.config - Use
moltbot voicecall ...or thevoice_calltool
Where it runs (local vs remote)
The Voice Call plugin runs inside the Gateway process. If you use a remote Gateway, install/configure the plugin on the machine running the Gateway, then restart the Gateway to load it.Install
Option A: install from npm (recommended)
Option B: install from a local folder (dev, no copying)
Config
Set config underplugins.entries.voice-call.config:
- Twilio/Telnyx require a publicly reachable webhook URL.
- Plivo requires a publicly reachable webhook URL.
mockis a local dev provider (no network calls).skipSignatureVerificationis for local testing only.- If you use ngrok free tier, set
publicUrlto the exact ngrok URL; signature verification is always enforced. tunnel.allowNgrokFreeTierLoopbackBypass: trueallows Twilio webhooks with invalid signatures only whentunnel.provider="ngrok"andserve.bindis loopback (ngrok local agent). Use for local dev only.- Ngrok free tier URLs can change or add interstitial behavior; if
publicUrldrifts, Twilio signatures will fail. For production, prefer a stable domain or Tailscale funnel.
TTS for calls
Voice Call uses the coremessages.tts configuration (OpenAI or ElevenLabs) for
streaming speech on calls. You can override it under the plugin config with the
same shape — it deep‑merges with messages.tts.
- Edge TTS is ignored for voice calls (telephony audio needs PCM; Edge output is unreliable).
- Core TTS is used when Twilio media streaming is enabled; otherwise calls fall back to provider native voices.
More examples
Use core TTS only (no override):Inbound calls
Inbound policy defaults todisabled. To enable inbound calls, set:
responseModelresponseSystemPromptresponseTimeoutMs
CLI
Agent tool
Tool name:voice_call
Actions:
initiate_call(message, to?, mode?)continue_call(callId, message)speak_to_user(callId, message)end_call(callId)get_status(callId)
skills/voice-call/SKILL.md.
Gateway RPC
voicecall.initiate(to?,message,mode?)voicecall.continue(callId,message)voicecall.speak(callId,message)voicecall.end(callId)voicecall.status(callId)