Interactive Voice Response (IVR) menus allow callers to navigate options using their phone keypad. Hamsa makes it easy to build sophisticated IVR systems that combine traditional DTMF menu navigation with AI-powered conversation.
IVR (Interactive Voice Response) is a telephony technology that allows callers to interact with a phone system through voice or keypad input. In Hamsa, you can build IVR menus using:
Build a comprehensive support system:Level 1: Main Menu
Main Menu Node: Message: 'Welcome to Acme Support. Press 1 for Product Support. Press 2 for Billing Questions. Press 3 for Technical Support. Press 0 to speak with an operator.' Transitions: - DTMF: 1 → Product Support Menu - DTMF: 2 → Billing Menu - DTMF: 3 → Technical Support Menu - DTMF: 0 → Operator Transfer
Level 2: Product Support Sub-Menu
Product Support Menu: Message: "Product Support. Press 1 for Software Products. Press 2 for Hardware Products. Press 3 for Accessories. Press * to return to the main menu." Transitions: - DTMF: 1 → Software Support - DTMF: 2 → Hardware Support - DTMF: 3 → Accessories Support - DTMF: * → Main Menu
Level 3: Specific Product Support
Software Support Node: Message: "Software Support. Press 1 for installation help. Press 2 for licensing questions. Press 3 for troubleshooting. Press * to go back." Transitions: - DTMF: 1 → Installation Agent - DTMF: 2 → Licensing Agent - DTMF: 3 → Troubleshooting Agent - DTMF: * → Product Support Menu
Global Shortcuts:Press 0: Operator Transfer Type: Transfer Call Node Global: Yes DTMF Key: 0 Message: "Connecting you to an operator..."Press 9: Repeat Menu Type: Conversation Node Global: Yes DTMF Key: 9 Message: "Main menu: Press 1 for Sales, 2 for Support..."Press *: Go Back Type: Router Node Global: Yes DTMF Key: * Logic: Return to previous menu (context-aware)Press #: Main Menu Type: Conversation Node Global: Yes DTMF Key: # Message: "Returning to main menu..."
Start Node: Message: "Thank you for calling Acme Corporation."Router Node: Time Check Conditions: - {{current_weekday}} IN ["Saturday", "Sunday"] → Weekend Menu - {{current_time}} < "09:00" → After Hours Menu - {{current_time}} > "17:00" → After Hours Menu - Always → Business Hours MenuWeekend Menu: Message: "Our offices are closed on weekends. Press 1 to leave a message. Press 2 for emergency support. Press 3 to hear our business hours."Business Hours Menu: Message: "Press 1 for Sales. Press 2 for Support. Press 3 for Billing."
Language Selection Node: Message: 'Thank you for calling Acme Corporation. For English, press 1. Para Español, oprima el dos. Pour le Français, appuyez sur le trois.' Transitions: - DTMF: 1 → English Menu - DTMF: 2 → Spanish Menu - DTMF: 3 → French MenuEnglish Menu: Language: en-US Voice: aura-asteria-en Message: 'Welcome! How can I help you today?'Spanish Menu: Language: es-MX Voice: aura-sofia-es Message: 'Bienvenido! ¿Cómo puedo ayudarte hoy?'
Priority Menu: Message: "Thank you for calling. If this is an emergency, press 1 now. If you're a VIP member, press 2. For all other callers, press 3." Transitions: - DTMF: 1 → Emergency Transfer (Immediate) - DTMF: 2 → VIP Verification → VIP Queue - DTMF: 3 → Standard Menu
Queue Status Node: Message: 'All agents are currently busy. Your estimated wait time is {{estimated_wait}} minutes. Press 1 to hold. Press 2 to request a callback. Press 3 to leave a voicemail.' Transitions: - DTMF: 1 → Hold Music Node - DTMF: 2 → Callback Collection Flow - DTMF: 3 → Voicemail Node
"If you're interested in learning more about our products, speakingwith a sales representative, getting a quote, or discussing pricing,please press 1. If you're experiencing technical difficulties, needhelp with your account, want to report a problem, or have generalquestions about using our service, please press 2."
Why: Callers forget early options by the time you finish.
Limit Options Per Menu
Recommended: 3-5 options per menuMaximum: 7 optionsWhy:
Human working memory limit
Reduces cognitive load
Faster decision making
Lower abandonment rate
If you have 10+ options:
Break into sub-menus
Use conversational AI instead
Prioritize most common options
Order Options Strategically
Put most common options first:
"Press 1 for Customer Support (80% of calls)Press 2 for Sales (15% of calls)Press 3 for Billing (5% of calls)"
Consider priority:
"If this is an emergency, press 1.For all other calls, press 2."
Alphabetical can work:
"Press 1 for AccountingPress 2 for BillingPress 3 for Customer Service"
Menu Timing: Pause after greeting: 0.5 seconds Pause between options: 0.3 seconds Pause before repeat: 1.0 seconds Wait for input: 5-10 seconds Timeout after: 10 secondsExample:"Thank you for calling Acme."[0.5s pause]"Press 1 for Sales."[0.3s pause]"Press 2 for Support."[0.3s pause]"Or press 0 for an operator."[Wait 10s for input]
Menu Node: Message: "Press 1 for Sales, 2 for Support." Timeout Handling: After 10s silence: "I didn't receive a selection. Press 1 for Sales, 2 for Support, or 0 for an operator." After 2nd timeout: "I'll transfer you to an operator who can help." → Transfer to Operator
Manual Repeat:
Global Repeat Menu Node: Global: Yes DTMF Key: 9 Message: 'Main menu: Press 1 for Sales, 2 for Support, 3 for Billing, or 0 for an operator.'
Menu Node: Message: "Press 1 for Sales or 2 for Support."Invalid Input Node: Message: "I didn't recognize that selection. Press 1 for Sales or 2 for Support." After 2 invalid attempts: "Let me connect you with someone who can help." → Transfer to Operator
No Input Strategy:First timeout (10s): "Are you still there? Press any key to continue, or I can connect you with an operator."Second timeout (10s): "I haven't heard from you. I'll transfer you to someone who can assist." → Transfer to OperatorThird timeout (10s): "Thank you for calling. Goodbye." → End Call
Wrong Menu Detection:If caller presses invalid key multiple times: "It seems like you're having trouble with the menu. Let me connect you to an operator." → TransferIf caller says "operator" or "representative": → Bypass menu, transfer immediatelyIf caller says "I don't know" or similar: "No problem! Let me ask you a few questions to help." → Conversational routing
Hybrid Menu Node: Message: "Thank you for calling Acme. You can press a number or just tell me what you need. Press 1 for Sales. Press 2 for Support. Or simply tell me how I can help." Transitions: - DTMF: 1 → Sales - DTMF: 2 → Support - Natural Language: "mentions sales, pricing, quote" → Sales - Natural Language: "mentions problem, issue, help" → Support - Natural Language: "any other input" → AI RouterAI Router Node: Type: Conversation Prompt: "Understand what the caller needs and route appropriately." Transitions: - Condition: "sales related" → Sales - Condition: "support related" → Support - Condition: "unclear" → Clarification
Entry Point:Router: Check Caller History Conditions: - {{user_number}} IN known_customers AND {{last_call_reason}} == "support" → "Welcome back! Are you calling about the same issue?" → Support (skip menu) - {{is_vip}} == true → "Welcome, {{customer_name}}. How can I help you today?" → VIP Agent (skip menu) - Always → → Main Menu
AI Menu Navigator: Message: 'What can I help you with today?' Agent Prompt: 'The caller can ask for: - Sales (route to sales team) - Support (ask for product type, then route) - Billing (verify account, then route) - General info (answer directly) Classify their intent and route appropriately. If unclear, ask one clarifying question.' Transitions: Based on AI classification → Appropriate department
Main Menu: Message: "Thank you for calling Acme Services. Press 1 for our Business Hours and Location. Press 2 to Schedule an Appointment. Press 3 for Billing Questions. Or press 0 to speak with someone. You can also just tell me what you need." DTMF Transitions: 1 → Business Info 2 → Appointment Scheduler 3 → Billing Department 0 → Receptionist Natural Language: "mentions hours, location, address" → Business Info "mentions appointment, schedule, book" → Appointment Scheduler "mentions bill, payment, invoice" → Billing Department Other → ReceptionistBusiness Info Node: Message: "We're open Monday through Friday, 9 AM to 5 PM. We're located at 123 Main Street, Suite 100. Would you like directions? Press 1 for yes, 2 for no." Transitions: DTMF: 1 → Send Directions (SMS/Email) DTMF: 2 → Main Menu
Main Menu: Message: "Welcome to City Health Clinic. If this is a medical emergency, hang up and dial 911. To schedule or change an appointment, press 1. For prescription refills, press 2. For test results, press 3. For billing, press 4. For all other questions, press 5." Transitions: DTMF: 1 → Appointment System DTMF: 2 → Prescription Refills DTMF: 3 → Test Results (requires verification) DTMF: 4 → Billing DTMF: 5 → Nurse LineAppointment System: Message: "Appointment scheduling. Press 1 for a new appointment. Press 2 to change an existing appointment. Press 3 to cancel an appointment." Transitions: DTMF: 1 → New Appointment Flow DTMF: 2 → Change Appointment Flow DTMF: 3 → Cancel Appointment Flow
Main Menu: Message: "Thank you for calling ShopNow. Press 1 to track your order. Press 2 for returns and exchanges. Press 3 to speak with customer service. Or you can say your order number, and I'll look it up for you." Transitions: DTMF: 1 → Order Tracking DTMF: 2 → Returns Menu DTMF: 3 → Customer Service Natural Language: Extract order number → Direct LookupOrder Tracking: Message: "Please enter your order number using your keypad, followed by the pound key. Or you can say it." DTMF Input Capture: Variable: order_number Termination Key: # Digit Limit: 10 Transitions: Always → Lookup Order Tool → Order Status Response