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-sdkpnpm add @audin.ai/operator-sdkyarn add @audin.ai/operator-sdkIn 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.