Skip to content

Telephony

Iron runs its own telephony engine (apps/telephony) on Telnyx. It handles SMS send and inbound, the voice / dialer pipeline, call recording → transcription → AI summary → call intelligence, and DNC. It is served at your-domain.example and writes the shared crm schema directly.

  • SMS — outbound POST /sms/send (shared-secret auth, DNC + from-number checked); inbound via the messaging-profile webhook (a STOP reply lands the number in the DNC list).
  • Voice — the call-control webhook drives call.initiated / answered / hangup / recording.saved through the voice pipeline.
  • Dialer — a browser WebRTC backend powers the in-CRM dialer. A mobile tap-to-call bridge (POST /calls/bridge) places a two-leg rep ↔ contact call for the mobile app.

One call enriches one crm.activities row in place across its lifecycle: hangup → recording → transcript (local Whisper) → AI summary → call-intel score → disposition. It also writes a crm.calls row. Dialer calls render inline in the contact’s conversation thread with their duration, disposition, and AI summary.

An inbound voice receptionist (Retell-backed) is live. It speaks a shared voice + SMS tool contract (end call, escalate, transfer, take message, book / reschedule / cancel an appointment). Outbound voice (for appointment confirmations and reminders) is built but gated off by default.

Provisioning a new client DID is a recipe: buy the number, register A2P (10DLC), attach the messaging and voice profiles, record it in crm.numbers, wire it into the tenant, and set the lead-alert config. A fresh DID can take minutes to hours before it can text real carriers (10DLC propagation) but can text Telnyx numbers immediately.