osmTalk Docs
Cookbook

IVR / Phone Tree

Press 1 for sales, 2 for support — but smarter.

A classic phone tree with two upgrades over old IVRs:

  • Keypad routes are instant — press 1, get transferred in ~500 ms. No "you have selected 1, please hold."
  • The fallback is an AI — anyone who says their request instead of pressing a key gets routed by the agent.

Goal

  • Press 1 → Sales (transferred to +91-sales-number)
  • Press 2 → Support (transferred to +91-support-number)
  • Press 3 → Billing AI agent (mid-call swap)
  • Speak naturally → AI routes based on what you said

Fast — Groq llama-3.3-70b + Deepgram nova-3. Routing decisions are simple; lowest latency = best caller experience.

System prompt

You are the front-desk receptionist at TechCo.

Greet the caller and read this menu briefly:
  "Welcome to TechCo. Press 1 for Sales, 2 for Support, 3 for Billing. Or just tell me how I can help."

If they speak instead of pressing:
- "I want to buy" / "pricing" / "demo" → use transfer_to_human with destination=Sales
- "broken" / "not working" / "issue with my X" → use transfer_to_human with destination=Support
- "invoice" / "refund" / "billing" / "payment" → use transfer_to_agent with agent_name="Billing"

If they're unclear, ask one clarifying question max, then route based on their answer.

If they keep being unclear after one question, just say "Let me get someone to help" and transfer to Sales (the catch-all human).

Be brief. One sentence per turn.

Welcome message

Welcome to TechCo. Press 1 for Sales, 2 for Support, 3 for Billing. Or just tell me how I can help.

Settings

SettingValue
Max call duration60 sec (this is a router, not a conversation)
Allow interruptionsOn
Enable DTMF (keypad)On
Enable end-call detectionOff (always transfers, never ends naturally)

Tools — keypad routes (DTMF)

Configure → Advanced → Keypad (DTMF) → On

Add three routes:

KeyLabelTypeDestinationSay before transfer
1SalesPhone+91-sales-number"Connecting you to Sales — please hold."
2SupportPhone+91-support-number"Connecting you to Support — please hold."
3BillingAgentBilling AI (workspace agent)"Transferring you to billing — one moment."

When the caller presses 1: the bot transfers in ~500 ms — no LLM involvement. When the caller presses 3: the call continues, but with a different AI agent (Billing).

Tools — Voice fallback (transfer_to_human)

For prospects who speak instead of press:

Configure → Actions → Call Transfer → Transfer to Human

FieldValue
Enabled
Destination+91-sales-number (the catch-all)
Trigger description"Transfer when the caller mentions buying, pricing, demos, sales, getting started, or wants to talk to sales."

Configure → Actions → Call Transfer → Transfer to Other Agents

AgentTrigger
Support AI"When caller mentions a broken product, error, can't login, technical issue, or anything that's not working."
Billing AI"When caller mentions invoices, payments, refunds, subscription changes, or billing."

Phone setup

Your inbound phone number → set inbound agent = this router agent.

How to test

What you doExpected behavior
Press 1~500 ms transfer to Sales
Press 2~500 ms transfer to Support
Press 3Bot speaks announce, then swaps to Billing AI
Say "I need help with my invoice"Routes to Billing AI (via voice cue)
Say "my login is broken"Routes to Support phone
Say "I'm confused"Asks one clarifying question, then catches-all to Sales

Typical cost

IVR calls are very short — ~10-30 seconds before transfer. Typical cost: ₹0.50 – ₹1 per call.

If you're at 1,000 calls/day routing through this, you're spending ₹500-1000 to save your team thousands of minutes of "press 1 if..." answering.

Common mistakes

MistakeFix
DTMF doesn't work on Twilio numbersCheck trunk DTMF mode is RFC 2833 (default for Plivo, may need to enable on Twilio)
Voice routing is wrongMake triggerDescription more specific. Use real caller phrases as examples in the prompt.
Bot says menu too slowlySwitch to Fast preset OR speed up TTS in Voice settings (1.1×)
Some callers press 0 expecting an operatorAdd 0 as a route in DTMF settings → Sales destination
Bot answers too verboselyAdd to prompt: "Maximum 12 words per response."

What's next