AI 전화 에이전트 Call Transfer 구현 가이드: AI가 상담원에게 전화를 넘기는 법
AI 전화 에이전트 Call Transfer 구현 가이드: AI가 상담원에게 전화를 넘기는 법

AI 전화 에이전트를 도입할 때 가장 자주 받는 질문이 있습니다: "AI가 처리 못 하는 건 어떻게 하나요?"
답은 Call Transfer(통화 전환)입니다. AI가 대화하다가 복잡한 문의, VIP 고객, 불만 사항을 인식하면 실시간으로 사람 상담원에게 전화를 넘깁니다. 고객은 전화를 끊고 다시 걸 필요 없이, 같은 통화에서 자연스럽게 상담원과 연결됩니다.
ClawOps Voice Agent SDK는 Blind Transfer, Warm Transfer, 전환 후 AI 복귀까지 3가지 모드를 지원합니다.
Call Transfer 모드 비교
| 모드 | 동작 | 적합한 상황 |
|---|---|---|
| Blind Transfer | 즉시 전환, AI 세션 종료 | 단순 연결 (내선 전환, 부서 연결) |
| Warm Transfer | 상담원에게 먼저 안내 후 고객 연결 | VIP 고객, 맥락 전달 필요 시 |
| 전환 후 복귀 | 상담원 통화 종료 후 AI가 다시 대화 | 전문가 상담 후 후속 안내 |
기본 설정: Transfer Tool 활성화
BuiltinTool.TRANSFER_CALL을 활성화하면 AI가 프롬프트에 따라 자동으로 전환을 판단합니다.
Python
from clawops.agent import ClawOpsAgent, OpenAIRealtime, BuiltinTool
import asyncio
agent = ClawOpsAgent(
from_="07012341234",
session=OpenAIRealtime(
system_prompt="""고객 상담 AI입니다.
다음 경우 상담원에게 전환하세요:
- 고객이 상담원 연결을 요청할 때
- 환불/결제 관련 복잡한 문의
- 고객이 화가 나있을 때
상담원 번호: 01012345678""",
voice="marin",
language="ko",
),
builtin_tools=[BuiltinTool.HANG_UP, BuiltinTool.TRANSFER_CALL],
)
asyncio.run(agent.serve())
Node.js
import { ClawOpsAgent, OpenAIRealtime, BuiltinTool } from '@teamlearners/clawops/agent';
const agent = new ClawOpsAgent({
from: '07012341234',
session: new OpenAIRealtime({
systemPrompt: `고객 상담 AI입니다.
다음 경우 상담원에게 전환하세요:
- 고객이 상담원 연결을 요청할 때
- 환불/결제 관련 복잡한 문의
- 고객이 화가 나있을 때
상담원 번호: 01012345678`,
voice: 'marin',
language: 'ko',
}),
builtinTools: [BuiltinTool.HANG_UP, BuiltinTool.TRANSFER_CALL],
});
await agent.serve();
이제 고객이 "상담원 연결해주세요"라고 하면, AI가 자동으로 transfer_call 도구를 호출해 01012345678로 전환합니다.
Blind Transfer: 즉시 전환
가장 간단한 전환입니다. 고객을 대상 번호로 즉시 연결하고, AI 세션은 종료됩니다.
# 이벤트 핸들러에서 직접 호출 (프로그래밍 방식)
@agent.on("call_start")
async def on_call_start(call):
# 특정 조건에서 즉시 전환
if should_transfer(call.from_number):
await call.transfer("01012345678")
// Node.js
agent.on('call_start', async (call) => {
await call.transfer('01012345678');
});
적합한 상황:
- 부서 연결 (영업부, 기술지원부)
- 내선번호 전환
- 단순한 상담원 연결 요청
Warm Transfer: 안내 후 전환
상담원이 전화를 받으면 whisper 메시지를 먼저 들려줍니다. 고객은 이 메시지를 들을 수 없고, 연결 대기 중에는 대기 음악이 재생됩니다.
await call.transfer(
"01012345678",
mode="warm",
whisper="VIP 고객님이십니다. 주문 번호 A1234에 대한 환불 문의입니다.",
)
// Node.js
await call.transfer('01012345678', {
mode: 'warm',
whisper: 'VIP 고객님이십니다. 주문 번호 A1234에 대한 환불 문의입니다.',
});
Warm Transfer 흐름:
- AI가 고객에게 "상담원에게 연결해드리겠습니다. 잠시만 기다려주세요." 안내
- 고객에게 대기 음악 재생
- 상담원에게 전화 연결
- 상담원이 whisper 메시지를 들음 (고객은 못 들음)
- 상담원이 전화를 받으면 고객과 연결
Context 전달
whisper 외에도 구조화된 데이터를 webhook으로 전달할 수 있습니다:
await call.transfer(
"01012345678",
mode="warm",
whisper="VIP 고객입니다.",
hold_media="moh", # 대기 음악 ("moh" 또는 "silence")
context={
"customer_name": "홍길동",
"order_id": "ORD-20260521-001",
"priority": "high",
"issue": "환불 요청",
},
)
상담원 측 시스템이 이 context를 webhook으로 수신해 화면에 고객 정보를 바로 표시할 수 있습니다.
전환 후 AI 복귀
전환된 통화가 끝나면 AI가 다시 고객과 대화를 이어갑니다. 전문 상담원과 통화 후 AI가 후속 안내를 하는 시나리오에 적합합니다.
await call.transfer(
"01012345678",
after_transfer="return", # 기본값: "terminate"
)
시나리오 예시:
- AI가 기본 상담 진행
- 전문가 상담 필요 → 상담원에게 전환 (
after_transfer="return") - 상담원과 고객이 통화
- 상담원이 통화 종료
- AI가 다시 돌아와 "상담원과의 통화가 종료되었습니다. 추가로 도와드릴 내용이 있으신가요?"
전체 파라미터 레퍼런스
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
to | str | (필수) | 전환할 전화번호 |
mode | str | "blind" | "blind": 즉시 전환, "warm": whisper 후 전환 |
after_transfer | str | "terminate" | "terminate": AI 세션 종료, "return": AI가 다시 대화 이어감 |
hold_media | str | "moh" | 전환 중 고객 대기 음원. "moh": 대기 음악, "silence": 무음 |
whisper | str | None | Warm 모드에서 상담원에게 전달할 안내 (고객은 못 들음) |
context | dict | None | 구조화 데이터 (webhook으로 전달) |
caller_id | str | None | 전환 발신 시 표시할 발신자 번호 |
timeout | int | 30 | 대상 응답 대기 시간 (초) |
실전 시나리오: 온라인 쇼핑몰 CS
from clawops.agent import ClawOpsAgent, OpenAIRealtime, BuiltinTool
import asyncio
agent = ClawOpsAgent(
from_="07012341234",
session=OpenAIRealtime(
system_prompt="""온라인 쇼핑몰 CS AI입니다.
처리 가능한 업무:
- 주문 상태 조회
- 배송 추적
- 영업시간/매장 안내
- 간단한 FAQ 응대
상담원 전환 조건:
- 환불/교환 요청 → 환불팀 (01011112222)
- 결제 오류 → 결제팀 (01033334444)
- 고객 불만/화남 → 고객센터장 (01055556666)
- 고객이 직접 상담원을 요청
전환 시 반드시 Warm Transfer로 맥락을 전달하세요.""",
voice="marin",
language="ko",
),
builtin_tools=[BuiltinTool.HANG_UP, BuiltinTool.TRANSFER_CALL],
)
@agent.tool
async def check_order(order_id: str) -> str:
"""주문 상태를 확인합니다."""
return f"주문 {order_id}: 배송 중 (내일 도착 예정)"
@agent.on("call_start")
async def on_start(call):
print(f"[CS] 전화 수신: {call.from_number}")
@agent.on("call_end")
async def on_end(call):
print(f"[CS] 통화 종료: {call.call_id} ({call.duration:.1f}초)")
asyncio.run(agent.serve())
이 설정으로:
- 주문 조회, FAQ는 AI가 직접 처리
- "환불해주세요" → 환불팀으로 Warm Transfer (맥락 전달)
- "사람이랑 얘기하고 싶어요" → 고객센터장으로 전환
Call Transfer 설계 팁
1. 전환 조건을 프롬프트에 명확히
상담원 전환 조건:
- 환불/교환: 환불팀 01011112222
- 결제 오류: 결제팀 01033334444
- 고객 불만: 고객센터장 01055556666
AI는 프롬프트를 보고 전환 여부를 판단합니다. 조건이 모호하면 불필요한 전환이 발생합니다.
2. 전환 전 안내 멘트
AI가 전환 전에 고객에게 안내하도록 프롬프트에 명시하세요:
전환 전 반드시 "담당 상담원에게 연결해드리겠습니다. 잠시만 기다려주세요"라고 안내하세요.
3. Warm Transfer의 whisper를 활용
상담원이 맥락 없이 "여보세요?"로 시작하면 고객이 처음부터 다시 설명해야 합니다. whisper로 핵심 정보를 전달하세요:
whisper=f"고객 {customer_name}님, 주문 {order_id} 환불 문의입니다. 이미 배송 완료 상태입니다."
4. 전환 실패 대비
상담원이 안 받을 수 있습니다. timeout 내 응답이 없으면 전환이 실패합니다:
await call.transfer("01012345678", timeout=30)
# 30초 내 상담원이 안 받으면 AI가 다시 대화를 이어감
마무리
Call Transfer는 AI 전화 에이전트와 사람 상담원을 이어주는 핵심 기능입니다. AI가 처리할 수 있는 80%의 통화는 자동화하고, 나머지 20%는 매끄럽게 사람에게 넘기는 것이 현실적인 AI 콜센터의 모습입니다.
ClawOps의 Blind/Warm Transfer, 전환 후 복귀 기능으로 고객 경험을 해치지 않는 자연스러운 전환을 구현해보세요.
3일 무료 Trial → claw-ops.com
관련 글: AI 전화 에이전트 만들기 · AI 전화 에이전트에 Tool 연동하기 · AI 콜센터 Build vs Buy
관련 글 더 보기
ClawOps Node.js SDK 완전 가이드: TypeScript로 AI 전화 에이전트 만들기
ClawOps Node.js/TypeScript SDK로 AI 음성 에이전트를 구축하는 방법. 설치부터 REST API, AI Agent, Tool 등록, MCP 연동까지 실전 코드 예제와 함께 안내합니다.
가이드OpenAI 말고 Gemini·Claude로 AI 전화 에이전트 만들기: Pipeline 모드 완전 가이드
ClawOps Voice Agent SDK의 Gemini Realtime과 Pipeline 모드로 OpenAI 외 AI 엔진을 사용하는 방법. Deepgram STT + Claude LLM + ElevenLabs TTS 조합, 커스텀 Provider 구현까지.
가이드Twilio 한국 070 안 된다 — ClawOps로 5분 마이그레이션
Twilio 한국 070 안 된다 — ClawOps로 5분 마이그레이션
가이드한국 SMS/LMS/MMS API 완벽 가이드: Python으로 문자 보내기
한국에서 SMS, LMS, MMS를 API로 발송하는 방법. ClawOps Python SDK로 단문·장문·이미지 문자를 보내고, 수신 웹훅으로 자동 응답하는 실전 가이드입니다.
가이드웹훅으로 전화 자동화 구현하기: Python + FastAPI 실전 코드
Python과 FastAPI로 전화 웹훅 서버를 구축하는 실전 가이드. CRM 연동, 주문 확인 전화, 부재중 알림 등 비즈니스 자동화 시나리오를 코드로 구현합니다.