Autenticar

Para autenticarte con CCAI Platform, debes implementar un extremo de token para generar un token web JSON como respuesta.

Obtén el secreto de la empresa

  1. Accede al portal de Contact Center AI Platform con una cuenta que tenga permisos de administrador.

  2. Ve a Configuración > Configuración para desarrolladores.

  3. Copia el secreto de la empresa como COMPANY_SECRET.

Extremo del token

El extremo del token debe mostrar un JWT que contenga la información del usuario actual. La respuesta es similar a lo que se muestra a continuación:

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

El token se crea con lo siguiente:

  1. alg de HS256.

  2. payload debe contener el identificador, el nombre y el correo electrónico del usuario. Incluso si el usuario es un usuario anónimo y aún no se autenticó, se requiere el identificador para que el SDK funcione como se espera.

  3. Firma la firma con 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)

Ejemplos

Estos son algunos ejemplos. Usamos /auth/token como extremo.

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}