Linee
Le linee (trunk SIP) collegano il centralino agli operatori telefonici. Un'azienda può usare linee proprie e le linee condivise messe a disposizione da Exobyte. Scope trunks:read / trunks:write.
Aggiungere una linea
curl -s -X POST https://centralino.exovoip.it/api/v1/trunks \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Linea principale","registration":"outbound","host":"sip.provider.example",
"username":"0981123456","secret":"password-del-provider","codecs":["alaw","g722"]}'const { trunk, overlaps } = await pbx.trunks.create({
name: 'Linea principale',
registration: 'outbound',
host: 'sip.provider.example',
username: '0981123456',
secret: 'password-del-provider',
codecs: ['alaw', 'g722'],
});$out = $pbx->trunks->create([
'name' => 'Linea principale',
'registration' => 'outbound',
'host' => 'sip.provider.example',
'username' => '0981123456',
'secret' => 'password-del-provider',
'codecs' => ['alaw', 'g722'],
]);out = pbx.trunks.create({
"name": "Linea principale",
"registration": "outbound",
"host": "sip.provider.example",
"username": "0981123456",
"secret": "password-del-provider",
"codecs": ["alaw", "g722"],
})| Campo | Descrizione |
|---|---|
registration | outbound (il centralino si registra all'operatore), inbound (l'operatore si registra al centralino), none (autenticazione per indirizzo IP) |
host, port, transport | Server dell'operatore e trasporto (udp, tcp, tls) |
username, secret | Credenziali; il segreto non viene mai restituito (hasSecret) |
codecs | Codec in ordine di preferenza (es. alaw, g722) |
maxChannels | Chiamate simultanee massime sulla linea |
Verifica delle reti
Alla creazione o modifica di una linea, gli indirizzi del server vengono confrontati con quelli delle altre linee. Se si sovrappongono a linee di altre aziende o condivise, la linea resta in attesa di verifica da parte di Exobyte (approval.status = pending_approval) e non riceve chiamate finché non viene approvata. L'esito è visibile nella risposta (approval, overlaps).
Stato e monitoraggio
GET /v1/trunks riporta lo stato sintetico (registered, unregistered, rejected, unknown); il dettaglio in tempo reale (registrazione con motivo, raggiungibilità, latenza, chiamate attive) è in GET /v1/live/trunks e negli eventi trunk.state.
curl -s https://centralino.exovoip.it/api/v1/trunks -H "X-API-Key: $EXOPBX_API_KEY"
curl -s https://centralino.exovoip.it/api/v1/live/trunks -H "X-API-Key: $EXOPBX_API_KEY"const { items } = await pbx.trunks.list();
const live = await pbx.live.trunks(); // registrazione, raggiungibilità, chiamate attive$trunks = $pbx->trunks->list()['items'];
$live = $pbx->live->trunks();trunks = pbx.trunks.list()["items"]
live = pbx.live.trunks()Una linea usata da numeri o regole di uscita non può essere eliminata: 409 IN_USE.
Linee condivise (piattaforma)
Le linee condivise (tenantId: null) si creano e modificano solo con chiavi globali. Senza X-Tenant-Id la lista mostra tutte le linee della piattaforma; la coda di verifica è in GET /v1/trunks/approvals (scope security:read), con approvazione e rifiuto motivato.
Endpoint
| Descrizione | Richiesta | Scope | Metodo SDK |
|---|---|---|---|
| Linee in attesa di verifica (sovrapposizione di reti) | GET /v1/trunks/approvals | security:read | trunks.approvals() |
| Approva linea in attesa di verifica | POST /v1/trunks/:id/approve | security:write | trunks.approve() |
| Rifiuta linea in attesa di verifica (motivo obbligatorio) | POST /v1/trunks/:id/reject | security:write | trunks.reject() |
| Elenco linee | GET /v1/trunks | trunks:read | trunks.list() |
| Crea linea (condivisa solo superadmin) | POST /v1/trunks | trunks:write | trunks.create() |
| Dettaglio linea | GET /v1/trunks/:id | trunks:read | trunks.get() |
| Modifica linea | PATCH /v1/trunks/:id | trunks:write | trunks.update() |
| Elimina linea (IN_USE se usata) | DELETE /v1/trunks/:id | trunks:write | trunks.delete() |
