Autenticar

Para autenticarte con la plataforma de la CCAI, 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 del desarrollador.

  3. Copia el secreto de la empresa como COMPANY_SECRET.

Extremo del token

El extremo del token debe devolver 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 los siguientes parámetros:

  1. alg de HS256.

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

  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. Usaremos /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}