Manuale di BitVoice
Contenuti
- Parte 1. Iniziare
- 1. Iniziare
- 2. Quanto è maturo ogni parte
- 3. Estensioni
- 4. Collegamento dei telefoni
- 5. Telefoni Skinny e gateway MGCP
- 6. Schede di telefonia
- 7. Tronchi
- 8. Routing delle chiamate
- 9. Set di PIN
- 10. Ricerca dell'ID del chiamante
- 11. Chiamate di emergenza
- 12. Siti e ufficio 911
- 13. Salute
- 14. Impostazioni
- 15. Le schermate nel tuo linguaggio
- Parte 2. Dove vanno le chiamate
- 16. Flusso di chiamata
- 17. Gruppi di chiamata
- 18. Code
- 19. Compositore di chiamate in uscita
- 20. Suoni: promemoria, lingue e musica in attesa
- 21. Menu (operatore automatico)
- 22. Elenco telefonico per nome
- 23. Accesso telefonico (DISA)
- 24. Bot vocali (AudioSocket)
- 25. Interruttori giorno/notte
- 26. Programmi
- 27. Script (JavaScript e Lua)
- 28. Receptionist AI, triage della casella vocale e richiesta
- 29. Casella vocale
- 30. Richiami
- 31. Collegamenti di chiamata e chiamata dal sito web
- Parte 3. Chiamate quotidiane
- 32. Codici di funzione, inoltro e numeri di composizione rapida
- 33. Il portale dello staff
- 34. Sale conferenze
- 35. Paging e altoparlanti
- 36. Hot desking
- 37. Chiamate d'albergo e sveglie
- 38. Contatti su ogni telefono
- 39. Calendari e non disturbare
- 40. App mobili
- 41. Chiamate video
- 42. Fax: invio e ricezione, macchine fax e telefoni analogici
- 43. Inbox: chat web, WhatsApp e Messenger
- 44. Messaggistica aziendale (SMS)
- 45. Trasferimento di brevi riassunti
- Parte 4. Clienti e informazioni
- 46. Chiamate in corso
- 47. Cronologia di chiamate
- 48. Cronologia del cliente
- 49. CRM: schede dei chiamanti e registrazione delle chiamate
- 50. Intuito della chiamata per i supervisori
- 51. Registrazione delle chiamate e pagamenti con carta
- 52. Consenso alla registrazione
- 53. Qualità della chiamata
- 54. Costi e budget
- 55. Reputazione dell'ID del chiamante e chiamate con marchio
- 56. Protezione anti-spam e STIR/SHAKEN
- Parte 5. Esecuzione di BitVoice
- 57. Amministratori
- 58. Accesso singolo
- 59. Elenco aziendale (Active Directory e LDAP)
- 60. Sicurezza
- 61. Modifiche, backup e importazione
- 62. Aggiornamenti
- 63. Più server come un unico sistema telefonico
- 64. Dove vengono conservati i dati (SQLite o PostgreSQL)
- 65. Ostare altre organizzazioni
- 66. Codec e suono
- 67. Microsoft Teams (Direct Routing)
- 68. Importa
- 69. Configurazione come codice
- 70. Compatibilità con Asterisk (AMI, ARI e AGI)
- 71. Assistenti AI (MCP)
- 72. Archivio
- 73. Conservazioni legali
- 74. Metriche: Prometheus, OpenTelemetry, Grafana, SNMP e registri di chiamata
- 75. Generatore di chiamate
- 76. Traccia SIP
- Parte 6. Sicurezza pubblica: il percorso del laboratorio
Iniziare
Da una nuova installazione a un sistema telefonico funzionante: estensioni, telefoni, un'azienda di telefonia, dove vanno le chiamate, chiamate di emergenza dagli uffici e come verificare che tutto sia pronto.
Iniziare
/BitVoice è un sistema telefonico completo in un unico programma: la centrale a cui i telefoni si connettono, i menu e le code che i chiamanti attraversano, la segreteria telefonica, la registrazione, le sale conferenze, i fax e le connessioni alle società telefoniche. Tutto viene configurato nel browser, sulle schermate descritte in questo manuale. Non c'è un file di configurazione da modificare e non c'è nulla altro da installare.
Cosa serve
- Un computer per eseguirlo: un piccolo server di ufficio, una macchina virtuale, un'istanza cloud o, per un primo sguardo, il proprio laptop. Linux, macOS e Windows funzionano tutti. Un Raspberry Pi 4 esegue un piccolo ufficio.
- Telefoni: telefoni da tavolo di Yealink, Poly, Grandstream o Snom vengono configurati automaticamente; qualsiasi altro telefono SIP o softphone funziona con le proprie impostazioni; e ogni browser è un telefono anche.
- Un trunk (un account con una società telefonica) per chiamare numeri esterni e ricevere chiamate. È possibile iniziare senza uno: le estensioni si chiamano a vicenda e il test dell'eco.
Il primo avvio
Avviare BitVoice e aprire l'indirizzo che stampa (su un desktop si apre il browser stesso). L'interfaccia web è solo HTTPS, anche su questo computer. Fino a quando non si installa un certificato proprio (Impostazioni, Certificato), BitVoice utilizza uno che ha creato lui stesso, quindi il browser avverte una volta: scegliere di continuare sul sito. Il wizard di configurazione chiede quattro cose: il nome e il paese dell'organizzazione, la password del primo amministratore, le prime estensioni e la società telefonica se ne si ha una. Il paese determina i numeri di emergenza, i toni che i chiamanti sentono e il modo in cui vengono scritti i numeri di telefono.
La prima ora
- Estensioni: una per persona o scrivania. Ognuna ha un numero e una password SIP. Aprire Estensioni (capitolo 3)
- Telefoni: connettere un telefono da tavolo, un softphone o il telefono del browser a ogni estensione. Aprire Telefoni (capitolo 4)
- Trunk: l'account della società telefonica, in modo da poter chiamare numeri esterni e ricevere chiamate. Aprire Trunk (capitolo 7)
- Routing delle chiamate: dove vanno le chiamate da fuori (una persona, un gruppo di chiamata, un menu), e quale trunk utilizzare per le chiamate esterne. Aprire Routing delle chiamate (capitolo 8)
- Salute ti dice cosa manca ancora, le chiamate di emergenza per prime. Aprire Salute (capitolo 13)
Quindi effettuare una chiamata di test: da qualsiasi telefono comporre *43, il test dell'eco. Si sente se stessi di ritorno, il che dimostra che il suono funziona in entrambe le direzioni.
Installazione in un solo comando
Su un server Linux (Ubuntu, Debian, RHEL, Fedora, Alpine con systemd) o un Mac:
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh
Su Windows, in PowerShell:
irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex
Scarica l'ultima versione per il computer, la controlla contro le somme SHA-256 della versione e la firma di rilascio di BioDream (con OpenSSL 3, altrimenti con ssh-keygen di OpenSSH, che Windows 10 e 11, macOS e Ubuntu 20.04 hanno; ssh-keygen controlla i rilasci a partire dalla versione v0.1.14) e l'installa come servizio che si avvia da solo:
- Linux:
/usr/local/bin/bitvoice, un utente di sistemabitvoice, dati in/var/lib/bitvoice, il servizio systemdbitvoicecon l'interfaccia web sulla porta 443. Quando ufw o firewalld è attivato, apre le porte 443, SIP (5060, 5061) e le porte audio delle chiamate (10000-20000 UDP). Stampa l'indirizzo da aprire e il codice di setup richiesto dal wizard da un altro computer. - macOS: BitVoice nella cartella Applicazioni (
~/Applications/BitVoice.app), avviato quando si accede, l'interfaccia web sulla porta 8443, dati in~/Library/Application Support/BitVoice(accessibile solo a te) e log in~/Library/Logs/BitVoice(bitvoice.log, mantenuto sotto i 10 MB). Apri BitVoice da Launchpad o Spotlight per raggiungere l'interfaccia web; quando è stato interrotto, lo riavvia. Esegue sottocaffeinate, in modo che il Mac non vada in standby mentre BitVoice è in esecuzione: un Mac in standby non risponde alle chiamate e anche i suoi brevi periodi di manutenzione in standby interrompono tutto per molti secondi. Lo schermo può comunque spegnersi. Eseguilo manualmente, utilizzacaffeinate -i -s ./bitvoiceper lo stesso risultato. Per un Mac che risponde alle chiamate mentre nessuno è connesso, installa consudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): allora BitVoice è in/Applications, si avvia con il Mac, esegue come utente nascosto (_bitvoice), serve l'interfaccia web sulla porta 443, mantiene i dati in/Library/Application Support/BitVoicee i log in/Library/Logs/BitVoice, e il firewall del Mac, quando è attivato, gli consente di accettare connessioni. Una delle due opzioni per Mac: l'installatore rifiuta l'altra mentre una è presente. Quando il firewall del Mac è attivato, un BitVoice installato per te chiede una volta se può accettare connessioni in ingresso: consenti, in modo che i telefoni possano connettersi. Se qualcosa utilizza già la porta, l'installatore la nomina e si ferma (scegli un'altra conBITVOICE_HTTPS=:8444).sh install.sh --uninstall(consudoper il Mac stesso) rimuove il programma e il servizio e mantiene i dati;--purgerimuove anche i dati e i log. Provato su macOS 26 (Apple silicon), installato per una persona: installato, firma controllata con ssh-keygen del Mac, un secondo avvio sullo stesso dato rifiutato, tornato dopo che il programma è stato interrotto, avviato nuovamente dall'app, aggiornato in posto, un programma manomesso rifiutato, una porta in uso rifiutata, disinstallato mantenendo i dati, reinstallato su di esso e purgato con nulla lasciato. L'installazione per l'intero Mac (sudo) è provata su ogni modifica nelle macchine macOS di GitHub (Apple silicon): in esecuzione come_bitvoicesulla porta 443, un'installazione utente accanto a essa rifiutata, tornata dopo che il programma è stato interrotto, aggiornata, purgata con nulla lasciato (l'utente nascosto anche). I Mac Intel non sono stati provati yet. - Windows: come amministratore,
C:\Program Files\BitVoice, avviato con Windows, dati inC:\ProgramData\BitVoice, e una regola del firewall per reti private e di dominio; altrimenti per te solo, avviato quando si accede. Funziona in Windows PowerShell 5.1 (quello che ha Windows Server) e in PowerShell 7, e in 5.1 avviato all'interno di 7. BitVoice scrive il log subitvoice.lognella cartella dei dati (mantenuto sotto i 10 MB, la parte più vecchia inbitvoice.log.1), e l'installatore stampa il codice di setup richiesto dal wizard da un altro computer. Windows chiama una nuova Wi-Fi o rete Pubblica fino a quando non gli viene detto di fare altrimenti, e la regola del firewall non consente nulla lì: per una rete domestica o di ufficio l'installatore dice come renderla Privata (Impostazioni, Rete e internet, Proprietà della rete); per un server cloud stampa la regola da aggiungere (aprire anche le porte nel firewall del provider). Installato come amministratore, la cartella dei dati è leggibile solo dagli amministratori (contiene il database e le chiavi), e il menu Start di BitVoice apre l'interfaccia web; installato per te, il menu Start avvia BitVoice, o lo apre quando è già in esecuzione. In ogni caso è in Impostazioni, App, App installate, che lo rimuove e chiede se rimuovere anche i dati. Provato su Windows 11 (come amministratore e non) e su Windows Server 2022 su Amazon EC2: installato, raggiunto dall'esterno, in esecuzione nuovamente dopo un riavvio. - Provato su: Ubuntu 24.04 e 20.04, Debian 12 e Fedora 42 (ognuno con systemd): installato, firma controllata, un secondo avvio sullo stesso dato rifiutato, tornato dopo che il programma è stato interrotto, aggiornato in posto, un programma manomesso rifiutato, disinstallato mantenendo i dati, reinstallato su di esso e purgato con nulla lasciato.
- Linux su un server cloud: l'indirizzo che stampa è quello privato della macchina; l'installatore lo dice. Apri il server con il suo indirizzo pubblico o nome, con le porte 443, SIP e audio aperte nel firewall del provider.
Esegui nuovamente lo stesso comando per eseguire l'aggiornamento (o utilizza Aggiornamenti (capitolo 62)). sh -s -- --version v0.1.5 (dopo il pipe) seleziona una versione; --uninstall rimuove il programma e il servizio e mantiene i dati, --purge rimuove anche i dati. Su Windows, salva lo script e esegui .\install.ps1 -Version v0.1.5, -Uninstall o -Purge, o rimuovilo in App installate. Per un server tenuto fuori da Internet, copia l'archivio della versione e SHA256SUMS in una cartella e imposta BITVOICE_FROM su di esso.
Dove viene eseguito
BitVoice viene eseguito su Linux, macOS e Windows.
| Sistema | Come avviarlo | Dove si trovano i suoi dati |
|---|---|---|
| Linux | ./bitvoice (o il servizio systemd nella versione) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | fare doppio clic su bitvoice.exe | %APPDATA%\BitVoice |
Su Windows, mantieni la finestra che si apre mentre usi BitVoice (chiudendola si ferma BitVoice) e quando Windows chiede se può utilizzare la rete, consenti le reti private in modo che i telefoni possano connettersi. -data posiziona i dati da qualche altra parte; -https e -sip scelgono gli indirizzi e le porte; -log FILE scrive anche tutto ciò che stampa su un file, per un computer dove nessuno controlla la sua finestra.
Le porte che utilizza
| Porta | A cosa serve |
|---|---|
| 5060 UDP e TCP | SIP: telefoni e trunk |
| 5061 TCP | SIP su TLS (segnalazione crittografata) |
| 4569 UDP | Trunk IAX2, solo una volta configurato |
| 1720 TCP | Trunk H.323, solo una volta configurato |
| 2000 TCP | Telefoni Skinny (SCCP), solo quando attivato |
| 2727 UDP | Gateway MGCP, solo quando attivato |
| 10000–20000 UDP | Suono delle chiamate (RTP), impostato in Impostazioni |
| 8443 TCP | Questa interfaccia web, solo HTTPS (HTTP semplice viene reindirizzato a HTTPS) |
Se un altro sistema telefonico utilizza già la porta 5060, BitVoice utilizza la prossima porta libera e Health lo segnala.
Tutto nell'interfaccia web
Ogni impostazione ha uno schermo, e ogni schermo ha un capitolo qui. Non è necessario alcun file di configurazione, riga di comando o strumento secondario. Per l'automazione, gli stessi schermi sono un'API REST, e la configurazione può seguire un file in Git (Configurazione come codice (capitolo 69)), ma nessuno dei due è mai richiesto.
A cosa serve BitVoice
BitVoice è innanzitutto un sistema telefonico per uffici e centri di contatto, e un servizio di telefonia ospitato per i provider: tutto nelle prime cinque parti di questo manuale. Il profilo del punto di risposta 911, la console di dispatching radio e i servizi core NG911 sono una traccia di laboratorio e design-partner separata (Sicurezza pubblica (capitolo 77)): sono fuori dal menu fino a quando non vengono attivati in Impostazioni, e non sono certificati per l'uso live. Le chiamate di emergenza dai propri telefoni non fanno parte di tale traccia; funzionano su ogni sistema telefonico fin dall'avvio iniziale.
Trovare la tua strada
- Premi ⌘K (Ctrl+K) ovunque per saltare a uno schermo, o digita il nome o il numero di un'estensione per aprirla.
- Su un telefono, il menu si trova dietro il pulsante ☰ in alto a sinistra (e la ricerca accanto, in alto a destra); scegliere una pagina la chiude di nuovo.
- Ogni schermo ha un collegamento Aiuto in alto a destra che apre il suo capitolo di questo manuale.
- Modifiche mantiene ogni versione della configurazione: puoi vedere cosa è cambiato e annullarlo.
- Tre temi (Mezzanotte, Scuro e Chiaro) si trovano alla base del menu.
Quanto è maturo ogni parte
Quanto lontano ogni parte sia stata provata, in modo chiaro. Testato sul campo: eseguito su sistemi reali su una rete reale (Amazon EC2, Internet, servizi di provider reali). Verificato contro un riferimento: testato contro un'implementazione indipendente o i dati del riferimento standard. Testato con software: solo test di BitVoice e test del browser, non ancora con attrezzature o account reali. Laboratorio: parti di sicurezza pubblica, non certificate.
| Area | Maturità | Ciò su cui si basa |
|---|---|---|
| Tronchi SIP: registrazione, chiamate in entrata e in uscita, ID chiamante, occupato, tasti (RFC 4733) | Testato sul campo | un operatore commerciale, SIP.US (account demo, da EC2): registrazione e chiamate in uscita verso la rete telefonica pubblica tramite UDP e tramite TLS con il certificato dell'operatore verificato; MOS 4,39, nessuna perdita. Chiamate in entrata dalla rete telefonica pubblica: T38Fax (chiamate fax al suo numero, registrazione tramite UDP). Asterisk come operatore attraverso Internet su EC2; MOS 4,4. Kamailio 5.7 (registrazione con firma digest tramite TLS, chiamate in entrambe le direzioni, tasti) e FreeSWITCH 1.11 (TLS e SRTP, chiamate in entrambe le direzioni, G.722 a G.711) come estremità remota; MOS 4,39 |
| Telefoni da scrivania tramite SIP | Testato sul campo | Asterisk come telefono da scrivania attraverso Internet. Non sono stati ancora provati i veri telefoni Yealink, Poly o Grandstream |
| Telefono del browser (WebRTC) | Testato sul campo | da fuori a EC2; test di Chromium con suono in entrambe le direzioni |
| Due server, uno PostgreSQL, failover | Testato sul campo | kill -9 e arresto pianificato su EC2: la chiamata continua, la linea del fornitore si sposta |
| Installazione con un solo comando | Testato sul campo | Ubuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (come amministratore e non, in PowerShell 5.1 e 7), Ubuntu 20.04 e Fedora 42 in contenitori, macOS 26 su Apple Silicon (per una persona, e con sudo per l'intero Mac in CI); torna dopo un riavvio |
| Capacità | Testato sul campo | 2.000 chiamate contemporaneamente, nessuna perdita, MOS 4,41, su un 16-vCPU c7i.4xlarge (circa 10 vCPU occupati); 200 contemporaneamente su c7g.large, c7i.large, t4g.small, un M4 e il Lightsail nano. A 2.000: jitter 4,0 ms per il 95% delle chiamate, intervallo più lungo tra i pacchetti 74 ms, pausa di garbage collection più lunga 4,2 ms |
| Migrazione da FreePBX (Import) | Testato sul campo | un vero backup di FreePBX 17.0.33 (70 MB) importato interamente; altri da formati propri di FreePBX |
| Trascrizioni AI, riassunti, receptionist | Testato sul campo | un modello reale tramite OpenRouter |
| Fatti e riassunti senza modello linguistico | Testato software | chiamate 911 inventate solo: 23 fatti su 43 (53%) nel set sigillato, 3 fatti che nessuno si aspettava; 41/41 formazione, hold-out 27/40 freddo. Mai misurato su chiamate reali. |
| Riconoscimento vocale sul server (whisper) | Testato sul campo su macOS e Linux | whisper-server 1.9.5 eseguito da BitVoice: su un Mac e su Ubuntu su EC2 (x86-64), dove ha scritto le trascrizioni delle chiamate e della segreteria telefonica nel test di campo dell'app del telefono; download per ogni piattaforma costruiti e provati in CI |
| Archiviazione su S3, segreti da AWS Secrets Manager | Testato sul campo | AWS reale, il nostro SigV4 |
| Monitoraggio e trap SNMP | Testato sul campo | net-snmp's snmpwalk e snmptrapd |
| Let's Encrypt | Testato sul campo | rilascia e rinnova il certificato della demo pubblica |
| Immagini di macchina (AWS) e configurazione come codice | Testato sul campo | un'immagine EC2 costruita da deploy/cloud/build-images.sh da Ubuntu 24.04: ogni server da essa inizia nuovo; deploy/terraform con OpenTofu 1.13 (crea, modifica, nessun drift, distrugge). Le immagini di Azure non sono state ancora provate |
| Tronchi IAX2 | Controllato rispetto a un riferimento | Asterisk 23 |
| ICE completo dietro NAT (client STUN e TURN) | Controllato rispetto a un riferimento | agente ICE di Chromium (candidati host e relay solo), softphone JsSIP con offerta BitVoice, coturn 4.18 e server TURN di BitVoice come relay, nomi host mDNS di Chromium risolti. Non ancora provato da un server dietro un router NAT reale |
| Riavvio ICE (un telefono che cambia rete a metà chiamata) | Controllato rispetto a un riferimento | Chromium che riavvia ICE su una chiamata del telefono del browser (BitVoice come ICE-lite e come agente completo) e SIP.js 0.21 che riavvia tramite re-INVITE su SIP su WebSocket: nuove credenziali in entrambe le direzioni, una nuova coppia di candidati, suono ogni mezzo secondo durante il riavvio. Non ancora provato su un telefono che si sposta realmente da Wi-Fi a una rete mobile |
| SIP History-Info e Diversion (chiamate inoltrate) | Controllato rispetto a un riferimento | Asterisk 20's PJSIP in entrambe le direzioni: le chiamate inoltrate di Asterisk lette da BitVoice, e le inoltrate di BitVoice lette da Asterisk's REDIRECTING() da History-Info solo e da Diversion solo; voci RFC 7044 mantenute ed estese su un inoltro su. Non ancora provato con un operatore o Teams che le invia |
| Elenco aziendale (LDAP, Active Directory) | Controllato rispetto a un riferimento | OpenLDAP 2.4 (StartTLS e LDAPS, 1.203 persone lette tramite paging oltre il limite di 1.000, gruppi, accesso); e Active Directory di Samba 4 (LDAPS, paging oltre 1.000, account disabilitati esclusi, gruppi annidati per gruppi di chiamata e ruoli). Non ancora provato contro un controllore di dominio di Windows Server di Microsoft |
| ARI (Asterisk REST Interface) | Controllato rispetto a un riferimento | ogni operazione di Asterisk's pubblicato ARI chiamato e la sua risposta controllata contro i campi richiesti del modello; ari-client 2.2.0, libreria JavaScript di Asterisk, lettura /ari/api-docs ed esecuzione di un'applicazione |
| Stanze video per tutti (SFU, simulcast) e condivisione dello schermo | Controllato rispetto a un riferimento | Tre browser Chromium in una stanza, ognuno che invia tre dimensioni (VP8 simulcast) e riceve le altre due; dimensioni commutate ai fotogrammi chiave mentre le piastrelle crescono e si riducono. Telecamere e uno schermo condiviso (cattura dello schermo di Chromium) in una stanza H.264. Non ancora provato con Firefox o Safari, tramite Internet, o con più di tre telecamere; H.264 simulcast seleziona i layer in base all'ordine del browser solo. |
| AGI e FastAGI (Asterisk Gateway Interface) | Controllato rispetto a un riferimento | ogni comando risposto confrontato con Asterisk 20.6 tramite FastAGI; un server FastAGI scritto con pyst2 che esegue una chiamata; audio EAGI a un programma. Non ancora provato con un IVR di produzione |
| Assistenti AI tramite MCP | Controllato rispetto a un riferimento | l'SDK TypeScript ufficiale MCP (1.32.2) come client: strumenti elencati e chiamati con un token API tramite Streamable HTTP (protocollo 2025-11-25), e il suo accesso OAuth end-to-end (scoperta, registrazione, PKCE, token, aggiornamento); la pagina di consenso in Chromium; il ponte stdio contro un server di test. Non ancora provato con Claude, ChatGPT o un altro assistente stesso, che richiede un server raggiungibile da Internet con un certificato attendibile. |
| Microsoft 365 e Google Workspace (contatti e calendari) | Testato software | contro stand-in di Microsoft Graph (utenti, contatti dell'organizzazione, calendario getSchedule, token client-credentials) e di Google's People API, Calendar freeBusy e token JWT-bearer, scritti dalle specifiche pubblicate; gli stand-in controllano cosa invia BitVoice (la firma e le pretese JWT, paging, corpi di richiesta). Non ancora provato con un tenant Microsoft 365 reale o un dominio Google Workspace. |
| Schermi in 14 lingue | Testato software | ogni pezzo di testo che gli schermi mostrano (circa 5.000, dal codice: testo JSX, stringhe e messaggi del server) tradotto automaticamente da Llama 3.3 70B in 13 lingue, il 99% mantenuto dai controlli (stessi segnaposto, indirizzi e codici intatti); tedesco disegnato tramite i test del browser (accesso, menu, ricerca, un modulo, torna all'inglese). Non ancora revisionato da una persona in alcuna lingua. |
| Tronchi H.323 | Controllato rispetto a un riferimento | H323Plus 1.28 (il suo simph323 che riproduce e registra file WAV) su EC2: chiamate in entrambe le direzioni con Fast Connect e G.711, ogni estremità che sente il tono dell'altra, MOS 4,39; impostazione della chiamata anche con Asterisk's chan_ooh323 (il cui suono è rotto in Asterisk 22) |
| SIP su WebSocket | Controllato rispetto a un riferimento | JsSIP e SIP.js |
| Codec: GSM, G.726, iLBC, MP3 musica in attesa | Controllato rispetto a un riferimento | ffmpeg, il programma di riferimento RFC 3951 e minimp3, campione per campione |
| Codec: G.711, G.722, G.729, Opus, Speex | Controllato rispetto a un riferimento | G.711 e G.722 byte per byte e campione per campione con spandsp; G.729 decoder campione per campione su tutti e sette vettori di test Annex A di ITU (bcg729 non è), il suo encoder interfunziona con bcg729 alla stessa qualità (G.729 non richiede che gli encoder corrispondano); pacchetti Opus decodificati da libopus 1.6.1 e pacchetti libopus decodificati come fa libopus; pacchetti Speex e suono identici a libspeex 1.2.1; chiamate Opus con l'app Android |
| Codec: AMR-NB, AMR-WB | Controllato rispetto a un riferimento, con un gap noto | AMR-WB decodifica come opencore-amr campione per campione, e su sequenze di test TS 26.174 di 3GPP corrisponde al decoder di 3GPP esattamente su 167 di 198 e non è mai misurabilmente al di sotto; l'encoder AMR-NB frame per frame con opencore-amr, ma il suo decoder è vicino, non esatto (circa 31 dB da opencore). Entrambi provengono dalle librerie goamr fissate |
| Codec trasportati intatti: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2 | Testato software | test propri: offerti con il loro bitrate o modalità, risposti, pacchetti in entrambe le direzioni byte per byte; non convertiti (nessun codice di riferimento gratuito che BitVoice possa spedire per G.722.1 e G.719). Non ancora provato con un vero sistema Polycom o di sala |
| ISDN PRI e BRI, T1/E1 | Controllato rispetto a un riferimento | libpri (Asterisk's), entrambi i lati; e su EC2 tramite il driver del kernel DAHDI 3.4 reale (due span collegati insieme nel kernel, Asterisk 20's chan_dahdi come compagnia telefonica): chiamate in entrambe le direzioni con numeri e nomi, tutti e 23 canali contemporaneamente, MOS 4,39. Nessuna carta o linea fisica ancora |
| MFC-R2, E&M | Controllato rispetto a un riferimento | OpenR2; toni MF tramite i nostri test. Nessuna carta o linea reale provata |
| SS7 (ISUP, MTP, set di collegamenti di più collegamenti con cambio) | Controllato rispetto a un riferimento | libss7 (Asterisk's chan_dahdi library), ITU e ANSI. Nessun collegamento di carrier reale provato |
| Fax (T.30, T.38) | Testato sul campo | un fornitore di fax, T38Fax (prova gratuita, da EC2): BitVoice che invia un fax sulla rete telefonica pubblica al suo numero e lo riceve, entrambi tramite T.38 (2 pagine, 14.400 bit/s, le pagine sono arrivate intatte; registrazione con nome utente e password); e passa un fax tra una macchina da fax su un gateway (Asterisk con spandsp, che fa da sostituto) e T38Fax, fuori e dentro, 2 pagine a 14.400 bit/s in entrambe le direzioni: una volta tutte su G.711 (il gateway rifiuta T.38) e una volta commutato su T.38 su entrambi i lati. spandsp (tramite Asterisk 20) su EC2: ricezione e invio tramite T.38 con correzione degli errori, e passaggio di fax tra due altre macchine tramite T.38 e G.711. Nessun gateway fax hardware provato, e T38Fax non ha mai chiesto T.38 stesso, quindi un commutatore del fornitore rifiutato dal gateway non è stato visto |
| Provisioning: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberData | Testato software | i formati documentati dei fornitori; non su veri terminali |
| Telefoni Skinny (SCCP), gateway MGCP | Controllato rispetto a un riferimento | Skinny: telefoni dalla libreria open-source mwicat/sccp, ogni messaggio letto da Wireshark's dissector, dimensioni come Asterisk's chan_skinny; MGCP: gateway MGCP di Yate (riavvio, risposte provvisorie, conferme; non ha porte analogiche, quindi nessuna chiamata). Nessun telefono o gateway hardware Cisco provato |
| Microsoft Teams Direct Routing | Testato software | contro un proxy Microsoft simulato che segue le regole SIP di Direct Routing pubblicate da Microsoft (OPZIONI, Contatto, user=phone, certificato client, trasferimenti Teams richiesti tramite REFER con x-m e x-t); nessun tenant Teams provato: Microsoft non offre nessuno gratuito (licenze Teams Phone) |
| Hotel (FIAS) | Controllato rispetto a un riferimento | ogni record BitVoice invia controllato contro la specifica FIAS 2.20.23 pubblicata da Oracle (avvio del collegamento, record del collegamento, messaggi, risposte di risveglio); test propri. Non ancora contro Opera stesso |
| Messaggistica, WhatsApp, Messenger, chat web | Controllato rispetto a un riferimento (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp) | messaggi tramite Twilio, Telnyx, Bandwidth, Vonage e TextMagic, e messaggi WhatsApp, modelli e elenchi di modelli, contro mock costruiti dalle specifiche OpenAPI pubblicate dai fornitori (Stoplight Prism, rifiutando tutto ciò che la specifica non consente; la specifica di TextMagic è quella da cui è generato il suo client). Vonage ha mostrato che la chiave appartiene all'autenticazione HTTP di base, non più nel modulo. SignalWire parla l'API di Twilio; Plivo, Flowroute, VoIP.ms e Messenger pubblicano nessuna specifica e sono controllati contro stand-in scritti dalla documentazione. Nessun account live provato |
| Schede chiamante CRM, Azure Blob, Azure Key Vault | Controllato rispetto a un riferimento | EspoCRM (un vero CRM open-source, in Docker) per le schede chiamante; emulatore Azurite di Microsoft per caricamenti Blob (SAS del contenitore, rifiuti); Lowkey Vault per Key Vault con un'identità gestita. Non ancora provato contro Azure stesso o un CRM ospitato |
| Screening anti-spam: test robot, chiamanti sconosciuti, database anti-spam, *32, suggerimenti | Testato software | test propri di BitVoice: un fornitore che chiama tramite SIP e preme tasti (RFC 4733) al test robot, superandolo e fallendolo; chiamanti noti, sempre ammessi e di emergenza che squillano contemporaneamente; il database anti-spam contro un sostituto che risponde come Twilio documenta il suo Lookup con l'add-on Nomorobo (nessun account Twilio provato); *32 da un telefono da scrivania; suggerimenti da registri di chiamata; le impostazioni tramite i test del browser. Non ancora provato contro vere chiamate robot o un database a pagamento |
| App iPhone e Android | Testato sul campo (Android) | Android: un Google Pixel 8 (Android 16, Wi-Fi) con la build di rilascio firmata contro BitVoice su EC2 con un certificato Let's Encrypt: accoppiato tramite link, squillato con la notifica di chiamata Android, risposto da essa, audio in entrambe le direzioni, rimasto connesso con lo schermo spento e in background (notifica di chiamata in corso, Hang up); senza push non squilla in background. Un Google Pixel 11 (Android 17) in AWS Device Farm: accoppiato, squillato, risposto, chiamato; Opus, MOS 4,1. iPhone: l'app (SwiftUI, CallKit, PushKit VoIP) si costruisce contro l'SDK attuale (Xcode 27) e il server firma le push VoIP di Apple (APNs, ES256); le stesse correzioni di dispositivo reale come Android e un elenco dell'App Store (ios/AppStore) sono in esso. Entrambe le app sono un'estensione completa: trasferimento (cieco, tramite REFER), attesa e seconda chiamata, tastiera e mute, con Recents, segreteria telefonica visiva (con trascrizioni), una lampada occupata del team, Contatti, la chat dello staff (colleghi con presenza, messaggi diretti e stanze, con notifica in background e push quando l'app è chiusa), un selettore di stanza video (elenco le stanze SFU con chi è in ognuna, si unisce come estensione, visualizzato come chiamata video sullo schermo della chiamata) e una trascrizione AI live sulla chiamata (AI.LiveCallTranscripts); trasferimento, attesa, la trascrizione live, la chat che raggiunge un collega, l'elenco della stanza, una stanza unita da un telefono e la forma della chat push sono coperti da un test di motore, API o browser. Sul Pixel 8 (2026-10-30, build di debug, EC2 con Let's Encrypt): squillato e risposto dalla notifica, atteso e ripreso (lo stato di chiamata Android segue), chiamato fuori sul sistema di chiamata Android, Opus in entrambe le direzioni con MOS 4,38 e nessuna perdita; unito a una stanza video con la sua telecamera (richiesta alla prima utilizzazione) e visto una telecamera desktop, entrambi live; un messaggio di chat in background notificato e aperto Chat. Attesa e trasferimento raggiungono lo schermo di chiamata nativo (CallKit, Telecom). Non ancora eseguito su un iPhone o inviato: push, lo schermo di chiamata del sistema e la firma richiedono il nostro account Apple Developer |
| Profilo 911, console radio, Servizi core NG911, video chiamante | Laboratorio | schemi e dati di esempio NENA, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, una cattura NIST P25 (i frame vocali IMBE scompressi come mbelib li scomprime: stesso pitch, armonici, voicing e ampiezze); mai su un ESInet, sistema P25 o PSAP CAD live, e non certificato |
| Voce a metà tariffa P25 Fase 2 (AMBE+2) | Non offerto | brevettato fino al 2028 |
| Firme Ed448 (NENA) | Non offerto | non nella libreria standard di Go, e BitVoice non scrive crittografia di sua proprietà; Ed25519 è utilizzato |
| Trasferimento di segnale SS7 (STP), SCCP e TCAP | Controllato rispetto a un riferimento | OsmoSTP 2.3.0 su M3UA/TCP con libosmo-sigtran's SCCP echo user dietro di esso: UDT e XUDT in entrambe le direzioni, UDTS restituiti, traduzione del titolo globale tramite STP, un interruttore su un set di collegamenti che raggiunge l'eco tramite IP; TCAP contro libosmo-asn1-tcap in entrambe le direzioni. Solo ITU; nessun SCTP, SCCP orientato alla connessione o gestione SCCP; nessun carrier reale provato |
| Variante MFC-R2 Cina (Cina n. 1) | Testato software | ogni segnale di una chiamata controllato contro le tabelle e le sequenze di chiamata pubblicate da Cisco per la Cina (KA, KD, Gruppo B dal KD inviato, C e D bit 11). La variante della Cina di OpenR2 non è d'accordo con se stessa, quindi nessun programma per testarlo; nessuna linea reale provata |
| ALI su PAM o E2 | Non offerto | PAM è un protocollo proprietario di Intrado con nessuna specifica pubblicata; E2 (J-STD-036, NENA 05-001) funziona tra un centro di posizionamento mobile e il database ALI, non a un PSAP. BitVoice parla i collegamenti di richiesta e testo ALI e HELD invece |
Estensioni
/extensionsUn'estensione è un numero per una persona o una scrivania. I telefoni si connettono con il numero di estensione e la password SIP; le chiamate al numero suonano su ogni telefono connesso come esso, contemporaneamente.
Aggiungere un'estensione
- Aprire Estensioni (capitolo 3) e premere Aggiungi estensione. Il prossimo numero libero e una password SIP forte sono già inseriti.
- Inserire il nome della persona (visualizzato su altri telefoni quando chiama) e l'indirizzo email (per la segreteria telefonica via email).
- Compilare la localizzazione 911: il sito, il piano e la stanza. Viene inviata con le chiamate di emergenza.
- Scegliere cosa succede Se nessuno risponde: segreteria telefonica per impostazione predefinita, o un'altra estensione, un gruppo o un menu.
- Salvare. L'estensione può connettersi immediatamente.
I campi
| Campo | Funzione |
|---|---|
| Numero | 2-8 cifre; non può essere utilizzato da un'altra estensione, gruppo, coda, stanza o codice di funzione |
| Password SIP | utilizzata dal telefono per connettersi; almeno 12 caratteri; Genera crea una nuova |
| Suona per | secondi prima che si verifichi Se nessuno risponde (25 per impostazione predefinita) |
| ID chiamante esterno | il numero visualizzato nelle chiamate in uscita; se vuoto, utilizza quello del trunk |
| Può chiamare numeri esterni | disattivato limita il telefono a chiamate interne e numeri di emergenza |
| Registra chiamate | quando le Impostazioni registrano solo estensioni selezionate |
| Postazione condivisa | un telefono condiviso che diventa il proprietario che si connette |
| Crittografia chiamate a questo telefono | crittografia dei media (SRTP); utilizzarla con TLS per mantenere private le chiavi |
| Dipartimento | raggruppa i costi delle chiamate di questa estensione |
Segui-me, pickup e citofono
La gestione delle chiamate di ogni persona è nella propria casella sull'estensione:
- Segui-me suona altri numeri quando i telefoni qui non sono risposti: un cellulare, un'altra scrivania. Suonano uno dopo l'altro o tutti insieme, per il proprio tempo di suono. Con Numeri esterni premere 1 per rispondere alla chiamata attivato, chi risponde su un cellulare preme 1 per primo, in modo che la segreteria telefonica del cellulare non prenda mai la chiamata. Vedi Codici di funzione (capitolo 32).
- Gruppo di pickup: chiunque nel stesso gruppo risponde alle chiamate in arrivo di questa estensione digitando
*8. - Consenti citofono:
*80e questo numero risponde sull'altoparlante da solo. Disattivarlo per le persone che non lo desiderano. - Pulsanti di scelta rapida personali: codici brevi per questa persona sola, digitati dopo
*0.
Inoltro al momento
Sotto le impostazioni, Inoltro al momento mostra e modifica cosa la persona ha impostato dal proprio telefono o dal portale dello staff: non disturbare e inoltro di ogni chiamata, di chiamate mentre occupato e di chiamate non risposte. Questi sono stati live, non configurazione: modificarli non crea una revisione.
Cosa è connesso
- Telefono: un telefono da scrivania, un softphone o un'app.
- Stazione di citofono: un citofono a una porta. Chi risponde preme il codice di accesso o Apri porta su Chiamate live. Con un indirizzo di controllo della porta, BitVoice chiama quell'indirizzo (2N, Axis, Akuvox, schede di relay); senza uno, il codice viene inviato alla stazione, che apre la porta da sola.
- Altoparlante: le chiamate ad esso sono risposte immediatamente e ascoltate sull'altoparlante.
- Porta di adattatore analogico: un vecchio telefono, un fax o un pannello di allarme su un adattatore. Le chiamate utilizzano solo G.711, che i fax necessitano.
Dispositivi connessi
Un'estensione aperta mostra ogni dispositivo connesso come essa: il marchio e il modello del telefono, come si connette (UDP, TCP, TLS o il browser) e da quando. L'indirizzo e la porta da fornire a un telefono sono visualizzati lì.
Collegamento dei telefoni
/phonesQualsiasi telefono o applicazione SIP funziona: puntarlo all'indirizzo del server e alla porta 5060, con il numero di estensione come utente e la password SIP. I telefoni da tavolo dei quattro principali produttori vengono configurati automaticamente invece, in modo che nessuno debba digitare una password sulla tastiera del telefono.
Configurazione automatica (provisioning)
- Su Telefoni (capitolo 4) premere Aggiungi telefono e inserire l'indirizzo MAC del telefono (sulla sticker sotto) e la estensione a cui appartiene.
- Scegliere il marchio: Yealink, Poly, Grandstream (inclusi gli adattatori analogici HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo o CyberData.
- Indicare al telefono dove si trova BitVoice: nel server DHCP, impostare opzione 66 sull'indirizzo di provisioning visualizzato sullo schermo, in modo che ogni telefono nella rete lo trovi automaticamente; o digitare lo stesso indirizzo nella pagina web del telefono, sotto provisioning.
- Riavviare il telefono. Recupera il suo file tramite HTTPS, si autentica e le sue chiavi di linea mostrano chi è al telefono.
HTTPS o HTTP semplice. I telefoni recuperano il loro file tramite HTTPS quando possono. Alcuni telefoni più vecchi non possono utilizzare HTTPS affatto, e molti non fidano del certificato creato da BitVoice; per quelli, lo schermo mostra anche un indirizzo http:// semplice sulla stessa porta. L'HTTP semplice è solo per questi file: ogni altra pagina va comunque su HTTPS. Sull'HTTP semplice la password SIP del telefono attraversa la rete non crittografata, quindi limitarlo a una rete di ufficio attendibile, o installare un certificato da un'autorità e attivare Solo HTTPS per i telefoni.
Il file contiene l'estensione, la sua password, il fuso orario, i codec, le chiavi di lampada occupata e l'indirizzo di questo server. La configurazione è protetta da un nome utente e una password che vengono dati ai telefoni una volta.
| Marchio | Modelli testati | Cosa ottiene |
|---|---|---|
| Yealink | T3x, T4x, T5x | account, chiavi BLF, ora, codec |
| Poly | VVX, Edge E | lo stesso, nel formato Poly |
| Grandstream | GRP, GXP, HT802/814 | account per porta sugli adattatori |
| Snom | D7xx | account, chiavi, ora |
Questi marchi vengono configurati anche, con file scritti nel formato documentato da ciascun produttore ma non ancora provati sui loro dispositivi (lo schermo Telefoni li segna come non testati):
| Marca | Modelli | File che il dispositivo richiede |
|---|---|---|
| Fanvil | serie X e V | il suo indirizzo MAC .cfg |
| Cisco | 6800, 7800, 8800 multiplatform (3PCC), adattatori SPA | il suo indirizzo MAC .xml (il firmware aziendale richiede prima il firmware multiplatform) |
| Mitel (Aastra) | 6800, 6900 SIP | il suo indirizzo MAC .cfg, in maiuscolo |
| Sangoma | serie S | il file nel formato Fanvil |
| Algo | altoparlanti di paging, strobo, adattatori | algop e il suo indirizzo MAC .conf |
| CyberData | altoparlanti, citofoni, adattatori di paging | il suo indirizzo MAC .xml |
Ognuno ottiene il proprio account, il server (e il server di backup, con più server), il trasporto e la crittografia, e il numero della casella vocale dove disponibile. Impostare le estensioni degli altoparlanti Algo e CyberData su Altoparlante principale in modo che le chiamate a essi vengano risposte immediatamente.
Telefoni senza provisioning
I softphone e altri marchi richiedono le stesse tre informazioni: server (l'indirizzo di questo computer, porta 5060 o 5061 con TLS), utente (il numero di estensione) e password (la password SIP). La lista di controllo elenca i telefoni che hanno tentato di accedere con una password errata; dopo alcuni tentativi, l'indirizzo viene bloccato per un po' di tempo (vedere Sicurezza (capitolo 60)).
Il telefono del browser
L'icona del telefono in fondo a ogni schermata rende questo browser un telefono per un'estensione, con il tuo microfono e altoparlanti. Utilizza WebRTC: il suono è crittografato da un capo all'altro e funziona attraverso la maggior parte dei firewall senza alcuna impostazione.
Other WebRTC softphones (SIP over WebSocket)
Softphones and web apps built on JsSIP, SIP.js and similar libraries speak SIP over WebSocket (RFC 7118). Switch on SIP over WebSocket in Settings (capitolo 14) and point them at wss://<this server's name>:<web port>/ws, with the extension number as the user and its SIP password. BitVoice ends their WebRTC sound itself (ICE, DTLS-SRTP, Opus or G.711), so they reach every phone, trunk and feature as desk phones do: calls both ways, keys pressed, hold, transfers by the other party, busy lamps and message-waiting. Settings shows how many are connected.
Il WebSocket non richiede un accesso separato: il softphone si accede con SIP e gli accessi falliti e le richieste eccessive vengono conteggiati per il proprio indirizzo, come per qualsiasi telefono. Una pagina del softphone servita da un altro sito deve fidarsi del certificato di questo server (usare Let's Encrypt) e il Chrome attuale chiede all'utente prima che una pagina web pubblica possa raggiungere un server sulla rete locale.
Testato con due librerie indipendenti, JsSIP 3.13 e SIP.js 0.21: due softphone di ciascuno si registrano, si chiamano a vicenda e si sentono a vicenda attraverso BitVoice. Altri softphone (il client web di Linphone, Zoiper) parlano lo stesso protocollo ma non sono stati provati.
TURN, per reti che bloccano UDP
Alcune reti (alberghi, Wi-Fi per ospiti, firewall aziendali rigorosi) non consentono UDP in uscita o nascondono i computer dietro NAT che WebRTC non può attraversare. Per quelle, attivare Server TURN in Impostazioni (capitolo 14): BitVoice esegue quindi il proprio server TURN (RFC 8656) sulla porta 3478 (UDP e TCP) e, con il certificato di questo server, sulla porta 5349 su TLS. I telefoni del browser, il telefono dello staff e i collegamenti alle chiamate ricevono credenziali a breve termine per esso e lo utilizzano quando non possono raggiungere le porte multimediali direttamente; il suono è ancora crittografato da un capo all'altro e BitVoice lo inoltra solo ai propri indirizzi, quindi nessuno può utilizzarlo per raggiungere altro.
Aprire la porta TURN, la porta TLS e le porte di inoltro (49152-49407 a meno che non le si modifichi) nel firewall. TURN su TLS richiede un certificato che i browser considerino attendibile per il nome che utilizzano, come uno da Let's Encrypt (capitolo 14): fino a quando non ne esiste uno, BitVoice non lo offre ai browser (che lo provano, falliscono e aspettano), e lo offre non appena il certificato arriva; impostare la sua porta su 443 su un server con un indirizzo di riserva per attraversare i firewall che consentono solo HTTPS.
Cambio di rete durante una chiamata
Un telefono che si sposta su un'altra rete durante una chiamata (fuori dalla rete Wi-Fi dell'ufficio su una rete mobile, o un laptop da una rete Wi-Fi all'altra) ottiene un nuovo indirizzo, e il vecchio percorso smette di trasportare il suono. I telefoni del browser e le app di BitVoice si accorgono da soli: quando il browser dice che la rete è cambiata, o il percorso della chiamata smette di rispondere per due secondi, il telefono riavvia ICE (RFC 8445 9). Offre nuove credenziali ICE per la chiamata che ha, BitVoice risponde con nuove credenziali proprie e controlla il nuovo percorso, e la chiamata si sposta su di esso senza essere ridigitata. La crittografia continua con le stesse chiavi. Mentre accade, la chiamata mostra Riconnessione...; su un percorso che funziona ancora, non c'è interruzione, poiché il vecchio percorso trasporta la chiamata fino a quando il suono non arriva sul nuovo. I telefoni SIP softphone su WebSocket (JsSIP, SIP.js) fanno lo stesso attraverso re-INVITE con nuove credenziali ICE. Non è necessario attivare nulla, con BitVoice come ICE-lite o dietro NAT.
BitVoice dietro NAT
Il server TURN sopra aiuta i browser nelle reti strette a raggiungere un BitVoice che ha un indirizzo pubblico. Quando BitVoice stesso non ne ha uno (in un ufficio dietro un router senza inoltro di porta, o in una rete cloud senza un indirizzo pubblico sulla macchina), attiva Questo server è dietro NAT sotto BitVoice dietro NAT in Impostazioni (capitolo 14). BitVoice partecipa quindi pienamente a ICE (RFC 8445) invece di rispondere a un solo indirizzo (ICE-lite):
- Offre ai browser i propri indirizzi, il proprio indirizzo pubblico come lo vedono i server STUN, e i relay sui server TURN a cui si iscrive (UDP; un nome utente e una password ciascuno), e controlla ogni coppia di indirizzi con il browser, come fa il browser.
- Relay ogni chiamata attraverso TURN invia tutti i media del browser attraverso i server TURN, per le reti che lo richiedono.
- Trova i miei indirizzi chiede ai server come farebbe una chiamata e elenca ciò che BitVoice offrirà: i propri indirizzi, l'indirizzo pubblico visto attraverso STUN (un server STUN che non risponde è indicato come tale), e i suoi relay.
- Funziona per il telefono del browser, i collegamenti di chiamata, il test dell'eco e i softphone SIP-over-WebSocket, in entrambi i ruoli: BitVoice risponde a un'offerta del browser e offre a un softphone che chiama. I browser che nascondono i propri indirizzi dietro nomi mDNS (
name.local) vengono risolti nella rete locale, e l'indirizzo del browser come lo ha visto il server web viene fatto passare dai relay fin dall'inizio. - Disattivato per impostazione predefinita; aggiunge un momento a ogni chiamata mentre i server rispondono (al massimo un secondo e mezzo). Il video del chiamante utilizza ICE-lite in entrambi i casi.
Il telefono dello staff
Apri #/phone su qualsiasi browser del computer o mobile: le persone si connettono con la loro estensione e la password SIP, senza un account amministratore. È un telefono completo: comporre, rispondere, mettere in attesa, trasferire e la tastiera. Per il proprio reindirizzamento e la casella vocale utilizzano il portale dello staff all'indirizzo #/me (vedi Il portale dello staff (capitolo 33)).
Le app mobili
Le app di BitVoice per iPhone e Android sono abbinate dalla pagina dell'estensione con un codice QR. Le chiamate svegliano l'app attraverso i servizi di push di Apple e Google, quindi suona anche quando è chiusa (una volta configurato il push; vedere sotto).
Telefoni Skinny e gateway MGCP
/desk-phonesI telefoni e i gateway che non parlano SIP possono comunque essere utilizzati. Telefoni Skinny e gateway MGCP (sotto Chiamate) supportano due protocolli più vecchi:
- Skinny (SCCP): telefoni da scrivania Cisco con firmware SCCP (79xx, 69xx, 89xx). Aggiungere ogni telefono con il suo indirizzo MAC e scegliere la sua estensione; attivare Accetta telefoni Skinny e puntare il telefono a BitVoice (porta TCP 2000) nel file di impostazioni TFTP o nel menu.
- MGCP (RFC 3435): gateway le cui porte BitVoice gestisce una per una, come adattatori telefonici analogici e schede di linea. Aggiungere il gateway con il nome di dominio che utilizza nei nomi degli endpoint (aaln/1@nome), il suo indirizzo e l'estensione di ogni linea; impostare l'agente di chiamata del gateway su BitVoice (porta UDP 2727).
Ogni telefono Skinny o linea MGCP è un dispositivo aggiuntivo della sua estensione: suona con gli altri telefoni dell'estensione, effettua chiamate in uscita come l'estensione e viene visualizzato nei dispositivi dell'estensione. La pagina mostra lo stato di ciascuno.
Cosa funziona
- Skinny: registrazione, la linea e il suo numero sul display, tono di composizione, composizione del numero (il numero va dopo una pausa o #, o immediatamente dalla tastiera del telefono quando sollevato dopo la composizione), tono di ritorno, squillante con ID del chiamante, risposta e riaggancio tramite auricolare, altoparlante o tasti soft (NewCall, Redial, Answer, EndCall), toni di occupato e di riordino.
- MGCP: tono di composizione, cifre raccolte dal gateway con una mappa di cifre, squillante con ID del chiamante (squillante senza di esso quando il gateway rifiuta l'ID del chiamante), tono di ritorno, toni di occupato e di riordino, e la connessione audio (CRCX, DLCX). Un gateway che si riavvia (RSIP) ha le sue porte configurate nuovamente.
- L'audio è G.711 µ-law su entrambi; BitVoice converte in qualunque cosa utilizzi l'altra parte.
Per il momento, mettere in attesa, trasferire e conferenza sono eseguiti dagli altri telefoni dell'estensione, e la seconda linea di un telefono Skinny non viene utilizzata.
Sicurezza
Nessun protocollo ha password. I telefoni Skinny sono accettati solo dalla rete locale e solo quando elencati; i comandi MGCP vengono eseguiti solo dall'indirizzo del gateway (o, senza uno, dalla rete locale). Tenere entrambe le porte fuori da internet.
Un gateway che sta ancora lavorando su un comando può rispondere "100 Trying" per prima: BitVoice aspetta poi più a lungo prima di inviare nuovamente il comando e riconosce la risposta finale (000), come chiede la RFC 3435. Una porta che il gateway non controllerà mostra il rifiuto del gateway stesso nella pagina, come ad esempio il gateway si è rifiutato di controllare la porta: 507 Funzionalità non supportata da un gateway multimediale senza porte analogiche.
Come vengono testati
- Skinny: due telefoni costruiti da un'altra implementazione Skinny (la libreria open-source mwicat/sccp) si registrano, si chiamano a vicenda, rispondono e riagganciano; un telefono non in elenco viene rifiutato. Il dissector Skinny di Wireshark legge ogni messaggio che BitVoice invia senza errori e i messaggi hanno le dimensioni complete che Asterisk's chan_skinny invia ai telefoni Cisco.
- MGCP: contro il gateway MGCP di Yate (riavvio, risposte provvisorie, conferme, rifiuti) e il gateway di test di BitVoice per chiamate complete. Il gateway di Yate non ha porte analogiche, quindi non è stata effettuata alcuna chiamata attraverso di esso.
Schede di telefonia
/cardsUna scheda di telefonia nel computer BitVoice (schede Digium, Sangoma, OpenVox e altre schede con driver DAHDI Linux) può trasportare telefoni analogici e linee telefoniche aziendali. Un programma separato, bitvoice-dahdi, guida la scheda e unisce le sue porte a BitVoice tramite la connessione di rete del computer, quindi BitVoice stesso non tocca mai il driver del kernel e un problema della scheda non può fermare il sistema telefonico.
Configurazione
- Installare i driver DAHDI e configurare le porte come di consueto in /etc/dahdi/system.conf (
fxoks=1-4per le porte con telefoni,fxsks=5-8per le porte con linee, e i toni del paese inloadzoneedefaultzone), quindi eseguiredahdi_cfg. - In Schede di telefonia (sotto Chiamate) attivare Usa schede di telefonia. Viene creato un token; copiarlo in un file che solo root può leggere, come /etc/bitvoice/cards.token.
- Aggiungere ogni porta in base al numero del canale DAHDI: una porta telefono (FXS, un telefono, un fax o un telefono di porta collegato) con la sua estensione, o una porta linea (FXO, una linea telefonica aziendale) con il numero della linea. Scegliere A-law per l'Europa e la maggior parte del mondo, µ-law per il Nord America e il Giappone.
- Per le linee, aggiungere un trunk con il protocollo Linee schede di telefonia su Trunks, e instradare i numeri ad esso come a qualsiasi trunk; le route in entrata corrispondono al numero di ogni linea.
- Avviare
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokencome utente del servizio che può aprire /dev/dahdi. È nel download Linux accanto a bitvoice. La pagina mostra se è in esecuzione e lo stato di ogni porta; le modifiche raggiungono entro dieci secondi. Un canale che un altro programma tiene ancora (o uno che dahdi_cfg non ha ancora configurato) viene riprovato ogni due secondi, quindi l'ordine in cui le cose iniziano non ha importanza.
Cosa funziona
- Telefoni: tono di composizione, composizione del numero (le cifre vengono ascoltate dal rilevatore di toni di BitVoice; il numero va dopo una pausa o #), tono di ritorno, toni di occupato e di congestione dalla zona dei toni della scheda, squillante per le chiamate in entrata, e tasti premuti durante una chiamata (inviati anche come eventi RFC 4733).
- Linee: una linea squillante chiama il suo numero qui e viene risposto quando la chiamata è; le chiamate in uscita prendono una linea libera, aspettano il tono di composizione dell'ufficio postale e compongono il numero come toni. Il fatto che la parte remota riagganci viene notato quando la linea lo segnala (corrente di anello o polarità, a seconda della linea). Le linee analogiche non dicono quando la parte remota risponde, quindi una chiamata in uscita viene conteggiata come risposta una volta che il numero è stato composto.
- Il suono è G.711 verso e dalla scheda; BitVoice converte in qualunque cosa utilizzi l'altra parte.
Linee digitali: T1 e E1 PRI
Una linea T1 (23 chiamate contemporanee) o E1 (30) come tasso primario ISDN si collega a una scheda digitale (Digium/Sangoma TE-series, OpenVox D-series e simili). BitVoice parla il PRI stesso (Q.921 sul canale D, e controllo delle chiamate Q.931), quindi ogni chiamata arriva con il numero composto e l'ID del chiamante, esce con l'ID del chiamante dell'estensione, e l'ufficio postale dice quando la parte remota risponde, squilla o è occupata.
- In /etc/dahdi/system.conf, configurare la spanna per PRI come di consueto (
span=1,1,0,esf,b8zs,bchan=1-23,hardhdlc=24per una T1;span=1,1,0,ccs,hdb3,crc4,bchan=1-15,17-31,hardhdlc=16per un E1), quindi eseguiredahdi_cfg. - Sotto Linee digitali su Schede di telefonia (capitolo 6), aggiungere la spanna: T1 o E1, il suo primo canale DAHDI, se BitVoice è il PBX sulla linea dell'ufficio postale (il solito) o sulla rete (un altro PBX si collega a BitVoice come se si trattasse dell'ufficio postale), e il tipo di commutatore che l'ufficio postale ha fornito.
- Aggiungere il trunk della scheda su Trunks se non ce n'è già uno, e le route in entrata per i numeri (DIDs) che l'ufficio postale invia.
Le chiamate in uscita prendono prima una PRI, poi le linee analogiche; un numero occupato, un numero errato o nessun canale libero torna come occupato, non trovato o non disponibile, come dice la rete. La pagina mostra se il canale D di ogni spanna è attivo e quanti dei suoi canali sono in chiamata. I canali T1 configurati con segnalazione a bit rubato (fxsks, fxoks) funzionano come le porte analogiche sopra.
Nomi, inoltro e trasferimenti. Il nome di un chiamante arriva con la chiamata (dall'elemento Display o, su National ISDN-2, dal nome che la rete invia come facoltà) e i telefoni lo visualizzano; le chiamate in uscita inviano il nome dell'estensione nello stesso modo. Il numero da cui una chiamata è stata inoltrata arriva come numero di reindirizzamento (BitVoice lo passa come Diversion di SIP, con il motivo: occupato, no risposta, uncondizionale), e quando l'inoltro di un'estensione invia una chiamata nuovamente sulla PRI, il numero dell'estensione va con essa come numero di reindirizzamento, in modo che il capo remoto e la società di telecomunicazioni sappiano di chi è la chiamata. Quando una chiamata esterna viene risposta, BitVoice informa la rete del numero che ha risposto (il numero connesso).
Attivare Trasferimenti attraverso la società di telecomunicazioni su uno span (lato utente, National ISDN-2, 5ESS, DMS-100 o EuroISDN) e quando qualcuno trasferisce un chiamante su quella linea a un altro numero sulla stessa linea, BitVoice chiede alla rete di unire le due chiamate da sola: Two B-Channel Transfer su linee National ISDN-2 e 5ESS, Release Link Trunk transfer su una Nortel DMS-100, trasferimento di chiamata esplicito (il chiamante in attesa, poi unito) su EuroISDN. Un DMS-100 fornisce un identificatore di trasferimento solo alle chiamate che BitVoice effettua, quindi lì una delle due chiamate deve essere una chiamata in uscita (il caso più comune: un chiamante inoltrato o trasferito a un numero esterno). Entrambi i canali vengono liberati non appena la rete li ha uniti. La linea necessita del servizio (chiedere alla società di telecomunicazioni "two B-channel transfer" o "ECT"); se la rete rifiuta, il trasferimento funziona comunque, attraverso BitVoice, utilizzando entrambi i canali come prima. Su uno span in cui BitVoice è il lato rete, un altro PBX può chiedere a BitVoice di unire due delle sue chiamate; BitVoice rifiuta (non è un commutatore), e il PBX mantiene le chiamate da solo.
Provare senza una scheda
Le span dinamiche di DAHDI possono sostituire una scheda: due span unite all'interno del kernel, BitVoice su uno e un altro PBX (ad esempio Asterisk's chan_dahdi) come la società di telecomunicazioni sull'altro. Caricare dahdi, dahdi_dynamic e dahdi_dynamic_loc, e in /etc/dahdi/system.conf:
dynamic=loc,1:0,24,0 dynamic=loc,1:1,24,0 bchan=1-23 dchan=24 bchan=25-47 dchan=48
Lasciare l'ultimo numero (temporizzazione) a 0 su entrambi: il timer di DAHDI guida allora entrambi. Le span che sono l'una la fonte di temporizzazione dell'altra ticchettano solo quando l'altra invia, e il canale D arriva e parte. Aggiungere span 1 qui come un T1 (primo canale 1), e configurare l'altro PBX come il lato rete sui canali 25-48.
Basic rate ISDN (BRI)
Un BRI trasporta due chiamate contemporaneamente (B1 e B2) ed è comune in Europa per piccoli uffici; collega anche i telefoni da tavolo ISDN. Le schede BRI (Digium B410P, le schede basate su HFC di OpenVox, Junghanns e altri) funzionano attraverso DAHDI come le schede PRI: in /etc/dahdi/system.conf lo span è span=1,1,0,ccs,ami con bchan=1-2 e hardhdlc=3. Aggiungerlo sotto Linee digitali con BRI come tipo di linea; i suoi canali sono B1, B2 e poi il canale D.
- BitVoice è il PBX (lato utente), punto-punto: una linea PBX dalla società di telecomunicazioni (ad esempio *Anlagenanschluss* in Germania): le chiamate in arrivo portano il numero composto, le chiamate in uscita portano il numero dell'estensione.
- Lato utente, multipunto: una linea condivisa con altri dispositivi (*Mehrgeräteanschluss*): BitVoice chiede alla rete il proprio TEI (identificatore di terminale) e risponde alle chiamate sulla linea accanto ad altri dispositivi sulla stessa; la società di telecomunicazioni invia il numero composto (il MSN), che le route in entrata corrispondono.
- BitVoice è la rete, multipunto: i telefoni ISDN si collegano alla scheda sul bus S come su una linea della società di telecomunicazioni. Ognuno chiede a BitVoice un TEI; una chiamata al bus suona su ogni telefono sul bus, il primo a rispondere la prende e gli altri smettono di suonare. I numeri composti digitati uno per uno (come i telefoni ISDN compongono) vengono raccolti fino a quando il telefono non dice che è completo, # viene premuto, o non arriva alcun numero per quattro secondi. Le route dei numeri verso e dal bus con il trunk della scheda come per qualsiasi linea.
I nomi, l'inoltro e i trasferimenti su EuroISDN (trasferimento di chiamata esplicito) e il consiglio di addebito funzionano su un BRI come su un PRI.
Tronchi E&M su un T1
Un T1 le cui porte sono configurate come E&M (segnalazione robbed-bit: e&m=1-24 in /etc/dahdi/system.conf) fornisce 24 tronchi, ognuno segnalato sul proprio: linee di collegamento a un altro PBX, banche di canali e tronchi Feature Group D dei carrier a lunga distanza. Sotto Linee digitali, aggiungere un T1 e impostare Segnalazione su E&M, quindi:
- Segnale di avvio: Wink start (il solito: il capo remoto lampeggia quando è pronto per il numero, e BitVoice lampeggia a sua volta per una chiamata in arrivo), Avvio immediato (il numero segue immediatamente la presa), Dial ritardato (il capo remoto va fuori linea mentre si prepara, poi nuovamente in linea), o Feature Group D (wink start con numeri MF, il numero del chiamante inviato per primo: KP 00 ANI ST, poi KP numero ST; l'ANI diventa l'ID del chiamante).
- Numeri inviati come: DTMF, o MF (MF R1, KP numero ST) come la maggior parte dei tronchi dei carrier desidera.
- Numero quando non viene inviato: ciò che una chiamata in arrivo raggiunge se il capo remoto sequestra il tronco senza comporre (una linea privata diretta alla reception, ad esempio).
Una chiamata in uscita prende un trunk libero, lo seizza, attende il segnale di inizio (nessun wink entro cinque secondi è "nessun wink" e la chiamata fallisce), invia il numero e viene risposto quando l'altro capo va fuori linea (supervisione della risposta). Una chiamata in entrata viene risposta andando fuori linea quando l'estensione risponde.
Tronchi CAMA (911, lab track). Un PSAP ancora alimentato da un router selettivo 911 su tronchi CAMA imposta Segnale di inizio su CAMA (tronco 911). Il router seizza, BitVoice wink e il router invia il numero del chiamante (ANI) in MF: CAMA avanzato come KP, due cifre di informazione e tutte le dieci cifre, ST; CAMA tradizionale come KP, una cifra di piano di numerazione e sette cifre, ST. Per CAMA tradizionale, elenchi sotto Codici di area per NPD 0 a 3 il codice di area che ogni cifra di piano di numerazione rappresenta (il foglio di impostazione del router li ha); una cifra superiore a 3 significa che il router non ha potuto identificare la linea. Ogni chiamata va alla rotta in entrata per 911 come una chiamata 911, con l'ANI come numero di richiamata, e BitVoice cerca la sua posizione in base a quel numero (vedi chiamate 911 (capitolo 77), Ricerca della posizione (ALI)). Le cifre di informazione appaiono sulla chiamata come CAMA (II 00).
MFC-R2 su un E1
In America Latina, in alcune parti dell'Asia e dell'Africa, le linee E1 sono spesso MFC-R2 invece di ISDN: 30 circuiti, ognuno con i suoi segnali di linea sui bit A e B del timeslot 16 (ITU-T Q.421) e il suo numero, la categoria del chiamante e il numero del chiamante scambiati in toni multifrequenza obbligatori (Q.441), in avanti e indietro. Configurare lo span come CAS in /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan rimosso), quindi sotto Linee digitali aggiungere un E1, impostare Segnalazione su MFC-R2 e scegliere la Variante del paese: ITU-T, Argentina, Brasile, Cina, Colombia, Repubblica Ceca, Ecuador, Messico, Filippine o Venezuela. Ogni paese assegna alcuni segnali in modo diverso (cosa significa occupato, come viene indicata la fine del numero, il gruppo C aggiuntivo del Messico); la variante contiene quelle. La Cina n. 1 chiede la classe del chiamante (KA) e il numero dopo il numero composto, invia il tipo di chiamata (KD: 3, una chiamata locale) per ultimo, legge occupato e inattivo dal KD inviato e imposta i bit C e D entrambi su 1: lì, scrivere cas=1-15:1111 e cas=17-31:1111.
Ogni circuito trasporta chiamate in entrambe le direzioni. Una chiamata in arrivo raggiunge le rotte in entrata con il numero composto e il numero del chiamante (i numeri non disponibili arrivano come anonimi); un'estensione occupata o un numero errato viene segnalato come occupato o non assegnato, come dice la variante. Una chiamata in uscita invia il numero e l'ID del chiamante dell'estensione, o il segnale "numero non disponibile" quando il chiamante nasconde il proprio numero.
La segnalazione MFC-R2 viene testata contro OpenR2 (la libreria R2 utilizzata da chan_dahdi di Asterisk), in ogni variante offerta e in entrambe le direzioni, compresa una chiamata rifiutata come occupata; E&M contro i canali simulati di BitVoice.
SS7
Un carrier può consegnare T1 o E1 segnalati da SS7 piuttosto che ISDN: i circuiti vocali trasportano chiamate, ognuno identificato da un codice di identificazione del circuito (CIC), e un timeslot trasporta il collegamento di segnalazione al punto di trasferimento del segnale o all'interruttore del carrier, tramite il quale ISUP configura le chiamate. BitVoice è quindi un punto di segnalazione proprio, con un codice di punto assegnato dal carrier. In /etc/dahdi/system.conf impostare il tronco come canali chiari con il timeslot di segnalazione come mtp2 o hardhdlc (timeslot 16 su un E1, 24 su un T1). Sotto Linee digitali aggiungere il tronco, impostare Segnalazione su SS7 (ISUP) e fornire:
- Variante SS7: ANSI (Nord America; codici di punto rete-cluster-membro, come 245-16-1) o ITU-T (la maggior parte del mondo; codici di punto zona-area-punto, come 1-10-2, o un numero semplice).
- Il nostro codice di punto e Codice di punto adiacente, la Rete (nazionale, l'usuale, o internazionale), il Codice di collegamento (SLC, 0 a meno che non venga specificato diversamente), e il Primo CIC: il codice del primo canale vocale del tronco, gli altri seguono in ordine. Tutti questi provengono dal carrier.
Insiami di collegamento di più collegamenti. Tronchi con la stessa variante, codici di punto e rete sono un insieme di collegamento (fino a 16 collegamenti): ogni collegamento di segnalazione del tronco è uno dei suoi collegamenti, e necessita del proprio Codice di collegamento, e tutti i circuiti del tronco appartengono ad esso (i loro CIC possono non sovrapporsi). Il traffico viene condiviso tra i collegamenti in servizio dai messaggi SLS, quindi i messaggi di una chiamata rimangono su un collegamento. Quando un collegamento non funziona (il test del collegamento non riceve risposta, o i messaggi non vengono riconosciuti), il traffico si sposta sugli altri (Q.704: COO e COA, i messaggi che l'estremità remota non ha ricevuto inviati di nuovo su un altro collegamento; o, senza risposta in tempo, per tempo), le chiamate su ogni tronco continuano, e Schede di telefonia indica quanti collegamenti sono in servizio e come si trova questo tronco. Quando il collegamento torna e viene testato, il traffico si sposta di nuovo (CBD e CBA). Solo quando ogni collegamento è giù è l'insieme di collegamento giù. Testato contro libss7 con due collegamenti, uno tagliato in mezzo a una chiamata: libss7 accetta messaggi di gestione della rete solo sul collegamento il cui SLS li nomina, quindi un messaggio di cambio di collegamento sul collegamento tagliato (inviato sull'altro, come Q.704 lo prevede) viene scartato lì, e entrambe le estremità cambiano collegamento per tempo, il che funziona; tra due estremità BitVoice va per COO e COA.
Quando il collegamento si attiva, BitVoice lo allinea (livello MTP 2, con il periodo di prova di emergenza come insieme di collegamenti singoli), lo verifica con il test di collegamento (SLTM/SLTA), scambia il riavvio del traffico consentito e reimposta ogni circuito (GRS). Le chiamate in arrivo raggiungono le rotte in entrata con il numero composto, il numero del chiamante (quelli non mostrati come anonimi), il numero da cui la chiamata è stata inoltrata e, su ANSI, il nome del chiamante; le chiamate in uscita trasportano l'ID e il nome del chiamante dell'estensione. Il blocco o il reset dei circuiti da parte del carrier viene obbedito. Nel caso di doppia occupazione, l'estremità con il codice di punta più alto mantiene i circuiti pari, come dice Q.764, e BitVoice prende i circuiti che mantiene per prima.
SS7 viene testato contro libss7 (la libreria SS7 utilizzata da Asterisk's chan_dahdi), ITU e ANSI: allineamento, test di collegamento, riavvio del traffico, reset del circuito, chiamate in entrambe le direzioni con numeri e nomi, rilascio, occupato e blocco; e BitVoice contro se stesso con frame persi sul collegamento (inviati nuovamente dalla correzione degli errori MTP2) e una doppia occupazione. Il trasferimento dei segnali (essendo uno STP per altri) e SCCP/TCAP (ricerche di portabilità dei numeri, traduzione dei numeri gratuiti) non sono offerti: un PBX è un punto di terminazione, e quelli sono del carrier.
Punto di trasferimento del segnale (STP). bitvoice-dahdi può anche essere un STP per i suoi set di collegamenti ITU SS7: attivare Punto di trasferimento del segnale (SS7) sotto le linee digitali. Il suo Codice del punto STP è quello proprio degli span. Con Passa messaggi per altri codici di punto, un messaggio da un set di collegamenti per il punto adiacente di un altro va a quel set di collegamenti, e uno per qualsiasi altro codice di punto va al STP IP (M3UA): uno STP IP o un gateway di segnalazione a host:port, raggiungibile tramite M3UA (RFC 4666) su TCP, i cui messaggi per i punti dei set di collegamenti tornano allo stesso modo (BitVoice registra il proprio codice di punto e quelli dietro di esso, a meno che non venga fornito un Contesto di routing). Traduzione del titolo globale invia messaggi SCCP indirizzati allo STP per titolo globale al codice di punto e sottosistema del prefisso più lungo corrispondente, come fa un relay SCCP. Un messaggio che non può essere consegnato torna al mittente come UDTS o XUDTS quando ne ha fatto richiesta: nessuna traduzione, nessuna route (errore MTP), nessun sottosistema qui, o il suo contatore di hop esaurito. Lo stato dello STP mostra il collegamento M3UA e quanti messaggi ha passato, tradotto e restituito. Il suo SCCP (UDT, XUDT, UDTS, XUDTS) e TCAP (Inizio, Continua, Fine, Annulla, dialoghi e componenti) vengono verificati contro Osmocom: OsmoSTP su M3UA, l'utente echo SCCP di libosmo-sigtran dietro di esso e il codificatore TCAP di libosmo-asn1-tcap in entrambe le direzioni. SCTP non è offerto (Go non ne ha): M3UA va su TCP, che OsmoSTP e molti STP IP accettano. SCCP orientato alla connessione, set di collegamenti ANSI e gestione SCCP (SST, SSA) non sono offerti.
Consiglio di addebito. Su una linea EuroISDN, attivare Consiglio di addebito e BitVoice chiede alla compagnia telefonica, con ogni chiamata in uscita, di indicare il costo: durante la chiamata (AOC-D) e alla fine della chiamata (AOC-E), in denaro o in unità di addebito. L'ultimo importo viene inserito nel record della chiamata (addebitato EUR 1,50 in Storia, e accanto alla chiamata su Costi); quando è nella valuta impostata (impostata su Costi) è il costo della chiamata, invece del valore dalle tariffe del trunk. La compagnia telefonica deve offrire il servizio sulla linea. I trunk SIP possono inviare lo stesso consiglio, come l'AOC XML 3GPP in un INFO o nel BYE, e BitVoice lo conserva nello stesso modo.
Il codice PRI viene testato contro libpri (la libreria ISDN utilizzata da Asterisk), sia come lato utente che come lato rete, per le chiamate National ISDN-2 e EuroISDN, nomi, reindirizzamento e numeri connessi, trasferimento di chiamata esplicito, il byte di richiesta di trasferimento di due canali B e DMS-100 (con il PBX di libpri unito a BitVoice come DMS-100), e consiglio di addebito in entrambe le direzioni; e su BRI, punto-punto e multipunto, come terminale e come rete (assegnazione TEI, chiamate trasmesse al bus, numeri composti digit per digit).
Non ancora: ID del chiamante visualizzato su telefoni analogici o letto da linee analogiche, flash dell'uncino e cancellazione dell'eco oltre a quanto fatto dalla scheda stessa.
Tronchi
/trunksUn tronco è il tuo account con una società di telefonia. Trasporta le chiamate verso e dalle numerazioni esterne. La maggior parte sono tronchi SIP; un server Asterisk o FreePBX, o un fornitore IAX2, può essere raggiunto con IAX2 invece.
Aggiungere un trunk SIP
- Su Trunk (capitolo 7) premere Aggiungi trunk.
- Inserire il server del fornitore fornito dalla società di telefonia (
sip.provider.com), e la porta se non è 5060. - Inserire il nome utente e la password, e attivare Registra se il fornitore lo richiede (la maggior parte sì).
- Salvare. Entro pochi secondi, il trunk mostra registrato; se non è così, il motivo viene visualizzato accanto ad esso.
Il giudice di salute del trunk
Con due o più trunks su una rotta in uscita, BitVoice giudica ogni 15 secondi se ogni trunk viene utilizzato al suo posto o tentato dopo gli altri trunks. Un trunk si sposta dietro gli altri quando il suo fornitore smette di rispondere ai controlli di keep-alive, o quando le sue ultime chiamate in uscita falliscono una dopo l'altra sul lato del fornitore (Chiamate fallite di seguito all'interno di Entro (minuti), Impostazioni, Giudice di salute del trunk), e un altro trunk funziona. Non si sposta a causa di un solo controllo di keep-alive fallito mentre le chiamate attraverso di esso vengono comunque stabilite; e quando ogni trunk fallisce contemporaneamente, la causa più probabile è il collegamento internet di questo sistema, quindi nulla viene spostato. Un cambiamento richiede due giudizi consecutivi (30 secondi), quindi un trunk non si attiva mai. Un trunk non viene mai rimosso del tutto: viene comunque tentato quando gli altri falliscono, quindi una chiamata di emergenza ha sempre ogni via di uscita. La pagina del trunk mostra il giudizio e le sue ragioni; una chiamata che è stata instradata attraverso un'altra via lo indica nel suo record.
- Aggiungi una rotta in entrata per il tuo numero e una rotta in uscita che utilizza questo trunk (Call routing (capitolo 8)).
| Campo | Funzione |
|---|---|
| Trasporto | UDP (normale), TCP o TLS per la segnalazione crittografata |
| Registra | accedi ogni pochi minuti, in modo che il fornitore sappia dove inviare le chiamate |
| Nome utente di autenticazione | solo quando il fornitore fornisce un nome utente separato |
| Dominio di provenienza | il dominio nell'indirizzo del chiamante, quando il fornitore lo richiede |
| ID del chiamante | il numero visualizzato nelle chiamate in uscita; l'ID del chiamante di un'estensione vince |
| Accetta anche chiamate da | gli altri indirizzi o reti del fornitore che inviano chiamate in entrata. Le chiamate da questo computer effettuate da telefoni registrati qui e quelle generate dal generatore di chiamate integrato non vengono mai prese come trunk, anche se consente 127.0.0.1 |
| Chiamate contemporanee | il limite consentito dal piano; le chiamate oltre questo limite vengono inviate al prossimo trunk nella rotta |
| Crittografa i media | SRTP, per i fornitori che lo supportano. Un fornitore che risponde senza di esso riceve comunque la chiamata, non crittografata, e la cronologia delle chiamate la contrassegna come Non crittografata |
| Richiedi crittografia | (con Crittografa i media) rifiuta ciò che il fornitore non crittografa: una chiamata in uscita che il fornitore risponde senza SRTP viene riagganciata, e una chiamata in entrata che il fornitore invia senza SRTP viene rifiutata; la cronologia delle chiamate indica il motivo |
| Codec | lasciare *stesso di Impostazioni*, o scegliere cosa supporta questo fornitore, meglio per primo |
| Tariffe | quanto costano le chiamate in base al prefisso del numero, per Costi (capitolo 54) |
Fornitori cloud
Inizia da compila Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector o Azure Communication Services, con una nota su cosa impostare sul loro lato. Teams è descritto nel proprio capitolo (Microsoft Teams (capitolo 67)).
Trunks IAX2 ad Asterisk e FreePBX
Scegli IAX2 come protocollo per unire un altro server Asterisk o FreePBX, o un fornitore IAX2. IAX2 trasporta la segnalazione e il suono su una sola porta UDP, 4569, il che lo rende facile da utilizzare attraverso i firewall.
- Indirizzo del server: l'altro server. Lascialo vuoto quando l'altro server si registra a BitVoice invece (un ufficio secondario dietro un indirizzo che cambia); allora il nome utente e la password sono quelli con cui si registra.
- Nome utente e password: gli stessi su entrambi i lati. BitVoice risponde e gestisce le sfide MD5 e i token di chiamata.
- Registrazione: accedi all'altro server, in modo che possa inviare chiamate qui.
Sul lato Asterisk, un peer come questo è tutto ciò che serve:
[bitvoice] type=friend host=dynamic secret=the shared password context=from-bitvoice
La porta IAX2 4569 si apre solo quando viene aggiunto il primo trunk IAX2, quindi un Asterisk in esecuzione sullo stesso computer lo mantiene fino ad allora.
Trunks H.323
Scegli H.323 come protocollo per i gateway, i PBX e i sistemi di videoconferenza più vecchi che parlano H.323 ma non SIP. Fornisci l'indirizzo del gateway (porta 1720); le chiamate vengono accettate solo da esso. Le chiamate vengono stabilite con Fast Connect e G.711 (legge µ o legge A; l'elenco dei codec del trunk può restringerlo a uno), e il suono va direttamente tra il gateway e le porte multimediali di BitVoice. BitVoice converte in qualunque cosa utilizzi l'altra parte.
H.323 qui è deliberatamente piccolo: nessun gatekeeper (RAS), nessun H.245 (quindi un gateway che non vuole utilizzare Fast Connect non riceve la chiamata e glielo si dice), nessun video, nessuna sicurezza H.235. L'ID del chiamante proviene dal numero di chiamata Q.931 o dall'alias dei numeri composti dal chiamante, il nome dalla visualizzazione o dal suo ID H.323. La codifica H.225.0 e H.245 di BitVoice è stata verificata contro un encoder ASN.1 indipendente, ma non ancora contro l'hardware del gateway.
Chiamate inoltrate
Quando una chiamata ti raggiunge già inoltrata (il numero di qualcun altro inoltrato al tuo, o un utente di Teams), il fornitore lo indica con History-Info (RFC 7044) o Diversion (RFC 5806). BitVoice legge entrambi: Cronologia della chiamata (capitolo 47) mostra inoltrata da il numero che l'ha inviata, con il numero originariamente chiamato e il motivo nella sua descrizione, la traccia della chiamata dice il motivo in parole e il record della chiamata lo conserva (forwardedFrom, original, forwardReason). Quando il fornitore richiede che la cronologia sia privata, i numeri non vengono conservati.
Quando un'estensione inoltra una chiamata attraverso un trunk (inoltra tutte, quando è occupato, quando nessuno risponde), il fornitore viene informato su quale estensione l'ha inoltrata e perché, in modo che possa mostrare il tuo numero e addebitare il conto corretto: per impostazione predefinita con entrambi gli header, e con la cronologia della chiamata in entrata conservata e l'inoltro aggiunto. Un fornitore confuso da uno di essi può essere impostato sull'altro sotto Avanzate, Chiamate inoltrate dicono di chi sono con. Su una scheda di telefonia T1/E1, uno degli header diventa il numero di reindirizzamento della rete.
Cosa significa lo stato
| Stato | Significato |
|---|---|
| registered | registrato; le chiamate possono arrivare |
| ready | non si registra, o IAX2 in attesa di chiamate |
| unreachable | il nome del server non è nel DNS, o nulla risponde |
| failed | il fornitore ha rifiutato la registrazione; il motivo viene mostrato |
| standby | i server condividono questo trunk uno alla volta e un altro lo tiene |
Routing delle chiamate
/routesIl routing delle chiamate decide due cose: dove vanno le chiamate da fuori, in base al numero chiamato, e quale trunk utilizzare per le chiamate ai numeri esterni.
Route in entrata
Ogni route in entrata corrisponde al numero chiamato (o a qualsiasi numero) e invia la chiamata a una destinazione: un'estensione, un gruppo di chiamata, una coda, un menu, un programma, una sala conferenze, un centralino automatico o una casella vocale. I numeri corrispondono in qualsiasi forma: +1 212 555 0100, 2125550100 e 12125550100 sono lo stesso.
- Una route per un numero vince su una route per qualsiasi numero.
- Una route può essere limitata a un trunk, per i numeri che due fornitori inviano entrambi.
- Con modalità di emergenza attivata (Impostazioni), ogni chiamata in entrata va in un solo posto invece, indipendentemente dalle route: un'evacuazione, una chiusura, un incidente.
Route in uscita
Le route in uscita corrispondono a ciò che le persone digitano, in base a un modello, e inviano la chiamata ai trunk in ordine: se il primo è giù o pieno, si prova il successivo.
| Modello | Corrisponde |
|---|---|
X | qualsiasi cifra |
Z | 1 a 9 |
N | 2 a 9 |
[1-5] | uno di un insieme |
. alla fine | una o più cifre aggiuntive |
NXXNXXXXXX | un numero nordamericano a 10 cifre |
1NXXNXXXXXX | lo stesso con 1 all'inizio |
011. | una chiamata internazionale dagli Stati Uniti |
- Rimuovi toglie le cifre dall'inizio (un 9 digitato per una linea esterna); Aggiungi all'inizio ne mette alcune (un codice di paese).
- L'ordine conta: la prima route il cui modello corrisponde viene utilizzata. Trascina le route per cambiarlo.
- I numeri premium (900 e simili) vengono rifiutati a meno che una route non li nomini.
Numeri di emergenza
I numeri di emergenza funzionano sempre. Una route che nomina il numero esattamente viene utilizzata per prima; con nessuna, ogni trunk funzionante viene provato a turno. Una chiamata a essi non viene mai rifiutata per i limiti di un'estensione, i limiti di un'organizzazione ospitata o una route mancante. La salute avvisa quando nessun trunk può trasportarli.
Set di PIN
/pin-setsUn set di PIN (capitolo 9) è un elenco di PIN che una rotta in uscita richiede prima di effettuare la chiamata: per mantenere le chiamate internazionali o a lunga distanza per le persone con un PIN, o per fatturare le chiamate ai clienti e ai progetti con il loro codice.
- Aggiungi set di PIN e elenca i PIN (4-10 cifre ciascuno).
- Attivare Mantieni il PIN nel registro della chiamata per scrivere il PIN utilizzato in ogni registro della chiamata come codice account (la colonna accountcode dei registri delle chiamate CSV, syslog e PostgreSQL, e
accountnell'API). - Su Call routing (capitolo 8), aprire una rotta in uscita e scegliere il set sotto Chiedi un PIN.
I chiamanti che compongono un numero che la rotta prende sentono "Inserisci il tuo PIN, poi premi cancelletto", lo inseriscono e la chiamata esce. Tre PIN errati terminano la chiamata e il tentativo viene registrato come evento di sicurezza. I numeri di emergenza non richiedono mai un PIN, qualunque sia la rotta che prendono, e le chiamate inoltrate e i numeri di follow-me non vengono richiesti: solo le persone che chiamano da un telefono.
Ricerca dell'ID del chiamante
/lookupsMolte società di telefonia inviano il numero del chiamante ma non il nome. BitVoice cerca prima nei contatti aziendali (capitolo 38); dopo di che, una rotta in entrata può chiedere una ricerca dell'ID del chiamante (capitolo 10):
- Un indirizzo web: il tuo CRM o qualsiasi servizio che risponde con il nome. Metti
{number}dove va il numero (https://crm.example.com/api/callers?phone={number}). Una risposta in testo semplice fornisce il nome nella sua prima riga; per JSON, fornisce il campo nome come percorso puntato (data.contact.name; un numero entra in una lista, come inresults.0.name). L'autenticazione di base è facoltativa. - OpenCNAM: il database dei nomi dei chiamanti nordamericani, con il tuo account SID e token di autenticazione.
Scegliere la ricerca su una rotta in entrata su Call routing (capitolo 8) (Ricerca dell'ID del chiamante). I telefoni visualizzano il nome mentre squillano e viene inserito nel registro della chiamata.
Una ricerca non blocca mai una chiamata: BitVoice aspetta al massimo il suo tempo di attesa (1,5 secondi a meno che non lo si modifichi, 5 al massimo) e poi squilla senza un nome. Le risposte vengono mantenute per un giorno (o per il tempo che si imposti, o mai con -1), quindi un chiamante regolare non viene cercato su ogni chiamata; i numeri che il servizio non conosce vengono richiesti di nuovo dopo un'ora. Prova sulla pagina della ricerca chiede un numero subito, con le impostazioni salvate.
Chiamate di emergenza
I numeri di emergenza vanno sempre fuori, da ogni estensione, anche da quelle che non possono chiamare numeri esterni. Questo capitolo riguarda le chiamate di emergenza effettuate dai telefoni gestiti da BitVoice: un ufficio che chiama il 911. Rispondere alle chiamate di emergenza è il profilo 911 (capitolo 77).
Cosa fa BitVoice su ogni chiamata di emergenza
- La instrada, sempre: una rotta che nomina il numero per primo; con nessuna, ogni trunk funzionante a turno. I limiti non la bloccano: un'estensione non autorizzata a chiamare numeri esterni, un'organizzazione ospitata al limite di chiamate o sospesa, un trunk al limite di canali.
- Invia dove si trova il chiamante: con Invia l'indirizzo del chiamante attivato (Impostazioni), la chiamata trasporta l'indirizzo civico del sito, piano e stanza al provider come PIDF-LO.
- Avvisa le persone sul posto (legge di Kari negli Stati Uniti): le estensioni sotto Avvisa ricevono un messaggio sui loro telefoni, ogni schermata di BitVoice aperta visualizza un avviso e gli indirizzi sotto Avvisa anche via email ricevono un'e-mail con il nome del chiamante, estensione, sito, piano e stanza, in modo che qualcuno possa incontrare i soccorritori alla porta.
- Consente la chiamata di ritorno: per un'ora dopo una chiamata di emergenza, le chiamate in entrata non vengono mai rifiutate, in modo che il punto di risposta possa sempre richiamare.
Configurazione
- Controllare i numeri di emergenza in Impostazioni (capitolo 14) (impostati per paese: 911 e 933 negli Stati Uniti).
- Aggiungere ogni edificio sotto Siti (capitolo 12), con il suo indirizzo di via e le reti che utilizzano i suoi telefoni.
- Assegnare a ogni estensione il suo sito, piano e stanza.
- Assicurarsi che una rotta in uscita e un trunk trasportino le chiamate di emergenza; Salute (capitolo 13) avvisa quando nessuno può.
- Compilare Avvisa e Avvisa anche via email.
- Comporre
933(negli Stati Uniti) per sentire l'indirizzo che il provider ha.
Lavoratori remoti
Un telefono che si registra da fuori le reti del suo sito è un lavoratore remoto: la sua pagina del telefono chiede dove si trova e quell'indirizzo viene utilizzato al posto dell'altro. Gli avvisi dicono quando non è stato confermato.
Modalità di emergenza
Una cosa diversa: un interruttore che invia tutte le chiamate in entrata in un unico luogo (un'evacuazione, una chiusura, un incidente). Impostare dove vanno le chiamate, un codice opzionale come *55 e le estensioni autorizzate a comporlo in Impostazioni (capitolo 14); attivalo nel Dashboard (capitolo 1), o composando il codice (toni crescenti per attivare, un tono basso per disattivare). Una barra rossa appare su ogni schermo mentre è attivata.
Siti e ufficio 911
/sitesUn sito è un edificio: il suo indirizzo di via e le reti che i suoi telefoni utilizzano. I siti sono come una chiamata di emergenza dice dove si trova il chiamante, fino al piano e alla stanza. Negli Stati Uniti, la legge di Kari e la legge RAY BAUM'S richiedono esattamente questo dai sistemi di telefonia aziendale.
Aggiungere un sito
Su Siti (capitolo 12), premi Aggiungi:
| Campo | Cosa è |
|---|---|
| Nome | come lo chiamano le persone: Ufficio centrale |
| Via, Città, Stato o provincia, Codice postale, Paese | l'indirizzo civico a cui vengono inviati i soccorritori |
| Reti | gli indirizzi di rete che i suoi telefoni utilizzano, come ad esempio 10.1.0.0/16; uno per riga |
Quindi su ogni estensione dai il suo sito, piano e stanza. Salute (capitolo 13) elenca le estensioni senza una posizione.
Come viene trovata la posizione di un telefono
- Un telefono che si registra da una delle reti di un sito si trova in quel sito, con il piano e la stanza della sua estensione.
- Una postazione di lavoro porta il sito, il piano e la stanza della postazione stessa, non della persona che si è registrata (Postazione di lavoro condivisa (capitolo 36)).
- Un telefono che si registra da fuori ogni rete di un sito è un lavoratore remoto. Alla sua prima registrazione abilitata all'emergenza da un nuovo posto, all'utente viene chiesto di confermare il suo indirizzo nella pagina del telefono; le chiamate di emergenza portano poi quell'indirizzo.
- Se un lavoratore remoto non ha mai confermato, la chiamata esce comunque, con il sito abituale dell'estensione, e gli avvisi dicono che l'indirizzo non è stato confermato.
Avvisi in loco
Con Invia email quando qualcuno chiama il 911 impostato in Impostazioni, le persone nominate ricevono il nome del chiamante, l'estensione, il sito, il piano e la stanza non appena inizia una chiamata a un numero di emergenza, in modo che qualcuno possa incontrare i soccorritori alla porta. Le estensioni Notifica ricevono un messaggio sui loro telefoni, e ogni schermata di BitVoice aperta mostra un avviso. Vedi Chiamate di emergenza (capitolo 11).
Salute
/healthLa salute dice se il sistema è pronto per le chiamate e, se non lo è, cosa fare. Ogni riga dice cosa non va in parole semplici e collega allo schermo dove viene corretto. Controllalo dopo ogni modifica di una certa entità.
Cosa controlla
| Controllo | Perché è importante |
|---|---|
| Le chiamate di emergenza possono uscire | una rotta e un tronco funzionante trasportano i numeri di emergenza |
| Estensioni senza una posizione di emergenza | le loro chiamate al 911 non avrebbero nessun piano o stanza |
| Il servizio di telefonia | SIP è in ascolto e su quale porta |
| Telefoni non connessi | estensioni di cui nessuno si è registrato |
| Tronchi | registrati o il motivo per cui non lo sono |
| Menu senza una registrazione di prompt | i chiamanti sentirebbero silenzio |
| Il fuso orario | i calendari lo seguono |
| Registrazioni e loro conservazione | spazio su disco e per quanto tempo vengono conservate le registrazioni |
| Certificati | quando il certificato TLS scade |
| Vault di chiavi | segreti che un vault non può leggere |
| Altri server | quando diversi condividono un database, se ogni server è in esecuzione |
I problemi sono colorati: rosso blocca le chiamate (nessuna rotta di emergenza), ambra dovrebbe essere esaminato (un telefono non connesso) e grigio è per informazioni.
Impostazioni
/settingsImpostazioni contiene tutto riguardante il sistema nel suo complesso. Ogni sezione salva separatamente, e ogni salvataggio è una revisione su Modifiche (capitolo 61).
| Sezione | Cosa c'è |
|---|---|
| Sistema | nome, paese, fuso orario, linguaggio, l'indirizzo pubblico che i telefoni e i provider vedono |
| Numeri | il test di eco, i numeri della segreteria telefonica e del parcheggio, e i numeri di emergenza |
| Codec | i codec che i telefoni possono utilizzare, elencati nel miglior ordine (Codec (capitolo 66)) |
| Registrazione delle chiamate | disattivata, ogni chiamata, o estensioni selezionate; regole di consenso; quanto a lungo vengono conservate le registrazioni |
| Suono | pulizia per la segreteria telefonica e durante le chiamate |
| Protezione | divieti dopo tentativi di accesso non riusciti, reti attendibili, chiamate per estensione, numeri premium |
| Emergenza | invio dell'indirizzo del chiamante, chi viene notificato, chi viene inviato via email, modalità di emergenza |
| Intelligenza artificiale | il servizio di intelligenza artificiale, modelli e quali funzionalità di intelligenza artificiale sono attivate (Intelligenza artificiale (capitolo 28)) |
| Accesso singolo | il provider di identità (Accesso singolo (capitolo 58)) |
| Compatibilità con Asterisk | AMI e ARI per programmi scritti per Asterisk (Compatibilità con Asterisk (capitolo 70)) |
| Assistenti di intelligenza artificiale (MCP) | se gli assistenti di intelligenza artificiale come Claude o ChatGPT possono connettersi e se possono agire (Assistenti di intelligenza artificiale (capitolo 71)) |
| Microsoft 365 e Google Workspace | persone e contatti condivisi in Contatti, e calendari per chi è assente (Contatti (capitolo 38), Calendari (capitolo 39)) |
| App mobili | il servizio di push che sveglia le app |
| il server di posta per la segreteria telefonica, i fax e gli avvisi | |
| Vault delle chiavi | segreti conservati in AWS Secrets Manager o Azure Key Vault |
| Configurazione da Git | mantenere la configurazione allineata con un file in un repository |
| Database | SQLite o PostgreSQL (Database (capitolo 64)) |
| Certificato | il certificato per questa interfaccia e SIP su TLS: da Let's Encrypt, installato manualmente o certificato di BitVoice |
Le password e le chiavi non vengono più mostrate una volta salvate; lasciarle vuote le mantiene. Gli osservatori vedono Impostazioni con ogni segreto rimosso.
Il certificato e Let's Encrypt
BitVoice inizia con un certificato che ha creato da solo, che i browser e i telefoni avvertono. Per un server con un nome pubblico, attiva Let's Encrypt sotto Certificato: inserisci i nomi (pbx.example.com), opzionalmente un indirizzo di posta elettronica e applica. BitVoice ottiene un certificato gratuito da Let's Encrypt, lo utilizza immediatamente per l'interfaccia web, SIP su TLS e Teams, e lo rinnova circa 30 giorni prima della scadenza (i certificati Let's Encrypt durano 90 giorni o meno). La riga di stato dice quando è stato rilasciato, quando si rinnova e, se fallisce, perché; tenta nuovamente dopo un'ora, poi meno spesso, entro i limiti di Let's Encrypt. Controlla ora tenta subito.
Let's Encrypt deve raggiungere il server sotto ogni nome da internet, per dimostrare che è di tua proprietà:
- http-01 (la scelta a meno che l'interfaccia web non sia sulla porta 443): una richiesta alla porta 80. BitVoice risponde sulla porta 80 stesso (in Linux necessita del diritto di aprire le porte basse, come ad esempio
setcap cap_net_bind_service=+ep bitvoice), o inoltra la porta 80 sul router alla porta dell'interfaccia web, che risponde anch'essa. Qualsiasi altra cosa che arriva sulla porta 80 viene inviata a HTTPS, solo per i nomi del certificato. Quando BitVoice non può aprire la porta 80, la casella di Let's Encrypt dice il motivo in ambra e cosa lo consente (la linea esatta disetcapper questo programma, o la funzionalità di systemdAmbientCapabilities=CAP_NET_BIND_SERVICE; o un altro programma già occupa la porta). Test dei nomi chiede quindi ogni nome per un file di test tramite internet, come farà Let's Encrypt, e dice per ogni nome se ha raggiunto BitVoice, ha raggiunto qualcos'altro o non è in DNS. Alcuni router non eseguono il loop del proprio indirizzo pubblico all'interno (nessun hairpin NAT): lì il test fallisce dall'interno anche se Let's Encrypt, dall'esterno, riesce. - tls-alpn-01: una connessione TLS alla porta 443, risposta sulla porta dell'interfaccia web stesso: per un server la cui interfaccia web è sulla 443.
Altre autorità ACME che non richiedono il binding dell'account (un'autorità di certificazione interna di un'azienda, il servizio di staging di Let's Encrypt per i test) vengono scelte sotto Autorità. I nomi wildcard necessitano di prove DNS, che BitVoice non esegue: installare manualmente quei certificati. Ogni server di un cluster ottiene il proprio certificato.
Le schermate nel tuo linguaggio
Le schermate di BitVoice sono disponibili in inglese e in altri tredici linguaggi: Deutsch, Français, Español, Italiano, Português, Nederlands, Polski, Svenska, Dansk, Norsk bokmål, Suomi, 日本語 e 简体中文.
Scelta del linguaggio
Ogni browser ha il proprio linguaggio: sceglierlo nel menu (l'elenco dei linguaggi accanto ai temi), nella pagina di accesso o nella prima pagina del wizard di setup. Fino a quando non si sceglie, BitVoice utilizza il linguaggio del browser quando è uno di questi, altrimenti inglese. La scelta è conservata solo in questo browser: due persone nello stesso server possono lavorare ciascuna nel proprio linguaggio.
Tutto ciò che è visualizzato nelle schermate è tradotto: il menu, i titoli, i pulsanti, i suggerimenti, i messaggi del server e i nomi che i lettori di schermata annunciano. La ricerca (⌘K) trova una pagina per nome nel tuo linguaggio o in inglese. Rimangono invariati: ciò che le persone digitano (nomi, numeri, note), gli indirizzi, i codici, gli script negli editor e i nomi di prodotti e protocolli. Le date e i numeri seguono le impostazioni del browser.
Come viene tradotto e quanto è buona la traduzione
Le traduzioni sono generate da una macchina (un modello linguistico di grandi dimensioni), per ogni testo visualizzato nelle schermate, circa 5.000; nessuna è stata verificata da una persona. Alcune frasi che le schermate costruiscono da pezzi (un numero e una parola) possono essere lette in modo goffo, e un termine può essere tradotto in due modi diversi in due luoghi diversi. Tutto ciò che non ha una traduzione, come una schermata più recente delle traduzioni, rimane in inglese.
Aiuto mantiene questo manuale in inglese, come scritto, con un collegamento in alto in ogni capitolo al medesimo capitolo tradotto interamente (anch'esso generato da una macchina) su bitvoice.org.
La parte telefonica è separata: ciò che gli utenti sentono (prompt, menu della segreteria telefonica) è nel linguaggio predefinito dei prompt (Suoni (capitolo 20)), a meno che un'estensione o una coda non abbia un proprio linguaggio.
Dove vanno le chiamate
I blocchi costitutivi attraverso cui si muovono i chiamanti: gruppi e code, menu e pianificazioni, script e il receptionist AI, casella vocale e il diagramma che mostra tutto.
Flusso di chiamata
/flowVerifica ogni situazione
Verifica ogni situazione, in cima a Call flow (capitolo 16), prova l'intero piano di chiamata in ogni situazione in cui può essere, non un campione:
- ogni combinazione di aperto e chiuso che i tuoi orari raggiungono effettivamente nel prossimo anno (ogni festa inclusa), trovata in passi di 15 minuti;
- ogni combinazione di toggle giorno/notte (o, con più di sei, ogni toggle singolo);
- ogni percorso di ingresso e ogni tasto che un chiamante può premere in ogni menu, ogni "se nessuno risponde" e ogni timeout di coda lungo la strada;
- ogni estensione che compone ogni numero di emergenza.
It lists what it finds, the worst first: a call goes nowhere (a group with nobody to ring and nowhere to go next), a loop, works, but look at it (a queue with no agents), nothing routes to it (a menu or schedule no call reaches), a branch no situation takes (a schedule that is never closed, so its closed side is never used), and emergency calls rest on one trunk (if it fails, they cannot get out). Each finding names the situations that show it: the time and which schedules were open, the toggles switched over, and the path (a call to +12125550100 → Press 2 (Billing) → No answer). Try this call fills Try a call below with that exact situation and traces it.
Lo stesso controllo viene eseguito sulle modifiche prima che vengano apportate: una proposta da Chiedere in parole semplici e il Ripristina questa revisione guardano anche cosa la modifica romperebbe che funziona oggi.
Prova una chiamata
Inserisci chi chiama (un'estensione o un numero esterno), cosa digita e quando, e premi Prova. BitVoice segue la chiamata esattamente come se fosse reale, senza far squillare nulla: la route di ingresso, gli orari in quel momento, gli script di routing (che vengono eseguiti, nel loro sandbox), i menu, i gruppi e le code, e cosa succede se nessuno risponde. Il percorso che questa chiamata prende è segnato; altri percorsi (le chiavi di un menu, l'altro lato di un orario) possono essere aperti. Il verde significa che funziona, l'ambra significa controllare (un telefono non connesso, uno script che ricade), il rosso significa che la chiamata fallisce lì. Spunta Supponi che ogni telefono sia connesso per vedere il piano come progettato piuttosto che come è attualmente; Arriva su seleziona il trunk per le route che prendono solo uno.
Il diagramma
Il diagramma mostra dove vanno le chiamate dall'esterno, scatola per scatola: ogni route di ingresso, quindi i menu, i gruppi, le code, gli orari, gli script e le persone a cui porta.
Clicca su una scatola (o premi Tab e premi Invio) per cambiare dove vanno le chiamate da essa: la destinazione di una route, l'Se nessuno risponde di un'estensione o di un gruppo, le destinazioni aperte e chiuse di un orario, le chiavi di un menu (aggiungi o rimuovi chiavi proprio lì), lo script di fallback o la persona di un centralinista. Il salvataggio controlla il cambiamento come qualsiasi altro e crea una revisione. Apri il suo editor completo va alla pagina dell'elemento stesso. Aggiungi route di ingresso aggiunge una route senza lasciare il diagramma.
Gruppi di chiamata
/ring-groupsUn gruppo di chiamata è un numero che suona su più estensioni: un team di vendita, la reception e il suo backup, tutti nel laboratorio.
Strategie di chiamata
- Tutti insieme: ogni membro del gruppo suona contemporaneamente, e il primo a rispondere prende la chiamata. Gli altri smettono di suonare.
- Uno dopo l'altro: ogni membro suona per il tempo di chiamata del gruppo, nell'ordine elencato. Sposta i membri con le frecce, o Alt+↑ e Alt+↓.
I membri che sono assenti (in una riunione nel loro calendario, o con la funzione 'non disturbare' attiva) vengono saltati; il gruppo suona gli altri. I membri con l'app mobile vengono svegliati da una notifica e suonano anche loro.
Se nessuno risponde
Quando nessuno risponde entro il tempo di chiamata, la chiamata va a Se nessuno risponde: la casella vocale di un membro, una coda, un menu, un altro gruppo. Con nulla impostato, suona fino a quando il chiamante non rinuncia.
Gruppi, code o gruppi di raccolta?
| Utilizza | Quando |
|---|---|
| Un gruppo di chiamata | poche persone, qualsiasi delle quali può prendere la chiamata, e la chiamata dovrebbe suonare adesso |
| Una coda | i chiamanti possono dover aspettare per qualcuno libero, e dovrebbero sentire la loro posizione |
| Un gruppo di raccolta | ogni persona ha le proprie chiamate, ma i colleghi possono rispondere per loro |
Code
/queuesUna coda tiene i chiamanti in ordine, con musica, e suona l'agente successivo libero. È il cuore di un centro di contatto, e utile in qualsiasi ufficio dove le chiamate arrivano più velocemente di quanto le persone possano prenderle.
Come vengono offerte le chiamate
| Strategia | Chi viene chiamato |
|---|---|
| Inattività più lunga | l'agente libero che ha aspettato più a lungo dalla sua ultima chiamata |
| Rotazione | ogni agente libero a turno, continuando dall'ultimo |
| Suona tutti | ogni agente libero contemporaneamente |
| Minimo numero di chiamate | l'agente libero che ha ricevuto il minor numero di chiamate oggi |
| In ordine (lineare) | sempre dall'inizio della lista: il primo agente libero |
| Casuale | qualsiasi agente libero, per caso |
| Casuale ponderato | per caso, gli agenti con una penalità più bassa vengono selezionati più frequentemente |
- Ordine: l'elenco degli agenti è in ordine; spostali verso l'alto e il basso. L'ordine e la rotazione seguono questo ordine.
- Penalità classificano gli agenti (da 0 a 100, 0 se vuoto): le chiamate vengono offerte agli agenti liberi con la penalità più bassa, e un agente con una penalità più alta viene chiamato solo se nessuno con una penalità più bassa è libero. Utilizzali per una prima linea e una linea di overflow in una coda.
- Peso classifica le code che condividono gli agenti: mentre una coda con un peso più alto ha qualcuno in attesa, i suoi agenti prendono i suoi chiamanti per primi.
- Risoluzione dà all'agente il tempo dopo una chiamata prima della successiva.
- Attesa più lunga: i chiamanti che aspettano più a lungo vanno alla destinazione di timeout della coda. 0 aspetta per sempre.
- Musica in attesa: i chiamanti sentono la musica della coda (qualsiasi classe da Suoni (capitolo 20)), quella del sistema o il tono della coda.
- Informa i chiamanti in attesa del loro posto in coda e dell'attesa prevista (l'attesa media dei chiamanti risposti oggi, in minuti), ogni tot secondi, nella lingua della coda. Le parole provengono dalle promemoria della coda in Suoni (capitolo 20); fino a quando non vengono registrate, non viene detto nulla.
Lo schermo Code è un wallboard live: chi è in attesa, da quanto tempo, e lo stato di ogni agente.
Agenti
Gli agenti digita *45 per accedere o uscire da ogni coda, e *46 per mettersi in pausa (una pausa) e riprendere; gli agenti in pausa e non accessibili non vengono offerti chiamate. Il wallboard ha gli stessi pulsanti e mostra il motivo per cui un agente si è messo in pausa.
| Stato | Significato |
|---|---|
| disponibile | libero; verrà offerto il prossimo chiamante |
| squillante | viene offerta una chiamata |
| occupato | in chiamata |
| risoluzione | appena finito; il tempo di risoluzione sta scadendo |
| in pausa | in pausa, con il motivo indicato |
| assente | in una riunione o in ferie, dal suo calendario |
| non accessibile | non accetta chiamate della coda |
Supervisori
Su Chiamate live (capitolo 46), Supervisa chiama il telefono di un supervisore; quando rispondono possono ascoltare (sentito da nessuno), sussurrare (sentito solo dall'agente) o intervenire (sentito da entrambi), e possono passare tra di loro durante la chiamata.
Code adesive e VIP
Attiva Adesivo in una coda e un chiamante che ritorna (uno risposto negli ultimi 30 giorni, o il numero che imposti) viene offerto per primo all'agente che lo ha risposto l'ultima volta, se quell'agente è libero; se non rispondono, la coda prosegue come al solito. I chiamanti VIP, in fondo alle Code, vanno alla fine di ogni coda che chiamano, dopo eventuali VIP già in attesa, e vengono contrassegnati come VIP sulla bacheca.
Compositore di chiamate in uscita
/dialerIl compositore di chiamate in uscita (capitolo 19) chiama elenchi di contatti per gli agenti di una coda (capitolo 18): rinnovi, promemoria di appuntamento, raccolte, sondaggi. Ogni campagna ha la sua coda, la sua lista e il suo modo di chiamare:
| Modalità | Come chiama |
|---|---|
| Anteprima | un agente chiede il prossimo contatto, visualizza i dettagli, poi chiama (il suo telefono squilla per primo) o salta |
| Progressivo | una chiamata per ogni agente libero |
| Potenza | un numero fisso di chiamate per ogni agente libero (1-3) |
| Predittivo | BitVoice regola le chiamate per agente, inclinando mentre poche chiamate vengono abbandonate e allontanandosi mentre la percentuale di abbandono si avvicina al limite |
- Aggiungi campagna: la sua coda, il suo ID del chiamante (il numero che i contatti vedono), le ore in cui le chiamate possono essere effettuate in un fuso orario, quanto dura la suoneria del telefono di un contatto, quanti tentativi e quanto distanti.
- Apri Contatti e Aggiungi una lista: un file CSV con una riga di intestazione e una colonna chiamata
number(ophone);namee qualsiasi altra colonna vengono visualizzati all'agente in anteprima. I numeri duplicati e non validi vengono saltati. - Registra il messaggio (nella campagna): chi sta chiamando e perché, e "premi 9 se non desideri queste chiamate". Viene riprodotto a una persona risposta quando nessun agente è libero, e, se si sceglie, dopo il saluto di una segreteria telefonica.
- Avvia. Chiama solo all'interno delle sue ore e smette di chiamare quando viene interrotto o nulla è dovuto.
Persone e macchine. BitVoice ascolta i primi secondi dopo una risposta: un lungo messaggio di benvenuto ininterrotto è una segreteria telefonica; un breve "hello?" e una pausa è una persona. Una macchina può essere riagganciata (e riprovata), lasciata un messaggio o passata a un agente come chiunque altro. Quando in dubbio, considera la risposta come una persona.
Chiamate abbandonate. Una persona che ha risposto quando nessun agente è libero entro due secondi ascolta il messaggio e viene conteggiata come abbandonata. Con il dialling predittivo, se la percentuale di chiamate abbandonate sugli ultimi cento risposte supera il limite della campagna (3% a meno che non lo si modifichi, la regola degli Stati Uniti), la campagna chiama una chiamata per ogni agente libero fino a quando non torna sotto. La campagna mostra la sua percentuale di abbandono, le chiamate in attesa e gli agenti liberi in tempo reale.
Non chiamare. Nessuna campagna chiama un numero nella lista non chiamare, qualunque sia la lista da cui proviene; chiunque che preme 9 durante il messaggio viene aggiunto immediatamente. Aggiungi numeri a mano o attraverso l'API (POST /api/dnc). Per il registro nazionale (negli Stati Uniti, il National Do Not Call Registry della FTC: scarica gli codici di area che si chiamano come un file piatto), scegli il file sotto Registro nazionale e Importa: ogni riga con un numero conta (212,5550100 come li scrive la FTC, o un numero per riga), le intestazioni e le righe rotte vengono saltate e contarono. Con Sostituisci l'ultimo import attivato, i numeri del download precedente vengono rimossi per primi, in modo che un numero che ha lasciato il registro possa essere chiamato di nuovo; i numeri aggiunti a mano o premendo 9 rimangono sempre. Il registro deve essere aggiornato almeno ogni 31 giorni (regole degli Stati Uniti); la pagina conta la lista e quanto di essa proviene dal registro. L'API è POST /api/dnc/import?replace=1 con il file come corpo.
Suoni: promemoria, lingue e musica in attesa
/soundsSuoni (capitolo 20) contiene tutto ciò che BitVoice dice o suona ai chiamanti, a parte i saluti e i promemoria dei menu, che vengono registrati dove vengono utilizzati.
Promemoria, in ogni lingua
Un promemoria è una cosa che BitVoice dice: "Inserisci il tuo PIN", "Il tuo posto in coda è", i numeri che legge. La directory dei nomi, il servizio di sveglia e gli annunci della coda parlano con loro. BitVoice ha le parole di ogni promemoria in inglese, spagnolo, francese, tedesco, italiano, portoghese, olandese e polacco; i numeri vengono letti digit per digit, che suona allo stesso modo in ogni lingua.
- I chiamanti sentono imposta la lingua per tutti. Una coda, un numero di accesso, una directory o un'estensione possono scegliere un'altra.
- Ogni promemoria può essere registrato nel browser, caricato (qualsiasi file audio; viene convertito in audio telefonico) o creato dal servizio di sintesi vocale: con un modello di sintesi vocale impostato in Impostazioni, AI, un pulsante crea ogni promemoria di una lingua dalle sue parole. I promemoria già registrati vengono mantenuti a meno che non si chieda di sostituirli.
- Aggiungi una lingua per qualsiasi altra lingua (un codice come sv, ja o pt-BR); i suoi promemoria vengono registrati o caricati, con le parole inglesi visualizzate come guida.
- Un promemoria mancante in una lingua viene riprodotto nella lingua predefinita, quindi in inglese; con nessun promemoria registrato, i chiamanti sentono un breve tono, in modo che ogni funzionalità funzioni prima che venga registrato un solo promemoria.
Musica in attesa
La musica in attesa è raggruppata in classi (Calm, Jazz, Offerte di vendita…), ogni classe è un elenco di tracce riprodotte una dopo l'altra, dall'inizio o mescolate. Carica tracce di fino a quindici minuti in qualsiasi formato che il browser possa leggere; i file MP3 e WAV possono anche essere inviati direttamente all'API (PUT /api/music/{class}/{name}), e BitVoice decodifica MP3 autonomamente (MPEG-1, 2 e 2.5 Layer III, con un decodificatore che fornisce gli stessi campioni di minimp3).
Radio internet. Una classe può riprodurre un flusso invece delle sue tracce: inserisci l'indirizzo di un flusso MP3 (Icecast, Shoutcast, la maggior parte delle radio internet) sotto Radio internet. BitVoice si connette quando il primo chiamante viene messo in attesa con quella classe, riproduce un solo flusso a tutti quelli in attesa e si disconnette mezzo minuto dopo che l'ultimo lascia. Mentre il flusso non può essere raggiunto, le tracce della classe stessa vengono riprodotte (o il tono di attesa, senza tracce) e la classe mostra il motivo.
| Chi lo sente | Quale musica |
|---|---|
| qualcuno messo in attesa | la musica scelta sull'estensione della persona che tiene, altrimenti la musica predefinita |
| un chiamante parcheggiato | la musica della persona che lo ha parcheggiato, altrimenti la musica predefinita |
| un chiamante in attesa in una coda | la musica della coda, altrimenti la musica predefinita |
| un chiamante in attesa del capo della conferenza | la musica predefinita |
Predefinito per tutti può essere il tono di attesa, quindi nulla cambia fino a quando non si sceglie la musica. Scegliere il tono di attesa su una coda o estensione mantiene il tono lì.
Elenco telefonico per nome
/directoriesUn elenco telefonico per nome (capitolo 22) consente ai chiamanti di raggiungere qualcuno senza conoscere il loro numero: digitano le prime lettere del nome sul tastierino (2 per ABC, 3 per DEF, fino a 9 per WXYZ) e vengono messi in contatto.
- Aggiungi elenco, assegnagli un nome e un numero (411, ad esempio) o lascia il numero vuoto e utilizzalo come opzione di menu.
- Scegli cosa i chiamanti digitano: il cognome (il solito), il nome, o entrambi.
- Scegli chi è elencato, o nessuno per elencare tutti quelli con un telefono.
I chiamanti sentono "Inserisci le prime tre lettere del nome della persona". Un solo risultato viene messo in contatto immediatamente. Molti risultati vengono letti, otto alla volta: il nome di ogni persona, poi "per chiamare questa persona, premi 1", 2 e così via, con 9 per altri nomi. Nessun risultato: "Nessuno corrisponde", e provano di nuovo (tre tentativi).
Nomi pronunciati: registra il nome di ogni persona sulla sua estensione (Nome pronunciato: registra nel browser o carica un file), e l'elenco lo dice; fino ad allora legge il numero di estensione. Le parole dell'elenco vengono dalle promemoria dell'elenco in Suoni (capitolo 20), nel suo linguaggio.
Accesso telefonico (DISA)
/dial-inUn accesso telefonico (capitolo 23) (DISA, "accesso diretto al sistema interno") consente a qualcuno di chiamare dall'esterno, dimostrare chi sono e chiamare di nuovo attraverso l'ufficio: la chiamata esce con l'ID del chiamante dell'ufficio, le sue rotte e i suoi tassi, come se fossero alla loro scrivania.
- Aggiungi accesso telefonico, e imposta un PIN (4-10 cifre), i numeri autorizzati a utilizzarlo (Solo da questi numeri), o entrambi. Uno dei due è richiesto.
- Scegli l'estensione da cui vengono effettuate le chiamate: la sua autorizzazione per le chiamate esterne, l'ID del chiamante e le rotte di uscita si applicano. Deve essere autorizzato a effettuare chiamate esterne.
- Assegna un numero da comporre all'interno e invia un numero di telefono a esso su Routing delle chiamate (capitolo 8) (scegli l'accesso telefonico come destinazione).
I chiamanti sentono "Inserisci il tuo PIN, poi premi cancelletto", poi "Inserisci il numero da chiamare, poi premi cancelletto", e vengono messi in contatto. Le parole vengono dalle promemorie dell'accesso telefonico in Suoni (capitolo 20).
Bot vocali (AudioSocket)
/voice-botsUn bot vocale (capitolo 24) è un programma proprio (un agente AI, un IVR di riconoscimento vocale, un registratore) che prende le chiamate tramite AudioSocket, il protocollo semplice utilizzato da Asterisk: BitVoice risponde alla chiamata, apre una connessione TCP al bot e invia l'UUID della chiamata, quindi il suono del chiamante come frame di 20 ms di audio lineare a 8 kHz a 16 bit e ogni tasto premuto; qualsiasi suono che il bot invia indietro viene riprodotto al chiamante. I bot e i connettori di servizi vocali scritti per AudioSocket di Asterisk funzionano con BitVoice senza modifiche.
- Aggiungi bot vocale: il suo nome, l'indirizzo del bot (
10.0.0.9:9092) e, opzionalmente, un numero per chiamarlo. - Scegli dove il chiamante va se il bot non può prendere la chiamata o si interrompe (una persona, una coda, una segreteria telefonica): obbligatorio, in modo che nessun chiamante venga mai riagganciato perché un bot è down.
- Invia le chiamate ad esso da Call routing (capitolo 8), un'opzione del menu, un programma o un interruttore.
Quando il bot invia un hang-up AudioSocket, la chiamata si conclude; quando il chiamante riaggancia, il bot ne riceve uno. Un bot che non può essere raggiunto entro tre secondi, o la cui connessione si interrompe senza un hang-up, passa il chiamante al fallback e il fallimento viene registrato.
Per portare un programma in una chiamata già in corso (un trascrittore in ascolto, un assistente che sussurra a nessuno), utilizza i media esterni di ARI: vedi Compatibilità con Asterisk (capitolo 70).
Interruttori giorno/notte
/togglesUn interruttore giorno/notte (capitolo 25) è un interruttore per un flusso di chiamate (FreePBX lo chiama controllo del flusso di chiamate). Le chiamate inviate ad esso vanno alla sua destinazione normale, o all'altra mentre qualcuno ha commutato: l'ufficio chiude presto a causa di una tempesta, qualcuno digita *281 mentre esce e le chiamate vanno alla segreteria telefonica fino a quando non viene commutato di nuovo al mattino. Rimane come è stato lasciato, attraverso i riavvii.
- Aggiungi interruttore, dategli un codice (1-3 cifre: digitato dopo
*28) e scegli dove le chiamate vanno normalmente e quando vengono commutate. Entrambi i lati possono essere un programma, in modo che un interruttore possa stare davanti alle ore di apertura e sovrascriverle. - Scegli chi può commutarlo da un telefono (nessuno scelto consente a qualsiasi estensione).
- Invia le chiamate ad esso da Call routing (capitolo 8), un'opzione del menu o un programma, come qualsiasi altra destinazione.
Commuta digitando *28 e il suo codice (un tono crescente: commutato; un tono decrescente: torna alla normale), con l'interruttore accanto alla pagina degli interruttori o attraverso l'API (POST /api/toggles/{id}/state). Un pulsante della lampada occupata che guarda *281 si accende mentre quell'interruttore è commutato, in modo che la persona che chiude possa vederlo dalla sua scrivania. Il codice dell'interruttore stesso è in Codici funzionali (capitolo 32).
Programmi
/schedulesUn programma invia le chiamate in un modo quando si è aperti e in un altro quando si è chiusi. Puntare una rotta in entrata al programma e il programma al menu (aperto) e alla casella vocale (chiuso).
Orari di apertura
Ogni riga di orari è un insieme di giorni e un orario da e a. Sono consentite più righe: dal lunedì al venerdì dalle 9:00 alle 17:00 e il sabato dalle 10:00 alle 13:00. Gli orari possono attraversare la mezzanotte (22:00-06:00) per i turni di notte.
Festività
Le festività contano come chiusi tutto il giorno, indipendentemente da cosa dicono gli orari. Aggiungere ogni data con un nome; il nome viene visualizzato su Flusso di chiamata (capitolo 16) quando si tenta una chiamata in quel giorno.
Fuso orario
Il fuso orario è quello in Impostazioni. Quando gli orologi cambiano, i programmi seguono l'orario locale.
Script (JavaScript e Lua)
/scriptsUno script decide dove va una chiamata quando i menu, i programmi e i gruppi non sono sufficienti: chiamanti da un'area a un ufficio, numeri VIP direttamente a una persona, una decisione dai propri dati. Oppure, impostato su Esegue l'intera chiamata, risponde alla chiamata e la gestisce, come un dialplan Asterisk o uno script AGI: prompt e discorso, chiavi, registrazioni, squilli a persone, passaggi (sotto). Gli script sono scritti in JavaScript o Lua su Script (capitolo 27).
Sicuro per design
- Uno script di routing esegue al massimo per 200 ms. Se fallisce o impiega troppo tempo, la chiamata va allo script di fallback, quindi un errore non perde mai una chiamata. (Gli script di chiamata hanno i propri limiti, sotto.)
- Esegue in una sandbox: non può raggiungere la rete o il disco. Uno script di routing può solo scegliere; uno script di chiamata può fare solo i passaggi elencati sotto, alla propria chiamata.
- Le chiamate di emergenza non eseguono mai gli script.
Cosa vede uno script
call ha:
| Campo | Cosa è |
|---|---|
from, fromName | il numero e il nome del chiamante |
to | il numero composto |
direction | inbound o internal |
trunk | il trunk su cui è arrivata la chiamata |
weekday, hour, minute | l'orario attuale (0 è domenica) |
date | YYYY-MM-DD |
What it returns
A destination, {type, target}: type is extension, ringgroup, queue, menu, schedule, voicemail or hangup, and target is its number. Returning nothing uses the fallback. log("text") writes to the script's run list.
JavaScript
if (call.from.startsWith("212")) {
log("New York caller")
return { type: "ringgroup", target: "600" }
}
if (call.weekday === 0 || call.weekday === 6) return { type: "voicemail", target: "100" }
Lua
if string.sub(call.from, 1, 3) == "212" then
log("New York caller")
return { type = "ringgroup", target = "600" }
end
if call.weekday == 0 or call.weekday == 6 then
return { type = "voicemail", target = "100" }
end
Utilizzare uno script
Puntare una rotta in entrata, una chiave del menu o una pianificazione allo script, come a qualsiasi destinazione. Test esegue lo script con una chiamata che si descrive, senza effettuare la chiamata; la lista di esecuzione mostra ogni esecuzione reale con la sua decisione, il tempo impiegato e eventuali errori. Il flusso di chiamata (capitolo 16) esegue anche gli script quando si prova a effettuare una chiamata.
Script che eseguono l'intera chiamata
Scegliere Esegue l'intera chiamata. Lo script quindi risponde alla chiamata e procede dall'alto verso il basso, ogni passo attende fino a quando non è completato:
| Passo | Cosa fa |
|---|---|
play(name) | riproduce un prompt da Suoni (capitolo 20) nella lingua del chiamante (goodbye, digit-5...), digits:1234, o un tono: beep, confirm, error, off, hold. Un prompt non registrato ancora è un beep. |
say(text) | pronuncia le parole con il servizio di sintesi vocale in Impostazioni, AI (un beep senza uno) |
collect({max, timeout, interDigit, end, say, prompt}) | raccoglie tasti: al massimo max (32), in attesa timeout secondi per il primo (5) e interDigit per ciascuno successivo (3), fino a end (#). say o prompt chiede per primo. Restituisce i tasti, "" quando non ci sono. |
record({box, seconds, beep}) | registra un messaggio nella casella vocale di un'estensione, fino a # o al tempo; restituisce i secondi |
wait(seconds) | attende, restituendo un tasto premuto |
dial(destination, ringSeconds) | compone il numero con il chiamante che sente il segnale di libero. Risposto: parlano e lo script è completato (true). Non risposto: false, e lo script continua. |
transfer(destination) | passa la chiamata; lo script è completato |
hangup() | termina la chiamata |
log(text) | scrive sulla lista di esecuzione |
Una destinazione è un numero (un'estensione, un gruppo di chiamata o una coda qui, altrimenti un numero esterno attraverso le rotte in uscita; mai un numero di emergenza) o {type, target} come sopra. Un tasto premuto durante un suono lo interrompe; play e say restituiscono il tasto e il successivo collect inizia con esso. Restituire una destinazione invia la chiamata lì.
const k = collect({ max: 1, timeout: 5, say: "Press 1 for sales, 2 for support." })
if (k === "1") return { type: "ringgroup", target: "600" }
if (k === "2") {
if (dial("101", 20)) return
say("Nobody is free. Leave a message after the tone.")
record({ box: "101" })
hangup()
}
Lua ha gli stessi passi (collect{max = 1}). Dare allo script un Numero per comporlo per chiamarlo da un'estensione.
I suoi limiti mantengono la chiamata sicura: il codice dello script può eseguirsi al massimo un quarto di secondo tra due passi; una chiamata può avere al massimo 1.000 passi; e l'intero script si ferma dopo il suo Tempo di esecuzione più lungo (10 minuti a meno che non si specifichi, 60 al massimo). Quando fallisce, viene interrotto o termina senza terminare la chiamata o passarla, la chiamata va al suo Fallback; un chiamante che riattacca lo interrompe immediatamente. Provarlo esegue lo script con i tasti che si dicono al chiamante e elenca ogni passo, senza effettuare la chiamata.
Receptionist AI, triage della casella vocale e richiesta
/receptionistsLe funzionalità AI utilizzano il servizio AI impostato in Impostazioni (capitolo 14): un servizio compatibile con OpenAI (OpenRouter per default) o uno eseguito autonomamente. Ciò che necessitano viene inviato lì, quindi scegli un servizio di cui ti fidi per le chiamate; per un centro di emergenza 911, la propria nuvola governativa locale è considerata locale.
Receptionist AI
Scegli un receptionist come destinazione delle chiamate: un percorso, un'opzione del menu o Se nessuno risponde di un'estensione. Indica di essere automatizzato, risponde solo da Informazioni approvate, prende un messaggio, prenota una richiamata (vedi Richiamate (capitolo 30)), o trasferisce a Una persona è. Premendo 0 o chiedendo una persona raggiunge sempre qualcuno e così fa qualsiasi problema con il servizio AI o il modello di riconoscimento vocale: i chiamanti non rimangono mai bloccati con esso.
Modelli
Modello esegue il lavoro di testo: riassunti, le risposte del receptionist e la richiesta in parole semplici. La conversione della parlata in testo necessita di un modello che accetta audio; impostalo come Modello di riconoscimento vocale (ad esempio google/gemini-2.5-flash su OpenRouter) per utilizzare un modello di solo testo per il resto, come meta-llama/llama-3.3-70b-instruct.
Riconoscimento vocale all'interno dell'edificio
La parlata può essere trascritta senza alcun modello linguistico: un riconoscitore vocale (whisper) ascolta l'audio e scrive ciò che è stato detto, nulla di più. Chi trascrive la parlata, nelle impostazioni AI, ha tre opzioni:
- Il modello sopra: l'audio viene inviato al servizio AI, il cui modello deve accettare audio.
- Questo server: BitVoice esegue whisper autonomamente. Scegli un Modello whisper e salva: BitVoice recupera il modello una volta dal progetto whisper.cpp (
baseè 60 MB;small,mediumelarge-v3-turbosono più precisi e più lenti; tutti capiscono circa 100 lingue), lo controlla contro il suo SHA-256 pubblicato e avvia whisper.cpp'swhisper-serversu 127.0.0.1 accanto ad esso, riavviandolo se si ferma. L'audio dei chiamanti non lascia mai il computer e nulla viene pagato per chiamata.whisper-server(licenza MIT) è incluso nei download di BitVoice accanto al programma e gli installer lo posizionano accanto a BitVoice; BitVoice trova anche una versione installata autonomamente (brew install whisper.cpp). Le impostazioni mostrano dove si trova (recupero del modello, avvio, in esecuzione o perché non è in esecuzione) e così fa anche Health (capitolo 13). Mentre non è in esecuzione, le trascrizioni falliscono e indicano il motivo: non vengono mai inviate altrove al loro posto. - Un servizio di riconoscimento vocale: whisper.cpp's
whisper-serversu un altro computer all'interno dell'edificio (http://192.168.1.20:8178/inference), per una macchina con una GPU che serve più server BitVoice, o qualsiasi servizio OpenAI compatibile…/audio/transcriptions(con Il suo modello, come whisper-1, e La sua chiave). Il protocollohttppuro è accettato solo per questo computer o un indirizzo di rete privata; qualsiasi altra cosa deve esserehttps. Per eseguirlo:whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto.
Indipendentemente da chi lo scrive, ogni trascrizione va lì: posta vocale, chiamate registrate, chiamate 911 live e receptionist che ascoltano i chiamanti. Senza il modello, il Model può essere lasciato vuoto: le trascrizioni vengono scritte, i riassunti vengono scritti dai fatti che la chiamata ha detto (sotto), e ciò che richiede un modello di linguaggio (elementi di azione, triage di posta vocale, insight di chiamata, risposte dei receptionist, chiedere in parole semplici) viene omesso. Le note che un riconoscitore fa su ciò che ha sentito, come ad esempio [BLANK_AUDIO] o (silence), vengono eliminate, quindi un intervallo di silenzio non viene mai letto come se qualcosa fosse stato detto.
Fatti detti nella chiamata (nessun modello linguistico)
Ogni trascrizione viene anche letta da regole, senza un modello linguistico, per i fatti che un operatore di chiamata annota: cosa è successo, dove, quanti sono feriti (o che nessuno lo è), condizioni (respirazione, sveglio, sanguinamento...), pericoli (fuoco, fumo, gas, armi, sostanze chimiche, carburante), veicoli, chi è il chiamante rispetto alla persona in difficoltà e un numero di telefono per richiamare. Ogni fatto viene mostrato con la frase da cui è stato tratto e il lato che l'ha detto, nella sezione Fatti detti nella chiamata della trascrizione. Senza un modello, il riassunto viene scritto solo da questi fatti e lo indica.
- Nulla viene aggiunto che non sia stato detto. "Nessuno è ferito" è un fatto a sé; un chiamante che passa le parole di qualcun altro ("lei dice che non respira") viene marcato riportato; "24 Pine Lane. No, scusa, 42" mantiene 42; un semplice "no" risponde alla domanda fatta subito prima.
- È fedele, non completo: le parole che non conosce vengono omesse. Su tre set di chiamate 911 inventate (nessuna parola di un chiamante reale), trova:
| Set | Fatti trovati | Fatti trovati che nessuno si aspettava |
|---|---|---|
| Formazione (le regole sono state scritte a partire da esso) | 41 su 41 | 0 |
| Hold-out, valutato a freddo, prima che alcuna regola fosse scritta a partire da esso | 27 su 40 (67%) | 2 |
| Hold-out, dopo un secondo round di regole scritte a partire dai suoi errori | 40 su 40 | 0 |
| Sigillato, valutato a freddo (nessuna regola è mai scritta a partire da esso) | 23 su 43 (53%) | 3 |
Il punteggio sigillato è quello da aspettarsi per le chiamate che non ha visto, e i tre set sono stati scritti dalle stesse persone che hanno scritto le regole, quindi le chiamate reali probabilmente faranno peggio. Leggere i fatti accanto alla trascrizione, mai al posto di essa.
I modelli più grandi richiedono più processore: un server che scrive molte chiamate contemporaneamente dovrebbe iniziare con base, o utilizzare una macchina con una GPU come servizio di riconoscimento vocale per l'edificio. Sui computer Apple, whisper utilizza la GPU.
Triage della casella vocale
Con Trascrivi e riassumi la casella vocale attivato, ogni messaggio viene anche marcato come urgente, normale o a bassa priorità, con il suo tipo (vendite, supporto, fatturazione...). I messaggi urgenti attivano un allarme su ogni schermo amministratore.
Chiedere in parole semplici
Su Modifiche (capitolo 61), descrivere una modifica ("inoltra le chiamate di vendita alla casella vocale dopo le 17:00"). L'AI propone la modifica, BitVoice la controlla come qualsiasi altra modifica e mostra esattamente cosa cambierebbe. Nulla cambia fino a quando non si preme Applica, e diventa una revisione che può essere ripristinata. Le password non vengono mai inviate all'AI.
Casella vocale
/voicemailOgni estensione può avere una casella vocale. I chiamanti che non vengono risposti sentono il messaggio di benvenuto e lasciano un messaggio; la persona lo ascolta sul telefono, lo legge sullo schermo o lo riceve via email.
Attivarla
Sull'estensione, attivare Casella vocale. Se nessuno risponde è quindi impostato sulla casella vocale. Assegnarle un PIN (4-10 cifre): apre la casella vocale da un altro telefono e accede alla persona al portale dello staff e alle postazioni di lavoro.
| Impostazione | Cosa fa |
|---|---|
| Messaggio più lungo | 10-900 secondi (180 di default) |
| Email nuovi messaggi | all'indirizzo email dell'estensione, con il messaggio allegato |
| Messaggio di benvenuto | registrato nel browser, caricato o registrato dal telefono; senza uno, i chiamanti sentono un beep |
Ascoltare
- Dal telefono dell'estensione, comporre
*97: i messaggi si riproducono dal più recente; i tasti ripetono, cancellano o mantengono ognuno. - Da qualsiasi altro telefono, comporre
*97, inserire il numero della casella vocale e il suo PIN. - Su Casella vocale (capitolo 29) (amministratori) o nel portale dello staff (la persona): riprodurre, segnare come ascoltato, cancellare.
- La luce dei messaggi del telefono è accesa finché ci sono messaggi nuovi.
Con AI
Con Trascrivere e riassumere la casella vocale attivato (Impostazioni, AI), ogni messaggio viene trascritto, riassunto in una riga e contrassegnato come urgente, normale o bassa priorità con il suo tipo (vendite, supporto, fatturazione). I messaggi urgenti attivano un allarme su ogni schermo dell'amministratore. Vedi AI (capitolo 28).
Pulizia del suono
Pulizia del suono (Impostazioni) rimuove il rumore di fondo costante e livella i volumi mentre i messaggi vengono salvati, in modo che un messaggio da un'auto o da una strada trafficata sia più facile da ascoltare.
Richiami
/callbacksPersone che hanno chiesto di essere richiamate. Un receptionist AI prenota uno quando un chiamante chiede: raccoglie il loro nome, il numero da chiamare (offrendo quello che stanno chiamando), un buon momento e di cosa si tratta, glielo legge e lo prenota solo quando il chiamante acconsente. Non promette mai un orario esatto. Gli amministratori possono anche aggiungere richiami manualmente.
Un nuovo richiamo mostra un avviso su ogni schermo aperto e viene inviato via email al proprietario della casella di posta del receptionist Ricevi messaggi per quando tale estensione ha un indirizzo email e la posta elettronica è configurata in Impostazioni.
Per richiamare, scegli la tua estensione e premi Richiama: il tuo telefono squilla per primo e quando rispondi BitVoice chiama il numero per te, con le tue normali route e ID chiamante. Poi aggiungi una nota se desideri e premi Fatto (o Annulla). I richiami finiti vengono mantenuti sotto quelli aperti e possono essere riaperti.
Collegamenti di chiamata e chiamata dal sito web
/call-linksUn collegamento di chiamata è un indirizzo web che suona il tuo business da qualsiasi browser: nessun numero di telefono, nessuna app. Mettilo nella firma di una email, stampa il suo Codice QR su un volantino o una vetrina, o incolla il pulsante del sito web nel tuo sito.
Su Collegamenti di chiamata (capitolo 31), aggiungi un collegamento, scegli dove vanno le sue chiamate (un'estensione, un gruppo, una coda, un menu, il receptionist AI, un programma o una segreteria telefonica) e salva: la pagina mostra il suo indirizzo e il codice QR. Il chiamante vede il titolo e le parole che hai impostato, fornisce il suo nome se glielo chiedi, consente l'accesso al microfono e preme Chiama ora; la tastiera funziona per i menu. Chi risponde vede Web: e il nome del chiamante.
Spegni Aperto per chiudere la linea (la pagina lo dice). Chiamate contemporanee limita quante persone possono chiamare attraverso un collegamento (5 a meno che non sia impostato). L'indirizzo contiene una parte casuale lunga in modo che non possa essere indovinato; gli indirizzi errati ripetuti vengono bloccati come i tentativi di accesso falliti. I microfoni dei chiamanti necessitano che la pagina sia servita su HTTPS, quindi distribuisci l'indirizzo HTTPS.
Chiamate quotidiane
Cosa le persone fanno sui loro telefoni ogni giorno e cosa impostano per se stesse: inoltro, follow-me, ritiro, sale conferenze, paging, hot desk, fax e testi.
Codici di funzione, inoltro e numeri di composizione rapida
/codesI codici di funzione sono ciò che le persone compongono sui loro telefoni per modificare le proprie impostazioni e raggiungere le funzioni. Funzionano su ogni telefono, telefono da tavolo o softphone, senza nulla da configurare sul telefono stesso. Un tono crescente significa fatto; un tono discendente significa rifiutato.
I codici a colpo d'occhio
| Codice | Cosa fa |
|---|---|
*72 | inoltra ogni chiamata (poi il numero e #, o il numero direttamente dopo: *722125550199) |
*73 | interrompi l'inoltro di ogni chiamata |
*90 / *91 | inoltra quando si è in chiamata / interrompi |
*52 / *53 | inoltra quando non risposto / interrompi |
*78 / *79 | non disturbare attivato / disattivato |
*76 | commuta non disturbare (tono crescente: ora attivato) |
*21 | commuta segui-me attivato e disattivato |
*8 | rispondi a una chiamata che squilla nel tuo gruppo di raccolta |
** e un'estensione | rispondi alla chiamata che squilla quell'estensione |
*80 e un'estensione | citofono: quel telefono risponde sul suo altoparlante |
*0 e un codice | un numero di composizione rapida |
*62 | sveglia: ascolta, prenota una sveglia (quattro cifre, come 0630) o annulla (stella) |
*68 e un cifra | stato della stanza, per la manutenzione degli alberghi |
*28 e un codice di commutazione | commuta un commutatore giorno/notte (capitolo 25) sopra, o indietro |
*32 | blocca l'ultimo chiamante: l'ultimo numero esterno che ha chiamato questo telefono va nella lista dei blocchi (Protezione antispam (capitolo 56)) |
*43 | il test dell'eco |
*97 | la tua casella vocale |
70 | parcheggia una chiamata (trasferiscila qui); 71 a 79 la raccolgono |
*45 / *46 | agenti di coda: accedi o esci / metti in pausa o riprendi |
*33 / *34 | accedi o esci da una postazione di lavoro condivisa |
*7 / *8 durante una chiamata | metti in pausa e riprendi la registrazione (pagamenti con carta) |
Inoltro
*72inoltra ogni chiamata. Comporlo, sentire un tono, poi comporre il numero e #. O comporre il numero direttamente dopo il codice.*90inoltra le chiamate che arrivano mentre si è in una chiamata.*52inoltra le chiamate che non si rispondono entro il tempo di squillo.*73,*91e*53li annullano.
L'inoltro a un'altra estensione utilizza le impostazioni di quell'estensione (la sua casella vocale, il suo follow-me), fino a quattro salti in modo che due persone che si inoltrano a vicenda non possano creare un ciclo. L'inoltro a un numero esterno passa attraverso le rotte in uscita, come se la persona avesse composto il numero, e richiede che l'estensione sia autorizzata a effettuare chiamate esterne.
L'inoltro è uno stato live, non una configurazione: impostarlo non crea una revisione, e viene mantenuto attraverso i riavvii. Le estensioni (capitolo 3) e il portale dello staff lo mostrano e lo modificano anche.
Non disturbare
*78 attivato, *79 disattivato, *76 commuta. Con non disturbare attivato, le chiamate vanno alla casella vocale o alla destinazione di non risposta dell'estensione. Non disturbare impostato manualmente vince sul calendario (Calendari (capitolo 39)). Le chiamate di emergenza richiamano comunque.
Seguimi
*21 commuta l'attivazione e la disattivazione del follow-me, per le estensioni che hanno numeri follow-me impostati (sull'estensione o nel portale dello staff). La scrivania suona per prima per il tempo di suono, poi i numeri follow-me, uno dopo l'altro o tutti insieme. Su un numero esterno con premi 1 attivato, la persona sente un tono e preme 1 per rispondere alla chiamata; una segreteria telefonica o un silenzio non lo fa, e dopo 15 secondi la chiamata passa alla successiva.
Rispondere a una chiamata di un'altra persona
*8risponde alla chiamata più vecchia che squilla per chiunque nel tuo gruppo di raccolta (impostato su ogni estensione; i nomi vengono confrontati senza considerare le maiuscole).**e un'estensione risponde a una chiamata che squilla per quell'estensione:**101.
Interfono
*80 e un'estensione chiama con auto-risposta: il suo telefono risponde dall'altoparlante, e entrambi i lati possono parlare. Yealink, Grandstream e Snom leggono l'intestazione Call-Info di BitVoice, Poly legge Alert-Info; alcuni telefoni richiedono l'interfono abilitato nelle proprie impostazioni. Un'estensione può rifiutare l'interfono; allora la chiamata squilla come al solito. Le stazioni di porta non accettano mai l'interfono.
Numeri di composizione rapida
*0 e un codice compone un numero salvato: *05. I numeri di composizione rapida dell'azienda sono presenti in questa pagina; ogni persona può avere i propri sulla propria estensione o nel portale dello staff, e i propri hanno la priorità su quelli dell'azienda con lo stesso codice. I codici sono di 1 a 3 cifre.
Modificare i codici
Ogni codice può essere modificato su Codici di funzione (capitolo 32), o disattivato con la parola off. Due funzioni non possono condividere un codice, e nessun codice può essere il numero di un'estensione o di un gruppo: BitVoice indica quale dei due è in conflitto. I numeri di eco, segreteria telefonica e parcheggio sono presenti in Impostazioni (capitolo 14).
Il portale dello staff
Il portale dello staff consente a tutti di prendersi cura delle proprie chiamate senza un amministratore: non disturbare, inoltrare, seguire, numeri di composizione rapida, casella vocale e il suo messaggio di benvenuto, il suo PIN e un elenco delle proprie chiamate. È disponibile all'indirizzo #/me sull'indirizzo del server e collegato dalla pagina di accesso.
Accesso
Le persone accedono con il loro numero di estensione e il loro PIN della casella vocale: lo stesso PIN che apre la loro casella vocale dal telefono e le fa accedere alle postazioni di lavoro condivise. Un'estensione senza PIN non può accedere; un amministratore imposta uno sull'estensione.
Tentativi ripetuti errati da un indirizzo lo bloccano per dieci minuti. Una sessione del portale raggiunge solo le impostazioni della persona: mai un'altra estensione, la configurazione o le registrazioni di qualcun altro.
Cosa possono fare le persone
| Scheda | Cosa c'è |
|---|---|
| Dove vanno le chiamate | non disturbare; inoltrare di ogni chiamata, quando occupato e quando non risposto; numeri di seguire; numeri di composizione rapida propri |
| Casella vocale | messaggi da riprodurre e eliminare, con trascrizioni e riassunti quando l'AI è attiva; registrare o caricare il messaggio di benvenuto |
| Le tue chiamate | le chiamate della persona, più recenti per primi, senza registrazioni |
| PIN | cambiare il PIN, fornendo quello attuale |
L'inoltro e non disturbare impostati qui sono gli stessi di quelli impostati dal telefono con i codici di funzione (Codici di funzione (capitolo 32)): qualunque sia stato impostato per ultimo è in vigore. I numeri di seguire e i numeri di composizione rapida fanno parte della configurazione dell'estensione, quindi cambiarli crea una revisione su Cambiamenti (capitolo 61), registrata come propria della persona.
Chat e presenza
La scheda Chat del portale elenca i colleghi con il loro stato attuale: disponibile, in una chiamata, chiamata in arrivo, non disponibile (non disturbare, una riunione o tempo libero dal calendario, con il motivo) o offline (nessun telefono connesso), e lo stato che hanno digitato ("Al pranzo, ritorno alle 2"). Selezionare qualcuno per inviargli un messaggio; i messaggi arrivano immediatamente, e un numero accanto al nome indica i messaggi non letti. Le stanze di squadra (Impostazioni, Chat dello staff) sono conversazioni per un gruppo o per tutti quando una stanza non elenca membri.
I messaggi sono visibili solo dalle persone nella conversazione: gli amministratori gestiscono le stanze, ma non le leggono. Impostazioni, Chat dello staff disattiva la chat e imposta per quanto tempo vengono conservati i messaggi (0 conserva i più recenti mille di ogni conversazione).
Sale conferenze
/conferencesUna sala conferenze è un numero che le persone chiamano per parlare tutte insieme. Lo staff chiama da una postazione; i chiamanti esterni la raggiungono attraverso una rotta in entrata o un'opzione del menu che punta alla sala.
Configurazione di una sala
- Aprire Sale conferenze (capitolo 34) e premere Aggiungi sala conferenze.
- Assegnarle un numero (qualsiasi numero libero, 500 per default) e un nome.
- Facoltativamente impostare un PIN. I chiamanti sentono un tono, inseriscono il PIN e premere #. Tre PIN errati e la chiamata si conclude.
- Facoltativamente impostare un PIN del leader, diverso dal PIN. Chi lo inserisce si unisce come leader.
- Per consentire ai chiamanti esterni di partecipare, puntare una rotta in entrata (o un tasto del menu) alla sala.
Scelte
| Scelta | Cosa fa |
|---|---|
| Attendere il leader | tutti gli altri sentono il tono di attesa fino a quando un leader si unisce; quando l'ultimo leader lascia la sala, la sala si chiude e tutti vengono disconnessi. Richiede un PIN del leader. |
| I membri si uniscono in modalità muta | per briefing e lezioni: i leader parlano, i membri ascoltano. Un membro preme 1 per chiedere di parlare e un leader lo smuta. |
| Registra la sala | l'intera sala viene registrata come una registrazione in Cronologia delle chiamate (capitolo 47), a meno che la registrazione non sia disattivata per l'intero sistema |
| Tonalità quando le persone si uniscono e lasciano | attivato per default |
| Numero massimo di persone | 50 per default, fino a 200 |
Tasti durante una chiamata
1mette in muta e smuta se stessi (in una sala dove i membri sono muti, chiede di parlare).2, per un leader, blocca la sala in modo che nessuno nuovo possa unirsi e la sblocca.
Mentre una sala è in uso
La pagina mostra ogni sala in uso: chi è dentro, chi sta parlando (la luce verde), chi è muta, chi ha chiesto di parlare e chi sta ancora aspettando il leader. Un amministratore può mettere in muta o smutare chiunque, rimuovere qualcuno e bloccare o sbloccare la sala.
Tutti nella sala sentono tutti gli altri che non sono muti, miscelati da BitVoice; ogni telefono può utilizzare il proprio codec. Viene conservata una registrazione della chiamata per ogni persona e una per la sala stessa con la sua durata e registrazione.
Audio HD
Attivare Audio HD in una sala (le nuove sale lo hanno attivato) e viene miscelato a 16 kHz invece di 8: le persone con telefoni a larga banda (G.722, Opus, il telefono del browser) si sentono a vicenda in HD, con la nitidezza di una chiamata moderna, mentre le persone con telefoni standard (G.711, mobile attraverso un provider) sentono la stessa sala come al solito. La visualizzazione in tempo reale segna la sala e ogni membro che è in HD. L'audio HD richiede G.722 tra i codec utilizzati dai telefoni (è il primo nell'elenco del sistema, Impostazioni, Codec). Le registrazioni della sala rimangono in qualità telefonica.
Sale video
Impostare Video su una sala e i telefoni video (e i softphone) che si uniscono inviano la loro telecamera e vedono un'immagine, commutata mentre le persone parlano, come in Asterisk's ConfBridge:
- Seguire l'oratore: tutti vedono chi ha parlato per un secondo, una volta che chi è sullo schermo è stato silenzioso per un secondo; la persona sullo schermo vede quella precedente.
- Mostrare il leader: tutti vedono il leader (che si unisce con il PIN del leader); il leader vede chi ha parlato per ultimo.
- Griglia: tutti vedono tutti contemporaneamente, uno accanto all'altro (un'immagine riempie lo schermo, due una accanto all'altra, poi 2x2 e 3x3, fino a nove), ogni persona nel proprio posto nell'ordine in cui si sono unite, compresi se stessi.
BitVoice commuta le immagini senza decodificarle, quindi costa quasi nulla, e chiede a ogni nuovo telefono di inviare un frame completo (RTCP PLI e FIR, e il SIP INFO picture-fast-update che la maggior parte dei telefoni da tavolo risponde) in modo che lo switch mostri immediatamente. Ogni video dei membri utilizza il codec video della sala (H.264 a meno che non si scelga VP8); un telefono senza di esso si unisce solo con il suono. Ogni visualizzatore riceve un flusso costante (una sorgente, il proprio payload type), chiunque sia sullo schermo. La visualizzazione in tempo reale segna chi ha video e chi è sullo schermo.
Una griglia è realizzata in modo diverso: BitVoice fornisce ogni immagine a ffmpeg sul server, che le decodifica, le posiziona in un'immagine 1280x720 a 15 fotogrammi al secondo e le codifica una volta per tutti. Installare ffmpeg (Impostazioni, conversione video, indica se è stato trovato); senza di esso, una stanza a griglia segue il relatore e lo schermo della stanza lo indica. Ogni immagine ha un costo in termini di tempo di elaborazione del processore: su un piccolo server, mantenere le griglie a poche stanze alla volta. Vengono visualizzati solo i membri la cui telecamera sta inviando: qualcuno che si unisce senza video o la cui telecamera si ferma, lascia la griglia (non si blocca mai su una telecamera fissa) e la griglia viene ricreata entro un paio di secondi quando ciò cambia, con una breve pausa nell'immagine. I membri successivi al decimo vengono sentiti ma non visualizzati. La visualizzazione live segna le dimensioni della griglia e chi è nella griglia.
Video di tutti (browser)
Scegliere Video di tutti e la stanza ottiene la sua propia pagina (Stanze di conferenza, Apri la stanza video, o #/video-room/NUMBER). Ogni persona lì preme Unisciti con la mia telecamera: il browser invia la sua telecamera una volta, in tre dimensioni (simulcast), e riceve ogni altra telecamera nella propria immagine. BitVoice inoltra le immagini come sono state ricevute, senza decodificarle mai (un'unità di inoltro selettivo, SFU), quindi costa poco tempo di elaborazione del processore; l'upload di ogni browser e il download di ogni visualizzatore sono ciò che limita una stanza, quindi può gestire fino a 16 telecamere.
- L'immagine grande ottiene la dimensione completa di quella telecamera, le piccole ottengono la dimensione piccola; Rendi grande le scambia, e lo scambio avviene al prossimo fotogramma completo della nuova dimensione, che BitVoice richiede immediatamente (RTCP PLI).
- Un browser che è a corto di upload smette di inviare la sua dimensione più grande; i visualizzatori ottengono quindi la dimensione più grande ancora in arrivo.
- Il suono è la conferenza della stanza come sempre: unirsi chiama la stanza sul telefono del browser e chiunque che chiama la stanza da un telefono viene sentito e sente tutti. I telefoni video che chiamano vedono chi parla.
- Una stanza con un PIN richiede il PIN nella pagina. La pagina richiede un accesso a BitVoice.
Condividi lo schermo: premi Condividi il mio schermo e scegli uno schermo, una finestra o una scheda del browser nel selettore del browser. Tutti nella stanza lo vedono come immagine grande, sotto il tuo nome, con il testo mantenuto nitido (la frequenza dell'immagine scende invece quando la rete è scarsa). Non è necessario unirti con la tua telecamera per prima. Interrompi condivisione, o la barra Interrompi condivisione del browser, termina la condivisione.
- Una stanza mostra uno schermo condiviso alla volta: mentre qualcuno condivide, il pulsante degli altri aspetta e dice chi sta condividendo. Uno schermo condiviso non conta verso i 16 dispositivi di ripresa.
- Qualcun altro può essere reso l'immagine grande con Rendi grande, come con le telecamere; lo schermo rimane nella stanza.
- L'immagine dello schermo solo, mai il suo suono: il suono della stanza rimane la sua conferenza.
- I telefoni che non possono condividere uno schermo (la maggior parte dei browser dei telefoni) mostrano il pulsante grigio. I telefoni da tavolo e altri telefoni video che chiamano la stanza non vedono gli schermi condivisi; vedono chi parla.
Paging e altoparlanti
/pagingIl paging parla attraverso molti telefoni contemporaneamente: comporre un numero di paging, e ogni telefono del gruppo risponde dal suo altoparlante da solo. Utilizzarlo per annunci a un magazzino, una scuola, un piano di vendita.
Configurazione di un gruppo di paging
- Su Paging (capitolo 35) premere Aggiungi gruppo di paging e assegnargli un numero (800 di default) e un nome.
- Scegliere i telefoni. Gli altoparlanti configurati come estensioni (tipo Altoparlante) possono essere membri anch'essi.
- Opzionalmente, un indirizzo multicast e porta.
Multicast
Il multicast invia anche la pagina a un indirizzo multicast e porta (239.0.1.10:5000), come G.711 µ-law, che gli altoparlanti e molti telefoni da tavolo possono ascoltare senza una chiamata ciascuno. Un gruppo può avere solo un indirizzo multicast. Funziona su una rete: i router non passano il multicast a meno che non siano configurati per farlo.
Paging e citofono
| Paging | Citofono | |
|---|---|---|
| Chi ascolta | tutti nel gruppo | un'estensione |
| Risposta | no, a senso unico | sì, in entrambe le direzioni |
| Come | comporre il numero del gruppo | *80 e l'estensione |
I telefoni che non rispondono a una pagina da soli entro pochi secondi vengono esclusi, quindi un telefono senza risposta automatica non blocca mai una pagina. Alcuni telefoni richiedono la risposta automatica (citofono) abilitata nelle loro impostazioni.
Hot desking
/phonesUn hot desk è un telefono condiviso che diventa di chi si connette: per uffici dove le persone non hanno postazioni fisse. Crearne uno attivando Hot desk nell'estensione del telefono (l'estensione del desk, ad esempio 900 Desk 3).
Accedere e uscire
- Al telefono, comporre
*33e attendere il tono. - Inserire l'estensione e #, e attendere il tono.
- Inserire il PIN della casella vocale e #. Un tono crescente significa che si è connessi; un tono discendente significa che l'accesso è stato rifiutato.
Da quel momento in poi, le chiamate alla tua estensione suonano anche su questo desk e sui tuoi altri telefoni, e le chiamate che effettui da esso mostrano il tuo numero e nome e vengono conteggiate come tue sui Costi. Accedere a un altro desk ti sposta lì. *34 ti disconnette. Cinque tentativi errati bloccano il desk per dieci minuti.
Gestione hot desk
Su Telefoni (capitolo 4), Hot desk mostra chi è connesso dove; gli amministratori possono connettere qualcuno (senza il PIN) o disconnetterlo. I codici e un orario ogni giorno in cui tutti vengono disconnessi si trovano in Impostazioni. Le connessioni vengono mantenute anche dopo i riavvii.
Chiamate d'albergo e sveglie
/hotelChiamate di sveglia
Chiunque può prenotare una chiamata di sveglia: gli ospiti, i turni di notte, le persone di turno. Dal proprio telefono digita *62: BitVoice dice quella impostata (se presente), quindi digita l'orario come quattro cifre (0630), o premi asterisco per annullarla. In Albergo (capitolo 37) un amministratore prenota una per qualsiasi estensione, una volta o ogni giorno.
Al momento, il telefono squilla con il nome del sistema; risposto, si sente "Buongiorno. Questa è la tua sveglia." (la sveglia nel prompt in Suoni (capitolo 20), nella lingua dell'ospite o dell'estensione). Non risposto, viene riprovato (3 tentativi, 5 minuti di distanza, entrambi impostati in Impostazioni sulla pagina) e dopo l'ultimo può essere chiamata l'estensione reception. Con più server, solo uno effettua le chiamate di sveglia.
Camere degli ospiti
Attivare Camera degli ospiti sull'estensione del telefono di ogni camera. Su Hotel ogni camera mostra il suo ospite, la sveglia e lo stato della camera, con i pulsanti Check-in e Check-out.
- Bar camere vuote: le camere senza nessuno che ha effettuato il check-in chiamano solo le estensioni e i numeri di emergenza. Le chiamate di emergenza funzionano sempre.
- Cancella al check-out: cancella la casella vocale della camera e annulla la sua sveglia, il reindirizzamento e il non disturbare, pronto per il prossimo ospite.
- La lingua di un ospite (dal check-in) è la lingua in cui vengono detti i prompt della camera.
- Stato della camera: il personale di pulizia digita
*68e un numero dalla camera (*683); il sistema dell'hotel decide cosa significa ogni numero.
Il sistema alberghiero (PMS)
- FIAS: BitVoice si connette all'interfaccia FIAS del sistema alberghiero (Oracle Opera e i molti sistemi che parlano FIAS) al suo indirizzo e porta. Riceve check-in, spostamenti di stanza, check-out e prenotazioni di sveglia, e invia risultati di sveglia, stato della stanza e addebiti per le chiamate. Mentre il collegamento è giù, ciò che dovrebbe inviare aspetta e va quando è di nuovo attivo; la pagina dice se è collegato. I record seguono la specifica FIAS 2.20.23 di Oracle: BitVoice si descrive come un sistema telefonico (IF PB), gli addebiti per le chiamate sono addebiti diretti (PT C) con l'importo nella più piccola unità della valuta e i numeri composti senza + o spazi, e un risultato di sveglia ripete l'orario prenotato al secondo, in modo che il sistema alberghiero possa abbinarlo alla sua richiesta.
- REST API: il sistema alberghiero chiama
POST /api/hotel/rooms/<room>/checkin(nome, account, lingua),/checkout, ePUT /api/wakeups/<room>, con una chiave API da Impostazioni, Automazione. Gli addebiti vengono inviati come JSON all'indirizzo che fornisci. - Addebita le chiamate: le chiamate esterne risposte dalle stanze occupate vanno sul conto dell'ospite, al tasso del trunk (da Costi (capitolo 54)) più il sovrapprezzo.
Contatti su ogni telefono
/contactsContatti è l'elenco aziendale: i fornitori, clienti e altri uffici che le persone chiamano. Ogni telefono elenca l'elenco accanto alle estensioni, e quando uno di questi numeri suona in entrata, i telefoni e la scheda chiamante mostrano il nome del contatto (quando il fornitore non ha inviato alcun nome). Un numero corrisponde comunque sia scritto: +1 212 555 0100 e 2125550100 sono la stessa linea.
Aggiungere contatti
Aggiungi contatto per uno alla volta, con tutti i numeri (lavoro, cellulare, casa, altro) che ha. Importa prende un foglio di calcolo salvato come CSV la cui prima riga nomina le colonne: nome, azienda, lavoro (o telefono), cellulare, casa, altro, email, note. BitVoice controlla l'intero file prima e dice quali righe sono errate; un contatto con lo stesso nome di uno esistente viene aggiornato invece di essere aggiunto due volte, e Sostituisci ogni contatto inizia l'elenco da capo. Esporta scarica l'elenco come CSV.
Sui telefoni da tavolo
I telefoni configurati da Telefoni (capitolo 4) (provisioning) ricevono l'elenco senza ulteriore configurazione:
- Yealink: un elenco telefonico remoto denominato Azienda, aggiornato ogni ora.
- Grandstream: il download dell'elenco telefonico, ogni ora.
- Polycom: il file dell'elenco, letto all'avvio del telefono.
- Snom: l'elenco viene scritto nelle impostazioni del telefono, quindi si aggiorna quando il telefono controlla le impostazioni.
Nel telefono del browser
Contatti sotto la tastiera trova un nome o un numero e lo prepara per la chiamata.
Da Microsoft 365 o Google Workspace
BitVoice può mantenere i Contatti in sincronia con l'elenco telefonico della tua organizzazione: tutti coloro che hanno un numero di telefono e i contatti condivisi (contatti dell'organizzazione di Exchange o contatti condivisi del dominio di Google). In Impostazioni (capitolo 14), Microsoft 365 e Google Workspace, scegli il servizio, fornisci le informazioni necessarie e premi Verifica ora: si connette, conta le persone e dice quali estensioni corrispondono a una persona per email. Salva e i Contatti vengono compilati entro mezzo minuto; quindi ogni mezz'ora, o subito con Sincronizza i contatti adesso.
Microsoft 365 (una registrazione dell'app; devi avere il consenso dell'amministratore):
- Nel centro di amministrazione di Entra, Registrazioni dell'app, Nuova registrazione: nomina BitVoice, singolo tenant, senza indirizzo di reindirizzamento.
- Autorizzazioni API, Aggiungi un'autorizzazione, Microsoft Graph, Autorizzazioni dell'applicazione:
User.Read.All,OrgContact.Read.AlleCalendars.ReadBasic. Quindi Concedi il consenso dell'amministratore. - Certificati e segreti, Nuovo segreto client: copia il suo valore (visualizzato una sola volta).
- In BitVoice: l'ID del directory (tenant), l'ID dell'applicazione (client) e il segreto. Un segreto scade (Microsoft offre fino a due anni): quando scade, la carta dice che il segreto è stato rifiutato; crea un nuovo segreto e incollalo.
Google Workspace (un account di servizio; devi essere un amministratore super):
- In Google Cloud, in uno dei tuoi progetti: attiva l'API People e l'API Google Calendar, crea un account di servizio e aggiungi una chiave (JSON) ad esso.
- Nella console di amministrazione di Google, Sicurezza, Controllo e accesso ai dati, Controllo API, Delega a livello di dominio, Aggiungi nuovo: l'ID client dell'account di servizio, con gli ambiti
https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy. - In BitVoice: il file della chiave e l'email di un amministratore per l'account di servizio da utilizzare.
Cosa arriva:
- I numeri di lavoro e cellulari di una persona, nome, email e il suo titolo e reparto come note del contatto; il nome dell'organizzazione come sua azienda. Le persone senza numero vengono escluse (un contatto necessita di uno); gli account disattivati vengono esclusi.
- I contatti del servizio vengono contrassegnati con il suo nome e vengono modificati lì: modificare o rimuovere uno qui viene rifiutato, poiché la prossima sincronizzazione lo annullerebbe. I contatti creati qui o importati da un foglio di calcolo vengono lasciati invariati.
- BitVoice legge solo. Il suo accesso sono le autorizzazioni di sola lettura sopra e il segreto o la chiave vengono mantenuti con gli altri segreti: gli spettatori non li vedono mai e le esportazioni per Git li escludono.
Calendari e non disturbare
/extensionsUn'estensione può seguire il calendario della persona: durante le riunioni e il tempo libero, le sue chiamate vanno alla segreteria telefonica o vengono inoltrate (a un'altra estensione o a un cellulare), invece di suonare un telefono che nessuno risponderà. I gruppi di chiamata suonano gli altri nel frattempo e nelle code l'agente appare come Away.
Nell'estensione, Calendario e non disturbare, incolla l'indirizzo privato del calendario:
- Outlook: Impostazioni, Calendario, Calendari condivisi, Pubblica un calendario; scegli il calendario e "Può visualizzare tutti i dettagli", quindi copia il link ICS.
- Google Calendar: Impostazioni, il calendario a sinistra, quindi Indirizzo segreto in formato iCal.
Verifica lo legge immediatamente e elenca i prossimi orari occupati. BitVoice legge ogni calendario ogni cinque minuti. Il tempo libero (eventi di tutta la giornata e "fuori sede" di Outlook) conta sempre; le riunioni contano quando Le riunioni contano come occupate è attivata; gli eventi contrassegnati come liberi non contano mai, né quelli cancellati. Le riunioni ricorrenti, con occorrenze saltate e spostate, sono comprese. Se un calendario non può essere letto, la salute lo dice.
Non disturbare adesso ferma l'estensione dal suonare fino a quando non viene disinserito, indipendentemente da cosa dice il calendario. L'elenco delle estensioni mostra chi è assente e fino a quando.
L'indirizzo privato funziona come una password: chiunque lo abbia può leggere quel calendario, quindi viene conservato con gli altri segreti.
Ogni calendario contemporaneamente: Microsoft 365 e Google Workspace
Invece di un indirizzo privato per estensione, BitVoice può leggere il calendario di ogni persona da Microsoft 365 o Google Workspace: configurarlo una volta in Impostazioni (capitolo 14), Microsoft 365 e Google Workspace (vedere Contatti (capitolo 38) per i passaggi), con I calendari dicono chi è assente attivato. Ogni estensione è abbinata alla sua persona tramite il suo indirizzo email; uno con un indirizzo privato utilizza quello invece. Le impostazioni dell'estensione qui (Le riunioni contano come occupato, Mentre occupato, le chiamate) si applicano come con un indirizzo privato.
- Microsoft 365 segnala le riunioni dal tempo libero: una riunione segnalata fuori sede conta come tempo libero; le riunioni provvisorie e il tempo segnalato libero o lavorando altrove non impediscono mai che il telefono squilli. Una riunione privata è mostrata come "In riunione", senza il suo titolo.
- Google Workspace fornisce gli orari occupati senza dire il motivo, quindi contano sempre come riunioni.
- I calendari vengono letti ogni cinque minuti e immediatamente quando le impostazioni cambiano. Un'estensione il cui indirizzo email il servizio non conosce lo dice nella sua sezione del calendario.
App mobili
Le app BitVoice per iPhone e Android rendono un telefono mobile uno dei telefoni di un'estensione. Suona come un telefono da tavolo, sullo schermo di chiamata del telefono, anche quando l'app è chiusa.
Configurazione del push
Un'app chiusa viene svegliata per le chiamate da un messaggio di push. In Impostazioni (capitolo 14), App mobili, scegli uno:
| Push | Cosa serve |
|---|---|
| Relay di push | il relay di BioDream (con hosting o supporto) o il tuo bvpush: l'indirizzo del relay, l'ID della chiave e il Segreto |
| App personalizzate | le tue app personalizzate: per Apple, l'ID del team, l'ID del bundle, l'ID della chiave e la Chiave (.p8); per Google, l'account di servizio Firebase (JSON) |
Imposta Indirizzo che le app utilizzano sull'indirizzo https di questo server come viene raggiunto da ovunque, non solo dall'ufficio.
Associazione di un telefono
- Apri l'estensione e premi Aggiungi un telefono.
- Scansiona il codice QR nell'app. Il codice funziona una volta, per dieci minuti.
Quando arriva una chiamata
BitVoice sveglia l'app; si connette, suona sullo schermo di chiamata del telefono e viene risposto come qualsiasi altro telefono dell'estensione: i gruppi di chiamata e le code suonano con gli altri telefoni dell'estensione. La pagina dell'estensione elenca i telefoni associati, se ogni telefono può essere svegliato per le chiamate, quando è stato visto e svegliato per l'ultima volta e se ci sono problemi di push. Disassocia interrompe immediatamente il suono del telefono, per un telefono perso.
Durante una chiamata
L'app è un'estensione completa, non solo un composatore di numeri:
- Trasferisci un chiamante a un'altra estensione o a un numero esterno (il pulsante Trasferisci dello schermo della chiamata o il pulsante dell'app). Al numero di parcheggio, parcheggia la chiamata.
- Metti in attesa e riprendi, dallo schermo della chiamata o dall'app; i chiamanti in attesa sentono la musica di attesa dove è impostata.
- Una seconda chiamata: digita mentre la prima è in attesa, e passa tra loro.
- Tasti del tastierino (DTMF) durante la chiamata, e Muto.
Gli altri tab
- Recenti: chiamate verso e da questa estensione, più recenti per primi, tocca per richiamare (le chiamate perse si distinguono).
- Segreteria telefonica: ogni messaggio con la sua trascrizione (capitolo 29) dove l'AI scrive una, riprodurla, richiamare o eliminare.
- Team: chi è libero, in chiamata, che suona o assente (una lampada occupata), per chiamarli o trasferire la chiamata corrente a loro.
- Contatti: l'elenco della società, per trovare un nome e chiamarlo.
- Chat: la chat dello staff (Chat e presenza), colleghi con la loro presenza e messaggi diretti, e stanze di team, all'interno del telefono. Un nuovo messaggio mentre l'app è in background si mostra come notifica, e toccandolo apre Chat; quando l'app è chiusa, arriva attraverso lo stesso push delle chiamate.
- Unisciti a una stanza video: scegli una delle stanze video (capitolo 34) (elencate, con quanti sono in ognuna adesso). Si apre sopra il telefono, che continua a funzionare sotto, e ti unisci come la tua estensione: nessun accesso amministratore. La prima volta, il telefono chiede la camera. Lascia, o Indietro su Android, ritorna al telefono; il suono della stanza rimane una chiamata su di esso fino a quando non riattacchi. Il telefono mostra la stanza come una chiamata video sullo schermo della chiamata mentre sei al suo interno.
- Le chiamate che effettui vanno sul sistema di chiamata del telefono stesso (CallKit su iPhone, Telecom di Android), quindi Bluetooth, un'auto o un orologio le mostrano, e una chiamata mobile in arrivo sa di loro.
Trascrizione live durante una chiamata
Con Trascrivi le chiamate live attivato (Impostazioni (capitolo 14), AI), ogni lato di una chiamata viene scritto mentre viene parlato e mostrato sul telefono mentre la chiamata è in corso. L'audio va al servizio di riconoscimento vocale (sul tuo computer, dove è impostato) o al servizio AI mentre la chiamata dura. È la stessa scrittura di trascrizioni live 911 (capitolo 13), per chiamate ordinarie.
Chiamate video
/settingsQuando entrambi i telefoni in una chiamata inviano video (telefoni da scrivania video, softphone, citofoni video), l'immagine passa tra loro attraverso BitVoice. Niente da configurare: è attivato a meno che Impostazioni → Chiamate video non sia disattivato.
- BitVoice inoltra il video così com'è, su una porta propria per ogni telefono, quindi i telefoni non apprendono mai gli indirizzi reciproci. Con un codec in comune (quasi ogni telefono video ha H.264) non decodifica mai il video; senza uno, può convertire (sotto). Quando numerano lo stesso codec in modo diverso, BitVoice rinumerizza il codec durante il percorso.
- L'immagine è crittografata (SRTP) per ogni telefono che crittografa il suono.
- Una richiesta di un telefono per un'immagine fresca (dopo pacchetti persi) raggiunge l'altro telefono, quindi l'immagine si ripristina in un attimo.
- Una telecamera attivata durante una chiamata (un pulsante video di un softphone) funziona anche: l'altro telefono viene richiesto per primo e l'immagine inizia quando dice sì.
- Un telefono senza video o una chiamata a un numero esterno riceve solo suono. In attesa o durante la sosta l'immagine si ferma e riprende quando la chiamata riprende. Dopo un trasferimento continua solo quando la nuova parte invia video anche.
- Il video utilizza molto più della rete del suono (circa 0,5-2 Mbit/s per chiamata per ogni direzione): prevedere per esso su collegamenti lenti e nell'intervallo di porte multimediali.
Conversione del video
I telefoni e le app che condividono un codec video (la maggior parte utilizza H.264) ricevono il video reciproco così com'è. Quando due parti non hanno un codec in comune (un telefono da scrivania con solo H.264 e un browser con solo VP8), attivare Converti video tra H.264 e VP8 in Impostazioni: BitVoice offre quindi entrambi i codec, risponde a ogni parte nel proprio codec e converte ogni direzione con ffmpeg, che deve essere installato sul server (apt install ffmpeg, brew install ffmpeg; o fornire il percorso). La conversione costa circa un core del processore per chiamata e aggiunge un piccolo ritardo, quindi è disattivata per impostazione predefinita e utilizzata solo quando necessario. Le impostazioni dicono se ffmpeg è stato trovato.
Fax: invio e ricezione, macchine fax e telefoni analogici
/faxesLe macchine fax, i telefoni analogici, i telefoni di porta e le linee vecchie si connettono attraverso un gateway SIP (o una scheda di telefonia nel computer BitVoice: vedere Schede di telefonia (capitolo 6)): un ATA (Grandstream HT serie, per uno o due telefoni analogici o una macchina fax), o un gateway più grande (Patton SmartNode, AudioCodes MediaPack e Mediant) per molte porte analogiche, una linea ISDN (BRI/PRI) o linee analogiche vecchie (FXO). Ogni porta si registra a BitVoice come un'estensione, come un telefono.
Ricezione di fax senza una macchina fax. In Fax, aggiungi un numero di fax (300, ad esempio), con gli indirizzi email a cui ogni fax viene inviato. Quindi, in Routing delle chiamate (capitolo 8), invia le chiamate di un numero di telefono a esso. BitVoice risponde come una macchina fax, commuta la chiamata su T.38 e riceve il fax; ogni fax diventa un PDF, conservato in Fax (Visualizza, PDF) e inviato via email. Un fax che si interrompe a metà conserva le pagine ricevute e lo segnala. Ogni fax nell'elenco mostra l'identità della macchina che lo ha inviato o ricevuto quando differisce dal numero, e la velocità a cui le pagine sono state trasmesse (14.400 bit/s è la velocità massima; una macchina il cui fax si interrompe frequentemente a bassa velocità solitamente ha una linea di qualità scarsa). Ciò richiede un provider che supporti T.38 (la maggior parte lo fa); un fax inviato come suono non può essere ricevuto in questo modo. Testato con T38Fax, un carrier di fax: registrare il trunk con il nome utente e la password su sip.t38fax.com, porta 5080 (UDP); consentire UDP dalle reti del provider (8.34.182.0/24 e 8.20.91.0/24) attraverso qualsiasi firewall davanti a BitVoice.
Invio di un fax. In Fax, Invia un fax: scegli il numero di fax da cui va, digita il numero a cui inviarlo, scrivi una nota se desideri (diventa la prima pagina) e aggiungi documenti. I file di testo e le immagini (PNG, JPEG, GIF) funzionano ovunque. Il PDF richiede poppler sul server (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument e RTF richiedono anche LibreOffice. La pagina indica quali il server può eseguire. Ogni pagina ottiene una riga di intestazione, come le macchine fax la stampano: l'ora, il nome del numero di fax, la sua identità e il conteggio delle pagine. La chiamata esce dal numero di identità (+1 212 555 0300 chiama da +12125550300), o dal numero di fax stesso quando l'identità non è un numero. Le pagine sono di formato lettera USA in Nord America e A4 altrove, dal paese in Impostazioni.
BitVoice chiama il numero tramite le tue route di uscita, come un'estensione, e invia alla velocità più veloce che la linea supporta (14.400 bit/s, più lento se la linea è scarsa). I fax da un numero di fax vanno uno alla volta. Un numero occupato o che non risponde viene riprovato cinque minuti dopo, tre volte in totale. I fax inviati sono elencati con quelli ricevuti: Inviati, In attesa di invio, Falliti (con Riprova), o Parzialmente inviati quando la linea si è interrotta dopo alcune pagine.
Email a fax. Sotto l'elenco, configura una casella di posta per BitVoice per leggere (IMAP su TLS, porta 993; per le caselle di posta di Google e Microsoft utilizza una password dell'app), quindi Test e Salva. Chiunque abbia il permesso di inviare scrive alla casella di posta con il numero di fax nell'oggetto (Fax 212 555 0199), o a un indirizzo con il più (fax+2125550199@example.com) se il server di posta lo consente. Gli allegati diventano le pagine e le parole dell'email stessa diventano la nota di copertina (la firma e la posta citata vengono omesse). Viene inviato dal numero di fax che elenca il mittente: i suoi Invia ogni fax a possono sempre inviare, e Può anche inviare fax via email aggiunge altri (indirizzi interi, o @example.com per un dominio). Il mittente riceve un'email quando il fax è stato inviato, o perché non poteva essere inviato.
L'email è facile da contraffare, quindi BitVoice invia un fax solo quando il tuo server di posta ha trovato che proveniva effettivamente dal dominio del mittente (DKIM, SPF o DMARC, nella riga di risultati di autenticazione che aggiunge). Altri messaggi vengono scartati senza risposta. Attiva Accetta posta che il dominio del mittente non ha garantito solo per una casella di posta che non può essere raggiunta da posta esterna.
Macchine fax su gateway. BitVoice trasporta fax su T.38, lo standard fax per internet: quando il gateway rileva un tono fax, commuta la chiamata su T.38, BitVoice chiede all'altro lato (il tuo provider o un altro gateway) di commutare anch'esso e passa il fax tra loro. Se l'altro lato non può fare T.38, la chiamata rimane su G.711 e il fax viene trasmesso come suono, il che funziona su una rete buona. Le chiamate in corso mostrano fax (T.38) mentre un fax sta passando.
Per fax affidabili:
- Utilizza T.38 sul gateway e scegli un provider che lo supporti.
- Rendi la porta dell'estensione una porta adattatore analogico (Estensioni, Tipo): BitVoice offre allora solo G.711, che i fax trasmessi come suono necessitano.
- Sulla porta fax del gateway: modalità fax T.38, solo PCMU o PCMA, cancellatore di eco di linea disattivato, attesa di chiamata disattivata e un buffer di jitter fisso e alto.
Inbox: chat web, WhatsApp e Messenger
/inboxLa Casella di posta in arrivo (capitolo 43) contiene ogni conversazione scritta in un'unica lista: la chat box sul tuo sito web, WhatsApp, Facebook Messenger e testi (capitolo 44). Chiunque abbia eseguito l'accesso all'interfaccia web può rispondere; il primo a rispondere prende la conversazione (chiunque può passarla con Risposto da), e Chiudi la mette via fino a quando la persona non scrive di nuovo. Le conversazioni non lette sono contate e l'elenco si aggiorna automaticamente.
La chat box sul tuo sito web
Sotto Canali, attiva Chat web, scegli il titolo, il colore e la prima riga, e inserisci la riga che mostra nelle pagine del tuo sito:
<script src="https://pbx.example.com:8443/webchat.js" async></script>
Disegna un pulsante di chat nell'angolo di ogni pagina; i visitatori scrivono (con il loro nome se lo desiderano) e vedono le tue risposte man mano che arrivano. La conversazione rimane nel loro browser, quindi continua mentre si spostano tra le pagine. Elenca i tuoi siti sotto Solo su questi siti in modo che la casella non funzioni da nessun'altra parte. I visitatori devono raggiungere l'indirizzo di questo server da Internet, con un certificato che i browser considerano attendibile (Let's Encrypt (capitolo 14)). Dieci nuove chat da un indirizzo in dieci minuti è il massimo che BitVoice accetta.
Numeri di business WhatsApp sull'API Cloud di Meta. Nel sito dello sviluppatore di Meta, crea un'app con WhatsApp, aggiungi il tuo numero e crea un utente di sistema con un token di accesso permanente. In Canali, attiva WhatsApp e fornisci l'ID del numero di telefono e l'ID dell'account aziendale (entrambi dall'impostazione dell'API), il token di accesso e il segreto dell'app dell'app, quindi salva. Nella configurazione di WhatsApp dell'app, imposta il webhook: l'indirizzo di callback e il token di verifica che BitVoice mostra, iscritto a *messaggi*.
WhatsApp ti consente di rispondere liberamente per 24 ore dopo l'ultimo messaggio del cliente; dopo di che accetta solo modelli di messaggio approvati in WhatsApp Manager. La casella di risposta si trasforma quindi in un selettore di modelli: scegli un modello (elenco dei modelli del tuo account, con la lingua e il tipo), compila i valori ({{1}}, {{2}} ...), controlla l'anteprima, che è ciò che il cliente leggerà, e Invia modello. I modelli che l'inbox non può compilare vengono elencati in grigio con il motivo: uno con un'intestazione di immagine, video o documento, una variabile nell'intestazione o un collegamento a un pulsante; e quelli non ancora approvati. Crea modelli in WhatsApp Manager; Meta esamina ogni modello, di solito entro pochi minuti.
Facebook Messenger
Per una pagina di Facebook: nell'app di Meta, aggiungi Messenger, collega la pagina e crea un token di accesso alla pagina. In Canali, fornisci l'ID della pagina, il token di accesso alla pagina e il segreto dell'app; quindi imposta il webhook (l'indirizzo e il token di verifica mostrati), iscritto a *messaggi* e *messaging_postbacks*. Le risposte sono consentite per 24 ore dopo l'ultimo messaggio della persona. Da allora fino a 7 giorni, Messenger accetta risposte scritte da una persona (inviato con il tag *agente umano* di Meta: l'app necessita del permesso di agente umano di Meta, richiesto in App Review); il saluto automatico non viene mai inviato allora. Dopo 7 giorni l'inbox non accetta risposte fino a quando non scrivono di nuovo.
Ogni webhook viene verificato con il segreto dell'app (la firma di Meta) prima che BitVoice lo consideri attendibile, e un messaggio che Meta invia due volte viene mantenuto una volta. Le immagini, le note vocali e gli altri allegati vengono visualizzati come tali ("[immagine]"); aprili nelle app di Meta.
Saluto automatico, quando impostato, risponde al primo messaggio di ogni nuova conversazione immediatamente.
Messaggistica aziendale (SMS)
/textsInvia e ricevi messaggi di testo dai tuoi numeri di business su Testi. I testi vengono inviati attraverso un fornitore di messaggistica. Integrati: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute e VoIP.ms, più Il tuo webhook per qualsiasi altro servizio o un gateway tuo. È possibile utilizzare più account di provider contemporaneamente: ogni numero indica quale lo trasporta.
Impostazione
- Nel portale del fornitore, trova i dettagli dell'API dell'account. Il modulo chiede esattamente ciò che quel fornitore li chiama (Twilio: Account SID e token di autenticazione; Telnyx: una chiave API; Bandwidth: utente API, password, ID account e ID applicazione di messaggistica; SignalWire: anche l'indirizzo dello spazio) e dice dove trovarli.
- Su Testi, Impostazione messaggistica, aggiungi il fornitore con essi e salva. BitVoice mostra un indirizzo per i testi ricevuti: imposta questo indirizzo nel fornitore come dove vengono inviati i messaggi ricevuti (il callback, il webhook o l'URL del messaggio). Per VoIP.ms, aggiungi
?from={FROM}&to={TO}&message={MESSAGE}&id={ID}alla fine. Le ricevute di consegna inviate allo stesso indirizzo vengono ignorate. BitVoice deve essere raggiungibile da Internet da lì. - Aggiungi ogni numero da cui invii testi (con il codice del paese), il fornitore che lo trasporta e le estensioni per informare via email quando arriva un testo.
US 10DLC
Gli operatori di rete statunitensi bloccano i testi provenienti da numeri di aziende non registrati. Registra il tuo marchio e quindi una campagna con il tuo fornitore di servizi di messaggistica; la checklist su Texts tiene traccia dello stato e avvisa quando il tuo messaggio di esempio manca delle parole di opt-out che gli operatori si aspettano.
Conversazioni
Ogni conversazione mostra chi è (dai Contatti), i testi non letti e la sequenza. Invio invia; il contatore mostra quanti testi una lunga messaggio richiede. Quando qualcuno risponde STOP, nulla più può essere inviato a loro da quel numero fino a quando non rispondono START. I testi ricevuti appaiono anche come una notifica in BitVoice.
Trasferimento di brevi riassunti
/settingsIn modo che un chiamante non debba mai ripetere se stesso: con Breve chiunque a cui una chiamata viene trasferita attivato (Impostazioni, AI), quando una chiamata viene trasferita, BitVoice scrive un riassunto di due frasi della chiamata fino a quel momento (chi sta chiamando, cosa vuole, tutto ciò che è già stato promesso) per la persona a cui viene trasferita. Appare sul loro telefono browser con la chiamata in arrivo, su Chiamate in corso (capitolo 46) e come un testo sullo schermo del loro telefono da tavolo (per i telefoni che mostrano i messaggi SIP).
Funziona allo stesso modo quando il receptionist AI passa un chiamante a una persona: il riassunto proviene da ciò che il chiamante ha detto all'assistente.
Richiede il servizio AI e un modello di riconoscimento vocale (Impostazioni, AI) e l'audio della chiamata fino a quel momento (fino a cinque minuti) viene inviato a quel servizio per essere scritto. Un riassunto richiede alcuni secondi, quindi potrebbe apparire subito dopo che il telefono inizia a squillare.
Clienti e informazioni
Conoscere chi ha chiamato e come è andata: le chiamate in corso e la storia, la timeline del cliente, CRM, registrazioni e consenso, qualità, costi e reputazione dell'ID del chiamante.
Chiamate in corso
/callsChiamate in corso mostra ogni chiamata in corso, aggiornata man mano che succede: chi ha chiamato chi, da quanto tempo dura, i codec e la qualità.
Cosa possono fare gli amministratori
| Azione | Cosa fa |
|---|---|
| Riattacca | termina la chiamata per entrambi i lati |
| Apri la porta | per una chiamata da una stazione di porta |
| Pausa registrazione | per un numero di carta: la pausa è silenziosa nella registrazione e segnata nella cronologia (Registrazione di chiamate (capitolo 51)) |
| Ascolta | senti la chiamata in silenzio |
| Sussurra | parla all'agente solo; il chiamante non sente |
| Intervieni | unisciti alla chiamata; tutti ti sentono |
Per ascoltare, sussurrare o intervenire, premi Supervisa, scegli il telefono da utilizzare sotto Da telefono e premi Chiamami: il tuo telefono squilla, e quando rispondi ti unisci alla chiamata. Puoi passare tra ascoltare, sussurrare e intervenire mentre sei dentro.
Cosa altro si mostra
- Una carta del chiamante mentre una chiamata esterna squilla (dal tuo CRM, o dalle chiamate precedenti; vedi CRM (capitolo 49)).
- La breve presentazione scritta per la persona a cui la chiamata è stata trasferita (Breve presentazione di trasferimento (capitolo 45)).
- Il verdetto dell'ID del chiamante: Verificato, Parzialmente verificato o Non verificato (Protezione anti-spam (capitolo 56)).
- Con più server, le chiamate sugli altri server, in sola lettura: riattacca o ascolta sul server che ha la chiamata.
Quando una chiamata termina, si sposta in Cronologia di chiamate (capitolo 47).
Cronologia di chiamate
/historyOgni chiamata terminata: chi ha chiamato chi, quando, per quanto tempo e come è terminata. Ordina le colonne, riproduci le registrazioni (una pausa per i numeri di carta è segnata), e scarica l'elenco come CSV. Quanto a lungo vengono conservati i record è impostato in Impostazioni, Registrazione di chiamate; una conservazione legale (capitolo 73) li conserva più a lungo.
Come è stato instradato
Sotto ogni risultato di chiamata, Come è stato instradato elenca, in parole semplici e in ordine, cosa ha deciso dove è andata la chiamata: la rotta in entrata che l'ha presa, se un calendario era aperto o chiuso e l'orario, un lato di un interruttore, cosa ha scelto uno script di routing (o che il suo fallback ha preso la chiamata), le chiavi premute in un menu, chi era assente, chi non aveva un telefono connesso, chi non ha risposto, la rotta in uscita e i tronchi utilizzati (e un tronco che il giudice di salute ha spostato dietro gli altri), il giudizio del guardiano contro le frodi sulle tariffe, e, per una chiamata registrata le cui parti sono soggette a regole di consenso diverse, quale regola si è applicata.
Qualità, suono e crittografia
La colonna Qualità mostra il punteggio di ogni chiamata risposta (MOS, su 5) e due segni quando si applicano:
- Nessun suono da un lato: la chiamata si è connessa ma nulla è mai arrivato da quel telefono o fornitore (le chiamate più corte di 5 secondi, i fax, le chiamate in attesa e la paginazione sono esclusi). Vedi Qualità della chiamata (capitolo 53) per vedere cosa controllare.
- Non crittografato: BitVoice ha richiesto la crittografia (SRTP) e quel lato ha risposto senza di essa. Crittografato significa che il suono era crittografato con ogni lato che ha inviato qualcosa. Per rifiutare le chiamate non crittografate da un fornitore invece, attiva Richiedi crittografia sul suo trunk.
Trascrizioni e ricerca
Con l'AI attivata e Trascrivi chiamate registrate attivato (Impostazioni, AI), ogni chiamata registrata viene scritta, con un breve riassunto e gli elementi di azione: cosa qualcuno ha concordato o è stato chiesto di fare. Ogni lato della chiamata viene scritto separatamente dalla registrazione, in modo che la trascrizione mostri chi ha detto cosa e quando. Il pulsante di trascrizione accanto a una registrazione la apre; gli amministratori possono anche trascrivere una singola chiamata o trascriverne una di nuovo.
Cerca cosa è stato detto trova le chiamate per parole dalle loro trascrizioni, riassunti ed elementi di azione. Solo le chiamate registrate vengono trascritte. Una trascrizione viene eliminata con la sua registrazione e la lettura o la ricerca delle trascrizioni viene annotata nel registro di controllo, come la riproduzione di una registrazione.
Cronologia del cliente
/timelineLa cronologia del cliente mostra tutto con un numero di telefono nell'ultimo anno, più recente per primo, in modo che chiunque risponda conosca tutta la storia.
Cosa mostra
| Elemento | Con |
|---|---|
| Chiamate | chi le ha gestite, la durata e con una trascrizione, il riassunto, la registrazione e la trascrizione |
| Messaggi vocali | i loro riassunti |
| Testi | in entrambe le direzioni |
| Richieste di callback | richieste e se eseguite |
| Note | le note del team |
Un numero corrisponde indipendentemente da come è scritto: +1 212 555 0100 e 2125550100 sono lo stesso.
Apertura
Dalla scheda del chiamante (Cronologia), da Contatti, da una chiamata in entrata nella cronologia delle chiamate, da una conversazione di testo, o digitando un numero in alto nella Cronologia (capitolo 48).
Note
Gli amministratori possono Aggiungere una nota per il team: viene visualizzata sulla timeline per tutti, con chi l'ha scritta e quando, e può essere rimossa.
CRM: schede dei chiamanti e registrazione delle chiamate
/settingsCollegare un sistema del cliente in Impostazioni (capitolo 14), CRM. Funziona con qualsiasi sistema che abbia un indirizzo web, senza codice scritto per ogni prodotto.
Schede dei chiamanti
Mentre una chiamata da esterno suona, Chiamate in corso mostra una scheda: chi è (dal suo CRM o dal nome dell'estensione), quante volte ha chiamato negli ultimi 90 giorni, eventuali richiamate (capitolo 30) in attesa e il riassunto dell'ultima chiamata trascritta. Il telefono del browser mostra una scheda più breve alla persona che risponde: chi è, chiamate precedenti e richiamate in attesa, ma non i riassunti delle chiamate degli altri.
Per il nome, impostare Indirizzo di ricerca: BitVoice chiede (GET) con il numero del chiamante al posto di {number}, inviando Intestazione di ricerca con il suo valore (un riferimento a un vault funziona), e si aspetta JSON con nome, azienda, url e note; 404 significa sconosciuto. Le risposte vengono conservate per cinque minuti. Apri nel link CRM mette un link al chiamante sulla scheda. Utilizzare Cerca per provare un numero prima di salvarlo.
La risposta propria di un CRM
La maggior parte dei CRM risponde a una ricerca con la propria forma, solitamente un elenco di corrispondenze, non {"name": ...} di BitVoice. Aprire Campi di risposta e indicare dove si trova ogni parte, come un percorso puntato: un nome entra in un oggetto e un numero in un elenco, quindi list.0.name è il nome della prima corrispondenza. Collegamento al contatto può essere un percorso a un collegamento fornito dal CRM o un indirizzo web con percorsi tra parentesi graffe, come https://crm.example.com/#Contact/view/{list.0.id}. Un campo vuoto legge il nome proprio di BitVoice per esso. Una ricerca che non trova nessuno è la stessa di 404: la scheda dice che il chiamante non è noto. Provare un numero con Cerca prima di salvare.
Ad esempio, EspoCRM (testato contro un vero EspoCRM): creare un utente API (Amministrazione, utenti API, autenticazione tramite chiave API) con un ruolo che possa leggere contatti e account, quindi impostare:
- Indirizzo di ricerca:
https://crm.example.com/api/v1/Contact?select=name,accountName,description&maxSize=1&where%5B0%5D%5Btype%5D=equals&where%5B0%5D%5Battribute%5D=phoneNumber&where%5B0%5D%5Bvalue%5D={number} - Intestazione di ricerca
X-Api-Key, il suo valore è la chiave dell'utente API - Campi di risposta: nome
list.0.name, aziendalist.0.accountName, notelist.0.description, collegamentohttps://crm.example.com/#Contact/view/{list.0.id}
EspoCRM conserva i numeri in forma internazionale (+15405550117), come BitVoice li passa. Altri CRM funzionano allo stesso modo con il loro proprio indirizzo di ricerca e nomi di campo; controllare la forma della loro risposta nella documentazione API o con Cerca, il cui messaggio nomina cosa ha trovato.
Registrazione delle chiamate
Impostare Indirizzo del registro delle chiamate e Segreto di firma, e ogni chiamata viene inviata lì quando termina (evento call.ended), di nuovo con il suo riepilogo, azioni e trascrizione una volta trascritta (call.summarized), e ogni richiamo prenotato (callback.new). Ogni POST contiene X-BitVoice-Event, X-BitVoice-Timestamp e X-BitVoice-Signature: sha256= seguito dall'HMAC-SHA256, con il segreto, del timestamp, un punto e il corpo. Una consegna fallita viene riprovata quattro volte in circa un minuto; se fallisce ancora, Health lo segnala. Invia un evento di test controlla l'indirizzo e il segreto.
Intuito della chiamata per i supervisori
/qualityPer i centri di contatto: prove di come sono andate le chiamate, per un supervisore che ascolta, mai un punteggio automatico.
Nella Trascrizione di una chiamata, Come è andata mostra, misurata dal suono della registrazione sola: quanto ha parlato ogni lato, lo stretch più lungo di ogni lato, quante volte ogni lato ha iniziato a parlare sopra l'altro, quanto tempo entrambi hanno parlato contemporaneamente e il silenzio (un lungo silenzio è spesso una hold o aria morta).
Con Nota come è andata ogni chiamata trascritta attivata (Impostazioni, AI), l'AI legge anche la trascrizione e dice come il chiamante sembrava all'inizio e alla fine, e elenca fino a sei momenti: È andato bene, Guarda (parlando sopra il chiamante, una lunga hold, una risposta poco chiara), Non risposto (una domanda che il chiamante ha fatto che non ha ricevuto risposta) e Promesso (qualcosa che qualcuno ha detto che avrebbe fatto), ogni momento con l'ora e le parole dette, in modo da poter andare direttamente lì. Un amministratore può chiederlo per qualsiasi chiamata trascritta con Guarda questa chiamata.
Su Qualità della chiamata (capitolo 50), Conversazioni, per chi le ha gestite somma le chiamate trascritte del periodo per persona: la loro quota di conversazione, la loro sequenza più lunga, quante volte hanno parlato sopra il chiamante, tempo di silenzio, chiamate che sono terminate con il chiamante arrabbiato e i momenti contrassegnati. Utilizzarlo per scegliere le chiamate da ascoltare, non per classificare le persone.
Note di coaching sono le tue parole su una chiamata, nel momento in cui sono relative: sotto Come è andata, scrivi il Momento (1:05, o lascialo vuoto per l'inizio) e la Nota di coaching, e premi Aggiungi nota. Le note sono elencate nell'ordine della chiamata con chi le ha scritte e quando; gli amministratori scrivono e rimuovono le note, i visualizzatori le leggono con la trascrizione e l'aggiunta o la rimozione di una nota è annotata nel registro di controllo. Vanno con la registrazione, quindi la sua conservazione e le sue hold legali le coprono anche. Note di coaching su Qualità della chiamata le conta per persona.
Registrazione delle chiamate e pagamenti con carta
La registrazione è impostata in Impostazioni (capitolo 14), Registrazione delle chiamate: disattivata, ogni chiamata o solo le chiamate delle estensioni contrassegnate Registra le chiamate. Le registrazioni si riproducono da Cronologia delle chiamate (capitolo 47), e con AI attivata vengono trascritte e riassunte.
Informare le persone
Alcuni luoghi richiedono che tutti i partecipanti a una chiamata siano informati che la chiamata è registrata: Annuncio, Segnale acustico e regole per regione sono in Consensi alla registrazione (capitolo 52).
Pagamenti con carta (PCI DSS)
I numeri di carta non devono essere conservati nelle registrazioni. Prima che il chiamante legga ad alta voce il numero, la persona sull'estensione preme *7; *8 riprende la registrazione. Pausa registrazione su Chiamate in corso (capitolo 46) fa lo stesso. La parte pausata è silenziosa nella registrazione e viene elencata nella cronologia delle chiamate, in modo che un revisore possa vedere dove e per quanto tempo.
Sale conferenze
Una stanza con Registra la stanza attivato viene conservata come una registrazione dell'intera stanza (Sale conferenze (capitolo 34)).
Durata della conservazione dei dati
Le impostazioni determinano per quanti giorni vengono conservate le registrazioni, la cronologia delle chiamate e la casella vocale; gli elementi più vecchi vengono eliminati entro un'ora. Tutto ciò che è soggetto a un blocco legale (capitolo 73) viene conservato indipendentemente dalla sua età. L'archiviazione (capitolo 72) può conservare copie altrove.
Gli amministratori e gli utenti possono riprodurre le registrazioni e leggere le trascrizioni; solo gli amministratori possono trascrivere una chiamata o trascriverla nuovamente. La riproduzione di una registrazione o la lettura della sua trascrizione viene annotata nel registro di controllo.
Consenso alla registrazione
/settingsAlcuni posti consentono di registrare una chiamata quando una persona coinvolta lo sa; altri richiedono che tutti siano informati o che acconsentano. In Impostazioni, Registrazione chiamata, scegli come le persone in una chiamata registrata vengono informate:
- Nessun avviso.
- Annuncio: mentre la chiamata viene risposta, entrambi i lati sentono l'avviso (registralo nello stesso posto, ad esempio "Questa chiamata è registrata per l'addestramento e la qualità") e la registrazione inizia solo dopo che è stato riprodotto. Finché non ne viene registrata una, vengono riprodotti tre beep e Health lo dice.
- Beep: un breve tono per entrambi i lati ogni 15 secondi mentre la chiamata è registrata.
Regole seleziona in base al numero esterno (il chiamante nelle chiamate in ingresso, il numero composto nelle chiamate in uscita), corrispondenza più lunga per prima: ad esempio i numeri che iniziano con 1415 (California) Annuncio, 49 (Germania) Non registrare mai, tutto il resto come sopra. Una regola Nessun avviso registra senza uno; Non registrare mai esclude completamente quelle chiamate dalla registrazione. Le chiamate tra estensioni seguono l'impostazione principale.
Il tuo numero personale conta anch'esso: le regole vengono confrontate con entrambi i numeri esterni e interni (il numero chiamato nelle chiamate in entrata, il tuo ID chiamante nelle chiamate in uscita), e la regola più protettiva vince (Nessuna registrazione prima di Annuncio prima di Segnale prima di Nessun avviso). Quindi, un ufficio in un luogo che richiede il consenso di tutte le parti annuncia chi chiama, ovunque si trovino. Quando le parti rientrano in regole diverse, la registrazione della chiamata in Cronologia chiamate (capitolo 47) indica quale regola si è applicata e perché.
La registrazione può anche essere pausata durante una chiamata con il codice di pausa (pagamenti con carta). Nessuna di queste informazioni costituisce un consiglio legale: verificare le leggi vigenti nel luogo in cui si trovano lei e i suoi interlocutori.
Qualità della chiamata
/qualityCome suonano le chiamate negli ultimi giorno, settimana, mese o 90 giorni, dal suono che BitVoice stesso ha ricevuto su ogni lato di ogni chiamata. I telefoni sono raggruppati per sito (sito (capitolo 12)) (o "nessun sito"), e le chiamate da fuori per la linea del fornitore su cui sono entrate.
Ogni posto mostra le sue chiamate, il suo punteggio medio (MOS, su 5: sopra 4 è buono, sotto 3.6 suona povero), la quota di pacchetti audio che non sono mai arrivati e jitter (ritardo irregolare). Sotto, BitVoice dice cosa non va in parole semplici, ad esempio "Perdita di pacchetti sulla rete dell'ufficio centrale: il 3.2% del suono non è mai arrivato, principalmente tra le 14:00 e le 16:00", con cosa controllare. Il grafico a barre mostra il suono perso per ora del giorno.
La diagnosi confronta le due metà delle stesse chiamate: il suono dalle telefonate del sito e il suono dal fornitore che le stesse chiamate hanno attraversato. Quando l'altra metà è arrivata pulita, la perdita è sul lato di questo posto e lo dice; quando entrambe le metà hanno perso suono, il posto non è il solo responsabile e indica cosa le chiamate condividono, il collegamento internet di questo sistema. Se ogni posto perde suono contemporaneamente, la causa è allo stesso modo ciò che condividono. Come è stato lavorato elenca i motivi, passo dopo passo (il libro delle regole della qualità delle chiamate, vedi Sicurezza (capitolo 60), "Come BitVoice decide"). I posti con meno di tre chiamate non vengono giudicati. La qualità per chiamata è anche in Cronologia chiamate (capitolo 47) (la colonna Qualità) e, mentre le chiamate sono attive, su Chiamate attive (capitolo 46).
Una chiamata che si è connessa ma non ha ricevuto nessun suono da un lato è conteggiata a parte, sotto con nessun suono, e messa per prima: non è suono povero ma suono che non è mai arrivato, quasi sempre un firewall o un router NAT che lascia passare il SIP e tiene fuori i media.
Costi e budget
/costsBitVoice prezza ogni chiamata in base a quanto addebita il fornitore, e mostra la spesa del mese per reparto, persona e trunk, con le chiamate più costose.
Prezzi
Su Tronchi (capitolo 7), aprire un trunk e i suoi Prezzi chiamate. Ogni prezzo copre i numeri che iniziano con alcuni cifre, come il numero viene inviato al fornitore (solo cifre, quindi 44 per il Regno Unito, 1900 per le tariffe premium statunitensi); la corrispondenza più lunga vince, e un prezzo senza cifre copre ogni altro numero. Indicare il prezzo per minuto, eventuali addebiti per chiamata risposta, il passo di fatturazione (60 secondi per i minuti interi, 6 o 1 per una fatturazione più fine) ed eventuali importi minimi. Chiamate in entrata, per minuto è per i numeri a tariffa gratuita che si pagano per ricevere. Quanto costerebbe controlla un numero prima che qualcuno lo composi. La valuta è impostata su Costi.
Il costo di una chiamata è fisso quando termina, con i prezzi del momento; cambiare un prezzo non cambia le chiamate passate. Costi indica quante chiamate in uscita risposte non avevano prezzo.
Reparti e budget
Assegnare un Reparto alle estensioni (nella estensione). Su Costi, aggiungere un budget per ogni chiamata o per un reparto: un avviso appare in BitVoice e viene inviato all'indirizzo del budget e all'indirizzo di avviso, all'80% e nuovamente al 100% del mese.
L'allarme
Le chiamate in uscita costano più di questo in un'ora attiva un allarme quando le chiamate in uscita superano quell'importo all'interno di un'ora qualsiasi. Una serie improvvisa di chiamate costose è il solito segno di frode tariffaria (una password del telefono rubata): controllare la Cronologia chiamate, quindi disabilitare l'estensione o il trunk.
Reputazione dell'ID del chiamante e chiamate con marchio
/reputationLe società telefoniche eseguono filtri antispam che possono etichettare un numero aziendale come "Probabile spam", o bloccarlo, e allora quasi nessuno risponde. Reputazione dell'ID del chiamante controlla ogni numero da cui si chiama, dalle proprie chiamate, e dice in parole piane come sta andando:
- Risposto: la quota di chiamate risposte, e cosa era il periodo precedente. Una caduta della metà, o al di sotto del 20%, è il segno usuale di una nuova etichetta.
- Riagganciato subito: chiamate risposte che sono terminate entro 10 secondi.
- Rifiutato come spam: chiamate che un filtro del carrier ha rifiutato (SIP 608) o che la persona ha segnalato come indesiderata (607). Un solo 608 significa che il numero è etichettato.
- Uso intensivo: più di circa 150 chiamate al giorno da un numero è ciò che fanno i robocallers, e i filtri se ne accorgono.
I numeri con meno di 20 chiamate vengono mostrati come troppo pochi per poter giudicare.
I tuoi numeri di uscita assegna a ogni numero un nome (inviato come nome del chiamante), un motivo per la chiamata e un logo (un'immagine https://). Su un trunk con Invia ID chiamante marchiato attivato, il logo e il motivo vengono inviati come dati di chiamata ricchi (RFC 9796 Call-Info); i carrier che supportano le chiamate marchiate li visualizzano sul telefono chiamato. La maggior parte dei telefoni visualizza il nome dal database del nome del chiamante (CNAM), che il tuo provider imposta: chiedi loro. Watch mette un avviso sulla salute quando un numero monitorato inizia a sembrare etichettato.
La pagina dice anche cosa fare quando un numero è etichettato.
Protezione anti-spam e STIR/SHAKEN
/settingsNegli Stati Uniti e in Canada, il fornitore con cui inizia una chiamata firma il suo ID chiamante (STIR/SHAKEN): A quando conosce il chiamante che potrebbe utilizzare il numero, B quando conosce il chiamante ma non il numero, C quando ha solo passato la chiamata. Il tuo fornitore o dice a BitVoice il suo verdetto (verstat) o passa l'intestazione Identity firmata, che BitVoice controlla poi: la firma, che è meno di un minuto vecchia e che nomina i numeri di questa chiamata. Il verdetto appare come Verificato, Parzialmente verificato, Non verificato o Non verificato su Chiamate in corso e nella Cronologia delle chiamate.
In Impostazioni, Protezione anti-spam, scegli cosa succede quando un ID chiamante non supera la verifica (squilla, squilla con etichetta o rifiuta), quando non è verificato affatto e quando il numero è trattenuto. Una chiamata con etichetta squilla con Spam? (o la tua etichetta personalizzata) prima del nome del chiamante. I numeri bloccati vengono rifiutati; un elemento che termina con * blocca un intervallo (+1900* è ogni numero statunitense a tariffa premium). I numeri sempre consentiti non vengono mai rifiutati o etichettati. Nella Cronologia delle chiamate, il pulsante di blocco accanto a un chiamante li aggiunge all'elenco; le chiamate rifiutate vengono elencate come Bloccato.
Entro un'ora da una chiamata di emergenza da qualsiasi estensione, nessuna chiamata viene rifiutata (quelle bloccate squillano etichettate invece), nel caso in cui sia il servizio di emergenza a richiamare. Una chiamata 911 (dall'ESInet o da un tronco CAMA) non viene mai rifiutata o ritardata dalla selezione.
Chiamanti che BitVoice non conosce
Un chiamante è noto quando il numero è sempre consentito, nei contatti (capitolo 38), è stato chiamato da qui nell'ultimo anno o ha superato il test del robot negli ultimi 90 giorni. I numeri vengono abbinati comunque siano scritti (con o senza il codice del paese, 1, 0 o +). Sotto Chiamanti che BitVoice non conosce, scegliere cosa succede a tutti gli altri:
| Scelta | Cosa ottiene il chiamante |
|---|---|
| Squilla come al solito | la chiamata squilla come qualsiasi altra (predefinito) |
| Test del robot prima | BitVoice risponde e dice "Per essere connesso, premi" e un numero, che cambia ogni chiamata. La chiave giusta lo mette in contatto con dove stava andando la chiamata; qualsiasi altra cosa o nulla (due volte) e vanno a I chiamanti che falliscono il test vanno a, o sentono addio. I robocallers non premerebbero il tasto |
| Invia da un'altra parte | nulla squilla: vanno direttamente al posto scelto, una casella vocale ad esempio |
Il test del robot necessita delle parole: in Suoni (capitolo 20), registra o crea (con un servizio di sintesi vocale) i messaggi di screening e i numeri da 1 a 9 nella lingua dei chiamanti. Fino a quando non vengono registrati, le chiamate suonano come al solito (un chiamante non può superare un test che non può sentire) e Health lo segnala. Un chiamante che supera il test viene considerato noto per 90 giorni. Il test risponde alla chiamata, quindi il fornitore del chiamante inizia a addebitargli le tariffe da quel momento, come per qualsiasi chiamata risposta. La cronologia delle chiamate mostra il risultato di ogni chiamata (superato, fallito, inviato) e il percorso dei motivi spiega cosa è successo.
Un database di spam
BitVoice può chiedere a un servizio di reputazione informazioni su ogni chiamante sconosciuto prima che la chiamata suoni. Utilizza Nomorobo tramite Twilio compila Twilio Lookup con il punteggio di spam di Nomorobo (installa l'addon di Nomorobo nel tuo account Twilio, quindi inserisci l'ID dell'account SID e il token di autenticazione); qualsiasi altro servizio che risponde in JSON funziona anche: fornisci il suo indirizzo con {e164} (+12125550142) o {number} (come inviato dal fornitore), dove si trova il suo verdetto (Campo del verdetto, un percorso con punti), e quando significa spam (un punteggio pari o superiore a Spam al punteggio, true, o il testo in O spam quando il testo è, ad esempio BLOCK). Scegli cosa succede a un chiamante che viene considerato spam: suona etichettato, il test del robot o rifiutato.
- Questi servizi addebitano per ogni ricerca. I chiamanti noti non vengono mai cercati e ogni risposta viene mantenuta per un giorno (Mantieni le risposte).
- Un servizio lento o rotto non blocca mai una chiamata: dopo Aspetta al massimo (1,5 secondi a meno che non lo modifichi) la chiamata suona come se la risposta fosse "non spam".
- Test chiede il suo parere su un numero adesso (e viene addebitato come qualsiasi ricerca).
Blocca l'ultimo chiamante
Subito dopo una chiamata indesiderata, digita *32 (Codici di funzione (capitolo 32)) dal telefono che ha suonato: l'ultimo numero esterno che ha suonato quell'estensione nell'ultimo giorno va nella lista dei blocchi e il telefono legge il numero. Un numero sempre consentito non viene bloccato e il telefono lo segnala. Ognuno è registrato nel registro di controllo, con chi lo ha bloccato.
Suggerito dalle tue chiamate
BitVoice legge gli ultimi 30 giorni di chiamate da esterni per i numeri che chiamano di nuovo e vengono eliminati subito: tre chiamate o più, quasi tutte terminate entro 10 secondi, o due test del robot falliti e mai una conversazione reale (qualcuno che parla per 30 secondi o più). I numeri noti vengono esclusi. Ognuno viene con un motivo; Blocca lo mette nella lista dei blocchi e Non spam significa che non verrà più suggerito. Nulla viene bloccato fino a quando una persona non lo conferma.
Per verificare i certificati contro le autorità STI, incolla i loro certificati sotto Autorità di certificazione STI; senza di essi, BitVoice verifica che la chiamata sia stata firmata con il certificato che nomina ma non chi ha rilasciato quel certificato.
Firma delle tue chiamate
La maggior parte dei fornitori firma le chiamate dei propri clienti da soli. Se il tuo fornitore ti consente di firmare (o sei un fornitore che esegue BitVoice), attiva Firma ID chiamante sul trunk (Tronchi (capitolo 7)) e forniscilo con il tuo Certificato STI (da un'autorità di certificazione STI, con il token del codice del fornitore di servizi) e la sua chiave privata (P-256). Ogni chiamata in uscita attraverso il trunk porta quindi un'intestazione Identity firmata (ES256, come richiede SHAKEN).
- Indirizzo del certificato (x5u) è dove il lato chiamato recupera il certificato. Lascialo vuoto e BitVoice pubblica il certificato a
/stir/<trunk>.pemsul suo indirizzo pubblico (Impostazioni), che deve quindi essere raggiungibile da Internet tramite HTTPS. - Attestazione: automatico dà A quando un'estensione chiama con uno dei numeri di questo sistema (un numero instradato, o un ID chiamante impostato sul trunk o sull'estensione), B quando un'estensione chiama con qualsiasi altro numero e C per le chiamate passate da fuori (un chiamante inoltrato). Oppure fissalo su A, B o C.
- La cronologia delle chiamate contrassegna ogni chiamata firmata con firmato A, B o C. Una chiamata non viene mai fermata perché non poteva essere firmata; il motivo è nel log.
Esecuzione di BitVoice
Mantenimento e sicurezza: amministratori e accesso, sicurezza, modifiche e aggiornamenti, più server, organizzazioni ospitate, codec, Teams, importazione, automazione e strumenti per la risoluzione dei problemi.
Amministratori
/usersGli amministratori sono le persone che accedono a questo interfaccia web. Il personale che si occupa solo delle proprie chiamate utilizza il portale del personale invece e non necessita di un account qui (Il portale del personale (capitolo 33)).
Ruoli
| Ruolo | Può |
|---|---|
| Amministratore | modificare tutto, riprodurre registrazioni, vedere l'esistenza di ogni campo segreto (mai il suo valore) |
| Osservatore | vedere tutto, modificare nulla; segreti nascosti |
Un cambio di ruolo o di password disconnette la persona ovunque contemporaneamente.
Accesso a due fattori
Ogni persona attiva l'accesso a due fattori per se stesso: Configura mostra una chiave per un'app di autenticazione; l'inserimento del codice che mostra lo attiva. Da allora in poi, l'accesso richiede un codice oltre alla password. La disattivazione richiede la password.
Accesso singolo
Con l'accesso singolo (Impostazioni), le persone accedono con l'account dell'organizzazione (Microsoft Entra, Google, Okta, qualsiasi provider OpenID Connect), e un account viene creato per loro la prima volta. Vedi Accesso singolo (capitolo 58).
Token API
I programmi (Terraform, script) utilizzano token API invece di una password: creati in questa pagina, mostrati una volta e revocati in qualsiasi momento. Ogni token è un amministratore o un osservatore. Un token creato con Denomina la persona per cui agisce (per un CAD) può inviare X-BitVoice-On-Behalf-Of con il nome della persona, e i registri nominano quindi quella persona accanto al token (chiamate 911 (capitolo 77)).
Accesso singolo
L'accesso singolo consente alle persone di accedere a BitVoice con il proprio account di lavoro, attraverso qualsiasi provider OpenID Connect: Microsoft Entra ID, Google, Okta, Keycloak e altri. Lasciare l'organizzazione rimuove anche l'accesso qui.
Configurazione
In Impostazioni (capitolo 14), Single sign-on:
- Registra un'applicazione con il provider, con l'Indirizzo di reindirizzamento mostrato qui.
- Compila per un provider imposta l'Emitter per quelli comuni; copia l'ID client e il Segreto client dal provider.
- Nome dei Gruppi amministratori e Gruppi viewer del provider. Richiesta di gruppo è dove il provider li inserisce (
groupsa meno che non sia impostato). - Opzionalmente modifica il Testo del pulsante sulla pagina di accesso.
- Attiva Usa single sign-on.
Funzionamento
- L'account qui viene creato al primo accesso; i gruppi impostano il ruolo ad ogni accesso, quindi spostare qualcuno tra i gruppi nel provider cambia il suo ruolo qui.
- Qualcuno che non fa parte di nessun tipo di gruppo viene rifiutato e il rifiuto è registrato nel log di audit.
- Con Consenti anche le password disattivato, le password funzionano solo su questo computer, quindi un guasto del provider non ti blocca mai.
Elenco aziendale (Active Directory e LDAP)
BitVoice può leggere l'elenco aziendale, Active Directory o un altro server LDAP (OpenLDAP, Samba, 389 Directory Server, FreeIPA): le persone con un numero di telefono diventano estensioni, i gruppi dell'elenco riempiono i gruppi di chiamata e le persone accedono all'interfaccia web con la password dell'elenco. BitVoice legge solo l'elenco; non scrive mai su di esso.
Connessione
In Impostazioni (capitolo 14), Elenco aziendale:
- Scegli Active Directory o OpenLDAP o un altro server LDAP: imposta quali attributi vengono letti (sAMAccountName o uid per il nome di accesso, displayName o cn, mail, telephoneNumber). Modifica qualunque di essi nella sua casella.
- Server:
ldaps://dc1.example.com(porta 636), oldap://...con StartTLS attivato. Il LDAP semplice viene rifiutato a meno che il server non sia questo computer, perché le password verrebbero trasmesse sulla rete senza crittografia. Quando il certificato del server proviene dalla tua autorità di certificazione, incolla l'autorità in Autorità di certificazione dell'azienda. - Account di lettura e La sua password: un account autorizzato a leggere le persone e i gruppi (
reader@example.comsu Active Directory). La password può essere un riferimento a un vault di chiavi (Impostazioni, Vault di chiavi). - DN di base: dove si trovano le persone e i gruppi (
dc=example,dc=com). Quale persone li restringe con un filtro LDAP; su Active Directory, gli account disabilitati vengono sempre esclusi. - Test si accede con l'account di lettura e legge tutti, senza apportare modifiche: mostra quanti persone ha trovato, quante hanno un numero e l'estensione che ogni persona otterrebbe.
Estensioni e gruppi di chiamata
- Con Crea e aggiorna estensioni attivato, ogni persona con un numero ottiene un'estensione: gli ultimi Cifre mantenute (4 di
+1 212 555 0123è 0123; 0 mantiene tutte le cifre, che devono essere allora 2-8). Le nuove estensioni ottengono una password SIP e una casella vocale con un PIN casuale; il nome e l'indirizzo e-mail della persona provengono dall'elenco. - L'elenco possiede un'estensione che ha creato: il suo numero, nome ed e-mail seguono l'elenco ad ogni sincronizzazione. Tutto il resto (dispositivi, inoltro, impostazioni della casella vocale) è tuo.
- Un'estensione che hai creato manualmente non viene mai presa in carico, a meno che non abbia il nome o l'indirizzo e-mail di quella persona. Due persone con lo stesso numero, un numero che un'altra estensione già ha, o un numero di lunghezza errata viene elencato in Da esaminare e nulla viene modificato per loro.
- Con Disattiva le estensioni delle persone che se ne sono andate attivato, un'estensione creata dall'elenco viene disattivata quando la persona se ne va, viene disabilitata o perde il suo numero e torna attiva quando ritorna.
- Gruppi di chiamata riempiti con gruppi dell'elenco: ogni riga inserisce le estensioni dei membri di un gruppo in un gruppo di chiamata (su Active Directory i gruppi annidati contano). Un gruppo con nessuno che abbia un'estensione lascia il gruppo di chiamata com'era.
- L'elenco viene letto ogni Leggi ogni minuti (60 per impostazione predefinita) e subito con Sincronizza ora. Ogni sincronizzazione che modifica qualcosa è una revisione (capitolo 61) denominata "Sincronizzazione dell'elenco aziendale", quindi può essere annullata; la relazione dell'ultima sincronizzazione viene visualizzata sotto il pulsante.
Accesso
Con Le persone accedono qui con il nome e la password dell'elenco attivato, la pagina di accesso accetta i nomi e le password dell'elenco oltre ai propri account di BitVoice:
- I membri dei Gruppi amministratori accedono come amministratori, dei Gruppi viewer come viewer (senza gruppi viewer, chiunque altro nell'elenco). I gruppi sono nominati dal loro nome (cn) o DN; su Active Directory i gruppi annidati contano. Qualcuno che non fa parte di nessun gruppo del genere viene rifiutato.
- L'account qui viene creato al primo accesso e il suo ruolo segue i gruppi ad ogni accesso. Non prende mai il controllo di un account di BitVoice con lo stesso nome.
- Una password vuota viene sempre rifiutata (LDAP la considererebbe altrimenti come un accesso anonimo), un account disabilitato non può accedere e i nomi vengono escapati prima di raggiungere l'elenco.
- L'accesso a due fattori può essere aggiunto a questi account come a qualsiasi altro.
Sicurezza
/securityUn sistema telefonico su internet viene attaccato entro poche ore: i scanner provano le password su ogni porta SIP e un sistema violato esegue chiamate a numeri premium. BitVoice è progettato per resistere a ciò per impostazione predefinita, in strati.
Contro le ipotesi di password
- Gli indirizzi che continuano a non riuscire a effettuare l'accesso vengono bloccati per un po' di tempo (Impostazioni, Protezione): per impostazione predefinita, dieci tentativi in un minuto bloccano l'indirizzo per un'ora. Gli indirizzi bloccati sono elencati in Sicurezza (capitolo 60) e possono essere sbloccati.
- Le reti attendibili non vengono mai bloccate: la rete dell'ufficio.
- Le password SIP vengono generate, di almeno 12 caratteri, una per estensione. Un telefono che si registra come un'estensione non può mai registrarsi come un'altra.
- Uno scanner che viene bloccato non riceve alcuna risposta, quindi non apprende nulla.
Contro le frodi
- Le estensioni possono chiamare numeri esterni solo quando autorizzate.
- I numeri a tariffa premium vengono rifiutati a meno che una rotta non li nomini.
- La guardia antifrode (di seguito) valuta ogni chiamata fuori dal paese prima che venga effettuata.
- Costi (capitolo 54) avvisa sui budget e sulle spese fuori controllo: molte chiamate a un paese in un'ora.
- Ogni estensione può avere al massimo quattro chiamate contemporanee (Impostazioni, Protezione).
La guardia antifrode
Attivala in Impostazioni, Guardia antifrode. Ogni chiamata fuori dal paese (tramite +, 00 o 011, e i luoghi che condividono +1 con il Nord America ma sono altri paesi, come la Giamaica, una classica destinazione di frode) viene quindi valutata prima di essere effettuata:
| Situazione | Cosa fa |
|---|---|
| Una chiamata all'estero verso un paese che questa estensione ha chiamato negli ultimi 90 giorni | la lascia passare |
| Una prima chiamata a quel paese in 90 giorni | la lascia passare e la segnala |
| Una prima chiamata lì fuori dall'orario lavorativo, o effettuata da fuori (un accesso, un reindirizzamento) | chiede il PIN richiesto (con nessuno scelto, la rifiuta) |
| Più di Chiamate all'estero in 10 minuti da un'estensione | la rifiuta |
| Una prima chiamata all'estero mentre qualcuno sta indovinando le password (tre errori di fila da un indirizzo, o un blocco, nell'ultima ora) | la rifiuta |
| Un numero di emergenza | la lascia sempre passare |
I paesi sempre consentiti (codici di chiamata, come 44) e le eccezioni (un'estensione esentata fino a un giorno, per un viaggio) eliminano la "prima chiamata" e "fuori orario"; non scusano mai molte chiamate in un breve periodo o un attacco, perché una password rubata sembra approvata anche. Se la cronologia delle chiamate non può essere letta, la guardia non sa se una chiamata è la prima e qualcosa che non è misurato non è mai considerato sicuro: chiede il PIN. Ogni valutazione è elencata in Sicurezza (capitolo 60) con le sue ragioni e si trova nel record della chiamata in Cronologia chiamate (capitolo 47).
Come decide BitVoice
I giudici di BitVoice (la guardia antifrode, il giudice di salute del trunk, la diagnosi della qualità della chiamata e il controllo della posizione del chiamante 911) seguono ciascuno un libro di regole: fatti che vengono misurati, conclusioni che supportano, le eccezioni che annullano una conclusione e le scelte. Come decide BitVoice, in Sicurezza (capitolo 60), mostra ogni libro di regole. Le regole che i giudici mantengono:
- Ogni risposta viene con le sue ragioni: cosa ha retto, cosa è stato argomentato contro di essa e cosa l'ha annullato.
- Qualcosa che nessuno ha misurato è sconosciuto, mai "no". Quando qualcosa di sconosciuto potrebbe cambiare la risposta, il giudice prende la sua scelta cauta e dice cosa non è riuscito a misurare.
- "Non determinabile" è una risposta: quando le regole lasciano una situazione indecisa, il giudice prende la sua scelta cauta e dice così.
- Ogni libro di regole viene verificato in ogni combinazione dei suoi fatti prima di essere utilizzato (quando BitVoice si avvia e con i suoi test): mai due scelte contemporaneamente e ogni regola raggiungibile. Lo schermo mostra quanti situazioni sono state verificate per ciascuno.
Crittografia
- TLS crittografa il segnale (porta 5061), quindi le password e i numeri non sono leggibili nella rete.
- SRTP crittografa il suono delle chiamate; il telefono del browser e le app lo utilizzano sempre.
- L'interfaccia web ha HTTPS sulla porta 8443 con il suo certificato, o uno che si installa.
Chi può fare cosa
- Gli amministratori modificano tutto; gli spettatori vedono tutto ma non modificano nulla; lo staff utilizza il portale solo per le proprie chiamate.
- Attiva l'accesso a due fattori per ogni amministratore (Amministratori (capitolo 57)): un codice da un'app di autenticazione.
- Single sign-on (capitolo 58) accede alle persone attraverso il tuo fornitore di identità.
- Il registro di controllo registra ogni azione amministrativa e chi l'ha eseguita, e non può essere modificato.
Modifiche, backup e importazione
/changesOgni modifica salvata è una revisione: numerata, con chi l'ha effettuata, quando e un riassunto di una riga. Niente nella configurazione è mai perso.
Confronto e ripristino
- Cosa è cambiato mostra la differenza tra una revisione e quella precedente, campo per campo.
- Ripristina mostra cosa cambierebbe il ripristino e chiede conferma. Il ripristino è esso stesso una nuova revisione, quindi può essere annullato anche lui.
Esportazione e importazione
- Esporta scarica l'intera configurazione come un unico file (i segreti vengono omessi a meno che non vengano richiesti).
- Importa mostra in anteprima le modifiche di un file prima di applicarle.
- Importa (capitolo 68) legge anche le configurazioni di FreePBX e Asterisk, le liste utente di 3CX e le esportazioni CSV di Cisco Unified CM, Avaya e Mitel.
- Archivia (capitolo 72) copia i backup, le registrazioni e la casella vocale su Amazon S3 o Azure.
Modifiche apportate contemporaneamente
Due amministratori che modificano la stessa cosa contemporaneamente non possono sovrascrivere l'uno le modifiche dell'altro: il secondo salvataggio viene rifiutato con un messaggio di ricarica e nulla va perso.
Aggiornamenti
/updatesAggiornare BitVoice è un clic, e sicuro: controlla la nuova versione, la installa accanto alla vecchia e torna indietro da solo se la nuova non rimane attiva.
Installazione di un aggiornamento
- Scaricare la nuova versione e decomprimerla. Accanto al programma c'è la sua firma da BioDream:
bitvoice.sig, obitvoice.exe.sigsu Windows. - In Aggiornamenti (capitolo 62), caricare il programma e il file
.sig. - Premere Installa. Per impostazione predefinita, BitVoice attende fino a quando non ci sono più chiamate in corso; è anche possibile installare subito.
- BitVoice si riavvia con la nuova versione. Con più server, le chiamate in corso vengono passate a un altro server e continuano.
Tornare indietro
La versione che si è lasciata viene mantenuta: Torna indietro torna a essa in un clic. Una nuova versione che non si avvia due volte, o non rimane attiva per un minuto, viene sostituita dalla versione precedente automaticamente.
Firme
Ogni versione a partire dalla 0.1.3 porta la chiave di rilascio di BioDream. Una tale build installa solo programmi firmati con quella chiave: un file non firmato, uno firmato da qualcun altro o uno modificato di un solo byte viene rifiutato con la firma non corrisponde. La pagina dice se questa build controlla (Obbligatorio) o no.
| Eseguite | Aggiornamenti accetta |
|---|---|
| una versione, v0.1.3 o successiva | solo programmi firmati da BioDream |
| v0.1.2 o precedente, o una build personale | qualsiasi programma: senza chiave, un file .sig non può essere verificato e viene ignorato |
Più server come un unico sistema telefonico
/serversDue o più server BitVoice che condividono un database PostgreSQL funzionano come un unico sistema telefonico:
- Una chiamata raggiunge un telefono indipendentemente dal server con cui è registrato: gruppi di chiamata, code, trasferimenti a un'estensione e chiamate da linee provider suonano i telefoni su ogni server.
- Impostazioni modificate su un server si applicano su tutti entro cinque secondi; utenti, contatti, cronologia delle chiamate, trascrizioni delle registrazioni e testi sono condivisi.
- Lampade occupate (BLF) mostrano i telefoni su ogni server che suonano e sono occupati; parcheggi sono condivisi, quindi una chiamata parcheggiata su un server può essere ritirata da un telefono su un altro; pagine raggiungono i telefoni su ogni server; testi raggiungono i telefoni da scrivania ovunque siano registrati.
- Un agente di coda in una chiamata su un server conta come occupato sugli altri, e il limite di canale di una linea provider conta le chiamate su ogni server.
- Chiamate in corso su ogni server elenca anche le chiamate sugli altri (solo lettura: riaggancia o ascolta sulla server che ha la chiamata).
- Il record della chiamata viene scritto una volta, dal server che ha il chiamante, e una chiamata viene registrata lì anche.
Configurazione
- Spostare i dati del primo server nel database PostgreSQL: Impostazioni, Database.
- Avviare ogni altro server con lo stesso database:
bitvoice -database postgres://…(o la variabile d'ambiente BITVOICE_DATABASE). Si unisce immediatamente; Server lo elenca. - Su Server, controllare dove ogni server è raggiungibile (il suo indirizzo e la porta SIP sulla rete che i server condividono) e assegnare un nome a ciascuno. I server che sono raggiungibili da internet con un indirizzo proprio (server cloud con indirizzi IP pubblici, senza indirizzo condiviso) ottengono anche Il proprio indirizzo pubblico: i provider e i telefoni esterni vengono informati di quello, in modo che quando un server prende il controllo di una chiamata, il suono del provider la segue. Se lasciato vuoto, un server utilizza l'indirizzo pubblico nelle Impostazioni.
- Informare i telefoni su come trovare i server (di seguito).
- Linee provider (di seguito).
Come i telefoni trovano i server. I telefoni configurati da BitVoice (Yealink, Polycom, Grandstream) vengono assegnati un altro server in esecuzione come backup da soli. Per gli altri, Snom e telefoni configurati manualmente, utilizzare uno dei seguenti su Server:
- Un nome DNS per ogni server: un nome come pbx.example.com con record SRV (_sip._udp, _sip._tcp, _sips._tcp) che elencano ogni server. I telefoni configurati da BitVoice vengono assegnati il nome e Server controlla i record contro i server in esecuzione, elenca ciò che manca e fornisce i record da creare, pronti per essere copiati.
- Un indirizzo condiviso: un indirizzo non utilizzato sulla rete dei server, come 192.168.1.50/24. Un server in esecuzione lo mantiene alla volta e informa la rete immediatamente (gratuitous ARP); se si ferma, il prossimo server prende l'indirizzo entro pochi secondi, continua le sue chiamate e risponde ai suoi telefoni allo stesso indirizzo, senza che debbano registrarsi di nuovo. Richiede Linux e i permessi NET_ADMIN e NET_RAW (in un contenitore:
--cap-add NET_ADMIN --cap-add NET_RAW), e i server sulla stessa rete. Riavviare ogni server dopo averlo impostato.
Linee provider. In ogni trunk, Condiviso tra server indica come:
- Ogni server lo utilizza: ogni server si registra e effettua le proprie chiamate. Per i provider che consentono più registrazioni su un account, o nessuna.
- Un server alla volta: un server si registra e gestisce la linea; gli altri la mostrano come In attesa, mantenuta da quel server e inviano le loro chiamate attraverso di esso. Se si ferma, il prossimo server si registra entro pochi secondi. Per i provider che consentono una registrazione per account.
Quando un server si ferma
- Le chiamate continuano. Ogni server mantiene una nota delle sue chiamate nel database; quando uno si ferma, un server in esecuzione prende in carico ogni chiamata entro pochi secondi, sposta il suono su di sé e informa entrambe le estremità (un re-INVITE). C'è una pausa di pochi secondi nel suono. Una fermata pianificata (un aggiornamento, un riavvio) passa le chiamate immediatamente, senza pausa.
- Una chiamata il cui telefono è registrato con il server che prende il controllo viene continuata lì senza disturbare quel telefono: solo l'altra parte viene spostata.
- I suoi telefoni continuano attraverso il loro server di backup, il nome DNS o l'indirizzo condiviso.
- Un server che si riavvia (un aggiornamento, un riavvio) mantiene comunque la conoscenza di dove sono registrati i suoi telefoni: li mantiene nella sua cartella dei dati (
registrations.json), in modo che le chiamate li raggiungano prima che si registrino di nuovo. - Health e Server lo mostrano come fermato; quando si riavvia, non riprende nulla dal server che ha preso il controllo.
Tra server. I server si raggiungono a vicenda sulla porta SIP tramite TCP o TLS quando hanno un certificato (ognuno accetta solo il certificato pubblicato dall'altro e il suono tra di loro è quindi crittografato con SRTP), e inviano il suono alle porte multimediali dell'altro (UDP, l'intervallo in Impostazioni). Le chiamate tra server sono firmate con un segreto condiviso nel database e vengono accettate solo da un membro in esecuzione al proprio indirizzo. Un firewall tra di loro deve lasciare aperte quelle porte.
Provalo prima: il laboratorio. BitVoice viene con un laboratorio che esegue due server, il loro database e telefoni di test su un computer con Docker, ognuno su un indirizzo proprio: deploy/lab/run.sh up costruisce e avvia e imposta l'indirizzo condiviso; run.sh call chiama tra telefoni su server diversi; run.sh failover uccide il server che trasporta una chiamata attraverso l'indirizzo condiviso e controlla che la chiamata continui (il suono torna in circa cinque secondi); run.sh impaired chiama da un telefono su un collegamento difettoso (ritardo, jitter e perdita del 5%) e controlla la qualità della chiamata segnalata da BitVoice; run.sh down lo rimuove. Le pagine dei server sono su https://127.0.0.1:18501 e :18502 (utente admin).
Dove vengono conservati i dati (SQLite o PostgreSQL)
/settingsBitVoice conserva le impostazioni e le loro versioni salvate, gli utenti, i contatti, i registri delle chiamate, il registro di controllo, i testi, le note e le trascrizioni in un database. Le registrazioni e la casella vocale rimangono come file audio nella cartella dei dati.
File proprio di questo server (SQLite, predefinito): un singolo file, bitvoice.db nella cartella dei dati, senza nulla da installare. Eseguire il backup della cartella dei dati e si avrà tutto.
PostgreSQL: per più server BitVoice che condividono un set di dati, o per report in strumenti come Power BI, Grafana o Metabase. In Impostazioni, Database, Sposta i dati in PostgreSQL: creare un database vuoto e un utente che lo possiede, immettere il suo indirizzo (postgres://utente:password@host:5432/database), premere Test, poi Copia i dati e riavvia su PostgreSQL. Tutto viene copiato in un'unica operazione (tutto o nulla) e BitVoice si riavvia su di esso; il vecchio file rimane dove si trovava. Spostare nuovamente nel file proprio del server funziona allo stesso modo. Gli spostamenti vengono rifiutati mentre le chiamate sono in corso.
I server che condividono un database PostgreSQL vedono i cambiamenti nelle impostazioni l'uno dell'altro entro cinque secondi. Ognuno risponde ancora ai propri telefoni e alle proprie chiamate; per far si che un secondo server prenda il controllo dei telefoni di un primo server, i telefoni devono avere entrambi gli indirizzi (o un indirizzo che si sposta).
Il database può anche essere nominato all'avvio di BitVoice, con -database postgres://… o la variabile d'ambiente BITVOICE_DATABASE; viene quindi modificato lì, non in Impostazioni.
Installazioni più vecchie: all'avvio di questa versione, BitVoice copia i suoi vecchi file JSON nel database e li sposta in pre-database nella cartella dei dati.
Ostare altre organizzazioni
/tenantsUn BitVoice può ospitare più organizzazioni. Ognuna di esse è un sistema telefonico a sé stante: le proprie estensioni, numeri, trunk, route, amministratori, segreteria telefonica, registrazioni e cronologia delle chiamate. Nessuna organizzazione può vedere quelle degli altri. Condividono solo la porta SIP, la porta IAX2 e le porte multimediali di questo server.
Quando utilizzarlo
- Un fornitore, o un'azienda di IT, che gestisce sistemi telefonici per molti clienti piccoli su un solo server.
- Un gruppo di uffici o cliniche che desiderano sistemi separati, amministrati separatamente, su hardware condiviso.
- Punti di risposta condivisi che condividono un sistema, ognuno dei quali mantiene i propri operatori e registri.
Il sistema principale è anch'esso un'organizzazione: quella per cui questo server è stato configurato. I suoi amministratori gestiscono gli altri.
Aggiungere un'organizzazione
- Aprire Organizzazioni (capitolo 65) e premere Aggiungi organizzazione.
- Inserire il suo nome e un nome breve (lettere minuscole, cifre e trattini). Il nome breve fa parte del suo indirizzo web,
/t/acme/, e dei nomi di accesso dei suoi telefoni,acme.100. Non può essere modificato in seguito. - Facoltativamente, inserire il suo dominio personale, come
pbx.acme.example, puntato a questo server. I telefoni si registrano a quel dominio, e i suoi amministratori lo aprono in un browser. - Impostare il suo primo amministratore: un nome utente e una password di almeno 12 caratteri, e il suo paese.
- Facoltativamente, impostare limiti.
L'organizzazione inizia immediatamente con un sistema telefonico vuoto, pronto per essere configurato dal suo amministratore come descritto in Guida introduttiva (capitolo 1).
Come le chiamate trovano l'organizzazione giusta
| Una richiesta | va a |
|---|---|
da un telefono che si registra a pbx.acme.example | l'organizzazione con quel dominio |
da un telefono che si accede come acme.100 | Acme, estensione 100 |
| da un fornitore, per un numero | l'organizzazione dalla quale proviene il trunk e dalla quale proviene la route in entrata con quel numero |
| qualsiasi altra cosa | il sistema principale |
Quindi due organizzazioni possono entrambe avere l'estensione 100, e diverse possono condividere un account fornitore con numeri diversi.
Dove si trova i suoi dati
Su SQLite, ogni organizzazione ha la sua cartella sotto tenants/ nella cartella dei dati, con il suo file di database. Su PostgreSQL, ogni organizzazione ha il suo schema nello stesso database (tenant_acme). I backup, gli archivi e le esportazioni sono per organizzazione.
Limiti
| Limite | Cosa succede al raggiungimento |
|---|---|
| Estensioni | aggiungere un'altra estensione viene rifiutato con un messaggio |
| Chiamate contemporanee | le nuove chiamate vengono rifiutate (503) fino a quando una non termina |
| Archiviazione | le nuove registrazioni e la segreteria telefonica non vengono conservate |
| Richieste AI al giorno | le trascrizioni, i riassunti e la receptionist AI si fermano fino a mezzanotte UTC |
0 è senza limite. Le chiamate di emergenza non vengono mai rifiutate: un'organizzazione al limite di chiamate, o sospesa, può comunque chiamare il 911 e ricevere chiamate in risposta.
Aprire un'organizzazione
Apri ti accede alla sua interfaccia web come fornitore, senza un account personale; viene visualizzato nel suo registro di audit come fornitore. I suoi amministratori si accedono al suo indirizzo con i propri account. Ogni organizzazione ha il suo cookie di accesso, quindi essere acceduti a un'organizzazione non significa essere acceduti a un'altra.
Le organizzazioni non vedono mai gli schermi di questo server: aggiornamenti, database, altri server, certificato, traccia SIP (che mostra tutti i messaggi delle organizzazioni), generatore di chiamate o questa lista.
Sospendere e rimuovere
Sospeso interrompe gli accessi e tutte le chiamate tranne quelle di emergenza; nulla viene cancellato. Rimuovi interrompe l'organizzazione e sposta la sua cartella da parte (tenants/.removed-<name>-<time>), in modo che un errore possa essere annullato manualmente.
Codec e suono
Un codec è il modo in cui il suono viene convertito in dati durante una chiamata. I telefoni, i browser e i carrier supportano ciascuno alcuni codec; BitVoice converte tra qualsiasi due dei suoi codec quando due parti differiscono, in modo che tutti possano parlare con tutti. Quando entrambi utilizzano lo stesso codec, il suono passa inalterato.
I codec
| Codec | Suono | Larghezza di banda | Utilizzato da |
|---|---|---|---|
| G.722 | HD (larghezza di banda ampia) | 64 kbit/s | la maggior parte dei telefoni da tavolo: la scelta migliore tra loro |
| G.711 µ-law | telefono | 64 kbit/s | Nord America e Giappone; ogni carrier |
| G.711 A-law | telefono | 64 kbit/s | il resto del mondo |
| Opus | HD, tollera la perdita | 24 kbit/s | browser e app mobili |
| G.729 | telefono, un po' più grezzo | 8 kbit/s | collegamenti sottili, alcuni carrier |
| G.726 (40 kbit/s) | telefono; trasporta i toni del modem meglio delle tariffe G.726 | 40 kbit/s | gateway, alcuni sistemi DECT |
| G.726 (32 kbit/s) | vicino al telefono | 32 kbit/s | basi DECT, gateway più vecchi |
| G.726 (24 kbit/s) | tra 32 e 16 | 24 kbit/s | alcuni sistemi DECT |
| G.726 (16 kbit/s) | grezzo | 16 kbit/s | collegamenti molto sottili |
| AMR-WB (G.722.2) | HD | 6,6 a 23,85 kbit/s | rete mobile HD voice, interconnessioni VoLTE |
| AMR | telefono, mobile | 4,75 a 12,2 kbit/s | reti mobili, alcuni carrier e gateway |
| iLBC | telefono, tollera la perdita | 13,3 o 15,2 kbit/s | vecchi softphone e app |
| Speex | telefono | 15 kbit/s (2,15 a 24,6) | vecchi softphone, collegamenti ad altri sistemi Asterisk |
| GSM | più grezzo | 13 kbit/s | vecchi softphone e gateway |
| G.723.1 | grezzo; convertito solo con ffmpeg | 5,3 o 6,3 kbit/s | vecchi telefoni video e gateway |
| G.722.1 (Siren 7) | larghezza di banda ampia, trasportato inalterato | 24 o 32 kbit/s | telefoni Polycom, telefoni video e conference |
| G.722.1C (Siren 14) | super-larghezza di banda, trasportato inalterato | 24 a 48 kbit/s | telefoni conference, sistemi di sala |
| G.719 | banda completa, trasportato inalterato | 32 a 128 kbit/s | sistemi di sala telepresenza |
| Codec2 | larghezza di banda molto bassa, trasportato inalterato | 0,7 a 3,2 kbit/s | collegamenti radio, gateway radio amateur |
Le impostazioni elencano i codec che i telefoni possono utilizzare, nel miglior ordine; ogni trunk può avere la propria lista. Le porte degli adattatori analogici utilizzano sempre G.711, che è necessario per i fax, i modem e i pannelli di allarme.
G.722.1, G.722.1C, G.719 e Codec2 vengono trasportati inalterati tra due parti che li utilizzano entrambi, con la loro velocità di bit o modalità mantenuta nell'offerta (BitVoice non li converte, quindi una chiamata tra uno di questi e un telefono senza di esso utilizza un altro codec che entrambi hanno). Inseriscili in una lista, sopra G.711, dove i sistemi di sala o i telefoni conference dovrebbero mantenere la loro gamma di suono quando si chiamano a vicenda. Le liste chiamano G.722.1 a 32 kHz G7221C, anche se SDP chiama entrambi G7221.
G.723.1 passa inalterato tra due parti che lo utilizzano entrambi. Per consentire a un dispositivo solo G.723.1 di parlare con qualsiasi altro dispositivo, attiva Converte G.723.1 con ffmpeg nelle impostazioni e installa ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice esegue quindi ffmpeg come un programma separato per ogni direzione che richiede la conversione (ascoltato a qualsiasi velocità, inviato a 6,3 kbit/s, la velocità dell'encoder di ffmpeg), circa 60 ms dopo gli altri codec, e lo ferma alcuni secondi dopo la chiamata. BitVoice non trasporta alcun codice G.723.1: il codice di riferimento ITU non ha una licenza che consenta di includerlo, e ffmpeg viene installato e eseguito autonomamente.
Qual è il costo della conversione
La conversione richiede tempo di processore, solo nelle chiamate in cui i due lati differiscono. Per chiamata, circa 0,3 ms di un core ogni 20 ms per Opus e 0,12 ms per G.729 (circa 60 e 170 chiamate convertite per core); le codifiche G.726 e GSM costano meno della codifica G.729; le codifiche G.711 e G.722 quasi nulla. La codifica G.729 viene inviata senza l'Allegato B (nessun frame di silenzio).
Pulizia del suono
La pulizia del suono (Impostazioni) abbassa il rumore di fondo costante e livella i livelli, per la segreteria telefonica e, se lo si desidera, durante le chiamate.
Microsoft Teams (Direct Routing)
/trunksBitVoice può essere il controller di sessione di bordo (SBC) per un tenant Microsoft Teams, in modo che gli utenti Teams chiamino le estensioni BitVoice e le linee telefoniche, e BitVoice suoni gli utenti Teams.
Cosa serve: un nome pubblico per questo server in un dominio del quale il tenant Microsoft 365 ha verificato la proprietà (sbc.example.com), la porta 5061 aperta in entrambe le direzioni verso le reti Microsoft 52.112.0.0/14 e 52.120.0.0/14, e un certificato per quel nome da un'autorità pubblica. Gli utenti Teams necessitano di una licenza Phone System.
Passaggi
- Impostazioni, Certificato: installare il certificato e la sua chiave privata (PEM). Viene utilizzato immediatamente, per questa interfaccia e per SIP su TLS, e BitVoice lo presenta a Microsoft.
- Tronchi, Aggiungi, iniziare da Microsoft Teams: inserire il nome pubblico del server. Il cassetto dice se il certificato lo copre.
- Copiare il PowerShell che il cassetto mostra ed eseguirlo come amministratore di Teams: aggiunge il SBC (New-CsOnlinePSTNGateway), una rotta vocale e una politica, e una regola di pianificazione della chiamata in modo che i numeri di estensione brevi raggiungano BitVoice come composti; quindi assegnare a ogni utente di Teams la politica e il loro numero.
- Per far squillare gli utenti di Teams da BitVoice, aggiungere una rotta in uscita per i loro numeri attraverso il tronco di Teams. Teams trova i suoi utenti solo per numeri con + e il codice del paese: se le persone li compongono senza, mettere + e il codice del paese in Anteporre (la traccia del motivo della chiamata lo dice quando una esce senza).
Quando un utente di Teams trasferisce una chiamata, Microsoft chiede a BitVoice di collocarla (un REFER che nomina il proprio proxy, con il numero o l'ID dell'utente di Teams): BitVoice richiama esattamente ciò che Microsoft ha nominato, con il Referred-By che Microsoft ha fornito, quindi un trasferimento a un altro utente di Teams funziona altrettanto bene come uno a un numero di telefono. BitVoice non invia mai un'intestazione Replaces a Teams, che Microsoft rifiuta.
BitVoice invia a Microsoft OPTIONS ogni minuto con il nome SBC in Contact, come richiesto da Microsoft, e tenta sip, sip2 e sip3.pstnhub.microsoft.com a turno. I media sono sempre crittografati (SRTP). La salute avvisa quando il certificato non copre il nome, è autofirmato o scade presto, e quando Microsoft smette di rispondere.
Questo segue i requisiti SBC pubblicati da Microsoft e viene testato contro un proxy Microsoft simulato; BitVoice non è nell'elenco dei SBC certificati da Microsoft.
Importa
/importTrasferisce estensioni, gruppi di chiamata, code e tronchi da FreePBX, Asterisk o 3CX; e persone, gruppi di ricerca, tronchi SIP, numeri di ingresso e modelli di composizione da Cisco, Avaya e Mitel. Carica i file esportati, più file alla volta (un file .zip o .tar funziona anche); BitVoice mostra esattamente cosa cambierà prima che venga applicato, e l'importazione diventa una revisione che puoi annullare in Modifiche (capitolo 61).
Passaggio da FreePBX
Il file migliore è un backup di FreePBX: contiene tutto, comprese le password SIP.
- In FreePBX: Amministratore → Backup e ripristino → Aggiungi backup. Seleziona almeno Core, Gruppi di chiamata, Code e Casella vocale (tutti i moduli va bene), salva e Esegui.
- Scarica il backup dalla sua riga (il file si chiama come
20261001-100000-1790000000-17.0.19-1234567.tar.gz). - Installa BitVoice sul nuovo server e completa la configurazione con un'estensione che FreePBX non utilizza (ad esempio 199) e senza linea telefonica: l'importazione porterà le linee.
- In Importa (capitolo 68), rilascia il file .tar.gz così com'è. Leggi l'anteprima: gli avvisi elencano tutto ciò che non può essere trasferito.
- Scegli Aggiungi. È una revisione in Modifiche (capitolo 61): annullala se qualcosa sembra sbagliato e importa di nuovo.
- Sposta i telefoni: punta ogni telefono su BitVoice (o configurali da Telefoni (capitolo 4)), con lo stesso numero di estensione e la stessa password SIP che avevano.
- Testa le chiamate in entrata e in uscita, poi sposta la registrazione del carrier (o il porting del numero) per ultimo.
Provato su un sistema reale: un FreePBX 17.0.33 (l'installazione ufficiale Debian 12) con quattro estensioni e casella vocale, un tronco PJSIP che si registra, due route di uscita (una con un prefisso di composizione), un gruppo di chiamata, una coda con penalità e tre DIDs, eseguito il backup con Backup & Restore con tutti i moduli selezionati. Il backup è di 70 MB, quasi tutto costituito da file audio e cronologia delle chiamate: BitVoice lo legge come arriva e mantiene solo la configurazione, quindi un backup di fino a 512 MB può essere caricato. Tutto ciò che è stato trasferito: le password, i PIN e le email della casella vocale, la registrazione e i codec del tronco, le route con i loro prefissi, la casella vocale del gruppo di chiamata quando non risponde, le penalità e i DIDs della coda, il gruppo e l'estensione.
Cosa viene trasferito:
- Estensioni: il numero, il nome, l'ID del chiamante in uscita, il tempo di squillo e la password SIP (BitVoice crea una nuova password quando quella di FreePBX è più corta di 12 caratteri: reinseriscila nel telefono).
- Tronchi: account del carrier PJSIP e chan_sip: server, porta, username, password, registrazione, dominio di provenienza, codec, ID del chiamante, limite di canale. I tronchi disattivati rimangono spenti. I tronchi DAHDI diventano il tronco delle schede di telefonia.
- Route di uscita, nell'ordine di FreePBX: ogni modello di composizione diventa un prefisso di composizione eliminato, i prefissi di composizione aggiunti. Una route il cui modello di composizione elimina o aggiunge prefissi diversi diventa una route di BitVoice per ognuno.
- Gruppi di chiamata: membri, tempo di squillo, squillo di tutti o uno dopo l'altro (ricerca, memoria di ricerca, primo disponibile), e dove vengono indirizzate le chiamate non risposte.
- Code: membri con le loro penalità, strategia (squillo di tutti, meno recente, meno chiamate, rotazione, lineare, casuale), tempo di squillo, tempo di attesa e tempo di attesa più lungo.
- Route di ingresso: ogni DID al suo estensione, gruppo di chiamata, coda, casella vocale, o riaggancio.
Cosa non viene trasferito e viene indicato nell'anteprima: IVR, condizioni di tempo, annunci, follow-me, tronchi personalizzati e contesti, corrispondenza dell'ID del chiamante nelle route, e numeri esterni nei gruppi di chiamata. Crea questi elementi in Menu (capitolo 21), Schedules (capitolo 26) e il Follow me dell'estensione. I backup più vecchi (FreePBX 13 e precedenti) e un semplice mysqldump asterisk del database FreePBX vengono letti allo stesso modo.
Altri sistemi
Dove ogni esportazione è:
- FreePBX (solo estensioni): Admin → Bulk Handler → Esporta → Estensioni (CSV).
- Asterisk: pjsip.conf o sip.conf.
- 3CX: Utenti → Esporta (CSV).
- Cisco Unified CM: Amministrazione in blocco → Telefoni → Esporta telefoni, tutti i dettagli; o Utenti → Esporta utenti. La prima linea del telefono diventa l'estensione, con il nome o l'etichetta della linea come nome.
- Avaya IP Office: Manager → File → Importa/Esporta → Esporta, Utenti.
- Avaya Communication Manager:
list stationsalvato come CSV; le stazioni virtuali e le VDN sono escluse. - Mitel MiVoice Business: Gestione dei dati di sistema → Configurazione utente e dispositivo → Esporta.
Gruppi e percorsi. Caricarli con il file delle persone, in modo che i membri di ogni gruppo siano trovati per numero o per nome:
- Cisco Unified CM: Amministrazione in blocco → Importa/Esporta → Esporta, con Line Group, Hunt List, Hunt Pilot, SIP Trunk e Route Pattern selezionati; caricare il file .tar così com'è. Ogni hunt pilot diventa un gruppo di chiamata con i membri della sua lista di caccia, Top Down e Circolare come uno dopo l'altro, Broadcast come tutti contemporaneamente, il timeout di reversione RNA come tempo di chiamata. I pattern di route diventano percorsi in uscita:
9.[2-9]XXXXXXcon PreDot è pattern9[2-9]XXXXXXche elimina il 9;!diventa un punto finale. I pattern che utilizzano@(il piano nazionale) sono elencati per essere scritti a mano. - Avaya IP Office: esportare Hunt Group e Utenti (entrambi sono CSV senza riga di intestazione). La modalità del gruppo è tutti contemporaneamente; Hunt, Rotary e Longest Waiting suonano uno dopo l'altro.
- Avaya Communication Manager:
list hunt-groupsalvato come CSV, con i membri in una colonna Membri o in un file di membri separato. - Mitel MiVoice Business: Ring Groups e Ring Group Assignment (Cascade è uno dopo l'altro, Ring All tutti contemporaneamente), e Hunt Groups.
I tronchi da queste esportazioni arrivano spenti e senza password, poiché le esportazioni non li contengono. I percorsi vanno fuori sul tronco importato con lo stesso nome; un percorso il cui tronco non è qui viene escluso e segnalato. Il suono rotante e più lungo è più vicino a una coda che a un gruppo di chiamata: l'anteprima lo dice, quindi puoi farlo diventare uno.
Queste esportazioni (tutte tranne un backup di FreePBX) non contengono password SIP, quindi ogni estensione ottiene una nuova password; i PIN della casella vocale, i nomi e gli indirizzi email vengono importati quando l'esportazione li contiene. I telefoni Cisco, Avaya H.323/DCP e Mitel eseguono il software del proprio produttore e non possono essere configurati da BitVoice: l'importazione dice quanti sono stati elencati. I telefoni Cisco possono essere riavviati con il firmware multi-piattaforma (SIP) di Cisco; i telefoni Avaya J100 e Mitel 6800/6900 possono registrarsi a BitVoice manualmente in modalità SIP.
Configurazione come codice
Tutto ciò che fanno gli schermi passa attraverso l'API REST di BitVoice, quindi qualsiasi cosa può essere scriptata, mantenuta in Git o gestita con Terraform. L'API è descritta per gli strumenti in /api/openapi.json (/api/openapi.json).
Token API
Creati in Amministratori (capitolo 57): uno per programma, solo lettura o in grado di modificare tutto. Inviarli come Authorization: Bearer bv_.... Viene visualizzato una sola volta; revocarlo quando non è più necessario. I cambiamenti di un token vengono visualizzati in Modifiche e nel registro di controllo con il suo nome.
curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions
Terraform o OpenTofu
Il repository deploy/terraform mostra estensioni, gruppi di chiamate e route gestiti con il provider REST generico: il piano mostra cosa cambierebbe, l'applicazione apporta il cambiamento. Il provider controlla il certificato di BitVoice; finché BitVoice utilizza ancora il proprio certificato autofirmato, ottenere uno da Let's Encrypt (Impostazioni, Certificati) o impostare bitvoice_insecure = true su una rete di cui si fidano (in Linux, SSL_CERT_FILE che punta al certificato di BitVoice funziona anche). Le risorse vengono abbinate con l'ID che BitVoice assegna loro, quindi un secondo piano non mostra cambiamenti fino a quando il file o gli schermi non cambiano qualcosa.
Configurazione da Git
In Impostazioni (capitolo 14), Configurazione da Git, BitVoice legge la configurazione da un file in un repository ogni pochi minuti e mostra cosa differisce o apporta i cambiamenti. Iniziare il file con Esporta per Git, che esclude le password; BitVoice mantiene le proprie, quindi i segreti non vengono mai inseriti nel repository.
Compatibilità con Asterisk (AMI, ARI e AGI)
Gli strumenti scritti per Asterisk possono controllare BitVoice: CRM, wallboard, pulsanti di chiamata, controller di registrazioni di chiamate. Attivalo in Impostazioni (capitolo 14), Compatibilità con Asterisk. Gli strumenti vedono le chiamate come canali denominati come PJSIP/100-..., come su Asterisk.
AMI
L'interfaccia di gestione sulla porta TCP 5038 (AMI ascolta su: questo computer solo per default). Supportato:
| Tipo | Nomi |
|---|---|
| Azioni | Login (piano o sfida MD5), Ping, Eventi, Filtro, ElencoComandi, CoreShowCanali, Stato, CoreStato, ImpostazioniCore, PJSIPShowEndpoints, StatoEstensione, ElencoStatoEstensione, ElencoStatoDispositivo, Getvar, Origina, Reindirizza, TrasferimentoCieco, Riaggancia, Disconnetti |
| Code | StatoCoda, RiepilogoCoda, PausaCoda, AggiungiCoda e RimuoviCoda (questi firmano un agente in o fuori da tutte le loro code), Agenti |
| Altro | ChiamateParcheggiate; ElencoStanzeConfbridge, ElencoConfbridge, EspelliConfbridge, SilenziaConfbridge, SsilenziaConfbridge, BloccaConfbridge, SbloccaConfbridge; ContaCasellaPostale, StatoCasellaPostale; PausaMonitor, RiavviaMonitor; EventoUtente; Ricarica (nulla da ricaricare: le modifiche si applicano immediatamente) |
| Eventi | NuovoCanale, NuovoStato, Riaggancia, IniziaComposizione, FineComposizione, MettiInAttesa, RimuoviAttesa, StatoPeer, StatoContatto, MessaggioInAttesa, UniscitiConfbridge, LasciaConfbridge, FineConfbridge, EventoUtente |
Filtro mantiene solo gli eventi che corrispondono a un'espressione regolare (Event: Newchannel), o li elimina con ! all'inizio, come su Asterisk. Non c'è una riga di comando Asterisk: Comando risponde con un errore.
ARI
A /ari/, con autenticazione di base o ?api_key=user:secret:
| Richiesta | Cosa fa |
|---|---|
GET /ari/channels | le chiamate in corso |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | suona il 100, poi chiama il numero |
DELETE /ari/channels/{id} | riattacca |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | invia la chiamata al 102 |
/ari/endpoints, /ari/bridges, /ari/asterisk/info | telefoni, ponti, versione |
/ari/events | un WebSocket di eventi |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | un canale che invia suono a un programma tramite RTP (ulaw o alaw su UDP); la sua porta locale è nel canale UNICASTRTP_LOCAL_PORT |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid> | lo stesso tramite AudioSocket |
POST /ari/bridges/{call}/addChannel?channel={id} | il canale multimediale esterno si unisce a una chiamata: sente entrambe le parti e entrambe lo sentono; con role=listener nessuno lo sente (per la trascrizione live) |
POST /ari/bridges/{call}/removeChannel?channel={id} | esce dalla chiamata; le due parti parlano di nuovo direttamente |
Un canale multimediale esterno non aggiunto a una chiamata entro un minuto viene chiuso.
Applicazioni ARI
Un'applicazione ARI (Asterisk's Stasis()) esegue chiamate dal proprio programma. Aggiungerla sotto Applicazioni ARI in Impostazioni, compatibilità Asterisk: un nome, un numero opzionale di estensioni da comporre, e un fallback. Quindi inviare chiamate ad esso come a qualsiasi destinazione: una route in entrata, una chiave del menu, una programmazione.
Il tuo programma si collega a /ari/events?app=NAME (un WebSocket, con l'accesso in ?api_key=user:secret). Ogni chiamata che raggiunge l'applicazione viene risposta e arriva come StasisStart, con il canale; il programma lo esegue quindi:
| Richiesta | Cosa fa |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | riproduce promemoria da Suoni (sound:), digits:, number:, tone:beep o una registrazione archiviata (recording:); PlaybackStarted e PlaybackFinished seguono. DELETE /ari/playbacks/{id} lo interrompe. |
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23 | registra (wav) nelle registrazioni archiviate; RecordingStarted e RecordingFinished. POST /ari/recordings/live/{name}/stop lo termina, DELETE lo scarta. |
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name} | le registrazioni archiviate |
POST /ari/channels/{id}/dtmf?dtmf=123 | invia tasti al chiamante |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | le variabili del canale |
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETE | ponti di mixing: tutti in uno sentono tutti gli altri |
POST /ari/channels/{id}/continue?extension=101 | lascia andare la chiamata: a quell'estensione, gruppo di chiamata o coda, altrimenti il fallback |
DELETE /ari/channels/{id} | riaggancia |
POST /ari/channels?endpoint=PJSIP/101&app=NAME | chiama il 101; risposto, entra nell'applicazione |
GET /ari/applications | le applicazioni, se un programma è connesso e i loro canali |
POST /ari/channels/{id}/mute?direction=in, DELETE .../mute | mette a tacere cosa dice il chiamante (in), cosa sente (out) o entrambi |
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silence | musica di attesa per il chiamante (ChannelHold, ChannelUnhold), o silenzio |
GET/POST /ari/channels/{id}/variables | più variabili contemporaneamente (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | passa il canale a un'altra applicazione (StasisEnd, poi StasisStart lì; ApplicationMoveFailed quando nessun programma la esegue) |
POST /ari/channels/{id}/snoop?spy=in&app=NAME | un canale di snoop in un'applicazione che sente cosa dice il chiamante, per registrarla (POST /ari/channels/{snoop}/record) |
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, poi POST .../dial | un canale che aspetta fino a quando non viene composto; eventi Dial dicono come procede la suoneria, e entra nell'applicazione quando risposto |
GET /ari/channels/{id}/rtp_statistics | pacchetti e byte inviati e ricevuti, perdita e jitter |
POST /ari/playbacks/{id}/control?operation=pause | mette in pausa, riavvia, riporta indietro e avanti (tre secondi) |
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId} | musica di attesa per un ponte, registrazione della sua miscela, le sue variabili |
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mute | copia una registrazione; mette in pausa o a tacere una registrazione live |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilter | abbonamenti (canale:, ponte:, endpoint:PJSIP/100, deviceState:) e filtri di eventi ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | stati dei telefoni (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) e stati personalizzati che i programmi mantengono (DeviceStateChanged); lo stato del telefono arriva anche come EndpointStateChange |
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0 | contatori di posta vocale delle estensioni (100@default), e cassette postali che un programma mantiene da solo |
GET /ari/sounds | i promemoria di Suoni, nelle lingue in cui sono registrati, e i suoni caricati per script AGI |
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hi | un testo sul telefono dell'estensione 100 |
POST /ari/events/user/{name}?application=NAME | un evento utente a un'applicazione (ChannelUserevent) |
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modules | ping, variabili globali e parti di BitVoice denominate come i moduli che rappresentano |
BitVoice risponde a ogni operazione di ARI pubblicata da Asterisk (il suo test suite chiama ogni operazione e controlla che ciò che viene restituito abbia i campi richiesti dalla descrizione di Asterisk). Alcune operazioni non sono pertinenti qui e rispondono con 501 e il motivo: moduli caricabili (BitVoice è un programma unico), configurazione dinamica di Sorcery (BitVoice è configurato nella sua interfaccia web), canali di log, sorgenti video dei ponti (i ponti ARI trasportano solo suono), invio di REFER ai telefoni e richiesta di chiamate in broadcast. Un'intercettazione ascolta solo il chiamante (spy=in) e whisper non è offerto: ponta un canale con il loro per parlare con loro. Gli eventi del canale per ogni chiamata (ChannelCreated, ChannelStateChange, ChannelDestroyed) vengono inviati a ogni programma, come con subscribeAll=true di Asterisk. Le librerie ARI che leggono l'interfaccia dal server (ari-client e altre) la trovano in /ari/api-docs/resources.json. Quali programmi mantengono adesso, sotto Applicazioni ARI in Impostazioni, mostra le applicazioni, gli stati dei dispositivi personalizzati, le caselle di posta e le variabili globali e i ponti impostati dai programmi.
I tasti premuti arrivano come ChannelDtmfReceived; un chiamante che riaggancia come StasisEnd. Quando nessun programma è connesso, la chiamata va al fallback; quando l'ultimo collegamento del programma si chiude, le sue chiamate vanno lì anche dopo cinque secondi (tempo per riconnettersi). Per la logica di chiamata senza un programma proprio, utilizza Script (capitolo 27) che eseguono l'intera chiamata; per passare l'audio a un programma, Bot vocali (capitolo 24).
Script AGI
Uno script AGI (Asterisk's AGI() e EAGI()) esegue una chiamata comando per comando, quindi gli IVR e le integrazioni scritte per Asterisk (phpagi, pyst2, Asterisk-Java, qualsiasi server FastAGI) continuano a funzionare. Aggiungerlo sotto Script AGI in Impostazioni, compatibilità Asterisk:
| Campo | Cosa è |
|---|---|
| Nome dello script | come le destinazioni lo nominano |
| Indirizzo | un server FastAGI, agi://host:4573/script?x=1 (porta 4573 se non specificata), hagi://domain/script per i server nei record SRV _agi._tcp del dominio, provati in ordine di priorità, o il nome del file di un programma nella cartella Programmi AGI |
| Argomenti | passati come agi_arg_1, agi_arg_2 … |
| Numero da comporre | facoltativo: le estensioni lo compongono come qualsiasi numero |
| Fallback | dove la chiamata va quando lo script termina senza scegliere un numero, o non può essere raggiunto |
| Esecuzione più lunga | uno script in esecuzione più a lungo viene interrotto (un'ora di default) |
| EAGI | per un programma: l'audio del chiamante (8 kHz, firmato 16-bit, little-endian) sul descrittore di file 3. Linux e macOS |
Test si connette al server (o controlla che il programma sia presente ed eseguibile) senza inviare una chiamata. Quindi inviare chiamate ad esso come a qualsiasi destinazione.
BitVoice risponde alla chiamata, invia le variabili agi_ (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) e esegue i comandi, rispondendo come Asterisk 20 (il test suite confronta ogni risposta con una registrazione di Asterisk):
| Comandi | Note |
|---|---|
| ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSE | HANGUP con un nome di canale solo termina la chiamata dello script |
| STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGIT | tasti di escape, offset di campionamento e fine come su Asterisk; avanti veloce, rewind e pausa in CONTROL STREAM FILE |
| SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIME | con un servizio di sintesi vocale in Impostazioni, AI vengono pronunciati; senza, i numeri vengono letti dai Suoni |
| RECORD FILE | s=N silenzio, un beep, tasti di escape; il file viene salvato nella libreria dei suoni |
| SET VARIABLE, GET VARIABLE, GET FULL VARIABLE | CALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … e espressioni ${NAME} |
| DATABASE GET, PUT, DEL, DELTREE | database di Asterisk (AstDB), mantenuto da BitVoice e visualizzato sotto Database AGI |
| SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSIC | SET EXTENSION è dove la chiamata va quando lo script termina |
| SPEECH CREATE … SPEECH RECOGNIZE | utilizza il riconoscimento vocale di Impostazioni, AI: il risultato è ciò che il chiamante ha detto, come text0, per lo script da confrontare; le grammatiche vengono accettate e non utilizzate |
| EXEC | Answer, Hangup, Playback, Background, Read, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (suona ogni numero in sequenza; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Altri rispondono -2, come Asterisk fa per un'applicazione mancante |
BitVoice non ha un dialplan: dove uno script andrebbe avanti nel dialplan di Asterisk (SET EXTENSION, EXEC Goto), la chiamata va a quel numero qui (un'estensione, un gruppo di chiamata, una coda, un menu o un numero esterno attraverso le route in uscita) quando lo script termina. Gli script non chiamano mai i numeri di emergenza. Quando il chiamante riattacca, uno script FastAGI riceve HANGUP e un programma SIGHUP; solo i comandi consentiti su un canale morto vengono eseguiti (511 per gli altri), e la connessione viene chiusa 30 secondi dopo se lo script continua. Ogni esecuzione viene visualizzata sotto Ultimi esecuzioni con le righe VERBOSE e viene inviata al flusso di eventi come agi.ran.
Suoni per gli script AGI. Gli script riproducono i suoni con i nomi che utilizzano su Asterisk: caricarli sotto Suoni per gli script AGI con una cartella (custom/welcome; es/custom/welcome per i chiamanti in spagnolo). WAV, MP3 e .gsm, .ulaw, .alaw, .sln e .sln16 di Asterisk vengono accettati; un percorso come /var/lib/asterisk/sounds/en/custom/welcome.gsm trova custom/welcome. I digits/0–digits/9, beep, silence/N e alcuni altri (vm-goodbye, invalid, please-hold) di Asterisk riproducono i prompt e i toni propri di BitVoice. Ciò che gli script registrano viene mantenuto nella stessa libreria, contrassegnato registrato da uno script, per i giorni che si scelgono (30 di default). La libreria mantiene fino a 1 GB.
Programmi. Un programma viene eseguito su questo server con i diritti di BitVoice, quindi non viene mai caricato tramite il web: copialo nella cartella Programmi AGI visualizzata sullo schermo (DATA/agi-bin) e rendilo eseguibile. Riceve solo PATH e AST_AGI_DIR dall'ambiente, viene eseguito nella cartella e ciò che scrive sullo standard error viene scritto nel log del server. FastAGI invia comandi in TCP semplice: mantieni il server su questo computer o su una rete privata.
Accessi
Ogni accesso ha un Nome utente e Segreto. Gli accessi sono solo lettura a meno che non siano contrassegnati Può modificare le chiamate. Mantieni AMI su questo computer a meno che lo strumento non venga eseguito altrove: AMI è TCP semplice, non crittografato.
Assistenti AI (MCP)
Un assistente AI come Claude, ChatGPT, Gemini o Cursor può utilizzare BitVoice attraverso il Model Context Protocol (MCP), il modo standard con cui gli assistenti raggiungono altri programmi. Chiedilo in parole semplici: chi ha chiamato stamattina e se qualcuno li ha richiamati, cosa ha detto il chiamante del dentista, perché la chiamata delle 9 è andata alla casella vocale, se la linea del fornitore è giù. Con il tuo permesso, può anche effettuare una chiamata, inviare un testo o interrompere una chiamata.
BitVoice è il server MCP, all'indirizzo https://YOUR-SERVER/mcp (Streamable HTTP; l'indirizzo si trova in Impostazioni). Nulla va a qualsiasi servizio AI a meno che un assistente che hai connesso non lo richieda, e allora solo ciò che ha richiesto.
Attivazione
In Impostazioni (capitolo 14), Assistenti AI (MCP):
- Consenti la connessione degli assistenti AI: disattivato per default. Disattivato,
/mcprisponde solo che è disattivato. - Consenti agli assistenti di agire: disattivato per default. Disattivato, gli assistenti possono solo leggere, indipendentemente dal loro token. Attivato, un assistente il cui token può cambiare le cose ottiene anche gli strumenti che agiscono.
La carta mostra l'indirizzo e le impostazioni pronte per la copia per gli assistenti comuni e elenca ogni strumento.
Cosa può fare un assistente
Lettura (qualsiasi token):
- calls_now: le chiamate in corso.
- call_history: chiamate passate, cercate per numero o nome, per direzione e da un momento, con il motivo per cui ogni chiamata è andata dove è andata.
- extensions: nomi, numeri, dipartimenti, email; mai la password di un telefono.
- phones_connected: quali telefoni sono registrati, da dove.
- voicemail, search_transcripts: messaggi e cosa è stato detto nelle chiamate registrate.
- queues, trunks, health: code ora, le linee del fornitore, i controlli di BitVoice.
- directory, text_messages: l'elenco telefonico aziendale e le conversazioni di testo.
Azione (con Consenti agli assistenti di agire e un token che può cambiare le cose):
- place_call: chiama con un clic. Il telefono dell'estensione squilla per primo; quando qualcuno lì risponde, BitVoice chiama il numero per loro come se l'avessero composto, quindi le loro rotte, l'ID del chiamante e i limiti si applicano.
- send_text: un messaggio di testo da uno dei numeri di testo dell'organizzazione.
- hang_up_call: termina una chiamata in corso.
Ogni strumento è una delle route dell'API stessa, eseguito come assistente: vede e modifica esattamente ciò che il suo token può, si applicano gli stessi controlli e le sue modifiche sono nel registro di controllo con il suo nome. Una risposta è limitata a circa 60.000 caratteri; all'assistente viene chiesto di restringere la sua ricerca quando una è troncata.
Connessione di un assistente
Assistenti che si connettono (Claude.ai e connettori personalizzati ChatGPT, e altri): aggiungere un connettore con l'indirizzo di BitVoice. L'assistente apre la pagina di accesso di BitVoice nel browser; accedere come di consueto (password, due passaggi, accesso singolo) e la pagina indica quale assistente chiede e dove ritorna. Un amministratore può consentire all'assistente di agire o Consenti solo la lettura; l'assistente di un visualizzatore può solo leggere. Non consentire lo invia via senza nulla. Il suo accesso è quindi su Amministratori (capitolo 57), token API, come Assistente AI, connesso: funziona solo a /mcp, mai per il resto dell'API, dura un'ora alla volta e si rinnova per un massimo di 30 giorni di non utilizzo. Revoca lo termina immediatamente. Questi assistenti raggiungono BitVoice dai propri server, quindi necessitano di un indirizzo raggiungibile da Internet e di un certificato attendibile (Let's Encrypt, in Certificato (capitolo 14)).
Assistenti forniti di un token (Claude Code, Cursor, VS Code e altri strumenti che accettano un indirizzo e un'intestazione): creare un token API su Amministratori (capitolo 57), solo lettura a meno che non debba agire, e fornirlo come Authorization: Bearer bv_...:
claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."
Assistenti che avviano un programma (Claude Desktop, e altri che accettano un comando): il programma BitVoice include un ponte, bitvoice mcp, che passa ogni messaggio al server tramite HTTPS. Fornire il server con l'indirizzo e il token:
{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }
Con il certificato di BitVoice (non uno da un'autorità), il ponte lo rifiuta e stampa il suo SHA-256: verificare che sia il certificato del server, quindi aggiungere "-pin", "THAT-SHA256" agli argomenti. Solo quel certificato viene quindi accettato.
Sicuro da lasciare attivo
- Solo token: l'accesso al browser di BitVoice non raggiunge mai
/mcp, e una pagina su un altro sito viene rifiutata (Origine), quindi una pagina web non può utilizzare una connessione assistente. - Gli assistenti possono essere errati. Fornire loro un token di sola lettura a meno che non debbano agire; tutto ciò che hanno fatto è nel registro di controllo e l'inserimento di una chiamata suona sempre prima il telefono di una persona.
- Accesso tramite OAuth 2.1 come specificato da MCP: l'assistente si registra (client pubblici solo, con PKCE), ritorna solo agli indirizzi che ha registrato (https, o http al proprio computer) e un codice è valido solo una volta, per un minuto.
- Un'organizzazione ospitata su un'altra BitVoice fornisce ai propri assistenti token; l'accesso tramite OAuth non è ancora stato tentato.
Archivio
/archiveL'archivio mantiene copie delle registrazioni, della casella vocale e della configurazione da qualche altra parte: un bucket Amazon S3 (o un archivio compatibile con S3) o un contenitore Azure Blob Storage. Se il disco del server viene perso, l'archivio li conserva comunque.
Configurazione
- In Archivio (capitolo 72), scegli Dove archiviare: Amazon S3 o Azure.
- Per S3: il Bucket, la sua Regione, una cartella opzionale All'interno del bucket e Endpoint (per archivi compatibili con S3), e un ID chiave di accesso e Chiave di accesso segreta. Copia la policy fornisce l'unico permesso di cui BitVoice ha bisogno, per associarlo all'utente o al ruolo.
- Per Azure: un URL del contenitore SAS con autorizzazione di scrittura, e una cartella opzionale All'interno del contenitore.
- Scegli cosa copiare oltre alla configurazione: Registrazioni delle chiamate, Casella vocale, o entrambi.
Cosa succede
Ogni dieci minuti BitVoice copia nuove registrazioni e messaggi che non sono ancora nell'archivio, e una volta al giorno una copia datata della configurazione (config/2026-10-13.json). La pagina mostra l'ultima esecuzione, l'ultimo successo e eventuali errori.
Eliminare qualcosa qui (per conservazione o manualmente) non elimina la copia dell'archivio: impostare le regole di ciclo di vita del bucket o del contenitore per determinare per quanto tempo l'archivio mantiene le cose.
Conservazioni legali
/holdsUna conservazione legale mantiene i record delle chiamate, le registrazioni e la casella vocale che una questione può richiedere e impedisce a chiunque di eliminarli, fino a quando non viene rilasciata. Utilizzatela quando un avvocato chiede di conservare i record.
Aggiungere una conservazione
Su Conservazioni legali (capitolo 73), premi Aggiungi:
| Campo | Cosa è |
|---|---|
| Nome | cosa si chiama la questione |
| Motivo | perché, per il record |
| Numeri | le estensioni e i numeri esterni che copre (101, +15551234567), o Tutto |
| Da, A | le date che copre; vuoto per nessun limite |
Mentre una conservazione è attiva
- La conservazione lascia ciò che copre solo, qualunque sia la sua età.
- Nessuno può eliminare una chiamata, registrazione o casella vocale conservata, gli amministratori inclusi.
- Le chiamate conservate mostrano un lucchetto in Cronologia chiamate (capitolo 47).
Rilascio
Rilascia rende ciò che la conservazione ha mantenuto soggetto alle impostazioni di conservazione nuovamente: le cose più vecchie della conservazione vengono eliminate alla prossima pulizia. Le conservazioni rilasciate rimangono elencate, con quando e da chi, e l'aggiunta e il rilascio delle conservazioni sono nel registro di controllo.
Metriche: Prometheus, OpenTelemetry, Grafana, SNMP e registri di chiamata
/settingsPrometheus esegue il polling di /metrics sull'indirizzo web. Creare un token API sotto Amministratori (un token di visualizzazione è sufficiente) e fornirlo a Prometheus come token bearer:
scrape_configs:
- job_name: bitvoice
scheme: https
authorization: { credentials: bv_... }
static_configs: [{ targets: ['pbx.example.com'] }]
Legge le chiamate in corso (per stato), le chiamate terminate (per direzione e esito), il tempo di conversazione, i telefoni registrati, lo stato e il tempo di andata e ritorno di ciascun trunk, i chiamanti in attesa e gli agenti in ogni coda, i pacchetti audio ricevuti e persi, un istogramma dei punteggi di qualità della chiamata (MOS) e le richiamate pianificate. I contatori ripartono da zero quando BitVoice viene riavviato, come si aspetta Prometheus.
OpenTelemetry: nelle impostazioni, Metriche, immettere l'indirizzo OTLP/HTTP di un collector (e un'intestazione come Autorizzazione, con il suo valore) per avere le stesse misurazioni inviate ogni minuto (o con la frequenza che si imposta, a partire da 15 secondi). Invia ora controlla le impostazioni salvate.
Pannello di controllo Grafana scarica un pannello di controllo pronto all'uso: importarlo in Grafana e selezionare la fonte di dati Prometheus.
SNMP
Per i sistemi di monitoraggio che parlano SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), attivare l'agente SNMP nelle impostazioni. Risponde a SNMPv2c GET, GETNEXT e GETBULK, in sola lettura, sulla porta UDP 161 (o un'altra scelta: la porta 161 richiede il permesso di aprire le porte basse su Linux) e solo dalle reti elencate. Scegliere una comunità che non sia pubblica o privata: è una password che attraversa la rete in chiaro.
Fornisce il gruppo di sistema standard (sysDescr, sysUpTime, sysContact, sysName, sysLocation) e i valori propri di BitVoice sotto il base OID: chiamate in corso e in attesa di risposta, telefoni registrati, trunk attivi e configurati, chiamanti in attesa, chiamate terminate, secondi di conversazione, pacchetti persi, qualità media della chiamata, una tabella dei trunk (nome, attivo o disattivato, latenza) e una tabella delle code (in attesa, agenti, risposte, abbandonate). Scaricare BITVOICE-MIB accanto alle impostazioni per il caricamento del monitoraggio. BioDream LLC non ha ancora un numero di impresa; quindi, il base OID predefinito si trova nello spazio sperimentale di Net-SNMP; metterne uno sotto il proprio numero di impresa per mantenerlo stabile.
Trappole (SNMPv2) vengono inviate a ciascun ricevitore elencato quando un trunk va giù o si riattiva, viene effettuata una chiamata di emergenza o un server di un cluster smette di rispondere. SNMPv3 non è supportato al momento.
Registri di chiamata altrove
Accanto alla cronologia delle chiamate, ogni record può essere inviato, al termine della chiamata, a:
- Syslog (RFC 5424, come JSON) tramite UDP, TCP o TLS, per un server di log o un SIEM.
- Un file CSV al giorno, con le colonne Master.csv di Asterisk, in modo che gli strumenti di reporting e di fatturazione creati per Asterisk lo possano leggere. Scaricare i file alla fine della Cronologia delle chiamate (capitolo 47). Le celle che un foglio di calcolo eseguirebbe come formula vengono scritte in modo sicuro.
- Una tabella PostgreSQL in un altro database, creata la prima volta con le colonne
cdrdi Asterisk (datachiamata, clid, src, dst, durata, billsec, disposition, uniqueid…) più le direzione, trunk, costo e MOS di BitVoice. Ogni chiamata viene scritta una sola volta.
Invia un record di prova prova il server syslog e il database con le impostazioni salvate.
Generatore di chiamate
/loadtestIl generatore di chiamate effettua chiamate reali con audio reale in BitVoice da questo computer: per vedere quante chiamate un server gestisce e quanto bene, o per controllare dopo una modifica che le chiamate vadano ancora dove dovrebbero.
Esecuzione di un test
| Impostazione | Cosa rappresenta |
|---|---|
| Numero da chiamare | un numero all'interno di BitVoice: un'estensione, un gruppo, una coda, un menu |
| Chiamate in arrivo da | il numero del chiamante visualizzato nelle chiamate |
| Rispondi come | un'estensione per cui il generatore risponde automaticamente; o nessuno, quando il numero risponde da solo (un menu, il test dell'eco) |
| Chiamate | quante in totale |
| Contemporaneamente | il massimo in corso contemporaneamente, fino a 2.000. Ogni chiamata inoltrata utilizza porte multimediali da Media da e Media a (Impostazioni): il valore predefinito 10000-20000 consente circa 1.800, quindi ampliarlo per averne di più |
| Nuove al secondo | quante iniziano |
| Ogni chiamata dura (s) | quanto dura ogni conversazione |
Lettura dei risultati
| Risultato | Cosa dice |
|---|---|
| Risposto, Fallito | e Perché le chiamate sono fallite, per motivo |
| Tempo di risposta, mediana e 95% | quanto hanno aspettato i chiamanti |
| Audio perso | la quota di pacchetti audio che non sono mai arrivati |
| Punteggio audio | una stima del suono (MOS): 4 e oltre è buono, sotto 3.6 è scarso |
| Jitter, 95% delle chiamate | quanto irregolarmente il suono è tornato (jitter di interarrivo RFC 3550, mediato su ogni chiamata); i telefoni smussano fino a circa 20 ms |
| Maggiore intervallo, peggiore chiamata | l'attesa più lunga tra due pacchetti audio in qualsiasi chiamata; arrivano ogni 20 ms, quindi uno stallo del server si mostra qui |
| Pausa di memoria, pausa più lunga | quante volte e per quanto tempo al massimo, il runtime di Go ha interrotto tutto per sistemare la memoria durante l'esecuzione |
| Chiamate in corso nel tempo | un grafico del carico |
Traccia SIP
/traceLa traccia SIP mostra i messaggi che BitVoice invia e riceve, in tempo reale: il primo posto dove cercare quando un telefono non si registra o una chiamata fallisce, e cosa il supporto tecnico di un fornitore chiederà.
Trovare un messaggio
BitVoice mantiene gli ultimi 2.000 messaggi in memoria (nulla viene scritto su disco e scompaiono dopo un riavvio). Digita parte di un numero, un indirizzo o un Call-ID nel filtro. Premi Aggiorna per i messaggi più recenti.
Scegli un messaggio per vederlo per intero e, accanto ad esso, il flusso di chiamata: ogni messaggio della stessa chiamata in ordine, tra il telefono, BitVoice e il fornitore, come nella figura.
Leggere una traccia
| Vedi | Di solito significa |
|---|---|
| REGISTER risposto 401, poi nulla | il telefono non ha la password o ha quella sbagliata |
| REGISTER risposto 403 | l'indirizzo è bloccato o il telefono si registra come un'altra estensione |
| INVITE risposto 404 | nessuna rotta corrisponde al numero composto (Routing delle chiamate (capitolo 8)) |
| INVITE risposto 403 dal fornitore | il fornitore rifiuta l'ID del chiamante o il numero |
| 486 | l'altro lato è occupato |
| 488 | i due lati non hanno un codec in comune (Codecs (capitolo 66)) |
| 200 OK, poi BYE dopo circa 30 secondi | l'ACK non è mai arrivato: un router in mezzo riscrive o scarta i messaggi (disattiva il suo "SIP ALG") |
| Una chiamata si connette ma nessuno sente nulla | il suono è bloccato: controlla l'indirizzo pubblico in Impostazioni e le porte multimediali nel firewall |
Sicurezza pubblica: il percorso del laboratorio
Il profilo del punto di risposta 911, la console di dispatch radio e i servizi core NG911. Sono un percorso di laboratorio e design: costruito e testato contro acquisizioni registrate, dati di esempio e sostituti, ma non certificato per il 911 o la dispatch radio live e non ancora provato con un ESInet, un sistema P25 o CAD live. Sono fuori menu fino a quando non vengono attivati nelle Impostazioni. Le chiamate di emergenza dai propri telefoni (Guida introduttiva) non fanno parte di questo percorso: fanno parte di ogni sistema telefonico.
Chiamate 911 (il profilo 911)
/psapBitVoice risponde alle chiamate 911 come sistema di gestione delle chiamate di un PSAP: le chiamate dalla rete dei servizi di emergenza (l'ESInet, NENA i3) arrivano con la posizione del chiamante e i dati della rete, il gestore della chiamata li vede subito e il CAD viene informato quando la chiamata viene risposta.
Configurazione.
- In Tronchi (capitolo 7), aggiungi il trunk del tuo fornitore ESInet (o il core NG911 ESRP) e attiva Dall'ESInet.
- In Routing delle chiamate (capitolo 8), invia le sue chiamate ai tuoi call-taker: una coda o un gruppo di chiamata.
- Su Chiamate 911, inserisci il tuo ID di agenzia (un dominio, come
psap.county.example.gov) e cosa richiede il CAD: l'indirizzo e la porta del suo ascoltatore ALI e il suo indirizzo EIDO.
Quando una chiamata 911 squilla, appare su Chiamate 911 con:
- l'indirizzo inviato dalla rete (ubicazione civica) e la posizione con la sua precisione (entro così tanti metri), rappresentata sulla mappa con il suo cerchio di incertezza (una volta impostata la mappa, sotto), e un collegamento a OpenStreetMap;
- il fornitore, il tipo di servizio (wireless, VoIP, residenziale, aziendale), il dispositivo e l'abbonato, quando la chiamata li ha forniti (Dati aggiuntivi, RFC 7852);
- eventuali errori durante la lettura.
La posizione arriva nella chiamata (per valore) o come riferimento che BitVoice recupera con HELD. Una chiamata con un riferimento ha Rebid posizione: BitVoice chiede nuovamente, per un chiamante in movimento o la cui prima posizione era approssimativa.
Quando un rebid modifica la posizione, il controllo posizione indica quale mostrare per primo e perché: la nuova posizione come regola; la prima quando era una posizione precisa del dispositivo (GPS, entro 100 m) meno di due minuti fa e la nuova è più approssimativa; e entrambe quando due posizioni sono in disaccordo di più della loro incertezza, quindi il call-taker chiede al chiamante. La prima posizione rimane sulla chiamata in ogni caso.
Quando un call-taker risponde, il CAD riceve, ciascuno per proprio conto in modo che un CAD che è giù non blocchi la chiamata:
- l'ALI spill: il blocco di testo che i sistemi CAD leggono (numero di callback, classe di servizio, indirizzo, posizione e incertezza, fornitore), inviato tramite TCP;
- l'EIDO, il documento di incidente NENA-STA-024, tramite HTTPS POST (con un token bearer se impostato). EIDO su una chiamata lo mostra. L'indirizzo deve essere
https, o solohttpper un CAD sullo stesso computer (http://127.0.0.1:…): un EIDO contiene la posizione del chiamante e il token, quindi non attraversa mai una rete non crittografata, inclusa una rete privata. Lo stesso vale per Invia eventi radio a CAD a. Salvare qualsiasi altro indirizzohttpnon crittografato viene rifiutato; uno salvato da una versione precedente rimane, quindi BitVoice si avvia ancora e altri cambiamenti vengono salvati, ma nulla viene inviato e Salute (capitolo 13) lo mostra in rosso fino a quando non viene modificato.
L'ALI spill stesso è un semplice TCP, poiché gli ascoltatori CAD legacy lo accettano, quindi non può essere richiesto di essere crittografato. Quando viene inviato a un altro computer, Salute avverte: mantieni questo percorso fuori da qualsiasi rete condivisa, con un collegamento seriale diretto (serial:/dev/…) o una VPN o un circuito privato per CAD. Imposta anche ID Agenzia: gli EIDOs e il nome del log i3 identificano l'agenzia con esso, e Salute (capitolo 13) avverte finché è vuoto.
Una chiamata 911 non viene mai rifiutata. Una chiamata vocale dall'ESInet (o un trunk CAMA) la cui route in entrata la respingerebbe, perché la route riaggancia, suona un gruppo senza nessuno al suo interno o non esiste, o che nessuno risponde, suona ogni call-taker invece: ogni estensione abilitata e qualsiasi telefono che si connette mentre squilla, fino a quando qualcuno risponde o il chiamante riaggancia. Una chiamata di testo aspetta su questo schermo allo stesso modo. Come è stata instradata della chiamata dice cosa è successo, e Salute (capitolo 13) avverte su tale route in modo che possa essere corretta. Solo le chiamate di test (urn:service:test.sos) e le chiamate che non sono chiamate 911 mantengono il rifiuto della loro route.
Né viene interrotta da un trasferimento. Quando un call-taker trasferisce una chiamata 911 e il trasferimento non può connettersi, perché l'estensione non ha un telefono connesso o nessuno risponde, la chiamata torna a quel call-taker mentre è ancora connesso. Se hanno già riagganciato (la maggior parte dei telefoni da scrivania lo fa subito dopo un trasferimento cieco), ogni call-taker suona invece, fino a quando uno risponde. Una chiamata 911 non viene mai passata alla segreteria telefonica dell'estensione o ad un'altra destinazione di non risposta, e la sua traccia di routing dice cosa è successo. In qualsiasi chiamata, un telefono che riaggancia subito dopo aver chiesto un trasferimento rilascia solo se stesso: il trasferimento continua.
Un chiamante che è scomparso. Quando un lato di una chiamata smette di inviare suoni per un minuto (un telefono che ha perso potenza o segnale non invia alcun segnale di riaggancio) mentre l'altro lato continua a inviare, la chiamata viene terminata con il motivo *l'audio del chiamante si è fermato* (o di chi era), nel record della chiamata e nell'evento call.ended che il CAD ascolta (cause, endedBy). Un lato in attesa, in fase di fax o che ha detto di non inviare nulla (un altoparlante di paging) non viene mai terminato in questo modo. Il silenzio continua a inviare pacchetti, quindi un chiamante che non può parlare mantiene la chiamata attiva.
Live transcripts. With Write out 911 calls live on (Settings, AI), each side of an answered 911 call is written out as it is spoken, by the speech-to-text service when one is set (so the audio stays in the building (capitolo 28)), else by the AI service, cut where the speaker pauses, and shown under the call as Live transcript. CAD gets each piece as a call.transcript event: {"call": id, "lines": [{"speaker": "Caller", "side": "caller", "text": "…", "second": 12.4}]}. The calls' audio goes to the AI service while they last, recorded or not. The recording's own transcript still comes when the call ends.
CAD dispatchers by name. A CAD acting through one API token can name the dispatcher behind each request: make the token with Names the person it acts for (Administrators, API tokens) and send X-BitVoice-On-Behalf-Of: <the person's name>. The exposure log, text calls taken, calls ended and the audit log then name that person with the token (*Dana Ruiz via bitdispatcher CAD*). From any other token the header is ignored.
Video e foto del chiamante. In una chiamata di emergenza 911, Invia al chiamante un link video crea un link che solo questa chiamata può aprire: inviato al chiamante dal numero sotto Invia il link da, o letto ad alta voce. Quando non può essere inviato (nessun numero di testo è impostato o il chiamante non ha inviato alcun numero), lo schermo e l'API problem dicono il perché. Il chiamante apre il link nel browser del proprio telefono (nessuna app): Condividi video live invia il video live della fotocamera posteriore (WebRTC, WHIP: RFC 9725) e Invia foto o video invia ciò che ha già catturato, inclusi file di dashcam e action-camera. Nella chiamata:
- il video live mostra LIVE; Guarda il video del chiamante lo riproduce sfocato, e Rivela (potrebbe essere disturbante) lo mostra; Sfoca di nuovo lo nasconde;
- ogni file mostra la sua dimensione, quando è stato catturato (dall'orologio della fotocamera), dove (dal GPS del file, quando disponibile), e il suo SHA-256, preso al suo arrivo, in modo che una copia possa essere mostrata in seguito per essere lo stesso file; Rivela lo apre; Tieni come prova mantiene i file della chiamata oltre il periodo di conservazione;
- il link di visualizzazione sotto di esso (WHEP) consente a CAD, allo schermo di un'unità o a un'altra posizione di guardare lo stesso video live, senza accedere: trattalo come una chiave.
Il video non viene mai preso dalle chiamate: ogni video live ha le sue porte, questo server ne accetta al massimo Video live contemporanei (4 a meno che non venga impostato), ogni richiesta di rimanere sotto Bit rate video, e il video che si ferma per dieci secondi viene terminato. I telefoni dei chiamanti devono raggiungere questo server all'indirizzo Indirizzo link (https) e alle sue porte multimediali (UDP). I file vengono mantenuti Conserva file e log di esposizione giorni (vuoto: fino a quando non vengono eliminati), a parte le chiamate mantenute.
Registrazione del video live. Con Registra il video live del chiamante attivato, il video live del chiamante viene conservato con le foto e i clip come un file per ogni sequenza di video: le stesse immagini inviate dal telefono, non convertite, in un file IVF (H.264 o VP8 con il proprio tempo per ogni immagine), hashato come viene scritto. Un'immagine danneggiata da un pacchetto perso viene omessa invece di essere mantenuta rotta, e il telefono viene richiesto di inviare un'immagine completa per continuare. Rivela lo riproduce (da una copia in WebM o MP4 creata da ffmpeg, le stesse immagini in un altro contenitore; senza ffmpeg solo il file originale viene scaricato); Scarica l'originale fornisce il file hashato. Ffmpeg, VLC e strumenti di video forensi aprono il file originale.
In CAD. L'EIDO (NENA-STA-021) inviato a CAD nomina ogni foto, clip e registrazione, e il video live mentre dura, come dati aggiuntivi per riferimento: urlPurpose è caller-photo, caller-video, caller-video-recording o caller-video-live, e additionalDataByReferenceUrl è il file a /m/{viewToken}/{n} o il video live a /whep/{viewToken}. BitVoice invia a CAD l'EIDO nuovamente quando un file arriva o il video live inizia o si ferma. I link utilizzano Indirizzo link (o l'indirizzo pubblico di questo server); con nessuno dei due, l'EIDO non nomina i media. Ogni recupero attraverso di essi è nel log di esposizione. Il flusso di eventi dice lo stesso (GET /api/events: call.media, call.video). Gli EIDO di BitVoice vengono verificati contro lo schema EIDO pubblicato da NENA.
I link che non esistono vengono ipotizzati non più velocemente dei tentativi di accesso: un indirizzo che continua a provare viene allontanato per un po' di tempo. I file dai chiamanti vengono serviti in una sandbox, mai come pagina di questo server.
Esposizione. Ogni rivelazione di un video live e ogni apertura di una foto o clip viene conteggiata sotto Esposizione nelle chiamate di emergenza 911: chi, quante volte, su quante chiamate. È per i supervisori e il programma di benessere del centro.
Il video che un telefono invia nella chiamata di emergenza 911 (video SIP sul ESInet) può essere guardato allo stesso modo: Guarda lo prende come origine quando non c'è un video link live.
Chiamate con solo un numero. Una chiamata di emergenza 911 che porta un numero di richiamo e nessuna posizione (da un trunk CAMA o una chiamata ESInet la cui posizione non è arrivata) può essere cercata: fornisci Ricerca posizione (ALI) l'indirizzo dell'interfaccia HELD del tuo database ALI o server di posizione (RFC 5985, richiesto dal numero di telefono come specificato in RFC 6155). BitVoice chiede al momento dell'arrivo della chiamata, senza trattenerla, e la posizione appare sulla chiamata quando arriva la risposta; la chiamata dice quando la ricerca ha avuto esito negativo e perché.
Il collegamento ALI legacy. Senza un server HELD, BitVoice può chiedere a un controller ALI o al collegamento dati del database ALI, nel vecchio modo: invia una richiesta e legge il record come testo, sulla rete (indirizzo del collegamento ALI host:port) o da una porta seriale (serial:/dev/ttyUSB0?baud=9600&parity=none, con bits e stop anche; un adattatore seriale USB funziona; su Linux e macOS, non su Windows: lì, utilizzare un convertitore seriale-rete e il suo indirizzo). Richiesta è ciò che inviare: {ani10} il numero di callback a 10 cifre, {ani7} le ultime 7, {pos2} la posizione, STX e ETX ({ani10} quando vuoto). La risposta viene letta fino al suo ETX. I layout ALI differiscono tra provider e stati, quindi si posiziona ogni campo: la sua riga, la sua colonna e la sua lunghezza (0: fino alla fine della riga), da una stampa di uno schermo ALI; Via (intera riga) divide una riga di via in parti, o si posizionano le parti una per una. Incollare un record di esempio e Leggere il campione per vedere le righe con una regola delle colonne e cosa legge ogni campo; Chiedere chiede il collegamento stesso per un numero. L'indirizzo e la posizione del record diventano la posizione della chiamata, il suo nome il nome del chiamante, e la sua classe di servizio viene visualizzata sulla chiamata. I protocolli che non sono una richiesta e una risposta testuale (PAM, E2 e altri vendor proprietari) non sono supportati: richiedono un gateway.
ALI spill su una porta seriale. ALI spill a accetta anche una porta seriale (serial:/dev/ttyS0?baud=9600), per un CAD che legge lo spill da un cavo seriale.
La mappa. Sotto Mappa nelle impostazioni 911, fornire a BitVoice le sue tile di mappa: un file .mbtiles di tile raster (PNG, JPEG o WebP) su questo server, per una mappa che funziona senza internet (il tuo team GIS, TileMill, gdal2tiles o un fornitore di tile crea uno della tua area), o un server di tile con {z}, {x} e {y} nel suo indirizzo (quello della tua contea, o uno commerciale: fai attenzione ai termini; i server OpenStreetMap pubblici non sono per questo). In entrambi i modi i browser dei call-taker recuperano le tile da BitVoice solo: legge il file o recupera dal server di tile e mantiene le ultime tile in memoria. La stessa mappa mostra le posizioni radio sulla console radio. Le tile vettoriali non sono supportate.
Il log i3 mantiene gli eventi i3 NENA di ogni chiamata (inizio chiamata, risposta, posizione, EIDO inviato), un file al giorno. Tempi di risposta mostra quante chiamate sono state risposte entro il tuo obiettivo (NENA: 90% entro 15 secondi, 95% entro 20), quelle abbandonate e il tempo di risposta medio di ogni call-taker. Una riga al giorno (CSV) scarica i conteggi che gli uffici 911 statali chiedono di solito (chiamate, risposte, abbandonate, entro l'obiettivo e entro 20 secondi, medio e più lungo attesa) per i giorni scelti; Una riga per chiamata (CSV) elenca ogni chiamata 911 con quando è stata risposta, da chi e se era testuale. Ogni stato ha il suo modulo: disponi il tuo sotto Layout di report. Una chiamata testuale presa in questo schermo o attraverso un CAD conta sotto la persona che l'ha presa; una che nessuno ha preso prima che il chiamante lasciasse conta come abbandonata.
Layout di report. Nuovo layout di report dispone un report come il modulo del tuo stato o contea: cosa è ogni riga (un giorno, una settimana, un mese, un'ora del giorno, un call-taker, o una riga in tutto), una riga totale e le colonne, in ordine, ognuna con il suo titolo se il modulo lo esprime diversamente: chiamate, risposte, abbandonate (un conteggio o una quota), risposte entro così tanti secondi (un conteggio o una quota; i secondi sono tuoi, quindi 10 e 20 per un modulo e 15 e 40 per un altro), risposte dopo più di così tanti secondi, il tempo di attesa medio e più lungo, il tempo entro cui il 90% è stato risposto, la lunghezza media della chiamata e chiamate testuali (TTY, testo in tempo reale, testo a 911). Un tempo di attesa conta dall'arrivo della chiamata alla risposta di un call-taker. Scegliere un layout e date e Esegui per leggerlo qui, Foglio di calcolo (CSV) per scaricarlo o Pagina da stampare per una pagina semplice da stampare o salvare come PDF. I layout sono mantenuti con le impostazioni, quindi vanno con un backup e in Git.
Chiamate TTY. I chiamanti sordi o ipoacusici possono chiamare il 911 con un TTY (un telefono testuale, Baudot a 45,45 bit/s). BitVoice ascolta per uno su ogni chiamata 911 della voce, dal primo momento: ciò che il chiamante digita appare sulla chiamata mentre digita, sotto Testo, con una pausa o una nuova riga che inizia una nuova riga. Una chiamata silenziosa può essere un TTY in attesa di te: una volta che rispondi, Rispondi con TTY invia testo anche prima che ne arrivi alcuno. Digitare la risposta e premere Invia: va al chiamante come toni TTY (la voce del call-taker è mutata mentre lo riproduce, poiché i TTY si alternano), in maiuscolo, e si applica l'etichetta TTY: terminare ogni turno con GA ("vai avanti"), e SK quando si chiude. I caratteri che un TTY non può mostrare vengono omessi. La parola, la musica e i toni di tocco non vengono mai presi per testo TTY: un carattere conta solo quando ogni bit di esso è un pulito tono TTY. La conversazione viene mantenuta con la chiamata nella cronologia delle chiamate e nel log i3 (un evento MessageLogEvent per turno). Deseleziona Ascolta TTY sulle chiamate 911 nelle impostazioni 911 per interrompere l'ascolto.
Trasferimenti. Una chiamata di emergenza 911 inoltrata a un'altra PSAP mantiene la sua posizione: il PIDF-LO accompagna la chiamata.
Testo in tempo reale (RTT). Un telefono che invia testo accanto alla sua voce (RFC 4103, come i telefoni VoLTE e le chiamate NG911) ha il suo testo risposto da BitVoice stesso, poiché i telefoni da tavolo non ne visualizzano nessuno: ogni carattere appare sulla chiamata mentre il chiamante digita, e la tua risposta torna indietro come testo. I pacchetti persi vengono ripristinati dalla ridondanza RTT; il testo perso oltre questo limite viene visualizzato come .
Testo al 911. Un centro di controllo dei testi (TCC) invia testi alla PSAP come una sessione senza voce (MSRP, RFC 4975, sul tronco ESInet). BitVoice risponde e attende le chiamate 911 contrassegnate Testo al 911, con i testi che sono arrivati; nessun telefono squilla. Ricevi questo testo ti rende il call-taker (il tempo di risposta viene conteggiato allora, e CAD riceve l'ALI spill e l'EIDO allora); rispondi nella casella sotto la conversazione e Fine conversazione quando hai finito. La chiusura della sessione da parte del TCC la conclude anche. Un messaggio SIP inviato all'interno di un dialogo di chiamata 911 viene preso come testo del chiamante allo stesso modo, e le risposte tornano indietro tramite messaggio SIP. I testi vengono presi solo dai tronchi contrassegnati Dal ESInet.
Un TCC che offre la sessione su TLS (TCP/TLS/MSRP, percorsi msrps:, RFC 4975 sezione 14) la ottiene su TLS, con il certificato di questo server (Impostazioni › Certificati; senza uno tale un'offerta viene rifiutata). Il certificato del TCC deve essere quello che la sua offerta nomina (a=fingerprint, SHA-256); quando non ne nomina nessuno, deve essere tracciato alle radici dell'Agenzia di credenziale PSAP impostate sotto i servizi core, se sono state impostate. La risposta di BitVoice nomina il suo certificato allo stesso modo.
L'intera conversazione, comunque sia arrivata, viene conservata con la chiamata nella cronologia delle chiamate e nel log i3.
Cosa non c'è ancora: il passaggio di una sessione di testo attraverso il core NG911 (l'ESRP instrada le chiamate vocali; una sessione di testo viene risposta dove arriva); gli abbonamenti standard di conveyance EIDO (NENA-STA-024 WebSocket): BitVoice pubblica gli EIDOs su un indirizzo.
Console di dispacciamento radio
/radioI dispacciatori parlano sui canali radio dalla stessa cuffia dei loro telefoni. BitVoice raggiunge le radio attraverso gateway radio-over-IP (RoIP); la rete radio stessa rimane con chi la gestisce.
Impostazione. Sotto Impostazione console, scegli un numero di console (800, ad esempio) e aggiungi ogni canale: il suo nome, la porta su questo server che il gateway invia l'audio del canale e l'indirizzo e la porta del gateway per l'audio in uscita. Sul gateway: RTP, G.711 µ-law, all'indirizzo del server e a quella porta; attiva la radio sulla voce (VOX). Ogni canale utilizza la sua porta e la successiva, al di fuori dell'intervallo utilizzato dalle chiamate telefoniche.
Unione. Un dispacciatore chiama il numero di console dal telefono della scrivania o preme Unisci con il telefono del browser. Quindi sente il traffico di ogni canale miscelato insieme; In ascolto / Silenziato su un canale lo esclude dalla sua cuffia. La lampada su un canale si accende mentre sta ricevendo.
Parlare. Tieni premuto il pulsante Tieni per parlare di un canale (o selezionalo e tieni premuto la barra spaziatrice): la tua voce va solo su quel canale e il canale mostra TX con la tua estensione. Un dispacciatore parla su un canale alla volta; il pulsante è grigio per gli altri mentre qualcuno sta parlando. Nulla viene inviato a un canale mentre nessuno sta parlando, quindi una radio a voce non viene mai trattenuta sulle onde.
Patching. Premi Patch su un canale, poi Patch qui su un altro: i due si sentono a vicenda (un canale antincendio e un canale di mutuo aiuto, ad esempio) fino a quando non premi Unpatch.
Gruppi di talk P25. Un canale può anche essere un gruppo di talk P25, unito direttamente tramite l'ISSI (TIA-102.BACA, l'interfaccia tra sottosistemi P25; con Invia la parola PTT della console CSSI attivata, BitVoice aggiunge la parola del sottosistema della console a ogni richiesta). Scegli Un gruppo di talk P25 (ISSI), fornisci l'ID del gruppo di talk, l'indirizzo SIP e l'ID dell'RFSS che ospita il gruppo di talk e una porta per la sua voce. Sotto Questa console nel sistema P25, inserisci il WACN e l'ID del sistema, l'ID RFSS che l'amministratore P25 ha assegnato a questa console, l'ID dell'unità che i dispacciatori trasmettono e la porta SIP che l'ISSI utilizza qui; il sistema P25 deve conoscere questo server come un RFSS a quel indirizzo. La tile mostra P25 mentre la chiamata di gruppo è attiva (P25 disattivato e il motivo quando non lo è) e l'ID dell'unità della radio che parla, in rosso con EMERGENCY quando è una chiamata di emergenza. Tieni per parlare chiede al RFSS di casa il canale (Chiedendo il canale...); la tua voce va una volta che lo concede e se rifiuta (qualcuno con una priorità più alta lo ha) la tile dice così. La voce viene convertita in e da IMBE, il vocoder P25, in BitVoice.
Gruppi di discussione crittografati. Sotto Chiavi di crittografia, aggiungi ogni chiave di traffico fornita dal tuo negozio di radio: un nome, l'algoritmo (AES-256, DES-OFB o triple DES), l'ID della chiave e la chiave stessa in esadecimale (TIA-102.AAAD). Una chiave non viene più visualizzata una volta salvata, nemmeno agli amministratori, e lasciare il campo vuoto la mantiene. La console riceve una trasmissione crittografata quando dispone della chiave con quell'algoritmo e ID della chiave: la tile mostra un lucchetto e l'algoritmo accanto all'unità che parla. Senza la chiave, la trasmissione è muta, non viene mai riprodotta come rumore e la tile dice nessuna chiave: muta. Per trasmettere crittografato su un gruppo di discussione, scegli una chiave sotto Trasmetti per quel canale; la tile mostra quindi TX AES-256 (o l'algoritmo scelto). Un'esportazione completa della configurazione (Impostazioni, backup di un amministratore) trasporta le chiavi, quindi mantieni quei file al sicuro come le chiavi.
Chiamate private. Con la console su un sistema P25, Chiama una radio nella barra della tua posizione chiama una radio tramite il suo ID di unità (attiva Emergenza per chiamarla come un'emergenza). La chiamata diventa una tile a sé stante, Chiamata privata: unità 197, con Tenere per parlare come qualsiasi canale e Riagganciare. Le radio possono anche chiamare la console, sull'ID di unità dei dispatcher che trasmettono: la chiamata appare come una tile contrassegnata chiamata in arrivo (in rosso con EMERGENZA quando la radio ha chiamato come un'emergenza), ogni dispatcher la sente e la chiamata termina quando una delle due parti riaggancia. Sotto Chiamate private nelle impostazioni P25 della console, fornisci l'indirizzo SIP e l'ID dell'RFSS che ospita le radio (vuoto utilizza l'RFSS di casa del primo gruppo di discussione) e, se le chiamate private dovrebbero essere crittografate, la chiave da inviare con loro.
Toni di allarme. Invia un tono di allarme... su un canale invia uno dei seguenti: Allarme 1, un tono costante da 1000 Hz per 3 secondi; Allarme 2, un tono ondulato tra 1000 e 1500 Hz; Allarme 3, impulsi da 1000 Hz; o un breve Beep. Il tono tiene occupato il canale mentre si riproduce (la tile mostra tono e la tua estensione), ogni dispatcher che monitora il canale lo sente andare in onda e su un gruppo di discussione P25 viene trasmesso non appena l'RFSS di casa concede il canale.
Emergenze. Quando una radio trasmette come un'emergenza (il suo pulsante di emergenza), la sua tile diventa rossa con EMERGENZA e l'ID di unità, il log del server lo annota e CAD viene informato immediatamente (vedi sotto). L'emergenza rimane sollevata su ogni console dopo che la radio ha smesso di parlare, fino a quando un dispatcher preme Conferma: la tile dice quindi chi l'ha confermata e quando, e CAD riceve un evento radio.emergency.ack. Confermare nomina l'unità visualizzata: se un'altra unità ha sostituito la sua emergenza un attimo prima, BitVoice rifiuta e la tile mostra la nuova unità, quindi un'altra emergenza non viene mai silenziata per errore. CAD può confermare attraverso l'API nello stesso modo: POST /api/radio/channels/{id}/ack con {"unit": "bee07.1d5.00044d"} (o l'ID della radio, "1101") risponde 409 quando l'emergenza del canale è ora di un'altra unità; senza un corpo conferma qualsiasi cosa il canale contenga.
Simulselect. Per dire una cosa su più canali contemporaneamente, seleziona seleziona su ogni canale, quindi tieni premuto Parla su N canali nella barra sopra le tile. È tutto o niente: se un altro dispatcher sta parlando su uno di essi, nessuno viene attivato e ti viene detto quale.
Posizioni radio. Le radio segnalano la loro posizione sul lato dati del sistema radio, non sul lato vocale che la console si unisce: servizio di localizzazione P25, LRRP di Motorola o un servizio specifico del fornitore, raccolto dal gateway di dati o AVL del negozio di radio. Fai in modo che il gateway (o uno script piccolo accanto ad esso) invii ogni rapporto a BitVoice con un token API: POST /api/radio/locations con {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, o un elenco di fino a 500 (velocità in km/h, direzione in gradi, precisione in metri; tutti e tre e il tempo sono opzionali). Posizioni radio sulla console elenca quindi l'ultima posizione di ogni radio, con il suo nome, e CAD riceve ogni posizione come un evento radio.location. BitVoice non decodifica LRRP o il servizio di localizzazione P25 di per sé.
Nomi radio. Sotto Nomi radio, assegna nomi alle radio in base al loro ID di unità P25 (1205 è "Engine 5", ad esempio): la tile mostra il nome accanto all'unità mentre parla, e il log radio e gli eventi CAD li trasportano.
Log radio e registrazione. Attiva Registra ogni trasmissione sotto Registrazione e CAD: ogni trasmissione su ogni canale, sentita o inviata, viene mantenuta come una registrazione con una riga nel Log radio: quando, il canale, chi (l'unità della radio o l'estensione del dispatcher), quanto dura, e se era un'emergenza, un tono di allarme, crittografata o una chiamata privata. Una trasmissione sentita inizia con il primo discorso e termina 1,5 secondi dopo l'ultima parola. Trova un'unità, un dispatcher o un canale con la casella di ricerca e premi Riproduci per ascoltare. Le registrazioni vengono mantenute per quanto vengono mantenute le registrazioni delle chiamate (Impostazioni, Registrazione).
Dati radio a CAD. Inserisci l'indirizzo di CAD sotto Invia eventi radio a CAD a (e un segreto condiviso se CAD lo richiede; viene inviato come token bearer e non verrà più visualizzato). BitVoice invia quindi ogni evento (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission e radio.location) come JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit quando una radio inizia a parlare su un canale (il suo ID unità, WACN, sistema, canale, emergenza, crittografia), radio.emergency per un'emergenza (tentato tre volte se CAD non risponde) e radio.transmission per ogni trasmissione completata come appare nel log radio. CAD può anche leggere il log stesso con GET /api/radio/log (filtri: channel, q, since, until). Un CAD che è down non blocca mai la console. Le posizioni GPS delle radio P25 non fanno parte di questo: viaggiano su servizi di localizzazione P25 (dati pacchetti), non sulla voce ISSI.
Non ancora disponibile: voce P25 Fase 2 (TDMA) nel suo own half-rate vocoder. Un sistema Fase 2 funziona con la console quando i suoi talkgroup ISSI trasportano voce full-rate (Fase 1) o il suo transcoder li converte, il che è comune: chiedi al tuo amministratore P25. Un talkgroup la cui voce arriva in blocchi che questa console non decodifica (voce half-rate inviata non trascodificata, probabilmente) mostra Silenzioso qui sulla sua tile mentre una radio parla, in modo che nessuno prenda il silenzio per un canale tranquillo. La decodifica richiede due cose che BitVoice non ha: il vocoder half-rate (AMBE+2, brevettato fino al 2028: una licenza dal suo proprietario o un chip vocoder hardware licenziato) e il formato di blocco di voce half-rate ISSI (TIA-102.BACA-B, venduto da TIA, non pubblico).
**Servizi core NG911** (ECRF, ESRP, LVF, BCF, LIS, registrazione)
/corePer un'autorità di emergenza 911 statale o regionale che esegue il proprio core NG911: BitVoice risponde a LoST come ECRF e instrada ogni chiamata 911 come ESRP alla PSAP che serve il chiamante.
Aree di servizio. Esporta i tuoi confini da GIS come poligoni GeoJSON (confini PSAP per urn:service:sos; aree di polizia, pompieri o EMS per urn:service:sos.police e gli altri) e caricali su Servizi core. Le proprietà name, uri e number di un poligono vengono lette; fornisci un URI PSAP predefinito per quelli senza uno. Modifica un'area per aggiungere le città o le contee che serve, per i chiamanti la cui posizione è un indirizzo civico solo. Prova un posto mostra quale area risponde a una posizione o a una città, come una query LoST.
L'ECRF. Attiva Rispondi alle query LoST e elenca gli indirizzi che possono chiedere (la tua ESInet): altri elementi inviano findService a /lost (RFC 5222) e ottengono l'URI della PSAP. Un servizio specifico (sos.police) viene risposto dalle aree proprie per primo, poi da quelle di sos. Un posto che nessuna delle tue aree copre può andare al Forest guide (RFC 5582: il directory nazionale degli ECRF): una query ricorsiva viene eseguita lì per conto del chiedente e la risposta viene restituita (entrambi i server elencati nel percorso della risposta), ogni altra query ottiene un reindirizzamento ad esso e una query che è già passata attraverso questo ECRF viene rifiutata come un loop.
L'ESRP. Elenca le PSAP: ogni URI della PSAP (come le aree lo nominano), il tronco che la raggiunge e la PSAP di overflow, e scegli la PSAP predefinita. Quindi invia le chiamate 911 in ingresso dell'ESInet a ESRP in Call routing (capitolo 8). Ogni chiamata va alla PSAP per la sua posizione (dalle aree di questo server, o un ECRF esterno tramite LoST), con la sua posizione e il servizio che ha richiesto trasportati; quando quella PSAP non la accetta, al suo overflow; senza posizione, o da un posto che nessuna area copre, alla predefinita. Ogni decisione è nel log i3 su 911 calls (capitolo 77).
Regole di policy. Una volta che l'ECRF ha selezionato una PSAP, le regole sotto Regole di policy vengono controllate in ordine e la prima la cui condizioni tutte valgono decide: invia la chiamata a un'altra PSAP, o rifiutala come occupata. Una regola può guardare al servizio (chiamate di emergenza antincendio solo, ad esempio), la PSAP scelta dall'ECRF, un programma (mentre il centro di turno notturno è chiuso), chiamate senza posizione, chiamate contrassegnate sospette dal BCF e il tronco su cui la chiamata è arrivata. Ogni decisione è nel log i3 come un evento RouteLogEvent che nomina la regola.
Controllo dei confini (BCF). Con Verifica le chiamate dall'ESInet attivato, ogni chiamata da un trunk ESInet viene controllata per prima: gli indirizzi sotto Rifiuta sempre vengono rifiutati, e così anche un indirizzo che avvia più chiamate al minuto o tiene più chiamate contemporaneamente di quanto consentito (un attacco di negazione del servizio di telefonia invia ondate di chiamate da poche fonti). Le chiamate rifiutate ricevono un 503 con Retry-After. Attivare Lascia passare la chiamata contrassegnata come sospetta per inviare tali chiamate invece di rifiutarle e lasciare che una regola di policy decida (ad un centro che le scherma, o rifiuta); un vero chiamante in un'ondata non viene perso. Controllo dei confini: ultimo elenca ciò che è stato rifiutato o contrassegnato. Verifica le firme STIR/SHAKEN controlla l'ID del chiamante firmato (l'intestazione Identity) di ogni chiamata che lo trasporta, contro le radici STI impostate sotto la schermatura delle chiamate nelle impostazioni: una chiamata la cui firma non è valida passa contrassegnata come sospetta, per una regola di policy che la invii da un'altra parte, e viene elencata nel log del BCF; una chiamata di emergenza 911 non viene mai rifiutata per questo, e le chiamate non firmate (la maggior parte di esse oggi) vengono lasciate invariate. Ogni chiamata esce da BitVoice come una nuova richiesta propria (BitVoice è un agente back-to-back), trasportando solo gli header e i body che BitVoice comprende e passa: la posizione, i dati aggiuntivi e la sessione. Ispeziona i media controlla ogni pacchetto RTP di una chiamata ESInet prima che venga utilizzato o passato: i pacchetti da un indirizzo diverso da quello fornito dal SDP della chiamata, con un tipo di payload non nominato nell'offerta, con lunghezze di header (CSRC, estensione, padding) che non corrispondono al pacchetto, più grandi di Pacchetto più grande (1.500 byte se vuoto), o oltre Pacchetti al secondo (150 se vuoto; G.711 a 20 ms invia 50) vengono rifiutati e conteggiati. Il primo di ogni tipo, poi il 10°, il 100° e così via, va in Controllo dei confini: ultimo (come *media rifiutati*) e nelle note della chiamata. La chiamata non viene mai conclusa per i suoi media: il chiamante mantiene i pacchetti validi. Le chiamate da tronchi CAMA provengono dal programma della scheda locale e non vengono ispezionate.
Convalida degli indirizzi (LVF). Carica i dati degli indirizzi GIS 911 come GeoJSON, nel modello di dati GIS NENA (NENA-STA-006): linee centrali stradali con FromAddr_L, ToAddr_L, Parity_L, IncMuni_L e il resto, e punti di indirizzo di sito/struttura con Add_Number, St_Name, Inc_Muni. Una query LoST con validateLocation="true" ottiene quindi le parti valide, non valide e non controllate dell'indirizzo nella sua risposta (RFC 5222), in modo che i carrier e i server di localizzazione possano correggere un indirizzo prima che una chiamata di emergenza 911 lo utilizzi. Verifica un indirizzo fa lo stesso qui: un punto di indirizzo esatto è la corrispondenza migliore, poi un segmento stradale il cui intervallo sul lato destro della strada contiene il numero (rispettando i lati dispari e pari); le ortografie come Street e St, North e N vengono trattate allo stesso modo.
Il servizio di logging i3. Attiva Esegui un servizio di logging i3: gli altri elementi del tuo core (ESRP, BCF, PSAP) inviano gli eventi di log (NENA-STA-010), ciascuno firmato come un JWS con il certificato dell'elemento nel suo header x5c, tramite POST a /i3log/LogEvents dagli indirizzi consentiti. Ognuno arriva come un JWS nella forma JSON appiattita (firmato, o non firmato con algoritmo none, che un servizio di logging può accettare: contrassegnato come non tracciato al PCA), viene controllato e mantenuto, e la risposta è il suo ID di evento di log. Leggi nuovamente con GET /i3log/LogEvents/{logEventId}; elenca con GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); trova gli ID di una chiamata o di un incidente con /i3log/LogEventIds, /CallIds, /IncidentIds e /AgencyIds; e leggi la conversazione testuale di una chiamata con /i3log/Conversations?callId=. GET /i3log/Versions dice quale versione parla questo servizio. Eventi di log ricevuti elenca gli eventi di una giornata con chi ha firmato ciascuno. Ogni risposta viene controllata contro la definizione OpenAPI pubblicata da NENA del servizio; il servizio non è stato ancora provato con elementi di un altro fornitore.
Agenzia di credenziale PSAP. Incolla i certificati radice della PCA sotto Radici dell'Agenzia di credenziale PSAP: un evento di log firmato viene quindi accettato solo quando il certificato del firmatario si catena a uno di essi (e non è scaduto), e viene visualizzato con PCA. Senza di essi, la sola firma viene controllata, e l'evento viene visualizzato come non tracciato al PCA.
Registri di posizione (LIS). Attivare Rispondi alle richieste di posizione (LIS) e caricare un foglio di calcolo (CSV) dei registri di posizione: una riga di intestazione, e in ogni riga uno di un numero (i dati ALI esportati), una rete (un intervallo di indirizzi come 10.20.3.0/24, o un indirizzo: un edificio, un piano, una VLAN, una rete Wi-Fi) o un indirizzo mac (un dispositivo: un telefono da tavolo, una porta di switch di una presa di muro), quindi l'indirizzo come hno, rd, sts, unit, floor (o flr), a3 (città), a1 (stato), pc e paese, con lat, lon e radius dove noti (altri nomi, come telefono, via, cap, subnet e ip, sono compresi anche). I PSAP, le porte di rete legacy e i telefoni chiedono quindi /held (HELD, RFC 5985) dagli indirizzi consentiti e ottengono un PIDF-LO. Una richiesta nomina il dispositivo con il numero di telefono, l'indirizzo IP o l'indirizzo MAC (RFC 6155); una richiesta che non nomina nessuno viene risposta per l'indirizzo da cui proviene, come un LIS in una rete di ufficio o campus. Un indirizzo viene localizzato dalla rete più stretta che lo contiene, quindi un piano /24 vince su un campus /16. Un dispositivo senza registrazione ottiene locationUnknown di HELD; un'identità di altro tipo (un NAI, una porta) ottiene notLocatable. Un PSAP BitVoice punta il suo Cerca posizione (ALI) qui. Cerca un numero, indirizzo o indirizzo MAC controlla un record e dice quale rete lo ha generato. Un numero, rete o indirizzo MAC elencato nuovamente sostituisce il suo vecchio record; Sostituisci ogni record ricomincia da capo. Solo gli indirizzi consentiti vengono risposti: un LIS che risponde per qualsiasi indirizzo a cui viene chiesto non deve essere aperto a chiunque.
The i3 web services. Under NENA i3 web services, switch on what this core offers the other elements of your ESInet, at /i3/<service>/v1, for the addresses under May ask only. Each answers as NENA's published OpenAPI definitions say (NENA-STA-010.3, the NENA911 repositories), and each has a tab under i3 web services:
- Policy Store (
/i3/PolicyStore/v1/Policies,/PolicyEnums): agencies store, update and delete their routing policies (Policy Routing Rules), each a JWS signed by the agency that owns it (the signer's certificate must name the owner, and come from the PCA when its roots are set). A policy is kept byte for byte as it came. The ESRP runs them: the OriginationRoutePolicy for This ESRP's incoming queue first, else the NormalNextHopRoutePolicy of the PSAP the ECRF chose. Of the rules whose conditions hold, the highest priority acts; when its route fails (busy, no answer within its rnaTimer, 20 seconds when it gives none), the next one does; a BusyAction answers 600 Busy Everywhere. Conditions taken: time periods, SIP headers, Additional Data, body types, location (circle or civic), call suspicion, queue state (BitVoice's own PSAPs), LoST service URN and Normal-NextHop, call source, request URI, incoming queue, and the SDP offer's media and languages; service state and security posture are taken as unknown (Unreachable and Green, as the standard says). Body-part, CAP and calling-number-verification conditions are not run: they count as false. Without a stored policy, the Policy rules above decide. The tab lists what is stored and lets you paste one, or sign one with this server's certificate. - Discrepancy reports (
/i3/DiscrepancyReports/v1): other agencies report problems with this server's services; each shows on the tab, where you answer it with a resolution, sent to the reporter. File a report sends one to another agency's DR service; its answer and later resolution show under Reports this server filed. - Bad actors (
/i3/BadActor/v1/BadActors, with the BCF): each call the BCF passes on carries its source's ID (Call-Info: <sip:ID>;purpose=emergency-source); a PSAP that finds that source attacking reports the ID, and the BCF refuses its calls, or raises their suspicion score for the policies, for A report lasts hours. Lift ends a report early. - Geocode and MSAG conversion (
/i3/Gcs/v1,/i3/Mcs/v1): civic address to position and back from the LVF's address points (the nearest within 150 m), and civic address to MSAG address (120 N MARKET STREET, HARRISBURG CITY, PA) and back, from the centerlines'MSAGComm_L/MSAGComm_Rfields. Answers are JSON objects, or XML when the asker asks for it. - Additional Data (
/i3/Adr/v1/AdditionalData?callerUri=): blocks you keep by caller (RFC 7852 XML), served by value, or by reference for an asker that wants JSON. One block per caller is served by value: the first kept. - Locator (
/i3/ServiceAgencyLocator/v1): this agency's own record (its ID from the 911 calls page, with its logging and discrepancy addresses) and the agencies you add. - Dequeue (
/i3/DequeueRegistration/v1/Registrations): positions or PSAPs sign up to take a queue's calls (this ESRP's queue, or a PSAP's URI); the ESRP sends calls for that queue to them, the most preferred first (preference 5 before 1), over the PSAP's trunk. - Test calls: a PSAP asks this core to send it test calls (
/i3/TestCall/v1/SendTestCalls/{agency ID}: every so many minutes, five at least, between two dates, with a location); BitVoice places each tourn:service:test.sosover the PSAP's trunk and keeps what came back. Place one now tries one. - PSAP states (SIP, not REST): Subscribe to each PSAP's queue and service state has the ESRP SUBSCRIBE (RFC 6665) to every PSAP listed, over its trunk, for
emergency-QueueStateandemergency-ServiceState(NENA-STA-010.3 4.2.1.3 and 2.4.2), for an hour at a time, renewed before it ends. What the PSAPs NOTIFY shows under PSAP states and is what the policy rules' queue state, service state and security posture conditions read. A PSAP whose queue says Inactive, Disabled, Full or ResourceExhausted (or holds its most calls), or whose service says Unstaffed, ScheduledMaintenanceDown, Overloaded, GoingDown or Down, is passed over for its overflow, and the call's notes say so; when every PSAP in the chain says it cannot take calls, the call is sent as listed anyway, never left with nowhere to go. A PSAP that does not answer the SUBSCRIBE is Unreachable (as the standard says a subscriber must assume) and is tried again each minute; one that refuses it (489, 603 ...) is tried again in ten minutes. - This server's states: Tell other elements this server's element, service and queue state answers SUBSCRIBEs for
emergency-ElementState,emergency-ServiceStateandemergency-QueueStatefrom the addresses under May ask (others get 603 Decline; a queue that is not this server's incoming queue, 488). The queue's length is the 911 calls not yet answered here, and it says Full at Most calls waiting in the queue (20 when blank); the service says Overloaded at this server's call limit, else Normal. NOTIFYs go out when the state changes, at most one a second, and once a minute regardless (the standard's default rates); their bodies are checked against NENA's notify-body schemas.
Chiamate di test a un PSAP. Un PSAP di BitVoice risponde a una chiamata di test dall'ESInet (urn:service:test.sos, sezione 9 della NENA-STA-010.3, RFC 6881) da solo: la sua risposta dice il nome del PSAP, il servizio e la posizione della chiamata, i primi tre pacchetti di suono vengono restituiti e chiude la chiamata. Una seconda prova dallo stesso posto entro due minuti viene rifiutata (486), così come una quinta alla volta. Un ESRP passa una chiamata di test come una vera chiamata, ancora contrassegnata come test. Disattivare Rispondi alle chiamate di test nella pagina delle chiamate di emergenza per rifiutarle (404).
Algoritmi JWS: la NENA-STA-010.3 richiede EdDSA con Ed448. La libreria standard di Go, che BitVoice utilizza per ogni passaggio crittografico, ha Ed25519 ma non Ed448, quindi le firme EdDSA vengono verificate con chiavi Ed25519 e vengono accettate anche le firme ECDSA e RSA; un certificato Ed448 viene rifiutato.
Hai voluto dire. Un indirizzo non valido ottiene fino a cinque suggerimenti dai dati stessi, il migliore per primo, ognuno con la motivazione: una via a una o due lettere di distanza (una coppia di lettere scambiate conta come una), la stessa via nella città successiva o il numero più vicino della via, sullo stesso lato quando possibile (i numeri pari rimangono pari). Usa riempie una suggerimento. Una posizione con l'indirizzo. Fornisci una latitudine e una longitudine (e il raggio della posizione, quando noto) con l'indirizzo: la posizione viene verificata contro il punto di indirizzo dell'indirizzo stesso, consentendo il suo raggio e 100 m in più (la dimensione di un lotto e l'errore GIS). La risposta fornisce la distanza e se i due sono d'accordo e, se non lo sono, il punto di indirizzo più vicino alla posizione. Un indirizzo noto solo dalle linee centrali della strada non ha un punto da verificare e la risposta lo dice. La funzione validateLocation di LoST non ha spazio per nessuno dei due, quindi i carrier che chiedono tramite LoST ottengono solo la convalida.