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

카페 AI 주문·예약 전화 만들기 — 메뉴·테이크아웃·이벤트 자동 응대

카페 AI 주문·예약 전화 만들기 — 메뉴·테이크아웃·이벤트 자동 응대

피크 시간에 바리스타가 전화 받으면서 음료 만들면 둘 다 망한다. ClawOps 070 + AI 로 메뉴/운영시간/테이크아웃 예약 자동 응대. 핵심 통화만 사람이 받게 분리.

0. 사전 준비

  • ClawOps 가입
  • Python 3.10+
  • 메뉴/운영시간 정보

1. 070 발급 + 메뉴 데이터 정리

from clawops import ClawOps
client = ClawOps()
number = client.numbers.create()

cafe.json:

{
  "name": "OOO 카페",
  "hours": "월-일 08:00-22:00 (LO 21:30)",
  "address": "서울 강남구 OOO로 12, 1층",
  "parking": "건물 1시간 무료",
  "menu": {
    "coffee": [
      {"name": "에스프레소", "price": 4000},
      {"name": "아메리카노", "price": 4500},
      {"name": "라떼", "price": 5500},
      {"name": "콜드브루", "price": 6000}
    ],
    "dessert": [
      {"name": "크루아상", "price": 4500, "stock_today": 12},
      {"name": "스콘", "price": 4000, "stock_today": 8},
      {"name": "치즈케이크 조각", "price": 7500, "stock_today": 5}
    ]
  },
  "takeout": {"available": true, "min_order": 0, "lead_time_min": 10},
  "events": ["6월 한정 망고 빙수 출시"]
}

2. system prompt

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

SYSTEM_PROMPT = f"""
당신은 {cafe['name']} 의 바리스타입니다.

# 가게 정보
- 운영시간: {cafe['hours']}
- 위치: {cafe['address']}
- 주차: {cafe['parking']}
- 이벤트: {', '.join(cafe['events'])}

# 메뉴
커피: {json.dumps([f"{m['name']} {m['price']}원" for m in cafe['menu']['coffee']], ensure_ascii=False)}
디저트: {json.dumps([f"{m['name']} {m['price']}원 (오늘 {m['stock_today']}개 남음)" for m in cafe['menu']['dessert']], ensure_ascii=False)}

# 테이크아웃
- 가능 시간: 운영시간 내
- 준비 시간: 약 10분
- 주문하면 take_takeout_order tool 호출 → 매장 POS 로 자동 전송

# 행동 규칙
- 짧고 친절하게
- 메뉴/가격/운영시간 답변
- 테이크아웃 주문 받으면 항목·수량 확정 후 take_takeout_order
- 픽업 시간 안내 (현재 + 10분 권장)
- 디저트 재고 다 떨어진 거 묻는 손님한테는 정중히 안내

# 절대 금지
- 가격 흥정·할인
- 결제 카드 정보 받기 (현장 결제)
- 단체 케이터링·대량 주문 — escalate_to_owner tool 사용

# 첫 발화
"{cafe['name']} 입니다, 무엇을 도와드릴까요?"
"""

3. tool — 테이크아웃 주문 + 사장 escalate

from clawops.agent.tools import tool
import datetime
from zoneinfo import ZoneInfo

@tool
def take_takeout_order(items: list, customer_name: str, customer_phone: str) -> dict:
    """테이크아웃 주문 등록. items=[{name, qty}], POS 에 전송."""
    now = datetime.datetime.now(ZoneInfo("Asia/Seoul"))
    pickup = now + datetime.timedelta(minutes=10)
    # POS API 호출 or DB insert
    order_id = pos.create_order(items=items, type="takeout", 
                                 customer={"name": customer_name, "phone": customer_phone},
                                 pickup_at=pickup.isoformat())
    return {"order_id": order_id, "pickup_at": pickup.strftime("%H:%M"), 
            "total": sum(item['qty'] * MENU_PRICE[item['name']] for item in items)}

@tool
def escalate_to_owner(reason: str) -> dict:
    """단체·케이터링·기타 escalate. 사장 SMS."""
    client.messages.create(
        to=cafe['owner_phone'], from_=number.phone_number,
        body=f"[escalation] {reason}",
    )
    return {"escalated": True}

4. serve

from clawops.agent import ClawOpsAgent, OpenAIRealtime

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

5. 통화 예시

손님: "안녕하세요, 라떼 2잔 테이크아웃 되나요?"
AI: "네 가능합니다. 라떼 2잔 ₩11,000 이고요, 픽업 시간 10분 정도 걸려요. 
    혹시 크루아상이나 스콘 같이 챙겨드릴까요? 오늘 크루아상 12개, 스콘 8개 남았어요."
손님: "크루아상 2개 추가요."
AI: "라떼 2 + 크루아상 2, 총 ₩20,000 입니다. 
    성함과 연락처 알려주시면 픽업 시 호명해드릴게요."
손님: "박OO, 010-1234-5678"
AI: "네 박OO 님, 약 10분 후 픽업 가능하시고요, 매장에서 결제하시면 됩니다. 
    감사합니다."
[hang_up + POS 자동 전송]

6. POS 연동

스타벅스·이디야·자체 POS 시스템에 따라 다름. 일반적인 패턴:

  • POS API (REST/Webhook) 사용 — 주문 push
  • POS API 없으면 매장 태블릿에 Slack/SMS 알림 → 바리스타가 수동 입력

7. 비용

  • ClawOps Individual ₩19,000/월 (수신 1,000분 = 평균 200-300건 통화)
  • OpenAI Realtime 통화 시간만큼

8. 영업 외 부재중 자동 안내

# 영업시간 외 system_prompt
"""
지금은 운영시간이 아닙니다. 운영시간은 08:00-22:00 이고요. 
이벤트나 단체 주문 문의는 메모 남겨주시면 첫 영업일에 연락드릴게요.
"""

다음 단계

관련 글 더 보기

ClawOps AI 전화 API로 시작하기

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