saas-telephony
SaaS Telephony
Make voice calls and send text messages through the ThinkFleetBot SaaS API.
Check If Telephony Is Enabled
# Check agent's telephony status
curl -s "$SAAS_API_URL/api/agents/me/telephony" \
-H "Authorization: Bearer $SAAS_API_KEY" | jq '{enabled: .enabled, phone_number: .phone_number, capabilities: .capabilities}'
If enabled: false, telephony is not configured for this agent. Do not attempt calls or messages.
Send SMS
curl -s -X POST "$SAAS_API_URL/api/messaging/sms" \
-H "Authorization: Bearer $SAAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+15551234567",
"body": "Your order has been shipped!"
}' | jq .
Send MMS (with media)
curl -s -X POST "$SAAS_API_URL/api/messaging/mms" \
-H "Authorization: Bearer $SAAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+15551234567",
"body": "Here is your receipt",
"media_url": "https://example.com/receipt.pdf"
}' | jq .
Initiate Voice Call
curl -s -X POST "$SAAS_API_URL/api/messaging/voice" \
-H "Authorization: Bearer $SAAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+15551234567",
"prompt": "Hello, this is a reminder about your appointment tomorrow at 3pm. Press 1 to confirm or 2 to reschedule."
}' | jq .
Check Message/Call Status
# Check SMS status
curl -s "$SAAS_API_URL/api/messaging/sms/{MESSAGE_ID}" \
-H "Authorization: Bearer $SAAS_API_KEY" | jq '{status, delivered_at, error}'
# Check call status
curl -s "$SAAS_API_URL/api/messaging/voice/{CALL_ID}" \
-H "Authorization: Bearer $SAAS_API_KEY" | jq '{status, duration, recording_url}'
List Recent Messages
curl -s "$SAAS_API_URL/api/messaging/history?limit=20" \
-H "Authorization: Bearer $SAAS_API_KEY" | jq '.data[] | {id, type, to, status, created_at}'
Notes
- Always check if telephony is enabled before attempting to send messages or make calls.
- Confirm the recipient phone number with the user before sending.
- Phone numbers must be in E.164 format:
+1XXXXXXXXXX. - Voice calls use the
promptfield to define what the AI says. Keep prompts conversational and clear. - Message delivery is async — check status after sending if confirmation is needed.
- Rate limits apply. Don't send bulk messages without checking the plan's limits.
- Never log or store phone numbers in plain text outside the SaaS platform.
More from thinkfleetai/thinkfleet-engine
local-whisper
Local speech-to-text using OpenAI Whisper. Runs fully offline after model download. High quality transcription with multiple model sizes.
149flyio-cli-public
Use the Fly.io flyctl CLI for deploying and operating apps on Fly.io: deploys (local or remote builder), viewing status/logs, SSH/console, secrets/config, scaling, machines, volumes, and Fly Postgres (create/attach/manage databases). Use when asked to deploy to Fly.io, debug fly deploy/build/runtime failures, set up GitHub Actions deploys/previews, or safely manage Fly apps and Postgres.
25kagi-search
Web search using Kagi Search API. Use when you need to search the web for current information, facts, or references. Requires KAGI_API_KEY in the environment.
22feishu-bridge
Connect a Feishu (Lark) bot to ThinkFleet via WebSocket long-connection. No public server, domain, or ngrok required. Use when setting up Feishu/Lark as a messaging channel, troubleshooting the Feishu bridge, or managing the bridge service (start/stop/logs). Covers bot creation on Feishu Open Platform, credential setup, bridge startup, macOS launchd auto-restart, and group chat behavior tuning.
13video-subtitles
Generate SRT subtitles from video/audio with translation support. Transcribes Hebrew (ivrit.ai) and English (whisper), translates between languages, burns subtitles into video. Use for creating captions, transcripts, or hardcoded subtitles for WhatsApp/social media.
11bambu-local
Control Bambu Lab 3D printers locally via MQTT (no cloud). Supports A1, A1 Mini, P1P, P1S, X1C.
10