The IVRNavigator is a pipeline component that provides intelligent navigation of IVR phone systems. It combines LLM-based decision making with DTMF tone generation to automatically traverse phone menus toward specified goals. The navigator includes automatic classification between IVR systems and human conversations, enabling flexible call handling scenarios.
The navigation goal that will be integrated with the base IVR navigation
instructions. This should clearly describe what you want to accomplish (e.g.,
“Navigate to billing support to discuss account charges”).
Voice Activity Detection parameters optimized for IVR navigation. The default
2.0 second stop time allows the system to hear complete menu options before
responding, improving navigation success rates.
<ivr>detected</ivr> <!-- IVR system detected, switch to navigation mode --><ivr>completed</ivr> <!-- Navigation goal achieved --><ivr>stuck</ivr> <!-- Unable to proceed --><ivr>wait</ivr> <!-- Waiting for more complete information -->
from pipecat.extensions.ivr.ivr_navigator import IVRStatusclass IVRStatus(Enum): DETECTED = "detected" # IVR system detected and navigation started COMPLETED = "completed" # Navigation goal successfully achieved STUCK = "stuck" # Navigation unable to proceed WAIT = "wait" # Waiting for more complete information
The navigator automatically preserves conversation context when switching between modes:
Copy
# Context is automatically saved and restored during mode transitions# No manual intervention required for basic scenarios# For advanced context manipulation:@ivr_navigator.event_handler("on_conversation_detected")async def handle_conversation(processor, conversation_history): # conversation_history contains preserved context # Add additional context as needed enhanced_context = [ {"role": "system", "content": "You are a customer service representative."}, *conversation_history, {"role": "assistant", "content": "How can I help you today?"} ] await task.queue_frame(LLMMessagesUpdateFrame(messages=enhanced_context, run_llm=True))