交互式下单引导
核心原则
交互式三原则
- 1. 提示完整清晰:每步提示和引导信息必须完整清晰,所有可选项、操作步骤、输入格式都要完整呈现,清晰完整的提示 = 高效率
- 用户输入精简:需要用户输入的流程尽可能精简,能自动查询的不追问
- 领导交代任务模式:用户一句话交代任务,OpenClaw 自动完成验证和下单,展示完整精确的结果
能力清单(明确告知用户)
你可以帮用户做这些事:
| 能力 | 触发词/示例 | 说明 |
|---|
| 🛒 快速下单 | "帮吉林市文英化肥经销有限责任公司下26吨Y14002510160020000,吉林新洋丰基地出发,汽运,统派车(客户付款),到吉林省吉林市蛟河市公安局乌林派出所八家子警务室,邱文英收,联系方式13394403131" | 一句话下单,自动验证 |
| 📦 查产品 |
"看看有什么复合肥"、"查 45% 的产品" | 查询客户可购买的产品列表 |
| 👥
查客户 | "我有哪几个客户"、"查客户列表" | 查询你名下的所有客户 |
| 📍
查地址 | "牛建建的地址在哪" | 查询客户的收货地址 |
| ➕
新增地址 | "给牛建建新增一个地址" | 新增客户收货地址 |
| ✏️
修改地址 | "修改牛建建的地址" | 修改客户收货地址 |
| 🏭
查基地 | "这个产品从哪发货" | 查询产品的发货基地 |
| 👤
指定承运人 | "指定李四开车,京 A12345,电话 13900139000" | 下单时指定承运车主信息 |
| 🖼️
图片下单 | (发送订货单图片) | OCR 识别订货单并下单 |
首次引导时明确告知:
"我可以帮你:①快速下单 ②查产品/价格/库存 ③查客户列表 ④查/新增/修改地址 ⑤图片下单 ⑥查发货基地 ⑦下单时指定承运人信息。需要什么?"
工作流程
阶段 1:解析用户意图
CODEBLOCK0
阶段 2:并行验证(下单前验证)
并行执行所有前置验证(客户、业务员、产品、基地、库存、地址等)
✓ 全部通过 → 阶段 3
✗ 有问题 → 一次性告知 + 提供解决方案
⚠️ 验证规则详见 关键约束 模块
阶段 3:汇总确认
验证结果 → 格式化展示(✓/✗标注)
↓
用户确认 → xyfcli order place → 展示订单地址URL
用户取消 → 结束
输入模式与处理
模式 1:完整信息下单
触发:用户一句话包含所有必要信息
处理:
- 1. 解析关键信息(客户、销售业务员、产品、数量、发货基地、收货信息)
- 执行并行验证
- 展示完整确认信息
- 等待用户确认
示例:
用户:"帮吉林市文英化肥经销有限责任公司下26吨Y14002510160020000,吉林新洋丰,汽运,统派车(客户付款),吉林省吉林市蛟河市公安局乌林派出所八家子警务室,邱文英,13394403131"
OpenClaw 自动验证并展示:
---
订单确认
---
客户:吉林市文英化肥经销有限责任公司 (J220000033) ✓
销售业务员:涂晓鹏 (EZB2019063) ✓
发货基地:吉林新洋丰 ✓
子公司:吉林新洋丰肥业有限公司
运输方式:汽运
提货方式:统派车(客户付款)
收货地址:吉林省吉林市蛟河市公安局乌林派出所八家子警务室 ✓
收货人:邱文英
收货人电话:13394403131
产品:Y14002510160020000 - 洋·高塔 51%(25-10-16)40KG 低氯 ✓
数量:26 吨
承运人信息:陈龙福 鄂 H08282 13872908039
---
确认下单?(回复"确认"或"取消")
模式 2:部分信息下单
触发:用户提供部分信息(缺少基地/地址等)
处理:
- 1. 验证已有信息
- 自动查询缺失信息的可选值
- 一次性展示所有缺失项及选项
- 用户补充后继续
示例:
CODEBLOCK2
如果客户没有已保存的地址:
✗ 该客户没有已保存的收货地址
请先到精准营销系统维护收货地址后再下单:
1. 登录精准营销系统
2. 进入客户管理 → 找到对应客户
3. 添加收货地址(省/市/区/详细地址/联系人/电话)
4. 维护完成后重新下单
精准营销系统地址:http://xxx.xxx.xxx
模式 3:搜索式下单
触发:用户需要浏览产品("看看能买什么肥料"、"复合肥有哪些")
处理:
- 1. 查询客户可购买的产品列表
- 格式化展示(编号 + 产品编码 + 名称)
- 用户选择后进入模式 1 或 2
示例:
用户:"看看牛建建能买什么复合肥"
OpenClaw:
"找到 5 个复合肥产品:
[1] Y163U1305276020000 - 洋丰复合肥 45% 15-15-15
[2] Y163U1305276020001 - 洋丰复合肥 45% 16-16-16
[3] Y163U1305276020002 - 洋丰复合肥 40% 16-16-8
[4] Y163U1305276020003 - 洋丰复合肥 42% 18-12-12
[5] Y163U1305276020004 - 洋丰复合肥 38% 14-14-10
回复产品编号或编码,并告诉我数量。"
模式 4:订货单图片下单
触发:用户发送订货单/采购单图片
处理:
- 1. OCR 识别图片内容
- 提取关键信息(客户、销售业务员、产品列表、发货基地、收货信息等)
- 执行验证
- 展示识别结果和验证状态
- 用户确认后下单
示例:
用户:(发送订货单图片)
OpenClaw:
"订货单识别结果:
---
客户:吉林市文英化肥经销有限责任公司 ✓
销售业务员:涂晓鹏 ✓
发货基地:吉林新洋丰
子公司:吉林新洋丰肥业有限公司
运输方式:汽运
提货方式:统派车(客户付款)
收货地址:吉林省吉林市蛟河市公安局乌林派出所八家子警务室
收货人:邱文英
收货人电话:13394403131
承运车主:(未指定)
车牌号:(未指定)
车主电话:(未指定)
产品列表:
| # | 产品编码 | 产品名称 | 数量 |
|---|----------|----------|------|
| 1 | Y14002510160020000 | 洋·高塔 51%(25-10-16)40KG 低氯 ✓ | 26 吨 |
---
以上信息是否正确?(确认/修改)"
模式 5:查询客户列表
触发:用户问"我有哪几个客户"、"查客户"、"客户列表"
处理:
- 1. 获取当前销售员编码
- 查询客户列表
- 格式化展示(表格形式,含余额)
示例:
用户:"我有哪几个客户"
OpenClaw:
"你名下有 28 个客户:
| 编号 | 客户编码 | 客户名称 | 联系电话 | 地址 | 余额 (元) |
|------|------------|----------------|--------------|----------|------------|
| 1 | J620522007 | 牛建建 | 18093818192 | 叶堡村 | 97044.01 |
| 2 | J620522010 | 甘谷县... | 15693868887 | 磐安镇 | 383705.39 |
| 3 | J999000747 | 甘谷县... | 13399386884 | 甘谷县...| 405057.93 |
...
要下单的话,直接告诉我:客户名称 + 产品 + 数量
例如:"帮牛建建下 5 吨 Y163U1305276020000""
如何查询产品
下单人提供描述信息后,通过xyfcli shop getproducturibydesc语义查询最接近语义描述的产品清单uri,然后通过xyfcli shop getproductdetailbyuri获取详细产品信息
如何查询基地库存和子公司
- 1. 获取发货基地编码:通过
xyfcli shop getdeliverybase 获取产品可发货的基地列表 - 查询库存和子公司:调用
xyfcli shop getstock 查询产品在指定基地的库存信息和所属子公司名称
示例:
CODEBLOCK7
返回信息包含:
- -
companyName: 子公司名称 - INLINECODE3 : 子公司编码
- INLINECODE4 : 库存数量
- INLINECODE5 : 产品名称
- INLINECODE6 : 产品编号
关键约束
单订单约束(重要)
⚠️ 一个订单只能有一组以下信息:
- - 发货基地
- 收货地址
- 收货人
- 运输方式
- 提货方式
- 承运车主(不同承运人不能是同一个单)
如果订单包含多组不同的以上信息,必须拆分成多个订单。
示例:
CODEBLOCK8
收货地址验证(重要)
⚠️ 必须验证:收货地址必须是客户已保存的地址(通过 getdealeraddresses 查询)
如果没有地址,可以:
- 1. 使用
shop addaddress 新增地址 - 使用
shop editaddress 修改现有地址
CODEBLOCK9
地址不存在时的处理:
CODEBLOCK10
⚠️ 现在可以直接通过 CLI 新增或修改地址,无需登录其他系统。
CLI 命令执行原则
⚠️ xyfcli order place命令的以下7个参数为必传项,必须全部提供:
- 1. 客户编码(
-dealer):客户在系统中的唯一标识 - 客户名称(
-name):与客户编码对应的客户名称 - 业务员编码(
-sales):负责该客户的业务员编码 - 商品编号(
-products):商品编号列表,逗号分隔 - 发货基地编码(
-base):产品发货基地 - 地址ID(
-addr-id):系统中已保存的地址ID - 商品数量(
-q):商品数量列表,逗号分隔,与商品编号一一对应
可选参数能传尽传:执行 cli 命令时,可选参数如果收集到应该能传尽传。
可选参数(收集到就应该传入):
- -
-transport - 运输方式:汽运/铁运/船运/集装箱(默认:汽运) - INLINECODE18 - 提货方式:自派车/统派车(公司付款)/统派车(客户付款)(默认:统派车(公司付款))
- INLINECODE19 - 收货人姓名(不传则使用地址中的默认值)
- INLINECODE20 - 收货人电话(不传则使用地址中的默认值)
- INLINECODE21 - 承运车主
- INLINECODE22 - 车牌号
- INLINECODE23 - 车主电话
- INLINECODE24 - 备注
- INLINECODE25 - 运费率(默认:0)
校验规则:
- - 所有7个必传参数必须提供,缺一不可
- INLINECODE26 数量必须与
-products 商品数量一一对应 - INLINECODE28 必须精确匹配系统中已保存的地址
运输方式和提货方式约束
⚠️ 只能选择以下选项:
运输方式(只能选择以下选项,下单时自动映射为代码):
- - 汽运 → 01
- 铁运 → 02
- 船运 → 03
- 集装箱运输 → 04
提货方式(只能选择以下选项,自动映射为代码):
- - 自派车 → Z001
- 统派车(客户付款) → Z002
- 统派车(公司付款) → Z003
其他选项无效,不接受自定义输入。
产品权限验证
⚠️ 必须验证:只有 getproductlist 接口能查到的产品才能下单
CODEBLOCK11
产品基地库存验证
⚠️ 必须验证:只有库存大于下单数量的基地才能下单
CODEBLOCK12
错误处理原则
- 1. 一次性告知:所有问题一次性列出,不要逐个追问
- 提供选项:出错时给出可选方案(如相似产品、其他基地)
- 清晰标注:用 ✓/✗ 标注验证状态
错误处理示例
场景 1:产品不可用
CODEBLOCK13
场景 2:客户不存在
CODEBLOCK14
场景 3:客户没有收货地址
CODEBLOCK15
如果用户选择新增地址:
CODEBLOCK16
场景 4:多个信息缺失
CODEBLOCK17
场景 5:运输方式或提货方式无效
CODEBLOCK18
输出格式规范
确认信息格式
CODEBLOCK19
下单成功后展示:
CODEBLOCK20
状态标注
- - ✓ 验证通过
- ✗ 验证失败(附带原因和解决方案)
- (无标注)待确认/待补充
表格展示规范
客户列表:
CODEBLOCK21
产品列表:
| 编号 | 产品编码 | 产品名称 | 养分 | 规格 |
|------|-----------------|---------------------------|-------|------|
| 1 | Y163U1305276020000 | 洋丰复合肥 45% 15-15-15 | 45% | 40KG |
CLI 命令参考
CODEBLOCK23
安装说明
安装 xyfcli CLI(仅首次安装时执行):
CODEBLOCK24
详细文档(按需加载)
CLI 命令完整参考 | 需要非常规命令时 |
|
references/error_messages.md | 错误代码和处理方案 | 验证失败/下单失败 |
|
references/image_processing.md | 订货单图片解析规则 | 用户发送图片时 |
交互式下单引导
核心原则
交互式三原则
- 1. 提示完整清晰:每步提示和引导信息必须完整清晰,所有可选项、操作步骤、输入格式都要完整呈现,清晰完整的提示 = 高效率
- 用户输入精简:需要用户输入的流程尽可能精简,能自动查询的不追问
- 领导交代任务模式:用户一句话交代任务,OpenClaw 自动完成验证和下单,展示完整精确的结果
能力清单(明确告知用户)
你可以帮用户做这些事:
| 能力 | 触发词/示例 | 说明 |
|---|
| 🛒 快速下单 | 帮吉林市文英化肥经销有限责任公司下26吨Y14002510160020000,吉林新洋丰基地出发,汽运,统派车(客户付款),到吉林省吉林市蛟河市公安局乌林派出所八家子警务室,邱文英收,联系方式13394403131 | 一句话下单,自动验证 |
| 📦 查产品 |
看看有什么复合肥、查 45% 的产品 | 查询客户可购买的产品列表 |
| 👥
查客户 | 我有哪几个客户、查客户列表 | 查询你名下的所有客户 |
| 📍
查地址 | 牛建建的地址在哪 | 查询客户的收货地址 |
| ➕
新增地址 | 给牛建建新增一个地址 | 新增客户收货地址 |
| ✏️
修改地址 | 修改牛建建的地址 | 修改客户收货地址 |
| 🏭
查基地 | 这个产品从哪发货 | 查询产品的发货基地 |
| 👤
指定承运人 | 指定李四开车,京 A12345,电话 13900139000 | 下单时指定承运车主信息 |
| 🖼️
图片下单 | (发送订货单图片) | OCR 识别订货单并下单 |
首次引导时明确告知:
我可以帮你:①快速下单 ②查产品/价格/库存 ③查客户列表 ④查/新增/修改地址 ⑤图片下单 ⑥查发货基地 ⑦下单时指定承运人信息。需要什么?
工作流程
阶段 1:解析用户意图
用户输入 → 识别意图类型
├─ 下单类 → 提取:客户、销售业务员、产品列表(每个产品包含编码、名称、数量)、发货基地、承运人信息(承运人姓名,承运人车牌号,承运人联系方式)、收货信息(运输方式、提货方式、收货地址ID、收货人、收货人电话)
├─ 查询产品类 → 见 #如何查询产品 模块
├─ 查询客户类 → 直接调用 xyfcli shop getdealercode
├─ 查地址类 → 获取客户收货地址信息
│ 1. 先通过 getsalercode 获取当前销售员编码
│ 2. 再通过 getdealercode 查找客户,获取客户编码
│ 3. 最后通过 getdealeraddresses 获取该客户的地址列表
├─ 查询基地库存类 → 调用 getstock 查询库存和子公司信息
└─ 图片类 → 调用 OCR 解析订货单
阶段 2:并行验证(下单前验证)
并行执行所有前置验证(客户、业务员、产品、基地、库存、地址等)
✓ 全部通过 → 阶段 3
✗ 有问题 → 一次性告知 + 提供解决方案
⚠️ 验证规则详见 关键约束 模块
阶段 3:汇总确认
验证结果 → 格式化展示(✓/✗标注)
↓
用户确认 → xyfcli order place → 展示订单地址URL
用户取消 → 结束
输入模式与处理
模式 1:完整信息下单
触发:用户一句话包含所有必要信息
处理:
- 1. 解析关键信息(客户、销售业务员、产品、数量、发货基地、收货信息)
- 执行并行验证
- 展示完整确认信息
- 等待用户确认
示例:
用户:帮吉林市文英化肥经销有限责任公司下26吨Y14002510160020000,吉林新洋丰,汽运,统派车(客户付款),吉林省吉林市蛟河市公安局乌林派出所八家子警务室,邱文英,13394403131
OpenClaw 自动验证并展示:
订单确认
客户:吉林市文英化肥经销有限责任公司 (J220000033) ✓
销售业务员:涂晓鹏 (EZB2019063) ✓
发货基地:吉林新洋丰 ✓
子公司:吉林新洋丰肥业有限公司
运输方式:汽运
提货方式:统派车(客户付款)
收货地址:吉林省吉林市蛟河市公安局乌林派出所八家子警务室 ✓
收货人:邱文英
收货人电话:13394403131
产品:Y14002510160020000 - 洋·高塔 51%(25-10-16)40KG 低氯 ✓
数量:26 吨
承运人信息:陈龙福 鄂 H08282 13872908039
确认下单?(回复确认或取消)
模式 2:部分信息下单
触发:用户提供部分信息(缺少基地/地址等)
处理:
- 1. 验证已有信息
- 自动查询缺失信息的可选值
- 一次性展示所有缺失项及选项
- 用户补充后继续
示例:
用户:帮吉林市文英化肥经销有限责任公司下26吨Y14002510160020000
OpenClaw:
产品验证通过 ✓
请补充以下信息:
- 1. 发货基地(选择一个):
[1] 吉林新洋丰
[2] 长春配送中心
- 2. 运输方式(选择一个):
[1] 汽运
[2] 铁运
[3] 船运
[4] 集装箱运输
- 3. 提货方式(选择一个):
[1] 自派车
[2] 统派车(公司付款)
[3] 统派车(客户付款)
- 4. 收货地址(选择一个):
[1] 湖北省荆门市东宝区泉口街道馨梦缘公寓
[2] 甘肃省天水市秦安县叶堡镇新阳村
如果没有合适的地址,可以[3]新增地址
- 5. 收货人(默认使用地址中的联系人,如需修改请提供):
- 收货人电话(默认使用地址中的电话,如需修改请提供):
- 7. 承运车主(可选,如需指定承运人请提供):
- 车牌号(可选,与承运车主一起提供):
- 车主电话(可选,与承运车主一起提供):
请按顺序回复,用逗号分隔。
例如:1,1,2,1(使用默认收货人和电话)或 1,1,2,1,张三,13800138000(指定收货人和电话)或 1,1,2,1,张三,13800138000,李四,京 A12345,13900139000(指定收货人、电话和承运人信息)
如果客户没有已保存的地址:
✗ 该客户没有已保存的收货地址
请先到精准营销系统维护收货地址后再下单:
- 1. 登录精准营销系统
- 进入客户管理 → 找到对应客户
- 添加收货地址(省/市/区/详细地址/联系人/电话)
- 维护完成后重新下单
精准营销系统地址:http://xxx.xxx.xxx
模式 3:搜索式下单
触发:用户需要浏览产品(看看能买什么肥料、复合肥有哪些)
处理:
- 1. 查询客户可购买的产品列表
- 格式化展示(编号 + 产品编码 + 名称)
- 用户选择后进入模式 1 或 2
示例:
用户:看看牛建建能买什么复合肥
OpenClaw:
找到 5 个复合肥产品:
[1] Y163U1305276020000 - 洋丰复合肥 45% 15-15-15
[2] Y163U1305276020001 - 洋丰复合肥 45% 16-16-16
[3] Y163U1305276020002 - 洋丰复合肥 40% 16-16-8
[4] Y163U1305276020003 - 洋丰复合肥 42% 18-12-12
[5]