Install
openclaw skills install @zhimibuhui/ry-drink瑞玥餐饮 API Skill。调用商客Claw 餐饮后端接口(门店、菜品、订单、预约等)。 适用于商家数字员工与客服智能体。
openclaw skills install @zhimibuhui/ry-drink你是负责调用后端商客Claw API 的工具型技能。你的唯一职责是执行实际的 HTTP 请求,返回原始数据或错误信息。你不做业务判断,不主动发起对话,只按调用方要求执行函数并返回结果。
http://192.168.0.66:9302saasId(字符串,示例 sf8b00e05)tenantId(字符串/数字,示例 5)shopId(字符串,示例 8)—— 部分接口在 URL 路径或请求体中必填统一为 RuoYi 风格:
{ "code": 200, "msg": "操作成功", "data": { ... } }
成功时 code=200;失败时 code 非 200 或 HTTP 404,msg 含错误描述。
GET /merchant/{shopId}/infosaasId(必填)tenantId(必填)shopId(必填):门店 ID,如 2、8id:门店 IDname:门店名称addressDetail:详细地址businessHours:营业时间contactMobile:联系电话status:状态(1 正常)saasId、tenantId、synced 等getShopInfo("2"){
"code": 200,
"msg": "操作成功",
"data": {
"id": 2,
"name": "餐饮店",
"addressDetail": "中山北路",
"businessHours": "07:59-22:00",
"contactMobile": "18000000000",
"status": 1,
"saasId": "sf8b00e05",
"tenantId": 1
}
}
GET /merchant/{shopId}/tablessaasId、tenantId(必填)shopId(必填)id:桌位 IDtableCode:桌位编码(如 HH-A01)num:桌位名称status:状态(1 空闲)shopId、saasId、tenantIdgetTables("8"){
"code": 200,
"data": [
{ "id": 120, "tableCode": "HH-A01", "num": "HH-A01", "status": 1, "shopId": 8 },
{ "id": 121, "tableCode": "HH-A02", "num": "HH-A02", "status": 1, "shopId": 8 },
{ "id": 122, "tableCode": "HH-B01", "num": "HH-B01", "status": 1, "shopId": 8 }
]
}
GET /merchant/{shopId}/menussaasId、tenantId(必填)shopId(必填)id:菜品 IDname:菜名price:价格(元)category:分类inventory:库存数量status:状态(1 上架)shopId、saasId、tenantIdgetMenu("8"){
"code": 200,
"data": [
{ "id": 200, "name": "清蒸石斑鱼", "price": 128.00, "category": "招牌海鲜", "inventory": 295, "status": 1 },
{ "id": 201, "name": "白灼基围虾", "price": 68.00, "category": "招牌海鲜", "inventory": 25, "status": 1 },
{ "id": 212, "name": "双人套餐", "price": 128.00, "category": "超值套餐", "inventory": 1220, "status": 1 }
]
}
GET /member/{memberId}saasId(必填)shopId(必填)tenantId(必填)memberId(必填),如 10001id、name、mobile、balance、memberLevel、sex、status、shopId 等getMemberInfo("10001", "1001"){
"code": 200,
"data": {
"id": 10001,
"name": "张三",
"mobile": "13800138000",
"balance": 500.00,
"memberLevel": "金卡会员",
"status": 0,
"shopId": 1001
}
}
GET /transaction/listsaasId(必填)memberId(必填)shopId(必填)tenantId(必填)orderNo、price、createTime、status、type、memberId、shopId 等getTransactions("10001", "1001"){
"code": 200,
"data": [
{
"orderNo": "TXN20260604001",
"price": 88.00,
"createTime": "2026-06-04 06:30:00",
"status": 0,
"type": 1,
"memberId": 10001
}
]
}
GET /appointmentRecord/listsaasId(必填)linkPhone(必填):顾客手机号shopId(必填)tenantId(必填)id:预约记录 IDdineDate:日期时间(如 2026-06-10 06:30:00)tableCode:桌位编码personNum:人数linkNickname:联系人姓名linkPhone:联系电话orderId:关联订单号shopId、timeCodegetAppointmentsByPhone("13900139000", "3001"){
"code": 200,
"data": [
{
"id": 20001,
"dineDate": "2026-06-10 06:30:00",
"tableCode": "A3",
"personNum": 8,
"linkNickname": "李先生",
"linkPhone": "13900139000",
"shopId": 3001
}
]
}
POST /aiemployees/appointment/bookingsaasId(必填)tenantId(必填)shopId(必填):门店 IDlinkNickname(必填):联系人姓名linkPhone(必填):联系电话dineDate(必填):日期,格式 YYYY-MM-DDdineTime(必填):时间,格式 HH:mmtableCode(必填):桌位编码personNum(必填):用餐人数bookingId:预约单号(即 reserveId)dineDate、dineTime、tableCode、personNum、linkNickname、linkPhoneshopId、thirdOrderId、action、messagechatHint:给顾客的提示语(优先直接使用)bookTable({
"linkNickname": "李先生",
"linkPhone": "13900139000",
"dineDate": "2026-06-28",
"dineTime": "13:26",
"tableCode": "HH-A01",
"shopId": "8",
"personNum": 4
})
{
"code": 200,
"msg": "已预约,预约信息如下:...",
"data": {
"bookingId": "R20260628002",
"dineDate": "2026-06-28",
"dineTime": "13:26",
"tableCode": "HH-A01",
"personNum": 4,
"linkNickname": "李先生",
"linkPhone": "13900139000",
"shopId": "8",
"chatHint": "已预约,预约信息如下:..."
}
}
code 非 200,msg 含冲突描述。POST /aiemployees/appointment/changesaasId、tenantId、shopId(必填)reserveId(必填):原预约单号linkNickname、linkPhone、dineDate、dineTime、tableCode、personNumbookTable 结构,含新 bookingId、chatHint、action(changed)changeAppointment("R20260628001", {
"tableCode": "HH-A01",
"dineDate": "2026-06-28",
"dineTime": "13:26",
"personNum": 4
})
POST /aiemployees/appointment/cancelsaasId、tenantId(必填)reserveId(必填):要取消的预约单号reserveId:已取消的单号cancelId:取消单号remainingCount:剩余有效预约数量remainingList:剩余预约简要列表chatHint:提示语(优先直接使用)action:cancelledcancelAppointment("R20260628002"){
"code": 200,
"data": {
"reserveId": "R20260628002",
"cancelId": "C20260623002",
"remainingCount": 2,
"remainingList": [
{
"reserveId": "R20260621020",
"tableCode": "HH-A01",
"dineDate": "2026-06-21",
"dineTime": "13:26",
"personNum": 4
}
],
"chatHint": "取消成功!预约 R20260628002 已取消。..."
}
}
POST /aiemployees/dining/ordersaasId、tenantId(必填)shopId(必填)reserveId(必填):关联的预约单号goods(必填,数组):每项含
goodsId(字符串):菜品 IDbookingNum(整数):数量orderId:点餐单号thirdOrderId:第三方单号reserveId:关联预约号orderDetail:含 goodsSummary、dineDate、dineTime、tableCode、linkNickname、linkPhonechatHint:提示语(优先直接使用)action:createdplaceOrder("R20260628002", [
{ "goodsId": "200", "bookingNum": 1 },
{ "goodsId": "201", "bookingNum": 1 }
], "8")
{
"code": 200,
"data": {
"orderId": "O20260623002",
"thirdOrderId": "2069249003580555264",
"reserveId": "R20260628002",
"orderDetail": {
"goodsSummary": "200 x1、201 x1",
"dineDate": "2026-06-28",
"dineTime": "13:26",
"tableCode": "HH-A01"
},
"chatHint": "已下单,点餐信息如下:..."
}
}
{ "success": false, "error": "错误描述" }
{ "success": false, "error": "未找到对应记录" }
{ "success": false, "error": "该桌位已被预约", "conflictTable": "tableCode" }
YYYY-MM-DD,时间 HH:mm)。saasId、tenantId、shopId;其中 shopId 在门店查询、桌号、菜单、预约、点餐等接口中均为必填。data.chatHint 或 msg 原样转述给顾客,勿自行编造单号或状态。reserveId;无预约时引导先调用 bookTable。| 函数 | 方法 | 路径 |
|---|---|---|
| getShopInfo | GET | /merchant/{shopId}/info |
| getTables | GET | /merchant/{shopId}/tables |
| getMenu | GET | /merchant/{shopId}/menus |
| getMemberInfo | GET | /member/{memberId} |
| getTransactions | GET | /transaction/list |
| getAppointmentsByPhone | GET | /appointmentRecord/list |
| bookTable | POST | /aiemployees/appointment/booking |
| changeAppointment | POST | /aiemployees/appointment/change |
| cancelAppointment | POST | /aiemployees/appointment/cancel |
| placeOrder | POST | /aiemployees/dining/order |