Documentazione
Una pagina sola, quattro corsie. Cominci da qui, passi le due di mezzo a chi risponde al telefono e a chi dirige l'azienda, e mandi l'ultima a chi scrive il codice.
Per cominciare
Il suo centralino in cinque minuti
Tutto quello che segue esiste già nel suo account. Niente qui richiede un installatore, la visita di un tecnico o un apparecchio da comprare.
- Numeri e interni ci sono già. Si creano insieme al suo account, con le credenziali SIP di cui ha bisogno ogni apparecchio. Un interno è una persona o una postazione; un numero è quello che compone chi sta fuori.
- Punti un numero da qualche parte. Nella scheda Numeri stabilisce cosa deve fare una chiamata che entra da lì: far squillare un interno, far squillare un gruppo, aprire un menu, entrare in una coda o seguire i suoi orari.
- La risponda dal browser. Apra la scheda Telefono, dia il permesso al microfono, e quella scheda è un apparecchio che funziona. Chiami la prova dell'eco componendo
*43e si sentirà tornare indietro. - E poi metta gli orari e la segreteria. Sono quei due a evitare che una chiamata si perda alle sette di sera, e sono le due cose che più spesso mancano a un centralino appena acceso.
Ha fretta? Ci sono cinque modelli di avvio —uno studio medico, uno studio legale, un'officina, un negozio e una linea di casa— che creano gli orari, la rotta in entrata e la segreteria fuori orario in una sola richiesta. Non sovrascrivono mai qualcosa che lei abbia già configurato.
Come si entra nel pannellotramite API
Il pannello vive nella sua pagina VOICE e compare solo con una sessione. Quella sessione la emette la sua area cliente; qui non si digita nulla.
| Passo | Cosa fa |
|---|---|
| 1 | Entri nella sua area cliente, su elportaldelcliente.com. |
| 2 | Scelga «Gestisci il mio centralino» dal menu del suo account. Quel comando chiede a VOICE una sessione a suo nome e la porta alla sua pagina VOICE con la credenziale nel frammento dell'indirizzo. |
| 3 | Il pannello sostituisce la pagina commerciale. La credenziale viene cancellata dalla barra degli indirizzi prima che venga disegnato qualsiasi cosa, e scade da sola. |
Per chi costruisce quel pulsante, questo è tutto il contratto:
POST /inquilinos/:inquilino/sesiones # ambito sistema: solo il portale può emetterla
{ "minutos": 15 }
→ { "clave": "pbx_ses_…", "caduca": "…", "ambito": "sesion", "minutos_max": 60 }
/centralino#t=<clave>&exp=<ISO>&v=<inquilino>
La credenziale viaggia nel frammento e non nella query apposta: un frammento non viene mai mandato a un server, quindi non finisce in un'intestazione Referer, né nei registri d'accesso, né in un intermediario lungo la strada. Scade in pochi minuti, ha un tetto, e non può fabbricare una chiave permanente.
Per chi risponde al telefono
Il pannello, scheda per schedatramite API
16 sezioni, le stesse 16 in tutte e otto le lingue. Tutto quello che c'è qui esiste anche nell'API.
| Scheda | Cosa fa |
|---|---|
| Riepilogo | Come va il suo centralino in questo momento: chiamate di oggi, risposte, in corso, il suo picco e quanto sono stati raggiungibili i suoi apparecchi. |
| I miei numeri | I suoi numeri, e cosa fa ognuno quando squilla. |
| Menu | Menu vocali: digiti 1 per le vendite, e dentro le vendite un altro menu. |
| Interni | Persone e apparecchi, con regole per persona: seguimi, deviazioni, non disturbare, cosa è permesso comporre e il portiere. |
| Telefono | Il telefono vero e proprio: comporre, rispondere, trasferire, parcheggiare e vedere chi è in chiamata. |
| Code | Code con posizione, attesa misurata, richiamata, chi è di turno e chi gestisce cosa. |
| Sale | Stanze di conferenza con chiave, e chi è dentro in questo momento. |
| Segreteria | Messaggi con la loro trascrizione, annunci, PIN, cestino e limite di dimensione. |
| Rubrica | La rubrica di nomi a cui arriva chi compita sulla tastiera. |
| Reception | Il centralinista, le chiamate parcheggiate in tempo reale, le finestre di manutenzione e la tabella dei codici. |
| Filtri | Lista nera, filtro delle chiamate anonime, avvisi su chi insiste troppo e tutto ciò che riguarda chi può raggiungerla. |
| Orari | Orario d'ufficio, festivi e l'interruttore giorno / notte. |
| Musica | La musica d'attesa e le tracce che suona ogni flusso. |
| Chiamate | Ogni chiamata con il suo numero, la durata, la rotta e la registrazione. |
| Linee | Linee simultanee: quello che ha garantito, quello che sta prendendo in prestito e il suo picco. |
| Consumo | Quello che ha consumato questo mese, giorno per giorno. |
Il telefono dentro il browserchiamata reale
Una scheda del browser è un apparecchio. Niente da installare, nessun telefono da scrivania da comprare, nessun numero da portare: è un interno del suo stesso centralino, registrato dal browser.
- È un interno vero. Il browser si registra sul suo centralino esattamente come un telefono da scrivania, e l'audio viaggia su una connessione cifrata. Chi chiama il suo numero può arrivare alla scheda, e la scheda può chiamare fuori.
- La scheda deve restare aperta. Una scheda chiusa è un telefono staccato. È il limite onesto di un telefono nel browser, ed è il motivo per cui accompagna un apparecchio da scrivania invece di sostituirlo dappertutto.
- Vede chi è in chiamata.chiamata reale Le spie dei suoi colleghi si aggiornano in diretta — libero, squilla, parla — così sa se c'è qualcuno a cui passare la chiamata prima di provare a passargliela.
- Può spostare una chiamata viva su un altro apparecchio.non ancora provato «Devo uscire e sto parlando»: la chiamata passa al suo cellulare senza riagganciare. È un pulsante e non un codice da tastiera apposta — chi sposta una chiamata ha uno schermo davanti.
- Trasferire, parcheggiare e registrare sono gli stessi codici di qualsiasi apparecchio. Si compongono, non si cliccano, quindi quello che impara sul telefono del browser le serve sul telefono da scrivania e sul cellulare.
Il telefono del browser non registra mai sul suo computer. La registrazione avviene dentro il centralino, che è dove si applicano le regole su chi si può registrare e chi va avvisato — veda «Registrare, e la legge».
Codici che si compongono dall'apparecchio
Dove una convenzione esiste, si rispetta quella di sempre (*72 deviazione, *78 non disturbare, *97 segreteria, *8 risposta per assente, *69 chi ha appena chiamato). È tutto il senso di un codice da tastiera: la funzione è già nel pannello, e il codice è quello che fa credere al pannello chi compone *72 da vent'anni.
Si compongono con il telefono libero
| Codice | Cosa fa | Verificato |
|---|---|---|
*43 | Prova dell'eco. Registra quello che dice e glielo rimanda, e sa dire «non mi è arrivato niente». | non ancora provato |
*44 | Lo stesso, ma con ritardo: smaschera le parole che si stanno perdendo. | non ancora provato |
*45 | Prova della tastiera. Dice ogni tasto man mano che lo preme. | non ancora provato |
*46 | Lo stato della sua linea: registrazione, codec, indirizzo e latenza. | non ancora provato |
*60 | L'ora e la data, dette come si deve. | banco di prova |
*62 | Il suo consumo del mese (chiamate e minuti; l'importo, solo con l'addebito attivo). | tramite API |
*69 | Chi l'ha chiamata per ultimo, detto ad alta voce e comprese le perse — poi digiti 1 per richiamarlo. | non ancora provato |
*72 | Deviazione incondizionata. Le ripete il numero. | tramite API |
*73 | Toglie tutte le deviazioni. | tramite API |
*74 | Deviazione in parallelo: squillano insieme il suo interno e il numero. | tramite API |
*75 | Deviazione quando lei è occupato. | tramite API |
*76 | Deviazione quando lei non risponde. | tramite API |
*78 | Non disturbare attivato, confermato ad alta voce. | tramite API |
*79 | Non disturbare tolto. | tramite API |
*80 | Entra in turno in tutte le sue code. | tramite API |
*81 | Esce dal turno in tutte le sue code. | tramite API |
*90 | Blocca un numero (con il solo # blocca quello dell'ultima chiamata ricevuta). | non ancora provato |
*91 | Sblocca. | non ancora provato |
*97 | La sua segreteria, con il suo PIN. | banco di prova |
*98 | Registra il suo annuncio. | banco di prova |
*99 | Registra il suo nome — lo usano la rubrica e la stanza di conferenza. | banco di prova |
*8 | Risponde alla chiamata che sta squillando alla postazione accanto. | tramite API |
*66 | Modalità: normale · pranzo · chiuso · festivo · automatico. | tramite API |
*411 | La rubrica per nome. | banco di prova |
*57 | Apre un fascicolo di chiamata molesta su quella che ha appena ricevuto. La registrazione smette di scadere e restano l'ora, la rotta e l'audio per una denuncia. Non blocca chi chiama: quello lo decide lei. | non ancora provato |
*85 | Mi avvisi quando quell'interno si libera. | non ancora provato |
*86 | Annulla quell'avviso. | non ancora provato |
*82 | Ascolta una chiamata della sua stessa azienda. Non la sente nessuna delle due parti. | non ancora provato |
*83 | Sussurra: la sente solo il suo collega, non il cliente. | non ancora provato |
*84 | Entra nella chiamata: la sentono tutti e due. | non ancora provato |
*88 | Le chiamate che nessuno ha richiamato, dette ad alta voce — poi digiti 1 per richiamare la più vecchia. | non ancora provato |
*47 | Il centralino si spiega da solo: le recita i propri codici, 9 per il successivo e 0 per uscire. | non ancora provato |
70N | Riprende la chiamata parcheggiata al posto N. | tramite API |
Si compongono durante una conversazione
| Codice | Cosa fa | Verificato |
|---|---|---|
*1 | Registra questa chiamata, adesso. Vengono avvisate entrambe le parti. | tramite API |
*7 | La parcheggia: chi chiama resta con la musica e il numero del posto viene detto ad alta voce. | tramite API |
##<ext># | Trasferimento cieco: gliela passa e lei riaggancia. | chiamata reale |
#<ext># | Trasferimento senza scegliere il tipo. Il centralino verifica se c'è qualcuno e, se non c'è, lo fa diventare cieco. | non ancora provato |
*2<ext># | Trasferimento assistito: prima parla lei con il collega. | non ancora provato |
Durante la consultazione, in un trasferimento assistito
| Codice | Cosa fa | Verificato |
|---|---|---|
*1 | Completa il trasferimento. | non ancora provato |
*0 | Annulla e torna da chi ha chiamato. | non ancora provato |
*3 | Mette tutti e tre nella stessa chiamata. | non ancora provato |
Dentro una stanza di conferenza
| Codice | Cosa fa | Verificato |
|---|---|---|
*6 | Chiunque: silenzia e riapre il proprio microfono. | tramite API |
*7 | Chiunque: quante persone ci sono nella stanza. | tramite API |
*9 | Chiunque: uscire. | tramite API |
*1 | Organizzatore: chiude la stanza senza cambiare la chiave. | tramite API |
*2 | Organizzatore: la riapre. | tramite API |
*3 | Organizzatore: avvia o ferma la registrazione. | tramite API |
Alcuni codici significano due cose e non si scontrano: *1 in una conversazione normale è «registra ora», durante una consultazione è «completa il trasferimento», e dentro una stanza è «chiudi la stanza». Sono stati diversi dello stesso telefono, gestiti da codice diverso.
Prima di fidarsi di un apparecchio nuovo: I telefoni da scrivania e gli adattatori elaborano i propri codici asterisco e non li inoltrano mai. Se compone un codice e sente silenzio e poi il tono, se l'è mangiato l'apparecchio e il centralino non ha visto niente. Ci chieda di controllare un modello nuovo contro l'elenco di oggi prima di distribuirlo.
La segreteria da qualsiasi telefonobanco di prova
Componga *97, digiti il suo PIN, e la segreteria è tutta lì — senza app e senza browser. È scritta per il titolare che chiama da un telefono in prestito.
Menu principale
| Tasto | Cosa fa |
|---|---|
1 | Messaggi nuovi. |
2 | Messaggi tenuti. |
4 | Annunci e il suo nome registrato. |
5 | Cambiare il suo PIN. |
0 | Uscire verso il centralinista. |
9 | Riagganciare. |
Mentre suona un messaggio
| Tasto | Cosa fa |
|---|---|
1 | Ripeterlo. |
2 | Tenerlo. |
3 | Cancellarlo. Poi digiti 8 entro cinque secondi per annullare. |
4 | Richiamare quella persona. |
6 | Il prossimo, lasciando questo come nuovo. |
7 | Inoltrarlo a un collega con una sua nota registrata prima. |
Menu degli annunci
| Tasto | Cosa fa |
|---|---|
1 | Registrare l'annuncio principale. |
2 | Registrare il suo nome. |
3 | Mettere un annuncio per le ferie. |
4 | Toglierlo. |
Gestire la chiamata
Un gruppo di squillo dice «che squilli in più posti». Tutto quello che c'è in questo elenco fa qualcosa che un gruppo di squillo non sa fare.
- Code.tramite API Una coda sa quante persone ci sono davanti e quanto ci vuole di solito, quindi può dirlo. L'attesa si misura sulle sue chiamate recenti, non viene mai inventata — con meno di tre campioni non dice proprio niente. Senza nessuno di turno, non si fa aspettare nessuno.
- Richiamata dalla coda.tramite API Viene offerta dopo un po' di attesa, e non viene offerta se la chiamata sta comunque per essere risposta. La richiesta sopravvive a un riavvio, perché chi la fa riaggancia, e la richiamata entra davanti alla fila — che è quello che le era stato promesso.
- Stanze di conferenza.tramite API Una stanza con un numero e due chiavi: una per entrare, una per gestirla. Nessuno ha bisogno di un account da nessuna parte. Entrate e uscite vengono annunciate con il nome che ciascuno ha registrato di persona.
- La rubrica per nome.banco di prova Chi chiama compita un nome sulla tastiera e viene messo in comunicazione. Si indicizza ogni parola del nome separatamente, perché qui due cognomi sono la norma e cercare solo il primo trova mezza azienda. Accenti e ñ vengono normalizzati, così «Muñoz» si trova componendo 686.
- Lo zero per il centralinista.tramite API Probabilmente l'aspettativa più universale che esista su un telefono: poter arrivare a una persona. Lo zero scende a cascata dal suo centralinista alla segreteria generale fino a dirlo ad alta voce — mai un riaggancio muto.
- Parcheggiare e riprendere.tramite API Parcheggi una chiamata e resta ad aspettare con la musica in un posto numerato mentre lei cammina verso un'altra postazione. Chiunque la riprende componendo quel posto. Rispondere al telefono che squilla accanto è
*8.
Per chi dirige l'azienda
Canali: garanzia, prestito e restituzionetramite API
È la parte del prodotto che un tetto fisso non sa fare, e conviene capirla prima di scegliere il piano.
- Garantite. Le chiamate simultanee che vende il suo piano. Ci stanno sempre, comunque vada il centralino, e nessuno gliele può togliere.
- In prestito. Sopra la sua garanzia usa quello che il centralino ha libero. Quasi tutti i giorni sarà qui, e non costa niente in più.
- La riserva. Un cuscinetto di canali che non si presta a nessuno, così chiunque può arrivare alla propria garanzia in qualsiasi momento.
- La restituzione. Quando il centralino è sotto pressione, le chiamate in prestito possono essere restituite per proteggere la garanzia di un altro. Vale solo per gli account che l'hanno attivata, mai per una chiamata dentro una garanzia, mai per una chiamata d'emergenza e mai in silenzio: il centralino parla prima di lasciare.
- Non si può vendere due volte. La somma di tutte le garanzie più la riserva deve starci. L'attivazione lo controlla e rifiuta un piano che non ci starebbe, ed è questo che dà un senso alla parola «garantita».
- E si vede quando ha morso. La congestione viene riportata per episodi con la loro ora, non come totale del mese. «Dodici rifiuti in trenta giorni» si legge come rumore; «martedì scorso, tra le dieci e le undici, cinque persone hanno sentito occupato» è qualcosa su cui si può decidere.
Cosa succede quando qualcosa si rompe
Un centralino si giudica il giorno che va via la corrente, non il giorno in cui funziona tutto.
- Più di una via d'uscita. Il centralino raggiunge il mondo esterno con diverse connessioni indipendenti e sceglie da solo fra loro. Lei non configura niente e non lo vede succedere.
- «Funziona» si misura contro la cosa giusta. Una connessione entra nel giro solo se arriva sia a internet sia alla rete telefonica. Controllare solo la prima è il modo in cui un centralino resta senza linea con tutte le spie verdi.
- Si riprende da solo dopo un blackout. Quando torna la corrente, il centralino e gli apparati di rete si accendono insieme e non sempre nell'ordine giusto. Invece di fidarsi di quell'ordine, il centralino confronta di continuo quello che ha davvero con quello che dovrebbe avere e si ripara — con un tetto a quante volte può riprovare, così un guasto vero viene segnalato invece di restare in ciclo.
- Non taglia una chiamata per ripararsi. Qualsiasi riparazione che interromperebbe delle conversazioni aspetta che non ce ne sia più nessuna.
Le registrazioni e i messaggi della segreteria si conservano fuori dal centralino, quindi sopravvivono alla macchina stessa.
Piani e minuti
5 piani, da $100 a $300 all'anno, e un numero per licenza. Il minuto in entrata su un numero costaricano è $0.00.
| Piano | Simultanee, fino a | Di cui garantite | Interni | Conservazione (gg) | All'anno |
|---|---|---|---|---|---|
| VOICE I | 3 | 1 | 3 | 3 | $100 |
| VOICE II | 4 | 2 | 4 | 4 | $150 |
| VOICE III | 6 | 3 | 6 | 6 | $200 |
| VOICE IV | 8 | 4 | 8 | 8 | $250 |
| VOICE V | 10 | 5 | Senza limiti | 28 | $300 |
Minuti
| Destinazione | Al minuto |
|---|---|
| Chiamate in entrata | $0.00 |
| Costa Rica · fisso | $0.03 |
| Costa Rica · cellulare | $0.08 |
| America Centrale | $0.45 |
| Caraibi | $0.55 |
| Resto del mondo | $2.30 |
Prezzi in dollari statunitensi, tasse incluse. Le chiamate ai cellulari le misura al secondo il nostro operatore. Ogni licenza include 1 numero; i numeri in più condividono lo stesso centralino, gli stessi flussi e lo stesso pannello.
Registrare, e la leggetramite API
Un audio registrato è la voce di altre persone. Lo governa la legge costaricana 8968, e il progetto nasce da lì e non da quello che sarebbe comodo.
- Decide lei cosa si registra.tramite API Tutto, o solo certi interni, o solo le chiamate che entrano da un certo numero. O niente, che è una risposta legittima.
- La conservazione viene con il suo piano. Le registrazioni si cancellano da sole quando è ora. L'unica eccezione è una registrazione legata a un fascicolo di chiamata molesta, che smette di scadere finché lei non chiude il fascicolo — e chiuderlo restituisce una scadenza normale, mai un «la cancelli subito».
- Condividerne una non è dare accesso. Un link firmato riproduce una sola registrazione, scade da solo e si può revocare. La persona a cui lo manda non vede mai il suo account.
- Ogni ascolto resta annotato. Chi ha riprodotto quale registrazione e quando. È la voce di un'altra persona: sapere chi l'ha sentita fa parte del tenerla.
- Si possono classificare. Cliente, potenziale cliente o interna. Non c'è un valore predefinito apposta: non classificata è onesto, e un'etichetta messa dalla macchina poi non si distingue da una messa da una persona.
Vengono sempre avvisate entrambe le parti. Chiedere al centralino di registrare restituisce anche l'obbligo di annunciarlo: le due cose non si possono separare, perché separarle è il modo in cui qualcuno finisce registrato senza saperlo. In una stanza di conferenza l'annuncio viene fatto a ogni persona quando entra.
Limiti, protezione e annullamento
Le cose che decidono quanto arriva a fare male una giornata storta: una credenziale rubata, un errore nell'instradamento, un numero che non smette di chiamare.
- Un tetto di spesa, giornaliero e mensile.banco di prova È quello che impedisce a una credenziale rubata di costare denaro. Raggiunto il tetto, le chiamate si fermano.
- Cosa può comporre ogni interno.tramite API Solo interne, nazionale, cellulare o tutto. Il telefono del magazzino non ha motivo di poter chiamare un numero a tariffa maggiorata. Le chiamate d'emergenza non passano mai di qui.
- Il prezzo prima di comporre.tramite API Chieda quanto costerebbe un certo numero e la risposta la calcola la stessa macchina che instraderà davvero la chiamata, non un listino che potrebbe non essere quello applicato.
- Un allarme antifrode che guarda il comportamento.non ancora provato Una velocità insolita, un paese che non ha mai chiamato, un'ora in cui non lavora nessuno. Avvisa e non taglia: un falso positivo qui non è un avviso fastidioso, è una chiamata che non si è fatta. Gli servono due segnali prima di dire qualcosa, perché un allarme che scatta ogni giorno si impara a ignorarlo.
- Chi insiste troppo viene segnalato.non ancora provato Lo stesso numero cinque volte in due minuti non è un cliente insistente: è un combinatore automatico. Di serie avvisa soltanto; bloccare in automatico è una casella sua, perché un falso positivo costa un cliente che non potrà più chiamare.
- Un fascicolo per una chiamata molesta.non ancora provato L'ora, la rotta e l'audio, tenuti insieme per una denuncia. Aprirne uno non blocca chi chiama: ogni nuova chiamata è una prova in più, e questo lo decide lei e non noi.
- Quanto sono stati raggiungibili i suoi apparecchi.tramite API Non il nostro tempo in piedi: il suo. E mostra sempre quanta parte del periodo è stata davvero misurata, perché una percentuale che si mangia in silenzio le ore che nessuno ha guardato sbaglia sempre dalla parte comoda.
- Cosa è cambiato, chi l'ha cambiato e come si annulla.tramite API «Ieri funzionava» è una domanda con una risposta. Ogni modifica alla configurazione resta annotata e si può revocare, e revocarla controlla che nel frattempo nessun altro abbia toccato quei campi, invece di sovrascriverli in silenzio.
Cosa è spento, e perché
Un manuale che racconta solo quello che funziona la obbliga a scoprire il resto per conto suo, e lo si scopre sempre nel momento peggiore. Questo elenco lo genera l'interruttore stesso, quindi non può descrivere come spento qualcosa che è già stato acceso.
| Cosa fa | Perché |
|---|---|
| La segreteria via e-mail | L'audio allegato, senza dover chiamare la segreteria. Serve una credenziale di posta per la casella, e quella credenziale ancora non esiste. |
| L'addebito automatico al minuto | La misurazione funziona e ogni chiamata viene misurata; quello che non è acceso è lo scalo da un credito prepagato. Finché non lo sarà, i minuti si fatturano. |
| Indirizzo di riserva per gli apparecchi | Perché i telefoni commutino da soli fra i due ingressi del centralino. Serve una credenziale del dominio con permesso di scrittura; quella che abbiamo legge soltanto. |
| Il fax in entrata | Rilevare il tono e avvisarla è costruito, ed è spento apposta: il rilevamento del fax ascolta tutte le chiamate in entrata, e un falso positivo farebbe cadere una vera chiamata vocale. Resta spento finché non ci sarà un fax vero con cui misurarlo. |
Per chi lo integra
L'APItramite API
Il pannello è un client di questa API come un altro. Tutto quello che cambia a mano si può cambiare da programma, con una chiave che è del suo account.
curl -H "authorization: Bearer <clave>" \
https://api.voice.forhosting.com/inquilinos/<cuenta>/numeros
Ambiti
| Ambito | Cosa fa |
|---|---|
sistema | Attivazione, al di sopra dei singoli account. Una di queste non le verrà consegnata. |
inquilino | Il suo account, lettura e scrittura. È la chiave con cui si integra. |
lectura | Il suo account, solo GET. Per cruscotti che non devono poter cambiare niente. |
sesion | La stessa portata della chiave del suo account, ma scade in pochi minuti. È quella che usa il pannello, così un browser non tiene mai una credenziale permanente. |
dispositivo | Un solo apparecchio di un solo interno, e scade in pochi minuti. È quella che porta l'app del telefono: raggiunge solo ciò che serve a un telefono, e solo per il proprio interno. |
Quando qualcosa va storto
| Codice | Cosa fa |
|---|---|
400 | La richiesta è malformata, o un valore non è tra quelli che accettiamo. Il messaggio dice quale. |
401 | Senza chiave, con una chiave sconosciuta, o con una sessione già scaduta. |
403 | La chiave è buona ma non può fare questo: dati di un altro account, una rotta di sola attivazione, o una scrittura con una chiave di sola lettura. |
404 | Questo non esiste nel suo account. |
405 | Quel percorso esiste, quel metodo no. Si distingue dal 404 apposta: fa risparmiare un'ora. |
503 · 504 | Non è stato possibile raggiungere il centralino, oppure non ha risposto in tempo. Non si risponde mai «non ha niente»: non poter guardare non è la stessa cosa che non esserci niente. |
Tutto ciò che l'API può rispondere quando dice di no
Sono le stringhe esatte che l'API restituisce nel campo error, lette dal codice sorgente del centralino. Escono in spagnolo e qui sono mostrate così come sono, di proposito: quello che deve riconoscere è ciò che arriva, non una traduzione. Un … segna il punto in cui viene inserito un dato.
Ogni errore porta un codice stabile. Si basi su codigo, non sul messaggio. C'è sempre: ciò che non dichiara un codice proprio riceve quello della sua classe, derivato dall'HTTP. Il testo di error è pensato per una persona e può essere riscritto; il codice no.
{ "error": "…", "codigo": "de_otra_cuenta" }
| Codice | HTTP | Quando lo riceve |
|---|---|---|
mala_peticion | 400 | La richiesta è malformata, o un valore non è tra quelli accettati. Il messaggio dice quale. |
no_autorizado | 401 | Senza chiave, con una sconosciuta, o con una sessione scaduta. |
prohibido | 403 | La chiave è valida ma non può fare questo. |
no_existe | 404 | Non c'è nulla su cui agire. |
metodo_no_permitido | 405 | La rotta esiste, quel verbo no. Si distingue da una rotta inesistente di proposito: fa risparmiare un'ora. |
conflicto | 409 | Lo stato dell'account non lo consente adesso. |
ambito_insuficiente | La sua chiave non arriva a quella rotta. Il provisioning è del portale, non suo. | |
canales_por_troncal | La ripartizione dei canali inviata nel provisioning non può essere accettata, e non se ne salva nessuna parte. Il dettaglio dice cosa non va. Riguarda il provisioning, non il suo account. | |
central_no_disponible | Al centralino non si arriva in questo momento. Riprovi con attesa crescente: la sua richiesta non ha nulla di sbagliato. | |
central_sin_respuesta | Il centralino non ha risposto in tempo. Stesso trattamento del precedente, e stessa cautela: la scrittura può essere arrivata o no. | |
clase_de_servicio | Quel valore non è uno dei permessi di chiamata che un interno può avere. | |
clave_sin_cuenta | La chiave non è legata a nessun account. | |
de_otra_cuenta | Appartiene a un altro account — o non esiste nel suo. I due casi condividono il codice di proposito: distinguerli rivelerebbe se esiste. | |
falta_credencial | Non ha inviato nessuna chiave. | |
garantia_no_cabe | Non resta capacità garantita per ciò che si chiede. Non è un guasto: è ciò che impedisce di vendere due volte lo stesso canale. Il messaggio dice quanto resta. | |
no_editable | Quel dato lo cambia il suo fornitore, non si tocca da qui. | |
no_existe | Non c'è nulla su cui agire. | |
protocolo_incorrecto | Quella rotta parla solo WebSocket e lei l'ha chiesta su HTTP normale. | |
solo_lectura | La sua chiave è di sola lettura e questo scriverebbe. | |
ya_existe | Esiste già qualcosa con quel nome o quel numero. Riprovi con un altro, non con lo stesso payload. |
| Codice | Quante | Messaggio |
|---|---|---|
400 | 163 |
|
401 | 1 |
|
403 | 11 |
|
404 | 43 |
|
409 | 25 |
|
243 messaggi distinti su 289 punti del sorgente del centralino. Derivato a ogni compilazione: un messaggio che cambia lì cambia qui.
Oggi non c'è quasi nessun limite di frequenza. L'unico è un'attesa di pochi secondi fra un tentativo e l'altro di aprire il telefono nel browser. Non c'è una quota generale, e preferiamo dirlo piuttosto che lasciarglielo scoprire dopo aver costruito su un'ipotesi. Sia ragionevole, e se ha in programma qualcosa di pesante, ce lo dica prima, così lo misuriamo insieme a lei invece che dopo di lei.
Fin dove si arriva
| Area | Endpoint | Esempi |
|---|---|---|
| Segreterie | 13 | GET /buzones POST /buzones DELETE /buzones/:buz |
| Interni | 13 | GET /extensiones POST /extensiones DELETE /extensiones/:ext |
| Code | 12 | GET /colas POST /colas DELETE /colas/:cola |
| Musica d'attesa | 12 | GET /discos POST /discos DELETE /discos/:disco |
| Registrazioni | 9 | GET /grabaciones PUT /grabaciones/:grabacion/categoria DELETE /grabaciones/:grb |
| Gruppi di squillo | 8 | GET /grupos POST /grupos DELETE /grupos/:grp |
| Menu vocali | 8 | GET /ivrs POST /ivrs DELETE /ivrs/:ivr |
| Turni di reperibilità | 8 | GET /turnos POST /turnos DELETE /turnos/:turno |
| Stanze di conferenza | 7 | GET /conferencias POST /conferencias DELETE /conferencias/:sala |
| Orari | 7 | GET /horarios POST /horarios DELETE /horarios/:hor |
| Webhook | 7 | GET /webhooks POST /webhooks DELETE /webhooks/:whk |
| Passi di flusso programmabile | 6 | GET /pasos POST /pasos DELETE /pasos/:pso |
| Quello che dice ogni linea | 5 | GET /guiones POST /guiones DELETE /guiones/:gui |
| Messaggi | 5 | GET /mensajes DELETE /mensajes/:msg GET /mensajes/:msg |
| Rotte in entrata | 5 | GET /rutas POST /rutas DELETE /rutas/:ruta |
| Alias componibili | 4 | GET /alias POST /alias DELETE /alias/:als |
| Promemoria degli appuntamenti | 4 | GET /citas POST /citas DELETE /citas/:cita |
| I suoi contatti | 4 | GET /contactos POST /contactos DELETE /contactos/:con |
| Chat unita alla voce | 4 | GET /conversaciones GET /conversaciones/:cnv POST /conversaciones/:cnv/cerrar |
| Apparecchi | 4 | DELETE /dispositivos/:disp POST /dispositivos/:disp/estado POST /dispositivos/:disp/provision |
| Fascicoli di chiamata molesta | 4 | GET /expedientes POST /expedientes GET /expedientes/:exp |
| Regole di registrazione | 4 | GET /grabacion/decidir GET /grabacion/reglas PUT /grabacion/reglas |
| Registro chiamate | 4 | GET /llamadas GET /llamadas/:llamada GET /llamadas/csv |
| Numeri | 4 | GET /numeros DELETE /numeros/:numero/aviso-cambio GET /numeros/:numero/aviso-cambio |
| Linee simultanee | 3 | GET /canales GET /canales/episodios PUT /canales/modo |
| Festivi | 3 | GET /feriados POST /feriados DELETE /feriados/:fer |
| Storico delle modifiche e annullamento | 3 | GET /historial GET /historial/:cambio POST /historial/:cambio/revertir |
| Lista nera | 3 | GET /lista-negra POST /lista-negra DELETE /lista-negra/:neg |
| Finestre di manutenzione | 3 | GET /mantenimientos POST /mantenimientos POST /mantenimientos/:mnt/cerrar |
| Il suo account e il suo stato | 2 | GET / PATCH / |
| Rubrica | 2 | GET /directorio GET /directorio/buscar |
| Link per condividere | 2 | GET /enlaces DELETE /enlaces/:token |
| Altro | 1 | GET /guiones/claves |
| Chiamate parcheggiate | 1 | GET /aparcadas |
| Chi chiama, e per cosa | 1 | GET /contexto |
| Quanto costerebbe una chiamata | 1 | GET /cotizar-llamada |
| Dove si può mandare una chiamata | 1 | GET /destinos |
| Quanto sono raggiungibili i suoi apparecchi | 1 | GET /disponibilidad |
| Estratto conto | 1 | GET /estado-cuenta |
| Il canale in diretta | 1 | POST /eventos/ticket |
| Chiamate in corso | 1 | GET /llamadas-en-curso |
| Chiamare con un clic | 1 | POST /llamar |
| Centralinista | 1 | PUT /operadora |
| Dove chiama questa azienda | 1 | GET /paises |
| Modelli di avvio | 1 | POST /plantilla |
| Cosa si può comporre | 1 | GET /politica-salida |
| Farsi chiamare dal centralino e sentire qualcosa | 1 | POST /probar-audio |
| Provare dove finirebbe una chiamata | 1 | GET /probar-entrada |
| Provare una chiamata in uscita senza farla | 1 | GET /probar-salida |
| Credito | 1 | GET /saldo |
| Chiamate che nessuno ha richiamato | 1 | GET /sin-devolver |
| Unire due numeri esterni | 1 | POST /unir |
| Chi salta la fila | 1 | GET /vips |
| Il telefono nel browser | 1 | POST /webphone/sesion |
269 endpoint in totale, letti dal centralino stesso il 2026-09-04.
Questa tabella è un riassunto. L'elenco che non può invecchiare è quello che il centralino genera su se stesso: GET /api.
Ogni endpoint, uno per uno
Letto dal router stesso del centralino, quindi non può descrivere una rotta che non esiste né dimenticarne una che c'è. Qui compare solo l'ambito del suo account: le rotte di provisioning sono del portale e a lei non viene consegnata una chiave che le raggiunga.
| Cosa fa | Cosa fa | Esempio |
|---|---|---|
GET /guiones/claves | Qué frases admite un guion | |
GET / | tramite API | |
PATCH / | Editar la ficha (el cliente, sus datos; plan y límites, el portal)tramite API | |
GET /alias | tramite API | |
POST /alias | tramite API | |
DELETE /alias/:als | tramite API | |
PATCH /alias/:als | tramite API | |
GET /aparcadas | Las llamadas aparcadas ahora mismo (#60)tramite API | vedi |
GET /buzones | chiamata reale | |
POST /buzones | chiamata reale | |
DELETE /buzones/:buz | chiamata reale | |
GET /buzones/:buz | chiamata reale | |
PATCH /buzones/:buz | Saludo, correo, transcripción, duración máximatramite API | |
GET /buzones/:buz/mensajes | tramite API | |
PUT /buzones/:buzon/clave | Poner o quitar la clave del buzón (#10)banco di prova | |
GET /buzones/:buzon/ocupacion | Cuántos mensajes hay y cuántos caben (#14)banco di prova | |
GET /buzones/:buzon/papelera | Lo borrado que todavía se puede recuperar (#15)banco di prova | |
POST /buzones/:buzon/papelera/:mensaje/recuperar | Deshacer un borrado (#15)banco di prova | |
GET /buzones/:buzon/saludos | Los saludos del buzón, por motivobanco di prova | |
POST /buzones/:buzon/saludos | Poner el saludo de un motivo (normal, ocupado, vacaciones…)banco di prova | |
DELETE /buzones/:buzon/saludos/:saludo | banco di prova | |
GET /canales | tramite API | |
GET /canales/episodios | tramite API | |
PUT /canales/modo | tramite API | |
GET /citas | tramite API | |
POST /citas | Programar un recordatorio de cita por teléfonotramite API | vedi |
DELETE /citas/:cita | tramite API | vedi |
GET /citas/:cita | tramite API | vedi |
GET /colas | tramite API | vedi |
POST /colas | Crear una cola de espera con agentestramite API | vedi |
DELETE /colas/:cola | tramite API | |
GET /colas/:cola | tramite API | vedi |
PUT /colas/:cola | tramite API | vedi |
GET /colas/:cola/callbacks | Las devoluciones de llamada pedidastramite API | vedi |
GET /colas/:cola/estado | Cuánta gente espera, quién está de turno y cuánto se tardatramite API | |
GET /colas/:cola/habilidades | Qué habilidades existen hoy en esta cola | |
POST /colas/:cola/miembros | Añadir un agente (extensión o número de fuera)tramite API | |
DELETE /colas/:cola/miembros/:miembro | tramite API | |
PUT /colas/:cola/miembros/:miembro/habilidades | Las etiquetas de un agente (#70) | |
POST /colas/turno | Entrar o salir de turno (lo mismo que *80 / *81)tramite API | |
GET /conferencias | tramite API | |
POST /conferencias | Crear una sala con número y clavetramite API | vedi |
DELETE /conferencias/:sala | tramite API | |
GET /conferencias/:sala | tramite API | vedi |
PUT /conferencias/:sala | Cambiar la sala (las claves se cambian, no se leen)tramite API | |
GET /conferencias/:sala/historial | Quién estuvo y cuántotramite API | |
POST /conferencias/:sala/invitar | Llamar a alguien y meterlo en la salatramite API | |
GET /contactos | tramite API | |
POST /contactos | Alta o importación masivatramite API | |
DELETE /contactos/:con | tramite API | |
PUT /contactos/:contacto/vip | Marcar o quitar el VIP de un contacto | |
GET /contexto | Quién llama y de qué habló la última veztramite API | |
GET /conversaciones | banco di prova | |
GET /conversaciones/:cnv | banco di prova | |
POST /conversaciones/:cnv/cerrar | banco di prova | |
POST /conversaciones/:cnv/turnos | banco di prova | |
GET /cotizar-llamada | Cuánto costaría llamar a ese número, antes de marcarlotramite API | |
GET /destinos | Qué destinos se pueden elegir en esta cuentachiamata reale | |
GET /directorio | Quién sale en el directorio por nombrebanco di prova | |
GET /directorio/buscar | A quién encontraría el directorio con esas teclasbanco di prova | |
GET /discos | tramite API | |
POST /discos | tramite API | |
DELETE /discos/:disco | tramite API | |
GET /discos/:disco | tramite API | |
PATCH /discos/:disco | tramite API | |
GET /discos/:disco/estadisticas | tramite API | |
GET /discos/:disco/frases | tramite API | |
PUT /discos/:disco/frases | tramite API | |
DELETE /discos/:disco/frases/:frase | tramite API | |
PUT /discos/:disco/pistas | tramite API | |
DELETE /discos/:disco/pistas/:pista | tramite API | |
GET /discos/:disco/probar | tramite API | |
GET /disponibilidad | Cuánto tiempo estuvo arriba cada extensióntramite API | |
DELETE /dispositivos/:disp | Revocar una credencialapparecchio reale | |
POST /dispositivos/:disp/estado | Suspender o reactivar un dispositivoapparecchio reale | |
POST /dispositivos/:disp/provision | Emitir un token para configurar la app sin teclear la clavetramite API | |
POST /dispositivos/:disp/rotar | Cambiar la clave de un dispositivoapparecchio reale | |
GET /enlaces | banco di prova | |
DELETE /enlaces/:token | Revocar un enlace compartido por errorbanco di prova | |
GET /estado-cuenta | tramite API | |
POST /eventos/ticket | Ticket para mirar el canal de eventos en vivo (sin teléfono)tramite API | vedi |
GET /expedientes | Los expedientes abiertos (#64) | |
POST /expedientes | Abrir expediente sobre una llamada | |
GET /expedientes/:exp | Un expediente, con su llamada y su grabación | |
POST /expedientes/:exp/cerrar | Cerrar un expediente (la fila NUNCA se borra) | |
GET /extensiones | tramite API | |
POST /extensiones | Alta de extensión (crea buzón y credencial)tramite API | |
DELETE /extensiones/:ext | tramite API | |
GET /extensiones/:ext | tramite API | |
PATCH /extensiones/:ext | tramite API | |
POST /extensiones/:ext/dispositivos | Añadir un dispositivo (celular, computadora…)tramite API | |
POST /extensiones/:ext/no-molestar | tramite API | |
GET /extensiones/:ext/reglas | chiamata reale | |
PUT /extensiones/:ext/reglas | Sígueme, desvío, no molestar y destino de fallotramite API | |
GET /extensiones/:extension/camp | Los avisos de desocupado que pidió esta extensión (#58) | |
DELETE /extensiones/:extension/camp/:objetivo | Cancelar un aviso de desocupado | |
POST /extensiones/:extension/mover | Mover la llamada en curso a otro aparato de la misma extensión (#57) | |
GET /extensiones/siguiente-libre | tramite API | |
GET /feriados | tramite API | |
POST /feriados | Feriado propio o excepción a uno nacionaltramite API | |
DELETE /feriados/:fer | tramite API | |
GET /grabacion/decidir | ¿Se grabaría esta llamada? Y con qué avisotramite API | |
GET /grabacion/reglas | tramite API | |
PUT /grabacion/reglas | Qué se graba y cuánto se guardatramite API | |
DELETE /grabacion/reglas/:regla | tramite API | |
GET /grabaciones | banco di prova | |
PUT /grabaciones/:grabacion/categoria | cliente | prospecto | interno, o nada (#68) | |
DELETE /grabaciones/:grb | banco di prova | |
GET /grabaciones/:grb | Ficha: transcripción, resumen, acuerdos y hablantesnon ancora provato | |
GET /grabaciones/:grb/accesos | Quién ha escuchado esta grabaciónbanco di prova | |
POST /grabaciones/:grb/analizar | Volver a transcribir y resumirnon ancora provato | |
GET /grabaciones/:grb/audio | El audio (queda auditado)banco di prova | |
POST /grabaciones/:grb/enlace | Enlace firmado para compartir sin dar acceso a la cuentabanco di prova | |
GET /grabaciones/buscar | Buscar por lo que se dijo dentro de las llamadasbanco di prova | |
GET /grupos | tramite API | |
POST /grupos | tramite API | |
DELETE /grupos/:grp | tramite API | |
GET /grupos/:grp | tramite API | |
PUT /grupos/:grp | tramite API | |
POST /grupos/:grp/miembros | tramite API | |
DELETE /grupos/:grp/miembros/:miembro | tramite API | |
GET /grupos/:grp/orden | En qué orden sonaría ahora mismotramite API | |
GET /guiones | chiamata reale | |
POST /guiones | Los textos que dice una líneachiamata reale | |
DELETE /guiones/:gui | chiamata reale | |
GET /guiones/:gui | chiamata reale | |
PATCH /guiones/:gui | Cambiar textos, nombre o voz declaradachiamata reale | |
GET /historial | Qué cambió en esta cuenta, quién y cuándotramite API | vedi |
GET /historial/:cambio | tramite API | vedi |
POST /historial/:cambio/revertir | Deshacer un cambio de configuracióntramite API | vedi |
GET /horarios | tramite API | |
POST /horarios | tramite API | |
DELETE /horarios/:hor | tramite API | |
GET /horarios/:hor | tramite API | |
PUT /horarios/:hor | tramite API | |
GET /horarios/:hor/estado | ¿Abierto ahora? Y por quétramite API | |
POST /horarios/:hor/manual | Forzar abierto o cerrado, con vuelta automáticatramite API | |
GET /ivrs | chiamata reale | |
POST /ivrs | Crear un menú (detecta bucles al guardar)chiamata reale | |
DELETE /ivrs/:ivr | chiamata reale | |
GET /ivrs/:ivr | chiamata reale | |
PUT /ivrs/:ivr | chiamata reale | |
GET /ivrs/:ivr/guion | El texto exacto que se va a decirtramite API | |
DELETE /ivrs/:ivr/opciones/:tecla | chiamata reale | |
PUT /ivrs/:ivr/opciones/:tecla | chiamata reale | |
GET /lista-negra | tramite API | |
POST /lista-negra | Bloquear un número entrantetramite API | |
DELETE /lista-negra/:neg | tramite API | |
GET /llamadas | chiamata reale | |
GET /llamadas-en-curso | Las llamadas del inquilino ahora mismo (vista de operadora)tramite API | vedi |
GET /llamadas/:llamada | chiamata reale | |
GET /llamadas/csv | Exportar el CDRchiamata reale | |
GET /llamadas/resumen | Totales, atención y repartochiamata reale | |
POST /llamar | Timbrar a la extensión y conectarla con un destinochiamata reale | |
GET /mantenimientos | tramite API | vedi |
POST /mantenimientos | Avisar a quien llame de que hay un mantenimiento en cursotramite API | vedi |
POST /mantenimientos/:mnt/cerrar | tramite API | vedi |
GET /mensajes | Bandeja de toda la cuentatramite API | |
DELETE /mensajes/:msg | tramite API | |
GET /mensajes/:msg | tramite API | |
GET /mensajes/:msg/audio | tramite API | |
POST /mensajes/:msg/leido | tramite API | |
GET /numeros | tramite API | |
DELETE /numeros/:numero/aviso-cambio | Apagar el aviso de cambio y devolver la línea a su destinonon ancora provato | |
GET /numeros/:numero/aviso-cambio | Estado del aviso de cambio de númeronon ancora provato | |
POST /numeros/:numero/aviso-cambio | Anunciar que este número cambió y decir el nuevonon ancora provato | |
PUT /operadora | A dónde va el cero (#109)tramite API | vedi |
GET /paises | La memoria del cortafuegos de fraude: a dónde llama esta casa (#65) | |
GET /pasos | Pasos de flujo del cliente | |
POST /pasos | Alta de un paso de flujo | |
DELETE /pasos/:pso | ||
GET /pasos/:pso | ||
PUT /pasos/:pso | ||
POST /pasos/:pso/rotar-secreto | Rotar el secreto con el que se firma la consulta | |
POST /plantilla | Aplicar una plantilla de arranque (horario + ruta + buzón)tramite API | |
GET /politica-salida | tramite API | |
POST /probar-audio | Llamarte y reproducirte una cadena de audio — la prueba de verdadchiamata reale | |
GET /probar-entrada | A dónde iría una llamada ahora mismochiamata reale | |
GET /probar-salida | Simular una salida sin cursarlachiamata reale | |
GET /rutas | chiamata reale | |
POST /rutas | Qué hace una llamada que entra por un númerochiamata reale | |
DELETE /rutas/:ruta | chiamata reale | |
GET /rutas/:ruta | chiamata reale | |
PATCH /rutas/:ruta | chiamata reale | |
GET /saldo | banco di prova | |
GET /sin-devolver | Las perdidas que nadie ha devuelto, agrupadas por número (#67) | |
GET /turnos | Las rotas de guardia (#66) | |
POST /turnos | Crear una rota de guardia | |
DELETE /turnos/:turno | Borrar una rota (falla si una ruta apunta a ella) | |
GET /turnos/:turno | Una rota, con quién está de guardia AHORA | |
PUT /turnos/:turno | Cambiar una rota | |
POST /turnos/:turno/miembros | Meter a alguien en la rota, con su franja | |
DELETE /turnos/:turno/miembros/:miembro | Sacar a alguien de la rota | |
PUT /turnos/:turno/miembros/:miembro | Cambiar la franja de alguien | |
POST /unir | Llamar a dos números externos y unirloschiamata reale | |
GET /vips | Quién se salta la fila de la cola (#61) | |
GET /webhooks | tramite API | |
POST /webhooks | tramite API | |
DELETE /webhooks/:whk | tramite API | |
PATCH /webhooks/:whk | tramite API | |
GET /webhooks/:whk/entregas | tramite API | |
POST /webhooks/:whk/probar | Mandar un evento de pruebatramite API | |
POST /webhooks/:whk/rotar | tramite API | |
POST /webphone/sesion | Registrar el navegador como teléfono de una extensióntramite API |
Esempi registrati
Non sono stati scritti a mano. Sono stati registrati da un'esecuzione reale contro questa API, in un account usa e getta poi cancellato — richiesta, stato e risposta, esattamente come sono passati. Gli identificatori di account e di oggetto sono sostituiti da segnaposto; il resto non si tocca. Un esempio scritto dimostra ciò che credeva chi lo ha scritto; uno registrato dimostra ciò che il centralino ha fatto.
20 rotte su 204 hanno un esempio registrato, dall'esecuzione del 2026-09-04. Le altre sono elencate sopra ma non sono ancora state esercitate così — preferiamo mostrarle il numero piuttosto che lasciarle supporre che ci siano tutte.
GET /inquilinos/:inquilino/aparcadas 200
Risposta
{
"plazas": []
}
DELETE /inquilinos/:inquilino/citas/:id 200
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "50688889999",
"nombre": null,
"cuando": "2026-09-04T21:11:53.507Z",
"avisar_el": "2026-09-03T21:11:53.507Z",
"guion": null,
"estado": "cancelada",
"intentos": 0,
"ultimo_intento": null,
"respondido_el": null,
"nota": null,
"creado": "2026-09-04T20:11:54.131Z",
"actualizado": "2026-09-04T20:11:54.445Z"
}
GET /inquilinos/:inquilino/citas/:id 200
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "50688889999",
"nombre": null,
"cuando": "2026-09-04T21:11:53.507Z",
"avisar_el": "2026-09-03T21:11:53.507Z",
"guion": null,
"estado": "pendiente",
"intentos": 0,
"ultimo_intento": null,
"respondido_el": null,
"nota": null,
"creado": "2026-09-04T20:11:54.131Z",
"actualizado": "2026-09-04T20:11:54.131Z"
}
POST /inquilinos/:inquilino/citas 201
Richiesta
{
"numero": "50688889999",
"cuando": "2026-09-04T21:11:53.507Z",
"texto": "ensayo"
}
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "50688889999",
"nombre": null,
"cuando": "2026-09-04T21:11:53.507Z",
"avisar_el": "2026-09-03T21:11:53.507Z",
"guion": null,
"estado": "pendiente",
"intentos": 0,
"ultimo_intento": null,
"respondido_el": null,
"nota": null,
"creado": "2026-09-04T20:11:54.131Z",
"actualizado": "2026-09-04T20:11:54.131Z"
}
GET /inquilinos/:inquilino/colas/:id/callbacks 200
Risposta
[]
GET /inquilinos/:inquilino/colas/:id 200
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Soporte",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:52.214Z",
"actualizado": "2026-09-04T20:11:52.214Z",
"miembros": [],
"estado": {
"de_turno": 0,
"miembros": 0,
"espera_estimada_s": null,
"callbacks_pendientes": 0,
"atendidas_hoy": 0,
"abandonos_hoy": 0
}
}
PUT /inquilinos/:inquilino/colas/:id 200
Richiesta
{
"nombre": "Ya editada"
}
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Ya editada",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:54.606Z",
"actualizado": "2026-09-04T20:11:54.771Z",
"miembros": [],
"estado": {
"de_turno": 0,
"miembros": 0,
"espera_estimada_s": null,
"callbacks_pendientes": 0,
"atendidas_hoy": 0,
"abandonos_hoy": 0
}
}
GET /inquilinos/:inquilino/colas 200
Risposta
[
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Soporte",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:52.214Z",
"actualizado": "2026-09-04T20:11:52.214Z"
}
]
POST /inquilinos/:inquilino/colas 201
Richiesta
{
"nombre": "Soporte",
"estrategia": "todos"
}
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Soporte",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:52.214Z",
"actualizado": "2026-09-04T20:11:52.214Z",
"miembros": [],
"estado": {
"de_turno": 0,
"miembros": 0,
"espera_estimada_s": null,
"callbacks_pendientes": 0,
"atendidas_hoy": 0,
"abandonos_hoy": 0
}
}
GET /inquilinos/:inquilino/conferencias/:id 200
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Sala 1",
"numero": null,
"max_personas": 10,
"esperar_organizador": 0,
"anunciar_entradas": 1,
"pedir_nombre": 1,
"bloqueada": 0,
"grabar": 0,
"musica": "default",
"activa": 1,
"creado": "2026-09-04T20:11:52.847Z",
"actualizado": "2026-09-04T20:11:52.847Z",
"tiene_pin": false,
"tiene_pin_organizador": false,
"dentro": 0,
"grabando": false
}
POST /inquilinos/:inquilino/conferencias 201
Richiesta
{
"nombre": "Sala 1",
"clave": "4321"
}
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Sala 1",
"numero": null,
"max_personas": 10,
"esperar_organizador": 0,
"anunciar_entradas": 1,
"pedir_nombre": 1,
"bloqueada": 0,
"grabar": 0,
"musica": "default",
"activa": 1,
"creado": "2026-09-04T20:11:52.847Z",
"actualizado": "2026-09-04T20:11:52.847Z",
"tiene_pin": false,
"tiene_pin_organizador": false
}
POST /inquilinos/:inquilino/eventos/ticket 201
Richiesta
{}
Risposta
{
"ticket": "eyJ1IjoicGFuZWwiLCJpIjoiaW5xX3JhN3J0YnYycXA0YyIsInAiOiJldmVudG9zIiwiZXhwIjoxNzg4NTgxNTE1NTcxfQ.bLihoh7EfWP7ZcVGQcPEhfGcHYAn1Y8DmwK4f552uIQ",
"eventos": [
"wss://<puerta>:<puerto>/eventos"
],
"inquilino": "<cuenta>"
}
POST /inquilinos/:inquilino/historial/:id/revertir 201
Richiesta
{}
Risposta
{
"revertido": "<id>",
"tabla": "colas",
"fila_id": "<id>",
"columnas": [
"nombre"
],
"fila": {
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Para editar",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:54.606Z",
"actualizado": "2026-09-04T20:11:55.256Z"
}
}
GET /inquilinos/:inquilino/historial/:id 200
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"tabla": "colas",
"fila_id": "<id>",
"columna_clave": "id",
"antes": {
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Para editar",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:54.606Z",
"actualizado": "2026-09-04T20:11:54.606Z"
},
"despues": {
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Ya editada",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": null,
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-09-04T20:11:54.606Z",
"actualizado": "2026-09-04T20:11:54.771Z"
},
"actor": "apikey:<id> primera clave de sistema (sistema)",
"origen": "api",
"revertido_de": null,
"creado": "2026-09-04T20:11:54.777Z",
"cambios": {
"nombre": {
"antes": "Para editar",
"despues": "Ya editada"
}
}
}
GET /inquilinos/:inquilino/historial 200
Risposta
{
"inquilino": "<cuenta>",
"cambios": [
{
"id": "<id>",
"tabla": "colas",
"fila_id": "<id>",
"actor": "apikey:<id> primera clave de sistema (sistema)",
"origen": "api",
"revertido_de": null,
"creado": "2026-09-04T20:11:54.777Z",
"cambios": {
"nombre": {
"antes": "Para editar",
"despues": "Ya editada"
}
}
}
]
}
GET /inquilinos/:inquilino/llamadas-en-curso 200
Risposta
{
"activas": []
}
POST /inquilinos/:inquilino/mantenimientos/:id/cerrar 201
Richiesta
{}
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"motivo": "ensayo",
"desde": "2026-09-04T20:11:53.637Z",
"hasta": "2026-09-04T20:11:53.969Z",
"avisar": 1,
"activo": 0,
"creado": "2026-09-04T20:11:53.637Z"
}
GET /inquilinos/:inquilino/mantenimientos 200
Risposta
[
{
"id": "<id>",
"inquilino": "<cuenta>",
"motivo": "ensayo",
"desde": "2026-09-04T20:11:53.637Z",
"hasta": null,
"avisar": 1,
"activo": 1,
"creado": "2026-09-04T20:11:53.637Z"
}
]
POST /inquilinos/:inquilino/mantenimientos 201
Richiesta
{
"motivo": "ensayo",
"minutos": 5
}
Risposta
{
"id": "<id>",
"inquilino": "<cuenta>",
"motivo": "ensayo",
"desde": "2026-09-04T20:11:53.637Z",
"hasta": null,
"avisar": 1,
"activo": 1,
"creado": "2026-09-04T20:11:53.637Z"
}
PUT /inquilinos/:inquilino/operadora 200
Richiesta
{
"destino": "buzon"
}
Risposta
{
"operadora": null
}
DELETE /inquilinos/:inquilino 200
Risposta
{
"borrado": "<cuenta>"
}
POST /inquilinos 201
Richiesta
{
"nombre": "Ejercicio API 2026-09-04T20:11:51"
}
Risposta
{
"id": "<cuenta>",
"nombre": "Ejercicio API 2026-09-04T20:11:51",
"cuenta_portal": null,
"cedula": null,
"correo": null,
"telefono": null,
"plan": "zero",
"zona": "America/Costa_Rica",
"idioma": "es",
"estado": "activo",
"canales_max": 4,
"notas": null,
"creado": "2026-09-04T20:11:51.932Z",
"actualizado": "2026-09-04T20:11:51.932Z",
"canales_garantizados": 2,
"modo_presion": "firme",
"presion_canales": 1,
"duracion_max_s": null,
"operadora_tipo": null,
"operadora_id": null,
"filtro_anonimas": 0,
"cdr_retencion_dias": null,
"codigo_asunto_digitos": 0,
"supervision_activa": 0,
"limites": {
"canales": 2,
"canales_max": 4,
"extensiones": 3,
"retencion": 30,
"tope_diario": 3,
"tope_mensual": 25
},
"canales": {
"existe": true,
"garantizados": 2,
"max": 4,
"modo": "firme",
"presion_canales": 1
}
}
Sessioni: il browser non tiene mai una chiave permanente
Una credenziale di breve durata, con un tetto di 60 minuti, che non può fabbricarne una permanente. Questo è il contratto se è lei a costruire il pulsante.
- Solo il portale può emetterla. Emettere una sessione richiede una chiave di attivazione, perché solo il portale può affermare che dietro la richiesta c'è un cliente con la sessione aperta. VOICE non sa nulla delle password dei clienti, e non ha motivo di saperne.
- Non nasce mai senza scadenza. Se nessuno chiede una durata, gliene viene messa una. Un ambito che esiste per scadere e che potrebbe nascere eterno è peggio che non averlo, perché ci si fida.
- Chiedere più tempo non serve. C'è un tetto duro. Che chi chiama domandi otto ore non rende sicura la credenziale.
- Non può promuoversi da sola. La gestione delle chiavi vive interamente dietro l'ambito di attivazione, quindi una sessione non può fabbricarsi una chiave permanente. Questo viene imposto nel router, prima di qualsiasi gestore.
- Si può chiudere in anticipo. L'identificativo torna indietro nel momento in cui la si emette, proprio perché lei possa revocarla prima del tempo.
Webhooktramite API
I suoi sistemi vengono avvisati di quello che è successo, invece di chiederlo ogni pochi secondi. 28 eventi, firmati, con ritentativi, e nessuno che cada in silenzio.
x-pbx-evento: llamada.entrante
x-pbx-marca: 1755300000
x-pbx-firma: <hex>
{ "evento": "llamada.entrante", "inquilino": "…", "cuando": "…", "datos": { … } }
Ogni consegna è firmata: la firma copre la marca temporale e il corpo esatto che ha ricevuto, quindi la verifichi contro i byte grezzi e non contro una copia riserializzata. Il segreto si vede una sola volta, quando crea l'iscrizione, e si può ruotare senza fermare le consegne.
Una consegna che fallisce viene ritentata dopo 10 · 30 · 60 · 300 · 900 · 3600 secondi, e ogni tentativo ha 10 secondi. Un'iscrizione che continua a fallire viene messa in pausa dopo 20 fallimenti di fila, invece di cadere in silenzio — e lei può vedere tutti i tentativi.
Gli eventi
| Evento | Quando scatta |
|---|---|
llamada.entrante | Sta entrando una chiamata, con il numero, la rotta e dove sta andando. |
llamada.contestada | Qualcuno ha risposto. |
llamada.terminada | È finita, con la durata e come si è conclusa. |
llamada.perdida | Ha squillato e non ha risposto nessuno. |
buzon.mensaje | Qualcuno ha lasciato un messaggio, con la sua trascrizione. |
grabacion.lista | Una registrazione ha finito di essere elaborata e si può scaricare. |
grabacion.analizada | La sua trascrizione, i suoi interlocutori e il suo riassunto sono pronti. |
saldo.bajo | Il credito sta finendo. |
tope.alcanzado | È stato raggiunto un tetto di spesa e le chiamate si sono fermate. |
registro.anomalo | Una registrazione di apparecchio ha un brutto aspetto — diverse credenziali dallo stesso posto, per esempio. |
canales.al_limite | È vicino al tetto delle sue linee simultanee. |
cita.confirmada | Qualcuno ha confermato il suo appuntamento con la tastiera. |
cita.reagendar | Qualcuno ha chiesto un'altra data. È una richiesta per una persona, non qualcosa che il centralino risolva da solo. |
cita.cancelada | Qualcuno ha annullato il suo appuntamento. |
desvio.activado | È stata attivata una deviazione. |
desvio.recordatorio | Una deviazione è ancora attiva. La deviazione dimenticata è il guasto fantasma più comune di un centralino. |
buzon.lleno | Una segreteria è piena — da qui in avanti i messaggi andrebbero persi. |
buzon.casi_lleno | Una segreteria si sta riempiendo, mentre c'è ancora tempo per fare qualcosa. |
cola.vacia | Non c'è nessuno di turno in una coda. |
cola.callback | Qualcuno ha chiesto di essere richiamato invece di aspettare. |
conferencia.entra | Qualcuno è entrato in una stanza. |
conferencia.sale | Qualcuno è uscito da una stanza. |
canales.desalojo | Una linea in prestito è stata restituita per proteggere la garanzia di qualcuno. |
emergencia.marcada | Qualcuno ha composto il numero di emergenza da un interno. La chiamata non viene mai ritardata per questo. |
fax.entrante | È stato rilevato un tono di fax su una chiamata in entrata. |
supervision.iniciada | Qualcuno ha ascoltato, sussurrato o è entrato in una chiamata. È quello che separa uno strumento di supervisione da un'intercettazione: poter rispondere «chi ha ascoltato questa chiamata, e quando». |
fraude.sospecha | Uno schema di comportamento che sembra frode. Avvisa; non taglia. |
filtro.insistencia | Un numero sta chiamando troppe volte. |
Il canale in direttachiamata reale
I webhook viaggiano a lotti e arrivano in pochi secondi. Certe cose devono essere sullo schermo adesso: una spia che dice che un collega è al telefono non può arrivare quindici secondi dopo.
- Cosa porta. Le chiamate mentre succedono, i messaggi nuovi e lo stato della spia di ogni interno — che è quello che rende davvero viva una pulsantiera di spie su uno schermo.
- È di sola lettura.tramite API Si può aprire un accesso al canale senza consegnare un telefono: guardare quello che succede non dovrebbe richiedere una credenziale capace anche di cambiare le cose.
- Non sostituisce i webhook. Il canale in diretta è per uno schermo che qualcuno sta guardando. Se conta che il suo sistema lo venga a sapere, usi un webhook: ritenta, e non dipende da un socket aperto.
Riferimento
Come si leggono i distintivi
Ogni funzione di questa pagina porta un distintivo che dice come è stata verificata. Pubblichiamo anche quelle che non sono ancora state provate, segnate come tali, perché scoprirlo per conto suo è peggio.
| Distintivo | Cosa fa | Quante |
|---|---|---|
| chiamata reale | Qualcuno ha fatto una chiamata vera e ha fatto quello che qui c'è scritto. | 13 |
| chiamata di prova | Una chiamata reale contro il centralino vivo, premendo tasti veri — ma senza voce e senza nessuno in ascolto. Tutto quello che dipende dal fatto che chi chiama parli resta non provato. | 3 |
| apparecchio reale | Provato con un apparecchio vero che si registra. | 1 |
| tramite API | Esercitato tramite l'API pubblica. | 46 |
| banco di prova | Esercitato al banco di prova, contro una copia usa e getta della base dati. | 13 |
| non ancora provato | Il codice c'è e si carica, ma nessuno l'ha ancora fatto girare. | 36 |
112 funzioni, contate dal centralino il 2026-08-19.
Il distintivo è di una funzione, non di una singola riga: dove una funzione copre più codici, tutti mostrano il livello del gruppo. Vuol dire che un distintivo può restare INDIETRO rispetto a quello che è stato davvero provato — mai avanti, che è l'unica direzione in cui siamo disposti a sbagliare su una pagina che lei legge come una promessa.
Glossario
Le parole che usa un centralino telefonico e non usa nient'altro.
| Termine | Cosa fa |
|---|---|
| Interno | Una persona o una postazione dentro la sua azienda, con un numero breve che compongono gli altri. Non è un telefono: un interno può avere più apparecchi. |
| Numero (DID) | Quello che compone la gente di fuori per arrivare a lei. Un numero punta a qualcosa —un interno, un gruppo, un menu— e lo decide lei. |
| Gruppo di squillo | Più interni che squillano per la stessa chiamata. È semplice, e non ha la minima idea di chi stia aspettando né da quanto. |
| Coda | Un gruppo che in più tiene la fila. Sa la posizione, l'attesa misurata e chi è di turno, e può offrire una richiamata. |
| Menu vocale (IVR) | «Digiti 1 per le vendite». Un menu può contenere altri menu, e chi chiama può sempre tornare indietro o arrivare a una persona. |
| Linea simultanea (canale) | Una conversazione in corso. Dieci canali sono dieci chiamate insieme, qualunque sia il numero di telefoni che possiede. |
| Registro di chiamata (CDR) | Una riga per chiamata: chi, quando, quanto è durata, per quale rotta e come è finita. È quello con cui si costruisce una fattura. |
| Spia di occupato | L'indicatore che dice se un collega è libero, squilla o sta parlando, senza doverlo chiamare per scoprirlo. |
| Toni della tastiera (DTMF) | I bip che fa un telefono quando si preme un tasto. Sono il modo in cui la sentono un menu, una segreteria e tutti i codici di questa pagina. |
| Seguimi | Il suo interno squilla anche sul suo cellulare, o al posto suo. È la funzione più usata di qualsiasi centralino piccolo. |
| Parcheggiare | Lasciare una chiamata ad aspettare in un posto numerato perché chiunque, da qualsiasi telefono, la riprenda componendo quel posto. |
| Trasferimento assistito | Parlare con il collega prima di passargli la chiamata, con la possibilità di riprenderla. |