Идентификация авторизованного покупателя (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 клиента на этот же origin, и адрес должен вернуть {"token": "user_token"} (если клиент не авторизован — {"token": null}). Если в магазине Shopify установлено приложение Yinke, окно чата автоматически получает такую идентификацию авторизованного клиента — отдельно подключать ничего не нужно.
Эта страница была полезной?
Обновлено:
