Autentica

Per l'autenticazione con CCAI Platform, devi implementare un endpoint token per generare un token web JSON come risposta.

Recupero del secret dell'azienda

  1. Accedi al portale Contact Center AI Platform utilizzando un account con autorizzazioni amministrative.

  2. Vai a Impostazioni > Impostazioni sviluppatore.

  3. Copia il segreto dell'azienda come COMPANY_SECRET.

Endpoint token

L'endpoint token deve restituire un JWT contenente le informazioni dell'utente corrente. La risposta è simile alla seguente:

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

Il token viene creato con:

  1. alg di HS256.

  2. payload deve contenere l'identificatore, il nome e l'indirizzo email dell'utente. Anche se l'utente è anonimo e non è ancora stato autenticato, l'identificatore è necessario affinché l'SDK funzioni come previsto.

  3. 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)

Esempi

Ecco alcuni esempi. Utilizziamo /auth/token come 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}