Identificar cliente com login (user_token)
A assinatura do seu servidor comprova a identidade do cliente para a AI consultar pedidos e ajudar na compra.
Antes de consultar pedidos com AI, é preciso saber quem é o cliente. A identidade do cliente é comprovada por uma assinatura do seu servidor e não pode ser falsificada pelo navegador.
O segredo de assinatura pode ser encontrado na página "Integração" do painel administrativo (somente o proprietário pode vê-lo), no formato whsec_.... Ele é usado nos dois sentidos: você o usa para assinar o user_token; nós o usamos para assinar os Webhooks e as solicitações de consulta de pedidos enviadas a você.
O formato de user_token é: base64url(JSON) + "." + hex(HMAC-SHA256(签名密钥, base64url(JSON)))
Campos JSON:
| Campo | Obrigatório | Descrição |
|---|---|---|
user_id | Sim | ID do cliente no seu sistema; retornado a você exatamente como está ao consultar pedidos |
exp | Sim | Tempo de expiração (segundos Unix), máximo de 7 dias |
name / email | Não | Exibido no painel do atendente |
Exemplo em 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 página:
<script>window.AICS_USER_TOKEN = "服务器签发的 user_token"</script>
<!-- 页面加载后才登录的,调用 AICS.identify(token) -->
Também é possível não incluí-lo na página e adicionar data-user-token-url="/你的地址" ao script: antes de a janela de atendimento iniciar uma conversa, ela usa o cookie do cliente para solicitar esse endereço de mesma origem, que retorna {"token": "user_token"} (se não estiver conectado, retorna {"token": null}). Depois que uma loja Shopify instala o aplicativo Yinke, a janela de chat obtém automaticamente a identidade do cliente conectado dessa forma, sem necessidade de integração adicional.
Esta página foi útil?
Última atualização:
