Telethonk is a Home Assistant-native Twilio receptionist. It accepts signed inbound Twilio webhooks, handles a building buzzer workflow, exposes a persistent auto-unlock switch, and keeps a local interaction journal in an admin-only Home Assistant sidebar panel.
- UI configuration for Twilio credentials, the active DID, and the recognized buzzer caller number.
- A native
switch.telethonk_receptionist_auto_unlockentity that remains available in dashboards and the Home Assistant mobile app. - Automatic DTMF unlock or an optional Home Assistant script override.
- Speech gathering and actionable Accept/Deny mobile notifications.
- Configurable decision timeout followed by simultaneous call bridging to fallback phone numbers.
- General inbound-call fallback routing and inbound SMS events.
- An admin-only Receptionist sidebar panel with profile status and a retained transcript/action journal.
- Twilio signature validation using the exact externally configured webhook URL.
- In HACS, add
https://github.com/synthread/telethonkas a custom Integration repository. - Download Telethonk Receptionist and restart Home Assistant.
- Go to Settings > Devices & services > Add integration, search for Telethonk Receptionist, and enter your Twilio credentials and phone numbers.
- Open the integration's Configure dialog to set mobile notification recipients, fallback phone numbers, timeout, unlock digits or script, and retention.
- Copy the webhook URL shown on the Receptionist page to both the A call
comes in and A message comes in settings for the Twilio DID. Use
HTTP POST.
Home Assistant must have a correct externally reachable HTTPS URL. Twilio signs the complete public URL, so a mismatched internal URL, reverse-proxy URL, or query string causes the request to be rejected.
When the configured buzzer number calls:
- If auto-unlock is enabled, Telethonk immediately runs the configured unlock script or plays the configured DTMF digits into the call.
- Otherwise, Twilio asks who is at the door and sends the transcript to each configured Home Assistant mobile notification service.
- Accept unlocks and ends the live call. Deny refuses and ends it.
- If nobody responds before the configured timeout, Twilio rings all fallback phone numbers simultaneously and bridges the first answer.
Other inbound callers are bridged to the same fallback group immediately, providing a base for broader receptionist routing in future releases.
The optional script replaces Twilio DTMF and receives these variables:
call_sidinteraction_idfrom_numberto_numbertranscript
The integration waits for the Home Assistant script service call to complete before confirming access.
telethonk_interactionis fired whenever a new journal item is created.telethonk_inbound_smscontainsentry_id,interaction_id,from,to, andbody.telethonk_updatedindicates panel-visible state changed.
Transcripts and action history are stored only in Home Assistant's integration storage, bounded to 500 records and the configured retention window. Diagnostic downloads redact Twilio credentials, webhook IDs, phone numbers, call IDs, and transcripts. Auto-unlock defaults off on a new installation.
If Home Assistant is unavailable, Twilio cannot reach this integration. Keep a Twilio number-level fallback or recovery procedure appropriate to your household.
uv sync
uv run ruff check .
uv run pytestReleases attach telethonk.zip, containing the contents of
custom_components/telethonk/, for deterministic HACS installation.