Update README
This commit is contained in:
@@ -68,6 +68,56 @@ Call your Twilio phone number. The system should answer the call, put you on hol
|
|||||||
|
|
||||||
You can customize the bot's behavior by modifying the system prompt in `bot.py`.
|
You can customize the bot's behavior by modifying the system prompt in `bot.py`.
|
||||||
|
|
||||||
|
### Changing the Hold Music
|
||||||
|
|
||||||
|
To change the ringing sound or hold music that callers hear while waiting to be connected to the bot, update the URL in `server.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
resp = VoiceResponse()
|
||||||
|
resp.play(
|
||||||
|
url="https://your-custom-audio-file-url.mp3",
|
||||||
|
loop=10,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
> Read [Twilio's guide](https://www.twilio.com/en-us/blog/adding-mp3-to-voice-call-using-twilio) on how to set up an mp3 in a voice call.
|
||||||
|
|
||||||
|
## Handling Multiple SIP Endpoints
|
||||||
|
|
||||||
|
The bot is configured to handle multiple `on_dialin_ready` events that might occur with multiple SIP endpoints. It ensures that each call is only forwarded once using a simple flag:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Flag to track if call has been forwarded
|
||||||
|
call_already_forwarded = False
|
||||||
|
|
||||||
|
@transport.event_handler("on_dialin_ready")
|
||||||
|
async def on_dialin_ready(transport, cdata):
|
||||||
|
nonlocal call_already_forwarded
|
||||||
|
|
||||||
|
# Skip if already forwarded
|
||||||
|
if call_already_forwarded:
|
||||||
|
logger.info("Call already forwarded, ignoring this event.")
|
||||||
|
return
|
||||||
|
|
||||||
|
# ... forwarding code ...
|
||||||
|
call_already_forwarded = True
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that normally calls only require a single SIP endpoint. If you are planning to forward the call to a different number, you will need to set up 2 SIP endpoints: one for the initial call and one for the forwarded call. IMPORTANT: ensure that your `on_dialin_ready` handler only handles the first call.
|
||||||
|
|
||||||
|
## Daily SIP Configuration
|
||||||
|
|
||||||
|
The bot configures Daily rooms with SIP capabilities using these settings:
|
||||||
|
|
||||||
|
```python
|
||||||
|
sip_params = DailyRoomSipParams(
|
||||||
|
display_name="phone-user", # This will show up in the Daily UI; optional display the dialer's number
|
||||||
|
video=False, # Audio-only call
|
||||||
|
sip_mode="dial-in", # For receiving calls (vs. dial-out)
|
||||||
|
num_endpoints=1, # Number of SIP endpoints to create
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
### Call is not being answered
|
### Call is not being answered
|
||||||
@@ -80,7 +130,7 @@ You can customize the bot's behavior by modifying the system prompt in `bot.py`.
|
|||||||
|
|
||||||
- Ensure your Daily API key is correct and has SIP capabilities
|
- Ensure your Daily API key is correct and has SIP capabilities
|
||||||
- Check that the SIP endpoint is being correctly passed to the bot
|
- Check that the SIP endpoint is being correctly passed to the bot
|
||||||
- Verify that the ElevenLabs API key and voice ID are correct
|
- Verify that the Cartesia API key and voice ID are correct
|
||||||
|
|
||||||
### Bot starts but disconnects immediately
|
### Bot starts but disconnects immediately
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user