KAT Cloud로그인

AI 상담원 연결(핸드오프) 설계와 AI_TO_DIRECT 통화

AI→직원 연결(핸드오프)은 AI 에이전트가 응대하던 통화를 직원에게 넘기는 기능입니다. 넘길 시점, CALL_RECEIVED 웹훅의 handOffReason으로 맥락을 전하는 방법, AI_TO_DIRECT 통화 기록 활용법을 정리했습니다.

기술KAT Cloud 팀6분 읽기
AI 상담원 연결(핸드오프) 설계와 AI_TO_DIRECT 통화

AI→직원 연결(핸드오프)은 AI 에이전트가 응대하던 통화를 사람 직원에게 넘기는 기능입니다. KAT Cloud에서 이렇게 넘어간 통화는 통화 기록의 tag가 AI_TO_DIRECT로 남고, 착신 알림인 CALL_RECEIVED 웹훅에는 전환 사유가 handOffReason 필드로 담길 수 있습니다. 좋은 핸드오프는 언제 넘길지, 넘길 때 무엇을 함께 전할지, 넘긴 뒤 무엇을 기록할지를 미리 정해 두는 데서 시작합니다.

AI가 모든 전화를 끝까지 처리할 필요는 없습니다. 반복 문의와 단순 접수는 AI가 맡고, 판단이나 공감이 필요한 순간에 사람에게 매끄럽게 넘기는 구조가 고객과 직원 모두에게 부담이 적습니다.

언제 직원에게 넘겨야 할까요

상황예시넘기는 이유
고객이 직접 요청"상담원 연결해 주세요"요청을 무시하면 불만이 커짐
AI 처리 범위 밖환불 예외 승인, 견적 협상권한과 판단이 필요한 업무
같은 질문 반복두세 번 되물어도 진전이 없음대화가 막혀 고객 시간이 낭비됨
감정이 격해진 고객불만 제기, 높아진 목소리사람의 공감과 재량이 필요
민감한 정보·고위험 업무결제 정보, 건강 관련 상담정확성과 책임 문제
긴급 상황사고나 안전 관련 신고즉시 사람의 판단이 필요

연결 기준은 AI 에이전트의 응대 지침과 함께 KAT Cloud 콘솔에서 설정합니다. 기준을 적을 때는 "언제 넘기는지"뿐 아니라 "넘기기 전에 고객에게 어떻게 말하는지", "무엇을 확인하고 넘기는지"까지 함께 적어 두면 대화가 일관됩니다. AI→직원 연결 시 통화는 그룹 멤버가 받을 수 있으므로, 응대할 직원이 그룹 멤버로 들어 있는지도 미리 확인합니다.

KAT Cloud에서 핸드오프는 이렇게 기록됩니다

고객이 AI와 통화 중 직원 연결을 요청하면 KAT Cloud가 내 서버로 handOffReason이 담긴 CALL_RECEIVED를 보내고, 그룹 멤버 직원에게 통화를 연결한 뒤 종료 후 CALL_COMPLETED를 보내는 순서도
착신 알림이 직원 연결 전에 오므로 사유를 미리 화면에 띄울 수 있습니다.

CALL_RECEIVED는 전화가 수신될 때 보내는 착신 알림으로, AI 응대 전이나 직원 연결 전에 받을 수 있습니다. 직원 연결로 전환될 때 오는 알림에는 사유가 담길 수 있으므로, 내 서버가 이 값을 받아 직원 화면이나 사내 메신저에 먼저 띄우면 직원은 전화를 받기 전에 상황을 알 수 있습니다.

위치필드내용
CALL_RECEIVED 웹훅handOffReasonAI→직원 핸드오프 사유(선택). 직원 연결로 전환될 때만 포함
CALL_RECEIVED 웹훅fromNumber, fromName고객 번호, 연락처에 등록된 경우 이름
CALL_COMPLETED·통화 기록tag핸드오프된 통화는 AI_TO_DIRECT
CALL_COMPLETED·통화 기록sttAI, sttDirectAI 구간과 직원 구간의 받아쓰기
통화 기록recordingAI, recordingDirect구간별 녹음 파일(URL은 1시간 후 만료)
CALL_COMPLETED·통화 기록summary통화 전체 요약

구간별 받아쓰기의 구조는 통화 받아쓰기와 요약 데이터 구조에서 자세히 설명합니다.

handOffReason으로 직원에게 맥락 넘기기

CALL_RECEIVED 웹훅 본문은 다음과 같습니다. 일반 착신 알림에서는 handOffReason이 비어 있거나 생략될 수 있으므로 값이 있는지 먼저 확인해야 합니다.

JSON
{
  "eventType": "CALL_RECEIVED",
  "timestamp": "2026-03-12T02:40:00.000Z",
  "data": {
    "callHistoryId": "8f3f8fd9-7ab8-4a26-b523-4f8eb7d38b85",
    "groupId": 1,
    "groupName": "매장A",
    "channelId": 100,
    "fromNumber": "01012345678",
    "fromName": "홍길동 (매장A)",
    "toNumber": "07012345678",
    "handOffReason": "고객이 직원 연결을 요청함",
    "receivedAt": "2026-03-12T02:40:00.000Z"
  }
}

아래는 Node.js(Express)로 이 알림을 받아 핸드오프 통화만 직원에게 알리는 예제입니다. 웹훅은 타임아웃이 10초이고 HTTP 2xx 응답을 성공으로 처리하므로, 먼저 응답하고 알림은 비동기로 보냅니다. notifyStaff는 사내 메신저나 상담 화면으로 보내는 내 서비스의 함수입니다.

JavaScript
const express = require('express');
const app = express();
app.use(express.json());

app.post('/webhook/katcloud', (req, res) => {
  res.status(200).send('OK'); // 10초 안에 2xx 응답, 나머지는 비동기 처리

  const { eventType, data } = req.body;
  if (eventType !== 'CALL_RECEIVED' || !data.handOffReason) return;

  // AI가 직원에게 넘기는 통화: 사유와 고객 정보를 직원에게 먼저 보여 준다
  notifyStaff({
    callHistoryId: data.callHistoryId,
    group: data.groupName,
    customer: data.fromName || data.fromNumber,
    reason: data.handOffReason,
    receivedAt: data.receivedAt,
  }).catch((err) => console.error('직원 알림 실패', err));
});

app.listen(3000);

여기에 같은 고객의 지난 통화 요약을 함께 보여 주면 직원이 맥락을 더 빨리 파악합니다. GET /call-history는 phoneNumber 파라미터로 발신·수신 번호를 검색할 수 있습니다(groupId 필수). 웹훅 서버를 처음 만든다면 Node.js로 웹훅 수신 서버 만들기를 참고하세요.

자연스러운 전환을 위한 대화 설계

고객이 담당자 연결을 요청하자 AI가 용건을 한 문장으로 확인하고 대기 안내 후 연결하는 예시 대화
용건을 확인하고 넘기면 고객이 같은 말을 반복하지 않아도 됩니다.
  • 용건을 한 문장으로 확인하고 넘깁니다. 직원이 "무슨 일로 전화하셨어요?"부터 다시 묻지 않도록, AI가 정리한 사유가 직원에게 전달되게 합니다.
  • 기다림을 미리 알립니다. 연결 중이라는 안내 없이 침묵이 흐르면 고객은 통화가 끊겼다고 느낍니다.
  • 연결이 어려울 때를 정해 둡니다. 영업시간 외나 직원이 모두 통화 중일 때 콜백을 약속할지, 문자로 안내할지 응대 지침과 운영 절차로 미리 정합니다. 영업시간 외 설계는 영업시간 외 전화 응대 AI에서 다룹니다.
  • 넘기는 기준을 고객이 알 수 있게 합니다. "상담원 연결을 원하시면 말씀해 주세요"처럼 사람과 통화할 길이 있다는 것을 알려 두면 불만이 줄어듭니다.

AI_TO_DIRECT 통화로 운영 개선하기

핸드오프 통화는 AI가 어디까지 처리하고 어디서 막히는지 보여 주는 가장 좋은 자료입니다.

  1. 1비율 보기: 통화 기록의 tag를 집계해 전체 통화 중 AI, DIRECT, AI_TO_DIRECT의 비중을 봅니다. 통화 기록 API에는 tag 필터 파라미터가 없으므로 받아 온 뒤 내 쪽에서 나눕니다.
  2. 2사유 모으기: CALL_RECEIVED로 받은 handOffReason을 callHistoryId와 함께 저장해 두면 자주 나오는 사유를 셀 수 있습니다. 자주 나오는 사유가 단순 문의라면 응대 지침을 보완할 대상이고, 판단이 필요한 업무라면 직원 몫으로 남길 대상입니다.
  3. 3넘어가기 직전 대화 읽기: sttAI의 마지막 몇 턴을 읽으면 AI가 무엇을 못 알아들었는지, 고객이 왜 사람을 찾았는지 보입니다.
  4. 4비용 감안하기: KAT Cloud의 음성 AI 모델 요금은 AI가 실제로 동작한 시간만 청구됩니다. 일찍 넘길수록 모델 요금은 줄지만 직원이 응대하는 시간은 늘어나므로, 비용과 인력 사이의 균형으로 기준을 조정합니다.

콜센터에서 인입 분류와 상담원 연결을 함께 설계하는 예시는 콜센터 1차 응대 AI에 정리되어 있습니다.

자주 묻는 질문

AI_TO_DIRECT 태그는 무엇을 뜻하나요?

AI_TO_DIRECT는 KAT Cloud 통화 기록의 tag 값 중 하나로, AI 에이전트가 먼저 응대하다가 직원에게 연결된 통화를 뜻합니다. 이런 통화는 AI 구간 받아쓰기(sttAI)와 직원 구간 받아쓰기(sttDirect)가 나뉘어 기록됩니다. tag의 다른 값으로는 AI, DIRECT, UNKNOWN이 있습니다.

handOffReason은 언제 들어오나요?

handOffReason은 KAT Cloud의 CALL_RECEIVED 웹훅에 담기는 선택 필드로, AI 응대 중 직원 연결로 전환될 때만 포함됩니다. 일반 착신 알림에서는 비어 있거나 생략될 수 있으므로 값이 있는지 확인하고 처리해야 합니다.

AI에게서 넘어온 전화는 누가 받나요?

KAT Cloud에서 AI→직원 연결로 넘어온 통화는 해당 그룹의 그룹 멤버가 받을 수 있습니다. 어떤 상황에서 직원에게 연결할지는 AI 에이전트 응대 지침과 함께 KAT Cloud 콘솔에서 설정합니다.

  • #핸드오프
  • #상담원 연결
  • #AI 전화
  • #웹훅
  • #콜센터

Get started

만든 AI에게 전화번호를 주세요.

070 번호 발급, SIP 직접 연결, 음성 AI 모델 연결, 문자·웹훅까지 API 하나로. 월 10,000원부터.