Audin Docs
Operator SDK

Numeri & presenza

Elencare i numeri dell'account, andare online sui numeri voice e gestire la disponibilità dell'operatore.

Prima di poter ricevere o fare chiamate, un operatore deve dichiararsi disponibile (online) su uno o più numeri dell'account. Questa pagina copre l'elenco dei numeri, la gestione della presenza e lo stato dell'operatore.

Elencare i numeri dell'account

listPhoneNumbers() restituisce i numeri che l'account possiede. Viene recuperato dall'SDK stesso, usando lo stesso token di sessione effimero dei WebSocket: l'Account API Key non entra mai nel browser.

const numbers = await op.listPhoneNumbers();
// → [{ id: "pn_1", phoneNumber: "+390299999999", displayName: "Milano" }, ...]

Ogni elemento è un OperatorPhoneNumber:

CampoTipoNote
idstringIdentificatore stabile: passalo a goOnline([...]).
phoneNumberstringNumero in formato E.164: usalo come callerId per dial.
displayNamestring | nullEtichetta leggibile, quando impostata.

Tipicamente mostri questa lista nella tua UI e lasci che l'operatore scelga su quale numero (o numeri) operare.

Se il token di sessione non è valido in modo persistente, listPhoneNumbers() lancia un OperatorRequestError:

  • UNAUTHORIZED401 persistente (l'SDK scarta il token in cache e riprova una volta con un token fresco; se anche quello fallisce, lancia).
  • REQUEST_FAILED — altri errori di rete o di risposta.

In entrambi i casi assicurati che la tua callback getToken restituisca sempre un token valido (vedi Token flow).

Modello "by-account"

La presenza è per account: un operatore va online sugli id dei numeri voice dell'account, scelti tra quelli ritornati da listPhoneNumbers(). Le chiamate in entrata su quei numeri vengono poi offerte agli operatori online, e le chiamate in uscita possono presentare uno di quei numeri come caller ID.

Andare online

goOnline(phoneNumberIds) connette il canale di presenza e annuncia la disponibilità dell'operatore sui numeri indicati (per id):

const numbers = await op.listPhoneNumbers();
await op.goOnline([numbers[0].id]);

Puoi chiamare goOnline di nuovo in qualsiasi momento per cambiare l'insieme di numeri su cui l'operatore è disponibile.

Conferma della disponibilità

Il server conferma su quali numeri l'operatore è effettivamente andato online tramite l'evento availabilityChanged, che riporta gli id accepted e rejected:

op.on("availabilityChanged", ({ accepted, rejected }) => {
  console.log("online su:", accepted);
  if (rejected.length) console.warn("non accettati:", rejected);
});

Un numero può finire tra i rejected se, ad esempio, non è un numero voice valido per l'account. Usa questo evento per riflettere nella UI lo stato reale di disponibilità.

Andare offline

goOffline() annulla la disponibilità, termina l'eventuale chiamata attiva e chiude il canale di presenza (interrompendo anche la riconnessione automatica):

await op.goOffline();

Chiamalo quando l'operatore fa logout o chiude l'applicazione.

Stato della presenza

Il getter state espone lo stato corrente del canale di presenza (PresenceState):

console.log(op.state); // "offline" | "connecting" | "online" | "reconnecting"
StatoSignificato
offlineNon connesso; nessuna disponibilità annunciata.
connectingConnessione del canale di presenza in corso.
onlineConnesso e disponibile sui numeri confermati.
reconnectingConnessione caduta; riconnessione automatica in corso (backoff).

Puoi anche reagire ai cambi di stato con l'evento presenceStateChanged:

op.on("presenceStateChanged", (state) => {
  console.log("presenza:", state);
});

L'SDK mantiene la presenza viva con heartbeat periodici e si riconnette automaticamente secondo un backoff configurabile. Vedi le opzioni heartbeatIntervalMs e reconnectBackoffMs nella API reference.

Prossimi passi

On this page