AI 전화로 본인인증 구현하기: 070 수신으로 고객 동의를 자동화하는 법
AI 전화로 본인인증 구현하기: 070 수신으로 고객 동의를 자동화하는 법

서비스를 운영하다 보면 전화로 본인인증이나 개인정보 수집 동의를 받아야 하는 경우가 있습니다.
대표적인 시나리오:
- 보험: 계약 체결 전 전화로 "동의합니다" 확인
- 금융: 비대면 본인확인을 위한 ARS 인증
- 통신: 서비스 가입 시 본인확인 전화
- 무인매장: 무인판매기에서 고객이 070 번호로 전화 → 본인 확인 후 서비스 제공
- 설문조사: 전화로 동의 받고 설문 진행
기존에는 이런 시스템을 구축하려면 ARS 전문 업체에 수백만 원 들여 맡겨야 했습니다. 이제는 API 몇 줄로 직접 만들 수 있습니다.
두 가지 방식
방식 1: 아웃바운드 — 시스템이 고객에게 전화
서비스 → ClawOps API로 전화 발신 → 고객이 받음 → ARS 음성 안내 → 동의 (키패드/음성)
온라인으로 서비스 가입한 고객에게 시스템이 자동으로 전화를 걸어 동의를 받는 방식입니다.
방식 2: 인바운드 — 고객이 070 번호로 전화
고객이 070-XXXX-XXXX로 전화 → AI가 받음 → 본인 확인 → 동의 수집
고객이 안내된 070 번호로 직접 전화를 걸어 인증하는 방식입니다. 무인판매기나 키오스크에 번호를 표시해두면 됩니다.
두 방식 모두 ClawOps API로 구현할 수 있습니다.
방식 1: 아웃바운드 동의 수집 (AI 에이전트)
AI 에이전트가 고객에게 전화를 걸어 동의를 받는 방식입니다.
설치
pip install clawops[agent,openai]
환경변수
export CLAWOPS_API_KEY="sk_..."
export CLAWOPS_ACCOUNT_ID="AC..."
export OPENAI_API_KEY="sk-..."
코드
from clawops.agent import ClawOpsAgent, OpenAIRealtime
import asyncio
agent = ClawOpsAgent(
from_="07052350001", # 발급받은 070 번호
session=OpenAIRealtime(
system_prompt="""당신은 '시큐프라임' 본인확인 안내원입니다.
역할:
1. 고객 이름을 확인합니다 ("OOO 고객님 맞으시죠?")
2. 개인정보 수집·이용 동의 안내를 읽어줍니다:
"서비스 이용을 위해 성명, 연락처, 이용 내역을 수집합니다.
수집 목적은 본인 확인 및 서비스 제공이며, 보유 기간은 서비스
해지 후 1년입니다. 동의하시면 '동의합니다'라고 말씀해주세요."
3. 고객이 "동의합니다"라고 하면 "감사합니다. 동의가 완료되었습니다."
4. 거부하면 "알겠습니다. 동의 없이는 서비스 이용이 어렵습니다."
규칙:
- 통화는 녹음되고 있다고 안내합니다 ("이 통화는 동의 확인을 위해 녹음됩니다")
- 고객이 바쁘다고 하면 다른 시간에 다시 연락드리겠다고 합니다
- 동의/거부 외 다른 대화는 하지 않습니다""",
voice="marin",
language="ko",
),
)
async def main():
session = await agent.call("01012345678", timeout=30)
print(f"발신 중... (call_id: {session.call_id})")
await session.wait()
await agent.disconnect()
asyncio.run(main())
통화가 끝나면 녹음 파일과 트랜스크립트가 자동으로 생성됩니다. 동의 여부를 트랜스크립트에서 확인할 수 있습니다.
통화 결과 확인
from clawops import ClawOps
client = ClawOps()
# 트랜스크립트 조회
state = client.calls.get_transcript("CA1a2b3c4d5e6f7890")
if state.status == "completed":
for seg in state.segments or []:
print(f"[{seg.speaker}] {seg.text}")
# 동의 여부 판단
if "동의합니다" in seg.text:
print("✅ 동의 확인됨")
방식 2: 인바운드 본인인증 (웹훅 기반)
고객이 직접 070 번호로 전화를 걸어 인증하는 방식입니다. REST API와 웹훅을 사용합니다.
번호 발급
from clawops import ClawOps
client = ClawOps()
# 인증 전용 070 번호 발급
number = client.numbers.create(
webhook_url="https://my-server.com/verify-call"
)
print(f"인증 번호: {number.phone_number}")
# 이 번호를 무인매장/키오스크/웹페이지에 표시합니다
웹훅 서버
고객이 이 번호로 전화하면 웹훅이 호출됩니다. VoiceML로 ARS 시나리오를 구성합니다:
from fastapi import FastAPI, Request
from fastapi.responses import Response
app = FastAPI()
@app.post("/verify-call")
async def handle_verification_call(request: Request):
"""고객이 070 번호로 전화하면 호출됨"""
data = await request.form()
caller = data.get("From") # 고객 전화번호
# VoiceML로 ARS 시나리오 구성
voiceml = f"""<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ko-KR">
안녕하세요. 본인확인 인증 전화입니다.
이 통화는 본인확인을 위해 녹음됩니다.
</Say>
<Gather input="dtmf" numDigits="1"
action="/verify-consent" method="POST"
timeout="10">
<Say language="ko-KR">
개인정보 수집 및 이용에 동의하시면 1번을,
동의하지 않으시면 2번을 눌러주세요.
</Say>
</Gather>
<Say language="ko-KR">입력이 없어 전화를 종료합니다.</Say>
</Response>"""
return Response(content=voiceml, media_type="application/xml")
@app.post("/verify-consent")
async def handle_consent(request: Request):
"""고객이 키패드를 누르면 호출됨"""
data = await request.form()
digit = data.get("Digits")
caller = data.get("From")
call_id = data.get("CallSid")
if digit == "1":
# DB에 동의 기록 저장
save_consent(caller, call_id, agreed=True)
voiceml = """<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ko-KR">
동의해주셔서 감사합니다. 본인확인이 완료되었습니다.
이용해주셔서 감사합니다.
</Say>
</Response>"""
else:
save_consent(caller, call_id, agreed=False)
voiceml = """<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ko-KR">
동의하지 않으셨습니다.
동의 없이는 서비스 이용이 어려운 점 양해 부탁드립니다.
</Say>
</Response>"""
return Response(content=voiceml, media_type="application/xml")
통화료는 어떻게 되나?
| 방식 | 과금 기준 | 설명 |
|---|---|---|
| 아웃바운드 (시스템→고객) | 발신 통화 시간 | ARS 안내 + 동의까지 보통 30초~1분 |
| 인바운드 (고객→070) | 수신 통화 시간 | 마찬가지로 30초~1분 |
| 웹훅만 수신 (통화 연결 안 함) | 0원 | 착신 번호 확인만 하는 경우 |
Individual 플랜(월 19,000원) 기준 발신 100분, 수신 1,000분이 포함되어 있어서 하루 수십 건 정도는 추가 비용 없이 처리할 수 있습니다.
통화 녹음으로 법적 증거 확보
전화 동의는 녹음이 핵심입니다. ClawOps는 통화 녹음을 기본 제공합니다.
from clawops import ClawOps
client = ClawOps()
# 특정 통화의 녹음 파일 조회
call = client.calls.get("CA1a2b3c4d5e6f7890")
print(f"녹음 URL: {call.recording_url}")
print(f"통화 시간: {call.duration}초")
녹음 파일은 개인정보보호법에 따라 안전하게 보관되며, 동의 증빙 자료로 활용할 수 있습니다.
대량 동의 수집: 배치 발신
수백 명에게 동시에 동의 전화를 걸어야 하는 경우:
from clawops import ClawOps
import time
client = ClawOps()
customers = [
{"name": "김철수", "phone": "01012345678"},
{"name": "이영희", "phone": "01087654321"},
# ...
]
for customer in customers:
call = client.calls.create(
to=customer["phone"],
from_="07052350001",
url=f"https://my-server.com/consent-call?name={customer['name']}",
status_callback="https://my-server.com/call-status",
status_callback_event="initiated ringing answered completed",
)
print(f"{customer['name']}님 발신: {call.call_id}")
time.sleep(1) # 동시 발신 제한 준수
활용 사례
무인판매기 본인인증
무인판매기마다 070 번호를 부여하고, 고객이 전화하면 ARS로 본인 확인 후 판매기를 활성화합니다. Business 플랜(월 99,000원)이면 10회선까지 기본 포함이고, 추가 회선은 개당 1,000원입니다.
보험 청약 동의
보험 설계사가 대면 설명 후, 시스템에서 자동으로 고객에게 전화를 걸어 녹음된 동의를 받습니다. 금감원 모범규준에 따른 전화 동의 절차를 자동화할 수 있습니다.
의료 개인정보 동의
환자가 비대면 진료를 신청하면, 시스템이 전화로 개인정보 수집 동의를 받고 진료를 시작합니다.
시작하기
- ClawOps 가입 (3일 무료 Trial)
- 070 번호 발급
- 위 예제 코드에서 프롬프트/시나리오 수정
- 테스트 후 운영 배포
전화 동의를 수동으로 받고 계신가요? API로 자동화하면 시간도 줄고 법적 증빙도 확실해집니다.
관련 글 더 보기
소규모 사업자 AI 전화 도입 가이드: 월 19,000원으로 24시간 응대하기
카페, 병원, 부동산 등 소규모 사업장에서 AI 전화 응대를 월 19,000원에 도입하는 방법. 기존 ARS 대비 비용 비교와 업종별 프롬프트 예시를 제공합니다.
유즈케이스AI 콜센터 만들기: 스타트업이 KT 안 쓰고 구축하는 법
스타트업이 KT AICC 같은 엔터프라이즈 솔루션 없이 월 2만원대로 AI 콜센터를 구축하는 방법. API 기반으로 30분 만에 인바운드/아웃바운드 콜을 자동화합니다.
유즈케이스본인인증 받는 AI 전화 만들기 — DTMF + 음성 동의로 ARS 대체
한국 070 인바운드 + DTMF + 음성 동의로 본인인증을 한 통화에 끝내는 가이드. 기존 ARS 대비 자연스러움 + 자동 동의 수집 + 컴플라이언스.
유즈케이스정기 확인 전화 자동화 — 구독·결제·예약 리마인더 AI 통화
구독 갱신·결제 예정·예약 D-1 같은 정기 알림을 ClawOps 070 + AI 자동 전화로 처리. 이메일·SMS 보다 도달률 높고 대화형 confirm 가능.
유즈케이스학원 AI 상담 전화 만들기 — 학기·시간·비용 안내 + 상담 예약 자동화
어학원·입시학원·취미학원 — 070 + AI 로 커리큘럼·반편성·수강료·상담 일정 자동 응대. 카운셀러 인건비 절감 + 24시간 응답률 100%.