← 블로그 목록
유즈케이스2026-06-03

정기 확인 전화 자동화 — 구독·결제·예약 리마인더 AI 통화

정기 확인 전화 자동화 — 구독·결제·예약 리마인더 AI 통화

이메일·SMS 리마인더는 안 봄. 사람이 전화 걸기엔 너무 많음. ClawOps 070 + AI 가 매일 자동으로 정기 확인 콜 — 도달률 높고 대화형으로 즉시 confirm/취소까지.

0. 활용 예

  • SaaS 구독 만료 D-7 알림
  • 정기 결제 카드 만료 D-3 알림
  • 의료/미용 예약 D-1 확인 콜
  • 학원 등록 D-7 자동 콜
  • 부동산 계약 만료 D-30 알림

1. 크론 잡 — D-1 예약 confirm

# scripts/reminder_d1.py
import datetime
from zoneinfo import ZoneInfo
from clawops import ClawOps

client = ClawOps()

def run_d1_reminders():
    tomorrow = datetime.datetime.now(ZoneInfo("Asia/Seoul")) + datetime.timedelta(days=1)
    appointments = db.execute(
        "SELECT * FROM appointments WHERE date = ? AND status = 'confirmed'",
        (tomorrow.strftime("%Y-%m-%d"),),
    ).fetchall()
    
    for appt in appointments:
        client.calls.create(
            to=appt['phone'], from_=KOREA_070,
            agent_config={
                "provider": "openai-realtime",
                "language": "ko-KR",
                "system_prompt": D1_REMINDER_PROMPT.format(
                    name=appt['name'],
                    clinic="OOO 치과",
                    date=appt['date'],
                    time=appt['time'],
                    appointment_id=appt['id'],
                ),
                "tools": [confirm_attendance, request_reschedule, mark_cancel],
                "max_duration_seconds": 90,
            },
            metadata={"appointment_id": appt['id']},
        )

D1_REMINDER_PROMPT = """
당신은 {clinic} 의 예약 확인 직원입니다.

# 목적
내일({date} {time}) {name} 님의 예약을 확인합니다.

# 첫 발화
"안녕하세요, {clinic} 입니다. {name} 님 내일 {time} 예약 확인 전화드렸어요. 
예정대로 오실 수 있으실까요?"

# 절차
- 응답이 "네/올게요" → confirm_attendance tool → 정중히 인사 + hang_up
- "시간 바꿀게요" → request_reschedule tool, 가능 시간 받기
- "취소" → mark_cancel tool + 사유 받기
- 통화 안 받음 → 자동으로 voicemail 메모 + 다음 시도

# 규칙
- 짧게 (90초 이내)
- 한국어
- 변경·취소 사유 캐묻지 말 것 ("알겠습니다" 후 처리)
"""

2. tools

from clawops.agent.tools import tool

@tool
def confirm_attendance(appointment_id: int) -> dict:
    db.execute("UPDATE appointments SET reminded_at = ? WHERE id = ?",
               (time.time(), appointment_id))
    return {"confirmed": True}

@tool
def request_reschedule(appointment_id: int, preferred_date: str, preferred_time: str) -> dict:
    db.execute("INSERT INTO reschedule_requests (apt_id, date, time) VALUES (?, ?, ?)",
               (appointment_id, preferred_date, preferred_time))
    notify_slack(f"리스케줄: 예약 {appointment_id}{preferred_date} {preferred_time}")
    return {"queued": True}

@tool
def mark_cancel(appointment_id: int, reason: str = "") -> dict:
    db.execute("UPDATE appointments SET status = 'cancelled', cancel_reason = ? WHERE id = ?",
               (reason, appointment_id))
    return {"cancelled": True}

3. 통화 예시 (정상 confirm)

AI: "안녕하세요, OOO 치과입니다. 김OOO 님 내일 오후 3시 예약 확인 전화드렸어요. 
    예정대로 오실 수 있으실까요?"
환자: "네, 갈게요."
AI: "네 감사합니다. 5분 전 도착 부탁드릴게요. 내일 뵙겠습니다."
[hang_up]

4. 통화 예시 (취소)

AI: "안녕하세요, OOO 치과입니다. 김OOO 님 내일 오후 3시 예약 확인..."
환자: "아 죄송한데 일이 생겨서 못 갈 것 같아요."
AI: "알겠습니다, 그럼 예약 취소해드릴게요. 다음에 다시 일정 잡고 싶으실 때 언제든 전화 주세요. 감사합니다."
[hang_up]

5. 구독 갱신 D-7 리마인더 — 결제 confirm

RENEWAL_PROMPT = """
당신은 OOO 구독서비스의 갱신 안내원입니다.

# 목적
{name} 님의 구독이 {expiry_date} 만료됩니다. 갱신 의사 확인.

# 첫 발화
"안녕하세요, OOO 입니다. {name} 님 구독이 {expiry_date} 만료 예정이라 알려드려요. 
계속 이용하실 거면 자동 갱신 처리해드릴까요?"

# 절차
- "네/계속" → confirm_renewal → 다음 결제일 안내 + hang_up
- "취소" → mark_cancel_subscription + 사유 받기 (선택)
- "나중에" → schedule_followup (며칠 후 다시 콜)

# 규칙
- 60초 이내
- 가격 인상 정보 안내 (있다면 한 줄)
- 결제 카드 정보 받지 말 것 (사이트로 안내)
"""

6. 비용

  • ClawOps Individual ₩19,000/월 (월 100건 리마인더 30-50분)
  • 일 100 콜 이상은 Business ₩99,000/월

7. 효과

  • 예약 no-show 율 -30~50%
  • 구독 갱신 confirm 율 ↑
  • 이메일·SMS 대비 도달률 2-3x

다음 단계

관련 글 더 보기

ClawOps AI 전화 API로 시작하기

070 번호 발급부터 AI 음성 통화까지, REST API 몇 줄이면 됩니다.