识别登录顾客(user_token)

由你的服务器签名证明顾客身份,AI 才能查订单、帮顾客下单。

AI 查订单前必须知道顾客是谁。顾客身份由你的服务器签名证明,浏览器不能伪造。

签名密钥在后台「接入」页查看(只有所有者能看),格式 whsec_...。它是双向用的:你用它签 user_token;我们用它签发给你的 webhook 和订单查询请求。

user_token 的格式:base64url(JSON) + "." + hex(HMAC-SHA256(签名密钥, base64url(JSON)))

JSON 字段:

字段必填说明
user_id是你系统里的顾客 ID,查订单时原样回传给你
exp是过期时间(Unix 秒),最长 7 天
name / email否显示在座席工作台

Node.js 示例:

import crypto from "node:crypto"

function signUserToken(user, secret) {
  const payload = { user_id: user.id, name: user.name, email: user.email, exp: Math.floor(Date.now() / 1000) + 3600 }
  const body = Buffer.from(JSON.stringify(payload)).toString("base64url")
  const mac = crypto.createHmac("sha256", secret).update(body).digest("hex")
  return `${body}.${mac}`
}

页面里:

<script>window.AICS_USER_TOKEN = "服务器签发的 user_token"</script>
<!-- 页面加载后才登录的,调用 AICS.identify(token) -->

也可以不写进页面,在 script 上加 data-user-token-url="/你的地址":客服窗口开对话前用顾客的 cookie 请求这个同源地址,返回 {"token": "user_token"}(没登录返回 {"token": null})。Shopify 店铺装了迎客应用后,聊天窗口自动这样取登录顾客的身份,不用另外接。

这篇文档有帮助吗?

最后更新: