OneTrace.ru 帮助中心

机器人的商店数据

聊天中的 AI 机器人不仅能依据知识库作答,还能使用商店的实时数据回复:订单到哪了、运单号是多少、商品是否有货、配送费用多少、如何退货。如果您允许,它还能取消未付款的订单,或将退货和更改配送的申请转交给商店。为此,商店通过 MCP(Model Context Protocol)协议连接到机器人:机器人调用商店的工具,商店返回数据。

任何套餐都可以连接商店,而机器人与聊天中的所有 AI 功能一样,需在付费套餐上使用:基于商店数据的回复与普通 AI 回复一样从项目余额中扣费,参见付款。

连接

最简单的方式是使用我们的商店模块。保存设置时,模块会自动启动服务器并将其连接到项目:

平台 启用位置
WooCommerce WooCommerce → Settings → OneTrace.ru → AI chat bot: store MCP
Magento 2 Stores → Configuration → OneTrace.ru → AI chat bot: store MCP → Connect to the chat bot
1C-Bitrix 模块设置 → 站点选项卡 → AI chat bot: store MCP 区块 → Connect to the chat bot

模块的私密密钥需要“将商店 MCP 服务器连接到 AI 机器人”(chats.manage)权限。密钥创建后无法更改权限:如果模块的密钥没有该权限,请您在 API 密钥中创建一个新密钥,保留原有权限并加上该权限,然后在模块设置中填写该密钥。同一项目的多个站点只需连接一次。

基于 PHP 或 Laravel 的自有商店可使用 PHP 库和 Laravel 包中的现成服务器连接,开发者只需编写工具处理程序。其他任何实现了商店 MCP 约定的服务器都可以手动连接:在**聊天 → 聊天设置 → 机器人 → 商店(MCP)**中填写 https://… 地址、商店签发的访问密钥和名称。描述工具、错误和客户验证的约定见开发者指南部分。

机器人设置中的商店(MCP)

在**商店(MCP)**部分可以看到服务器是否正常运行,以及商店允许机器人使用哪些工具。开关可暂时停用服务器,刷新按钮会重新检查服务器并重新读取工具(平台每天也会自动执行一次)。

机器人能做什么

具体允许机器人做什么,由商店在模块设置中决定。默认只启用只读工具:

工具 机器人的作用
客户的订单、订单 查找客户的订单并介绍订单详情:商品、金额、付款、配送方式、地址
物流跟踪 告知快递公司和运单号,并提供跟踪链接
库存和价格 按名称或货号查找商品,告知是否有货以及有哪些规格
配送 列出配送方式及其价格和免运费门槛
退货条款 转述商店的退货条款

在商店允许之前,操作均处于关闭状态:

操作 结果
取消订单 机器人取消尚未付款且尚未发货的订单
退货申请 申请发送给商店:作为订单备注,并通过邮件通知员工
更改配送 关于新地址、日期或时间的申请以同样方式发送给商店

工具面向模型的描述由平台而非商店设定,机器人将商店的响应视为数据而非指令。如果机器人的回复中出现商店数据里没有的价格、期限或承诺,回复检查会阻止它发给客户。

客户验证

订单及相关操作仅对已验证的客户开放:机器人不会显示他人的订单,甚至不会确认该订单是否存在。验证客户有两种方式:

  1. 网站登录。 如果客户已登录商店账户,模块会向聊天小部件传递签名令牌,机器人立即就知道是谁在发消息。
  2. 验证码。 在即时通讯工具中以及对于访客,机器人会询问客户在商店中使用的邮箱,商店向该邮箱发送 6 位验证码,客户在聊天中输入验证码。验证码有效期为 10 分钟,每个地址每小时最多发送 5 个验证码。

验证有效期为 24 小时。客服可在会话窗口中看到验证状态:“客户已确认:已登录网站”或“客户已通过验证码确认”。客户令牌以加密方式保存在会话中,模型和客服都看不到。

商店中的操作

机器人仅在客户明确同意后才执行操作:

  1. 机器人说明将要执行的操作(订单号、商品),并请求确认。
  2. 客户在聊天中表示同意,例如“好的,取消吧”。
  3. 独立的评分模型会检查客户同意的确实是这项操作。提问、犹豫或其他请求都不算同意。
  4. 商店执行操作;重复调用同一操作不会重复执行。

聊天记录中会出现一行带结果的“机器人已在商店执行:…”,项目的审计日志中会出现“机器人在商店中的操作”记录。客服的草稿只以只读方式使用商店数据:操作由客服本人在商店中完成。

机器人应客户要求取消了订单

开发者指南

只要实现了商店 MCP 约定第 1 版,您自己的服务器即可连接。PHP 和 Laravel 已实现该约定:PHP 库中的 StoreMcp\Server 类和 Laravel 包中的 POST /onetrace/mcp 路由,您只需编写工具处理程序。

传输。 MCP Streamable HTTP,协议版本 2025-06-18:单一地址,使用 JSON-RPC 2.0 的 POST 请求,响应为 JSON 或只含一个响应的 text/event-stream 流。地址只能是公网 IP 上的 https://,不允许重定向。响应时间不超过 10 秒,大小不超过 256 KB。平台会调用 initialize、notifications/initialized、tools/list 和 tools/call;支持 Mcp-Session-Id 请求头,但不是必需的。

访问。 每个请求都带有 Authorization: Bearer <密钥>;密钥由商店创建,至少 32 个随机字符。没有密钥或密钥不匹配的请求返回 401。

约定标记。 服务器在 initialize 的响应中声明 capabilities.experimental["onetrace/store"] = { "version": 1 },没有该标记的服务器无法连接。

工具。 名称必须与表中完全一致,tools/list 只返回所有者允许的工具。每个工具都带有注解 readOnlyHint: true(读取)或 destructiveHint: true(操作),以及 _meta["onetrace/auth"]:customer 表示需要已验证的客户,none 表示不需要。结果为 structuredContent,并在 content[0].text 中以文本形式提供同样的 JSON。金额格式为 { "amount": 1250.5, "currency": "RUB" },日期为 ISO 8601。

工具 访问 输入 结果
store_start_verification none contact、order sent、channel、destination
store_verify none contact、code customer_token、expires_at
store_get_customer customer — id、email、phone、first_name
store_find_orders customer status、limit(最多 20) orders:order、created_at、status、status_label、total、items_count
store_get_order customer order 订单,含 items、total、payment、shipping、can_cancel、can_return
store_get_tracking customer order carrier、tracking_number、tracking_url、status、events
store_check_availability none query、sku 或 product_id products(最多 10 个),含 in_stock、quantity、variants
store_get_delivery_options none country、city、postcode、total methods:name、price、free_from、min_days、max_days
store_get_return_policy none — days、conditions、text、url
store_cancel_order customer order、reason order、status、message
store_create_return customer order、items、reason return_id、status、instructions
store_change_delivery customer order、address、date、time_window order、message

订单状态为以下之一:pending、processing、on_hold、shipped、delivered、completed、cancelled、refunded、failed。请求其他客户的订单时返回 not_found,如同订单不存在。

客户。 customer_token 由商店签发和校验,有效期不超过 24 小时。验证码由商店自行发送,无论该客户是否存在,响应都相同;验证码为 6 位数字,有效期 10 分钟,最多尝试 5 次,每个地址每小时最多 5 个验证码。对于已登录的客户,页面会将令牌传给跟踪器:cdp.chatCustomer('…')。

调用上下文位于 params._meta:onetrace/customer_token、onetrace/language(会话语言)、onetrace/conversation,操作类工具还带有 onetrace/confirmed: true 和 onetrace/idempotency_key。服务器拒绝没有 onetrace/confirmed 的操作;使用相同幂等键的重复调用返回相同结果,不会再次执行操作。

错误格式为 isError: true 和 structuredContent: { "error": "<代码>", "message": "<给客户的文本>" }:

代码 何时返回
auth_required 需要已验证的客户
invalid_code 验证码错误或已过期
not_found 没有该订单或商品
not_allowed 当前状态下无法执行该操作,或所有者已关闭该操作
invalid_input 参数无效
rate_limited 请求或验证码过多
unavailable 商店暂时故障

从模块连接。 模块使用具有 chats.manage 权限的私密密钥注册自己的服务器:带 url、key、name、platform 的 PUT /api/v1/chat/store-mcp 用于连接或更新服务器,带 url 的 DELETE /api/v1/chat/store-mcp 用于断开连接。