https://retellai.com/?utm_source=discord&utm_medium=seo logo
Could you please explain step by step how to set u...
# ❓・ai-evy-support
d
@AI Evy Could you please explain step by step how to set up a cold transfer during an active call session? And most importantly - how can I test it properly? Do I обязательно need to use a real phone for testing, or is there a way to test it without one?
a
Thanks for tagging me @dropsofsteel. I'll look through relevant sources and get back to you shortly.
### Answer I'll walk you through setting up a cold transfer step by step. The approach differs slightly depending on whether you're using Single/Multi Prompt agents or Conversation Flow agents. ## For Single/Multi Prompt Agents: Step 1: Add Transfer Call Tool [(1) ]() Click "+ Add" in the tools section and select "Transfer Call" from the dropdown menu . Step 2: Setup Transfer Target Set the transfer number to be either: - A number in e.164 format, or a SIP URI in the format of
sip:username@domain
(e.g.
sip:user@retellai.com
) - A dynamic variable that gets substituted at runtime - (Optional) If your transfer destination is not in e.164 format, you can choose to keep the input as is by choosing raw format (only applies when using custom telephony, not Retell Telephony) Set the transfer number extension if needed. Extension must be 0-9, '*', '#' (e.g. 123#) . Step 3: Update the Prompt Enhance the agent's understanding by incorporating the transfer call conditions into the prompt. Include specific instructions such as: "If the user is angry or frustrated, use the transfer_call tool to transfer the conversation to a human agent." Step 4: Configure Transfer Type Choose cold transfer. The call is transferred to a destination number and that's it . *Step 5: Configure Caller ID (Optional) * You can configure which caller ID shows up to the transfer destination: 1. **Retell Agent's number**: The transfer destination will see the Retell agent's number 2. **User's Number**: The transfer destination will see the number of the user (telephony provider must support caller ID override) Step 6: Configure Cold Transfer Specific Settings [(2) ]() For cold transfer, you can configure: - **Cold transfer mod
es**: You can choose
SIP INVITE
or
SIP REFER
- **SIP INVITE**: This is the default transfer method. It establishes or updates the active call path, then bridges the transfer. You can choose which caller ID to use - **SIP REFER**: This asks an endpoint to start a separate call to a third party for transfer handoff. Use this only if your telephony provider supports SIP REFER *Step 7: Add Custom SIP Headers (Optional) * [(1) ]() Add custom SIP headers for outbound calls. All header names must start with
X-
. ## For Conversation Flow Agents: The setup is similar but uses a Call Transfer Node [(2) ]() . The call transfer node is used to transfer the call to another number. The agent will not speak when it's in this node . If you want the agent to say things like "Let me transfer you right away" before performing the actual transfer, you can do so by putting a conversation node (with
skip response
turned on) before this node . ## Testing Cold Transfers: **Important note about testing**: Cold transfer only works during phone calls instead of web calls [(1) ]() [(2) ]() . This feature is available for Retell numbers and imported numbers . Unfortunately, based on the documentation, you do need to use real phone numbers for testing cold transfers because: 1. The feature only works during phone calls, not web calls 2. You need a destination number to transfer to 3. The transfer involves actual telephony infrastructure (SIP INVITE or SIP REFER) [(2) ]() For testing, you'll need: - A Retell number or imported number as the
agent's number [(1) ]() [(2) ]() - A destination phone number to transfer to - A phone to call the Retell agent and test the transfer flow
​ 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) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
d
@AI Evy What phone number should I use to indicate it in Transfer Call tool settings? I don’t quite understand - is this the same phone number that’s being used for outbound calls, since my outbound number is configured to route through the PBX? Or is this supposed to be the actual destination phone number that I want to forward the call to? That part is unclear to me.
a
Thanks for the follow-up, @dropsofsteel. I'll get back to you soon.
### Answer The transfer number in the Transfer Call tool settings is the actual destination phone number where you want to forward the call to—not your outbound number. [(1) ]() [(2) ]() When you configure the "Transfer To Target" setting, you set the transfer number to be either: - A number in e.164 format (e.g.,
+12137771234
) - A SIP URI in the format of
sip:username@domain
(e.g.,
sip:user@retellai.com
) - A dynamic variable that gets substituted at runtime This is the destination where the AI agent will transfer the active call. For example, if you want to transfer frustrated customers to a human agent at extension +15551234567, that's the number you'd enter in the Transfer Call tool settings. Since you mentioned your outbound number routes through a PBX, you can also use a SIP URI format if you're transferring to an internal extension within your PBX system.
​ 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) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @dropsofsteel. I'll get back to you soon.
d
@AI Evy Can Custom SIP Headers in Transfer call settings be a dynamica variable?
a
### Answer Yes, you can use dynamic variables for your custom SIP header values when configuring call transfers. [(1) ]() [(2) ]() For call transfers, you can add custom SIP headers as needed, and you can use dynamic variables for your custom SIP header value. [(1) ]() This allows you to pass information extracted from the call to the receiving party. The header names themselves must start with
X-
. [(1) ]() [(2) ]() **Important note about cold transfers with Twilio**: For cold transfer with transferee number, it will use SIP REFER to transfer the call. [(1) ]() Different telephony providers may or may NOT honor the custom SIP headers in the REFER request. Twilio, for example, does not honor the custom SIP headers in the REFER request, so the SIP headers you set in transfer call tool will not work for cold transfer with transferee number when using Twilio.
​ To learn more, see the sources I considered: [[1] Set & parse custom SIP headers](https://docs.retellai.com/build/telephony/sip-headers) [[2] Transfer call](https://docs.retellai.com/build/single-multi-prompt/transfer-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.