Manuale di BitVoice

Un sistema telefonico open-source in un unico programma, configurato interamente nell'interfaccia web: estensioni, code, sale conferenze, portale per il personale, organizzazioni ospitate e tracciamento del laboratorio di sicurezza pubblica.
79 capitoli · 63 figure · 53 migliaia di parole · BioDream LLC

Contenuti

  1. Parte 1. Iniziare
    1. 1. Iniziare
    2. 2. Quanto è maturo ogni parte
    3. 3. Estensioni
    4. 4. Collegamento dei telefoni
    5. 5. Telefoni Skinny e gateway MGCP
    6. 6. Schede di telefonia
    7. 7. Tronchi
    8. 8. Routing delle chiamate
    9. 9. Set di PIN
    10. 10. Ricerca dell'ID del chiamante
    11. 11. Chiamate di emergenza
    12. 12. Siti e ufficio 911
    13. 13. Salute
    14. 14. Impostazioni
    15. 15. Le schermate nel tuo linguaggio
  2. Parte 2. Dove vanno le chiamate
    1. 16. Flusso di chiamata
    2. 17. Gruppi di chiamata
    3. 18. Code
    4. 19. Compositore di chiamate in uscita
    5. 20. Suoni: promemoria, lingue e musica in attesa
    6. 21. Menu (operatore automatico)
    7. 22. Elenco telefonico per nome
    8. 23. Accesso telefonico (DISA)
    9. 24. Bot vocali (AudioSocket)
    10. 25. Interruttori giorno/notte
    11. 26. Programmi
    12. 27. Script (JavaScript e Lua)
    13. 28. Receptionist AI, triage della casella vocale e richiesta
    14. 29. Casella vocale
    15. 30. Richiami
    16. 31. Collegamenti di chiamata e chiamata dal sito web
  3. Parte 3. Chiamate quotidiane
    1. 32. Codici di funzione, inoltro e numeri di composizione rapida
    2. 33. Il portale dello staff
    3. 34. Sale conferenze
    4. 35. Paging e altoparlanti
    5. 36. Hot desking
    6. 37. Chiamate d'albergo e sveglie
    7. 38. Contatti su ogni telefono
    8. 39. Calendari e non disturbare
    9. 40. App mobili
    10. 41. Chiamate video
    11. 42. Fax: invio e ricezione, macchine fax e telefoni analogici
    12. 43. Inbox: chat web, WhatsApp e Messenger
    13. 44. Messaggistica aziendale (SMS)
    14. 45. Trasferimento di brevi riassunti
  4. Parte 4. Clienti e informazioni
    1. 46. Chiamate in corso
    2. 47. Cronologia di chiamate
    3. 48. Cronologia del cliente
    4. 49. CRM: schede dei chiamanti e registrazione delle chiamate
    5. 50. Intuito della chiamata per i supervisori
    6. 51. Registrazione delle chiamate e pagamenti con carta
    7. 52. Consenso alla registrazione
    8. 53. Qualità della chiamata
    9. 54. Costi e budget
    10. 55. Reputazione dell'ID del chiamante e chiamate con marchio
    11. 56. Protezione anti-spam e STIR/SHAKEN
  5. Parte 5. Esecuzione di BitVoice
    1. 57. Amministratori
    2. 58. Accesso singolo
    3. 59. Elenco aziendale (Active Directory e LDAP)
    4. 60. Sicurezza
    5. 61. Modifiche, backup e importazione
    6. 62. Aggiornamenti
    7. 63. Più server come un unico sistema telefonico
    8. 64. Dove vengono conservati i dati (SQLite o PostgreSQL)
    9. 65. Ostare altre organizzazioni
    10. 66. Codec e suono
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importa
    13. 69. Configurazione come codice
    14. 70. Compatibilità con Asterisk (AMI, ARI e AGI)
    15. 71. Assistenti AI (MCP)
    16. 72. Archivio
    17. 73. Conservazioni legali
    18. 74. Metriche: Prometheus, OpenTelemetry, Grafana, SNMP e registri di chiamata
    19. 75. Generatore di chiamate
    20. 76. Traccia SIP
  6. Parte 6. Sicurezza pubblica: il percorso del laboratorio
    1. 77. Chiamate 911 (il profilo 911)
    2. 78. Console di dispacciamento radio
    3. 79. **Servizi core NG911** (ECRF, ESRP, LVF, BCF, LIS, registrazione)
Parte 1

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.

Capitolo 1

Iniziare

Nell'interfaccia web: /

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.

WHO CONNECTSWHERE CALLS GODesk phonesYealink, Poly, Grandstream, SnomBrowsers and appsWebRTC, iOS, AndroidPhone companiesSIP and IAX2 trunksESInet and radio911 calls, P25, RoIPBitVoiceRoutes and menusQueues and roomsRecords and logsConverts codecsKeeps 911 workingPeople who answerextensions, ring groupsVoicemail and AItranscripts, receptionistCAD, CRM, Teamsevents, caller cardsRecordshistory, recordings, faxes
Figura 1. Where BitVoice sits: phones and carriers on one side, people and systems on the other

Cosa serve

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

Extensionsone per person1Phonesconnect each one2Trunkyour carrier3Call routingwhere calls go4Healthwhat is missing5Every step has a page in the menu; Health lists anything still missing, emergency calling first.
Figura 2. The first hour: five steps from a new install to a working phone system
  1. Estensioni: una per persona o scrivania. Ognuna ha un numero e una password SIP. Aprire Estensioni (capitolo 3)
  2. Telefoni: connettere un telefono da tavolo, un softphone o il telefono del browser a ogni estensione. Aprire Telefoni (capitolo 4)
  3. Trunk: l'account della società telefonica, in modo da poter chiamare numeri esterni e ricevere chiamate. Aprire Trunk (capitolo 7)
  4. 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)
  5. 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:

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.

SistemaCome avviarloDove si trovano i suoi dati
Linux./bitvoice (o il servizio systemd nella versione)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsfare 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

PortaA cosa serve
5060 UDP e TCPSIP: telefoni e trunk
5061 TCPSIP su TLS (segnalazione crittografata)
4569 UDPTrunk IAX2, solo una volta configurato
1720 TCPTrunk H.323, solo una volta configurato
2000 TCPTelefoni Skinny (SCCP), solo quando attivato
2727 UDPGateway MGCP, solo quando attivato
10000–20000 UDPSuono delle chiamate (RTP), impostato in Impostazioni
8443 TCPQuesta 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

Capitolo 2

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.

AreaMaturitàCiò su cui si basa
Tronchi SIP: registrazione, chiamate in entrata e in uscita, ID chiamante, occupato, tasti (RFC 4733)Testato sul campoun 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 SIPTestato sul campoAsterisk come telefono da scrivania attraverso Internet. Non sono stati ancora provati i veri telefoni Yealink, Poly o Grandstream
Telefono del browser (WebRTC)Testato sul campoda fuori a EC2; test di Chromium con suono in entrambe le direzioni
Due server, uno PostgreSQL, failoverTestato sul campokill -9 e arresto pianificato su EC2: la chiamata continua, la linea del fornitore si sposta
Installazione con un solo comandoTestato sul campoUbuntu 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 campo2.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 campoun vero backup di FreePBX 17.0.33 (70 MB) importato interamente; altri da formati propri di FreePBX
Trascrizioni AI, riassunti, receptionistTestato sul campoun modello reale tramite OpenRouter
Fatti e riassunti senza modello linguisticoTestato softwarechiamate 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 Linuxwhisper-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 ManagerTestato sul campoAWS reale, il nostro SigV4
Monitoraggio e trap SNMPTestato sul camponet-snmp's snmpwalk e snmptrapd
Let's EncryptTestato sul camporilascia e rinnova il certificato della demo pubblica
Immagini di macchina (AWS) e configurazione come codiceTestato sul campoun'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 IAX2Controllato rispetto a un riferimentoAsterisk 23
ICE completo dietro NAT (client STUN e TURN)Controllato rispetto a un riferimentoagente 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 riferimentoChromium 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 riferimentoAsterisk 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 riferimentoOpenLDAP 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 riferimentoogni 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 schermoControllato rispetto a un riferimentoTre 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 riferimentoogni 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 MCPControllato rispetto a un riferimentol'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 softwarecontro 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 lingueTestato softwareogni 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.323Controllato rispetto a un riferimentoH323Plus 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 WebSocketControllato rispetto a un riferimentoJsSIP e SIP.js
Codec: GSM, G.726, iLBC, MP3 musica in attesaControllato rispetto a un riferimentoffmpeg, il programma di riferimento RFC 3951 e minimp3, campione per campione
Codec: G.711, G.722, G.729, Opus, SpeexControllato rispetto a un riferimentoG.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-WBControllato rispetto a un riferimento, con un gap notoAMR-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, Codec2Testato softwaretest 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/E1Controllato rispetto a un riferimentolibpri (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&MControllato rispetto a un riferimentoOpenR2; 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 riferimentolibss7 (Asterisk's chan_dahdi library), ITU e ANSI. Nessun collegamento di carrier reale provato
Fax (T.30, T.38)Testato sul campoun 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, CyberDataTestato softwarei formati documentati dei fornitori; non su veri terminali
Telefoni Skinny (SCCP), gateway MGCPControllato rispetto a un riferimentoSkinny: 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 RoutingTestato softwarecontro 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 riferimentoogni 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 webControllato 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 VaultControllato rispetto a un riferimentoEspoCRM (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, suggerimentiTestato softwaretest 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 AndroidTestato 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 chiamanteLaboratorioschemi 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 offertobrevettato fino al 2028
Firme Ed448 (NENA)Non offertonon nella libreria standard di Go, e BitVoice non scrive crittografia di sua proprietà; Ed25519 è utilizzato
Trasferimento di segnale SS7 (STP), SCCP e TCAPControllato rispetto a un riferimentoOsmoSTP 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 softwareogni 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 E2Non offertoPAM è 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
Capitolo 3

Estensioni

Nell'interfaccia web: /extensions

Un'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.

100 dials 101Forwarding?all, busy, no answerDo not disturb?then voicemailRings 101every phone, appsFollow-memobile, other deskNo-answervoicemail or other
Figura 3. A call between two extensions

Aggiungere un'estensione

  1. Aprire Estensioni (capitolo 3) e premere Aggiungi estensione. Il prossimo numero libero e una password SIP forte sono già inseriti.
  2. Inserire il nome della persona (visualizzato su altri telefoni quando chiama) e l'indirizzo email (per la segreteria telefonica via email).
  3. Compilare la localizzazione 911: il sito, il piano e la stanza. Viene inviata con le chiamate di emergenza.
  4. Scegliere cosa succede Se nessuno risponde: segreteria telefonica per impostazione predefinita, o un'altra estensione, un gruppo o un menu.
  5. Salvare. L'estensione può connettersi immediatamente.

I campi

CampoFunzione
Numero2-8 cifre; non può essere utilizzato da un'altra estensione, gruppo, coda, stanza o codice di funzione
Password SIPutilizzata dal telefono per connettersi; almeno 12 caratteri; Genera crea una nuova
Suona persecondi prima che si verifichi Se nessuno risponde (25 per impostazione predefinita)
ID chiamante esternoil numero visualizzato nelle chiamate in uscita; se vuoto, utilizza quello del trunk
Può chiamare numeri esternidisattivato limita il telefono a chiamate interne e numeri di emergenza
Registra chiamatequando le Impostazioni registrano solo estensioni selezionate
Postazione condivisaun telefono condiviso che diventa il proprietario che si connette
Crittografia chiamate a questo telefonocrittografia dei media (SRTP); utilizzarla con TLS per mantenere private le chiavi
Dipartimentoraggruppa i costi delle chiamate di questa estensione

Segui-me, pickup e citofono

La gestione delle chiamate di ogni persona è nella propria casella sull'estensione:

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

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ì.

Capitolo 4

Collegamento dei telefoni

Nell'interfaccia web: /phones

Qualsiasi 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.

Yealink, Poly,Grandstream, Snom1. where is my file? (DHCP 66)2. HTTPS: extension, password, keysBitVoice3. registersSigned in as its extensionBLF keys, time zone, codecs, all set
Figura 4. Provisioning: a desk phone fetches its settings by itself

Configurazione automatica (provisioning)

  1. Su Telefoni (capitolo 4) premere Aggiungi telefono e inserire l'indirizzo MAC del telefono (sulla sticker sotto) e la estensione a cui appartiene.
  2. Scegliere il marchio: Yealink, Poly, Grandstream (inclusi gli adattatori analogici HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo o CyberData.
  3. 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.
  4. 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.

MarchioModelli testatiCosa ottiene
YealinkT3x, T4x, T5xaccount, chiavi BLF, ora, codec
PolyVVX, Edge Elo stesso, nel formato Poly
GrandstreamGRP, GXP, HT802/814account per porta sugli adattatori
SnomD7xxaccount, 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):

MarcaModelliFile che il dispositivo richiede
Fanvilserie X e Vil suo indirizzo MAC .cfg
Cisco6800, 7800, 8800 multiplatform (3PCC), adattatori SPAil suo indirizzo MAC .xml (il firmware aziendale richiede prima il firmware multiplatform)
Mitel (Aastra)6800, 6900 SIPil suo indirizzo MAC .cfg, in maiuscolo
Sangomaserie Sil file nel formato Fanvil
Algoaltoparlanti di paging, strobo, adattatorialgop e il suo indirizzo MAC .conf
CyberDataaltoparlanti, citofoni, adattatori di pagingil 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):

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).

Capitolo 5

Telefoni Skinny e gateway MGCP

Nell'interfaccia web: /desk-phones

I telefoni e i gateway che non parlano SIP possono comunque essere utilizzati. Telefoni Skinny e gateway MGCP (sotto Chiamate) supportano due protocolli più vecchi:

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

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

Capitolo 6

Schede di telefonia

Nell'interfaccia web: /cards

Una 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

  1. Installare i driver DAHDI e configurare le porte come di consueto in /etc/dahdi/system.conf (fxoks=1-4 per le porte con telefoni, fxsks=5-8 per le porte con linee, e i toni del paese in loadzone e defaultzone), quindi eseguire dahdi_cfg.
  2. 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.
  3. 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.
  4. 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.
  5. Avviare bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token come 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

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.

  1. In /etc/dahdi/system.conf, configurare la spanna per PRI come di consueto (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 per una T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 per un E1), quindi eseguire dahdi_cfg.
  2. 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.
  3. 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.

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:

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:

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.

Capitolo 7

Tronchi

Nell'interfaccia web: /trunks

Un 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.

BitVoiceREGISTER every few minutescalls out: number, caller IDcalls in: the number dialledCarrierUsername and passwordAllowed addressesCodecs, channels, rates
Figura 5. A trunk: your account with a phone company

Aggiungere un trunk SIP

  1. Su Trunk (capitolo 7) premere Aggiungi trunk.
  2. Inserire il server del fornitore fornito dalla società di telefonia (sip.provider.com), e la porta se non è 5060.
  3. Inserire il nome utente e la password, e attivare Registra se il fornitore lo richiede (la maggior parte sì).
  4. 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.

  1. Aggiungi una rotta in entrata per il tuo numero e una rotta in uscita che utilizza questo trunk (Call routing (capitolo 8)).
CampoFunzione
TrasportoUDP (normale), TCP o TLS per la segnalazione crittografata
Registraaccedi ogni pochi minuti, in modo che il fornitore sappia dove inviare le chiamate
Nome utente di autenticazionesolo quando il fornitore fornisce un nome utente separato
Dominio di provenienzail dominio nell'indirizzo del chiamante, quando il fornitore lo richiede
ID del chiamanteil numero visualizzato nelle chiamate in uscita; l'ID del chiamante di un'estensione vince
Accetta anche chiamate dagli 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 contemporaneeil limite consentito dal piano; le chiamate oltre questo limite vengono inviate al prossimo trunk nella rotta
Crittografa i mediaSRTP, 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
Codeclasciare *stesso di Impostazioni*, o scegliere cosa supporta questo fornitore, meglio per primo
Tariffequanto 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.

BitVoiceone UDP port, 4569: signalling and audio togetherMD5 challenge with the shared password; call tokensAsterisk or FreePBXiax.conf: type=friend, secret=…
Figura 6. An IAX2 trunk to an Asterisk or FreePBX server

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

StatoSignificato
registeredregistrato; le chiamate possono arrivare
readynon si registra, o IAX2 in attesa di chiamate
unreachableil nome del server non è nel DNS, o nulla risponde
failedil fornitore ha rifiutato la registrazione; il motivo viene mostrato
standbyi server condividono questo trunk uno alla volta e un altro lo tiene
Capitolo 8

Routing delle chiamate

Nell'interfaccia web: /routes

Il 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.

CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
Figura 7. How a call from outside finds its way

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.

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.

Dialled2125550199Emergency 911Long distance 1NXXNXXXXXXLocal NXXNXXXXXXInternational 011.matchTrunk AfirstTrunk Bif A failsN is 2–9, X is any digit, . is anything more; emergency numbers never fail for want of a pattern.
Figura 8. Outgoing routes: the first pattern that matches, its trunks in order
ModelloCorrisponde
Xqualsiasi cifra
Z1 a 9
N2 a 9
[1-5]uno di un insieme
. alla fineuna o più cifre aggiuntive
NXXNXXXXXXun numero nordamericano a 10 cifre
1NXXNXXXXXXlo stesso con 1 all'inizio
011.una chiamata internazionale dagli Stati Uniti

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.

Capitolo 9

Set di PIN

Nell'interfaccia web: /pin-sets

Un 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.

  1. Aggiungi set di PIN e elenca i PIN (4-10 cifre ciascuno).
  2. 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 account nell'API).
  3. 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.

Capitolo 10

Ricerca dell'ID del chiamante

Nell'interfaccia web: /lookups

Molte 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):

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.

Capitolo 11

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).

dials 911Emergency routenever fails for want of oneCarrierThe PSAPanswersSite, floor, roomsent as PIDF-LOAlerts on site: security desk, email listKari's Law
Figura 9. Office 911: location goes with the call, people on site are told

Cosa fa BitVoice su ogni chiamata di emergenza

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. Controllare i numeri di emergenza in Impostazioni (capitolo 14) (impostati per paese: 911 e 933 negli Stati Uniti).
  2. Aggiungere ogni edificio sotto Siti (capitolo 12), con il suo indirizzo di via e le reti che utilizzano i suoi telefoni.
  3. Assegnare a ogni estensione il suo sito, piano e stanza.
  4. Assicurarsi che una rotta in uscita e un trunk trasportino le chiamate di emergenza; Salute (capitolo 13) avvisa quando nessuno può.
  5. Compilare Avvisa e Avvisa anche via email.
  6. 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.

Capitolo 12

Siti e ufficio 911

Nell'interfaccia web: /sites

Un 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.

Head office · 1 Main St · 10.0.0.0/16floor and room from each extensionat homeAsked onceconfirms the address
Figura 10. Sites and remote workers: where a phone is, for 911

Aggiungere un sito

Su Siti (capitolo 12), premi Aggiungi:

CampoCosa è
Nomecome lo chiamano le persone: Ufficio centrale
Via, Città, Stato o provincia, Codice postale, Paesel'indirizzo civico a cui vengono inviati i soccorritori
Retigli 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

  1. 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.
  2. 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)).
  3. 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.
  4. 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).

Capitolo 13

Salute

Nell'interfaccia web: /health

La 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

ControlloPerché è importante
Le chiamate di emergenza possono uscireuna rotta e un tronco funzionante trasportano i numeri di emergenza
Estensioni senza una posizione di emergenzale loro chiamate al 911 non avrebbero nessun piano o stanza
Il servizio di telefoniaSIP è in ascolto e su quale porta
Telefoni non connessiestensioni di cui nessuno si è registrato
Tronchiregistrati o il motivo per cui non lo sono
Menu senza una registrazione di prompti chiamanti sentirebbero silenzio
Il fuso orarioi calendari lo seguono
Registrazioni e loro conservazionespazio su disco e per quanto tempo vengono conservate le registrazioni
Certificatiquando il certificato TLS scade
Vault di chiavisegreti che un vault non può leggere
Altri serverquando 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.

Capitolo 14

Impostazioni

Nell'interfaccia web: /settings

Impostazioni contiene tutto riguardante il sistema nel suo complesso. Ogni sezione salva separatamente, e ogni salvataggio è una revisione su Modifiche (capitolo 61).

SezioneCosa c'è
Sistemanome, paese, fuso orario, linguaggio, l'indirizzo pubblico che i telefoni e i provider vedono
Numeriil test di eco, i numeri della segreteria telefonica e del parcheggio, e i numeri di emergenza
Codeci codec che i telefoni possono utilizzare, elencati nel miglior ordine (Codec (capitolo 66))
Registrazione delle chiamatedisattivata, ogni chiamata, o estensioni selezionate; regole di consenso; quanto a lungo vengono conservate le registrazioni
Suonopulizia per la segreteria telefonica e durante le chiamate
Protezionedivieti dopo tentativi di accesso non riusciti, reti attendibili, chiamate per estensione, numeri premium
Emergenzainvio dell'indirizzo del chiamante, chi viene notificato, chi viene inviato via email, modalità di emergenza
Intelligenza artificialeil servizio di intelligenza artificiale, modelli e quali funzionalità di intelligenza artificiale sono attivate (Intelligenza artificiale (capitolo 28))
Accesso singoloil provider di identità (Accesso singolo (capitolo 58))
Compatibilità con AsteriskAMI 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 Workspacepersone e contatti condivisi in Contatti, e calendari per chi è assente (Contatti (capitolo 38), Calendari (capitolo 39))
App mobiliil servizio di push che sveglia le app
Emailil server di posta per la segreteria telefonica, i fax e gli avvisi
Vault delle chiavisegreti conservati in AWS Secrets Manager o Azure Key Vault
Configurazione da Gitmantenere la configurazione allineata con un file in un repository
DatabaseSQLite o PostgreSQL (Database (capitolo 64))
Certificatoil 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à:

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.

Capitolo 15

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.

Parte 2

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.

Capitolo 16

Flusso di chiamata

Nell'interfaccia web: /flow
CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
Figura 11. How a call from outside finds its way

Verifica 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:

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.

Capitolo 17

Gruppi di chiamata

Nell'interfaccia web: /ring-groups

Un gruppo di chiamata è un numero che suona su più estensioni: un team di vendita, la reception e il suo backup, tutti nel laboratorio.

ALL AT ONCEONE AFTER ANOTHERRing group 600the first to answer takes itRing group 6010–25 s25–50 s50–75 s
Figura 12. Ring groups: all at once, or one after another

Strategie di chiamata

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?

UtilizzaQuando
Un gruppo di chiamatapoche persone, qualsiasi delle quali può prendere la chiamata, e la chiamata dovrebbe suonare adesso
Una codai chiamanti possono dover aspettare per qualcuno libero, e dovrebbero sentire la loro posizione
Un gruppo di raccoltaogni persona ha le proprie chiamate, ma i colleghi possono rispondere per loro
Capitolo 18

Code

Nell'interfaccia web: /queues

Una 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.

CALLERS WAITINGAGENTSVIP234Queue 700longest-idle agentAgent 1availableAgent 2on a callAgent 3wrap-upAgent 4pausedthey hear music and their place in linea VIP joins at the front
Figura 13. A queue: callers wait in order, agents take the next one

Come vengono offerte le chiamate

StrategiaChi viene chiamato
Inattività più lungal'agente libero che ha aspettato più a lungo dalla sua ultima chiamata
Rotazioneogni agente libero a turno, continuando dall'ultimo
Suona tuttiogni agente libero contemporaneamente
Minimo numero di chiamatel'agente libero che ha ricevuto il minor numero di chiamate oggi
In ordine (lineare)sempre dall'inizio della lista: il primo agente libero
Casualequalsiasi agente libero, per caso
Casuale ponderatoper caso, gli agenti con una penalità più bassa vengono selezionati più frequentemente

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.

StatoSignificato
disponibilelibero; verrà offerto il prossimo chiamante
squillanteviene offerta una chiamata
occupatoin chiamata
risoluzioneappena finito; il tempo di risoluzione sta scadendo
in pausain pausa, con il motivo indicato
assentein una riunione o in ferie, dal suo calendario
non accessibilenon 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.

Capitolo 19

Compositore di chiamate in uscita

Nell'interfaccia web: /dialer

Il 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
Anteprimaun agente chiede il prossimo contatto, visualizza i dettagli, poi chiama (il suo telefono squilla per primo) o salta
Progressivouna chiamata per ogni agente libero
Potenzaun numero fisso di chiamate per ogni agente libero (1-3)
PredittivoBitVoice regola le chiamate per agente, inclinando mentre poche chiamate vengono abbandonate e allontanandosi mentre la percentuale di abbandono si avvicina al limite
  1. 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.
  2. Apri Contatti e Aggiungi una lista: un file CSV con una riga di intestazione e una colonna chiamata number (o phone); name e qualsiasi altra colonna vengono visualizzati all'agente in anteprima. I numeri duplicati e non validi vengono saltati.
  3. 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.
  4. 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.

Capitolo 20

Suoni: promemoria, lingue e musica in attesa

Nell'interfaccia web: /sounds

Suoni (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.

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 senteQuale musica
qualcuno messo in attesala musica scelta sull'estensione della persona che tiene, altrimenti la musica predefinita
un chiamante parcheggiatola musica della persona che lo ha parcheggiato, altrimenti la musica predefinita
un chiamante in attesa in una codala musica della coda, altrimenti la musica predefinita
un chiamante in attesa del capo della conferenzala 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ì.

Capitolo 22

Elenco telefonico per nome

Nell'interfaccia web: /directories

Un 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.

  1. Aggiungi elenco, assegnagli un nome e un numero (411, ad esempio) o lascia il numero vuoto e utilizzalo come opzione di menu.
  2. Scegli cosa i chiamanti digitano: il cognome (il solito), il nome, o entrambi.
  3. 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.

Capitolo 23

Accesso telefonico (DISA)

Nell'interfaccia web: /dial-in

Un 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.

  1. 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.
  2. 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.
  3. 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).

Capitolo 24

Bot vocali (AudioSocket)

Nell'interfaccia web: /voice-bots

Un 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.

  1. Aggiungi bot vocale: il suo nome, l'indirizzo del bot (10.0.0.9:9092) e, opzionalmente, un numero per chiamarlo.
  2. 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.
  3. 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).

Capitolo 25

Interruttori giorno/notte

Nell'interfaccia web: /toggles

Un 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.

  1. 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.
  2. Scegli chi può commutarlo da un telefono (nessuno scelto consente a qualsiasi estensione).
  3. 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).

Capitolo 26

Programmi

Nell'interfaccia web: /schedules

Un 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).

Mon9–17Tue9–17Wed9–17ThuholidayFri9–17SatSunOpen: receptionClosed: voicemailTimes are in the system time zone; a holiday closes the whole day.
Figura 15. A schedule: open hours, holidays, and where calls go in each

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.

Capitolo 27

Script (JavaScript e Lua)

Nell'interfaccia web: /scripts

Uno 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).

A callfrom, to, timefunction route(call) { if (vip(call.from)) return queue('700') }Its answerFallbackon error or after 200 msScripts can never place calls, reach the network or the disk: they only choose.
Figura 16. A routing script: code decides, a fallback is always there

Sicuro per design

Cosa vede uno script

call ha:

CampoCosa è
from, fromNameil numero e il nome del chiamante
toil numero composto
directioninbound o internal
trunkil trunk su cui è arrivata la chiamata
weekday, hour, minutel'orario attuale (0 è domenica)
dateYYYY-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:

PassoCosa 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.

Capitolo 28

Receptionist AI, triage della casella vocale e richiesta

Nell'interfaccia web: /receptionists

Le 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.

a callerAI receptionist"I’m the automated assistant"Answers a questionfrom approved factsTakes a messageor books a callbackHands over0, "a person", or a faultA personIt never stands between a caller and a person: any failure goes to the person destination.
Figura 17. The AI receptionist: answers, helps, and always hands over to a person

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:

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.

SetFatti trovatiFatti trovati che nessuno si aspettava
Formazione (le regole sono state scritte a partire da esso)41 su 410
Hold-out, valutato a freddo, prima che alcuna regola fosse scritta a partire da esso27 su 40 (67%)2
Hold-out, dopo un secondo round di regole scritte a partire dai suoi errori40 su 400
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.

Capitolo 29

Casella vocale

Nell'interfaccia web: /voicemail

Ogni 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.

not answeredGreetingyours, or a beepMessageup to 3 minutesMessage light on the phoneEmail with the sound fileTranscript, summary, urgencyDial *97 to listen from any phone, or use the Voicemail page or the staff portal.
Figura 18. Voicemail: from a missed call to a message you can read

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.

ImpostazioneCosa fa
Messaggio più lungo10-900 secondi (180 di default)
Email nuovi messaggiall'indirizzo email dell'estensione, con il messaggio allegato
Messaggio di benvenutoregistrato nel browser, caricato o registrato dal telefono; senza uno, i chiamanti sentono un beep

Ascoltare

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.

Capitolo 30

Richiami

Nell'interfaccia web: /callbacks

Persone 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.

AI receptionistor by handCallbackname, number, time, whyRing backyour phone firstIt never promises an exact time.
Figura 19. Callbacks: booked by the receptionist, rung back by a person

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.

Parte 3

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.

Capitolo 32

Codici di funzione, inoltro e numeri di composizione rapida

Nell'interfaccia web: /codes

I 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

CodiceCosa fa
*72inoltra ogni chiamata (poi il numero e #, o il numero direttamente dopo: *722125550199)
*73interrompi l'inoltro di ogni chiamata
*90 / *91inoltra quando si è in chiamata / interrompi
*52 / *53inoltra quando non risposto / interrompi
*78 / *79non disturbare attivato / disattivato
*76commuta non disturbare (tono crescente: ora attivato)
*21commuta segui-me attivato e disattivato
*8rispondi a una chiamata che squilla nel tuo gruppo di raccolta
** e un'estensionerispondi alla chiamata che squilla quell'estensione
*80 e un'estensionecitofono: quel telefono risponde sul suo altoparlante
*0 e un codiceun numero di composizione rapida
*62sveglia: ascolta, prenota una sveglia (quattro cifre, come 0630) o annulla (stella)
*68 e un cifrastato della stanza, per la manutenzione degli alberghi
*28 e un codice di commutazionecommuta un commutatore giorno/notte (capitolo 25) sopra, o indietro
*32blocca l'ultimo chiamante: l'ultimo numero esterno che ha chiamato questo telefono va nella lista dei blocchi (Protezione antispam (capitolo 56))
*43il test dell'eco
*97la tua casella vocale
70parcheggia una chiamata (trasferiscila qui); 71 a 79 la raccolgono
*45 / *46agenti di coda: accedi o esci / metti in pausa o riprendi
*33 / *34accedi o esci da una postazione di lavoro condivisa
*7 / *8 durante una chiamatametti in pausa e riprendi la registrazione (pagamenti con carta)

Inoltro

a call to 101Every call*72 · cancel *73When on a call*90 · cancel *91When not answered*52 · cancel *53Another extensionits own settings applyAn outside numberthrough outgoing routesA group, queue or room
Figura 21. Forwarding: every call, when busy, when not answered

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

desk, 25 smobile, 20 sPress 1 to take the callso the mobile's voicemail never doespressed 1Connectedno 1 in 15 sVoicemail
Figura 22. Follow-me: the desk first, then the mobile, then voicemail

*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

101 rings102 dials *8takes the callpickup group "Front office"** then the extensionanswers that one extension's call*8answers the oldest in your group
Figura 23. Call pickup: answer a colleague's ringing phone

Interfono

100 dials *80101auto-answer101 answers itselfAn extension can refuse intercomthen the call rings as usual
Figura 24. Intercom: the called phone answers on its speaker

*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).

Capitolo 33

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.

Your phoneExtension101Voicemail PIN••••Sign inDo not disturbForwardingFollow-meSpeed dialsVoicemail and greetingYour calls
Figura 25. The staff portal: everyone looks after their own calls

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

SchedaCosa c'è
Dove vanno le chiamatenon disturbare; inoltrare di ogni chiamata, quando occupato e quando non risposto; numeri di seguire; numeri di composizione rapida propri
Casella vocalemessaggi da riprodurre e eliminare, con trascrizioni e riassunti quando l'AI è attiva; registrare o caricare il messaggio di benvenuto
Le tue chiamatele chiamate della persona, più recenti per primi, senza registrazioni
PINcambiare 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).

Capitolo 34

Sale conferenze

Nell'interfaccia web: /conferences

Una 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.

Room500violet: leader · grey: mutedDial 500, enter the PIN and #three wrong PINs and the call endsLeader PINjoins as a leader; 2 locks the roomWait for the leaderothers hear hold music until then
Figura 26. A conference room: PIN, leaders, and who is talking

Configurazione di una sala

  1. Aprire Sale conferenze (capitolo 34) e premere Aggiungi sala conferenze.
  2. Assegnarle un numero (qualsiasi numero libero, 500 per default) e un nome.
  3. Facoltativamente impostare un PIN. I chiamanti sentono un tono, inseriscono il PIN e premere #. Tre PIN errati e la chiamata si conclude.
  4. Facoltativamente impostare un PIN del leader, diverso dal PIN. Chi lo inserisce si unisce come leader.
  5. Per consentire ai chiamanti esterni di partecipare, puntare una rotta in entrata (o un tasto del menu) alla sala.

Scelte

SceltaCosa fa
Attendere il leadertutti 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à mutaper briefing e lezioni: i leader parlano, i membri ascoltano. Un membro preme 1 per chiedere di parlare e un leader lo smuta.
Registra la salal'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 lascianoattivato per default
Numero massimo di persone50 per default, fino a 200

Tasti durante una chiamata

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:

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.

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.

Capitolo 35

Paging e altoparlanti

Nell'interfaccia web: /paging

Il 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

  1. Su Paging (capitolo 35) premere Aggiungi gruppo di paging e assegnargli un numero (800 di default) e un nome.
  2. Scegliere i telefoni. Gli altoparlanti configurati come estensioni (tipo Altoparlante) possono essere membri anch'essi.
  3. 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

PagingCitofono
Chi ascoltatutti nel gruppoun'estensione
Rispostano, a senso unicosì, in entrambe le direzioni
Comecomporre 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.

Capitolo 36

Hot desking

Nell'interfaccia web: /phones

Un 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

  1. Al telefono, comporre *33 e attendere il tono.
  2. Inserire l'estensione e #, e attendere il tono.
  3. 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.

Capitolo 37

Chiamate d'albergo e sveglie

Nell'interfaccia web: /hotel

Chiamate 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.

Il sistema alberghiero (PMS)

Capitolo 38

Contatti su ogni telefono

Nell'interfaccia web: /contacts

Contatti è 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.

Add contactImport CSVContactsnames and numbersthe phone directory+1 212 555 0100 and 2125550100 are the same line.
Figura 27. Contacts: one directory on every phone

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:

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):

  1. Nel centro di amministrazione di Entra, Registrazioni dell'app, Nuova registrazione: nomina BitVoice, singolo tenant, senza indirizzo di reindirizzamento.
  2. Autorizzazioni API, Aggiungi un'autorizzazione, Microsoft Graph, Autorizzazioni dell'applicazione: User.Read.All, OrgContact.Read.All e Calendars.ReadBasic. Quindi Concedi il consenso dell'amministratore.
  3. Certificati e segreti, Nuovo segreto client: copia il suo valore (visualizzato una sola volta).
  4. 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):

  1. 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.
  2. 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.
  3. In BitVoice: il file della chiave e l'email di un amministratore per l'account di servizio da utilizzare.

Cosa arriva:

Capitolo 39

Calendari e non disturbare

Nell'interfaccia web: /extensions

Un'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.

9:00 Team meeting12:00 FreeFriday: out of officeevery 5 minA call to 101during the meetingVoicemailor forwardedDo not disturb now wins over the calendar.
Figura 28. Following a calendar: no ringing in meetings

Nell'estensione, Calendario e non disturbare, incolla l'indirizzo privato del calendario:

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.

Capitolo 40

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.

A call to 101BitVoicePush relayApple and Googlerings like a callthe app connects backPaired once by QR code; the code works once, for ten minutes.
Figura 29. The mobile apps: woken by a push, rung like a desk phone

Configurazione del push

Un'app chiusa viene svegliata per le chiamate da un messaggio di push. In Impostazioni (capitolo 14), App mobili, scegli uno:

PushCosa serve
Relay di pushil relay di BioDream (con hosting o supporto) o il tuo bvpush: l'indirizzo del relay, l'ID della chiave e il Segreto
App personalizzatele 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

  1. Apri l'estensione e premi Aggiungi un telefono.
  2. 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:

Gli altri tab

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.

Capitolo 41

Chiamate video

Nell'interfaccia web: /settings

Quando 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.

Video phoneH.264SRTPBitVoice relaysrenumbered if neededSoftphoneH.264The phones never learn each other’s addresses.
Figura 30. Video calls: relayed as they are

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.

Capitolo 42

Fax: invio e ricezione, macchine fax e telefoni analogici

Nell'interfaccia web: /faxes

Le 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.

Fax machineon an adapter portCarrierT.38 or G.711Fax numberreceives and sendsPDF on the Faxes pageEmailed to a listEmail to fax: send by emailPages, size (letter or A4) and the far station’s ID are kept with each fax.
Figura 31. Fax: machines, email and PDFs

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:

Capitolo 43

Inbox: chat web, WhatsApp e Messenger

Nell'interfaccia web: /inbox

La 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.

WhatsApp

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.

Capitolo 44

Messaggistica aziendale (SMS)

Nell'interfaccia web: /texts

Invia 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.

a customerTexting providerTextMagic, Twilio, …Texts pageone thread per numberTimelineDesk phonesUS numbers need 10DLC registration, guided on the Texts page.
Figura 32. Business texting: the same numbers, one conversation view

Impostazione

  1. 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.
  2. 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ì.
  3. 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.

Capitolo 45

Trasferimento di brevi riassunti

Nell'interfaccia web: /settings

In 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).

agent 101transfersTwo sentenceswho, what, what was promised102 ringsShown with the callbrowser, Live calls, deskThe caller never has to say it all again.
Figura 33. Transfer briefings: the next person knows already

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.

Parte 4

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.

Capitolo 46

Chiamate in corso

Nell'interfaccia web: /calls

Chiamate 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à.

Live call100 Front desk → +1 212 555 0199G.722 / G.711 · MOS 4.3 · 02:14endsCall recordwho and when, how long, answered byrecording and transcriptcost, quality per leg, why it ended
Figura 34. Live calls and history: every call, while it happens and after

Cosa possono fare gli amministratori

AzioneCosa fa
Riattaccatermina la chiamata per entrambi i lati
Apri la portaper una chiamata da una stazione di porta
Pausa registrazioneper un numero di carta: la pausa è silenziosa nella registrazione e segnata nella cronologia (Registrazione di chiamate (capitolo 51))
Ascoltasenti la chiamata in silenzio
Sussurraparla all'agente solo; il chiamante non sente
Intervieniunisciti 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

Quando una chiamata termina, si sposta in Cronologia di chiamate (capitolo 47).

Capitolo 47

Cronologia di chiamate

Nell'interfaccia web: /history

Ogni 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.

Live call100 Front desk → +1 212 555 0199G.722 / G.711 · MOS 4.3 · 02:14endsCall recordwho and when, how long, answered byrecording and transcriptcost, quality per leg, why it ended
Figura 35. Live calls and history: every call, while it happens and after

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:

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.

Capitolo 48

Cronologia del cliente

Nell'interfaccia web: /timeline

La 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.

Call answered by Front deskVoicemail: "please call back"Text: "after 3 is fine"Callback booked by the AI receptionistNote: prefers mornings+1 212 555 0199Lee, Acme Corp
Figura 36. One customer timeline: everything about a number in one place

Cosa mostra

ElementoCon
Chiamatechi le ha gestite, la durata e con una trascrizione, il riassunto, la registrazione e la trascrizione
Messaggi vocalii loro riassunti
Testiin entrambe le direzioni
Richieste di callbackrichieste e se eseguite
Notele 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.

Capitolo 49

CRM: schede dei chiamanti e registrazione delle chiamate

Nell'interfaccia web: /settings

Collegare un sistema del cliente in Impostazioni (capitolo 14), CRM. Funziona con qualsiasi sistema che abbia un indirizzo web, senza codice scritto per ogni prodotto.

+1 212 555 0100Caller cardLee · Acme CorpGET {number}Your CRMany web addressafter the call: who, how long, summaryAnswers are kept for five minutes.
Figura 37. CRM: a card while it rings, a log after it ends

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:

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.

Capitolo 50

Intuito della chiamata per i supervisori

Nell'interfaccia web: /quality

Per i centri di contatto: prove di come sono andate le chiamate, per un supervisore che ascolta, mai un punteggio automatico.

How it wentagent 62%caller 38%talked over: 3 · longest: 48 s · quiet: 22 s02:14 Went well05:40 Look at: a long hold07:02 Not answered09:15 Promised: a refund by FridayTo choose calls to listen to, not to rank people.
Figura 38. Call insight: evidence for a supervisor, never a score

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.

Capitolo 51

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.

A call is answeredrecording is onConsent ruleby the other party’s regionAnnounce, then recordtwo-party consent regionsRecord with a beep every 15 sDo not record*7 pauses and *8 resumes the recording while a card number is read out
Figura 39. Recording with consent: announce, beep, or not at all

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.

Capitolo 53

Qualità della chiamata

Nell'interfaccia web: /quality

Come 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.

Each calljitter, loss, delayMOS score1 bad · 4.4 bestBy site, carrierand hour of dayDiagnosis"loss on the office link 2–3 pm"
Figura 41. Call quality: from packets to a plain diagnosis

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.

Capitolo 54

Costi e budget

Nell'interfaccia web: /costs

BitVoice 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.

A call out+44 20 …, 7 minTrunk rate+44: 0.02 a minuteCost0.14By personBy departmentBy trunkAlerts: a budget passed, or far more calls to one place than usual (toll fraud).
Figura 42. Costs: every call priced, budgets watched

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.

Capitolo 55

Reputazione dell'ID del chiamante e chiamate con marchio

Nell'interfaccia web: /reputation

Le 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:

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.

Capitolo 56

Protezione anti-spam e STIR/SHAKEN

Nell'interfaccia web: /settings

Negli 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.

A call inIdentity, verstatCheckedsignature, age, numbersVerified: ringsNot verified: rings as "Spam?"Failed or blocked: refusedwhat happens to each is set in Settings
Figura 43. Spam protection: the caller ID is checked before it rings

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:

SceltaCosa ottiene il chiamante
Squilla come al solitola chiamata squilla come qualsiasi altra (predefinito)
Test del robot primaBitVoice 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 partenulla 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.

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).

Parte 5

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.

Capitolo 57

Amministratori

Nell'interfaccia web: /users

Gli 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

RuoloPuò
Amministratoremodificare tutto, riprodurre registrazioni, vedere l'esistenza di ogni campo segreto (mai il suo valore)
Osservatorevedere 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)).

Capitolo 58

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.

browserIdentity providerEntra, Google, Okta, KeycloakBitVoicereads the groupsAdministratorViewerNot in an allowed group: refused, and noted in the audit log.
Figura 44. Single sign-on: the work account decides who gets in

Configurazione

In Impostazioni (capitolo 14), Single sign-on:

  1. Registra un'applicazione con il provider, con l'Indirizzo di reindirizzamento mostrato qui.
  2. Compila per un provider imposta l'Emitter per quelli comuni; copia l'ID client e il Segreto client dal provider.
  3. Nome dei Gruppi amministratori e Gruppi viewer del provider. Richiesta di gruppo è dove il provider li inserisce (groups a meno che non sia impostato).
  4. Opzionalmente modifica il Testo del pulsante sulla pagina di accesso.
  5. Attiva Usa single sign-on.

Funzionamento

Capitolo 59

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:

  1. 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.
  2. Server: ldaps://dc1.example.com (porta 636), o ldap://... 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.
  3. Account di lettura e La sua password: un account autorizzato a leggere le persone e i gruppi (reader@example.com su Active Directory). La password può essere un riferimento a un vault di chiavi (Impostazioni, Vault di chiavi).
  4. 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.
  5. 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

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:

Capitolo 60

Sicurezza

Nell'interfaccia web: /security

Un 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.

Trusted networks, bans after failed sign-insStrong SIP passwords, one per extensionTLS for SIP, SRTP for callsTwo-step sign-in, single sign-on, rolesAudit of every change, legal holdsLimits: outside calls, premium numbers, spend
Figura 45. Layers of protection

Contro le ipotesi di password

Contro le frodi

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:

SituazioneCosa fa
Una chiamata all'estero verso un paese che questa estensione ha chiamato negli ultimi 90 giornila lascia passare
Una prima chiamata a quel paese in 90 giornila 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'estensionela 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 emergenzala 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:

Crittografia

Chi può fare cosa

Capitolo 61

Modifiche, backup e importazione

Nell'interfaccia web: /changes

Ogni modifica salvata è una revisione: numerata, con chi l'ha effettuata, quando e un riassunto di una riga. Niente nella configurazione è mai perso.

1setup2extensions3trunk4menu5restored 2restore revision 2: a new revision 5Compare any two side by side before restoring; nothing is lost.
Figura 46. Every change is a revision you can compare and undo

Confronto e ripristino

Esportazione e importazione

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.

Capitolo 62

Aggiornamenti

Nell'interfaccia web: /updates

Aggiornare 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.

Upload or fetchsigned releaseCheck signaturerefuse a bad oneStart new versioncalls hand overUp for a minute?then it is confirmedit crashed: back to the version before, automatically
Figura 47. Updates: install, check, and fall back on their own

Installazione di un aggiornamento

  1. Scaricare la nuova versione e decomprimerla. Accanto al programma c'è la sua firma da BioDream: bitvoice.sig, o bitvoice.exe.sig su Windows.
  2. In Aggiornamenti (capitolo 62), caricare il programma e il file .sig.
  3. Premere Installa. Per impostazione predefinita, BitVoice attende fino a quando non ci sono più chiamate in corso; è anche possibile installare subito.
  4. 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.

EseguiteAggiornamenti accetta
una versione, v0.1.3 o successivasolo programmi firmati da BioDream
v0.1.2 o precedente, o una build personalequalsiasi programma: senza chiave, un file .sig non può essere verificato e viene ignorato
Capitolo 63

Più server come un unico sistema telefonico

Nell'interfaccia web: /servers

Due o più server BitVoice che condividono un database PostgreSQL funzionano come un unico sistema telefonico:

Server AServer BPostgreSQLcalls crossA shared addressmoves to a running serverPhones register anywherecalls find themA server stopsits calls carry on elsewhere
Figura 48. Several servers as one phone system

Configurazione

  1. Spostare i dati del primo server nel database PostgreSQL: Impostazioni, Database.
  2. Avviare ogni altro server con lo stesso database: bitvoice -database postgres://… (o la variabile d'ambiente BITVOICE_DATABASE). Si unisce immediatamente; Server lo elenca.
  3. 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.
  4. Informare i telefoni su come trovare i server (di seguito).
  5. 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:

Linee provider. In ogni trunk, Condiviso tra server indica come:

Quando un server si ferma

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).

Capitolo 64

Dove vengono conservati i dati (SQLite o PostgreSQL)

Nell'interfaccia web: /settings

BitVoice 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.

one serverbitvoice.dbSQLite, the defaultmove, all or nonePostgreSQLone databaseRecordings and voicemail stay as sound files in the data folder.
Figura 49. Where the data is: one file, or PostgreSQL

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.

Capitolo 65

Ostare altre organizzazioni

Nell'interfaccia web: /tenants

Un 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.

ONE BITVOICE SERVERMain system/own dataAcme Dental/t/acme/own usersRiverside Clinicpbx.riverside.exampleown numbersshared: SIP 5060, IAX2 4569, media portsBy domainpbx.riverside.exampleBy user nameacme.100By trunk and numbera shared provider
Figura 50. Hosted organisations: one server, separate phone systems

Quando utilizzarlo

Il sistema principale è anch'esso un'organizzazione: quella per cui questo server è stato configurato. I suoi amministratori gestiscono gli altri.

Aggiungere un'organizzazione

  1. Aprire Organizzazioni (capitolo 65) e premere Aggiungi organizzazione.
  2. 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.
  3. 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.
  4. Impostare il suo primo amministratore: un nome utente e una password di almeno 12 caratteri, e il suo paese.
  5. 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 richiestava a
da un telefono che si registra a pbx.acme.examplel'organizzazione con quel dominio
da un telefono che si accede come acme.100Acme, estensione 100
da un fornitore, per un numerol'organizzazione dalla quale proviene il trunk e dalla quale proviene la route in entrata con quel numero
qualsiasi altra cosail 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

LimiteCosa succede al raggiungimento
Estensioniaggiungere un'altra estensione viene rifiutato con un messaggio
Chiamate contemporaneele nuove chiamate vengono rifiutate (503) fino a quando una non termina
Archiviazionele nuove registrazioni e la segreteria telefonica non vengono conservate
Richieste AI al giornole 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.

Capitolo 66

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.

BrowserOpusDesk phoneG.722 HDDECT baseG.726ConvertsG.711 µ-law and A-law · G.722Opus · G.729 · G.726 · GSMonly when the two sides differ:same codec, passed untouchedCarrierG.711Thin linkG.729Old softphoneGSM
Figura 51. Codecs: each side speaks its own, BitVoice converts in between

I codec

CodecSuonoLarghezza di bandaUtilizzato da
G.722HD (larghezza di banda ampia)64 kbit/sla maggior parte dei telefoni da tavolo: la scelta migliore tra loro
G.711 µ-lawtelefono64 kbit/sNord America e Giappone; ogni carrier
G.711 A-lawtelefono64 kbit/sil resto del mondo
OpusHD, tollera la perdita24 kbit/sbrowser e app mobili
G.729telefono, un po' più grezzo8 kbit/scollegamenti sottili, alcuni carrier
G.726 (40 kbit/s)telefono; trasporta i toni del modem meglio delle tariffe G.72640 kbit/sgateway, alcuni sistemi DECT
G.726 (32 kbit/s)vicino al telefono32 kbit/sbasi DECT, gateway più vecchi
G.726 (24 kbit/s)tra 32 e 1624 kbit/salcuni sistemi DECT
G.726 (16 kbit/s)grezzo16 kbit/scollegamenti molto sottili
AMR-WB (G.722.2)HD6,6 a 23,85 kbit/srete mobile HD voice, interconnessioni VoLTE
AMRtelefono, mobile4,75 a 12,2 kbit/sreti mobili, alcuni carrier e gateway
iLBCtelefono, tollera la perdita13,3 o 15,2 kbit/svecchi softphone e app
Speextelefono15 kbit/s (2,15 a 24,6)vecchi softphone, collegamenti ad altri sistemi Asterisk
GSMpiù grezzo13 kbit/svecchi softphone e gateway
G.723.1grezzo; convertito solo con ffmpeg5,3 o 6,3 kbit/svecchi telefoni video e gateway
G.722.1 (Siren 7)larghezza di banda ampia, trasportato inalterato24 o 32 kbit/stelefoni Polycom, telefoni video e conference
G.722.1C (Siren 14)super-larghezza di banda, trasportato inalterato24 a 48 kbit/stelefoni conference, sistemi di sala
G.719banda completa, trasportato inalterato32 a 128 kbit/ssistemi di sala telepresenza
Codec2larghezza di banda molto bassa, trasportato inalterato0,7 a 3,2 kbit/scollegamenti 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.

Capitolo 67

Microsoft Teams (Direct Routing)

Nell'interfaccia web: /trunks

BitVoice 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.

Teams usersapp and Teams phonesMicrosoftTLS 5061SRTPBitVoice (SBC)CarriersDesk phonesNeeds: this server’s public name, a certificate for it, and the PowerShell BitVoice shows.
Figura 52. Microsoft Teams Direct Routing: BitVoice is the SBC

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

  1. 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.
  2. Tronchi, Aggiungi, iniziare da Microsoft Teams: inserire il nome pubblico del server. Il cassetto dice se il certificato lo copre.
  3. 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.
  4. 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.

Capitolo 68

Importa

Nell'interfaccia web: /import

Trasferisce 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).

FreePBX, Asterisk3CXCisco, Avaya, MitelPreviewwhat would changeApplyone revisionUndoSeveral files at once, or a .zip or .tar of them.
Figura 53. Import: another system’s export, previewed before anything changes

Passaggio da FreePBX

Il file migliore è un backup di FreePBX: contiene tutto, comprese le password SIP.

  1. 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.
  2. Scarica il backup dalla sua riga (il file si chiama come 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. 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.
  4. In Importa (capitolo 68), rilascia il file .tar.gz così com'è. Leggi l'anteprima: gli avvisi elencano tutto ciò che non può essere trasferito.
  5. Scegli Aggiungi. È una revisione in Modifiche (capitolo 61): annullala se qualcosa sembra sbagliato e importa di nuovo.
  6. 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.
  7. 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:

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 è:

Gruppi e percorsi. Caricarli con il file delle persone, in modo che i membri di ogni gruppo siano trovati per numero o per nome:

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.

Capitolo 69

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).

Terraform, OpenTofuScripts, CIA Git repositoryREST APIBearer bv_…BitVoicethe same calls as the screens
Figura 54. Configuration as code: the API, Terraform and Git

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.

Capitolo 70

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.

Click to dialOriginateWallboardQueueStatus, eventsAMI · TCP 5038ARI · /ari/BitVoicePJSIP/100-…PJSIP/102-…Logins are read only unless marked Can change calls.
Figura 55. Asterisk compatibility: tools written for Asterisk drive BitVoice

AMI

L'interfaccia di gestione sulla porta TCP 5038 (AMI ascolta su: questo computer solo per default). Supportato:

TipoNomi
AzioniLogin (piano o sfida MD5), Ping, Eventi, Filtro, ElencoComandi, CoreShowCanali, Stato, CoreStato, ImpostazioniCore, PJSIPShowEndpoints, StatoEstensione, ElencoStatoEstensione, ElencoStatoDispositivo, Getvar, Origina, Reindirizza, TrasferimentoCieco, Riaggancia, Disconnetti
CodeStatoCoda, RiepilogoCoda, PausaCoda, AggiungiCoda e RimuoviCoda (questi firmano un agente in o fuori da tutte le loro code), Agenti
AltroChiamateParcheggiate; ElencoStanzeConfbridge, ElencoConfbridge, EspelliConfbridge, SilenziaConfbridge, SsilenziaConfbridge, BloccaConfbridge, SbloccaConfbridge; ContaCasellaPostale, StatoCasellaPostale; PausaMonitor, RiavviaMonitor; EventoUtente; Ricarica (nulla da ricaricare: le modifiche si applicano immediatamente)
EventiNuovoCanale, 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:

RichiestaCosa fa
GET /ari/channelsle chiamate in corso
POST /ari/channels?endpoint=PJSIP/100&extension=5551234suona il 100, poi chiama il numero
DELETE /ari/channels/{id}riattacca
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102invia la chiamata al 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefoni, ponti, versione
/ari/eventsun WebSocket di eventi
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawun 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:

RichiestaCosa fa
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42riproduce 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=%23registra (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=123invia tasti al chiamante
GET/POST /ari/channels/{id}/variable?variable=X&value=Yle variabili del canale
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEponti di mixing: tutti in uno sentono tutti gli altri
POST /ari/channels/{id}/continue?extension=101lascia 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=NAMEchiama il 101; risposto, entra nell'applicazione
GET /ari/applicationsle applicazioni, se un programma è connesso e i loro canali
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutemette a tacere cosa dice il chiamante (in), cosa sente (out) o entrambi
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencemusica di attesa per il chiamante (ChannelHold, ChannelUnhold), o silenzio
GET/POST /ari/channels/{id}/variablespiù variabili contemporaneamente (ChannelVarset)
POST /ari/channels/{id}/move?app=otherpassa il canale a un'altra applicazione (StasisEnd, poi StasisStart lì; ApplicationMoveFailed quando nessun programma la esegue)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEun 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 .../dialun 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_statisticspacchetti e byte inviati e ricevuti, perdita e jitter
POST /ari/playbacks/{id}/control?operation=pausemette 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, .../mutecopia una registrazione; mette in pausa o a tacere una registrazione live
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterabbonamenti (canale:, ponte:, endpoint:PJSIP/100, deviceState:) e filtri di eventi ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEstati 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=0contatori di posta vocale delle estensioni (100@default), e cassette postali che un programma mantiene da solo
GET /ari/soundsi promemoria di Suoni, nelle lingue in cui sono registrati, e i suoni caricati per script AGI
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hiun testo sul telefono dell'estensione 100
POST /ari/events/user/{name}?application=NAMEun evento utente a un'applicazione (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, 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:

CampoCosa è
Nome dello scriptcome le destinazioni lo nominano
Indirizzoun 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
Argomentipassati come agi_arg_1, agi_arg_2 …
Numero da comporrefacoltativo: le estensioni lo compongono come qualsiasi numero
Fallbackdove la chiamata va quando lo script termina senza scegliere un numero, o non può essere raggiunto
Esecuzione più lungauno script in esecuzione più a lungo viene interrotto (un'ora di default)
EAGIper 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):

ComandiNote
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP con un nome di canale solo termina la chiamata dello script
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITtasti 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 DATETIMEcon un servizio di sintesi vocale in Impostazioni, AI vengono pronunciati; senza, i numeri vengono letti dai Suoni
RECORD FILEs=N silenzio, un beep, tasti di escape; il file viene salvato nella libreria dei suoni
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … e espressioni ${NAME}
DATABASE GET, PUT, DEL, DELTREEdatabase di Asterisk (AstDB), mantenuto da BitVoice e visualizzato sotto Database AGI
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION è dove la chiamata va quando lo script termina
SPEECH CREATE … SPEECH RECOGNIZEutilizza 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
EXECAnswer, 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.

Capitolo 71

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):

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):

Azione (con Consenti agli assistenti di agire e un token che può cambiare le cose):

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

Capitolo 72

Archivio

Nell'interfaccia web: /archive

L'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.

BitVoiceevery 10 minCall recordingsVoicemailConfigurationonce a dayS3 bucket or Azure containerOnly what is new or changed is copied; nothing is deleted from the archive.
Figura 56. The archive: copies kept somewhere else

Configurazione

  1. In Archivio (capitolo 72), scegli Dove archiviare: Amazon S3 o Azure.
  2. 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.
  3. Per Azure: un URL del contenitore SAS con autorizzazione di scrittura, e una cartella opzionale All'interno del contenitore.
  4. 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.

Capitolo 73

Conservazioni legali

Nell'interfaccia web: /holds

Una 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.

Call recordsrecordings, voicemailUnder a hold?numbers and dates it namesKept, cannot be deletedRetention as setReleasing a hold returns what it kept to the retention settings.
Figura 57. A legal hold: kept, whatever the retention says

Aggiungere una conservazione

Su Conservazioni legali (capitolo 73), premi Aggiungi:

CampoCosa è
Nomecosa si chiama la questione
Motivoperché, per il record
Numerile estensioni e i numeri esterni che copre (101, +15551234567), o Tutto
Da, Ale date che copre; vuoto per nessun limite

Mentre una conservazione è attiva

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.

Capitolo 74

Metriche: Prometheus, OpenTelemetry, Grafana, SNMP e registri di chiamata

Nell'interfaccia web: /settings

Prometheus 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:

BitVoicePrometheusscrapes /metricsOpenTelemetrypushed each minuteGrafanathe ready-made dashboardCalls, phones, trunks, queues, packets lost, quality scores, callbacks.
Figura 58. Metrics: Prometheus pulls, OpenTelemetry is pushed
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:

Invia un record di prova prova il server syslog e il database con le impostazioni salvate.

Capitolo 75

Generatore di chiamate

Nell'interfaccia web: /loadtest

Il 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.

Call generatorso many a secondBitVoiceA number insidenever a trunkAnswered / failedAnswer timeAudio lost, scoreIt never calls trunks or emergency numbers.
Figura 59. The call generator: real calls, real audio, measured

Esecuzione di un test

ImpostazioneCosa rappresenta
Numero da chiamareun numero all'interno di BitVoice: un'estensione, un gruppo, una coda, un menu
Chiamate in arrivo dail numero del chiamante visualizzato nelle chiamate
Rispondi comeun'estensione per cui il generatore risponde automaticamente; o nessuno, quando il numero risponde da solo (un menu, il test dell'eco)
Chiamatequante in totale
Contemporaneamenteil 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 secondoquante iniziano
Ogni chiamata dura (s)quanto dura ogni conversazione

Lettura dei risultati

RisultatoCosa dice
Risposto, Fallitoe Perché le chiamate sono fallite, per motivo
Tempo di risposta, mediana e 95%quanto hanno aspettato i chiamanti
Audio persola quota di pacchetti audio che non sono mai arrivati
Punteggio audiouna stima del suono (MOS): 4 e oltre è buono, sotto 3.6 è scarso
Jitter, 95% delle chiamatequanto irregolarmente il suono è tornato (jitter di interarrivo RFC 3550, mediato su ogni chiamata); i telefoni smussano fino a circa 20 ms
Maggiore intervallo, peggiore chiamatal'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ù lungaquante 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 tempoun grafico del carico
Capitolo 76

Traccia SIP

Nell'interfaccia web: /trace

La 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à.

Phone 100BitVoiceProviderINVITE 2125550199100 TryingINVITE +12125550199180 Ringing180 Ringing200 OK200 OKACKBYEBYE
Figura 60. A SIP trace: the messages of one call, in order

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

VediDi solito significa
REGISTER risposto 401, poi nullail telefono non ha la password o ha quella sbagliata
REGISTER risposto 403l'indirizzo è bloccato o il telefono si registra come un'altra estensione
INVITE risposto 404nessuna rotta corrisponde al numero composto (Routing delle chiamate (capitolo 8))
INVITE risposto 403 dal fornitoreil fornitore rifiuta l'ID del chiamante o il numero
486l'altro lato è occupato
488i due lati non hanno un codec in comune (Codecs (capitolo 66))
200 OK, poi BYE dopo circa 30 secondil'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 nullail suono è bloccato: controlla l'indirizzo pubblico in Impostazioni e le porte multimediali nel firewall
Parte 6

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.

Capitolo 77

Chiamate 911 (il profilo 911)

Nell'interfaccia web: /psap

BitVoice 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.

ESInetBCFchecks the source911 queueby priorityCall-taker positionlocation on the map, callback number,additional data, rebid, transferCAD: ALI spill, EIDONENA i3 logevery event
Figura 61. The 911 profile: an NG911 call reaches a call-taker

Configurazione.

  1. In Tronchi (capitolo 7), aggiungi il trunk del tuo fornitore ESInet (o il core NG911 ESRP) e attiva Dall'ESInet.
  2. In Routing delle chiamate (capitolo 8), invia le sue chiamate ai tuoi call-taker: una coda o un gruppo di chiamata.
  3. 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:

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 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 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.

Capitolo 78

Console di dispacciamento radio

Nell'interfaccia web: /radio

I 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.

P25 systemISSI or CSSIRoIP gatewayanalogue channelsEncrypted talkgroupAES-256 keysRadio consolepush to talk (hold space)patch two channelsalert tonesemergency acknowledgeunit-to-unit callsDispatcherbeside the phoneRadio logand CAD events
Figura 62. The radio console: talkgroups beside the phone

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).

Capitolo 79

**Servizi core NG911** (ECRF, ESRP, LVF, BCF, LIS, registrazione)

Nell'interfaccia web: /core

Per 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.

Incoming 911with locationESRProutes the callECRF (LoST)which PSAP serves here?Policy rulesoverflow, time of dayThe right PSAPLVFvalidates addresses
Figura 63. NG911 Core Services: routing a call by where the caller is

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:

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.