本 Skill 为 AI 助手提供蘭泰式按摩(Lann Thai Massage)的完整预约能力,包括:
关键词:泰式按摩、预约、SPA、Lann、lann、蘭、兰泰、古法按摩、精油护理、草本热敷
本 Skill 支持三种调用模式,AI 应根据运行环境自动选择:
场景:本地或远程部署 lann-mcp-server
连接方式:
优势:符合 Model Context Protocol 标准,支持工具发现、类型安全
https://open.lannlife.com/mcphttps://open.lannlife.com/mcp/book/createapplication/json触发条件:用户询问门店信息、附近门店、特定地区门店等
支持的操作:
数据来源: org_store.json(75 家门店)
示例对话:
触发条件:用户询问服务项目、按摩类型、SPA 内容等
支持的操作:
数据来源: prod_service.json(28 项服务)
示例对话:
触发条件:用户明确表达预约意图并提供必要信息
必填参数:
参数名类型校验规则说明示例mobilestring/^1[3-9]\d{9}$/11 位中国大陆手机号"13812345678"storeNamestring必须与 org_store.json 中 name 字段完全一致门店名称"淮海店"serviceNamestring必须与 prod_service.json 中 name 字段完全一致服务项目名称"传统古法全身按摩-90分钟"countnumber1 <= count <= 20预约人数2bookTimestringISO 8601 格式,且晚于当前时间预约开始时间"2024-01-15T14:00:00"
工作流程:
意图识别:确认用户想要创建预约
参数收集:检查是否提供所有必填参数
query_stores 展示可选门店,让用户选择query_services 展示可选服务,让用户选择参数校验:
org_store.json 中存在(模糊匹配后需用户确认)prod_service.json 中存在(模糊匹配后需用户确认)构造请求:组装符合 API 规范的 JSON 请求体
选择调用模式:
执行调用:发送预约请求
处理响应:
示例对话:
json
{
"name": "门店名称",
"address": "详细地址",
"telephone": "联系电话",
"traffic": "交通指引",
"longitude": 经度,
"latitude": 纬度
}
关键字段:
name: 唯一标识符,创建预约时必须与此字段完全一致address:详细地址,用于地理位置匹配telephone:门店电话,用于用户咨询traffic:交通指引,包含地铁线路和出口信息longitude / latitude:经纬度坐标,可用于距离计算门店分布:
json
{
"name": "服务名称",
"desc": "服务描述"
}
关键字段:
name: 唯一标识符,创建预约时必须与此字段完全一致desc:服务详细描述,用于关键词匹配和用户理解服务分类:
分析用户输入,判断属于以下哪种意图:
如果用户意图是创建预约,但信息不完整:
缺少门店时:
org_store.json缺少服务时:
prod_service.json缺少时间时:
缺少手机号时:
在调用 API 之前,必须完成以下校验:
手机号校验:
python
import re
def validate_phone(mobile):
return bool(re.match(r'^1[3-9]\d{9}$', mobile))
门店名称校验:
python
def validate_store(store_name, stores):
# 精确匹配
if store_name in [s['name'] for s in stores]:
return True, store_name
# 模糊匹配
candidates = [s['name'] for s in stores if store_name in s['name'] or s['name'] in store_name]
if len(candidates) == 1:
return True, candidates[0]
elif len(candidates) > 1:
return False, f"找到多个匹配门店:{', '.join(candidates)},请指定具体门店"
else:
return False, f"未找到门店'{store_name}',请使用以下门店名称之一:{', '.join([s['name'] for s in stores[:10]])}..."
服务名称校验:
python
def validate_service(service_name, services):
# 精确匹配
if service_name in [s['name'] for s in services]:
return True, service_name
# 模糊匹配
candidates = [s['name'] for s in services if service_name in s['name'] or s['name'] in service_name]
if len(candidates) == 1:
return True, candidates[0]
elif len(candidates) > 1:
return False, f"找到多个匹配服务:{', '.join(candidates)},请指定具体服务"
else:
return False, f"未找到服务'{service_name}',请使用以下服务名称之一:{', '.join([s['name'] for s in services[:10]])}..."
人数校验:
python
def validate_count(count):
if isinstance(count, int) and 1 <= count <= 20:
return True
return False, "预约人数必须在 1-20 人之间"
时间校验:
python
from datetime import datetime
def validate_time(book_time):
try:
dt = datetime.fromisoformat(book_time)
if dt > datetime.now():
return True
return False, "预约时间必须晚于当前时间"
except ValueError:
return False, "时间格式不正确,请使用 ISO 8601 格式(如:2024-01-15T14:00:00)"
确保所有参数校验通过后,构造请求体:
json
{
"mobile": "13812345678",
"storeName": "淮海店",
"serviceName": "传统古法全身按摩-90分钟",
"count": 2,
"bookTime": "2024-01-15T14:00:00"
}
优先级顺序:
https://open.lannlife.com/mcphttps://open.lannlife.com/mcp/book/createMCP 模式示例(伪代码):
python
# 假设 MCP 工具已注册
result = mcp_tools.create_booking(
mobile="13812345678",
storeName="淮海店",
serviceName="传统古法全身按摩-90分钟",
count=2,
bookTime="2024-01-15T14:00:00"
)
直连 API 模式示例:
python
import requests
response = requests.post(
"https://open.lannlife.com/mcp/book/create",
headers={"Content-Type": "application/json"},
json={
"mobile": "13812345678",
"storeName": "淮海店",
"serviceName": "传统古法全身按摩-90分钟",
"count": 2,
"bookTime": "2024-01-15T14:00:00"
}
)
result = response.json()
成功响应:
json
{
"success": true,
"bookingId": "BOOK123456",
"message": "预约成功!",
"startTime": "2024-01-15T14:00:00",
"endTime": "2024-01-15T15:30:00",
"storeInfo": {
"name": "淮海店",
"address": "上海市黄浦区进贤路216号(近陕西南路)",
"telephone": "021-62670235",
"traffic": "地铁1号线陕西南路1号口出,沿陕西南路走到进贤路右转约100m"
},
"serviceInfo": {
"name": "传统古法全身按摩-90分钟",
"desc": "通过独特的推、拉、蹬、摇、踩等手法,还有大量被动瑜伽的动作,打开韧带,释放疲劳,让肌肉的疼痛与紧绷得到真正缓解,实现从身到心的全面放松。"
}
}
AI 回复模板:
text
✅ 预约成功!
📋 预约详情:
- 预约 ID:BOOK123456
- 门店:淮海店
- 地址:上海市黄浦区进贤路216号(近陕西南路)
- 电话:021-62670235
- 服务:传统古法全身按摩-90分钟
- 时间:2024-01-15 14:00 - 15:30
- 人数:2 人
🚇 交通指引:
地铁1号线陕西南路1号口出,沿陕西南路走到进贤路右转约100m
💡 温馨提示:
- 请提前 10 分钟到店
- 如需取消或改期,请至少提前 1 小时联系门店
- 祝您享受愉快的按摩体验!
失败响应处理:
错误场景错误消息示例AI 应对策略手机号格式错误"请输入正确的11位中国大陆手机号"提示用户重新输入正确的手机号门店不存在"未找到匹配的门店"列出可用门店供用户选择服务不存在"未找到匹配的服务项目"列出可用服务供用户选择人数超出范围"预约人数必须在1-20人之间"提示用户调整人数时间格式错误"预约时间格式不正确"提供正确的时间格式示例时间已过期"预约时间必须晚于当前时间"提示用户选择未来时间API 服务器错误"HTTP 500 Internal Server Error"建议用户稍后重试网络错误"网络连接失败"检查网络连接,建议重试
错误类型HTTP 状态码错误消息处理建议参数校验失败400具体校验错误信息修正参数后重试门店/服务不存在404"未找到匹配的门店/服务"重新选择门店/服务时间冲突409"该时段已被预约"选择其他时间服务器错误500"内部服务器错误"稍后重试网络超时504"请求超时"检查网络后重试
可重试错误:网络超时、服务器错误(500/502/503/504)
不可重试错误:参数校验失败、资源不存在
storeName 和 serviceName 必须与 JSON 文件中的 name 字段 完全一致YYYY-MM-DDTHH:mm:ss)2024年1月15日 14:00)****org_store.json 最新版本为准prod_service.json 最新版本为准官方文档:参考 references/api_reference.md
测试脚本:参考 scripts/test_booking.py
数据文件:
org_store.jsonprod_service.json预约模板:参考 assets/booking_template.md