feat: plugin system + voice-call

This commit is contained in:
Peter Steinberger
2026-01-12 01:16:39 +00:00
parent a6ea74f8e6
commit 2f4a248314
16 changed files with 614 additions and 58 deletions

View File

@@ -1,10 +1,23 @@
# Voice Call Plugin
# @clawdbot/voice-call
Twilio-backed outbound voice calls (with a log-only fallback for dev).
Official Voice Call plugin for **Clawdbot**.
- Provider: **Twilio** (real outbound calls)
- Dev fallback: `log` (no network)
Docs: `https://docs.clawd.bot/plugins/voice-call`
## Install (local dev)
Option 1: copy into your global extensions folder:
### Option A: install via Clawdbot (recommended)
```bash
clawdbot plugins install @clawdbot/voice-call
```
Restart the Gateway afterwards.
### Option B: copy into your global extensions folder (dev)
```bash
mkdir -p ~/.clawdbot/extensions
@@ -12,13 +25,13 @@ cp -R extensions/voice-call ~/.clawdbot/extensions/voice-call
cd ~/.clawdbot/extensions/voice-call && pnpm install
```
Option 2: add via config:
### Option C: add via config (custom path)
```json5
{
plugins: {
load: { paths: ["/absolute/path/to/extensions/voice-call"] },
entries: { "voice-call": { enabled: true } }
load: { paths: ["/absolute/path/to/voice-call/index.ts"] },
entries: { "voice-call": { enabled: true, config: { provider: "log" } } }
}
}
```

View File

@@ -67,6 +67,35 @@ const voiceCallConfigSchema = {
}
return { provider: "log" };
},
uiHints: {
provider: {
label: "Provider",
help: 'Use "twilio" for real calls or "log" for dev/no-network.',
},
"twilio.accountSid": {
label: "Twilio Account SID",
placeholder: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
},
"twilio.authToken": {
label: "Twilio Auth Token",
sensitive: true,
placeholder: "••••••••••••••••",
},
"twilio.from": {
label: "Twilio From (E.164)",
placeholder: "+15551234567",
},
"twilio.statusCallbackUrl": {
label: "Status Callback URL",
placeholder: "https://example.com/twilio-status",
advanced: true,
},
"twilio.twimlUrl": {
label: "TwiML URL",
placeholder: "https://example.com/twiml",
advanced: true,
},
},
};
const escapeXml = (input: string): string =>

View File

@@ -1,7 +1,6 @@
{
"name": "voice-call",
"version": "0.0.0",
"private": true,
"name": "@clawdbot/voice-call",
"version": "0.0.1",
"type": "module",
"description": "Clawdbot voice-call plugin (example)",
"dependencies": {