Add IVR navigation (#2529)
This commit is contained in:
29
CHANGELOG.md
29
CHANGELOG.md
@@ -9,6 +9,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## Added
|
||||
|
||||
- Added `pipecat.extensions.ivr` for automated IVR system navigation with
|
||||
configurable goals and conversation handling. Supports DTMF input, verbal
|
||||
responses, and intelligent menu traversal.
|
||||
|
||||
Basic usage:
|
||||
|
||||
```python
|
||||
from pipecat.extensions.ivr.ivr_navigator import IVRNavigator
|
||||
|
||||
# Create IVR navigator with your goal
|
||||
ivr_navigator = IVRNavigator(
|
||||
llm=llm_service,
|
||||
ivr_prompt="Navigate to billing department to dispute a charge"
|
||||
)
|
||||
|
||||
# Handle different outcomes
|
||||
@ivr_navigator.event_handler("on_conversation_detected")
|
||||
async def on_conversation(processor, conversation_history):
|
||||
# Switch to normal conversation mode
|
||||
pass
|
||||
|
||||
@ivr_navigator.event_handler("on_ivr_status_changed")
|
||||
async def on_ivr_status(processor, status):
|
||||
if status == IVRStatus.COMPLETED:
|
||||
# End pipeline, transfer call, or start bot conversation
|
||||
elif status == IVRStatus.STUCK:
|
||||
# Handle navigation failure
|
||||
```
|
||||
|
||||
- `BaseOutputTransport` now implements `write_dtmf()` by loading DTMF audio and
|
||||
sending it through the transport. This makes sending DTMF generic across all
|
||||
output transports.
|
||||
|
||||
Reference in New Issue
Block a user