用途
drink-skill 面向 WeStoreCafe 点单场景,用于在智能体对话中引导用户完成从选品到支付的全流程。它把点单拆解为一组原子接口,每个接口绑定对应卡片组件,用户通过点击卡片完成选择、确认和支付。
主要能力
围绕用户意图,技能覆盖以下能力:
- 模糊意图推荐:用户表达“想喝点什么”等模糊需求时,调用 getRecommendedDrinks 返回精选饮品卡片。
- 关键词搜索:用户明确说出品名或品类时,调用 searchDrinks 返回搜索结果卡片。
- 查看详情与规格:用户点击卡片选中饮品后,调用 selectDrink 展示饮品详情卡片,包含规格选择。
- 确认规格生成订单:调用 confirmSku 生成订单确认卡(order-confirm-card),有地址时展示完整订单,无地址时展示空态入口。
- 地址管理与续跑:用户点击地址区域进入半屏填写,调用 saveAddress 保存并续跑订单;getAddress 用于查看默认地址。
- 订单确认与支付:confirmOrder 重新展示订单确认;payOrder 在订单 status=confirmed 时发起支付,返回支付成功卡片。
- 门店查询:用户询问门店或排队情况时,调用 getStoreStatus 返回门店状态卡片并实时刷新。
使用方式
用户通过自然语言表达意图,技能按意图分流:
- 模糊表达(“想喝/推荐”)触发 getRecommendedDrinks。
- 具体品名/品类触发 searchDrinks。
- 从卡片点击选中饮品触发 selectDrink,drinkId 由卡片 sendFollowUpMessage 传入。
- 询问门店/排队触发 getStoreStatus。
- 表达歧义短语(如“那个”)时先反问澄清,禁止猜测。
成功返回且绑定组件的接口必须展示卡片,禁止用纯文本列出卡片中的详情数据;可附加一句简短引导话术。
适用场景
适用于咖啡馆点单类小程序智能体,在对话中完成饮品推荐、搜索、规格确认、地址补填、下单支付和门店状态查询。
限制与约束
- 执行顺序:Agent 不能跳过 selectDrink 直接调 confirmSku,必须先有 selectDrink 返回的有效 drinkId;不能跳过 confirmSku 直接调 payOrder,必须先有 confirmed 状态的订单;payOrder 未返回成功前禁止宣布“已支付成功”。
- 数据来源:drinkId 必须来自 getRecommendedDrinks / searchDrinks / getAllDrinks 返回的 items[].drinkId 原值,orderId 必须来自 confirmSku / saveAddress / confirmOrder 返回的原值,均禁止编造。
- 支付限制:禁止并发调用 payOrder,须等上一笔结束后再发起下一笔。
- 枚举规格:所有枚举类规格值必须使用英文枚举(如 ice / hot),禁止使用中文 label。
- 地址处理:confirmSku 无论有无地址都直接返回订单确认卡,地址空态由卡片组件自行展示入口;Agent 无需主动调 getAddress 判断是否有地址。用户在地址为空时点击“确认下单”,payOrder 会返回 isError 提示缺少地址。
- getAllDrinks 供半屏页面加载全量数据,Agent 通常不直接调用。