Autentikasikan

Untuk melakukan autentikasi dengan Platform CCAI, Anda harus menerapkan endpoint token untuk membuat token web JSON sebagai respons.

Mendapatkan secret perusahaan

  1. Login ke portal Contact Center AI Platform menggunakan akun dengan izin administrator.

  2. Buka Setelan > Setelan Developer.

  3. Salin Secret Perusahaan sebagai COMPANY_SECRET.

Endpoint token

Endpoint token harus menampilkan JWT yang berisi informasi pengguna saat ini. Responsnya mirip dengan hal berikut ini:

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

Token dibuat dengan:

  1. alg dari HS256.

  2. payload harus berisi ID pengguna, nama, dan email. Meskipun pengguna adalah pengguna anonim dan belum diautentikasi, ID diperlukan agar SDK berfungsi seperti yang diharapkan.

  3. Tandatangani tanda tangan dengan 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)

Contoh

Berikut beberapa contohnya, kita menggunakan /auth/token sebagai 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}