这是一个用于处理购物需求的 skill,支持用户在场购买和不在场预约购买两种场景。
当用户对话中包含"买"字时,自动触发此 skill。
配置文件位于 seap.config.json,包含以下配置项:
{
"authCode": "your_auth_code_here",
"addresses": [
{
"name": "收货人姓名",
"phone": "135xxxxxxxx",
"country": "CN",
"province": "广东省",
"city": "深圳市",
"district": "龙岗区",
"detail": "详细地址"
}
],
"autoPush": {
"enabled": true,
"channel": "webchat"
}
}
依赖 scripts/seap-cli.js 执行相关命令。技能可在普通环境中运行,无需acpx运行时。
search - 搜索商品
aipay - 执行购买(基于确认信息)
执行命令进入skill目录
cd ~/.openclaw/workspace/skills/seap-shopping
```bash
node scripts/seap-cli search --sessionId=${openclaw当前sessionId} --intent=${queryGoodsIntention} --format md
```
${openclaw当前sessionId}.json 文件对应序号的商品,获取商品 "skuId",从mercInfo的id字段中获取"mercInfoId"
seap.config.json 读取当前收货地址数据结构
seap.config.json 文件
${sessionId}_confirmed.json,包含商品和确认后的地址信息
```bash
node scripts/seap-cli aipay --sessionId=${openclaw当前sessionId} --skuId=${skuId} --quantity=${quantity} --mercInfoId=${mercInfoId}
```
${sessionId}_confirmed.json 确认文件
${sessionId}.json 作为最终购买结果
提取用户意图关键词原文为"queryGoodsIntention",当前商品数量为"quantity"
执行命令
```bash
node scripts/seap-cli search --sessionId=${sessionId} --intent=${queryGoodsIntention} --format md
```
${sessionId}.json 文件获取对应商品信息,获取商品 "skuId",从mercInfo的id字段中获取"mercInfoId"
seap.config.json 读取当前收货地址数据结构
seap.config.json 文件
${sessionId}_confirmed.json,包含商品和确认后的地址信息
# 步骤1:确认购买时间
系统解析用户原始时间表达式(如"1分钟后")
计算确切的执行时间戳
# 步骤2:发送确认消息
"⏰ 购买时间确认
您选择的商品:[商品名称]
预计购买时间:[时间表达式] (约[具体时间])
请确认是否继续预约购买:
# 步骤3:等待用户确认
用户回复确认、修改时间或取消
# 步骤4:处理用户选择
系统解析用户原始时间表达式(如"1分钟后")计算确切的执行时间戳,自动创建 OpenClaw cron 任务
任务配置:
{
"name": "预约购买 - [商品名称]",
"schedule": {
"kind": "at",
"at": "[ISO格式的执行时间]"
},
"payload": {
"kind": "agentTurn",
"message": "你正在执行一个定时购买任务。
任务信息:
请按以下步骤完成购买并推送结果:
node scripts/seap-cli aipay --sessionId=${原sessionKey} --skuId=${skuId} --quantity=${quantity} --mercInfoId=${mercInfoId}
从 ${原sessionKey}.json 文件读取购买结果
使用 sessions_send 将购买结果发送到原始会话
"timeoutSeconds": 120
},
"sessionTarget": "current",
"deleteAfterRun": true,
"delivery": {
"mode": "announce"
}
}
# ⚠️ 重要说明:
# 1. delivery.mode 必须设置为 "announce" 或 "webhook" 以便推送结果
# 2. payload 中的 message 必须包含完整的结果推送逻辑
# 3. 必须使用 sessions_send 工具将结果推送到原会话
9.提示用户任务已创建
"✅ 预约购买任务已创建!
📦 商品信息
📍 收货地址
[收货地址]
⏰ 执行时间
[时间表达式] (约[具体时间])
系统将在指定时间自动执行购买,并将结果通知您。"
```
由于使用 sessionTarget="current",购买结果会自动显示在当前会话
无需手动使用 sessions_send 推送结果
Agent只需执行购买命令,结果会自动呈现给用户
# 步骤1:定时任务触发购买
系统自动执行执行命令
```bash
node scripts/seap-cli aipay --sessionId=${原sessionKey} --skuId=${skuId} --quantity=${quantity} --mercInfoId=${mercInfoId}
```
# 步骤2:生成完整购买结果
{
"sessionId": "${sessionId}",
"skuId": "[商品SKU]",
"productName": "[商品名称]",
"productPrice": [价格],
"orderId": "[生成的订单号]",
"success": [布尔值],
"address": "[收货地址]",
"executedAt": "[执行时间]",
"executionType": "scheduled"
}
# 步骤3:保存购买结果
更新 ${sessionId}.json 文件,包含完整的购买信息
# 步骤4:自动生成结果消息
生成用户友好的通知消息:
"✅ 预约购买任务已完成!
📦 商品信息
📋 订单信息
📍 收货地址
[收货地址]
⏰ 完成时间
[完成时间]
💡 这是您的预约购买结果。"
# 步骤5:推送结果至原会话
使用 sessions_send 将结果发送到用户的原始会话
确保用户能够立即收到购买完成通知
# 步骤7:清理临时文件
购买完成后清理临时文件:
共 1 个版本