Dialpad Skill
Send SMS and make voice calls via the Dialpad API.
When to Use
Use this skill to:
- Send SMS messages (individual or batch)
- Make voice calls (with TTS or custom voices)
- Manage contacts and organization settings
- Query SMS history from local SQLite database
Available Phone Numbers
| Number | Purpose | Format |
|---|---|---|
| (415) 520-1316 | Sales Team | Default for sales context |
| (415) 360-2954 | Work/Personal | Default for work context |
| (415) 991-7155 | Support SMS Only | SMS only (no voice) |
Quick Start
Auth preflight (run first):
generated/dialpad --api-key "$DIALPAD_API_KEY" company company.get >/dev/null
Send SMS (explicit sender recommended):
bin/send_sms.py --to "+14155551234" --from "+14155201316" --message "Hello from OpenClaw!"
Group Intro (mirrored fallback):
bin/send_group_intro.py --prospect "+14155550111" --reference "+14155559999" --confirm-share --from "+14153602954"
Make Call (TTS):
bin/make_call.py --to "+14155551234" --text "This is a call from the agent."
Create Contact:
bin/create_contact.py --first-name "Jane" --last-name "Doe" --phone "+14155550123" --email "jane@example.com"
Update Contact:
bin/update_contact.py --id "contact_123" --phone "+14155550123" --job-title "VP"
Check SMS History:
python3 scripts/sms_sqlite.py list
Key Rules
- Format: Always use E.164 format for numbers (e.g.,
+14155551234). - Escaping: Use single quotes for messages containing
$to prevent shell expansion (e.g.,'Price is $10'). - Auth canonical source:
DIALPAD_API_KEYis canonical.DIALPAD_TOKENis optional/derived.- Recommended:
export DIALPAD_TOKEN="${DIALPAD_TOKEN:-$DIALPAD_API_KEY}"
- Recommended:
- Execution modes:
bin/*.pywrappers: preferred for routine operations (auto auth bridging + safer UX)generated/dialpad: advanced/direct API control; always pass--api-key(or setDIALPAD_TOKEN)
- SMS sender safety:
--fromand--profile work|salesare supported. Prefer explicit--fromfor deterministic routing.--profilemaps to configured env vars:- work:
DIALPAD_PROFILE_WORK_FROM - sales:
DIALPAD_PROFILE_SALES_FROM
- work:
- default fallback order:
DIALPAD_DEFAULT_FROM_NUMBER, thenDIALPAD_DEFAULT_PROFILE --allow-profile-mismatchpermits explicit/profile mismatches when intentional--dry-runprints sender resolution and request intent without API call
- Group intro:
bin/send_group_intro.pymirrors intro messages as two one-to-one SMS sends (mirrored_fallback) because true group threads are unsupported via this wrapper. - Create/Update Contact Behavior:
bin/create_contact.pyupserts shared/local contacts by phone/email match (or forces create with--allow-duplicate).bin/update_contact.pyupdates by--idwith partial fields.
Reference Documentation
references/api-reference.md— API endpoints, Generated CLI usage, Webhooksreferences/sms-storage.md— SQLite commands, FTS5 search, legacy storagereferences/voice-options.md— List of available TTS voices (Budget & Premium)references/architecture.md— System architecture, wrappers, and CLI generation
Setup
Required environment variable:
export DIALPAD_API_KEY="your_key"
Recommended auth bridge for direct generated CLI usage:
export DIALPAD_TOKEN="${DIALPAD_TOKEN:-$DIALPAD_API_KEY}"
Optional:
export ELEVENLABS_API_KEY="your_key"
export DIALPAD_USER_MAP='{"+14153602954": "5765607478525952"}'
export DIALPAD_PROFILE_WORK_FROM="+14153602954"
export DIALPAD_PROFILE_SALES_FROM="+14155201316"
export DIALPAD_DEFAULT_PROFILE="work"
export DIALPAD_DEFAULT_FROM_NUMBER="+14155201316"
