Identyfikacja zalogowanego klienta (user_token)

Twój serwer podpisuje poświadczenie tożsamości klienta, dzięki czemu AI może sprawdzać zamówienia i pomagać klientom w ich składaniu.

Zanim AI sprawdzi zamówienie, musi wiedzieć, kim jest klient. Tożsamość klienta jest potwierdzana podpisem z Twojego serwera — przeglądarka nie może jej sfałszować.

Klucz podpisu znajdziesz w panelu na stronie „Integracja” (widzi go tylko właściciel), ma format whsec_.... Jest używany w obu kierunkach: Ty nim podpisujesz user_token; my nim podpisujemy wysyłane do Ciebie webhooki i zapytania o zamówienia.

Format user_token: base64url(JSON) + "." + hex(HMAC-SHA256(klucz podpisu, base64url(JSON)))

Pola JSON:

PoleWymaganeOpis
user_idTakID klienta w Twoim systemie, zwracane Ci w niezmienionej formie przy sprawdzaniu zamówienia
expTakCzas wygaśnięcia (sekundy Unix), maksymalnie 7 dni
name / emailNieWyświetlane w panelu agenta

Przykład w 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}`
}

Na stronie:

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

Możesz też nie wpisywać go na stronie, tylko dodać do skryptu data-user-token-url="/twoj-adres": przed rozpoczęciem rozmowy w oknie obsługi klienta na podstawie pliku cookie klienta wysyłane jest żądanie pod ten sam adres źródłowy, a odpowiedź to {"token": "user_token"} (jeśli klient nie jest zalogowany — {"token": null}). Gdy sklep Shopify ma zainstalowaną aplikację Yinke, okno czatu automatycznie pobiera w ten sposób tożsamość zalogowanego klienta — nie trzeba tego dodatkowo podłączać.

Czy ta strona była pomocna?

Ostatnia aktualizacja: