← 블로그 목록
유즈케이스2026-06-03
본인인증 받는 AI 전화 만들기 — DTMF + 음성 동의로 ARS 대체
본인인증 받는 AI 전화 만들기 — DTMF + 음성 동의로 ARS 대체
기존 ARS 본인인증 — "1번을 눌러주세요, 2번을 ..." 단조롭고 이탈률 높음. ClawOps 070 + AI + DTMF 조합으로 자연스럽게 본인 확인 + 개인정보 동의 + 추가 정보 음성 입력까지 한 통화에 끝.
0. 활용 예
- 금융 회원가입 본인 확인
- 부동산 매물 등록 본인 확인
- 중고거래·당근 부정거래 방지
- 의료 환자 본인 확인 (예약 변경시)
1. 흐름 설계
[사용자 신청 폼 제출]
↓ 자동 트리거
[ClawOps 070 발신 → 사용자 010]
↓
[AI 인사 + 동의 안내]
↓ 사용자 "네"
[생년월일 음성 입력 받기]
↓
[DTMF — 인증번호 6자리 입력 받기 (사이트가 SMS 보낸 번호)]
↓
[검증 → DB 마킹 → hang_up]
2. Outbound 본인인증 — 코드
from clawops import ClawOps
from clawops.agent.tools import tool
client = ClawOps()
# 사용자 폼 제출 트리거
def start_verification(user_id: int, phone: str, name: str, birth_year: int):
# SMS 로 6자리 OTP 발송
otp = generate_otp()
db.execute("INSERT INTO otps (user_id, code, expires_at) VALUES (?, ?, ?)",
(user_id, otp, time.time() + 300))
# 70 발신 시작
call = client.calls.create(
to=phone, from_=KOREA_070,
agent_config={
"provider": "openai-realtime",
"language": "ko-KR",
"voice": "alloy",
"system_prompt": IDENTITY_VERIFY_PROMPT.format(
name=name, expected_birth_year=birth_year, expected_otp=otp,
),
"tools": [verify_otp_tool, mark_verified_tool],
"max_duration_seconds": 180,
},
metadata={"user_id": user_id, "type": "identity_verify"},
)
return call.id
IDENTITY_VERIFY_PROMPT = """
당신은 OOO 회사 본인인증 안내원입니다.
# 첫 발화
"안녕하세요, OOO 회사 본인인증 통화입니다.
{name} 님 본인 맞으시면 '네' 라고 답해주세요.
통화는 본인 확인 목적으로 녹음됩니다."
# 절차
1. 본인 확인 응답 받기 ("네" 또는 동등 표현)
2. 동의 받기:
"OOO 회사 회원가입을 위한 본인 확인과 개인정보 수집·이용 동의 부탁드립니다. 동의하시면 '동의합니다' 라고 답해주세요."
3. 생년월일 확인:
"본인 확인을 위해 출생연도 4자리 말씀해주세요."
답변과 {expected_birth_year} 비교. 불일치시 hang_up + DB 마킹 'failed'.
4. SMS 코드 입력:
"방금 보내드린 SMS 6자리 인증번호를 휴대폰 키패드로 입력해주세요."
DTMF 6자리 받기. verify_otp_tool 호출.
5. 검증 결과:
- 일치 → mark_verified_tool → "인증 완료되었습니다, 감사합니다."
- 불일치 → "인증번호가 일치하지 않습니다, 다시 입력해주세요." (최대 2회 재시도)
- 3회 실패 → "본인인증 실패, 사이트에서 다시 시도해주세요." hang_up
# 절대 금지
- 동의 안 받았는데 진행
- 비밀번호·계좌·카드 묻기
- 본인 확인 외 다른 정보 요청
- 통화 3분 초과
"""
@tool
def verify_otp_tool(entered_code: str, user_id: int) -> dict:
"""SMS OTP 검증."""
row = db.execute(
"SELECT code FROM otps WHERE user_id = ? AND expires_at > ?",
(user_id, time.time()),
).fetchone()
return {"verified": row and row['code'] == entered_code}
@tool
def mark_verified_tool(user_id: int) -> dict:
"""DB 에 인증 완료 마킹."""
db.execute("UPDATE users SET verified_at = ? WHERE id = ?",
(time.time(), user_id))
return {"marked": True}
3. DTMF 입력 받기 — ClawOps Agent 패턴
ClawOps Agent runtime 은 OpenAI Realtime / Gemini Live 와 DTMF 이벤트를 함께 수신. system_prompt 에 "키패드로 입력" 안내하면 사용자가 누른 톤을 AI 가 verify_otp_tool 의 entered_code 인자로 받는다.
4. 통화 예시
AI: "안녕하세요, OOO 회사 본인인증 통화입니다. 김OOO 님 본인 맞으시면 '네' 답해주세요. 통화는 녹음됩니다."
사용자: "네"
AI: "회원가입 본인 확인과 개인정보 수집·이용 동의 부탁드립니다. 동의하시면 '동의합니다' 라고 답해주세요."
사용자: "동의합니다"
AI: "본인 확인을 위해 출생연도 4자리 말씀해주세요."
사용자: "1985년"
AI: "확인했습니다. 방금 보내드린 SMS 6자리 인증번호를 휴대폰 키패드로 입력해주세요."
사용자: [키패드 123456 입력]
AI: "인증 완료되었습니다, 감사합니다."
[hang_up]
5. 컴플라이언스 (한국)
- 개인정보보호법 — 동의 받기 의무. 시스템 프롬프트 첫 발화에 명시.
- 통화 녹음 — 일방 동의 합법이지만 명시 안내 권장 (위 첫 발화에 포함).
- 본인 확인 정보 저장 — 가능한 최소화 (음성 녹음만 보관, 텍스트 전사는 7일 후 삭제).
- KISA/금감원 권고 — 금융 본인인증은 별도 보안 요구사항 (PASS 인증 등 보조).
6. 보안
- OTP — 1회용, 5분 만료, 시도 3회 제한
- 통화 녹음 — GCP 서울 리전 내, 일정 기간 후 자동 폐기
- 회사 측에서 사용자 발화 음성 데이터를 외부 LLM 에 전달할 때 PII 마스킹
7. 비용
- ClawOps Individual ₩19,000/월 (인증 100건 = 30분)
- SMS OTP 발송: ₩30/건 (LMS)
다음 단계
관련 글 더 보기
유즈케이스
정기 확인 전화 자동화 — 구독·결제·예약 리마인더 AI 통화
구독 갱신·결제 예정·예약 D-1 같은 정기 알림을 ClawOps 070 + AI 자동 전화로 처리. 이메일·SMS 보다 도달률 높고 대화형 confirm 가능.
유즈케이스학원 AI 상담 전화 만들기 — 학기·시간·비용 안내 + 상담 예약 자동화
어학원·입시학원·취미학원 — 070 + AI 로 커리큘럼·반편성·수강료·상담 일정 자동 응대. 카운셀러 인건비 절감 + 24시간 응답률 100%.
유즈케이스카페 AI 주문·예약 전화 만들기 — 메뉴·테이크아웃·이벤트 자동 응대
스페셜티 카페·디저트샵·베이커리 — 070 + AI 로 메뉴·운영시간·테이크아웃 예약 자동 응대. 단가 ₩19,000/월.
유즈케이스헬스장 AI 회원권·예약 응대 — PT/요가/필라테스 24시간 자동 응대
헬스장·필라테스·요가 — 070 + AI 로 회원권 가격·체험 예약·운영시간 안내. 트레이너 통화 부담 줄이고 영업외 문의 100% 응답.
유즈케이스내 Claude Code 로 전화비서 만들기 — 3분 완성, 진짜 전화 가는 비서
Claude Code + ClawOps 070 + MCP 한 줄로 전화 거는 비서 만들기. '강남 OOO 식당 5시 4명 예약해줘' 한 마디로 실제 전화가 가는 시나리오 3분 완성.