Audin Docs
Operator SDK

Quickstart

Installa l'SDK, inizializzalo con il tuo endpoint token e gestisci un ciclo chiamata completo dal browser.

Questa pagina ti porta da zero a una chiamata funzionante. Presuppone che tu abbia già un endpoint backend che emette i token di sessione — se non ce l'hai, parti dalla pagina Token flow & setup backend.

Installazione

npm install @audin.ai/operator-sdk
pnpm add @audin.ai/operator-sdk
yarn add @audin.ai/operator-sdk

In alternativa puoi caricare il bundle UMD via <script>: espone il global AudinOperatorSDK.

<script src="https://unpkg.com/@audin.ai/operator-sdk/dist/audin-operator-sdk.umd.cjs"></script>
<script>
  const op = new AudinOperatorSDK.AudinOperator({ /* … */ });
</script>

Inizializzazione

Crea un'istanza di AudinOperator passando l'URL del servizio operatori Audin e la tua callback getToken:

import { AudinOperator } from "@audin.ai/operator-sdk";

const op = new AudinOperator({
  coreUrl: "https://core.audin.ai",
  getToken: async () => {
    const r = await fetch("/api/operator/token", { method: "POST" });
    return r.json(); // { token, expiresAt? }
  },
});

coreUrl accetta uno schema http(s), convertito internamente nel corrispondente ws(s).

Esempio end-to-end minimale

Registra i listener per gli eventi, scegli un numero, vai online ed esegui una chiamata:

// ── eventi ───────────────────────────────────────────────
op.on("incomingCall", (call) => {
  console.log("ringing da", call.from);
  // Mostra la tua UI "accetta / rifiuta", poi:
  call.accept(); // oppure call.reject();
});

op.on("callStarted", (call) => {
  console.log("connessa:", call.callSid, call.direction);
});

op.on("callEnded", (call) => {
  console.log("terminata:", call.callSid, "motivo:", call.endReason);
});

op.on("error", (e) => console.error(e.code, e.message));

// ── scegli un numero ─────────────────────────────────────
// Elenca i numeri dell'account, recuperati dall'SDK con lo stesso token di
// sessione dei WebSocket (nessuna API Key nel browser):
const numbers = await op.listPhoneNumbers();
// → [{ id: "pn_1", phoneNumber: "+390299999999", displayName: "Milano" }, ...]
const mine = numbers[0]; // es. quello selezionato dall'operatore nella tua UI

// ── vai online sull'id del numero ────────────────────────
await op.goOnline([mine.id]);

// ── chiamata in uscita ───────────────────────────────────
// Usa l'E.164 dello stesso numero come caller ID.
const call = await op.dial("+39021234567", { callerId: mine.phoneNumber });

// Controlli disponibili sull'oggetto call (esempi, non una sequenza reale):
call.mute(true);
call.mute(false);
call.hangup();

// ── quando l'operatore fa logout / chiude l'app ──────────
await op.goOffline();

La prima chiamata può richiedere un gesto dell'utente (es. un click) per sbloccare l'audio del browser, e l'accesso al microfono richiede un contesto HTTPS (o localhost). Vedi la pagina Audio & microfono.

Approfondimenti

On this page