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
Accede al portal de Contact Center AI Platform con una cuenta que tenga permisos de administrador.
Ve a Configuración > Configuración del desarrollador.
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:
algdeHS256.payloaddebe 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.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}