Autenticar

Para autenticar com a plataforma CCAI, é necessário implementar um endpoint de token para gerar um token da Web JSON como resposta.

Receber chave secreta da empresa

  1. Faça login no portal da Contact Center AI Platform usando uma conta com permissões de administrador.

  2. Acesse Configurações > Configurações do desenvolvedor.

  3. Copie o segredo da empresa como COMPANY_SECRET.

Endpoint do token

O endpoint do token precisa retornar um JWT com as informações do usuário atual. O resultado parecido com este:

{"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.n...."}

O token é criado com:

  1. alg de HS256.

  2. payload precisa conter o identificador, o nome e o e-mail do usuário. Mesmo que o usuário seja anônimo e ainda não tenha feito a autenticação, o identificador é necessário para que o SDK funcione como esperado.

  3. Assine com COMPANY_SECRET.

header = {"alg": "HS256"}
payload = {
  "iss": "{YOUR_COMPANY_NAME}",
  "iat": $unix_timestamp_now,
  "exp": $unix_timestamp_now + 3600,
  "identifier": "{CURRENT_USER_ID}",
  "name": "{CURRENT_USER_NAME}",
  "email": "{CURRENT_USER_EMAIL}",
}

token = jwt_encode(header, payload, COMPANY_SECRET)

Exemplos

Confira alguns exemplos. Estamos usando /auth/token como endpoint.

Express (Node.js)

const express = require('express')
const jwt = require('jsonwebtoken')

const COMPANY_NAME = 'AMCE'
const COMPANY_SECRET = '__read_from_config__'

const app = express()
app.use(express.json())
app.use(your_session_middleware)

app.get('/auth/token', function (req, res) {
  const now = parseInt(Date.now() / 1000, 10)
  const payload = {
    'iss': COMPANY_NAME,
    'iat': now,
    'exp': now + 3600,
  }
  if (req.user) {
    payload.identifier = req.user.id,
    payload.name = req.user.name
    payload.email = req.user.email
  }
  const token = jwt.sign(payload, COMPANY_SECRET, { algorithm: 'HS256' })
  res.json({ token })
})

Flask (Python)

import time
from flask import Flask, request
from joserfc import jwt, jwk

app = Flask(__name__)

COMPANY_NAME = 'AMCE'
COMPANY_SECRET = '__read_from_config__'
secret_key = jwk.OctKey.import_key(COMPANY_SECRET)

@app.route('/auth/token')
def auth_token():
    now = int(time.time())
    payload = {
      'iss': COMPANY_NAME,
      'iat': now,
      'exp': now + 3600,
    }
    if (request.user) {
      payload.identifier = request.user.id,
      payload.name = request.user.name
      payload.email = request.user.email
    }
    token = jwt.encode({'alg': 'HS256'}, payload, secret_key)
    return {'token': token}