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

식당 AI 예약 전화 만들기 — 예약·메뉴·영업시간 자동 응대 (월 19,000원)

식당 AI 예약 전화 만들기 — 예약·메뉴·영업시간 자동 응대 (월 19,000원)

전화로 예약 받는 식당이라면, 영업 중에 전화 받느라 서빙 끊기고 영업 외에는 예약을 놓친다. ClawOps 070 + AI 로 24시간 예약·메뉴·영업시간 안내를 자동 응대. 월 19,000원으로 가능.

0. 사전 준비

  • ClawOps 가입 (https://claw-ops.com, 무료)
  • Python 3.10+
  • 가게 정보 (메뉴/영업시간/예약 정책)

1. 070 발급 + AI Agent 시작

from clawops import ClawOps
from clawops.agent import ClawOpsAgent, OpenAIRealtime

client = ClawOps()
number = client.numbers.create()
print(f"이 070 번호를 가게 입구·네이버 플레이스·인스타에 노출: {number.phone_number}")

2. 가게 컨텍스트 (store.json)

{
  "name": "OOO 식당",
  "type": "한식",
  "address": "서울시 강남구 OOO로 123",
  "hours": "11:30-22:00 (브레이크 15:00-17:00, 일요일 휴무)",
  "tables": [
    {"size": 2, "count": 6},
    {"size": 4, "count": 8},
    {"size": 6, "count": 3}
  ],
  "menu_summary": "한정식 코스 (런치 2.5만원, 디너 4.5만원), 단품 1.2-2만원, 와인 페어링 +3만원",
  "reservation_policy": "예약은 2시간 전까지, no-show 시 다음 예약 거절",
  "parking": "지하 주차 2시간 무료",
  "kid_friendly": true,
  "wheelchair_accessible": false
}

3. AI Agent system prompt 자동 생성

import json
store = json.load(open("store.json"))

SYSTEM_PROMPT = f"""
당신은 {store['name']} ({store['type']}) 의 예약 담당 직원입니다.

# 가게 정보
- 주소: {store['address']}
- 영업: {store['hours']}
- 메뉴 요약: {store['menu_summary']}
- 주차: {store['parking']}
- 아이 동반: {'가능' if store['kid_friendly'] else '불가'}
- 휠체어: {'가능' if store['wheelchair_accessible'] else '불가'}

# 좌석
{json.dumps(store['tables'], ensure_ascii=False)}

# 예약 정책
{store['reservation_policy']}

# 행동 규칙
- 짧게, 친절하게, 한국어로만 응대
- 예약 요청시: 날짜, 시간, 인원 받기 → 가능 여부 답변
- 가능하면 예약자 성함 + 연락처 받고 hang_up
- 메뉴/영업/주차 같은 단순 문의면 답변 후 hang_up
- 알 수 없는 질문 (혈자이 점심 메뉴 변경, 단체 예약 50명 등) 은
  "사장님께 확인 후 연락드린다" 후 끝내고 transcript 에 메모

# 절대 금지
- 가격 흥정 수락
- 영업시간 외 예약 받기
- 휴무일 예약 받기
- 결제 정보 받기
"""

4. 예약 가능 확인 — 자체 캘린더 연동

import datetime
from zoneinfo import ZoneInfo

# 예약 데이터 (SQLite/Postgres 등)
import sqlite3
db = sqlite3.connect("reservations.db")

def check_availability(date: str, time: str, party_size: int) -> bool:
    """동시 좌석 점유 체크."""
    dt = datetime.datetime.fromisoformat(f"{date}T{time}").astimezone(ZoneInfo("Asia/Seoul"))
    # 휴무일·영업시간 외 체크
    if dt.weekday() == 6:                        # 일요일
        return False
    if not (11 <= dt.hour < 22 and not (15 <= dt.hour < 17)):
        return False
    # 인원 수용 가능 체크
    booked = db.execute(
        "SELECT SUM(party_size) FROM reservations WHERE date = ? AND ABS(strftime('%s', time) - strftime('%s', ?)) < 5400",
        (date, time),
    ).fetchone()[0] or 0
    capacity = sum(t["size"] * t["count"] for t in store["tables"])
    return booked + party_size <= capacity

def create_reservation(date, time, party_size, name, phone):
    db.execute(
        "INSERT INTO reservations (date, time, party_size, name, phone) VALUES (?, ?, ?, ?, ?)",
        (date, time, party_size, name, phone),
    )
    db.commit()

5. tool 등록 후 serve

from clawops.agent.tools import tool

@tool
def check_availability_tool(date: str, time: str, party_size: int) -> dict:
    """가게 예약 가능 여부 확인. date=YYYY-MM-DD, time=HH:MM."""
    return {"available": check_availability(date, time, party_size)}

@tool
def create_reservation_tool(date: str, time: str, party_size: int, name: str, phone: str) -> dict:
    """예약 확정. AI 가 예약 가능 확인 후 호출."""
    create_reservation(date, time, party_size, name, phone)
    return {"reserved": True, "code": f"R{int(datetime.datetime.now().timestamp())}"}

ClawOpsAgent(
    from_=number.phone_number,
    session=OpenAIRealtime(
        system_prompt=SYSTEM_PROMPT,
        language="ko-KR",
        voice="alloy",
        tools=[check_availability_tool, create_reservation_tool],
    ),
).serve()

6. 통화 예시 (실제 대화 흐름)

손님: "여보세요, 내일 저녁 7시 4명 자리 있나요?"
AI: "내일 저녁 7시 4명, 확인해드리겠습니다. 잠시만요... 네, 가능하시네요. 
    예약자 성함과 연락처 알려주시겠어요?"
손님: "김OOO, 010-1234-5678 입니다."
AI: "네 김OOO 님, 내일 7시 4명으로 예약 확정해드렸습니다. 
    예약번호 R1234567 이고, 변경 필요하시면 이 번호로 다시 전화 주시면 됩니다. 
    감사합니다."
[hang_up]

7. 통화 결과 → Slack 또는 SMS 확인

# webhook 으로 통화 종료 이벤트 받기
@app.route("/clawops-event", methods=["POST"])
def on_event():
    e = request.json
    if e["event"] == "call.ended" and e["call"]["status"] == "answered":
        summary = e["call"]["summary"]
        # 점주한테 Slack/SMS 알림
        notify_owner(f"예약 통화: {summary}")

8. 비용 (월 100건 예약 기준)

  • ClawOps Individual ₩19,000/월 (수신 1,000분 포함 = 평균 통화 1분 × 100건 OK)
  • OpenAI Realtime 통화 시간만큼 (~₩100-200/분)
  • 합계 월 약 ₩40,000-50,000

9. 확장 — 외국인 손님 대응

session=OpenAIRealtime(
    system_prompt="기본 한국어. 손님이 영어/일본어/중국어로 시작하면 그 언어로 응대.",
    languages=["ko-KR", "en-US", "ja-JP", "zh-CN"],
)

한국 식당이 외국인 관광객 받기 좋아짐.

다음 단계

관련 글 더 보기

ClawOps AI 전화 API로 시작하기

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