All fields are required
Cold transfers lose everything. Callers repeat themselves. Agents start from scratch. SignalWire transfers carry context, authentication state, and a machine-written summary with the call.
The caller verified their identity with the AI. On transfer, the receiving agent asks them to verify again. Authentication state was not carried.
The caller explained their problem for three minutes. On transfer, the receiving agent asks: "How can I help you?" The conversation restarted from zero.
The AI looked up the caller's order, checked their account balance, and confirmed their address. None of that context made it to the human agent.
65% of customer experience frustration comes from bot loops and transfers that forget the conversation. Each repetition increases the chance the caller hangs up.
from signalwire_agents import AgentBase
from signalwire_agents.core.function_result import SwaigFunctionResult
class SupportAgent(AgentBase):
def __init__(self):
super().__init__(name="Support Agent", route="/support")
self.prompt_add_section("Instructions",
body="You are a customer support agent. "
"Greet the caller and resolve their issue.")
self.add_language("English", "en-US", "rime.spore:mistv2")
@AgentBase.tool(name="check_order")
def check_order(self, order_id: str):
"""Check the status of a customer order.
Args:
order_id: The order ID to look up
"""
return SwaigFunctionResult(f"Order {order_id}: shipped, ETA April 2nd")
agent = SupportAgent()
agent.run()
| Data | Automatically Included | Configurable |
|---|---|---|
| Caller phone number | Yes | N/A |
| Call UUID | Yes | N/A |
| Authentication state | Yes | N/A |
| Current step position | Yes | N/A |
| Conversation transcript | Yes | Include or exclude |
| Tool call history | Yes | Include or exclude |
| Machine-written summary | Configurable | Template |
| Hidden data layer (PII, tokens) | Configurable | Select fields |
The AI handles intake, verifies identity, and classifies the issue. On transfer, the human sees a screen pop with caller identity, conversation summary, and recommended actions.
A general intake agent hands off to a billing agent, scheduling agent, or technical support agent. Each has its own prompts, tools, and governance. The receiving AI starts with the caller's context loaded.
The AI places the caller on hold, dials the human specialist, and a second AI briefs them on the caller's issue. The specialist accepts or declines. If declined, the AI returns to the caller with alternatives.
The hidden data layer contains information that never enters the AI model's context window. Authentication tokens, session IDs, and internal identifiers pass to the receiving agent's tool handlers without being visible to the AI.
You control which fields travel with transfers. Sensitive data stays in the secure layer. Business context reaches the next agent or human.
| Capability | Typical Bolt-On Stack | SignalWire |
|---|---|---|
| Transfer mechanism | Hard cut (SIP REFER or new call leg) | Platform-native with context |
| Context preservation | Serialize to your state store | Automatic (platform property) |
| Authentication state | Lost on transfer | Preserved |
| Conversation history | Your app passes it out-of-band | Platform carries it |
| Briefing pattern | Build multi-call orchestration yourself | Single declarative document |
| Transfer analytics | Correlate multiple call records | Native, single interaction trace |
Yes. Context is preserved across all transfers regardless of direction. A call can move between AI and human agents multiple times. Each handoff carries the full conversation state.
You define the fallback behavior. The AI can return to the caller with alternatives, place them in a queue, offer a callback, or take a message. The platform tracks the outcome either way.
Yes. Data in the hidden layer passes to the receiving agent's tool handlers. The receiving AI model never sees it. Only your backend code has access to protected fields.
$0.16 per minute for AI processing. Transport billed separately at carrier rates. Transfers within the platform do not incur additional per-transfer fees. You pay for AI processing time, not transfer events.
Trusted by
Build warm transfers where every handoff carries the full conversation.