FTB dialer: fill in IVR sequence + Twilio credentials to go live #1

Open
opened 2026-03-31 18:35:13 -07:00 by pyr0ball · 0 comments
Owner

Context

Bootstrapping the Osprey government hold-line dialer using the FTB (Franchise Tax Board) as the first real-world test case.

The webhook service and dialer script are built and deployed:

  • Webhook endpoint: https://circuitforge.tech/webhooks/twilio/
  • Service runs on Heimdall, port 8520
  • Caddy route already added
  • Source: /Library/Development/CircuitForge/osprey/

Blocked on

OSPREY_IVR_SEQUENCE — the DTMF key sequence to navigate the FTB IVR tree (800-852-5711) to reach a live agent.

Format: comma-separated digits where each comma = 0.5s pause.
Example: "1,,,2,,,0" = press 1, wait 1.5s, press 2, wait 1.5s, press 0.

Set in /Library/Development/CircuitForge/osprey/.env as OSPREY_IVR_SEQUENCE=...

To complete setup

  1. Sign up for Twilio at console.twilio.com
  2. Get Account SID + Auth Token
  3. Buy a phone number (~$1/mo)
  4. Fill out /Library/Development/CircuitForge/osprey/.env from .env.example
  5. Set OSPREY_IVR_SEQUENCE to the FTB key sequence
  6. Start webhook server on Heimdall: conda run -n cf uvicorn api.main:app --host 0.0.0.0 --port 8520 --app-dir /Library/Development/CircuitForge/osprey
  7. Run dialer: conda run -n cf python -m app.dialers.ftb

Files

  • api/webhooks/twilio.py -- TwiML handlers (navigate IVR, status callback, bridge)
  • app/dialers/ftb.py -- retry loop dialer script
  • .env.example -- all required env vars documented
## Context Bootstrapping the Osprey government hold-line dialer using the FTB (Franchise Tax Board) as the first real-world test case. The webhook service and dialer script are built and deployed: - Webhook endpoint: `https://circuitforge.tech/webhooks/twilio/` - Service runs on Heimdall, port 8520 - Caddy route already added - Source: `/Library/Development/CircuitForge/osprey/` ## Blocked on `OSPREY_IVR_SEQUENCE` — the DTMF key sequence to navigate the FTB IVR tree (800-852-5711) to reach a live agent. Format: comma-separated digits where each comma = 0.5s pause. Example: `"1,,,2,,,0"` = press 1, wait 1.5s, press 2, wait 1.5s, press 0. Set in `/Library/Development/CircuitForge/osprey/.env` as `OSPREY_IVR_SEQUENCE=...` ## To complete setup 1. Sign up for Twilio at console.twilio.com 2. Get Account SID + Auth Token 3. Buy a phone number (~$1/mo) 4. Fill out `/Library/Development/CircuitForge/osprey/.env` from `.env.example` 5. Set `OSPREY_IVR_SEQUENCE` to the FTB key sequence 6. Start webhook server on Heimdall: `conda run -n cf uvicorn api.main:app --host 0.0.0.0 --port 8520 --app-dir /Library/Development/CircuitForge/osprey` 7. Run dialer: `conda run -n cf python -m app.dialers.ftb` ## Files - `api/webhooks/twilio.py` -- TwiML handlers (navigate IVR, status callback, bridge) - `app/dialers/ftb.py` -- retry loop dialer script - `.env.example` -- all required env vars documented
pyr0ball added this to the Alpha — Pipeline milestone 2026-04-04 16:33:20 -07:00
Sign in to join this conversation.
No labels
backlog
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/osprey#1
No description provided.