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:

CampoObrigatórioDescrição
user_idSimID do cliente no seu sistema; retornado a você exatamente como está ao consultar pedidos
expSimTempo de expiração (segundos Unix), máximo de 7 dias
name / emailNãoExibido 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: