https://retellai.com/?utm_source=discord&utm_medium=seo logo
Can you step me through call forwarding on a retel...
# ❓・ai-evy-support
s
@AI Evy Can you step me through call forwarding on a retell twilio number?
a
Thanks for tagging me @Skadoo. I'll look through relevant sources and get back to you shortly.
### Answer --- Here's how to set up a Twilio number with Retell via SIP trunking: 1. Create Elastic SIP Trunk in Twilio [(1) ]() - Create the trunk and give it a name - Set up termination (for outbound) : note the termination SIP URI—use a localized URI near your region - For authentication, either whitelist IP addresses or create credentials with username/password - Set up origination (for inbound) : use Retell's SIP server address:
sip:sip.retellai.com
2. Move Numbers to Elastic SIP Trunk - Purchase new numbers or move existing numbers to your trunk in Twilio 3. Import Number to Retell - Supply the termination SIP URI you configured - If using credential auth, provide the username and password You can import via the dashboard or programmatically:
Copy code
javascript
import Retell from 'retell-sdk';
const client = new Retell({
  apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const phoneNumberResponse = await client.phoneNumber.import({
  phone_number: '+14157774444',
  termination_uri: 'someuri.pstn.twilio.com',
}) ;
[(2) ]() Once imported, the number appears in your dashboard and can make/receive calls like a Retell-purchased number. [(1) ]() Common Issues - Remove any spaces in your Termination SIP URI - Verify the username (not the friendly name) and credentials are correct
​ To learn more, see the sources I considered: [[1] Twilio](https://docs.retellai.com/deploy/twilio) [[2] Import Phone Number](https://docs.retellai.com/api-references/import-phone-number) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy no a twilio number purchased inside of retell - i need to call forward for just a few calls to verify a yelp listing. Help!
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
### Answer --- For verifying a Yelp listing, you need incoming calls to your Retell number to be forwarded to your personal phone so you can answer the verification call yourself. Unfortunately, the sources I have don't document a built-in "call forwarding" feature that simply redirects all inbound calls from a Retell-purchased number to another phone number without involving the AI agent. What the documentation does cover: - Transfer Call Tool — This allows the AI agent to transfer a call during a conversation to another number (cold or warm transfer) . [(1) ]() [(2) ]() - Conditional forwarding via telephony provider — Businesses typically configure call forwarding through their telephony provider's portal or using specific codes before calls reach Retell. [(3) ]() Possible workaround: You could configure your AI agent to immediately transfer every call to your personal number using the Transfer Call Tool. Set the transfer destination to your phone number in E.164 format and instruct the agent in the prompt to transfer right away. [(1) ]() However, for a simple one-time verification like Yelp, this may be more setup than needed. Recommendation: Check if Twilio (the underlying provider for Retell Twilio numbers) allows you to configure call forwarding directly in the Twilio console for that number before it routes to Retell. This would be configured at the telephony provider level. [(3) ]() If you need further assistance, consider reaching out via
[Contact Sales]() or checking [Retell AI GitHub]() . Would you like a general answer on how to set up an immediate transfer via the AI agent?
​ To learn more, see the sources I considered: [[1] Transfer call](https://docs.retellai.com/build/single-multi-prompt/transfer-call) [[2] Call Transfer Node](https://docs.retellai.com/build/conversation-flow/call-transfer-node) [[3] Call Forwarding for AI Voice Agents | Retell AI](https://www.retellai.com/blog/best-practices-for-setting-up-ai-voice-agents-with-call-forwarding) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
yes immediate transfer instructions please @AI Evy
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
### Answer To set up an immediate transfer so all inbound calls go straight to your personal phone: 1. Add Transfer Call Tool [(1) ]() - Click "+ Add" in the tools section and select "Transfer Call" from the dropdown menu 2. Set Transfer Destination - Set the transfer number to your personal phone number in E.164 format (e.g.,
+12125551234
) 3. Choose Transfer Type - Select Cold transfer — the call transfers directly without AI interaction 4. Update the Prompt - In your agent prompt, add an instruction like: > "Immediately use the transfer_call tool to transfer every incoming call. Do not engage in conversation." This tells the agent to transfer right away without speaking to the caller. [(1) ]() [(2) ]() Optional: Caller ID Configuration [(1) ]() - You can configure which caller ID shows up to you: - **Retell Agent's number**: You'll see your Retell number - **User's Number**: You'll see the original caller's number (Retell Twilio numbers support this on both warm and cold transfer) Once configured, when Yelp calls your Retell number, the AI will immediately transfer to your personal phone so you can complete verification.
​ To learn more, see the sources I considered: [[1] Transfer call](https://docs.retellai.com/build/single-multi-prompt/transfer-call) [[2] Streamline Calls with AI-Powered Call Transfers | Retell AI](https://www.retellai.com/features/call-transfer) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy did not work- silence - should i have agent say hello to buy some time?
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
### Answer Yes, having the agent say something first can help. The silence may be occurring because the agent is waiting for the caller to speak before triggering the transfer. Try these adjustments: 1. Set a Begin Message [(1) ]() - Configure a
begin_message
so the agent speaks first (e.g., "Hello, please hold while I connect you.") - This ensures the agent initiates the conversation rather than waiting silently 2. Set Agent to Speak First - Set
start_speaker
to
"agent"
so the AI begins the conversation immediately 3. Update Your Prompt [(2) ]() - Make the instruction explicit: > "Say 'Hello, one moment please' and then immediately use the transfer_call tool to transfer the call." 4. If Using User Speaks First [(1) ]() - You can set
begin_after_user_silence_ms
to a value like
2000
(2 seconds) so the agent will begin speaking if the user is silent for that duration The key is ensuring the agent has a reason to speak and trigger the tool call. Without a begin message or prompt to speak first, the agent may wait indefinitely for user input, causing silence. [(1) ]()
​ To learn more, see the sources I considered: [[1] Create Retell LLM](https://docs.retellai.com/api-references/create-retell-llm) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy -i programmed the agent to speak first with a 2-second pause before speaking- the agent says the custom message -please hold while i connect you- and then pauses and then says please hold i am connecting you now- can you give me a quick prompt or setting that will eliminate the second message from the agent- we need a quicker transfer
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
​ To learn more, see the sources I considered: [[1] Update Retell LLM](https://docs.retellai.com/api-references/update-retell-llm) [[2] Create Retell LLM](https://docs.retellai.com/api-references/create-retell-llm) [[3] Update Voice Agent](https://docs.retellai.com/api-references/update-agent) [[4] Create Voice Agent](https://docs.retellai.com/api-references/create-agent) [[5] Step 2: Configure the basic settings](https://docs.retellai.com/build/single-multi-prompt/configure-basic-settings) ​
### Answer --- The agent is likely generating a second message because the LLM is responding again after the begin message. To eliminate this: 1. Set a fixed
begin_message
and remove dynamic generation
[(1) ]() [(2) ]() - Set
begin_message
to exactly what you want (e.g.,
"Please hold while I connect you."
) - This prevents the LLM from dynamically generating additional messages [(2) ]() 2. Simplify your prompt - Make the prompt extremely direct: > "Immediately transfer the call using the transfer_call tool. Do not say anything else. Do not respond to the caller." 3. Reduce
responsiveness
[(3) ]() [(4) ]() - Lower the
responsiveness
value (e.g.,
0.5
or lower) to slow down how quickly the agent tries to respond again [(5) ]() 4. Remove the begin message delay - Set
begin_message_delay_ms
to
0
so there's no pause before speaking [(3) ]() [(4) ]() - The 2-second pause may be giving the LLM time to generate additional responses 5. Set
reminder_max_count
to
0
- This disables reminder messages if the user is silent The key is ensuring the prompt instructs the agent to only call the transfer tool immediately after the begin message and say nothing else.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
where is begin_message delay- you mean the pause before speaking in the welcome messsge section? where is the responsiveness value?
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
s
@AI Evy where is begin_message delay- you mean the pause before speaking in the welcome messsge section? where is the responsiveness value?
a
### Answer Yes,
begin_message_delay_ms
is the "pause before speaking" setting. [(1) ]() [(2) ]()
begin_message_delay_ms
- If set, will delay the first message by the specified amount of milliseconds, so that it gives user more time to prepare to take the call. Valid range is [0, 5000]. If not set or set to 0, agent will speak immediately. Only applicable when agent speaks first. - Note: The value is in milliseconds, so 2 seconds =
2000
. [(3) ]()
responsiveness
- Controls how responsive the agent is. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower) , while higher value means faster exchanges (respond when it can) . If unset, default value 1 will apply. [(1) ]() [(2) ]() Both settings are configured at the Voice Agent level (not the LLM level) . In the dashboard, look for these in your agent's settings. Via API, you set them when creating or updating the agent:
Copy code
javascript
const agentResponse = await client.agent.update('YOUR_AGENT_ID', { 
  begin_message_delay_ms: 0,
  responsiveness: 0.5
}) ;
[(1) ]()
​ To learn more, see the sources I considered: [[1] Update Voice Agent](https://docs.retellai.com/api-references/update-agent) [[2] Create Voice Agent](https://docs.retellai.com/api-references/create-agent) [[3] using "begin_message_delay_ms" python api not seems to effect the agent](https://discord.com/channels/1186424376300679209/1407319051465785374) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy the agent is waiting for the user to respond and after 2 messages then the agent transfers the call- we need to eliminate that
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
### Answer This is a known behavior where the LLM waits for user input before executing the transfer function. [(1) ]() Try using a Conversation Flow instead of Single/Multi Prompt: The Call Transfer Node in Conversation Flow is designed for exactly this scenario—the agent will not speak when it's in this node. [(2) ]() Setup: 1. Create a Conversation Node with
skip response
turned on that says "Let me transfer you right away" 2. Connect it directly to a Call Transfer Node 3. The Call Transfer Node executes the transfer without waiting for user response Why this works better: - The Call Transfer Node transfers immediately without LLM turn-taking behavior - Transition only happens if transfer fails (there's a pre-populated edge for handling failures) Alternative if staying with Single/Multi Prompt: You can also try using the Inbound Call Webhook to immediately return a transfer destination without engaging the AI at all. [(3) ]() The Conversation Flow approach gives you deterministic control over when the transfer happens, bypassing the LLM's tendency to wait for responses.
​ To learn more, see the sources I considered: [[1] Discord message from @obrien1107_92113 on 2025-09-14](https://discord.com/channels/1186424376300679209/1294891368505937952/1416865160018264147) [[2] Call Transfer Node](https://docs.retellai.com/build/conversation-flow/call-transfer-node) [[3] Health Checks](https://discord.com/channels/1186424376300679209/1399426187629039797) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy step me through the inbound call webhook
a
Thanks for the follow-up, @Skadoo. I'll get back to you soon.
For Your Immediate Transfer Use Case: You could use the webhook to override the agent to one specifically configured for instant transfers, or set a
begin_message
dynamically that triggers the transfer. Important Notes: - The webhook has a 10-second timeout and retries up to 3 times - The call stays in ringing state until your webhook responds - If the webhook fails and no inbound agent is set, the call disconnects - Your response must include
call_inbound.override_agent_id
to pick up the call; omit it to reject
### Answer --- Here's how to set up the Inbound Call Webhook for your use case: 1. Configure the Webhook at the Phone Number Level [(1) ]() The inbound webhook is configured on the phone number, not the agent. Go to your phone number settings and add your webhook URL in the
inbound_webhook_url
field. [(2) ]() 2. Webhook Behavior [(3) ]() When an inbound call comes in, Retell will
POST
to your endpoint with this payload:
Copy code
json
{
  "event": "call_inbound",
  "call_inbound": {
    "agent_id": "agent_12345",
    "agent_version": 1,
    "from_number": "+12137771234",
    "to_number": "+12137771235"
  }
}
3. Your Response Respond with a JSON object containing
call_inbound
. You can override the agent, set dynamic variables, or use
agent_override
to modify behavior for this specific call:
Copy code
json
{
  "call_inbound": {
    "override_agent_id": "agent_12345",
    "override_agent_version": 1,
    "agent_override": {
      "agent": {
        "voice_id": "11labs-Adrian",
        "max_call_duration_ms": 1800000
      },
      "retell_llm": {
        "model": "gpt-4o-mini",
        "begin_message": "Hi {{customer_name}}, thanks for calling."
      }
    },
    "dynamic_variables": {
      "customer_name": "John Doe"
    },
    "metadata": {
      "random_id": "12345"
    }
  }
}
​ To learn more, see the sources I considered: [[1] Inbound call webhook ui not visiable. I only see agent webhook,](https://discord.com/channels/1186424376300679209/1382092411009761310) [[2] Import Phone Number](https://docs.retellai.com/api-references/import-phone-number) [[3] Inbound webhook](https://docs.retellai.com/features/inbound-call-webhook) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.