BitVoice-handleiding
Inhoud
- Deel 1. Aan de slag
- Deel 2. Waar gesprekken naartoe gaan
- 16. Gespreksstroom
- 17. Ringgroepen
- 18. Wachtrijen
- 19. Uitgaande dialer
- 20. Geluiden: prompts, talen en wachtmuziek
- 21. Menu's (auto-antwoordapparaat)
- 22. Dial-by-name-map
- 23. Inbellen (DISA)
- 24. Sprachbots (AudioSocket)
- 25. Dag/nacht-toggles
- 26. Plannen
- 27. Scripts (JavaScript en Lua)
- 28. AI-receptionist, voicemail triage en vragen
- 29. Voicemail
- 30. Terugbelverzoeken
- 31. Oproepkoppelingen en website-oproepen
- Deel 3. Alledaags bellen
- 32. Functiecodes, doorsturen en sneltoetsen
- 33. De medewerkersportal
- 34. Conferentiekamers
- 35. Pagina en luidsprekers
- 36. Hot desking
- 37. Hotel- en wekoproepen
- 38. Contacten op elke telefoon
- 39. Kalenders en niet storen
- 40. Mobiele apps
- 41. Videogesprekken
- 42. Fax: verzenden en ontvangen, faxapparaten en analoge telefoons
- 43. Postvak IN: webchat, WhatsApp en Messenger
- 44. Bedrijfsteksten (SMS)
- 45. Overdracht van korte beschrijvingen
- Deel 4. Klanten en inzicht
- 46. Actieve gesprekken
- 47. Gespreksgeschiedenis
- 48. Klantentijdlijn
- 49. CRM: bellerkaarten en gesprekslogboek
- 50. Inzicht in oproepen voor supervisors
- 51. Oproepopname en betaalpassen
- 52. Opname-toestemming
- 53. Gesprekskwaliteit
- 54. Kosten en budgetten
- 55. Beller-ID-reputatie en gemarkeerde oproepen
- 56. Spam-bescherming en STIR/SHAKEN
- Deel 5. BitVoice uitvoeren
- 57. Beheerders
- 58. Enkelvoudige aanmelding
- 59. Bedrijfsdirectory (Active Directory en LDAP)
- 60. Beveiliging
- 61. Wijzigingen, back-ups en import
- 62. Updates
- 63. Meerdere servers als één telefoonsysteem
- 64. Waar de gegevens worden opgeslagen (SQLite of PostgreSQL)
- 65. Andere organisaties hosten
- 66. Codecs en geluid
- 67. Microsoft Teams (Direct Routing)
- 68. Importeren
- 69. Configuratie als code
- 70. Asterisk-compatibiliteit (AMI, ARI en AGI)
- 71. AI-assistenten (MCP)
- 72. Archief
- 73. Wettelijke retentie
- 74. Metrische gegevens: Prometheus, OpenTelemetry, Grafana, SNMP en gespreksrecords
- 75. Oproepgenerator
- 76. SIP-trace
- Deel 6. Openbare veiligheid: de lab-track
Aan de slag
Van een nieuwe installatie tot een werkend telefoonsysteem: extensies, telefoons, een telefoonmaatschappij, waar gesprekken naartoe gaan, noodoproepen vanuit uw kantoren en hoe u kunt controleren of alles klaar is.
Aan de slag
/BitVoice is een complete telefoonsysteem in één programma: de centrale waar telefoons zich aanmelden, de menu's en wachtrijen waar bellers doorheen gaan, voicemail, opname, conferentiezalen, faxen en de verbindingen met telefoonmaatschappijen. Alles wordt ingesteld in de browser, op de schermen die deze handleiding beschrijft. Er is geen configuratiebestand om te bewerken en niets anders om te installeren.
Wat u nodig heeft
- Een computer om het op te draaien: een kleine kantoorserver, een virtuele machine, een cloud-exemplaar of voor een eerste blik uw eigen laptop. Linux, macOS en Windows werken allemaal. Een Raspberry Pi 4 draait een kleine kantoor.
- Telefoons: bureautelefoons van Yealink, Poly, Grandstream of Snom worden automatisch ingesteld; elke andere SIP-telefoon of softphone werkt met zijn eigen instellingen; en elke browser is ook een telefoon.
- Een trunk (een account met een telefoonmaatschappij) om buitennummers te bellen en gebeld te worden. U kunt beginnen zonder een: extensies bellen elkaar en de echotest.
De eerste start
Start BitVoice en open het adres dat het afdrukt (op een desktop opent het de browser zelf). Het webinterface is HTTPS alleen, op deze computer ook. Tot u een certificaat van uzelf installeert (Instellingen, Certificaat), gebruikt BitVoice er een die het zelf heeft gemaakt, dus de browser waarschuwt één keer: kies om door te gaan naar de site. De installatiewizard vraagt vier dingen: de naam en het land van de organisatie, het wachtwoord van de eerste beheerder, de eerste extensies en uw telefoonmaatschappij als u die heeft. Het land bepaalt de noodnummers, de tonen die bellers horen en de manier waarop telefoonnummers worden geschreven.
Het eerste uur
- Extensies: één per persoon of bureau. Elke heeft een nummer en een SIP-wachtwoord. Open Extensies (hoofdstuk 3)
- Telefoons: verbind een bureautelefoon, softphone of de browser-telefoon met elke extensie. Open Telefoons (hoofdstuk 4)
- Trunk: uw account met een telefoonmaatschappij, zodat u buitennummers kunt bellen en gebeld kunt worden. Open Trunks (hoofdstuk 7)
- Oproep-routing: waar oproepen van buiten naartoe gaan (een persoon, een ringgroep, een menu), en welke trunk buitenoproepen gebruikt. Open Oproep-routing (hoofdstuk 8)
- Gezondheid vertelt u wat nog ontbreekt, noodoproepen eerst. Open Gezondheid (hoofdstuk 13)
Maak daarna een testoproep: van elke telefoon toets *43, de echotest. U hoort uzelf terug, wat bewijst dat geluid beide kanten op werkt.
Installeren in één opdracht
Op een Linux-server (Ubuntu, Debian, RHEL, Fedora, Alpine met systemd) of een Mac:
curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh
Op Windows, in PowerShell:
irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex
Het downloadt de laatste release voor de computer, controleert deze tegen de release's SHA-256-sommen en BioDream's release-handtekening (met OpenSSL 3, of anders met OpenSSH's ssh-keygen, die Windows 10 en 11, macOS en Ubuntu 20.04 hebben; ssh-keygen controleert releases vanaf v0.1.14), en installeert deze als een service die automatisch start:
- Linux:
/usr/local/bin/bitvoice, eenbitvoice-systeemgebruiker, gegevens in/var/lib/bitvoice, de systemd-servicebitvoicemet de webinterface op poort 443. Wanneer ufw of firewalld aan staat, wordt poort 443, SIP (5060, 5061) en de audiopoorten van de gesprekken (10000 tot 20000 UDP) geopend. Het print het adres om te openen en de instelcode die de wizard vraagt vanaf een andere computer. - macOS: BitVoice in uw Applications-map (
~/Applications/BitVoice.app), gestart wanneer u zich aanmeldt, de webinterface op poort 8443, gegevens in~/Library/Application Support/BitVoice(alleen toegankelijk voor u) en logbestanden in~/Library/Logs/BitVoice(bitvoice.log, gehouden onder 10 MB). Open BitVoice vanuit Launchpad of Spotlight om de webinterface te bereiken; wanneer deze was gestopt, start dit het opnieuw. Het wordt uitgevoerd ondercaffeinate, zodat de Mac niet in slaapstand gaat terwijl BitVoice draait: een slapende Mac neemt geen gesprekken aan, en zelfs de korte onderhoudsslaapjes stoppen alles voor veel seconden. Het scherm kan nog steeds uitgaan. Handmatig uitvoeren, gebruikcaffeinate -i -s ./bitvoicevoor hetzelfde. Voor een Mac die gesprekken aanneemt terwijl niemand is aangemeld, installeer metsudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): dan staat BitVoice in/Applications, start met de Mac, draait als een verborgen gebruiker van zichzelf (_bitvoice), serveert de webinterface op poort 443, bewaart gegevens in/Library/Application Support/BitVoiceen logbestanden in/Library/Logs/BitVoice, en de firewall van de Mac, wanneer aan, laat het toe om verbindingen te accepteren. Een van de twee per Mac: de installer weigert de andere terwijl er een aanwezig is. Wanneer de firewall van de Mac aan staat, vraagt een BitVoice die voor u is geïnstalleerd één keer of deze inkomende verbindingen mag accepteren: sta dit toe, zodat telefoons kunnen verbinden. Als iets anders al deze poort gebruikt, noemt de installer deze en stopt (kies een andere metBITVOICE_HTTPS=:8444).sh install.sh --uninstall(metsudovoor de Mac van zichzelf) verwijdert deze en bewaart de gegevens;--purgeverwijdert de gegevens en logbestanden ook. Getest op macOS 26 (Apple-silicium), geïnstalleerd voor één persoon: geïnstalleerd, handtekening gecontroleerd met de eigen ssh-keygen van de Mac, een tweede start op dezelfde gegevens geweigerd, terug na het programma te hebben gedood, opnieuw gestart vanuit de app, opgewaardeerd op de plaats, een gewijzigd programma geweigerd, een poort in gebruik geweigerd, deïnstalleerd terwijl de gegevens behouden bleven, opnieuw geïnstalleerd op deze en leeggemaakt met niets over. De installatie voor de hele Mac (sudo) wordt getest op elke wijziging op GitHub's macOS-machines (Apple-silicium): draaiend als_bitvoiceop poort 443, een gebruikersinstallatie ernaast geweigerd, terug na het programma te hebben gedood, opgewaardeerd, leeggemaakt met niets over (de verborgen gebruiker ook). Intel Macs zijn nog niet getest. - Windows: als beheerder,
C:\Program Files\BitVoice, gestart met Windows, gegevens inC:\ProgramData\BitVoice, en een firewallregel voor privé- en domeinnetwerken; anders voor u alleen, gestart wanneer u zich aanmeldt. Het werkt in Windows PowerShell 5.1 (wat Windows Server heeft) en in PowerShell 7, en in 5.1 gestart vanuit 7. BitVoice schrijft zijn logbestand naarbitvoice.login de gegevensmap (gehouden onder 10 MB, het oudere deel inbitvoice.log.1), en de installer print de instelcode die de wizard vraagt vanaf een andere computer. Windows noemt een nieuw Wi-Fi- of netwerk 'Openbaar' totdat het anders is ingesteld, en de firewallregel laat niets binnen: voor een thuis- of kantoor-netwerk zegt de installer hoe u het 'Privaat' kunt maken (Instellingen, Netwerk & internet, Eigenschappen van het netwerk); voor een cloudserver print het de regel die u moet toevoegen (open de poorten ook in de firewall van de provider). Geïnstalleerd als beheerder, is de gegevensmap alleen leesbaar voor beheerders (hierin staan de database en de sleutels), en de Start-menu's BitVoice opent de webinterface; geïnstalleerd voor u, start het Start-menu BitVoice, of opent het wanneer het al draait. Op welke manier dan ook staat het in Instellingen, Apps, Geïnstalleerde apps, die het verwijdert en vraagt of u de gegevens ook wilt verwijderen. Getest op Windows 11 (als beheerder en niet) en op Windows Server 2022 op Amazon EC2: geïnstalleerd, bereikt van buiten, opnieuw gestart na een herstart. - Getest op: Ubuntu 24.04 en 20.04, Debian 12 en Fedora 42 (elk met systemd): geïnstalleerd, handtekening gecontroleerd, een tweede start op dezelfde gegevens geweigerd, terug na het programma te hebben gedood, opgewaardeerd op de plaats, een gewijzigd programma geweigerd, deïnstalleerd terwijl de gegevens behouden bleven, opnieuw geïnstalleerd op deze en leeggemaakt met niets over.
- Linux op een cloudserver: het adres dat het print is het eigen, privé-adres van de machine; de installer zegt dit. Open de server via zijn openbare adres of naam, met poort 443, SIP en de audiopoorten open in de firewall van de provider.
Voer hetzelfde commando opnieuw uit om bij te werken (of gebruik Updates (hoofdstuk 62)). sh -s -- --version v0.1.5 (na de pijp) kiest een release; --uninstall verwijdert het programma en de service en bewaart de gegevens, --purge verwijdert de gegevens ook. Op Windows, sla het script op en voer .\install.ps1 -Version v0.1.5 uit, -Uninstall of -Purge, of verwijder het in Geïnstalleerde apps. Voor een server die buiten het internet wordt gehouden, kopieer het archief van de release en SHA256SUMS naar een map en stel BITVOICE_FROM in op deze.
Waar het draait
BitVoice draait op Linux, macOS en Windows.
| Systeem | Hoe het te starten | Waar de gegevens zijn |
|---|---|---|
| Linux | ./bitvoice (of de systemd-service in de release) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | dubbelklik op bitvoice.exe | %APPDATA%\BitVoice |
Op Windows moet u het venster dat het opent, openhouden terwijl u BitVoice gebruikt (het sluiten ervan stopt BitVoice), en wanneer Windows vraagt of het het netwerk mag gebruiken, moet u privénetwerken toestaan zodat telefoons kunnen verbinden. -data plaatst de gegevens overal elders; -https en -sip kiezen de adressen en poorten; -log FILE schrijft ook alles wat het afdrukt naar een bestand, voor een computer waar niemand naar het venster kijkt.
De poorten die het gebruikt
| Poort | Waarvoor |
|---|---|
| 5060 UDP en TCP | SIP: telefoons en trunks |
| 5061 TCP | SIP over TLS (versleutelde signalering) |
| 4569 UDP | IAX2-trunks, alleen eenmaal een trunk is ingesteld |
| 1720 TCP | H.323-trunks, alleen eenmaal een trunk is ingesteld |
| 2000 TCP | Skinny (SCCP)-telefoons, alleen wanneer ingeschakeld |
| 2727 UDP | MGCP-gateways, alleen wanneer ingeschakeld |
| 10000–20000 UDP | het geluid van gesprekken (RTP), ingesteld in Instellingen |
| 8443 TCP | deze webinterface, alleen HTTPS (onversleuteld HTTP wordt doorgestuurd naar HTTPS) |
Als een ander telefoonsysteem al poort 5060 gebruikt, neemt BitVoice de volgende vrije poort en meldt Health dit.
Alles in de webinterface
Elke instelling heeft een scherm, en elk scherm heeft een hoofdstuk hier. Niets heeft een configuratiebestand, een opdrachtregel of een tweede hulpmiddel nodig. Voor automatisering zijn dezelfde schermen een REST API, en de configuratie kan een bestand in Git volgen (Configuratie als code (hoofdstuk 69)), maar geen van beide is ooit vereist.
Waar BitVoice voor is
BitVoice is allereerst een telefoonsysteem voor kantoren en contactcentra, en een gehoste telefoondienst voor providers: alles in de eerste vijf delen van deze handleiding. Het 911-antwoordpuntprofiel, de radiodispatchconsole en NG911 Core Services zijn een apart lab- en ontwerppartnertraject (Openbare veiligheid (hoofdstuk 77)): ze zijn uit het menu totdat ze in Instellingen zijn ingeschakeld en niet zijn gecertificeerd voor live-gebruik. Noodgesprekken van uw eigen telefoons maken deel uit van dat traject; ze werken op elk telefoonsysteem vanaf de eerste start.
Uw weg vinden
- Druk overal op ⌘K (Ctrl+K) om naar een scherm te springen, of typ de naam of het nummer van een extensie om deze te openen.
- Op een telefoon staat het menu achter de ☰-knop linksboven (en zoek ernaast, rechtsboven); het kiezen van een pagina sluit deze weer.
- Elk scherm heeft een Help-koppeling rechtsboven die het hoofdstuk van deze handleiding opent.
- Wijzigingen bewaart elke versie van de configuratie: u kunt zien wat er is gewijzigd en het ongedaan maken.
- Drie thema's (Midnight, Dark en Light) staan onderaan het menu.
Hoe volwassen elk deel is
Hoe ver elk deel is bewezen, eenvoudig. Veldgetest: uitgevoerd tegen echte systemen over een echt netwerk (Amazon EC2, internet, echte providersdiensten). Geverifieerd tegen een referentie: getest tegen een onafhankelijke implementatie of de eigen gegevens van de standaard. Software-getest: alleen BitVoice's eigen tests en browsertests, nog niet met echte apparaten of accounts. Lab: openbare-veiligheidsdelen, niet gecertificeerd.
| Gebied | Volwassenheid | Waar het op rust |
|---|---|---|
| SIP-trunks: registratie, in- en uitgaande gesprekken, caller ID, bezet, toetsen (RFC 4733) | Veld-getest | een commerciële carrier, SIP.US (demo-account, vanaf EC2): registratie en uitgaande gesprekken naar het openbare telefoonnetwerk via UDP en via TLS met het certificaat van de carrier gecontroleerd; MOS 4,39, geen verlies. Ingaande gesprekken van het openbare telefoonnetwerk: T38Fax (faxgesprekken naar zijn nummer, registratie via UDP). Asterisk als carrier over het internet op EC2; MOS 4,4. Kamailio 5.7 (registratie met digest-inloggen via TLS, gesprekken beide kanten, toetsen) en FreeSWITCH 1.11 (TLS en SRTP, gesprekken beide kanten, G.722 naar G.711) als de verre kant; MOS 4,39 |
| Bureau-telefoons via SIP | Veld-getest | Asterisk als bureau-telefoon over het internet. Echte Yealink-, Poly- of Grandstream-toestellen nog niet geprobeerd |
| Browser-telefoon (WebRTC) | Veld-getest | van buiten naar EC2; Chromium-browser-tests met geluid beide kanten |
| Twee servers, één PostgreSQL, failover | Veld-getest | kill -9 en geplande stop op EC2: het gesprek gaat door, de providerlijn verplaatst |
| Een-opdracht-installatie | Veld-getest | Ubuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (als beheerder en niet, in PowerShell 5.1 en 7), Ubuntu 20.04 en Fedora 42 in containers, macOS 26 op Apple-silicium (voor één persoon, en met sudo voor de hele Mac in CI); terug na een herstart |
| Capaciteit | Veld-getest | 2.000 gesprekken tegelijk, geen verlies, MOS 4,41, op een 16-vCPU c7i.4xlarge (ongeveer 10 vCPUs bezig); 200 tegelijk op c7g.large, c7i.large, t4g.small, een M4 en de Lightsail nano. Bij 2.000: jitter 4,0 ms voor 95% van de gesprekken, langste gap tussen pakketten 74 ms, langste garbage-collection-pauze 4,2 ms |
| FreePBX-migratie (Import) | Veld-getest | een echte FreePBX 17.0.33-backup (70 MB) geïmporteerd; anderen van FreePBX's eigen formaten |
| AI-transcripten, samenvattingen, receptie | Veld-getest | een echt model via OpenRouter |
| Feiten en samenvattingen zonder taalmodel | Software-getest | uitgevonden 911-gesprekken alleen: 23 van 43 feiten (53%) op de verzegelde set, 3 feiten die niemand verwachtte; 41/41 training, hold-out 27/40 koud. Nooit gemeten op echte gesprekken. |
| Spraak-naar-tekst op deze server (whisper) | Veld-getest op macOS en Linux | whisper-server 1.9.5 uitgevoerd door BitVoice: op een Mac, en op Ubuntu op EC2 (x86-64), waar het de live-gespreks- en voicemail-transcripten in het telefoon-app-voorbeeld schreef; downloads voor elk platform gebouwd en geprobeerd in CI |
| Archiveren naar S3, geheimen van AWS Secrets Manager | Veld-getest | echte AWS, onze eigen SigV4 |
| SNMP-bewaking en -valstrikken | Veld-getest | net-snmp's snmpwalk en snmptrapd |
| Let's Encrypt | Veld-getest | problemen en vernieuwt het openbare demo-certificaat |
| Machine-afbeeldingen (AWS) en configuratie als code | Veld-getest | een EC2-afbeelding gebouwd door deploy/cloud/build-images.sh vanaf Ubuntu 24.04: elke server vanaf deze start opnieuw; deploy/terraform met OpenTofu 1.13 (maak, verander, geen drift, vernietig). Azure-afbeeldingen nog niet geprobeerd |
| IAX2-trunks | Geverifieerd tegen een referentie | Asterisk 23 |
| Volledige ICE achter NAT (STUN- en TURN-client) | Geverifieerd tegen een referentie | Chromium's ICE-agent (host-candidates en relay alleen), JsSIP-softphones met BitVoice-aanbod, coturn 4.18 en BitVoice's eigen TURN-server als relays, mDNS-hostnamen van Chromium opgelost. Nog niet geprobeerd vanaf een server achter een echte NAT-router |
| ICE-hernieuwing (een telefoon die van netwerk wisselt tijdens een gesprek) | Geverifieerd tegen een referentie | Chromium die ICE op een browser-telefoongesprek (BitVoice als ICE-lite en als volledige agent) herstart en SIP.js 0.21 die herstart door re-INVITE via SIP over WebSocket: nieuwe referenties beide kanten, een nieuwe kandidatenpaar, geluid elke halve seconde tijdens de herstart. Nog niet geprobeerd op een telefoon die echt van Wi-Fi naar een mobiel netwerk verplaatst |
| SIP-History-Info en Diversion (doorgestuurde gesprekken) | Geverifieerd tegen een referentie | Asterisk 20's PJSIP beide kanten: zijn doorgestuurde gesprekken gelezen door BitVoice, en BitVoice's doorgestuurde gesprekken gelezen door Asterisk's REDIRECTING() van History-Info alleen en van Diversion alleen; RFC 7044-vermeldingen behouden en uitgebreid bij een doorgestuurd gesprek. Nog niet geprobeerd met een carrier of Teams die deze verzenden |
| Bedrijfsdirectory (LDAP, Active Directory) | Geverifieerd tegen een referentie | OpenLDAP 2.4 (StartTLS en LDAPS, 1.203 personen gelezen via paging voorbij zijn limiet van 1.000, groepen, inloggen) en Samba 4's Active Directory (LDAPS, paging voorbij 1.000, uitgeschakelde accounts weggelaten, geneste groepen voor ringgroepen en rollen). Nog niet geprobeerd tegen Microsoft's eigen Windows Server-domeincontroller |
| ARI (Asterisk REST Interface) | Geverifieerd tegen een referentie | elke bewerking van Asterisk's gepubliceerde ARI aangeroepen en zijn antwoord gecontroleerd tegen het model's vereiste velden; ari-client 2.2.0, Asterisk's JavaScript-bibliotheek, leest /ari/api-docs en voert een toepassing uit |
| Ieders video-kamers (SFU, simulcast) en scherm delen | Geverifieerd tegen een referentie | Drie Chromium-browsers in één kamer, elk drie formaten (VP8-simulcast) verzendend en de andere twee ontvangend; formaten gewisseld bij keyframes als tegels groeien en krimpen. Camera's en een gedeeld scherm (Chromium's eigen schermopname) in een H.264-kamer. Nog niet geprobeerd met Firefox of Safari, over het internet, of met meer dan drie camera's; H.264-simulcast kiest lagen op basis van de volgorde van de browser alleen. |
| AGI en FastAGI (Asterisk Gateway Interface) | Geverifieerd tegen een referentie | elke opdracht's antwoord vergeleken met Asterisk 20.6's via FastAGI; een FastAGI-server geschreven met pyst2 die een gesprek uitvoert; EAGI-audio naar een programma. Nog niet geprobeerd met een productie-IVR |
| AI-assistenten via MCP | Geverifieerd tegen een referentie | de officiële MCP-TypeScript-SDK (1.32.2) als client: tools weergegeven en aangeroepen met een API-token via Streamable HTTP (protocol 2025-11-25), en zijn OAuth-inloggen eind tot eind (ontdekking, registratie, PKCE, token, vernieuwen); de toestemmingspagina in Chromium; de stdio-brug tegen een testserver. Nog niet geprobeerd met Claude, ChatGPT of een andere assistent zelf, die een server nodig heeft die vanaf het internet bereikbaar is met een vertrouwd certificaat. |
| Microsoft 365 en Google Workspace (contacten en agenda's) | Software-getest | tegen stand-ins van Microsoft Graph (gebruikers, organisatiecontacten, agenda-getSchedule, de client-credentials-token) en van Google's People API, Calendar freeBusy en JWT-bearer-token, geschreven van hun gepubliceerde referenties; de stand-ins controleren wat BitVoice verzendt (de JWT's handtekening en claims, paging, aanvraagbodies). Nog niet geprobeerd met een echte Microsoft 365-tenant of Google Workspace-domein. |
| De schermen in 14 talen | Software-getest | elk stukje tekst dat de schermen weergeven (ongeveer 5.000, van de code: JSX-tekst, strings en de server's berichten) machine-vertaald door Llama 3.3 70B in 13 talen, 99% behouden door de controles (dezelfde placeholders, adressen en codes ongewijzigd); Duits getekend via de browser-tests (inloggen, menu, zoeken, een formulier, terug naar Engels). Nog niet beoordeeld door een persoon in enige taal. |
| H.323-trunks | Geverifieerd tegen een referentie | H323Plus 1.28 (zijn simph323 afgespeeld en opgenomen WAV-bestanden) op EC2: gesprekken beide kanten met Fast Connect en G.711, elk uiteinde hoort het andere's toon, MOS 4,39; gespreksopzet ook met Asterisk's chan_ooh323 (wiens eigen geluid defect is in Asterisk 22) |
| SIP over WebSocket | Geverifieerd tegen een referentie | JsSIP en SIP.js |
| Codecs: GSM, G.726, iLBC, MP3-houdmuziek | Geverifieerd tegen een referentie | ffmpeg, het RFC 3951-referentieprogramma en minimp3, sample voor sample |
| Codecs: G.711, G.722, G.729, Opus, Speex | Geverifieerd tegen een referentie | G.711 en G.722 byte voor byte en sample voor sample met spandsp; G.729's decoder sample voor sample op alle zeven van ITU's eigen Annex A-testvectoren (bcg729 is niet), zijn encoder interwerkt met bcg729 op hetzelfde niveau (G.729 vereist geen overeenkomende encoders); Opus-pakketten gedecodeerd door libopus 1.6.1 en libopus's pakketten gedecodeerd zoals libopus doet; Speex-pakketten en geluid identiek aan libspeex 1.2.1; Opus-gesprekken met de Android-app |
| Codecs: AMR-NB, AMR-WB | Geverifieerd tegen een referentie, met een bekende kloof | AMR-WB decodes zoals opencore-amr sample voor sample, en op 3GPP's eigen TS 26.174-testsequenties overeen met 3GPP's decoder exact op 167 van 198 en is nooit meetbaar lager; de AMR-NB-encoder frame voor frame met opencore-amr, maar zijn decoder is dichtbij, niet exact (ongeveer 31 dB van opencore). Beiden komen van de vastgepinde goamr-bibliotheken |
| Codecs ongewijzigd doorgegeven: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2 | Software-getest | eigen tests: aangeboden met hun bitrate of modus, beantwoord, pakketten beide kanten byte voor byte; niet omgezet (geen gratis referentiecode BitVoice mag verzenden voor G.722.1 en G.719). Nog niet geprobeerd met een echte Polycom- of ruimtesysteem. |
| ISDN-PRI en BRI, T1/E1 | Geverifieerd tegen een referentie | libpri (Asterisk's), beide kanten; en op EC2 via de echte DAHDI 3.4-kernel-driver (twee spans samen geweld in de kernel, Asterisk 20's chan_dahdi als de telefoonmaatschappij): gesprekken beide kanten met nummers en namen, alle 23 kanalen tegelijk, MOS 4,39. Geen fysieke kaart of lijn nog |
| MFC-R2, E&M | Geverifieerd tegen een referentie | OpenR2; MF-tonen door onze eigen tests. Geen echte kaart of lijn geprobeerd |
| SS7 (ISUP, MTP, linksets van meerdere links met wisseling) | Geverifieerd tegen een referentie | libss7 (Asterisk's chan_dahdi-bibliotheek), ITU en ANSI. Geen echte carrier-link geprobeerd |
| Fax (T.30, T.38) | Veld-getest | een fax-carrier, T38Fax (gratis proef, vanaf EC2): BitVoice die een fax via het openbare telefoonnetwerk naar zijn eigen nummer verstuurt en ontvangt, beide via T.38 (2 pagina's, 14.400 bit/s, de pagina's aangekomen intact; registratie met gebruikersnaam en wachtwoord); en een fax doorgegeven tussen een fax-machine op een gateway (Asterisk met spandsp, als een staand voor een) en T38Fax, uit en terug in, 2 pagina's bij 14.400 bit/s beide kanten: eenmaal allemaal op G.711 (de gateway weigerde T.38) en eenmaal overgeschakeld naar T.38 op beide kanten. spandsp (via Asterisk 20) op EC2: ontvangen en verzenden via T.38 met foutcorrectie, en faxes doorgegeven tussen twee andere machines via T.38 en via G.711. Geen hardware-fax-gateway geprobeerd, en T38Fax vroeg nooit om T.38 zelf, dus een carrier's switch geweigerd door de gateway werd niet gezien |
| Inrichting: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberData | Software-getest | de fabrikanten's gedocumenteerde formaten; niet op echte toestellen |
| Skinny (SCCP)-telefoons, MGCP-gateways | Geverifieerd tegen een referentie | Skinny: telefoons van de open-source mwicat/sccp-bibliotheek, elk bericht gelezen door Wireshark's dissector, groottes als Asterisk's chan_skinny; MGCP: Yate's MGCP-gateway (herstart, voorlopige antwoorden, bevestigingen; het heeft geen analoge poorten, dus geen gesprek). Geen Cisco-telefoon- of gateway-hardware geprobeerd |
| Microsoft Teams Direct Routing | Software-getest | tegen een gesimuleerde Microsoft-proxy die Microsoft's gepubliceerde Direct Routing SIP-regels volgt (OPTIONS, Contact, user=phone, client-certificaat, overdrachten Teams vraagt via REFER met x-m en x-t); geen Teams-tenant geprobeerd: Microsoft biedt geen gratis (Teams Phone-licenties) |
| Hotel (FIAS) | Geverifieerd tegen een referentie | elk record BitVoice verzendt gecontroleerd tegen Oracle's gepubliceerde FIAS 2.20.23-specificatie (link start, link-records, postings, wake-up-antwoorden); eigen tests. Nog niet tegen Opera zelf |
| Teksten, WhatsApp, Messenger, web-chat | Geverifieerd tegen een referentie (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp) | Teksten via Twilio, Telnyx, Bandwidth, Vonage en TextMagic, en WhatsApp-teksten, sjablonen en sjabloonlijsten, tegen mocks gebouwd van de providers' eigen gepubliceerde OpenAPI-specificaties (Stoplight Prism, weigerend alles de specificatie niet toestaat; TextMagic's is de een zijn eigen client gegenereerd van). Vonage's toonde de sleutel hoort in HTTP Basic, niet langer in het formulier. SignalWire spreekt Twilio's API; Plivo, Flowroute, VoIP.ms en Messenger publiceren geen specificatie en worden gecontroleerd tegen stand-ins geschreven van hun documentatie. Geen live-account geprobeerd |
| CRM-beller-kaarten, Azure Blob, Azure Key Vault | Geverifieerd tegen een referentie | EspoCRM (een echte open-source CRM, in Docker) voor beller-kaarten; Microsoft's Azurite-emulator voor Blob-uploads (container-SAS, weigeringen); Lowkey Vault voor Key Vault met een beheerde identiteit. Nog niet tegen Azure zelf of een gehoste CRM |
| Spam-beveiliging: robot-test, onbekende bellers, spam-database, *32, suggesties | Software-getest | BitVoice's eigen tests: een provider die inbelt via SIP en toetsen indrukt (RFC 4733) bij de robot-test, deze passeert en faalt; bekende, altijd toegestane en nood-beller-terugbellers rinkelen tegelijk; de spam-database tegen een stand-in die antwoordt zoals Twilio zijn Lookup met de Nomorobo-add-on documenteert (geen Twilio-account geprobeerd); *32 van een bureau-telefoon; suggesties van gespreksrecords; de instellingen via de browser-tests. Nog niet geprobeerd tegen echte robocalls of een betaalde database |
| iPhone- en Android-apps | Veld-getest (Android) | Android: een Google Pixel 8 (Android 16, Wi-Fi) met de ondertekende release-build tegen BitVoice op EC2 met een Let's Encrypt-certificaat: gekoppeld via link, rinkelde met Android's call-notificatie, beantwoord vanuit deze, audio beide kanten, bleef verbonden met het scherm uit en op de achtergrond (zijn ongoing-call-notificatie, Hang up); zonder push rinkelde het niet op de achtergrond. Een Google Pixel 11 (Android 17) in AWS Device Farm: gekoppeld, rinkelde, beantwoord, belde uit; Opus, MOS 4,1. iPhone: de app (SwiftUI, CallKit, PushKit VoIP) bouwt tegen de huidige SDK (Xcode 27) en de server ondertekent Apple VoIP-pushes (APNs, ES256); dezelfde echte-apparaat-fixes als Android en een App Store-listing (ios/AppStore) zijn in. Beide apps zijn een volledige extensie: overdracht (blind, via REFER), houd en een tweede gesprek, toetsenbord en dempen, met Recents, visuele Voicemail (met transcripten), een Team-busy-lamp, Contacten, de staff-Chat (collega's met aanwezigheid, directe berichten en kamers, met een notificatie op de achtergrond en een push wanneer de app gesloten is), een video-kamer-keuzer (lijsten de SFU-kamers met wie er in elke zit, voegt toe als de extensie, weergegeven als een video-gesprek op het telefoonscherm) en een live AI-transcript op het gesprek (AI.LiveCallTranscripts); overdracht, houd, het live-transcript, de chat die een collega bereikt, de kamer-lijst, een kamer toegevoegd door een telefoon en de chat-push vormen elk worden afgedekt door een engine-niveau-, API- of browser-test. Op de Pixel 8 (2026-10-30, debug-build, EC2 met Let's Encrypt): rinkelde en beantwoord vanuit de notificatie, hield en hervatte (de Android-call-state volgt), belde uit op het Android-call-systeem, Opus beide kanten met MOS 4,38 en geen verlies; voegde een video-kamer toe met zijn camera (gevraagd bij het eerste gebruik) en zag een desktop-camera, beide live; een chat-bericht op de achtergrond meldde en opende Chat. Houd en overdracht bereiken het native call-scherm (CallKit, Telecom). Nog niet uitgevoerd op een iPhone of ingediend: push, het systeem-call-scherm en ondertekening nodig onze eigen Apple Developer-account |
| 911-profiel, radio-console, NG911 Core Services, beller-video | Lab | NENA's schema's en voorbeeld-gegevens, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, een NIST P25-capture (zijn IMBE-spraakframes uitgepakt als mbelib ze uitpakt: dezelfde pitch, harmonischen, voicing en amplituden); nooit op een live ESInet, P25-systeem of PSAP CAD, en niet gecertificeerd |
| P25-fase 2 half-rate-spraak (AMBE+2) | Niet aangeboden | gepatenteerd tot 2028 |
| Ed448-handtekeningen (NENA) | Niet aangeboden | niet in Go's standaardbibliotheek, en BitVoice schrijft geen cryptografie van zichzelf; Ed25519 wordt gebruikt |
| SS7-signaaloverdracht (STP), SCCP en TCAP | Geverifieerd tegen een referentie | OsmoSTP 2.3.0 via M3UA/TCP met libosmo-sigtran's SCCP-echo-gebruiker achter het; UDT en XUDT beide kanten, UDTS geretourneerd, globale titelvertaling via de STP, een schakelaar op een linkset die de echo bereikt via IP; TCAP tegen libosmo-asn1-tcap beide kanten. ITU alleen; geen SCTP, connection-oriented SCCP of SCCP-beheer; geen echte carrier geprobeerd |
| MFC-R2 China-variant (China No. 1) | Software-getest | elk signaal van een gesprek gecontroleerd tegen Cisco's gepubliceerde China-tabellen en oproep-sequenties (KA, KD, Groep B door de KD verzonden, C en D-bits 11). OpenR2's China-variant is het niet eens met zichzelf, dus geen programma om tegen te testen; geen echte lijn geprobeerd |
| ALI via PAM of E2 | Niet aangeboden | PAM is Intrado's eigen protocol met geen gepubliceerde specificatie; E2 (J-STD-036, NENA 05-001) loopt tussen een mobiel-positioneringscentrum en de ALI-database, niet naar een PSAP. BitVoice spreekt de verzoek-en-tekst ALI-koppelingen en HELD in plaats daarvan |
Toestellen
/extensionsEen toestel is een nummer voor een persoon of een bureau. Telefoons melden zich aan met het toestelnummer en het SIP-wachtwoord; oproepen naar het nummer laten alle telefoons die zijn aangemeld als dit nummer, tegelijkertijd overgaan.
Een extensie toevoegen
- Open Extensies (hoofdstuk 3) en druk op Extensie toevoegen. Het volgende vrije nummer en een sterk SIP-wachtwoord worden ingevuld.
- Voer de naam van de persoon in (weergegeven op andere telefoons wanneer ze bellen) en het e-mailadres (voor voicemail per e-mail).
- Vul de 911-locatie in: de site, verdieping en kamer. Deze wordt meegestuurd met noodoproepen.
- Kies wat er gebeurt Als niemand antwoordt: voicemail standaard, of een andere extensie, een groep of een menu.
- Sla op. De extensie kan meteen inloggen.
De velden
| Veld | Wat het doet |
|---|---|
| Nummer | 2 tot 8 cijfers; geen ander toestel, groep, wachtrij, kamer of functiecode mag dit hebben |
| SIP-wachtwoord | waarmee de telefoon zich aanmeldt; minstens 12 tekens; Genereren maakt een nieuw wachtwoord aan |
| Overgaat na | seconden voordat Als niemand antwoordt gebeurt (25 seconden standaard) |
| Beller-ID buiten | het nummer dat wordt weergegeven bij uitgaande oproepen; leeg gebruikt het nummer van de trunk |
| Kan buitenlijnen bellen | uitgeschakeld houdt de telefoon beperkt tot interne oproepen en noodnummers |
| Oproepen opnemen | wanneer Instellingen alleen geselecteerde toestellen opneemt |
| Hot desk | een gedeelde telefoon die overgaat op degene die zich aanmeldt |
| Versleutel oproepen naar deze telefoon | media-versleuteling (SRTP); gebruik dit met TLS zodat de sleutels privé blijven |
| Afdeling | groepeert de oproepkosten van dit toestel |
Volg-me, ophalen en intercom
Elke persoon heeft zijn eigen oproepafhandeling in zijn eigen vak op het toestel:
- Volg-me laat meer nummers overgaan wanneer de telefoons hier niet worden beantwoord: een mobiel, een ander bureau. Ze gaan een voor een over of allemaal tegelijk, voor hun eigen overgaanstijd. Met Buitenlijnen drukken op 1 om de oproep te beantwoorden ingeschakeld, drukt degene die antwoordt op een mobiel eerst op 1, zodat de voicemail van de mobiel nooit de oproep beantwoordt. Zie Functiecodes (hoofdstuk 32).
- Ophalengroep: iedereen in dezelfde groep kan de overgaande oproepen van dit toestel beantwoorden door
*8te bellen. - Intercom toestaan:
*80en dit nummer beantwoorden op de luidspreker vanzelf. Schakel dit uit voor personen die dit nooit willen. - Eigen sneltoetsen: korte codes voor deze persoon alleen, gebeld na
*0.
Doorgeleiden op dit moment
Onder de instellingen wordt Doorgeleiden op dit moment weergegeven en gewijzigd wat de persoon heeft ingesteld vanuit zijn telefoon of het personeelsportaal: niet storen en doorgeleiden van elke oproep, van oproepen tijdens bezet en van oproepen die niet worden beantwoord. Dit zijn live statussen, geen configuratie: wijzigen heeft geen revisie tot gevolg.
Wat is aangesloten
- Telefoon: een bureautelefoon, softphone of app.
- Deurstation: een intercom bij een deur. Degene die antwoordt, drukt op de toetscode of Deur openen op Live calls. Met een deurcontrolleradres belt BitVoice dat adres (2N, Axis, Akuvox, relaisborden); zonder adres wordt de code naar het station verzonden, dat de deur zelf opent.
- Luidspreker: oproepen naar deze gaan meteen over en worden via de luidspreker gehoord.
- Analoge adapterpoort: een oude telefoon, fax of alarmpaneel op een adapter. Oproepen gebruiken alleen G.711, wat faxen nodig hebben.
Aangesloten apparaten
Een toestel dat open is, toont elk apparaat dat is aangemeld als dit toestel: het merk en model van de telefoon, hoe het verbinding maakt (UDP, TCP, TLS of de browser) en sinds wanneer. Het adres en de poort die aan een telefoon moeten worden gegeven, worden daar ook weergegeven.
Telefoons verbinden
/phonesElke SIP-telefoon of -app werkt: wijs deze naar het adres en poort 5060 van deze server, met het extensienummer als gebruiker en het SIP-wachtwoord. Bureau-telefoons van de vier grote fabrikanten worden automatisch ingesteld, zodat niemand een wachtwoord intoetsen op het toetsenbord van een telefoon.
Automatische installatie (provisioning)
- Ga naar Telefoons (hoofdstuk 4) en druk op Telefoon toevoegen en voer het MAC-adres van de telefoon in (op een sticker onderaan) en de extensie waar het bij hoort.
- Kies het merk: Yealink, Poly, Grandstream (inclusief de HT-analoge adapters), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo of CyberData.
- Vertel de telefoon waar BitVoice is: in uw DHCP-server, stel optie 66 in op het provisioning-adres dat op het scherm wordt weergegeven, zodat elke telefoon op het netwerk het zelf vindt; of typ hetzelfde adres in op de webpagina van de telefoon, onder auto-provisioning.
- Start de telefoon opnieuw. Het haalt zijn bestand op via HTTPS, meldt zich aan en de lijnknoppen tonen wie er aan de telefoon is.
HTTPS of gewoon HTTP. Telefoons halen hun bestand op via HTTPS wanneer ze kunnen. Sommige oudere telefoons kunnen HTTPS helemaal niet gebruiken, en veel vertrouwen het certificaat dat BitVoice zelf heeft gemaakt niet; voor die telefoons toont het scherm ook een gewoon http://-adres op dezelfde poort. Gewoon HTTP is alleen voor deze bestanden: elke andere pagina gaat nog steeds naar HTTPS. Over gewoon HTTP gaat het SIP-wachtwoord van de telefoon ongecodeerd over het netwerk, dus houd dit beperkt tot een vertrouwd kantorennetwerk, of installeer een certificaat van een autoriteit en schakel Alleen HTTPS voor telefoons in.
Het bestand bevat de extensie, het wachtwoord, de tijdzone, de codecs, bezette lampjes en het adres van deze server. Provisioning wordt beschermd door een gebruikersnaam en wachtwoord die de telefoons eenmaal krijgen.
| Fabrikant | Geteste modellen | Wat het krijgt |
|---|---|---|
| Yealink | T3x, T4x, T5x | account, BLF-toetsen, tijd, codecs |
| Poly | VVX, Edge E | hetzelfde, in Poly's eigen formaat |
| Grandstream | GRP, GXP, HT802/814 | account per poort op adapters |
| Snom | D7xx | account, toetsen, tijd |
Deze fabrikanten worden ook ingericht, met bestanden geschreven in het formaat van elke fabrikant, maar nog niet getest op hun apparaten (het scherm Telefoons markeert ze als niet getest):
| Fabrikant | Modellen | Bestand dat het apparaat vraagt |
|---|---|---|
| Fanvil | X- en V-reeks | zijn MAC-adres .cfg |
| Cisco | 6800, 7800, 8800 multiplatform (3PCC), SPA-adapters | zijn MAC-adres .xml (enterprise-firmware heeft eerst de multiplatform-firmware nodig) |
| Mitel (Aastra) | 6800, 6900 SIP | zijn MAC-adres .cfg, in hoofdletters |
| Sangoma | S-reeks | het Fanvil-formaatbestand |
| Algo | paginatoren, sirenes, adapters | algop en zijn MAC-adres .conf |
| CyberData | luidsprekers, intercoms, paginatoren | zijn MAC-adres .xml |
Elk krijgt zijn account, de server (en de backup-server, met meerdere servers), het transport en de encryptie, en het voicemail-nummer waar hij er een heeft. Stel de extensies van Algo- en CyberData-luidsprekers in op Omroepinstallatie zodat gesprekken naar hen onmiddellijk worden beantwoord.
Telefoons zonder provisioning
Softphones en andere merken hebben dezelfde drie dingen nodig: server (het adres van deze computer, poort 5060, of 5061 met TLS), gebruiker (het extensienummer) en wachtwoord (zijn SIP-wachtwoord). Health lijst telefoons die een verkeerd wachtwoord hebben geprobeerd; na een paar pogingen wordt het adres voor een tijdje geblokkeerd (zie Beveiliging (hoofdstuk 60)).
De browser-telefoon
Het telefoonsymbool onderaan elk scherm maakt deze browser een telefoon voor een extensie, met uw microfoon en luidsprekers. Het gebruikt WebRTC: het geluid is van einde tot einde versleuteld en werkt door de meeste firewalls zonder enige instelling.
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 (hoofdstuk 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.
De WebSocket heeft geen aanmelding nodig: de softphone meldt zich aan met SIP, en mislukte aanmeldingen en te veel verzoeken worden geteld voor zijn eigen adres, net als voor elke telefoon. Een softphone-pagina die vanaf een andere site wordt geserveerd, moet het certificaat van deze server vertrouwen (gebruik Let's Encrypt), en de huidige Chrome vraagt de gebruiker voordat een openbare webpagina een server op het lokale netwerk mag bereiken.
Getest met twee onafhankelijke bibliotheken, JsSIP 3.13 en SIP.js 0.21: twee softphones van elk registreren, bellen elkaar en horen elkaar via BitVoice. Andere softphones (Linphone's webclient, Zoiper's) spreken hetzelfde protocol maar zijn niet getest.
TURN, voor netwerken die UDP blokkeren
Sommige netwerken (hotels, gast-Wi-Fi, strikte bedrijfsfirewalls) laten geen UDP uitgaan, of verbergen computers achter NAT's die WebRTC niet kan doorbreken. Voor die, schakel TURN-server in in Instellingen (hoofdstuk 14): BitVoice voert dan zijn eigen TURN-server (RFC 8656) uit op poort 3478 (UDP en TCP) en, met dit serverscertificaat, op poort 5349 via TLS. Browser-telefoons, de staff-telefoon en oproepkoppelingen krijgen tijdelijke referenties voor het, en gebruiken het wanneer ze de mediapoorten niet rechtstreeks kunnen bereiken; het geluid is nog steeds eind-tot-eind versleuteld, en BitVoice doorstuurt het alleen naar zijn eigen adressen, zodat niemand het kan gebruiken om iets anders te bereiken.
Open de TURN-poort, de TLS-poort en de relay-poorten (49152 tot 49407, tenzij u ze wijzigt) in de firewall. TURN via TLS heeft een certificaat nodig dat browsers vertrouwen voor de naam die ze gebruiken, zoals een van Let's Encrypt (hoofdstuk 14): totdat er een is, biedt BitVoice het niet aan browsers (die het zullen proberen, falen en wachten); en biedt het zodra het certificaat arriveert; stel de poort in op 443 op een server met een vrije adres om door firewalls te komen die alleen HTTPS toelaten.
Netwerk wijzigen tijdens een gesprek
Een telefoon die van netwerk verandert tijdens een gesprek (van het kantoor Wi-Fi naar een mobiel netwerk, of een laptop van het ene Wi-Fi naar het andere) krijgt een nieuw adres, en de oude verbinding houdt op geluid te transporteren. Browser-telefoons en de BitVoice-apps merken dit automatisch: wanneer de browser aangeeft dat het netwerk is gewijzigd, of de verbinding van de oproep niet meer reageert voor twee seconden, start de telefoon ICE opnieuw (RFC 8445 9). Het biedt nieuwe ICE-referenties voor de lopende oproep, BitVoice antwoordt met nieuwe referenties en controleert de nieuwe verbinding, en de oproep wordt overgezet naar de nieuwe verbinding zonder opnieuw te moeten worden gekozen. De versleuteling gaat door met dezelfde sleutels. Terwijl dit gebeurt, wordt de oproep weergegeven als Opnieuw verbinden...; op een verbinding die nog steeds werkt, is er geen onderbreking, omdat de oude verbinding de oproep blijft transporteren totdat het geluid op de nieuwe verbinding beschikbaar is. SIP-softphones via WebSocket (JsSIP, SIP.js) doen hetzelfde door middel van een re-INVITE met nieuwe ICE-referenties. Niets hoeft te worden ingeschakeld, met BitVoice als ICE-lite of achter NAT.
BitVoice achter NAT
De TURN-server hierboven helpt browsers op strikte netwerken om een BitVoice te bereiken dat een openbaar adres heeft. Wanneer BitVoice zelf geen openbaar adres heeft (in een kantoor achter een router zonder poortdoorsturing, of in een cloud-netwerk zonder openbaar adres op de machine), schakel Deze server staat achter NAT in onder BitVoice achter NAT in Instellingen (hoofdstuk 14). BitVoice neemt dan volledig deel aan ICE (RFC 8445) in plaats van te antwoorden op één adres (ICE-lite):
- Het biedt browsers zijn eigen adressen, zijn openbare adres zoals STUN-servers het zien, en relays op TURN-servers waar hij zich aanmeldt (UDP; een gebruikersnaam en wachtwoord per server), en controleert elk adrespaar met de browser, zoals de browser doet.
- Elk gesprek via TURN doorsturen stuurt alle browsermedia via de TURN-servers, voor netwerken die dit vereisen.
- Mijn adressen vinden vraagt de servers zoals een gesprek zou doen en lijst wat BitVoice zal aanbieden: zijn eigen adressen, het openbare adres zoals STUN het ziet (een STUN-server die niet antwoordt wordt gemeld), en zijn relays.
- Het werkt voor de browser-telefoon, oproepkoppelingen, de echotest en SIP-over-WebSocket-softphones, in elke rol: BitVoice antwoordt op een browsersaanbod, en biedt aan een softphone die hij belt. Browsers die hun adressen verbergen achter mDNS-namen (
name.local) worden opgelost op het lokale netwerk, en het browsersadres zoals de webserver het zag wordt vanaf het begin door de relays toegelaten. - Uitgeschakeld als standaard; het voegt een moment toe aan elk gesprek terwijl de servers antwoorden (maximaal een seconde en een halve). Caller-video gebruikt ICE-lite in beide gevallen.
De medewerkertelefoon
Open #/phone op elke computer of mobiele browser: mensen melden zich aan met hun toestel en SIP-wachtwoord, zonder beheerdersaccount. Het is een volledige telefoon: intoetsen, antwoorden, in de wacht zetten, doorschakelen en het toetsenbord. Voor hun eigen doorsturing en voicemail gebruiken ze het medewerkersportaal op #/me (zie Het medewerkersportaal (hoofdstuk 33)).
De mobiele apps
De BitVoice-apps voor iPhone en Android worden gekoppeld vanaf de pagina van de extensie met een QR-code. Oproepen activeren de app via de push-diensten van Apple en Google, zodat deze ook rinkt wanneer deze is gesloten (zodra push is ingesteld; zie hieronder).
Skinny-telefoons en MGCP-gateways
/desk-phonesTelefoons en gateways die geen SIP spreken, kunnen nog steeds worden gebruikt. Skinny-telefoons en MGCP-gateways (onder Oproepen) ondersteunen twee oudere protocollen:
- Skinny (SCCP): Cisco-bureautelefoons met SCCP-firmware (79xx, 69xx, 89xx). Voeg elke telefoon toe met zijn MAC-adres en kies zijn toestel; schakel Skinny-telefoons accepteren in en wijs de telefoon naar BitVoice (TCP-poort 2000) in zijn TFTP-instellingenbestand of -menu.
- MGCP (RFC 3435): gateways waarvan de poorten door BitVoice een voor een worden aangestuurd, zoals analoge telefoonadapters en lijnkaarten. Voeg de gateway toe met de domeinnaam die deze in zijn eindpuntnamen gebruikt (aaln/1@naam), het adres en het toestel van elke lijn; stel de gateway's call agent in op BitVoice (UDP-poort 2727).
Elke Skinny-telefoon of MGCP-lijn is één extra apparaat van zijn toestel: het gaat over met de andere telefoons van het toestel, belt uit als het toestel en wordt weergegeven in de apparaten van het toestel. De pagina toont de status van elk apparaat.
Wat werkt
- Skinny: registratie, de lijn en het nummer op het display, kiestoon, kiezen (het nummer gaat na een pauze of #, of meteen vanaf het toetsenbord van de telefoon wanneer opgeheven na kiezen), wachttoon, overgaan met beller-ID, opnemen en ophangen met de hoorn, luidspreker of zachte toetsen (NewCall, Redial, Answer, EndCall), bezet- en herordertoontjes.
- MGCP: kiestoon, cijfers verzameld door de gateway met een cijferkaart, overgaan met beller-ID (overgaat zonder wanneer de gateway beller-ID weigert), wachttoon, bezet- en herordertoontjes, en de audioverbinding (CRCX, DLCX). Een gateway die opnieuw start (RSIP) heeft zijn poorten opnieuw ingesteld.
- Audio is G.711 µ-law op beide; BitVoice converteert naar wat de andere partij gebruikt.
In de huidige versie worden houd-, doorverbind- en conferentiefuncties uitgevoerd vanaf de andere telefoons van de extensie, en wordt de tweede lijn van een Skinny-telefoon niet gebruikt.
Beveiliging
Geen van beide protocollen heeft wachtwoorden. Skinny-telefoons worden alleen geaccepteerd vanuit het lokale netwerk en alleen wanneer ze zijn opgenomen; MGCP-opdrachten worden alleen uitgevoerd vanaf het adres van de gateway (of, zonder een, vanuit het lokale netwerk). Houd beide poorten buiten het internet.
Een gateway die nog bezig is met een opdracht kan eerst "100 Trying" beantwoorden: BitVoice wacht dan langer voordat de opdracht opnieuw wordt verzonden en de definitieve antwoord (000) bevestigt, zoals RFC 3435 vraagt. Een poort die de gateway niet in de gaten houdt, toont de weigering van de gateway zelf op de pagina, zoals de gateway weigerde de poort in de gaten te houden: 507 Ongesteunde functionaliteit van een mediagateway zonder analoge poorten.
Hoe ze getest worden
- Skinny: twee telefoons gebouwd van een aparte Skinny-implementatie (de open-source mwicat/sccp-bibliotheek) registreren, bellen elkaar, beantwoorden en ophangen; een niet-gepubliceerd telefoonnummer wordt geweigerd. Wireshark's Skinny-dissector leest elk bericht dat BitVoice verstuurt zonder fout, en de berichten hebben de volledige grootte die Asterisk's chan_skinny naar Cisco-telefoons verstuurt.
- MGCP: tegen Yate's MGCP-gateway (herstart, voorlopige antwoorden, bevestigingen, weigeringen) en BitVoice's eigen testgateway voor hele gesprekken. Yate's gateway heeft geen analoge poorten, dus er werd geen gesprek via deze gateway gevoerd.
Telefoniekaarten
/cardsEen telefoniekaart in de BitVoice-computer (Digium, Sangoma, OpenVox en andere kaarten met Linux DAHDI-stuurprogramma's) kan analoog geschakelde telefoons en telefoonlijnen aan. Een apart programma, bitvoice-dahdi, bedient de kaart en verbindt de poorten met BitVoice via de netwerkverbinding van de computer, zodat BitVoice zelf nooit de kernel-stuurprogramma's aanraakt en een kaartprobleem de telefoonsysteem niet kan stoppen.
Instellen
- Installeer de DAHDI-stuurprogramma's en stel de poorten in zoals gebruikelijk in /etc/dahdi/system.conf (
fxoks=1-4voor poorten met telefoons,fxsks=5-8voor poorten met lijnen, en de landtonen inloadzoneendefaultzone), en voerdahdi_cfguit. - Onder Telefoniekaarten (onder Gesprekken) schakel Telefoniekaarten gebruiken in. Er wordt een token gemaakt; kopieer deze naar een bestand dat alleen door root kan worden gelezen, zoals /etc/bitvoice/cards.token.
- Voeg elke poort toe met het DAHDI-kanaalnummer: een telefoonpoort (FXS, een telefoon, fax of deurtelefoon aangesloten) met de extensie, of een lijnpoort (FXO, een telefoonlijn) met het nummer van de lijn. Kies A-law voor Europa en de meeste delen van de wereld, µ-law voor Noord-Amerika en Japan.
- Voor lijnen voegt u een trunk toe met het protocol Telefoniekaartlijnen op Trunks, en routeert u nummers naar deze trunk zoals naar elke trunk; inkomende routes komen overeen met elk nummer van de lijn.
- Start
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokenals een servicegebruiker die /dev/dahdi kan openen. Het staat in de Linux-download naast bitvoice. De pagina toont of het programma draait en de status van elke poort; wijzigingen worden binnen tien seconden doorgevoerd. Een kanaal dat nog door een ander programma wordt gebruikt (of dat nog niet door dahdi_cfg is ingesteld) wordt elke twee seconden opnieuw geprobeerd, dus de volgorde waarin dingen starten maakt niet uit.
Wat werkt
- Telefoons: kiestoon, kiezen (cijfers worden door BitVoice's eigen toondetector gehoord; het nummer gaat na een pauze of #), wachttoon, bezet- en congestietoontjes van de toonzones van de kaart, overgaan voor inkomende gesprekken, en toetsen die tijdens een gesprek worden ingedrukt (verzonden als RFC 4733-gebeurtenissen).
- Lijnen: een overgaande lijn belt het nummer hier en wordt beantwoord wanneer het gesprek wordt; uitgaande gesprekken nemen een vrije lijn, wachten op de kiestoon van de centrale en kiezen het nummer als toon. Het ophangen van de andere kant wordt opgemerkt wanneer de lijn dit aangeeft (lusstroom of polariteit, afhankelijk van de lijn). Analoge lijnen geven niet aan wanneer de andere kant antwoordt, dus een uitgaand gesprek telt als beantwoord zodra het nummer is gekozen.
- Geluid is G.711 naar en van de kaart; BitVoice converteert naar wat de andere partij gebruikt.
Digitale lijnen: T1 en E1 PRI
Een T1 (23 gesprekken tegelijk) of E1 (30) lijn als primaire ISDN-snelheid wordt aangesloten op een digitale kaart (Digium/Sangoma TE-serie, OpenVox D-serie en dergelijke). BitVoice spreekt de PRI zelf (Q.921 op het D-kanaal en Q.931 oproepbesturing), dus elk gesprek komt binnen met het gekozen nummer en de beller-ID, gaat uit met de beller-ID van de extensie, en de telefoonmaatschappij zegt wanneer de andere kant antwoordt, overgaat of bezet is.
- Stel in /etc/dahdi/system.conf de span in voor PRI zoals gebruikelijk (
span=1,1,0,esf,b8zs,bchan=1-23,hardhdlc=24voor een T1;span=1,1,0,ccs,hdb3,crc4,bchan=1-15,17-31,hardhdlc=16voor een E1), en voerdahdi_cfguit. - Onder Digitale lijnen op Telefoniekaarten (hoofdstuk 6) voegt u de span toe: T1 of E1, het eerste DAHDI-kanaal, of BitVoice de PBX op de telefoonlijn van de telefoonmaatschappij is (het gebruikelijke) of het netwerk (een andere PBX verbindt met BitVoice alsof het met de telefoonmaatschappij verbindt), en het schakeltype dat de telefoonmaatschappij u heeft gegeven.
- Voeg de kaarttrunk toe op Trunks als er nog geen is, en inkomende routes voor de nummers (DIDs) die de telefoonmaatschappij verstuurt.
Uitgaande gesprekken nemen een PRI als eerste, de analoge lijnen daarna; een bezet nummer, een verkeerd nummer of geen vrije kanaal komt terug als bezet, niet gevonden of niet beschikbaar, zoals het netwerk zegt. De pagina toont of het D-kanaal van elke span is ingesteld en hoeveel van de kanalen in gesprekken zijn. T1-kanalen die zijn ingesteld met robbed-bit signalling (fxsks, fxoks) werken als de analoge poorten hierboven.
Namen, doorverbinden en overdragen. De naam van de beller komt binnen met het gesprek (vanuit het Display-element, of op National ISDN-2 van de naam die het netwerk als faciliteit verstuurt) en telefoons tonen deze; uitgaande gesprekken sturen de naam van de extensie op dezelfde manier. Het nummer waarvandaan een gesprek is doorgestuurd, komt binnen als het omleidingsnummer (BitVoice geeft dit door als SIP's Diversion, met de reden: bezet, geen antwoord, onvoorwaardelijk), en wanneer de doorverbinding van een extensie een gesprek terug naar buiten stuurt via de PRI, gaat het nummer van de extensie mee als het omleidingsnummer, zodat de andere kant en de telefoonmaatschappij weten van wie het gesprek is. Wanneer een extern gesprek wordt beantwoord, vertelt BitVoice het netwerk het nummer dat heeft geantwoord (het verbonden nummer).
Schakel Doorverbinden via de telefoonmaatschappij in op een span (gebruikerszijde, National ISDN-2, 5ESS, DMS-100 of EuroISDN) en wanneer iemand een beller op die lijn doorverbindt naar een ander nummer op dezelfde lijn, vraagt BitVoice het netwerk om de twee gesprekken zelf te verbinden: Two B-Channel Transfer op National ISDN-2- en 5ESS-lijnen, Release Link Trunk-transfer op een Nortel DMS-100, expliciete oproepoverdracht (de beller in de wacht gezet, vervolgens verbonden) op EuroISDN. Een DMS-100 geeft een overdrachtsidentifier alleen aan gesprekken die door BitVoice zijn geplaatst, dus daar moet een van de twee gesprekken een uitgaand gesprek zijn (de gebruikelijke situatie: een beller die is doorgestuurd of overgedragen naar een extern nummer). Beide kanalen worden vrijgegeven zodra het netwerk ze heeft verbonden. De lijn moet de dienst hebben (vraag de telefoonmaatschappij om "twee B-kanaaloverdracht" of "ECT"); als het netwerk weigert, werkt de overdracht nog steeds, via BitVoice, met behulp van beide kanalen zoals voorheen. Op een span waar BitVoice de netwerkzijde is, kan een andere PBX BitVoice vragen om twee van zijn gesprekken te verbinden; BitVoice weigert (het is geen schakelbord), en de PBX houdt de gesprekken zelf.
Probeer het zonder kaart
DAHDI's eigen dynamische spans kunnen dienst doen als kaart: twee spans die intern in de kernel zijn verbonden, BitVoice op de ene en een andere PBX (Asterisk's chan_dahdi, bijvoorbeeld) als de telefoonmaatschappij op de andere. Laad dahdi, dahdi_dynamic en dahdi_dynamic_loc, en 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
Laat het laatste nummer (timing) op 0 op beide: DAHDI's eigen timer drijft ze dan. Spans die elkaars tijdsbron zijn, tikken alleen wanneer de andere verstuurt, en het D-kanaal komt en gaat. Voeg span 1 hier toe als een T1 (eerste kanaal 1) en stel de andere PBX in als de netwerkzijde op kanalen 25 tot 48.
Basic rate ISDN (BRI)
Een BRI draagt twee gesprekken tegelijk (B1 en B2) en is gebruikelijk in Europa voor kleine kantoren; het verbindt ook ISDN-bureautelefoons. BRI-kaarten (Digium B410P, de HFC-gebaseerde kaarten van OpenVox, Junghanns en anderen) werken via DAHDI zoals de PRI-kaarten: in /etc/dahdi/system.conf is de span span=1,1,0,ccs,ami met bchan=1-2 en hardhdlc=3. Voeg deze toe onder Digitale lijnen met BRI als het type lijn; de kanalen zijn B1, B2 en vervolgens het D-kanaal.
- BitVoice is de PBX (gebruikerszijde), punt-naar-punt: een PBX-lijn van de telefoonmaatschappij (Duitslands *Anlagenanschluss*): inkomende gesprekken dragen het nummer dat is gedraaid, uitgaande gesprekken dragen het nummer van de extensie.
- Gebruikerszijde, multipoint: een lijn die wordt gedeeld met andere apparaten (*Mehrgeräteanschluss*): BitVoice vraagt het netwerk om zijn eigen TEI (terminalidentifier) en beantwoordt gesprekken naar de lijn naast andere apparaten op de lijn; de telefoonmaatschappij verstuurt het nummer dat is gedraaid (de MSN), dat overeenkomt met de inkomende routes.
- BitVoice is het netwerk, multipoint: ISDN-telefoons worden aangesloten op de S-bus van de kaart als op een telefoonlijn van de maatschappij. Elk vraagt BitVoice om een TEI; een gesprek naar de bus laat elke telefoon op de bus overgaan, de eerste die antwoordt neemt het gesprek en de anderen houden op met overgaan. Nummers die cijfer voor cijfer worden gedraaid (zoals ISDN-telefoons draaien) worden verzameld totdat de telefoon aangeeft dat deze compleet is, # wordt ingedrukt, of er geen cijfer binnenkomt voor vier seconden. Routeer de nummers naar en van de bus met de kaarttrunk zoals voor elke lijn.
Namen, doorverbinden, overdragen op EuroISDN (expliciete oproepoverdracht) en advies van kosten werken op een BRI zoals op een PRI.
E&M-trunks op een T1
Een T1 waarvan de kanalen zijn ingesteld als E&M (robbed-bit signalling: e&m=1-24 in /etc/dahdi/system.conf) geeft 24 trunks, elk geseind op zijn eigen: tie-lijnen naar een andere PBX, kanaalbanken en lange-afstandstrunks van Feature Group D. Onder Digitale lijnen, voeg een T1 toe en stel Signalling in op E&M, vervolgens:
- Startsignaal: Wink start (de gebruikelijke: de andere kant knippert wanneer deze klaar is voor het nummer, en BitVoice knippert terug bij een inkomend gesprek), Onmiddellijk starten (het nummer volgt direct na de inbeslagname), Vertraagd kiezen (de andere kant gaat uit de haak terwijl deze zich klaarmaakt, en vervolgens weer in de haak), of Feature Group D (wink start met MF-nummers, het nummer van de beller wordt eerst verstuurd: KP 00 ANI ST, vervolgens KP nummer ST; de ANI wordt de caller ID).
- Nummers verstuurd als: DTMF, of MF (MF R1, KP nummer ST) zoals de meeste carriertrunks willen.
- Nummer wanneer geen nummer wordt verstuurd: wat een inkomend gesprek bereikt als de andere kant de trunk in beslag neemt zonder te draaien (een privélijn rechtstreeks naar de receptie, bijvoorbeeld).
Een uitgaand gesprek neemt een vrije trunk, grijpt deze, wacht op het startsignaal (geen knipperen binnen vijf seconden is "geen knipperen" en het gesprek mislukt), verzendt het nummer en wordt beantwoord wanneer de andere kant uit de hoorn gaat (antwoordtoezicht). Een inkomend gesprek wordt beantwoord door uit de hoorn te gaan wanneer de extensie antwoordt.
CAMA-trunks (911, lab track). Een PSAP die nog steeds wordt gevoed door een 911-selectieve router via CAMA-trunks, stelt Startsignaal in op CAMA (911-trunk). De router grijpt, BitVoice knippert en de router verzendt het nummer van de beller (ANI) in MF: verhoogde CAMA als KP, twee informatiecijfers en alle tien cijfers, ST; traditionele CAMA als KP, één nummerplan-cijfer en zeven cijfers, ST. Voor traditionele CAMA moet u onder Netcode voor NPD 0 tot 3 de netcode opgeven die elk nummerplan-cijfer vertegenwoordigt (de set-up sheet van uw router heeft deze); een cijfer boven 3 betekent dat de router de lijn niet kon identificeren. Elk gesprek gaat naar de inkomende route voor 911 als een 911-gesprek, met de ANI als zijn callback-nummer, en BitVoice zoekt de locatie op met dat nummer (zie 911-gesprekken (hoofdstuk 77), Locatie-opzoeken (ALI)). De informatiecijfers worden weergegeven in het gesprek als CAMA (II 00).
MFC-R2 op een E1
In Latijns-Amerika, delen van Azië en Afrika zijn E1-lijnen vaak MFC-R2 in plaats van ISDN: 30 circuits, elk met zijn lijnsignalen op de A- en B-bits van timeslot 16 (ITU-T Q.421) en zijn nummer, de bellercategorie en het beller-nummer uitgewisseld in gedwongen multifrequentietonen (Q.441), vooruit en achteruit. Stel de span in als CAS in /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan verwijderd), voeg dan onder Digitale lijnen een E1 toe, stel Signaal in op MFC-R2 en kies de Landvariant: ITU-T, Argentinië, Brazilië, China, Colombia, Tsjechië, Ecuador, Mexico, Filipijnen of Venezuela. Elk land wijst enkele signalen anders toe (wat betekent bezet, hoe het einde van het nummer wordt aangegeven, Mexico's extra Groep C); de variant bevat deze. China nr. 1 vraagt de bellerklasse (KA) en nummer na het gekozen nummer, verstuurt het gesprekstype (KD: 3, een lokaal gesprek) als laatste, leest bezet en inactief door het verstuurde KD en stelt de C- en D-bits beide in op 1: daar moet cas=1-15:1111 en cas=17-31:1111 worden geschreven.
Elk circuit draagt gesprekken in beide richtingen. Een inkomend gesprek bereikt de inkomende routes met het gekozen nummer en het beller-nummer (onderdrukte nummers komen binnen als anoniem); een bezette extensie of een verkeerd nummer wordt teruggestuurd als bezet of niet-toegewezen, zoals de variant aangeeft. Een uitgaand gesprek verstuurt het nummer en de beller-ID van de extensie, of het "nummer onderdrukt"-signaal wanneer de beller deze verbergt.
De MFC-R2-signaleringsmethode wordt getest tegen OpenR2 (de R2-bibliotheek die Asterisk's chan_dahdi gebruikt), in elke aangeboden variant en in beide richtingen, inclusief een geweigerd gesprek als bezet; E&M tegen BitVoice's eigen gesimuleerde kanalen.
SS7
Een carrier kan T1's of E1's overdragen die worden gesignaleerd door SS7 in plaats van ISDN: de spraakkanaals dragen gesprekken, elk genoemd door een circuitidentificatiecode (CIC), en één timeslot draagt de signaalverbinding naar de carrier's signaaloverdrachtspunt of schakelaar, waarover ISUP de gesprekken opzet. BitVoice is dan een signaalpunt op zich, met een puntcode die de carrier toewijst. Stel de span in als heldere kanalen met de signaalverbindingstimeslot als mtp2 of hardhdlc (timeslot 16 op een E1, 24 op een T1). Voeg onder Digitale lijnen de span toe, stel Signaleren in op SS7 (ISUP) en geef:
- SS7-variant: ANSI (Noord-Amerika; puntcodes netwerk-cluster-lid, zoals 245-16-1) of ITU-T (de meeste delen van de wereld; puntcodes zone-gebied-punt, zoals 1-10-2, of een gewoon nummer).
- Onze puntcode en Aangrenzende puntcode, het Netwerk (nationaal, het gebruikelijke, of internationaal), de signaalverbinding Linkcode (SLC, 0 tenzij anders aangegeven), en de Eerste CIC: de code van het eerste spraakkanaal van de span, de anderen volgen in volgorde. Al deze gegevens komen van de carrier.
Linksets van meerdere links. Spans met dezelfde variant, puntcodes en netwerk vormen één linkset (maximaal 16 links): elke span's signaalverbinding is één van zijn links, en heeft zijn eigen Linkcode nodig, en elke span's circuits behoren tot deze linkset (hun CIC's mogen niet overlappen). Verkeer wordt gedeeld tussen de links in dienst door de SLS van de berichten, zodat één gesprek's berichten bij één link blijven. Wanneer een link faalt (de linktest wordt niet beantwoord, of berichten worden niet bevestigd), wordt zijn verkeer overgezet naar de andere links (Q.704: COO en COA, de berichten die de andere kant nog niet had verzonden opnieuw op een andere link; of, zonder antwoord binnen de tijd, door de tijd), de gesprekken op elke span gaan door, en Telefoniekaarten toont hoeveel links in dienst zijn en hoe deze span's staat. Wanneer de link terug is en getest, wordt zijn verkeer teruggezet (CBD en CBA). Alleen wanneer elke link uitvalt, is de linkset uitgeschakeld. Getest tegen libss7 met twee links, één gesneden tijdens een gesprek: libss7 accepteert alleen netwerkbeheerberichten op het link dat hun SLS noemt, dus een overnamebericht over het gesneden link (verzonden op het andere, zoals Q.704 voorschrijft) wordt daar gedropt, en beide einden schakelen over door de tijd, wat werkt; tussen twee BitVoice-einden gebeurt dit via COO en COA.
Wanneer de verbinding tot stand komt, richt BitVoice deze in (MTP-niveau 2, met de noodzaak van een enkele verbinding als een set gebruikt), test deze met de linktest (SLTM/SLTA), wisselt verkeer opnieuw toe en reset elk circuit (GRS). Inkomende gesprekken bereiken de inkomende routes met het gedraaide nummer, het nummer van de beller (met onbekende nummers als anoniem), het nummer waarvan een gesprek is doorgestuurd en, op ANSI, de naam van de beller; uitgaande gesprekken dragen de beller-ID en naam van de extensie. Het blokkeren of resetten van circuits door de carrier wordt nageleefd. Bij dubbele inbeslagname houdt het einde met de hogere puntcode de evene circuits, zoals Q.764 zegt, en BitVoice neemt de circuits die het eerst in beslag neemt.
SS7 wordt getest tegen libss7 (de SS7-bibliotheek die Asterisk's chan_dahdi gebruikt), ITU en ANSI: inrichting, linktest, verkeersopstart, circuitreset, gesprekken in beide richtingen met nummers en namen, vrijgave, bezet en blokkeren; en BitVoice tegen zichzelf met verloren kaders op de link (opnieuw verzonden door MTP2's foutcorrectie) en een dubbele inbeslagname. Signaaloverdracht (als een STP voor anderen) en SCCP/TCAP (nummerportabiliteit, toll-free vertaling) worden niet aangeboden: een PBX is een eindpunt, en die zijn van de carrier.
Signaaloverdrachtspunt (STP). bitvoice-dahdi kan ook een STP zijn voor zijn ITU SS7-verbindingen: schakel Signaaloverdrachtspunt (SS7) in onder de digitale lijnen. De STP-puntcode is de eigen puntcode van de spans. Met Doorsturen van berichten voor andere puntcodes gaat een bericht van een verbinding naar het aangrenzende punt van een andere verbinding naar die verbinding, en een voor elke andere puntcode gaat naar de IP STP (M3UA): een IP STP of signaalrouter op host:poort, bereikbaar via M3UA (RFC 4666) over TCP, waarvan de berichten voor de puntcodes van de verbindingen op dezelfde manier terugkomen (BitVoice registreert zijn puntcode en die erachter, tenzij een Routeringscontext is opgegeven). Globale titelvertaling verstuurt SCCP-berichten die aan het STP zijn geadresseerd met globale titel naar de puntcode en subsystem van de langste overeenkomende voorvoegsel, zoals een SCCP-relais doet. Een bericht dat niet kan worden afgeleverd, komt terug bij de afzender als een UDTS of XUDTS wanneer daarom is gevraagd: geen vertaling, geen route (MTP-fout), geen subsystem hier, of zijn hopcounter is verlopen. De status van het STP toont de M3UA-verbinding en hoeveel berichten het heeft doorgestuurd, vertaald en teruggezonden. De SCCP (UDT, XUDT, UDTS, XUDTS) en TCAP (Begin, Voortzetten, Eindigen, Annuleren, dialogen en componenten) worden gecontroleerd tegen Osmocom: OsmoSTP via M3UA, libosmo-sigtran's SCCP-echo-gebruiker erachter, en libosmo-asn1-tcap's eigen TCAP-coder in beide richtingen. SCTP wordt niet aangeboden (Go heeft geen): M3UA gaat over TCP, wat OsmoSTP en veel IP STP's accepteren. Connection-oriented SCCP, ANSI-verbindingen en SCCP-beheer (SST, SSA) worden niet aangeboden.
Advies van kosten. Op een EuroISDN-lijn, schakel Advies van kosten in en BitVoice vraagt de telefoonmaatschappij, bij elk uitgaand gesprek, om te zeggen wat het kost: tijdens het gesprek (AOC-D) en aan het einde van het gesprek (AOC-E), in geld of in belastingeenheden. Het laatste cijfer wordt opgenomen in het gespreksrecord (in rekening gebracht EUR 1,50 in Geschiedenis, en naast het gesprek op Kosten); wanneer het in uw valuta is (ingeschakeld op Kosten) is het de kosten van het gesprek, in plaats van het cijfer van de tarieven van de trunk. De telefoonmaatschappij moet de dienst op de lijn aanbieden. SIP-trunks kunnen hetzelfde advies verzenden, als de 3GPP AOC XML in een INFO of de BYE, en BitVoice houdt het op dezelfde manier bij.
De PRI-code wordt getest tegen libpri (de ISDN-bibliotheek die Asterisk gebruikt), zowel als gebruikerszijde als netwerkzijde, voor Nationale ISDN-2- en EuroISDN-gesprekken, namen, omleiding en aangesloten nummers, expliciete gespreksoverdracht, de Two B-Channel Transfer en DMS-100 Release Link Trunk-verzoeken byte voor byte (met libpri's PBX verbonden met BitVoice als de DMS-100), en advies van kosten in beide richtingen; en op BRI, punt-naar-punt en multipoint, als terminal en als netwerk (TEI-toewijzing, gesprekken uitgezonden naar de bus, nummers gedraaid digit voor digit).
Nog niet: beller-ID weergegeven op analoge telefoons of gelezen van analoge lijnen, hook flash en echo-onderdrukking voorbij wat de kaart zelf doet.
Trunks
/trunksEen trunk is uw account bij een telefoonmaatschappij. Het draagt oproepen naar en van buitenlijnen. De meeste zijn SIP-trunks; een Asterisk- of FreePBX-server, of een IAX2-provider, kan worden bereikt met IAX2 in plaats daarvan.
Een SIP-trunk toevoegen
- Op Trunks (hoofdstuk 7) drukt u op Trunk toevoegen.
- Voer de provider-server in die uw telefoonmaatschappij u heeft gegeven (
sip.provider.com), en de poort als deze niet 5060 is. - Voer de gebruikersnaam en wachtwoord in, en schakel Registreren in als de provider zegt dat u dit moet doen (de meeste doen dit).
- Sla op. Binnen enkele seconden toont de trunk geregistreerd; als dit niet het geval is, wordt de reden ernaast getoond.
De gezondheid van de trunk beoordelen
Met twee of meer trunks op een uitgaande route, beoordeelt BitVoice elke 15 seconden of elke trunk op zijn plaats wordt gebruikt of na de andere trunks wordt geprobeerd. Een trunk gaat achter de anderen staan wanneer de provider van de trunk ophoudt met reageren op de keep-alive-controles, of wanneer de laatste uitgaande oproepen via de trunk achter elkaar zijn mislukt aan de kant van de provider (Mislukte oproepen achter elkaar binnen Binnen (minuten), Instellingen, Trunkgezondheidsbeoordeling), en een andere trunk werkt. De trunk wordt niet verplaatst als alleen de keep-alive-controle mislukt, terwijl oproepen via de trunk nog steeds doorkomen; en wanneer elke trunk tegelijkertijd faalt, is de waarschijnlijke oorzaak het internetverbinding van dit systeem, dus niets wordt verplaatst. Een verandering vereist twee opeenvolgende beoordelingen (30 seconden), zodat een trunk nooit tussen twee staten wisselt. Een trunk wordt nooit helemaal uitgeschakeld: deze wordt nog steeds geprobeerd wanneer de andere trunks falen, zodat een noodoproep altijd elke uitweg heeft. De trunk-pagina toont de beoordeling en de redenen ervoor; een oproep die via een andere weg is gegaan, vermeldt dit in het oproeplogboek.
- Voeg een inkomende route toe voor uw nummer en een uitgaande route die deze trunk gebruikt (Oproeproutering (hoofdstuk 8)).
| Field | What it does |
|---|---|
| Transport | UDP (usual), TCP, or TLS for encrypted signalling |
| Register | sign in every few minutes, so the provider knows where to send calls |
| Authentication username | only when the provider gives a separate one |
| From domain | the domain in the caller's address, when the provider asks for one |
| Caller ID | the number shown on calls out; an extension's own caller ID wins |
| Also accept calls from | the provider's other addresses or networks that send calls in. Calls from this computer by phones registered here, and the built-in call generator's, are never taken as the trunk's, even when it allows 127.0.0.1 |
| Calls at once | the limit your plan allows; calls beyond it go to the next trunk in the route |
| Encrypt media | SRTP, for providers that support it. A provider that answers without it still gets the call, unencrypted, and Call history marks the call Not encrypted |
| Require encryption | (with Encrypt media) refuse what the provider will not encrypt: a call out it answers without SRTP is hung up, and a call in it sends without SRTP is refused; Call history says why |
| Codecs | leave it on *same as Settings*, or choose what this provider supports, best first |
| Rates | what calls cost by number prefix, for Costs (hoofdstuk 54) |
Cloudproviders
Start van vult Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector of Azure Communication Services in, met een notitie over wat er aan de kant van de provider moet worden ingesteld. Teams wordt beschreven in het eigen hoofdstuk (Microsoft Teams (hoofdstuk 67)).
IAX2-trunks naar Asterisk en FreePBX
Kies IAX2 als protocol om een andere Asterisk- of FreePBX-server te verbinden, of een IAX2-provider. IAX2 transporteert signalering en geluid over één UDP-poort, 4569, wat het gemakkelijk maakt om door firewalls te komen.
- Serveradres: de andere server. Laat het leeg wanneer de andere server zich registreert bij BitVoice (een bijkantoor achter een veranderend adres); dan zijn de gebruikersnaam en wachtwoord wat het gebruikt om zich te registreren.
- Gebruikersnaam en wachtwoord: hetzelfde op beide kanten. BitVoice beantwoordt en verstuurt MD5-uitdagingen, en behandelt oproep-tokens.
- Registreren: meld u aan bij de andere server, zodat deze oproepen hier naartoe kan sturen.
Aan de kant van Asterisk is een peer zoals deze voldoende:
[bitvoice] type=friend host=dynamic secret=the shared password context=from-bitvoice
IAX2-poort 4569 wordt alleen geopend wanneer de eerste IAX2-trunk wordt toegevoegd, dus een Asterisk die op dezelfde computer draait, houdt deze poort open totdat dit gebeurt.
H.323-trunks
Kies H.323 als protocol voor oudere gateways, PBX-en en videoconferencesystemen die H.323 spreken maar geen SIP. Geef het adres van de gateway (poort 1720); oproepen worden alleen vanaf dit adres geaccepteerd. Oproepen worden opgezet met Fast Connect en G.711 (µ-law of A-law; de codec-lijst van de trunk kan dit beperken tot één), en het geluid gaat rechtstreeks tussen de gateway en de media-poorten van BitVoice. BitVoice converteert naar wat de andere partij gebruikt.
H.323 hier is bewust klein: geen gatekeeper (RAS), geen H.245 (dus een gateway die geen Fast Connect gebruikt, krijgt geen oproep en wordt daarover geïnformeerd), geen video, geen H.235-beveiliging. De beller-ID komt van het Q.931-oproepnummer of de alias van de gedraaide cijfers van de beller, de naam van de weergave of de H.323-ID. De H.225.0- en H.245-codering van BitVoice is gecontroleerd tegen een onafhankelijke ASN.1-encoder, maar nog niet tegen gateway-hardware.
Doorgestuurde oproepen
Wanneer een oproep bij u aankomt en al is doorgestuurd (iemand heeft zijn nummer doorgestuurd naar het uwe, of een Teams-gebruiker), geeft de provider dit aan met History-Info (RFC 7044) of Diversion (RFC 5806). BitVoice leest beide: Oproepgeschiedenis (hoofdstuk 47) toont doorgestuurd door het nummer dat het heeft doorgestuurd, met het nummer dat eerst is gebeld en de reden in de tip, het oproepspoor zegt het in woorden en het oproeprecord bewaart het (forwardedFrom, original, forwardReason). Wanneer de provider vraagt om de geschiedenis privé te houden, worden de nummers niet bewaard.
Wanneer een extensie een oproep doorschakelt via een trunk (doorschakelen van alle oproepen, wanneer bezet, wanneer niemand antwoordt), wordt de provider geïnformeerd over welke extensie de oproep heeft doorgestuurd en waarom, zodat deze uw nummer kan tonen en de juiste rekening kan factureren: standaard met beide headers, en met de geschiedenis van de oproep die binnenkwam bewaard en de doorschakeling toegevoegd. Een provider die in de war is door een van beide, kan onder het Geavanceerd-menu van de trunk worden ingesteld op de andere: Doorgestuurde oproepen zeggen van wie ze zijn met. Op een T1/E1-telefoniekaart wordt elke header het redirecting-nummer van het netwerk.
Wat de status betekent
| Status | Betekenis |
|---|---|
| geregistreerd | ingelogd; oproepen kunnen binnenkomen |
| klaar | registreert niet, of IAX2 in afwachting van oproepen |
| onbereikbaar | de naam van de server is niet in DNS, of er is geen antwoord |
| mislukt | de provider heeft de aanmelding geweigerd; de reden wordt getoond |
| standby | servers delen deze trunk een voor een en een andere houdt deze vast |
Oproeproutering
/routesOproeproutering beslist twee dingen: waar oproepen van buitenaf naartoe gaan, op basis van het nummer dat is gebeld, en welke trunk oproepen naar buitenlijnnummers gebruikt.
Binnenkomende routes
Elke binnenkomende route komt overeen met het nummer dat is gebeld (of elk nummer) en stuurt de oproep door naar een bestemming: een extensie, ringgroep, wachtrij, menu, schema, script, conferentieruimte, AI-receptionist of voicemail. Nummers komen overeen in elke vorm: +1 212 555 0100, 2125550100 en 12125550100 zijn hetzelfde.
- Een route voor één nummer wint het van een route voor elk nummer.
- Een route kan worden beperkt tot één trunk, voor nummers die door twee providers worden doorgestuurd.
- Met noodmodus ingeschakeld (Instellingen), gaat elke binnenkomende oproep naar één locatie in plaats van naar de routes die zijn ingesteld: een evacuatie, een sluiting, een incident.
Uitgaande routes
Uitgaande routes komen overeen met wat mensen bellen, op basis van patronen, en sturen deze door naar trunks in volgorde: als de eerste trunk uitgeschakeld of vol is, wordt de volgende trunk geprobeerd.
| Patroon | Komt overeen met |
|---|---|
X | elk cijfer |
Z | 1 tot 9 |
N | 2 tot 9 |
[1-5] | één van een set |
. aan het einde | één of meer verdere cijfers |
NXXNXXXXXX | een tien-cijferig Noord-Amerikaans nummer |
1NXXNXXXXXX | hetzelfde met 1 ervoor |
011. | een internationale oproep vanuit de VS |
- Verwijderen haalt cijfers van het begin (een 9 die is gebeld voor een buitenlijn); Toevoegen aan het begin voegt cijfers toe (een landcode).
- De volgorde is belangrijk: de eerste route waarvan het patroon overeenkomt, wordt gebruikt. Sleep routes om deze te wijzigen.
- Premiumnummers (900 en dergelijke) worden geweigerd, tenzij een route deze nummers noemt.
Noodnummers
Noodnummers werken altijd. Een route die het nummer exact noemt, wordt eerst gebruikt; met geen enkele route, wordt elke werkende trunk in volgorde geprobeerd. Een oproep naar noodnummers wordt nooit geweigerd vanwege de limieten van een extensie, de limieten van een gehoste organisatie of een ontbrekende route. Health waarschuwt wanneer geen enkele trunk noodnummers kan doorsturen.
PIN-sets
/pin-setsEen PIN-set (hoofdstuk 9) is een lijst met PIN's die een uitgaande route vraagt voordat deze naar buiten belt: om internationale of lange-afstandsgesprekken te beperken tot mensen met een PIN, of om gesprekken te factureren aan klanten en projecten op basis van hun code.
- Voeg PIN-set toe en lijst de PIN's (4 tot 10 cijfers elk).
- Schakel Houd de PIN in het gespreksrecord in om de gebruikte PIN te schrijven in elk gespreksrecord als accountcode (de accountcodekolom van de CSV-, syslog- en PostgreSQL-gespreksrecorduitvoer en
accountin de API). - Ga naar Gespreksroutering (hoofdstuk 8), open een uitgaande route en kies de set onder Vraag om een PIN.
Bellers die een nummer bellen dat deze route neemt, horen 'Voer uw PIN in, gevolgd door hekje', voeren deze in en het gesprek gaat naar buiten. Drie verkeerde PIN's beëindigen het gesprek en de poging wordt gelogd als een beveiligingsgebeurtenis. Noodnummers vragen nooit om een PIN, ongeacht de route die ze nemen, en doorgestuurde gesprekken en volg-mij-nummers worden niet gevraagd: alleen mensen die bellen vanaf een telefoon.
Beller-ID-opzoeken
/lookupsVeel telefoonbedrijven sturen het nummer van de beller, maar geen naam. BitVoice zoekt eerst in de bedrijfscontacten (hoofdstuk 38); daarna kan een inkomende route een beller-ID-opzoeken (hoofdstuk 10) vragen:
- Een webadres: uw CRM of elke dienst die antwoordt met de naam. Plaats
{number}waar het nummer moet komen (https://crm.example.com/api/callers?phone={number}). Een eenvoudig tekstantwoord geeft de naam op de eerste regel; voor JSON, geeft u het naamveld als een punt-gescheiden pad (data.contact.name; een nummer gaat een lijst in, zoalsresults.0.name). Basisverificatie is optioneel. - OpenCNAM: de Noord-Amerikaanse beller-naamdatabase, met uw account SID en verificatietoken.
Kies de opzoeken op een inkomende route op Gespreksroutering (hoofdstuk 8) (Beller-ID-opzoeken). Telefoons tonen de naam tijdens het rinkelen en deze wordt opgenomen in het gespreksrecord.
Een opzoeken houdt nooit een gesprek tegen: BitVoice wacht maximaal wachten (1,5 seconden, tenzij u dit wijzigt, 5 maximaal) en rinkelt dan zonder naam. Antwoorden worden maximaal een dag bewaard (of zolang u instelt, of nooit met -1), zodat een regelmatige beller niet bij elke oproep wordt opgezocht; nummers die de service niet kent, worden na een uur opnieuw gevraagd. Probeer het op de opzoekpagina vraagt om een nummer meteen, met de instellingen zoals opgeslagen.
Noodoproepen
Noodnummers gaan altijd naar buiten, van elke extensie, zelfs van extensies die geen buitenlijnen kunnen bellen. Dit hoofdstuk gaat over noodoproepen gedaan vanaf de telefoons die BitVoice uitvoert: een kantoor dat 911 belt. Het beantwoorden van 911-oproepen is het 911-profiel (hoofdstuk 77).
Wat BitVoice doet bij elke noodoproep
- Routeert deze, altijd: een route die het nummer het eerst noemt; met geen, elke werkende trunk om de beurt. Beperkingen stoppen dit nooit: een extensie die geen buitenlijnen mag bellen, een gehoste organisatie die haar oproepenlimiet heeft bereikt of is opgeschort, een trunk die zijn kanaallimiet heeft bereikt.
- Verstuurt waar de beller is: met Verstuur de bellerlocatie ingeschakeld (Instellingen), draagt het gesprek de civiele adres, verdieping en kamer van de site over aan de provider als PIDF-LO.
- Vertelt mensen op de site (Kari's Law in de VS): de extensies onder Meld krijgen een bericht op hun telefoons, elk open BitVoice-scherm toont een waarschuwing en de adressen onder E-mail ook krijgen een e-mail met de naam van de beller, extensie, site, verdieping en kamer, zodat iemand de hulpdiensten bij de deur kan ontmoeten.
- Laat de oproep terugkomen: voor een uur na een noodoproep, worden inkomende oproepen nooit geweigerd, zodat het antwoordpunt altijd terug kan bellen.
Instellen
- Controleer de noodnummers in Instellingen (hoofdstuk 14) (per land ingesteld: 911 en 933 in de VS).
- Voeg elke gebouw toe onder Sites (hoofdstuk 12), met het straatadres en de netwerken die de telefoons gebruiken.
- Geef elke extensie zijn site, verdieping en kamer.
- Zorg ervoor dat een uitgaande route en trunk noodoproepen kunnen verwerken; Gezondheid (hoofdstuk 13) waarschuwt wanneer geen enkele dit kan.
- Vul Meld en E-mail ook in.
- Bel
933(in de VS) om het adres te horen dat uw provider heeft.
Thuiswerkers
Een telefoon die zich aanmeldt vanaf een locatie buiten het netwerk van de site, is een thuiswerker: hun telefoonpagina vraagt waar ze zijn, en dat adres wordt gebruikt in plaats daarvan. Waarschuwingen geven aan wanneer dit niet is bevestigd.
Noodmodus
Een andere zaak: één schakelaar die elke inkomende oproep naar één locatie verzendt (een evacuatie, een sluiting, een incident). Stel in waar oproepen naartoe gaan, een optionele code zoals *55 en de toegestane extensies om deze in te bellen in Instellingen (hoofdstuk 14); schakel het in op het Dashboard (hoofdstuk 1), of door de code in te bellen (stijgende tonen voor aan, een lage toon voor uit). Een rode balk wordt op elk scherm weergegeven zolang het aan staat.
Locaties en kantoor 911
/sitesEen locatie is een gebouw: het straatadres en de netwerken die de telefoons gebruiken. Locaties zijn hoe een noodgesprek aangeeft waar de beller is, tot aan de verdieping en kamer. In de VS vereisen Kari's Law en RAY BAUM'S Act precies dit van bedrijfstelefoonsystemen.
Een site toevoegen
Op Sites (hoofdstuk 12) drukt u op Toevoegen:
| Veld | Wat het is |
|---|---|
| Naam | wat mensen het noemen: Hoofdkantoor |
| Straat, Stad, Provincie of staat, Postcode, Land | het civiele adres waarop hulpdiensten worden gestuurd |
| Netwerken | het adresbereik dat de telefoons gebruiken, zoals 10.1.0.0/16; één per regel |
Vervolgens geeft u voor elke extensie de locatie, verdieping en kamer. Health (hoofdstuk 13) lijst extensies zonder locatie op.
Hoe de locatie van een telefoon wordt bepaald
- Een telefoon die zich aanmeldt vanuit een van de netwerken van een locatie, is op die locatie, met de verdieping en kamer van de interne lijn.
- Een hot desk heeft de locatie, verdieping en kamer van de desk zelf, niet van de persoon die is aangemeld (Hot desking (hoofdstuk 36)).
- Een telefoon die zich aanmeldt vanuit buiten elk netwerk van een locatie, is een externe werker. Bij de eerste noodcapabele aanmelding vanuit een nieuwe locatie, wordt de gebruiker gevraagd om het adres te bevestigen op de telefoonpagina; noodgesprekken dragen dit adres dan mee.
- Als een externe werker nooit heeft bevestigd, gaat het gesprek nog steeds door, met de interne lijn van de gebruiker, en waarschuwingen geven aan dat het adres niet is bevestigd.
Lokale waarschuwingen
Met E-mail bij 911-belpoging ingesteld in Instellingen, ontvangen de genoemde personen de naam van de beller, extensie, locatie, verdieping en kamer zodra een noodnummer wordt gebeld, zodat iemand de hulpdiensten bij de deur kan ontvangen. Melding-extensies ontvangen een bericht op hun telefoons en elk geopend BitVoice-scherm toont een waarschuwing. Zie Noodoproepen (hoofdstuk 11)
Gezondheid
/healthGezondheid geeft aan of het systeem klaar is voor oproepen en, als dat niet het geval is, wat u moet doen. Elke regel zegt wat er mis is in gewone woorden en koppelt naar het scherm waar het kan worden opgelost. Controleer het na elke wijziging van enige omvang.
Wat het controleert
| Controle | Waarom het belangrijk is |
|---|---|
| Noodoproepen kunnen worden doorgestuurd | een route en een werkende trunk dragen de noodnummers |
| Extensies zonder noodlocatie | hun 911-oproepen zouden geen verdieping of kamer meesturen |
| De telefoondienst | SIP luistert en op welke poort |
| Telefoons die niet zijn aangesloten | extensies waar niemand voor is ingelogd |
| Trunks | geregistreerd, of de reden waarom ze niet zijn |
| Menus zonder opgenomen prompt | bellers zouden stilte horen |
| De tijdzone | schema's volgen deze |
| Opnames en hun bewaren | schijfruimte en hoe lang opnames worden bewaard |
| Certificaten | wanneer het TLS-certificaat verloopt |
| Sleutelkluisjes | geheimen die een kluisje niet kan lezen |
| Andere servers | wanneer meerdere een database delen, of elke server draait |
Problemen worden gekleurd: rood blokkeert oproepen (geen noodroute), amber moet worden bekeken (een telefoon die niet is aangesloten) en grijs is voor informatie.
Instellingen
/settingsInstellingen bevat alles over het systeem als geheel. Elk gedeelte wordt afzonderlijk opgeslagen, en elke opslaan is een revisie op Wijzigingen (hoofdstuk 61).
| Sectie | Wat er is |
|---|---|
| Systeem | naam, land, tijdzone, taal, het openbare adres dat telefoons en providers zien |
| Nummers | de echo-test, voicemail- en parkeernummers, en de noodnummers |
| Codecs | de codecs die telefoons kunnen gebruiken, beste eerst (Codecs (hoofdstuk 66)) |
| Gespreksopname | uit, elke oproep, of geselecteerde extensions; toestemmingsregels; hoe lang opnames worden bewaard |
| Geluid | opschoning voor voicemail en tijdens gesprekken |
| Beveiliging | verboden na mislukte aanmeldingen, vertrouwde netwerken, oproepen per extensie, premiumnummers |
| Noodgeval | verzend het adres van de beller, wie wordt op de hoogte gesteld, wie wordt per e-mail op de hoogte gesteld, noodmodus |
| AI | de AI-service, modellen en welke AI-functies zijn ingeschakeld (AI (hoofdstuk 28)) |
| Eenmalige aanmelding | de identiteitsprovider (Eenmalige aanmelding (hoofdstuk 58)) |
| Asterisk-compatibiliteit | AMI en ARI voor programma's geschreven voor Asterisk (Asterisk-compatibiliteit (hoofdstuk 70)) |
| AI-assistenten (MCP) | of AI-assistenten zoals Claude of ChatGPT kunnen aansluiten en of ze mogen handelen (AI-assistenten (hoofdstuk 71)) |
| Microsoft 365 en Google Workspace | personen en gedeelde contacten in Contacten, en agenda's voor wie afwezig is (Contacten (hoofdstuk 38), Agenda's (hoofdstuk 39)) |
| Mobiele apps | de push-service die de apps activeert |
| de mailserver voor voicemail, faxen en waarschuwingen | |
| Sleutelkluizen | geheimen die worden bewaard in AWS Secrets Manager of Azure Key Vault |
| Configuratie vanuit Git | de configuratie in overeenstemming houden met een bestand in een repository |
| Database | SQLite of PostgreSQL (Database (hoofdstuk 64)) |
| Certificaat | het certificaat voor deze interface en SIP over TLS: van Let's Encrypt, handmatig geïnstalleerd, of BitVoice's eigen |
Wachtwoorden en sleutels worden nooit meer getoond nadat ze zijn opgeslagen; laat ze leeg om ze te behouden. Kijkers zien Instellingen met alle geheimen verwijderd.
Het certificaat en Let's Encrypt
BitVoice begint met een certificaat dat het zelf heeft gemaakt, waarover browsers en telefoons waarschuwen. Voor een server met een openbare naam, schakel Let's Encrypt in onder Certificaat: voer de namen in (pbx.example.com), optioneel een e-mailadres, en pas toe. BitVoice krijgt een gratis certificaat van Let's Encrypt, gebruikt het meteen voor de webinterface, SIP via TLS en Teams, en vernieuwt het ongeveer 30 dagen voordat het verloopt (Let's Encrypt-certificaten zijn 90 dagen of minder geldig). De statusregel zegt wanneer het is uitgegeven, wanneer het wordt vernieuwd en, als het is mislukt, waarom; het probeert het opnieuw na een uur, dan minder vaak, binnen de limieten van Let's Encrypt. Nu controleren probeert het meteen.
Laat's Encrypt moet de server onder elke naam vanaf het internet kunnen bereiken om te bewijzen dat deze van u is:
- http-01 (de standaardkeuze, tenzij de webinterface op poort 443 staat): een verzoek naar poort 80. BitVoice antwoordt zelf op poort 80 (op Linux heeft het de rechten nodig om lage poorten te openen, zoals
setcap cap_net_bind_service=+ep bitvoice), of poort 80 op de router doorsturen naar de poort van de webinterface, die ook antwoordt. Alles wat anders op poort 80 aankomt, wordt doorgestuurd naar HTTPS, alleen voor de namen van het certificaat. Wanneer BitVoice poort 80 niet kan openen, zegt het Let's Encrypt-venster waarom in amber en wat het toelaat (de exactesetcap-regel voor dit programma, of systemd'sAmbientCapabilities=CAP_NET_BIND_SERVICE; of een ander programma houdt de poort al bezet). Test de namen vraagt dan elk van de namen om een testbestand via het internet, zoals Let's Encrypt zal doen, en zegt voor elk of het BitVoice heeft bereikt, iets anders heeft bereikt of niet in DNS staat. Sommige routers doen geen hairpin NAT (niet hun eigen openbare adres naar binnen doorsturen): daar faalt de test van binnenuit, hoewel Let's Encrypt van buitenaf wel slaagt. - tls-alpn-01: een TLS-verbinding met poort 443, beantwoord op de poort van de webinterface: voor een server waarvan de webinterface op 443 staat.
Andere ACME-autoriteiten die geen accountbinding nodig hebben (een eigen step-ca van een bedrijf, de testdienst van Let's Encrypt voor tests) worden geselecteerd onder Autoriteit. Wildcardnamen vereisen DNS-bewijzen, die BitVoice niet doet: installeer die certificaten handmatig. Elke server in een cluster krijgt zijn eigen certificaat.
De schermen in uw taal
De schermen van BitVoice zijn beschikbaar in het Engels en in dertien andere talen: Duits, Frans, Spaans, Italiaans, Portugees, Nederlands, Pools, Zweeds, Deens, Noors, Fins, Japans en Vereenvoudigd Chinees.
Een taal kiezen
Elke browser heeft zijn eigen taal: kies deze onder het menu (de taallijst naast de thema's), op de aanmeldingspagina of op de eerste pagina van de installatiewizard. Totdat u een keuze maakt, gebruikt BitVoice de taal van de browser wanneer deze een van deze talen is, anders Engels. De keuze wordt alleen in deze browser bewaard: twee personen op één server kunnen elk in hun eigen taal werken.
Alles op de schermen is vertaald: het menu, kopteksten, knoppen, hints, berichten van de server en de namen die schermlezers aankondigen. Zoeken (⌘K) vindt een pagina door zijn naam in uw taal of in het Engels. Wat mensen typen (namen, nummers, notities), adressen, codes, scripts in de editors en product- en protocolnamen blijven ongewijzigd. Datums en nummers volgen de instellingen van de browser.
Hoe het wordt vertaald en hoe goed
De vertalingen worden gemaakt door een machine (een groot taalmodel), voor elk stuk tekst dat de schermen weergeven, ongeveer 5.000; geen enkele is door een persoon gecontroleerd. Sommige zinnen die de schermen uit losse onderdelen opbouwen (een nummer en een woord) kunnen onhandig klinken, en een term kan op twee manieren in twee plaatsen worden vertaald. Alles zonder vertaling, zoals een scherm dat nieuwer is dan de vertalingen, blijft Engels.
Help houdt deze handleiding in het Engels, zoals geschreven, met een link naar het begin van elk hoofdstuk naar hetzelfde hoofdstuk, helemaal vertaald (ook door een machine) op bitvoice.org.
De telefoonkant is afzonderlijk: wat bellers horen (prompts, het voicemailmenu) is in de standaardprompttaal (Geluiden (hoofdstuk 20)), tenzij een extensie of een wachtrij een eigen taal heeft.
Waar gesprekken naartoe gaan
De bouwstenen waarlangs bellers bewegen: groepen en wachtrijen, menu's en schema's, scripts en de AI-receptionist, voicemail en het diagram dat alles laat zien.
Gespreksstroom
/flowControleer elke situatie
Controleer elke situatie, bovenaan Call flow (hoofdstuk 16), probeert uw hele belplan in elke situatie die het kan zijn, niet een steekproef:
- elke combinatie van open en gesloten die uw schema's daadwerkelijk bereiken in de komende jaar (elke feestdag inbegrepen), gevonden in stappen van 15 minuten;
- elke combinatie van dag/nachtschakelaars (of, met meer dan zes, elk afzonderlijk ingeschakeld);
- elke inkomende route, en elke toets die een beller kan indrukken in elk menu, elke "als niemand antwoordt" en elke wachtrijtime-out onderweg;
- elke extensie die elke noodnummer belt.
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.
Dezelfde controle wordt uitgevoerd op wijzigingen voordat ze worden aangebracht: een voorstel van Vraag in gewone woorden en de Herstel deze kijken naar een oude revisie en geven allebei een lijst van wat de wijziging zou breken wat vandaag werkt.
Probeer een gesprek
Voer in wie belt (een interne lijn of een extern nummer), wat ze intoetsen en wanneer, en druk op Probeer het. BitVoice volgt het gesprek exact zoals het zou gaan in het echt, zonder iets te laten overgaan: de binnenkomende route, de schema's op dat moment, de routeringscripts (die worden uitgevoerd in hun sandbox), de menu's, groepen en wachtrijen, en wat er gebeurt als niemand antwoordt. Het pad dat dit gesprek neemt, wordt gemarkeerd; andere wegen (een menu's toetsen, een schema's andere kant) kunnen worden geopend. Groen betekent dat het werkt, amber betekent dat u ernaar moet kijken (een telefoon die niet is aangesloten, een script dat terugvalt), rood betekent dat het gesprek daar mislukt. Vink Ga ervan uit dat elke telefoon is aangesloten om het plan te zien zoals het is ontworpen, in plaats van zoals het nu is; Komt aan op selecteert de trunk voor routes die maar één mogelijkheid hebben.
Het diagram
Het diagram toont waar gesprekken van buiten naar toe gaan, doos voor doos: elke binnenkomende route, vervolgens de menu's, groepen, wachtrijen, schema's, scripts en personen waar ze naar leiden.
Klik op een doos (of ga naar het met Tab en druk Enter) om te veranderen waar gesprekken naartoe gaan: een route's bestemming, een interne lijn of groep Als niemand antwoordt, een schema's open en gesloten bestemmingen, een menu's toetsen (voeg of verwijder toetsen recht daar), een script's fallback of een receptionist's persoon. Het opslaan van de wijziging controleert de wijziging zoals elke andere en maakt een revisie. Open de volledige editor gaat naar de eigen pagina van het item. Voeg binnenkomende route toe voegt een route toe zonder de diagram te verlaten.
Ringgroepen
/ring-groupsEen ringgroep is één nummer dat meerdere extensies belt: een verkoopsteam, de receptie en de back-up, iedereen in de werkplaats.
Belstrategieën
- Allemaal tegelijk: alle leden van de groep bellen tegelijk, en degene die het eerst antwoordt, neemt de oproep. De anderen houden op met bellen.
- Eén voor één: elk lid belt voor de ringtijd van de groep, in de volgorde waarin ze zijn opgenomen. Verplaats leden met de pijlen, of Alt+↑ en Alt+↓.
Leden die afwezig zijn (in een vergadering op hun agenda, of met niet storen aan) worden overgeslagen; de groep belt de anderen. Leden met de mobiele app worden gewekt door een push en bellen ook.
Als niemand antwoordt
Wanneer niemand binnen de ringtijd antwoordt, gaat de oproep naar Als niemand antwoordt: de voicemail van een lid, een wachtrij, een menu, een andere groep. Met niets ingesteld, blijft de oproep bellen totdat de beller opgeeft.
Groepen, wachtrijen of ophalen?
| Gebruik | Wanneer |
|---|---|
| Een ringgroep | een paar mensen, van wie er één de oproep kan aannemen, en de oproep moet nu bellen |
| Een wachtrij | bellers moeten mogelijk wachten tot iemand beschikbaar is, en moeten hun positie horen |
| Een ophalengroep | elke persoon heeft zijn eigen oproepen, maar collega's kunnen voor hen aannemen |
Wachtrijen
/queuesEen wachtrij houdt bellers in volgorde, met muziek, en belt de volgende beschikbare agent. Het is het hart van een contactcentrum en nuttig in elk kantoor waar oproepen sneller binnenkomen dan mensen ze kunnen aannemen.
Hoe gesprekken worden aangeboden
| Strategie | Wie wordt gebeld |
|---|---|
| Langste inactiviteit | de vrije agent die het langst heeft gewacht sinds zijn laatste gesprek |
| Rondgang | elke vrije agent om de beurt, waarbij de vorige wordt voortgezet |
| Bel allen | elke vrije agent tegelijk |
| Minste gesprekken | de vrije agent die vandaag het minste aantal gesprekken heeft gevoerd |
| In volgorde (lineair) | altijd van boven naar beneden in de lijst: de eerste vrije agent |
| Willekeurig | elke vrije agent, door toeval |
| Gewogen willekeur | door toeval, agenten met een lagere straf veel vaker |
- Volgorde: de lijst met agenten is in volgorde; verplaats ze omhoog en omlaag. In volgorde en Rondgang volgen ze deze volgorde.
- Straffen rangschikken agenten (0 tot 100, 0 als leeg): gesprekken worden aangeboden aan de vrije agenten met de laagste straf, en een agent met een hogere straf wordt alleen gebeld als niemand met een lagere straf beschikbaar is. Gebruik ze voor een eerste en een tweede lijn in één wachtrij.
- Gewicht rangschikt wachtrijen die agenten delen: zolang een wachtrij met een hoger gewicht iemand in de wacht heeft, geven de agenten van die wachtrij voorrang aan de bellers van die wachtrij.
- Afhandeling geeft een agent tijd na een gesprek voordat de volgende wordt aangeboden.
- Langste wachttijd: bellers die langer wachten, gaan naar de time-outbestemming van de wachtrij. 0 wacht oneindig lang.
- Wachtmuziek: bellers horen de wachtmuziek van de wachtrij (elke klasse uit Geluiden (hoofdstuk 20)), de systeemwachtmuziek of de wachtrijtoon.
- Vertel wachtende bellers hun plaats in de rij en de verwachte wachttijd (de gemiddelde wachttijd van beantwoorde bellers vandaag, in minuten), om de zoveel seconden, in de taal van de wachtrij. De woorden komen uit de wachtrijprompts in Geluiden (hoofdstuk 20); totdat die zijn opgenomen, wordt er niets gezegd.
Het Wachtrijen-scherm is een live wallboard: wie wacht, hoe lang en de status van elke agent.
Agenten
Agenten bellen *45 om in of uit elke wachtrij te loggen, en *46 om een pauze (een onderbreking) in te lassen en te hervatten; gepauzeerde en uitgelogde agenten krijgen geen gesprekken aangeboden. Het wallboard heeft dezelfde knoppen en toont waarom een agent een pauze heeft ingelast.
| Status | Betekenis |
|---|---|
| beschikbaar | vrij; zal het volgende gesprek krijgen |
| belletje | wordt gebeld |
| bezet | in gesprek |
| afhandeling | net klaar; de afhandelingstijd loopt |
| gepauzeerd | op pauze, met de reden vermeld |
| afwezig | in een vergadering of met verlof, volgens hun agenda |
| uitgelogd | neemt geen wachtrijgesprekken aan |
Supervisors
Op Live calls (hoofdstuk 46) belt Supervise de telefoon van een supervisor; wanneer ze opnemen, kunnen ze luisteren (niemand hoort hen), fluisteren (alleen de agent hoort hen) of binnenvallen (zowel de agent als de beller horen hen), en kunnen ze tijdens het gesprek tussen deze opties schakelen.
Sticky wachtrijen en VIP's
Schakel Sticky in in een wachtrij en een terugkerende beller (iemand die in de afgelopen 30 dagen is beantwoord, of zoveel als u instelt) wordt eerst aangeboden aan de agent die hen de vorige keer heeft beantwoord, als die agent beschikbaar is; als ze niet opnemen, gaat de wachtrij verder zoals gewoonlijk. VIP-bellers, onderaan Wachtrijen, gaan naar de voorkant van elke wachtrij die ze bellen, na eventuele VIP's die al wachten, en worden op het bord gemarkeerd als VIP.
Uitgaande dialer
/dialerDe uitgaande dialer (hoofdstuk 19) belt lijsten met contacten voor een wachtrij (hoofdstuk 18) van agenten: vernieuwingen, herinneringen aan afspraken, incassos, enquêtes. Elke campagne heeft zijn wachtrij, zijn lijst en zijn manier van bellen:
| Modus | Hoe het belt |
|---|---|
| Preview | een agent vraagt om het volgende contact, ziet zijn details, belt het dan (hun telefoon gaat eerst) of slaat het over |
| Progressief | één gesprek voor elke vrije agent |
| Power | een vast aantal gesprekken voor elke vrije agent (1 tot 3) |
| Predictief | BitVoice past de gesprekken per agent aan, leunt naar voren terwijl weinig gesprekken worden afgebroken en trekt terug als het afbreukpercentage de limiet nadert |
- Campagne toevoegen: de wachtrij, de beller-ID (het nummer dat contacten zien), de uren waarop gebeld mag worden in een tijdzone, hoe lang de telefoon van een contact overgaat, hoeveel pogingen en hoe ver uit elkaar.
- Open Contacten en Lijst toevoegen: een CSV-bestand met een koptekstregel en een kolom met de naam
number(ofphone);nameen eventuele andere kolommen worden aan de agent getoond in de voorbeeldweergave. Dubbele en beschadigde nummers worden overgeslagen. - Neem de boodschap op (in de campagne): wie er belt en waarom, en "druk 9 als u geen telefoontjes meer wilt ontvangen". Deze wordt afgespeeld aan een persoon die heeft opgenomen wanneer er geen agent beschikbaar is, en, als u dat wilt, na de begroeting van een antwoordapparaat.
- Start het. Het belt alleen binnen de ingestelde uren en stopt met bellen wanneer het wordt gepauzeerd of wanneer er niets meer te bellen is.
Mensen en machines. BitVoice luistert naar de eerste seconden na een antwoord: een lange, ononderbroken begroeting is een antwoordapparaat; een kort "hallo?" en een pauze is een persoon. Een machine kan worden opgehangen (en opnieuw geprobeerd), een bericht kan worden achtergelaten of kan worden doorgegeven aan een agent zoals ieder ander. Als er twijfel bestaat, wordt het antwoord als een persoon beschouwd.
Verlaten oproepen. Een persoon die antwoordt wanneer er geen agent beschikbaar is binnen twee seconden, hoort het bericht en wordt als verlaten beschouwd. Met power- en predictieve dialling, als het percentage verlaten oproepen over de laatste honderd antwoorden de limiet van de campagne overschrijdt (3%, tenzij u dit wijzigt, de Amerikaanse regel), belt de campagne één oproep per beschikbare agent totdat het weer onder de limiet is. De campagne toont de verlatingsratio, oproepen in behandeling en beschikbare agenten in real-time.
Niet-bellen-lijst. Geen enkele campagne belt een nummer op de niet-bellen-lijst, ongeacht welke lijst het vandaan kwam; iedereen die 9 drukt tijdens het bericht wordt onmiddellijk toegevoegd. Voeg nummers handmatig toe of via de API (POST /api/dnc). Voor het nationale register (in de VS, het National Do Not Call Registry van de FTC: download de netnummergebieden die u belt als een plat bestand), selecteert u het bestand onder Nationaal register en Importeren: elke regel met een nummer telt (212,5550100 zoals de FTC ze schrijft, of één nummer per regel), koppen en kapotte regels worden overgeslagen en geteld. Met Vervang de laatste import ingeschakeld, worden de nummers van de vorige download eerst verwijderd, zodat een nummer dat het register heeft verlaten weer beltbaar wordt; nummers die handmatig zijn toegevoegd of door 9 te drukken, blijven altijd staan. Het register moet minstens om de 31 dagen worden vernieuwd (Amerikaanse regels); de pagina telt de lijst en hoeveel ervan afkomstig is van het register. De API is POST /api/dnc/import?replace=1 met het bestand als body.
Geluiden: prompts, talen en wachtmuziek
/soundsGeluiden (hoofdstuk 20) bevat alles wat BitVoice tegen bellers zegt of afspeelt, behalve begroetingen en menu-prompts, die worden opgenomen waar ze worden gebruikt.
Prompts, in elke taal
Een prompt is één ding dat BitVoice zegt: "Voer uw PIN in", "Uw plaats in de rij is", de cijfers die het uitspreekt. De naam-nummerdirectory, inbellen (DISA), wekker en wachtrij-aankondigingen spreken met prompts. BitVoice heeft de woorden van elke prompt in het Engels, Spaans, Frans, Duits, Italiaans, Portugees, Nederlands en Pools; nummers worden cijfer voor cijfer uitgesproken, wat op elke taal hetzelfde klinkt.
- Bellers horen stelt de taal in voor iedereen. Een wachtrij, een inbelnummer, een directory of een extensie kan een andere taal kiezen.
- Elke prompt kan in de browser worden opgenomen, geüpload (elk audio-bestand; het wordt omgezet in telefoongeluid) of gemaakt door de spraakservice: met een spraakmodel ingesteld in Instellingen, AI, maakt één knop elke prompt van een taal vanuit de woorden. Prompts die al zijn opgenomen, worden behouden tenzij u vraagt ze te vervangen.
- Voeg een taal toe voor elke andere taal (een code zoals sv, ja of pt-BR); de prompts worden opgenomen of geüpload, met de Engelse woorden als leidraad.
- Een ontbrekende prompt in een taal wordt afgespeeld in de standaardtaal, vervolgens in het Engels; zonder enige opgenomen prompt horen bellers een kort geluid, zodat elke functie werkt voordat één prompt is opgenomen.
Wachtmuziek
Wachtmuziek is gegroepeerd in klassen (Kalm, Jazz, Aanbiedingen…), elk een lijst met nummers die achter elkaar worden afgespeeld, vanaf het begin of geschud. Upload nummers van maximaal vijftien minuten in elk formaat dat de browser kan lezen; MP3- en WAV-bestanden kunnen ook rechtstreeks naar de API worden gestuurd (PUT /api/music/{class}/{name}), en BitVoice decodeert MP3 zelf (MPEG-1, 2 en 2.5 Layer III, met een decoder die dezelfde samples produceert als minimp3).
Internetradio. Een klas kan een stream afspelen in plaats van zijn nummers: voer het adres van een MP3-stream (Icecast, Shoutcast, de meeste internetradio) in onder Internetradio. BitVoice maakt verbinding wanneer de eerste beller in de wachtrij wordt gezet met die klas, speelt één stream af voor iedereen die wacht en maakt verbinding verbroken na een halve minuut nadat de laatste vertrekt. Wanneer de stream niet bereikbaar is, spelen de nummers van de klas zelf (of de wachttune, zonder nummers) en toont de klas waarom.
| Wie het hoort | Welke muziek |
|---|---|
| iemand die in de wachtrij staat | de muziek die is geselecteerd op de extensie van de persoon die in de wachtrij staat, anders de standaard |
| een geparkeerde beller | de muziek van de persoon die hen heeft geparkeerd, anders de standaard |
| een beller die wacht in een wachtrij | de muziek van de wachtrij, anders de standaard |
| een beller die wacht op een conferentieleider | de standaard |
Standaard voor iedereen kan de wachttune zijn, dus er verandert niets totdat u muziek selecteert. Het selecteren van de wachttune op een wachtrij of extensie houdt de tune daar.
Dial-by-name-map
/directoriesEen dial-by-name-map (hoofdstuk 22) laat bellers iemand bereiken zonder hun nummer te kennen: ze spellen de eerste letters van de naam op het toetsenbord (2 voor ABC, 3 voor DEF, tot 9 voor WXYZ) en worden doorgeschakeld.
- Map toevoegen, noem het en geef het een nummer (411, zeg) of laat het nummer leeg en gebruik het als een menu-optie.
- Kies wat bellers spellen: de achternaam (de gebruikelijke), de voornaam, of beide.
- Kies wie wordt weergegeven, of niemand om iedereen met een telefoon weer te geven.
Bellers horen "Voer de eerste drie letters van de naam van de persoon in". Één overeenkomst wordt direct doorgeschakeld. Meerdere worden voorgelezen, acht tegelijk: elke persoon, dan "om deze persoon te bellen, druk 1", 2 enzovoort, met 9 voor meer namen. Geen overeenkomst: "Niemand komt overeen", en ze proberen het opnieuw (drie pogingen).
Uitgesproken namen: neem elke persoon op hun extensie op (Uitgesproken naam: opnemen in de browser of upload een bestand), en de map zegt het; totdat dan leest het de extensienummer voor. De woorden van de map zelf komen uit de map-prompt in Geluiden (hoofdstuk 20), in zijn taal.
Inbellen (DISA)
/dial-inEen inbellen (hoofdstuk 23) (DISA, "direct inward system access") laat iemand van buitenaf bellen, bewijzen wie ze zijn en opnieuw bellen via het kantoor: het gesprek gaat uit met de beller-ID van het kantoor, zijn routes en zijn tarieven, alsof ze aan hun bureau zaten.
- Inbellen toevoegen, en stel een PIN in (4 tot 10 cijfers), de nummers die het mogen gebruiken (Alleen vanaf deze nummers), of beide. Eén van de twee is vereist.
- Kies de extensie waarvoor de gesprekken worden gemaakt als: zijn buiten-gespreksvergunning, beller-ID en uitgaande routes zijn van toepassing. Het moet buiten-gesprekken toegestaan zijn.
- Geef het een nummer om van binnen te bellen, en stuur een telefoonnummer naar het op Gespreksroutering (hoofdstuk 8) (kies inbellen als bestemming).
Bellers horen "Voer uw PIN in, druk dan op hekje", dan "Voer het nummer in dat u wilt bellen, druk dan op hekje", en worden doorgeschakeld. De woorden komen uit de inbellen-prompt in Geluiden (hoofdstuk 20).
Sprachbots (AudioSocket)
/voice-botsEen sprachbot (hoofdstuk 24) is een programma van uzelf (een AI-agent, een spraakherkenning-IVR, een opnemer) dat oproepen over AudioSocket aanneemt, het eenvoudige protocol dat Asterisk gebruikt: BitVoice neemt de oproep aan, opent een TCP-verbinding met de bot en verzendt de UUID van de oproep, vervolgens het geluid van de beller als 20 ms-frames van 8 kHz 16-bit lineair audio en elke toets die wordt ingedrukt; elk geluid dat de bot terugzendt, wordt afgespeeld aan de beller. Bots en spraakservice-connectors die zijn geschreven voor Asterisk's AudioSocket werken ongewijzigd met BitVoice.
- Voeg sprachbot toe: de naam, het adres van de bot (
10.0.0.9:9092) en, optioneel, een nummer om het te bellen. - Kies waar de beller naartoe gaat als de bot de oproep niet kan aannemen, of afbreekt (een persoon, een wachtrij, voicemail): vereist, zodat geen enkele beller ooit wordt gedropt omdat een bot uitvalt.
- Stuur oproepen naar het vanuit Oproep-routing (hoofdstuk 8), een menu-optie, een schema of een toggle.
Wanneer de bot een AudioSocket-verbreking verzendt, eindigt de oproep; wanneer de beller ophangt, wordt de bot één verzonden. Een bot dat niet kan worden bereikt binnen drie seconden, of waarvan de verbinding wordt verbroken zonder een verbreking, geeft de beller door aan de fallback, en de fout wordt gelogd.
Om een programma toe te voegen aan een oproep die al in behandeling is (een luisterende transcriber, een assistent die fluistert naar niemand), gebruikt u ARI's externe media: zie Asterisk-compatibiliteit (hoofdstuk 70).
Dag/nacht-toggles
/togglesEen dag/nacht-toggle (hoofdstuk 25) is een schakelaar voor een oproepstroom (FreePBX noemt het oproepstroomcontrole). Oproepen die naar het worden doorgestuurd, gaan naar de normale bestemming, of naar de andere bestemming terwijl iemand het heeft overschakeld: het kantoor sluit vroeg vanwege een storm, iemand belt *281 op weg naar buiten, en oproepen gaan naar voicemail totdat het weer wordt teruggedraaid in de ochtend. Het blijft zoals het was gelaten, over restarts heen.
- Voeg toggle toe, geef het een code (1 tot 3 cijfers: gebeld na
*28) en kies waar oproepen naartoe gaan normaal en wanneer het is overschakeld. Elke kant kan een schema zijn, zodat een toggle voor de openingstijden kan zitten en deze kan overschrijven. - Kies wie het mag overschakelen vanaf een telefoon (niemand gekozen laat elke extensie toe).
- Stuur oproepen naar het vanuit Oproep-routing (hoofdstuk 8), een menu-optie of een schema, zoals elke andere bestemming.
Schakel het over door *28 en de code te bellen (een stijgende toon: overschakeld; een dalende toon: terug naar normaal), met de schakelaar ernaast op de Toggles-pagina, of via de API (POST /api/toggles/{id}/state). Een busy lamp key die *281 in de gaten houdt, brandt terwijl die toggle is overschakeld, zodat de persoon die het kantoor sluit, het vanaf zijn bureau kan zien. De toggle-code zelf staat op Functiecodes (hoofdstuk 32).
Plannen
/schedulesEen planning stuurt oproepen één kant op wanneer u open bent en een andere kant wanneer u gesloten bent. Wijs een inkomende route aan een planning toe en de planning aan het menu (open) en de voicemail (gesloten).
Openingstijden
Elke regel met uren is een set dagen en een tijd van en tot. Meerdere regels zijn toegestaan: maandag tot en met vrijdag 09:00 tot 17:00 en zaterdag 10:00 tot 13:00. Uren mogen de middernacht overschrijden (22:00 tot 06:00) voor nachtdiensten.
Feestdagen
Feestdagen tellen als gesloten de hele dag, ongeacht de uren. Voeg elke datum toe met een naam; de naam wordt weergegeven op Oproepstroom (hoofdstuk 16) wanneer u een oproep probeert op die dag.
Tijdzone
De tijdzone is die in Instellingen. Wanneer de klokken veranderen, volgen plannen de lokale tijd.
Scripts (JavaScript en Lua)
/scriptsEen script beslist waar een oproep naartoe gaat wanneer menu's, plannen en groepen niet voldoende zijn: bellers uit een gebied naar één kantoor, VIP-nummers rechtstreeks naar een persoon, een beslissing uit uw eigen gegevens. Of, ingesteld op Voert de hele oproep uit, beantwoordt het de oproep en voert deze uit, zoals een Asterisk-dialplan of AGI-script zou doen: prompts en spraak, sleutels, opnames, bel personeel, doorgeven (hieronder). Scripts worden geschreven in JavaScript of Lua op Scripts (hoofdstuk 27).
Veilig door ontwerp
- Een routeringscript wordt uitgevoerd voor maximaal 200 ms. Als het faalt of te lang duurt, gaat de oproep naar de fallback van het script, zodat een fout nooit een oproep verliest. (Oproepscripts hebben hun eigen limieten, hieronder.)
- Het wordt uitgevoerd in een zandbak: het kan het netwerk of de schijf niet bereiken. Een routeringscript kiest alleen; een oproepscript kan alleen de stappen uitvoeren die hieronder zijn vermeld, voor zijn eigen oproep.
- Noodoproepen voeren nooit scripts uit.
Wat een script ziet
call heeft:
| Veld | Wat het is |
|---|---|
from, fromName | het nummer en de naam van de beller |
to | het nummer dat is gedraaid |
direction | inbound of internal |
trunk | de trunk waarop het binnenkwam |
weekday, hour, minute | de huidige tijd (0 is zondag) |
date | YYYY-MM-DD |
What it returns
A destination, {type, target}: type is extension, ringgroup, queue, menu, schedule, voicemail or hangup, and target is its number. Returning nothing uses the fallback. log("text") writes to the script's run list.
JavaScript
if (call.from.startsWith("212")) {
log("New York caller")
return { type: "ringgroup", target: "600" }
}
if (call.weekday === 0 || call.weekday === 6) return { type: "voicemail", target: "100" }
Lua
if string.sub(call.from, 1, 3) == "212" then
log("New York caller")
return { type = "ringgroup", target = "600" }
end
if call.weekday == 0 or call.weekday == 6 then
return { type = "voicemail", target = "100" }
end
Een script gebruiken
Wijs een inkomende route, een menu-toets of een schema naar het script, net als naar elke bestemming. Test voert het uit met een oproep die u beschrijft, zonder een oproep te plaatsen; de uitvoerlijst toont elke echte uitvoer met de beslissing, de tijd die nodig was en eventuele fouten. De oproepstroom (hoofdstuk 16) voert scripts ook uit wanneer u een oproep probeert.
Scripts die de hele oproep uitvoeren
Kies Voert de hele oproep uit. Het script beantwoordt dan de oproep en gaat van boven naar beneden, waarbij elke stap wacht totdat deze is voltooid:
| Stap | Wat het doet |
|---|---|
play(name) | speelt een prompt van Geluiden (hoofdstuk 20) in de taal van de beller (goodbye, digit-5...), digits:1234, of een toon: beep, confirm, error, off, hold. Een prompt die nog niet is opgenomen is een beep. |
say(text) | spreekt de woorden met de spraaksynthesedienst in Instellingen, AI (een beep zonder een) |
collect({max, timeout, interDigit, end, say, prompt}) | verzamelt toetsen: maximaal max (32), wachtend timeout seconden voor de eerste (5) en interDigit voor elke volgende (3), totdat end (#). say of prompt vraagt eerst. Retourneert de toetsen, "" als er geen zijn. |
record({box, seconds, beep}) | neemt een bericht op in de postbus van een extensie, totdat # of de tijd; retourneert de seconden |
wait(seconds) | wacht, retourneert een toets die is ingedrukt |
dial(destination, ringSeconds) | laat het overgaan met de beller die de wachttijd hoort. Beantwoord: ze praten en het script is klaar (true). Niet beantwoord: false, en het script gaat verder. |
transfer(destination) | geeft de oproep door; het script is klaar |
hangup() | beëindigt de oproep |
log(text) | schrijft naar de uitvoerlijst |
Een bestemming is een nummer (een extensie, ringgroep of wachtrij hier, anders een extern nummer via de uitgaande routes; nooit een noodnummer) of {type, target} zoals hierboven. Een toets die tijdens een geluid wordt ingedrukt, stopt het; play en say retourneren deze en de volgende collect begint ermee. Een bestemming retourneren stuurt de oproep ernaartoe.
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 heeft dezelfde stappen (collect{max = 1}). Geef het script een Nummer om naar te bellen om het vanuit een extensie te bellen.
De limieten houden de oproep veilig: de code van het script zelf mag maximaal een kwart seconde tussen twee stappen lopen; een oproep neemt maximaal 1.000 stappen; en het hele script stopt na de Langste uitvoer (10 minuten tenzij u het aangeeft, 60 maximaal). Wanneer het faalt, wordt stopgezet of eindigt zonder op te hangen of door te schakelen, gaat de oproep naar de fallback; een beller die ophangt stopt het onmiddellijk. Probeer het voert het script uit met de toetsen die u zegt dat de beller indrukt en lijst elke stap op, zonder een oproep te plaatsen.
AI-receptionist, voicemail triage en vragen
/receptionistsAI-functies gebruiken de AI-service die is ingesteld in Instellingen (hoofdstuk 14): een OpenAI-compatibele service (OpenRouter standaard) of een die u zelf uitvoert. Wat ze nodig hebben, wordt daarheen gestuurd, dus kies een service die u vertrouwt met gesprekken; voor een 911-centrum telt zijn eigen overheidscloud als lokaal.
AI-receptionist
Kies een receptionist als bestemming voor gesprekken: een route, een menu-optie of een extensie Als niemand antwoordt. Het zegt dat het geautomatiseerd is, antwoordt alleen vanuit Goedgekeurde informatie, neemt een bericht op, boekt een callback (zie Callbacks (hoofdstuk 30)) of doorverbindt naar Een persoon is. Drukken op 0 of vragen naar een persoon bereikt altijd iemand, en zo ook elk probleem met de AI-service of het spraakmodel: bellers zitten nooit vast aan het.
Modellen
Model doet het tekstwerk: samenvattingen, antwoorden van de receptionist en vragen in gewone woorden. Het omzetten van spraak in tekst heeft een model nodig dat audio aanneemt; stel het in als Spraak-naar-tekstmodel (bijvoorbeeld google/gemini-2.5-flash op OpenRouter) om een tekst-only-model te gebruiken voor de rest, zoals meta-llama/llama-3.3-70b-instruct.
Spraak naar tekst in het gebouw
Spraak kan zonder enig taalmodel worden omgezet in tekst: een spraakherkenner (whisper) hoort de audio en schrijft op wat er werd gezegd, niets meer. Wie schrijft spraak op, in de AI-instellingen, heeft drie keuzes:
- Het bovenstaande model: de audio gaat naar de AI-service, waarvan het model audio moet ondersteunen.
- Deze server: BitVoice voert whisper zelf uit. Kies een Whisper-model en sla op: BitVoice haalt het één keer op van het whisper.cpp-project (
baseis 60 MB;small,mediumenlarge-v3-turbozijn nauwkeuriger en langzamer; allemaal ondersteunen ongeveer 100 talen), controleert het tegen de gepubliceerde SHA-256 en start whisper.cpp'swhisper-serverop 127.0.0.1 ernaast, en herstart het als het stopt. De audio van bellers verlaat nooit de computer en er wordt niets per gesprek betaald.whisper-server(MIT-licentie) is inbegrepen bij de downloads van BitVoice, naast het programma, en de installateurs plaatsen het ernaast; BitVoice vindt het ook als het zelf is geïnstalleerd (brew install whisper.cpp). De instellingen laten zien waar het staat (het model ophalen, starten, uitvoeren of waarom het niet), en dat doet Health (hoofdstuk 13) ook. Zolang het niet wordt uitgevoerd, mislukken transcripten en geven ze aan waarom: ze worden nooit naar elders verzonden in plaats daarvan. - Een spraak-naar-tekst-service: whisper.cpp's
whisper-serverop een andere computer in het gebouw (http://192.168.1.20:8178/inference), voor één machine met een GPU die meerdere BitVoice-servers bedient, of elke OpenAI-compatibele…/audio/transcriptions(met Zijn model, zoals whisper-1, en Zijn sleutel). Alleenhttpnaar deze computer of een privénetwerkadres wordt geaccepteerd; alles anders moethttpszijn. Om er één uit te voeren:whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto.
Whichever writes it down, every transcript goes there: voicemail, recorded calls, live 911 calls and receptionists hearing callers. Without the model, the Model may be left empty: transcripts are written, summaries are written from the facts the call said (below), and what needs a language model (action items, voicemail triage, call insight, receptionists' replies, asking in plain words) is left out. Notes a recogniser makes about what it heard, such as [BLANK_AUDIO] or (silence), are dropped, so a quiet stretch never reads as though something was said.
Feiten genoemd in het gesprek (geen taalmodel)
Elke transcript wordt ook gelezen door regels, zonder taalmodel, voor de feiten die een call-taker noteert: wat er is gebeurd, waar, hoeveel mensen gewond zijn (of dat niemand gewond is), omstandigheden (ademen, wakker, bloeden...), gevaren (vuur, rook, gas, wapens, chemicaliën, brandstof), voertuigen, wie de beller is ten opzichte van de persoon in nood, en een callback-nummer. Elk feit wordt weergegeven met de zin waaruit het afkomstig is en de partij die het heeft gezegd, in de transcriptie van Feiten genoemd in het gesprek. Zonder model wordt de samenvatting geschreven op basis van deze feiten alleen en wordt daar melding van gemaakt.
- Niets wordt toegevoegd wat niemand heeft gezegd. "Niemand is gewond" is een feit op zich; een beller die iemand anders' woorden doorgeeft ("ze zegt dat hij niet ademt") wordt gemarkeerd als gerapporteerd; "24 Pine Lane. Nee, sorry, 42" houdt 42; een kale "nee" beantwoordt de vraag die net daarvoor is gesteld.
- Het is trouw, niet compleet: woorden die het niet kent, worden overgeslagen. In drie sets van uitgevonden 911-gesprekken (geen echte bellers' woorden) vindt het:
| Set | Feiten gevonden | Feiten gevonden die niemand verwachtte |
|---|---|---|
| Training (de regels zijn geschreven op basis van deze set) | 41 van 41 | 0 |
| Hold-out, gescoord zonder enige regel die ooit vanuit deze set is geschreven | 27 van 40 (67%) | 2 |
| Hold-out, na een tweede ronde van regels geschreven op basis van de misses | 40 van 40 | 0 |
| Gezegeld, gescoord zonder enige regel die ooit vanuit deze set is geschreven (geen regel wordt ooit vanuit deze set geschreven) | 23 van 43 (53%) | 3 |
De gezegelde score is de score die je kunt verwachten bij gesprekken die het nog niet heeft gezien, en de drie sets zijn geschreven door dezelfde mensen die de regels hebben geschreven, dus echte gesprekken zullen waarschijnlijk slechter doen. Lees de feiten naast de transcriptie, nooit in plaats van de transcriptie.
Grotere modellen hebben meer processor nodig: een server die veel gesprekken tegelijkertijd uitschrijft, moet beginnen met base, of één machine met een GPU gebruiken als een speech-to-text-service voor het gebouw. Op Apple-computers gebruikt whisper de GPU.
Voicemail triage
Met Transcribeer en samenvat voicemail ingeschakeld, wordt elke boodschap ook gemarkeerd als dringend, normaal of laag prioriteit, met het type (verkoop, ondersteuning, facturering...). Dringende berichten geven een alarm weer op het scherm van elke beheerder.
Vraag in gewone woorden
Op Wijzigingen (hoofdstuk 61), beschrijf een wijziging ("verzend verkoopgesprekken naar voicemail na 17:00"). De AI stelt het voor, BitVoice controleert het zoals elke andere wijziging en toont precies wat zou veranderen. Niets verandert totdat u op Toepassen drukt, en het wordt een revisie die u kunt herstellen. Wachtwoorden worden nooit naar de AI verzonden.
Voicemail
/voicemailElke extensie kan een postbus hebben. Bellers die niet worden beantwoord, horen de begroeting en laten een bericht achter; de persoon hoort het op hun telefoon, leest het op het scherm of krijgt het per e-mail.
Het inschakelen
Op de extensie, schakel Voicemail in. Als niemand antwoordt wordt dan ingesteld op de postbus. Geef het een PIN (4 tot 10 cijfers): het opent de postbus vanaf een andere telefoon en meldt de persoon aan bij de medewerkersportal en bij hotdesks.
| Instelling | Wat het doet |
|---|---|
| Langste bericht | 10 tot 900 seconden (180 standaard) |
| Nieuwe berichten per e-mail | naar het e-mailadres van de extensie, met het bericht als bijlage |
| Begroeting | opgenomen in de browser, geüpload of opgenomen vanaf de telefoon; zonder een, horen bellers een beep |
Luisteren
- Vanaf de telefoon van de extensie, toets
*97: berichten worden afgespeeld van nieuw naar oud; toetsen kunnen elk bericht opnieuw afspelen, verwijderen of behouden. - Vanaf elke andere telefoon, toets
*97, voer het postbusnummer in en de PIN. - Op Voicemail (hoofdstuk 29) (beheerders) of in de medewerkersportal (de persoon): afspelen, als gehoord markeren, verwijderen.
- Het berichtlicht op de telefoon brandt zolang er nieuwe berichten zijn.
Met AI
Met Transcribeer en samenvat voicemail ingeschakeld (Instellingen, AI), wordt elk bericht uitgeschreven, samengevat in een regel en gemarkeerd als dringend, normaal of laag prioriteit met het type (verkoop, ondersteuning, facturering). Dringende berichten geven een alarm weer op het scherm van elke beheerder. Zie AI (hoofdstuk 28).
Geluidsschoonmaak
Geluidsschoonmaak (Instellingen) verwijdert constante achtergrondruis en maakt niveaus gelijkmatig als berichten worden opgeslagen, zodat een bericht vanuit een auto of een drukke straat beter te horen is.
Terugbelverzoeken
/callbacksMensen die hebben gevraagd om teruggebeld te worden. Een AI-receptionist boekt er een wanneer een beller vraagt: het verzamelt hun naam, het nummer om te bellen (met het aanbod van het nummer dat ze bellen), een goed moment en waar het over gaat, leest het terug en boekt het alleen wanneer de beller akkoord gaat. Het belooft nooit een exact tijdstip. Beheerders kunnen ook terugbelverzoeken handmatig toevoegen.
Een nieuw terugbelverzoek toont een waarschuwing op elk open scherm en wordt per e-mail verzonden naar de eigenaar van de postbus van de receptionist Berichten aannemen voor wanneer die extensie een e-mailadres heeft en e-mail is ingesteld in Instellingen.
Om terug te bellen, kiest u uw extensie en drukt u op Terugbellen: uw telefoon gaat eerst over, en wanneer u opneemt, belt BitVoice het nummer voor u, met uw normale routes en beller-ID. Voeg vervolgens een notitie toe als u dat wilt en druk op Klaar (of Annuleren). Voltooide terugbelverzoeken worden onder de open verzoeken bewaard en kunnen opnieuw worden geopend.
Oproepkoppelingen en website-oproepen
/call-linksEen oproepkoppeling is een webadres dat uw bedrijf belt vanuit elke browser: geen telefoonnummer, geen app. Plaats deze in een e-mailhandtekening, druk de QR-code af op een folder of een winkelraam, of plak de websiteknop in uw site.
Op Oproepkoppelingen (hoofdstuk 31) voegt u een koppeling toe, kiest u waar de oproepen naartoe gaan (een toestel, een groep, een wachtrij, een menu, de AI-receptionist, een schema of voicebericht) en slaat u op: de pagina toont het adres en de QR-code. De beller ziet de titel en de woorden die u instelt, geeft zijn naam als u daarom vraagt, geeft toestemming voor de microfoon en drukt op Nu bellen; het toetsenbord werkt voor menu's. Wie opneemt, ziet Web: en de naam van de beller.
Schakel Open uit om de lijn te sluiten (de pagina zegt dat). Oproepen tegelijk beperkt het aantal mensen dat tegelijk kan bellen via één koppeling (5, tenzij ingesteld). Het adres bevat een lang, willekeurig deel, zodat het niet kan worden geraden; herhaalde verkeerde adressen worden geblokkeerd zoals mislukte aanmeldingen. De microfoons van bellers hebben nodig dat de pagina via HTTPS wordt bediend, dus deelt u het HTTPS-adres.
Alledaags bellen
Wat mensen elke dag op hun telefoons doen en wat ze voor zichzelf instellen: doorverbinden, volgen, ophalen, conferentiezalen, pagineren, hot desks, faxen en teksten.
Functiecodes, doorsturen en sneltoetsen
/codesFunctiecodes zijn wat mensen op hun telefoons intoetsen om hun eigen instellingen te wijzigen en functies te bereiken. Ze werken op elke telefoon, bureautelefoon of softphone, zonder dat er iets op de telefoon zelf hoeft te worden ingesteld. Een stijgende toon betekent klaar; een dalende toon betekent geweigerd.
De codes in één oogopslag
| Code | Wat het doet |
|---|---|
*72 | elke oproep doorsturen (dan het nummer en #, of het nummer rechtstreeks erna: *722125550199) |
*73 | doorsturen van elke oproep stoppen |
*90 / *91 | doorsturen wanneer in gesprek / stoppen |
*52 / *53 | doorsturen wanneer niet beantwoord / stoppen |
*78 / *79 | niet storen aan / uit |
*76 | niet storen omkeren (stijgende toon: nu aan) |
*21 | volg-mij aan- en uitzetten |
*8 | een oproep beantwoorden die in uw oproepgroep rinkt |
** en een extensie | de oproep beantwoorden die voor die extensie rinkt |
*80 en een extensie | intercom: die telefoon beantwoordt op zijn luidspreker |
*0 en een code | een snelkeuze |
*62 | wekker: hoor het, boek een wekker (vier cijfers, zoals 0630) of annuleer het (ster) |
*68 en een cijfer | kamerstatus, voor huisvesting in hotels |
*28 en een code van een schakelaar | een dag/nachtschakelaar (hoofdstuk 25) omkeren, of terug |
*32 | de laatste beller blokkeren: het laatste externe nummer dat deze telefoon belde, komt op de blokkeerlijst (Spam-bescherming (hoofdstuk 56)) |
*43 | de echotest |
*97 | uw voicemail |
70 | een oproep parkeren (doorschakelen hier); 71 tot 79 pakken het op |
*45 / *46 | wachtrijagenten: in- of uitloggen / pauzeren of hervatten |
*33 / *34 | in- of uitloggen bij een warme werkplek |
*7 / *8 tijdens een oproep | pauzeren en hervatten van de opname (kaartbetalingen) |
Doorsturen
*72doorstuurt elke oproep. Toets dit in, hoor een toon, dan toets het nummer en # in. Of toets het nummer rechtstreeks na de code.*90doorstuurt oproepen die binnenkomen terwijl u in een gesprek bent.*52doorstuurt oproepen die u niet beantwoordt binnen uw beltime.*73,*91en*53annuleren deze.
Doorsturen naar een andere extensie gebruikt de eigen instellingen van die extensie (zijn voicemail, zijn volg-me), tot vier sprongen, zodat twee personen die naar elkaar doorsturen geen lus kunnen vormen. Doorsturen naar een extern nummer gaat via de uitgaande routes, alsof de persoon het nummer zelf had gebeld, en vereist dat de extensie is toegestaan om extern te bellen.
Doorgeschakeld is een live-status, geen configuratie: instellen ervan maakt geen revisie en deze wordt bewaard bij herstart. Extensies (hoofdstuk 3) en het staffportaal tonen en wijzigen deze ook.
Niet storen
*78 aan, *79 uit, *76 omkeren. Met niet storen aan, gaan oproepen naar de voicemail, of naar de bestemming van de extensie zonder antwoord. Niet storen ingesteld met de hand wint van de kalender (Kalenders (hoofdstuk 39)). Noodoproepen gaan nog steeds over.
Volg-me
*21 schakelt follow-me in en uit voor extensies met follow-me-nummers ingesteld (op de extensie of in de staff-portal). Het bureau rinkelt eerst voor de ringtijd, vervolgens de follow-me-nummers, een voor een of allemaal tegelijk. Op een extern nummer met druk 1 aan, hoort de persoon een toon en drukt 1 om de oproep te beantwoorden; een voicemail of stilte doet dit nooit, en na 15 seconden gaat de oproep verder.
Iemand anders' oproep beantwoorden
*8beantwoordt de oudste oproep die bij iemand in uw opnamegroep (ingeschakeld op elke extensie; namen worden vergeleken zonder hoofdletters) rinkelt.**en een extensie beantwoordt een oproep die bij die extensie rinkelt:**101.
Intercom
*80 en een extensie belt met auto-beantwoorden: de telefoon van de extensie beantwoordt op de luidspreker, en beide partijen praten. Yealink, Grandstream en Snom lezen BitVoice's Call-Info-header, Poly leest Alert-Info; sommige telefoons hebben intercom nodig in hun eigen instellingen. Een extensie kan intercom weigeren; dan rinkelt de oproep zoals gewoonlijk. Toegangspoorten nemen nooit intercom.
Snelkeuzetoetsen
*0 en een code toetst een opgeslagen nummer: *05. De snelkeuzetoetsen van het bedrijf staan op deze pagina; elke persoon kan zijn eigen toetsen hebben op zijn extensie of in de staff-portal, en die hebben voorrang op de toetsen van het bedrijf met dezelfde code. Codes zijn 1 tot 3 cijfers.
Wijzigen van codes
Elke code kan worden gewijzigd op Functiecodes (hoofdstuk 32), of uitgeschakeld met het woord off. Twee functies kunnen geen code delen en geen enkele code mag het nummer van een aansluiting of een groep zijn: BitVoice geeft aan welke in conflict zijn. De echo-, voicemail- en parkeernummers zijn te vinden in Instellingen (hoofdstuk 14).
De medewerkersportal
De medewerkersportal laat iedereen zijn eigen oproepen beheren zonder beheerder: niet storen, doorsturen, volgen, sneltoetsen, voicemail en de begroeting, hun PIN en een lijst met hun eigen oproepen. Het is te vinden op #/me op het adres van deze server en is gekoppeld vanaf de aanmeldpagina.
Aanmelden
Mensen melden zich aan met hun extensienummer en hun voicemail-PIN: dezelfde PIN die hun voicemail opent vanaf een telefoon en hen aanmeldt bij hotdesks. Een extensie zonder PIN kan niet aanmelden; een beheerder stelt er een in op de extensie.
Herhaalde verkeerde pogingen vanaf één adres blokkeren het voor tien minuten. Een portalsessie bereikt alleen de instellingen van de persoon: nooit een andere extensie, de configuratie of iemands opnames.
Wat mensen kunnen doen
| Tab | Wat er is |
|---|---|
| Waar oproepen naartoe gaan | niet storen; doorsturen van elke oproep, wanneer bezet en wanneer niet beantwoord; volgnummers; eigen sneltoetsen |
| Voicemail | berichten om af te spelen en te verwijderen, met transcripties en samenvattingen wanneer AI is ingeschakeld; begroeting opnemen of uploaden |
| Uw oproepen | de oproepen van de persoon, nieuwste eerst, zonder opnames |
| PIN | PIN wijzigen, met het huidige opgeven |
Doorsturen en niet storen die hier zijn ingesteld, zijn hetzelfde als die welke zijn ingesteld vanaf de telefoon met functiecodes (Functiecodes (hoofdstuk 32)): welke het laatst is ingesteld, is van kracht. Volg-mij-nummers en sneltoetsen maken deel uit van de configuratie van de extensie, dus het wijzigen ervan maakt een revisie op Wijzigingen (hoofdstuk 61), opgenomen als de persoon zelf.
Doorsturen naar een extern nummer werkt alleen voor extensies die zijn toegestaan om extern te bellen. De portal zegt dat in plaats van een doorstuuractie op te slaan die nooit kan overgaan.
Chat en aanwezigheid
De portal's Chat-tab liet collega's zien met hun huidige status: beschikbaar, in gesprek, ringtones, afwezig (niet storen, een vergadering of tijd afwezig van hun kalender, met de reden) of offline (geen telefoon verbonden), en de status die ze hebben ingetypt ("Lunch, terug om 2"). Kies iemand om ze een bericht te sturen; berichten arriveren onmiddellijk, en een nummer naast een naam telt de ongelezen berichten. Teamkamers (Instellingen, Medewerkerschat) zijn gesprekken voor een groep of voor iedereen wanneer een kamer geen leden heeft.
Berichten worden alleen door de mensen in het gesprek gezien: beheerders beheren de kamers, lezen ze nooit. Instellingen, Medewerkerschat schakelt chat uit en stelt in hoe lang berichten worden bewaard (0 houdt de nieuwste duizend van elk gesprek).
Conferentiekamers
/conferencesEen conferentiekamer is een nummer dat mensen intoetsen om allemaal samen te praten. Medewerkers bellen het vanaf hun bureaus; externe bellers bereiken het via een inkomende route of een menu-optie die naar de kamer wijst.
Een kamer instellen
- Open Conferentiekamers (hoofdstuk 34) en druk op Conferentiekamer toevoegen.
- Geef het een nummer (elk vrij nummer, 500 standaard) en een naam.
- Stel optioneel een PIN in. Bellers horen een toon, voeren de PIN in en drukken op #. Drie verkeerde PIN's en het gesprek eindigt.
- Stel optioneel een leider-PIN in, verschillend van de PIN. Wie deze invoert, voegt zich bij als leider.
- Om externe bellers toe te laten, wijs een inkomende route (of een menu-toets) naar de kamer.
Keuzes
| Keuze | Wat het doet |
|---|---|
| Wacht op de leider | iedereen anders hoort de wachttune totdat een leider zich aansluit; wanneer de laatste leider vertrekt, sluit de kamer en wordt iedereen opgehangen. Heeft een leider-PIN nodig. |
| Leden voegen zich bij in stilte | voor briefings en lezingen: leiders praten, leden luisteren. Een lid drukt op 1 om te vragen om te spreken, en een leider dempt ze niet. |
| Neem de kamer op | de hele kamer wordt opgenomen als één opname in Gespreksgeschiedenis (hoofdstuk 47), tenzij opnemen voor het hele systeem uit staat |
| Tonen wanneer mensen zich aansluiten en verlaten | standaard aan |
| Meeste mensen tegelijk | 50 standaard, tot 200 |
Toetsen tijdens een gesprek
1dempt en ondempt uzelf (in een kamer waar leden in stilte zijn, vraagt het om te spreken).2, voor een leider, vergrendelt de kamer zodat niemand nieuw kan aansluiten, en ontgrendelt het.
Terwijl een kamer in gebruik is
De pagina toont elke kamer in gebruik: wie erin zit, wie spreekt (het groene licht), wie in stilte is, wie heeft gevraagd om te spreken, en wie nog steeds wacht op de leider. Een beheerder kan iedereen dempen of ondempen, iemand verwijderen, en de kamer vergrendelen of ontgrendelen.
Iedereen in een kamer hoort iedereen anders die niet in stilte is, gemengd door BitVoice; elke persoon kan zijn eigen codec op zijn telefoon gebruiken. Een gespreksopname wordt bewaard voor elk persoonlijk gesprek, en één voor de kamer zelf met zijn lengte en opname.
HD-audio
Schakel HD-audio in in een kamer (nieuwe kamers hebben het aan) en het wordt gemengd op 16 kHz in plaats van 8: mensen op breedbandtelefoons (G.722, Opus, de browser-telefoon) horen elkaar in HD, met de helderheid van een moderne oproep, terwijl mensen op gewone telefoons (G.711, mobieltjes via een provider) dezelfde kamer horen als gewoonlijk. De live-weergave markeert de kamer en elk lid dat in HD is. HD heeft G.722 nodig onder de codecs die de telefoons gebruiken (het staat eerst in de systeemlijst, Instellingen, Codecs). Opnames van de kamer blijven in telefoonkwaliteit.
Videokamers
Stel Video in op een kamer en videotelefoons (en softphones) die zich aansluiten, sturen hun camera en zien één beeld, omgeschakeld als mensen praten, zoals in Asterisk's ConfBridge:
- Volg de spreker: iedereen ziet wie het laatst heeft gesproken, eenmaal de persoon op het scherm stil is geweest voor een seconde; de persoon op het scherm ziet degene die voorheen sprak.
- Toon de leider: iedereen ziet de leider (die zich aansluit met de leider-PIN); de leider ziet wie het laatst heeft gesproken.
- Raster: iedereen ziet iedereen tegelijk, naast elkaar (één beeld vult het scherm, twee naast elkaar, dan 2 bij 2 en 3 bij 3, tot negen), elk persoon op zijn eigen plaats in de volgorde waarin ze zich hebben aangesloten, inclusief zichzelf.
BitVoice schakelt de beelden zonder ze te decoderen, dus het kost bijna niets, en het vraagt elke nieuwe beeldtelefoon om een volledig kader (RTCP PLI en FIR, en de SIP INFO picture-fast-update die de meeste bureautelefoons beantwoorden) zodat de schakelaar onmiddellijk zichtbaar is. Elke deelnemer aan de video gebruikt de videocodec van de kamer (H.264 tenzij u VP8 kiest); een telefoon zonder deze codec sluit zich aan met alleen geluid. Elke kijker krijgt één stabiele stroom (één bron, zijn eigen payload-type), wie er ook op het scherm staat. De live-weergave markeert wie video heeft en wie op het scherm staat.
Een grid wordt op een andere manier gemaakt: BitVoice geeft elke afbeelding aan ffmpeg op de server, die deze decodeert, plaatst in een 1280 bij 720 afbeelding met 15 frames per seconde en deze één keer voor iedereen encodeert. Installeer ffmpeg (Instellingen, videomethode, geeft aan of deze is gevonden); zonder ffmpeg volgt een gridkamer de spreker en geeft het scherm van de kamer dit aan. Elke afbeelding kost procesortijd: op een kleine server, houd grids tot een paar kamers tegelijk. Alleen leden wiens camera verzendt, worden weergegeven: iemand die zonder video deelt of wiens camera stopt, verlaat de grid (het bevriest nooit op een stilstaande camera) en de grid wordt binnen een paar seconden opnieuw gemaakt wanneer dit verandert, met een korte pauze in de afbeelding. Het tiende lid en later worden gehoord maar niet weergegeven. De live-weergave markeert de grootte van de grid en wie in de grid is.
Ieders video (browsers)
Kies Ieders video en de kamer krijgt zijn eigen pagina (Conferentiezalen, Open de videokamer, of #/video-room/NUMBER). Iedereen daar drukt op Deelnemen met mijn camera: de browser verzendt zijn camera eenmaal, in drie formaten (simulcast), en ontvangt elke andere camera in zijn eigen beeld. BitVoice doorstuurt de beelden zoals ze binnenkomen, zonder ze ooit te decoderen (een selectieve doorstuurunit, SFU), dus het kost weinig procesortijd; de upload van elke browser en de download van elke kijker zijn wat een kamer beperkt, dus het kan tot 16 camera's aan.
- Het grote beeld krijgt de volledige grootte van die camera, de kleine beelden de kleine grootte; Maak groot wisselt ze om, en de omschakeling gebeurt bij het volgende volledige beeld van de nieuwe grootte, die BitVoice meteen vraagt (RTCP PLI).
- Een browser die te weinig upload heeft, stopt met het verzenden van zijn grootste formaat; kijkers krijgen dan het grootste formaat dat nog steeds binnenkomt.
- Het geluid is de conferentie van de kamer zoals altijd: deelnemen belt de kamer op de browser-telefoon, en iedereen die de kamer vanaf een telefoon belt, hoort en wordt gehoord door iedereen. Videotelefoons die inbellen, zien degene die spreekt.
- Een kamer met een PIN vraagt ernaar op de pagina. De pagina heeft een aanmelding bij BitVoice nodig.
Scherm delen: druk op Mijn scherm delen en kies een scherm, een venster of een browser-tab in de browser-eigen selectie. Iedereen in de kamer ziet het als de grote afbeelding, onder uw naam, met tekst die scherp blijft (de afbeeldingsfrequentie daalt in plaats daarvan wanneer het netwerk krap is). U hoeft zich niet eerst met uw camera aan te melden. Scherm delen stoppen, of de browser-eigen Scherm delen stoppen-balk, eindigt het.
- Een kamer toont één gedeeld scherm tegelijk: terwijl iemand deelt, wacht de knop van de anderen en zegt wie deelt. Een gedeeld scherm telt niet mee voor de 16 camera's.
- Iemand anders kan de grote afbeelding worden met Groot maken, net als bij camera's; het scherm blijft in de kamer.
- Alleen het beeld van het scherm, nooit de geluiden: het geluid van de kamer blijft zijn conferentie.
- Telefoons die geen scherm kunnen delen (de meeste telefoonbrowsers) tonen de knop grijs. Bureau- en andere videotelefoons die de kamer bellen, zien geen gedeelde schermen; ze zien wie spreekt.
Pagina en luidsprekers
/pagingPagina spreekt door meerdere telefoons tegelijk: toets een paginanummer in, en elke telefoon in de groep beantwoordt op de luidspreker vanzelf. Gebruik dit voor aankondigingen aan een magazijn, een school, een winkelvloer.
Instellen van een paginagroep
- Ga naar Paging (hoofdstuk 35) en druk op Paginagroep toevoegen en geef deze een nummer (standaard 800) en een naam.
- Kies de telefoons. Overheadluidsprekers die zijn ingesteld als extensies (type Overheadluidspreker) kunnen ook leden zijn.
- Optioneel, een multicast-adres en poort.
Multicast
Multicast verstuurt de paginatie ook naar een multicast-adres en poort (239.0.1.10:5000), als G.711 µ-law, wat overheadluidsprekers en veel bureautelefoons kunnen ontvangen zonder een oproep per stuk. Een groep kan alleen een multicast-adres hebben. Het werkt op één netwerk: routers sturen multicast niet door tenzij ze zijn ingesteld om dit te doen.
Paginatie en intercom
| Paginatie | Intercom | |
|---|---|---|
| Wie hoort | iedereen in de groep | één extensie |
| Terugpraten | nee, eenrichtingsverkeer | ja, tweerichtingsverkeer |
| Hoe | bel het nummer van de groep | *80 en de extensie |
Telefoons die niet automatisch een paginatie beantwoorden binnen een paar seconden, worden overgeslagen, zodat één telefoon zonder auto-beantwoorden nooit een paginatie tegenhoudt. Sommige telefoons hebben auto-beantwoorden (intercom) nodig in hun eigen instellingen.
Hot desking
/phonesEen hot desk is een gedeelde telefoon die wordt wie zich aanmeldt: voor kantoren waar mensen geen vaste werkplek hebben. Maak er een door Hot desk in te schakelen in de extensie waar de telefoon is ingesteld (de extensie van het bureau, zoals 900 Bureau 3).
Aanmelden en afmelden
- Bel op de telefoon
*33en wacht op het geluid. - Voer uw extensie en # in, en wacht op het geluid.
- Voer uw voicemail-PIN en # in. Een stijgend geluid betekent dat u bent aangemeld; een dalend geluid betekent dat het is geweigerd.
Vanaf dat moment rinkelen gesprekken naar uw extensie ook op dit bureau, evenals op uw andere telefoons, en gesprekken die u vanaf hier maakt, laten uw nummer en naam zien en tellen mee voor uw Kosten. Aanmelden op een ander bureau verplaatst u daarheen. *34 meldt u af. Vijf verkeerde pogingen blokkeren het bureau voor tien minuten.
Hot desks beheren
Op Telefoons (hoofdstuk 4) toont Hot desks wie is aangemeld waar; beheerders kunnen iemand aanmelden (zonder hun PIN) of afmelden. De codes en een tijd elke dag wanneer iedereen is afgemeld, staan in Instellingen. Aanmeldingen worden bewaard bij herstart.
Hotel- en wekoproepen
/hotelWekoproepen
Iedereen kan een wekoproep boeken: gasten, nachtploegen, mensen die op oproep staan. Vanaf hun eigen telefoon bellen ze *62: BitVoice zegt het ingestelde nummer (indien aanwezig), vervolgens voeren ze de tijd in als vier cijfers (0630), of drukken ze ster om te annuleren. Op Hotel (hoofdstuk 37) boekt een beheerder er een voor elke extensie, eenmalig of elke dag.
Op dat moment belt de telefoon over met de naam van het systeem; als erop wordt geantwoord, hoort men 'Goedemorgen. Dit is uw wekker.' (de wekkergeluid in Geluiden (hoofdstuk 20), in de taal van de gast of de extensie). Als er niet wordt opgenomen, wordt het nogmaals geprobeerd (3 pogingen, 5 minuten uit elkaar, beide ingesteld onder Instellingen op de pagina), en na de laatste kan de receptie-extensie worden gebeld. Met meerdere servers maakt alleen één wake-up oproepen.
Gastenkamers
Schakel Gastenkamer in op de extensie van elke kamertelefoon. In Hotel toont elke kamer de gast, de wekker en de kamertatus, met Inchecken- en Uitchecken-knoppen.
- Bar onbezette kamers: kamers zonder iemand die is ingecheckt bellen alleen extensies en noodnummers. Noodoproepen werken altijd.
- Wissen bij uitchecken: verwijdert de voicemail van de kamer en annuleert de wekker, doorverbinden en niet storen, klaar voor de volgende gast.
- De taal van een gast (vanaf het inchecken) is de taal waarin de prompts van de kamer worden gesproken.
- Kamertatus: huisvesting belt
*68en een cijfer van de kamertelefoon (*683); het hotelsysteem beslist wat elk cijfer betekent.
The hotel system (PMS)
- FIAS: BitVoice connects to the FIAS interface of the hotel system (Oracle Opera and the many systems that speak FIAS) at its address and port. It receives check-ins, room moves, check-outs and wake-up bookings, and sends wake-up results, room status and call charges. While the link is down, what it would send waits and goes when it is back; the page says whether it is linked. The records follow Oracle's FIAS 2.20.23 specification: BitVoice describes itself as a phone system (IF PB), call charges are direct charges (PT C) with the amount in the currency's smallest unit and the dialled digits without + or spaces, and a wake-up result repeats the booked time to the second, so the hotel system can match it to its request.
- REST API: the hotel system calls
POST /api/hotel/rooms/<room>/checkin(name, account, language),/checkout, andPUT /api/wakeups/<room>, with an API key from Settings, Automation. Charges are posted as JSON to the address you give. - Charge calls: answered outside calls from occupied rooms go on the guest's bill, at the trunk's rates (from Costs (hoofdstuk 54)) plus the markup.
Contacten op elke telefoon
/contactsContacten is het bedrijfsdirectory: de leveranciers, klanten en andere kantoren die mensen bellen. Elke telefoon toont deze naast de extensies, en wanneer een van deze nummers overgaat, laten telefoons en de bellerkaart de contactnaam zien (wanneer de provider geen naam heeft gestuurd). Een nummer komt overeen, ongeacht hoe het is geschreven: +1 212 555 0100 en 2125550100 zijn hetzelfde nummer.
Contacten toevoegen
Contact toevoegen voor één per keer, met zoveel nummers (werk, mobiel, thuis, andere) als ze hebben. Importeren neemt een spreadsheet die is opgeslagen als CSV, waarvan de eerste rij de kolommen benoemt: naam, bedrijf, werk (of telefoon), mobiel, thuis, andere, e-mail, notities. BitVoice controleert het hele bestand eerst en zegt welke regels verkeerd zijn; een contact met dezelfde naam als een bestaand contact wordt bijgewerkt in plaats van dubbel toegevoegd, en Vervang alle contacten start de lijst opnieuw. Exporteren downloadt de lijst als CSV.
Op bureautelefoons
Telefoons die zijn ingesteld via Telefoons (hoofdstuk 4) (inrichting) krijgen de directory zonder verdere instelling:
- Yealink: een externe telefoonboek met de naam Bedrijf, elke uur vernieuwd.
- Grandstream: de telefoonboekdownload, elke uur.
- Polycom: het directorybestand, gelezen wanneer de telefoon start.
- Snom: de lijst wordt geschreven in de instellingen van de telefoon, dus deze wordt bijgewerkt wanneer de telefoon de instellingen opnieuw controleert.
In de browser-telefoon
Contacten onder het toetsenbord vindt een naam of nummer en plaatst deze klaar om te bellen.
Van Microsoft 365 of Google Workspace
BitVoice kan Contactpersonen in sync houden met de directory van uw organisatie: iedereen die een telefoonnummer heeft en de gedeelde contactpersonen (Exchange-organisatiecontacten of Google-gedeelde domeincontacten). In Instellingen (hoofdstuk 14), Microsoft 365 en Google Workspace, kies de service, geef wat nodig is en druk op Nu controleren: het meldt zich aan, telt de personen en zegt welke extensies overeenkomen met een persoon per e-mail. Sla op en Contactpersonen vullen zich binnen een halve minuut; vervolgens elke halve uur, of meteen met Contactpersonen nu synchroniseren.
Microsoft 365 (een app-registratie; u moet admin-toestemming kunnen verlenen):
- In het Entra-admincentrum, App-registraties, Nieuwe registratie: noem het BitVoice, enkele tenant, geen omleidingsadres.
- API-machtigingen, Een machtiging toevoegen, Microsoft Graph, Toepassingsmachtigingen:
User.Read.All,OrgContact.Read.AllenCalendars.ReadBasic. Vervolgens Admin-toestemming verlenen. - Certificaten en geheimen, Nieuw clientgeheim: kopieer de waarde (weergegeven eenmalig).
- In BitVoice: de directory (tenant) ID, de toepassings (client) ID en het geheim. Een geheim verloopt (Microsoft biedt maximaal twee jaar): wanneer het verloopt, zegt de kaart dat het geheim werd geweigerd; maak een nieuw geheim en plak het.
Google Workspace (een serviceaccount; u moet een superbeheerder zijn):
- In Google Cloud, in een van uw projecten: schakel de People API en de Google Calendar API in, maak een serviceaccount en voeg een sleutel (JSON) toe.
- In de Google Admin-console, Beveiliging, Toegangs- en gegevensbeheer, API-controle, Domeinbrede delegatie, Nieuw toevoegen: de client-ID van het serviceaccount, met de scopes
https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy. - In BitVoice: het sleutelbestand en het e-mailadres van een beheerder voor het serviceaccount om als te handelen.
Wat binnenkomt:
- Een persoon werknummers en mobiel, naam, e-mail en hun functietitel en afdeling als notities van de contactpersoon; de naam van de organisatie als hun bedrijf. Personen zonder nummer worden buiten gelaten (een contactpersoon moet een nummer hebben); accounts die zijn uitgeschakeld, worden buiten gelaten.
- Contactpersonen van de service worden gemarkeerd met de naam ervan en worden daar gewijzigd: het wijzigen of verwijderen van een contactpersoon hier wordt geweigerd, omdat de volgende synchronisatie het ongedaan zou maken. Contactpersonen die hier zijn gemaakt of geïmporteerd uit een spreadsheet, worden met rust gelaten.
- BitVoice leest alleen. De toegang is de bovengenoemde alleen-lezenmachtigingen en het geheim of de sleutel wordt bewaard met de andere geheimen: kijkers zien het nooit en exports voor Git laten het weg.
Kalenders en niet storen
/extensionsEen extensie kan de kalender van een persoon volgen: tijdens vergaderingen en vrije tijd gaan de oproepen naar de voicemail of worden doorgestuurd (naar een andere extensie of een mobiel), in plaats van een telefoon te laten overgaan die niemand zal beantwoorden. Ringgroepen bellen de anderen ondertussen, en in wachtrijen wordt de agent weergegeven als Afwezig.
In de extensie, Kalender en niet storen, plakt u het privé-adres van de kalender:
- Outlook: Instellingen, Kalender, Gedeelde kalenders, Kalender publiceren; kies de kalender en "Alle details kunnen bekijken", en kopieer vervolgens de ICS-koppeling.
- Google Calendar: Instellingen, de kalender links, en vervolgens Geheime adres in iCal-formaat.
Controleren leest deze meteen en geeft de volgende bezette tijden weer. BitVoice leest elke kalender elke vijf minuten. Vrije tijd (alle dag-evenementen en Outlook's "uit het kantoor") telt altijd; vergaderingen tellen wanneer Vergaderingen tellen als bezet ingeschakeld is; evenementen die als vrij zijn gemarkeerd, tellen nooit, net als geannuleerde evenementen. Terugkerende vergaderingen met overgeslagen en verplaatste voorkomens worden begrepen. Als een kalender niet kan worden gelezen, geeft de status aan dat dit het geval is.
Niet storen nu stopt de extensie met overgaan totdat deze wordt uitgeschakeld, ongeacht wat de kalender zegt. De extensielijst toont wie afwezig is en tot wanneer.
Het privé-adres werkt als een wachtwoord: iedereen met toegang tot dit adres kan de kalender lezen, dus wordt het bewaard met de andere geheimen.
Elke agenda tegelijk: Microsoft 365 en Google Workspace
In plaats van een privéadres per extensie, kan BitVoice de agenda van elke persoon lezen vanuit Microsoft 365 of Google Workspace: stel het eenmaal in in Instellingen (hoofdstuk 14), Microsoft 365 en Google Workspace (zie Contacten (hoofdstuk 38) voor de stappen), met Agenda's geven aan wie afwezig is ingeschakeld. Elke extensie wordt gematcht met zijn persoon op basis van zijn e-mailadres; een met een privéadres van zijn eigen gebruikt dat in plaats daarvan. De instellingen van de extensie hier (Vergaderingen tellen als bezet, Terwijl bezet, gesprekken) gelden zoals bij een privéadres.
- Microsoft 365 onderscheidt vergaderingen van tijd af: een vergadering die als 'uit het kantoor' is gemarkeerd, telt als tijd af; voorlopige vergaderingen en tijd die als 'vrij' of 'op een andere locatie' is gemarkeerd, stoppen nooit het bellen van de telefoon. Een privévergadering wordt weergegeven als "In een vergadering", zonder de titel.
- Google Workspace geeft alleen bezette tijden aan, zonder aan te geven waarom, dus die tellen altijd als vergaderingen.
- De agenda's worden elke vijf minuten gelezen en direct wanneer de instellingen worden gewijzigd. Een extensie waarvan het e-mailadres de service niet kent, geeft dat aan in het agenda-gedeelte.
Mobiele apps
De BitVoice-apps voor iPhone en Android maken een mobiele telefoon een van de telefoons van een toestel. Het rinkelt zoals een bureautelefoon, op het eigen oproepscherm van de telefoon, zelfs wanneer de app gesloten is.
Push instellen
Een gesloten app wordt gewekt voor oproepen door een push-bericht. In Instellingen (hoofdstuk 14), Mobiele apps, kies een van de volgende opties:
| Push | Wat u nodig heeft |
|---|---|
| Push-relay | BioDream's relay (met hosting of ondersteuning) of uw eigen bvpush: het Relay-adres, Sleutel-ID en Geheim |
| Eigen apps | uw eigen builds: voor Apple, de Team-ID, Bundle-ID, Sleutel-ID en Sleutel (.p8); voor Google, de Firebase-serviceaccount (JSON) |
Stel Adres dat de apps gebruiken in op het https-adres van deze server zoals het van overal bereikbaar is, niet alleen vanuit het kantoor.
Een telefoon koppelen
- Open het toestel en druk op Telefoon toevoegen.
- Scan de QR-code in de app. De code werkt één keer, voor tien minuten.
Wanneer een oproep binnenkomt
BitVoice wekt de app; het verbindt, rinkelt op het eigen oproepscherm van de telefoon en wordt beantwoord zoals elke andere telefoon van het toestel: ringgroepen en wachtrijen laten het rinkelen met de andere telefoons van het toestel. De toestelpagina lijst de gekoppelde telefoons, of elk Wakker gemaakt kan worden voor oproepen, wanneer het voor het laatst gezien en voor het laatst gewekt is, en eventuele push-problemen. Ontkoppelen stopt een telefoon met rinkelen meteen, voor een verloren telefoon.
Tijdens een oproep
De app is een volledige extensie, niet alleen een kiezer:
- Doorgeven van een beller naar een andere extensie of een extern nummer (de eigen Transfer van het oproepscherm of de knop van de app). Naar het parkeernummer, wordt de oproep geparkeerd.
- In de wacht zetten en terugnemen, vanaf het oproepscherm of de app; wachtende bellers horen uw wachtmuziek waar deze is ingesteld.
- Een tweede oproep: kiezen terwijl de eerste in de wacht staat, en schakelen tussen beide.
- Toetsenbord tonen (DTMF) tijdens de oproep, en Dempen.
De andere tabs
- Recent: oproepen naar en van deze extensie, nieuwste eerst, tik om terug te bellen (gemiste oproepen worden benadrukt).
- Voicemail: elk bericht met zijn transcript (hoofdstuk 29) waar de AI een schrijft, afspelen, terugbellen of verwijderen.
- Team: wie beschikbaar is, in een oproep, rinkt of afwezig (een bezette lamp), om hen te bellen of de huidige oproep naar hen over te dragen.
- Contacten: het bedrijfsadresboek, om een naam te vinden en te bellen.
- Chat: de personeelschat (Chat en aanwezigheid), collega's met hun aanwezigheid en directe berichten, en teamkamers, binnen de telefoon. Een nieuw bericht terwijl de app op de achtergrond staat, wordt weergegeven als een melding, en door erop te tikken wordt Chat geopend; wanneer de app is gesloten, komt het via dezelfde push als oproepen.
- Deelnemen aan een videokamer: kies een van de videokamers (hoofdstuk 34) (het geeft een lijst, met het aantal personen dat momenteel in elke kamer aanwezig is). Het opent boven de telefoon, die blijft draaien op de achtergrond, en u deelt als uw extensie: geen beheerdersaanmelding. De eerste keer vraagt de telefoon om de camera. Verlaten, of Terug op Android, keert terug naar de telefoon; het geluid van de kamer blijft een oproep op de telefoon totdat u ophangt. De telefoon toont de kamer als een videogesprek op zijn eigen oproepscherm terwijl u erin bent.
- Oproepen die u maakt gaan ook via het eigen oproepsysteem van de telefoon (CallKit op iPhone, Android's Telecom), dus Bluetooth, een auto of een horloge tonen deze, en een mobiele oproep die intussen binnenkomt, weet van deze.
Live transcript van een oproep
Met Live oproepen uitschrijven ingeschakeld (Instellingen (hoofdstuk 14), AI), wordt elke kant van een oproep live uitgeschreven en getoond op de telefoon terwijl de oproep gaande is. De audio gaat naar de spraak-naar-tekst-service (op uw eigen computer, waar deze is ingesteld) of de AI-service terwijl de oproep duurt. Het is dezelfde uitschrijving als 911 live transcripts (hoofdstuk 13), voor gewone oproepen.
Videogesprekken
/settingsWanneer beide telefoons in een gesprek video verzenden (videotelefoons, softphones, videodeurbellen), wordt het beeld tussen hen doorgegeven via BitVoice. Niets in te stellen: het is ingeschakeld, tenzij Instellingen → Videogesprekken is uitgeschakeld.
- BitVoice doorgeeft de video zoals deze is, op een poort van zijn eigen voor elke telefoon, zodat de telefoons nooit elkaars adressen leren. Met een codec in gemeen (bijna elke videotelefoon heeft H.264) wordt de video nooit gedecodeerd; zonder een, kan deze worden omgezet (hieronder). Wanneer ze dezelfde codec op een andere manier nummeren, nummert BitVoice deze op de weg.
- Het beeld is versleuteld (SRTP) naar elke telefoon die zijn geluid versleutelt.
- Een verzoek van een telefoon voor een nieuw beeld (na verloren pakketten) bereikt de andere telefoon, zodat het beeld in een ogenblik herstelt.
- Een camera die tijdens een gesprek wordt ingeschakeld (de videoknop van een softphone) werkt ook: de andere telefoon wordt eerst gevraagd, en het beeld begint wanneer deze ja zegt.
- Een telefoon zonder video, of een gesprek naar een extern nummer, krijgt alleen geluid. In de wacht of tijdens parkeren wordt het beeld gepauzeerd en keert terug wanneer het gesprek doorgaat. Na een doorverbinding gaat het alleen verder wanneer de nieuwe partij video verzendt.
- Video gebruikt veel meer van het netwerk dan geluid (ongeveer 0,5 tot 2 Mbit/s per gesprek per kant): houd hier rekening mee op langzame verbindingen en in het mediapoortbereik.
Videocompressie
Telefoons en apps die een videocodec delen (de meeste gebruiken H.264) krijgen elkaars video zoals deze is. Wanneer twee partijen geen enkele codec delen (een bureautelefoon met alleen H.264 en een browser met alleen VP8), schakelt u Videocompressie tussen H.264 en VP8 in Instellingen in: BitVoice biedt dan beide codecs aan, antwoordt elke partij in zijn eigen codec en zet elke kant om met ffmpeg, die op de server moet zijn geïnstalleerd (apt install ffmpeg, brew install ffmpeg; of geef het pad). Omzetting kost ongeveer een processorcore per gesprek en voegt een kleine vertraging toe, dus deze is uitgeschakeld en alleen gebruikt wanneer nodig. Instellingen zegt of ffmpeg is gevonden.
Fax: verzenden en ontvangen, faxapparaten en analoge telefoons
/faxesFaxapparaten, analoge telefoons, deurtelefoons en oude lijnen verbinden via een SIP-gateway (of een telefoonkaart in de BitVoice-computer: zie Telefoonkaarten (hoofdstuk 6)): een ATA (Grandstream HT-serie, voor één of twee analoge telefoons of een fax), of een grotere gateway (Patton SmartNode, AudioCodes MediaPack en Mediant) voor veel analoge poorten, een ISDN-lijn (BRI/PRI) of oude analoge lijnen (FXO). Elke poort registreert zich bij BitVoice als een extensie, net als een telefoon.
Faxen ontvangen zonder faxmachine. Op Faxen, voeg een faxnummer toe (300, zeg), met de e-mailadressen waar elke fax naartoe gaat. Stuur dan in Gespreksroutering (hoofdstuk 8) de oproepen van een telefoonnummer naar het faxnummer. BitVoice antwoordt als een faxmachine, schakelt de oproep over naar T.38 en neemt de fax; elke fax wordt een PDF, die wordt bewaard op Faxen (Weergeven, PDF) en per e-mail wordt verstuurd. Een fax die onderweg afbreekt, bewaart de ontvangen pagina's en meldt dit. Elke fax in de lijst toont de identiteit van de verzendende of ontvangende machine wanneer deze afwijkt van het nummer, en de snelheid waarmee de pagina's zijn verstuurd (14.400 bit/s is de snelste; een machine waarvan de faxen vaak mislukken bij een lage snelheid, heeft meestal een slechte verbinding). Dit vereist een provider die T.38 ondersteunt (de meeste doen dit); een fax die als geluid wordt verstuurd, kan niet op deze manier worden ontvangen. Getest met T38Fax, een fax-draaggolf: registreer de trunk met zijn gebruikersnaam en wachtwoord bij sip.t38fax.com, poort 5080 (UDP); sta UDP van zijn netwerken (8.34.182.0/24 en 8.20.91.0/24) toe via elke firewall voor BitVoice.
Een fax verzenden. Op Faxen, Fax verzenden: kies het faxnummer waarvandaan de fax wordt verzonden, typ het nummer waar de fax naartoe moet, voeg een notitie toe als u dat wilt (dit wordt de eerste pagina) en voeg documenten toe. Tekstbestanden en afbeeldingen (PNG, JPEG, GIF) werken overal. PDF vereist poppler op de server (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument en RTF vereisen LibreOffice ook. De pagina geeft aan welke de server kan doen. Elke pagina krijgt een koptekstregel, zoals faxapparaten deze afdrukken: de tijd, de naam van het faxnummer, de identiteit en het paginatotaal. De oproep gaat uit van de cijfers van de identiteit (+1 212 555 0300 belt van +12125550300), of van het faxnummer zelf wanneer de identiteit geen nummer is. Pagina's zijn US-letter in Noord-Amerika en A4 elders, afhankelijk van het land in Instellingen.
BitVoice belt het nummer via uw uitgaande routes, zoals een extensie zou doen, en verzendt op de snelste snelheid die de lijn aankan (14.400 bit/s, langzamer als de lijn slecht is). Faxen van één faxnummer gaan één voor één. Een bezet nummer of een nummer dat niet antwoordt, wordt vijf minuten later opnieuw geprobeerd, drie keer in totaal. Verzonden faxen worden opgesomd met de ontvangen faxen: Verzonden, Wachten op verzending, Mislukt (met Opnieuw proberen), of Deels verzonden wanneer de lijn brak na enkele pagina's.
E-mail naar fax. Onder de lijst, stel een postbus in voor BitVoice om te lezen (IMAP via TLS, poort 993; voor Google- en Microsoft-postbus gebruikt u een app-wachtwoord), vervolgens Testen en Opslaan. Iedereen die is toegestaan om te verzenden, schrijft naar die postbus met het faxnummer in het onderwerp (Fax 212 555 0199), of naar een plusadres (fax+2125550199@example.com) als de mailserver deze accepteert. Bijlagen worden de pagina's en de eigen woorden van de e-mail de coverbrief (de handtekening en geciteerde e-mail worden weggelaten). Het gaat van het faxnummer dat de afzender vermeldt: de E-mail elke fax naar-adressen mogen altijd verzenden, en Mag ook faxen per e-mail verzenden voegt anderen toe (hele adressen of @example.com voor een domein). De afzender ontvangt een e-mail wanneer de fax is verstuurd, of waarom dit niet kon.
E-mail is gemakkelijk te vervalsen, dus BitVoice faxt een bericht alleen wanneer uw mailserver heeft vastgesteld dat het echt afkomstig is van het domein van de afzender (DKIM, SPF of DMARC, in de Authentication-Results-regel die het toevoegt). Andere berichten worden zonder antwoord verworpen. Schakel Accepteer e-mail die het domein van de afzender niet heeft geverifieerd alleen in voor een postbus die geen externe e-mail kan ontvangen.
Faxapparaten op gateways. BitVoice verzendt faxen via T.38, de faxstandaard voor internet: wanneer de gateway een faxtoon hoort, schakelt deze de oproep over naar T.38, BitVoice vraagt de andere kant (uw provider of een andere gateway) om ook over te schakelen en verzendt de fax tussen hen. Als de andere kant geen T.38 kan, blijft de oproep op G.711 en wordt de fax als geluid verzonden, wat werkt op een goed netwerk. Live oproepen tonen fax (T.38) terwijl een fax wordt verzonden.
Voor betrouwbare faxen:
- Gebruik T.38 op de gateway en kies een provider die het ondersteunt.
- Maak de poort van de extensie een analoge adapterpoort (Extensies, Type): BitVoice biedt dan alleen G.711 aan, wat faxen die als geluid worden verzonden nodig hebben.
- Op de faxpoort van de gateway: Faxmodus T.38, alleen PCMU of PCMA, lijnecho-annuleringsapparaat uit, oproep in de wacht uit en een vaste, hoge jitterbuffer.
Postvak IN: webchat, WhatsApp en Messenger
/inboxHet Inbox (hoofdstuk 43) bevat elke geschreven conversatie in één lijst: de chatbox op uw website, WhatsApp, Facebook Messenger en teksten (hoofdstuk 44). Iedereen die is aangemeld bij de webinterface kan antwoorden; degene die het eerste antwoordt, neemt de conversatie over (iedereen kan deze overdragen met Beantwoord door), en Sluiten zet deze weg totdat de persoon weer schrijft. Ongelezen conversaties worden geteld en de lijst wordt automatisch vernieuwd.
De chatbox op uw website
Onder Kanalen, schakel Webchat in, kies de titel, kleur en eerste regel, en voeg de regel toe die het weergeeft in de pagina's van uw site:
<script src="https://pbx.example.com:8443/webchat.js" async></script>
Het tekent een chatknop in de hoek van elke pagina; bezoekers schrijven (met hun naam als ze dat willen) en zien uw antwoorden zodra ze binnenkomen. Het gesprek blijft in hun browser, dus het gaat door terwijl ze tussen pagina's navigeren. Vermeld uw sites onder Alleen op deze sites zodat het venster nergens anders wordt uitgevoerd. Bezoekers moeten het adres van deze server vanaf het internet bereiken, met een certificaat dat browsers vertrouwen (Let's Encrypt (hoofdstuk 14)). Tien nieuwe chats vanaf één adres in tien minuten is het maximum dat BitVoice accepteert.
WhatsApp Business-nummers op Meta's Cloud API. Op de ontwikkelaarssite van Meta maakt u een app met WhatsApp, voegt u uw nummer toe en maakt u een systeemgebruiker met een permanent toegangstoken. Onder Kanalen, schakelt u WhatsApp in en geeft u de telefoonnummer-ID en de bedrijfsaccount-ID (beide van API-instellingen), het toegangstoken en het app-geheim van de app, en slaat u op. In de WhatsApp-configuratie van de app, stelt u de webhook in: het callback-adres en verificatietoken dat BitVoice weergeeft, geabonneerd op *berichten*.
WhatsApp laat u antwoorden voor 24 uur na het laatste bericht van de klant; daarna accepteert het alleen berichtsjablonen die zijn goedgekeurd in WhatsApp Manager. Het antwoordvak verandert dan in een sjabloonkiezer: kies een sjabloon (het lijst uw accountsjablonen, met hun taal en soort), vul de waarden in ({{1}}, {{2}} ...), controleer de voorbeeldweergave, die is wat de klant zal lezen, en Verstuur sjabloon. Sjablonen die de inbox niet kan invullen, worden grijs weergegeven met de reden: een met een afbeelding, video of documentheader, een variabele in de header of een knoplink, genoemde parameters, of een codeknop; en die nog niet zijn goedgekeurd. Maak sjablonen in WhatsApp Manager; Meta keurt elk ervan goed, meestal binnen enkele minuten.
Facebook Messenger
Voor een Facebook-pagina: in de Meta-app, voeg Messenger toe, verbind de pagina en maak een paginatoken. Onder Kanalen, geeft u de pagina-ID, het paginatoken en het app-geheim; stelt u vervolgens de webhook in (het adres en verificatietoken dat wordt weergegeven), geabonneerd op *berichten* en *messaging_postbacks*. Antwoorden zijn toegestaan voor 24 uur na het laatste bericht van de persoon. Vanaf dat moment tot 7 dagen neemt Messenger antwoorden die zijn geschreven door een persoon (verzonden met Meta's *human agent*-tag: de app heeft Meta's Human Agent-machtiging nodig, aangevraagd in App Review); de automatische begroeting wordt dan nooit verzonden. Na 7 dagen neemt de inbox geen antwoord totdat ze weer schrijven.
Elke webhook wordt gecontroleerd met het app-geheim (Meta's handtekening) voordat BitVoice het gelooft, en een bericht dat Meta tweemaal verzendt, wordt één keer bewaard. Afbeeldingen, voice notes en andere bijlagen worden weergegeven als wat ze zijn ("[afbeelding]"); open ze in Meta's eigen apps.
Automatische begroeting, wanneer ingesteld, beantwoordt het eerste bericht van elk nieuw gesprek meteen.
Bedrijfsteksten (SMS)
/textsVerstuur en ontvang tekstberichten van uw bedrijfsnummers op Teksten. Teksten gaan via een tekstprovider. Ingebouwd: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute en VoIP.ms, plus Uw eigen webhook voor elke andere service of een gateway van uzelf. Elk aantal provideraccounts kan tegelijk worden gebruikt: elk nummer zegt welke provider het gebruikt.
Instellen
- In het portal van de provider, vindt u de API-gegevens van het account. Het formulier vraagt om precies wat die provider ze noemt (Twilio: Account SID en auth-token; Telnyx: een API-sleutel; Bandwidth: API-gebruiker, wachtwoord, account-ID en messaging-applicatie-ID; SignalWire: ook uw ruimte-adres) en zegt waar u ze kunt vinden.
- Op Teksten, Tekstinstellingen, voegt u de provider toe met deze gegevens en slaat u op. BitVoice toont een adres voor ontvangen teksten: stelt u dit in bij de provider als het adres waar ontvangen berichten naar worden verzonden (de callback, webhook of bericht-URL). Voor VoIP.ms, voegt u
?from={FROM}&to={TO}&message={MESSAGE}&id={ID}toe aan het einde. Leveringsbewijzen die naar hetzelfde adres worden verzonden, worden genegeerd. BitVoice moet vanaf het internet bereikbaar zijn op dat adres. - Voegt u elk nummer toe dat u gebruikt voor tekstberichten (met landcode), de provider die het gebruikt, en de extensies om per e-mail te informeren wanneer een tekstbericht binnenkomt.
US 10DLC
Amerikaanse providers blokkeren teksten van gewone bedrijfsnummers die niet zijn geregistreerd. Registreer uw merk en vervolgens een campagne bij uw tekstprovider; de checklist in Teksten volgt waar ze aan toe zijn en waarschuwt wanneer uw voorbeeldbericht de opt-out-woorden ontbreekt die providers verwachten.
Conversaties
Elk gesprek toont wie het is (uit Contacten), ongelezen teksten en de thread. Voer verzenden in; de teller toont hoeveel teksten een lang bericht inneemt. Wanneer iemand STOP beantwoordt, kan niets meer worden verstuurd naar hen vanaf dat nummer totdat ze START beantwoorden. Ontvangen teksten verschijnen ook als een melding in BitVoice.
Overdracht van korte beschrijvingen
/settingsZodat een beller nooit zichzelf hoeft te herhalen: met Korte beschrijving voor degene aan wie de oproep wordt overgedragen ingeschakeld (Instellingen, AI), wanneer een oproep wordt overgedragen, schrijft BitVoice een tweeregelige samenvatting van de oproep tot nu toe (wie belt, wat ze willen, alles wat al is beloofd) voor de persoon waaraan het wordt overgedragen. Het verschijnt op hun browser-telefoon met de bel-oproep, op Live-oproepen (hoofdstuk 46) en als een tekst op het scherm van hun bureautelefoon (voor telefoons die SIP-berichten weergeven).
Het werkt hetzelfde wanneer de AI-receptionist een beller aan een persoon overdraagt: de korte beschrijving komt van wat de beller de assistent heeft verteld.
Het heeft de AI-service en een spraak-naar-tekst-model (Instellingen, AI) nodig, en de audio van de oproep tot nu toe (tot vijf minuten) wordt naar die service verzonden om te worden uitgeschreven. Een samenvatting duurt een paar seconden, dus het kan net na het begin van de beltoon verschijnen.
Klanten en inzicht
Weten wie heeft gebeld en hoe het is gegaan: de live gesprekken en geschiedenis, de klantentijdlijn, CRM's, opnames en toestemming, kwaliteit, kosten en beller-ID-reputatie.
Actieve gesprekken
/callsActieve gesprekken toont elk lopend gesprek, bijgewerkt zoals het gebeurt: wie belt wie, hoe lang het al duurt, de codecs en de kwaliteit.
Wat beheerders kunnen doen
| Actie | Wat het doet |
|---|---|
| Ophangen | beëindigt de oproep voor beide partijen |
| Deur openen | voor een oproep van een deurstation |
| Opnemen pauzeren | voor een kaartnummer: het gepauzeerde gedeelte is stil in de opname en gemarkeerd in de geschiedenis (Oproepopname (hoofdstuk 51)) |
| Luisteren | de oproep stil kunnen horen |
| Fluisteren | praat alleen met de agent; de beller hoort niets |
| Binnenvallen | deelnamen aan de oproep; iedereen hoort u |
Om te luisteren, fluisteren of binnenvallen, druk Toezicht, kies de telefoon die u wilt gebruiken onder Van telefoon en druk Bel me: uw telefoon gaat over, en wanneer u antwoordt, voegt u zich bij het gesprek. U kunt tussen luisteren, fluisteren en binnenvallen schakelen terwijl u in het gesprek zit.
Wat nog meer wordt getoond
- Een bellerkaart tijdens een extern gesprek (uit uw CRM, of eerder gesprekken; zie CRM (hoofdstuk 49)).
- De briefing die is geschreven voor de persoon aan wie het gesprek is overgedragen (Overdrachtsbriefing (hoofdstuk 45)).
- De beller-ID-uitspraak: Geverifieerd, Deels geverifieerd of Niet geverifieerd (Spam-bescherming (hoofdstuk 56)).
- Met meerdere servers, gesprekken op de andere servers ook, alleen-lezen: ophangen of luisteren op de server die het gesprek heeft.
Wanneer een gesprek eindigt, wordt het verplaatst naar Gespreksgeschiedenis (hoofdstuk 47).
Gespreksgeschiedenis
/historyElke afgeronde oproep: wie belde wie, wanneer, hoelang en hoe deze eindigde. Sorteer de kolommen, speel opnames af (een pauze voor kaartnummers is gemarkeerd) en download de lijst als CSV. De duur dat records worden bewaard, wordt ingesteld in Instellingen, Oproepopname; een rechtelijke bewaring (hoofdstuk 73) houdt ze langer vast.
Hoe het werd doorgestuurd
Onder elk oproepresultaat, geeft Hoe het werd doorgestuurd weer, in gewone woorden en in volgorde, wat bepaalde waar de oproep naartoe ging: de binnenkomende route die deze nam, of een schema open of gesloten was en de tijd, een toggle's kant, wat een routeringsscript koos (of dat zijn fallback de oproep nam), de toetsen die in een menu werden ingedrukt, wie afwezig was, wie geen telefoon had aangesloten, wie niet antwoordde, de uitgaande route en de trunks die werden gebruikt (en een trunk die de gezondheidsrechter achter de anderen plaatste), het oordeel van de toll-fraudebewaker, en, voor een opgenomen oproep waarvan de partijen onder verschillende toestemmingsregels vallen, welke regel van toepassing was.
Quality, sound and encryption
The Quality column shows each answered call's score (MOS, out of 5) and two marks when they apply:
- No sound from a side: the call connected but nothing ever arrived from that phone or provider (calls shorter than 5 seconds, faxes, held calls and paging are left out). See Call quality (hoofdstuk 53) for what to check.
- Not encrypted: BitVoice asked for encryption (SRTP) and that side answered without it. Encrypted means the sound was encrypted with every side that sent any. To refuse unencrypted calls from a provider instead, switch on Require encryption on its trunk.
Transcripts en zoekfunctie
Met AI ingeschakeld en Opgenomen oproepen transcriberen ingeschakeld (Instellingen, AI), wordt elke opgenomen oproep uitgeschreven, met een korte samenvatting en actiepunten: wat iemand overeenkwam of werd gevraagd te doen. Elke kant van de oproep wordt afzonderlijk van de opname uitgeschreven, zodat de transcriptie laat zien wie wat zei en wanneer. De transcriptieknop naast een opname opent deze; beheerders kunnen ook één oproep transcriberen of opnieuw transcriberen.
Zoek wat er werd gezegd vindt oproepen door woorden uit hun transcripties, samenvattingen en actiepunten. Alleen opgenomen oproepen worden getranscribeerd. Een transcriptie wordt verwijderd met de opname, en het lezen of zoeken van transcripties wordt genoteerd in het auditlog, net als het afspelen van een opname.
Klantentijdlijn
/timelineDe klantentijdlijn toont alles met één telefoonnummer in het afgelopen jaar, met de nieuwste eerst, zodat degene die opneemt het hele verhaal kent.
Wat het laat zien
| Item | Met |
|---|---|
| Gesprekken | wie ze heeft beantwoord, hoe lang ze duurden, en met een transcript, een samenvatting, de opname en het transcript |
| Voicemails | hun samenvattingen |
| Teksten | in beide richtingen |
| Callbacks | aangevraagd en of ze zijn gedaan |
| Notities | de notities van het team zelf |
Een nummer komt overeen ongeacht hoe het is geschreven: +1 212 555 0100 en 2125550100 zijn hetzelfde.
Openen
Vanuit een bellerkaart (Tijdlijn), vanuit Contacten, vanuit een inkomend gesprek in Gespreksgeschiedenis, vanuit een tekstgesprek, of typ een nummer bovenaan Tijdlijn (hoofdstuk 48).
Notities
Beheerders kunnen Een notitie toevoegen voor het team: deze wordt weergegeven op de tijdlijn voor iedereen, met wie het heeft geschreven en wanneer, en kan worden verwijderd.
CRM: bellerkaarten en gesprekslogboek
/settingsVerbind een klantsysteem in Instellingen (hoofdstuk 14), CRM. Het werkt met elk systeem dat een webadres heeft, zonder code die voor elk product is geschreven.
Bellerkaarten
Terwijl een gesprek van buiten rinkelt, toont Live gesprekken een kaart: wie het is (uit uw CRM, of de naam van de extensie), hoe vaak ze de afgelopen 90 dagen hebben gebeld, eventuele callback (hoofdstuk 30) waar ze op wachten, en een samenvatting van hun laatste getranscribeerde gesprek. De browser-telefoon toont een kortere kaart aan de persoon die antwoordt: wie het is, eerdere gesprekken en wachtende callbacks, maar niet de samenvattingen van andermans gesprekken.
Voor de naam, stel Opzoeken in: BitVoice vraagt het op (GET) met het nummer van de beller in plaats van {number}, en verzendt Opzoekheader met zijn waarde (een vault-referentie werkt), en verwacht JSON met naam, bedrijf, url en notities; 404 betekent onbekend. Antwoorden worden vijf minuten bewaard. Open in CRM-link plaatst een link naar de beller op de kaart. Gebruik Zoek het op om een nummer te proberen voordat u het opslaat.
Antwoord van een CRM
De meeste CRMs beantwoorden een zoekopdracht in hun eigen vorm, meestal een lijst met overeenkomsten, niet BitVoice's {"name": ...}. Open Antwoordvelden en geef aan waar elk deel zich bevindt, als een gepuncteerde pad: een naam stapt in een object en een nummer in een lijst, dus list.0.name is de naam van de eerste overeenkomst. Koppeling naar het contact kan een pad naar een koppeling zijn die de CRM biedt, of een webadres met paden tussen haakjes, zoals https://crm.example.com/#Contact/view/{list.0.id}. Een leeg veld leest BitVoice's eigen naam ervoor. Een zoekopdracht die niemand vindt is hetzelfde als 404: de kaart zegt dat de beller onbekend is. Probeer een nummer met Opzoeken voordat je opslaat.
Bijvoorbeeld, EspoCRM (getest tegen een echte EspoCRM): maak een API-gebruiker (Beheer, API-gebruikers, authenticatie door API-sleutel) met een rol die contacten en accounts mag lezen, en stel vervolgens in:
- Opzoeken adres:
https://crm.example.com/api/v1/Contact?select=name,accountName,description&maxSize=1&where%5B0%5D%5Btype%5D=equals&where%5B0%5D%5Battribute%5D=phoneNumber&where%5B0%5D%5Bvalue%5D={number} - Opzoeken header
X-Api-Key, de waarde de API-sleutel van de gebruiker - Antwoordvelden: naam
list.0.name, bedrijflist.0.accountName, notitieslist.0.description, linkhttps://crm.example.com/#Contact/view/{list.0.id}
EspoCRM houdt nummers in internationale vorm (+15405550117), zoals BitVoice ze doorgeeft. Andere CRMs werken op dezelfde manier met hun eigen zoekadres en veldnamen; controleer de vorm van hun antwoord in hun API-documentatie, of met Opzoeken, wiens bericht zegt wat het heeft gevonden.
Gesprekslogboek
Stel Gesprekslogadres en Onderschriftgeheim in, en elk gesprek wordt daar na afloop verstuurd (gebeurtenis call.ended), opnieuw met een samenvatting, actiepunten en transcript zodra het is getranscribeerd (call.summarized), en elke geboekte callback (callback.new). Elke POST-verzoek bevat X-BitVoice-Event, X-BitVoice-Timestamp en X-BitVoice-Signature: sha256= gevolgd door de HMAC-SHA256, met het geheim, van de tijdstempel, een punt en het bericht. Een mislukte levering wordt vier keer geprobeerd over een periode van ongeveer een minuut; als het nog steeds mislukt, meldt Health dit. Verstuur een testgebeurtenis controleert het adres en het geheim.
Inzicht in oproepen voor supervisors
/qualityVoor contactcentra: bewijs over hoe oproepen verliepen, voor een supervisor om naar te luisteren, nooit een automatische score.
In de Transcriptie van een oproep toont Hoe het ging de volgende gegevens, gemeten vanuit het geluid van de opname alleen: hoeveel elke kant sprak, de langste periode van elke kant, hoe vaak elke kant elkaar in de rede viel, hoe lang beide partijen tegelijk spraken en de stilte (een lange stilte is vaak een wachtrij of doodlopende lucht).
Met Noteren hoe elke getranscribeerde oproep verliep ingeschakeld (Instellingen, AI), leest de AI ook de transcriptie en zegt hoe de beller leek aan het begin en het einde, en geeft tot zes momenten: Verliep goed, Bekijk (over de beller heen praten, een lange wachtrij, een onduidelijk antwoord) en Beloften (iets dat iemand zei dat hij zou doen), elk met de tijd en de woorden die werden gesproken, zodat u rechtstreeks naar het desbetreffende deel kunt gaan. Een beheerder kan dit voor elke getranscribeerde oproep aanvragen met Bekijk deze oproep.
Bij Callkwaliteit (hoofdstuk 50) telt Gesprekken, wie ze aannam de getranscribeerde gesprekken van de periode per persoon samen: hun aandeel in het spreken, hun langste spreektijd, hoe vaak ze over de beller heen praatten, stille tijd, gesprekken die eindigden met een boze beller en de gemarkeerde momenten. Gebruik het om te kiezen welke gesprekken u wilt beluisteren, niet om mensen te rangschikken.
Coachingsnotities zijn uw eigen woorden over een oproep, op het moment waarop ze relevant zijn: onder Hoe het ging, voert u het Moment (1:05, of laat het leeg voor het begin) en de Coachingsnotitie in, en drukt u op Notitie toevoegen. Notities worden weergegeven in de volgorde van de oproep met de persoon die ze schreef en wanneer; beheerders schrijven en verwijderen ze, kijkers lezen ze met de transcriptie, en het toevoegen of verwijderen van een notitie wordt genoteerd in het auditlog. Ze gaan met de opname mee, dus de retentie en juridische bewaring gelden ook voor hen. Coachingsnotities op Oproepkwaliteit telt ze per persoon.
Oproepopname en betaalpassen
Opname is ingesteld in Instellingen (hoofdstuk 14), Opname van gesprekken: uit, elk gesprek, of alleen de gesprekken van extensies gemarkeerd met Opname van gesprekken. Opnames worden afgespeeld vanuit Gesprekslijst (hoofdstuk 47), en met AI ingeschakeld worden ze uitgeschreven en samengevat.
Mededeling aan personen
Op sommige plaatsen moet iedereen in een gesprek worden meegedeeld dat het opgenomen wordt: Aankondiging, Piep en regels per regio zijn te vinden in Opname-toestemming (hoofdstuk 52).
Betalingen met creditcard (PCI DSS)
Creditcardnummers mogen niet in opnames worden opgeslagen. Voordat een beller een nummer doorgeeft, drukt de persoon op de extensie *7 in; *8 hervat de opname. Opname pauzeren op Live gesprekken (hoofdstuk 46) doet hetzelfde. Het gepauzeerde gedeelte is stil in de opname en wordt vermeld in de gesprekslijst, zodat een auditor kan zien waar en hoe lang.
Conferentiezalen
Een zaal met Zaalkopie aan wordt bewaard als één opname van de hele zaal (Conferentiezalen (hoofdstuk 34)).
Hoe lang dingen worden bewaard
Instellingen bepaalt hoeveel dagen opnames, gesprekslijst en voicemail worden bewaard; oude worden binnen een uur verwijderd. Alles onder een rechtelijke bewaring (hoofdstuk 73) wordt bewaard ongeacht de leeftijd. Het archief (hoofdstuk 72) kan kopieën elders bewaren.
Beheerders en kijkers kunnen opnames afspelen en transcripts lezen; alleen beheerders kunnen een gesprek transcriberen of opnieuw transcriberen. Het afspelen van een opname of lezen van de transcriptie wordt genoteerd in het auditlog.
Opname-toestemming
/settingsOp sommige plaatsen mag een gesprek worden opgenomen als één persoon op de hoogte is; anderen vereisen dat iedereen wordt geïnformeerd of toestemming geeft. In Instellingen, Gespreksopname, kies hoe personen in een opgenomen gesprek worden geïnformeerd:
- Geen melding.
- Aankondiging: wanneer het gesprek wordt beantwoord, horen beide partijen de melding (neem deze op in dezelfde locatie, bijvoorbeeld "Dit gesprek wordt opgenomen voor trainings- en kwaliteitsdoeleinden"), en de opname begint pas nadat deze is afgespeeld. Totdat er een is opgenomen, worden drie pieptonen afgespeeld en wordt dit door Health aangegeven.
- Piep: een korte toon voor beide partijen om de 15 seconden tijdens de opname van het gesprek.
Regels selecteren op basis van het externe nummer (de beller bij binnenkomende gesprekken, het nummer dat wordt gebeld bij uitgaande gesprekken), langste match eerst: bijvoorbeeld nummers die beginnen met 1415 (Californië) Aankondiging, 49 (Duitsland) Nooit opnemen, en de rest zoals hierboven. Een regel met Geen melding neemt op zonder melding; Nooit opnemen laat die gesprekken helemaal buiten de opname. Gesprekken tussen extensies volgen de hoofdinstelling.
Uw eigen nummer telt ook mee: de regels worden zowel tegen het externe nummer als tegen het uwe (het nummer dat wordt gebeld bij inkomende gesprekken, uw beller-ID bij uitgaande gesprekken) gematcht, en de meest beschermende regel wint (Nooit opnemen voor Aankondigen voor Piep voor Geen melding). Dus een kantoor op een locatie die toestemming van elke partij nodig heeft, kondigt aan wie ze bellen, waar ze ook zijn. Wanneer de partijen onder verschillende regels vallen, zegt het gespreksrecord in Gespreksgeschiedenis (hoofdstuk 47) welke regel is toegepast en waarom.
Opnemen kan ook worden gepauzeerd tijdens een gesprek met de pauzekode (kaartbetalingen). Dit is geen juridisch advies: controleer de wetten waar u en uw bellers zijn.
Gesprekskwaliteit
/qualityHoe gesprekken klonken over de afgelopen dag, week, maand of 90 dagen, vanaf het geluid dat BitVoice zelf heeft ontvangen op elke kant van elk gesprek. Telefoons worden gegroepeerd per site (hoofdstuk 12) (of "geen site"), en oproepen van buitenaf per de lijn van de provider waarop ze binnenkwamen.
Elke locatie toont zijn oproepen, zijn gemiddelde score (MOS, uit 5: boven 4 is goed, onder 3,6 klinkt slecht), het aandeel geluidspakketten dat nooit aankwam, en jitter (onregelmatige vertraging). Daaronder zegt BitVoice in gewone woorden wat er mis is, bijvoorbeeld "Pakketverlies op het netwerk van het hoofdkantoor: 3,2% van het geluid is nooit aangekomen, meestal tussen 14:00 en 16:00", met wat er moet worden gecontroleerd. De balkgrafiek toont het verloren geluid per uur van de dag.
De diagnose vergelijkt de twee helften van dezelfde oproepen: het geluid van de telefoons op de site en het geluid van de provider waar dezelfde oproepen doorheen zijn gegaan. Wanneer de andere helft schoon aankomt, is het verlies aan deze kant van de site, en het zegt dat zo; wanneer beide helften geluid verloren, is de site niet de enige die de schuld krijgt en het wijst naar wat de oproepen gemeen hebben, de internetverbinding van dit systeem. Als elke site tegelijk geluid verliest, is de oorzaak eveneens wat ze gemeen hebben. Hoe dit tot stand kwam geeft de redenen weer, stap voor stap (het callkwaliteitsregelboek, zie Beveiliging (hoofdstuk 60), "Hoe BitVoice beslist"). Plaatsen met minder dan drie oproepen worden niet beoordeeld. De kwaliteit per oproep is ook te vinden in Oproepgeschiedenis (hoofdstuk 47) (de kwaliteitskolom) en, terwijl oproepen actief zijn, op Actieve oproepen (hoofdstuk 46).
Een oproep die verbonden werd maar geen geluid van één kant kreeg, wordt apart geteld, onder zonder geluid, en wordt eerst weergegeven: het is geen slecht geluid maar geluid dat nooit aankwam, bijna altijd een firewall of NAT-router die SIP doorlaat en de media tegenhoudt. Het advies van de locatie zegt wat er moet worden gecontroleerd (voor een provider, de media-adresbereiken).
Kosten en budgetten
/costsBitVoice berekent elke oproep op basis van wat uw provider in rekening brengt en toont de maandelijkse uitgaven per afdeling, persoon en trunk, met de duurste oproepen.
Prijzen
Op Trunks (hoofdstuk 7) opent u een trunk en zijn Oproeprijzen. Elke prijs dekt nummers die beginnen met enkele cijfers, zoals het nummer naar de provider wordt gestuurd (alleen cijfers, dus 44 voor het VK, 1900 voor Amerikaanse premium-rate); de langste overeenkomst wint, en een prijs zonder cijfers dekt elk ander nummer. Geef de prijs per minuut, eventuele kosten per beantwoorde oproep, de factureringsstap (60 seconden voor hele minuten, 6 of 1 voor fijner) en eventuele minimum. Inkomende oproepen, per minuut is voor gratis nummers die u betaalt om te ontvangen. Wat zou het kosten controleert een nummer voordat iemand het belt. De valuta wordt ingesteld op Kosten.
De kosten van een oproep zijn vastgesteld wanneer deze eindigt, met de prijzen van dat moment; het wijzigen van een prijs verandert geen eerdere oproepen. Kosten zegt hoeveel beantwoorde uitgaande oproepen geen prijs hadden.
Afdelingen en budgetten
Geef extensies een Afdeling (in de extensie). Op Kosten voegt u een budget toe voor elke oproep of voor één afdeling: een waarschuwing verschijnt in BitVoice en wordt per e-mail verzonden naar het budgetadres en het waarschuwingadres, bij 80% en opnieuw bij 100% van de maand.
De alarm
Uitgaande oproepen kosten meer dan dit in een uur activeert een alarm wanneer uitgaande oproepen deze hoeveelheid overschrijden binnen een uur. Een plotselinge reeks dure oproepen is het gebruikelijke teken van tollfraude (een gestolen telefoonwachtwoord): controleer Gespreksgeschiedenis, vervolgens schakel de extensie of de trunk uit.
Beller-ID-reputatie en gemarkeerde oproepen
/reputationTelefoonbedrijven runnen spamfilters die een bedrijfsnummer "Waarschijnlijk spam" kunnen labelen, of blokkeren, en dan beantwoordt bijna niemand. Beller-ID-reputatie houdt elke nummer die u belt vanuit uw eigen oproepen in de gaten en zegt in gewone woorden hoe het ervoor staat:
- Beantwoord: het aandeel oproepen dat is beantwoord, en wat het was in de periode ervoor. Een daling van de helft, of onder de 20%, is het gebruikelijke teken van een nieuw label.
- Meteen opgehangen: beantwoorde oproepen die binnen 10 seconden eindigden.
- Afgewezen als spam: oproepen die een carriers filter weigerde (SIP 608) of die de persoon ongewenst markeerde (607). Één 608 betekent dat het nummer is gelabeld.
- Zware gebruik: meer dan ongeveer 150 oproepen per dag van één nummer is wat robocallers doen, en filters merken dit op.
Nummers met minder dan 20 oproepen worden getoond als te weinig om te beoordelen.
Uitgaande nummers geeft elk nummer een naam (verzonden als de naam van de beller), een reden voor het bellen en een logo (een https://-afbeelding). Op een trunk met Verstuur gemarkeerde beller-ID ingeschakeld, worden het logo en de reden verzonden als rijke oproepgegevens (RFC 9796 Call-Info); providers die gemarkeerde oproepen ondersteunen, tonen deze op de gebelde telefoon. De meeste telefoons tonen de naam uit de caller-name (CNAM)-database in plaats daarvan, die uw provider instelt: vraag het hen. Bewaken plaatst een waarschuwing op de status wanneer een bewaakt nummer begint te worden gelabeld.
De pagina zegt ook wat u moet doen wanneer een nummer is gelabeld.
Spam-bescherming en STIR/SHAKEN
/settingsIn de VS en Canada ondertekent de provider waarmee een oproep begint zijn beller-ID (STIR/SHAKEN): A wanneer hij weet dat de beller het nummer mag gebruiken, B wanneer hij de beller kent maar niet het nummer, C wanneer hij de oproep alleen heeft doorgestuurd. Uw provider vertelt BitVoice zijn oordeel (verstat) of geeft de ondertekende Identiteit-header door, die BitVoice dan zelf controleert: de handtekening, dat deze minder dan een minuut oud is, en dat deze de nummers van deze oproep noemt. Het oordeel wordt weergegeven als Geverifieerd, Deels geverifieerd, Niet geverifieerd of Niet geverifieerd op Live-oproepen en in Oproepgeschiedenis.
In Instellingen, Spam-bescherming, kies wat er gebeurt wanneer een beller-ID de verificatie niet doorstaat (overgaan, overgaan met label of weigeren), wanneer deze niet is geverifieerd, en wanneer het nummer is onderdrukt. Een gelabelde oproep gaat over met Spam? (of uw eigen label) voordat de naam van de beller wordt getoond. Geblokkeerde nummers worden geweigerd; een vermelding die eindigt met * blokkeert een bereik (+1900* is elk Amerikaans premium-tariefnummer). Altijd toegestaan nummers worden nooit geweigerd of gelabeld. In Oproepgeschiedenis voegt de blokkeerknop naast een beller deze toe aan de lijst; geweigerde oproepen worden weergegeven als Geblokkeerd.
Binnen een uur na een noodgesprek vanuit elke extensie, wordt geen enkel gesprek geweigerd (geblokkeerde nummers rinkelen in plaats daarvan met een label), voor het geval het de noodhulpdienst is die terugbelt. Een 911-gesprek (vanuit het ESInet of een CAMA-trunk) wordt nooit geweigerd of opgehouden door screening.
Bellers die BitVoice niet kent
Een beller is bekend wanneer het nummer altijd is toegestaan, in de contacten (hoofdstuk 38) staat, in het afgelopen jaar van hieruit is gebeld, of in de afgelopen 90 dagen de robot-test heeft doorstaan. Nummers worden gematcht ongeacht hoe ze zijn geschreven (met of zonder landcode, 1, 0 of +). Onder Bellers die BitVoice niet kent, kies wat er met iedereen anders gebeurt:
| Keuze | Wat de beller krijgt |
|---|---|
| Rinkelen zoals gebruikelijk | het gesprek rinkelt zoals elk ander (standaard) |
| Robot-test eerst | BitVoice neemt op en zegt "Om verbonden te worden, druk op" en een cijfer, dat elke keer verandert. De juiste toets zet ze door naar waar het gesprek naartoe ging; alles anders, of niets (twee keer), en ze gaan naar Bellers die de test niet doorstaan, gaan naar, of horen gedag. Robobellers drukken het niet in |
| Verstuur naar elders | niets rinkelt: ze gaan rechtstreeks naar de gekozen plek, een voicemailbox bijvoorbeeld |
De robot-test heeft zijn woorden nodig: in Geluiden (hoofdstuk 20), neem of maak (met een spraakdienst) de screening-prompts en de cijfers 1 tot 9 in de taal van de bellers op. Totdat ze zijn opgenomen, rinkelen die gesprekken zoals gebruikelijk (een beller kan geen test doorstaan die hij niet kan horen), en Health zegt dat zo. Een beller die slaagt, telt als bekend voor 90 dagen. De test neemt het gesprek op, dus de provider van de beller begint met het berekenen van de kosten vanaf dat moment, net als bij elk opgenomen gesprek. Gespreksgeschiedenis toont het resultaat van elk gesprek (geslaagd, niet geslaagd, verstuurd) en de why-trail zegt wat er is gebeurd.
Een spam-database
BitVoice kan een reputatiedienst vragen over elke onbekende beller voordat het gesprek rinkelt. Gebruik Nomorobo via Twilio vult Twilio Lookup met de Nomorobo-spamscore (installeer de Nomorobo-add-on in uw Twilio-account, voer vervolgens het account SID en auth-token in); elke andere dienst die in JSON antwoordt, werkt ook: geef het adres op met {e164} (+12125550142) of {number} (zoals de provider het heeft verstuurd), waar het oordeel is (Oordeelveld, een dotted path), en wanneer het spam betekent (een score vanaf Spam bij score, true, of de tekst in Of spam wanneer de tekst is, zoals BLOCK). Kies wat er met een beller gebeurt die als spam wordt bestempeld: rinkelen met label, robot-test of weigeren.
- Deze diensten rekenen per lookup. Bekende bellers worden nooit opgezocht, en elk antwoord wordt een dag bewaard (Bewaar antwoorden).
- Een trage of kapotte dienst houdt nooit een gesprek op: na Wacht maximaal (1,5 seconden, tenzij u het wijzigt) rinkelt het gesprek alsof het antwoord "geen spam" was.
- Test vraagt het nu over een nummer (en wordt in rekening gebracht als elke lookup).
Blokkeer de laatste beller
Recht na een ongewenst gesprek, toets *32 (Functiecodes (hoofdstuk 32)) in op de telefoon waar het rinkelde: het laatste externe nummer dat de extensie in de afgelopen dag belde, komt op de blokkeerlijst, en de telefoon leest het nummer voor. Een altijd-toegestaan nummer wordt niet geblokkeerd, en de telefoon zegt dat zo. Elk nummer staat in het Audit-log, met wie het heeft geblokkeerd.
Voorgesteld op basis van uw gesprekken
BitVoice leest de laatste 30 dagen van gesprekken van buiten voor nummers die steeds weer bellen en direct worden afgekapt: drie gesprekken of meer, bijna allemaal binnen 10 seconden, of twee robot-tests mislukt, en nooit een echt gesprek (iemand die 30 seconden of langer praat). Bekende nummers worden buiten beschouwing gelaten. Elk nummer komt met een reden; Blokkeer zet het op de blokkeerlijst en Geen spam betekent dat het nooit meer wordt voorgesteld. Niets wordt geblokkeerd totdat iemand dat zegt.
Om certificaten te controleren tegen de STI-autoriteiten, plakt u hun certificaten onder STI-certificaatautoriteiten; zonder deze controleert BitVoice of de oproep is ondertekend met het certificaat dat het noemt, maar niet wie dat certificaat heeft afgegeven.
Uw eigen oproepen ondertekenen
De meeste providers ondertekenen de oproepen van hun klanten zelf. Als uw provider u toestaat om te ondertekenen (of u bent een provider die BitVoice uitvoert), schakelt u Onderteken beller-ID in op de trunk (Trunks (hoofdstuk 7)) en geeft u uw STI-certificaat (van een STI-certificeringsautoriteit, met uw serviceprovidercode-token) en de bijbehorende private key (P-256). Elke oproep via de trunk bevat dan een ondertekende Identiteit-header (ES256, zoals SHAKEN vereist).
- Certificaatadres (x5u) is waar de ontvangende kant het certificaat ophaalt. Laat het leeg en BitVoice publiceert het op
/stir/<trunk>.pemop zijn openbare adres (Instellingen), dat dan vanaf het internet via HTTPS bereikbaar moet zijn. - Verklaring: automatisch geeft A wanneer een aansluiting belt met een van de nummers van dit systeem (een nummer dat is doorgestuurd, of een beller-ID die is ingesteld op de trunk of de aansluiting), B wanneer een aansluiting belt met elk ander nummer, en C voor oproepen die van buitenaf zijn doorgestuurd (een doorgestuurde beller). Of fixeer het op A, B of C.
- Oproepgeschiedenis markeert elke ondertekende oproep met ondertekend A, B of C. Een oproep wordt nooit gestopt omdat deze niet kon worden ondertekend; de reden staat in het logboek.
BitVoice uitvoeren
Het veilig houden en draaiend krijgen: beheerders en aanmelden, beveiliging, wijzigingen en updates, meerdere servers, gehoste organisaties, codecs, Teams, importeren, automatisering en de tools voor het vinden van fouten.
Beheerders
/usersBeheerders zijn de mensen die inloggen op deze webinterface. Medewerkers die alleen hun eigen oproepen beheren, gebruiken het medewerkersportaal en hebben geen account nodig (Het medewerkersportaal (hoofdstuk 33)).
Rollen
| Rol | Kan |
|---|---|
| Beheerder | alles wijzigen, opnames afspelen, elke geheime veldbestaan zien (nooit de waarde) |
| Kijker | alles zien, niets wijzigen; geheimen zijn verborgen |
Een wijziging van de rol of van het wachtwoord, meldt de persoon overal tegelijk af.
Tweestapsinloggen
Elke persoon activeert tweestapsinloggen voor zichzelf: Instellen toont een sleutel voor een authenticator-app; het intoetsen van de code activeert het. Vanaf dat moment vraagt inloggen om een code naast het wachtwoord. Uitschakelen vereist het wachtwoord.
Eenmalige inloggen
Met eenmalige inloggen (Instellingen) loggen mensen in met het account van de organisatie (Microsoft Entra, Google, Okta, elke OpenID Connect-provider), en wordt er een account voor hen gemaakt bij de eerste keer. Zie Eenmalige inloggen (hoofdstuk 58).
API-tokens
Programma's (Terraform, scripts) gebruiken API-tokens in plaats van een wachtwoord: gemaakt op deze pagina, één keer getoond en ingetrokken op elk moment. Elk token is een beheerder of een kijker. Een token gemaakt met Naam van de persoon die het vertegenwoordigt (voor een CAD) kan X-BitVoice-On-Behalf-Of verzenden met de naam van de persoon, en noemt die persoon dan naast het token (911-oproepen (hoofdstuk 77)).
Enkelvoudige aanmelding
Enkelvoudige aanmelding laat mensen toe om in te loggen bij BitVoice met hun werkaccount, via elke OpenID Connect-provider: Microsoft Entra ID, Google, Okta, Keycloak en anderen. Het verlaten van de organisatie verwijdert hun toegang hier ook.
Instellen
In Instellingen (hoofdstuk 14), Single sign-on:
- Registreer een applicatie bij de provider, met het Redirect-adres dat hier wordt weergegeven.
- Invullen voor een provider stelt de Issuer in voor de meest voorkomende; kopieer de Client ID en Client secret van de provider.
- Geef de Beheerdersgroepen en Kijkergroepen van de provider een naam. Groepsclaim is waar de provider ze plaatst (
groupstenzij ingesteld). - Wijzig optioneel de Knopptekst op de aanmeldingspagina.
- Schakel Gebruik single sign-on in.
Hoe het werkt
- Het account hier wordt gemaakt bij de eerste aanmelding; de groepen bepalen de rol bij elke aanmelding, dus het verplaatsen van iemand tussen groepen bij de provider verandert hun rol hier.
- Iemand in geen van beide soorten groepen wordt geweigerd en de weigering wordt opgenomen in het auditlog.
- Met Ook wachtwoorden toestaan uitgeschakeld, werken wachtwoorden alleen op deze computer, dus een storing van de provider zal je nooit buitensluiten.
Bedrijfsdirectory (Active Directory en LDAP)
BitVoice kan uw bedrijfsdirectory lezen, Active Directory of een andere LDAP-server (OpenLDAP, Samba, 389 Directory Server, FreeIPA): personen met een telefoonnummer worden extensies, directorygroepen vullen ringgroepen en personen melden zich aan bij het webinterface met hun directorywachtwoord. BitVoice leest alleen de directory; het schrijft nooit naar de directory.
Verbinden
In Instellingen (hoofdstuk 14), Bedrijfsdirectory:
- Kies Active Directory of OpenLDAP of een andere LDAP-server: het stelt welke attributen worden gelezen (sAMAccountName of uid voor de aanmeldingsnaam, displayName of cn, mail, telephoneNumber). Wijzig een van hen in het vak.
- Server:
ldaps://dc1.example.com(poort 636), ofldap://...met StartTLS ingeschakeld. Plain LDAP wordt geweigerd, tenzij de server deze computer is, omdat wachtwoorden ongecodeerd over het netwerk zouden gaan. Wanneer het certificaat van de server afkomstig is van uw eigen certificeringsinstantie, plak de instantie in Bedrijfs certificeringsinstantie. - Leesaccount en Wachtwoord: een account dat mensen en groepen mag lezen (
reader@example.comop Active Directory). Het wachtwoord kan een verwijzing naar een sleutelkluis zijn (Instellingen, Sleutelkluizen). - Basis-DN: waar mensen en groepen zijn (
dc=example,dc=com). Welke mensen beperkt hen met een LDAP-filter; op Active Directory worden uitgeschakelde accounts altijd uitgesloten. - Test meldt zich aan met het leesaccount en leest iedereen, zonder iets te veranderen: het toont hoeveel mensen het heeft gevonden, hoeveel een nummer hebben en de extensie die elke zou krijgen.
Extensies en ringgroepen
- Met Maak en werk extensies bij ingeschakeld, krijgt elke persoon met een nummer een extensie: de laatste Cijfers behouden (4 van
+1 212 555 0123is 0123; 0 houdt alle cijfers, die dan 2 tot 8 moeten zijn). Nieuwe extensies krijgen een SIP-wachtwoord en voicemail met een willekeurige PIN; de naam en e-mail van de persoon komen uit de directory. - De directory is eigenaar van een extensie die het heeft gemaakt: het nummer, de naam en de e-mail volgen de directory bij elke synchronisatie. Alles anders (apparaten, doorverbinden, voicemailinstellingen) is van u.
- Een extensie die u handmatig heeft gemaakt, wordt nooit overgenomen, tenzij deze de naam of e-mail van die persoon heeft. Twee personen met hetzelfde nummer, een nummer dat de extensie van iemand anders al heeft, of een nummer van de verkeerde lengte wordt vermeld onder Om te bekijken, en er wordt niets veranderd voor hen.
- Met Schakel de extensies van mensen die zijn vertrokken uit ingeschakeld, wordt een extensie die de directory heeft gemaakt uitgeschakeld wanneer de persoon vertrekt, wordt uitgeschakeld of het nummer verliest, en weer ingeschakeld wanneer hij terugkeert.
- Ringgroepen worden gevuld met directorygroepen: elke regel zet de extensies van de leden van een groep in een ringgroep (op Active Directory tellen geneste groepen mee). Een groep met niemand die een extensie heeft, laat de ringgroep zoals deze was.
- De directory wordt elke Lees het elke minuten gelezen (60 standaard), en direct met Synchroniseer nu. Elke synchronisatie die iets verandert, is één revisie (hoofdstuk 61) genaamd "Bedrijfsdirectorysynchronisatie", zodat deze ongedaan kan worden gemaakt; het rapport van de laatste synchronisatie wordt onder de knop weergegeven.
Aanmelden
Met Mensen melden zich hier aan met hun directorynaam en wachtwoord ingeschakeld, accepteert de aanmeldingspagina directorynamen en wachtwoorden, evenals de eigen accounts van BitVoice:
- Leden van Beheerdersgroepen melden zich aan als beheerders, van Kijkergroepen als kijkers (met geen kijkergroepen, iedereen anders in de directory). Groepen worden genoemd door hun naam (cn) of DN; op Active Directory tellen geneste groepen mee. Iemand in geen van deze groepen wordt geweigerd.
- Het account hier wordt gemaakt bij de eerste aanmelding en de rol volgt de groepen bij elke aanmelding. Het neemt nooit een BitVoice-account met dezelfde naam over.
- Een leeg wachtwoord wordt altijd geweigerd (LDAP zou het anders als een anonieme aanmelding beschouwen), een uitgeschakeld account kan niet aanmelden, en namen worden ontsnapt voordat ze de directory bereiken.
- Tweestapsaanmelding kan aan deze accounts worden toegevoegd, net als aan elk ander.
Beveiliging
/securityEen telefoonsysteem op internet wordt binnen enkele uren aangevallen: scanners proberen wachtwoorden op elke SIP-poort en een gehackt systeem maakt oproepen naar premium-nummers. BitVoice is standaard gebouwd om hier tegen te kunnen, in lagen.
Tegen wachtwoordraden
- Adressen die blijven falen bij het inloggen, worden voor een tijdje geblokkeerd (Instellingen, Beveiliging): standaard tien mislukkingen in een minuut blokkeren het adres voor een uur. Geblokkeerde adressen worden vermeld op Beveiliging (hoofdstuk 60) en kunnen worden deblokkeerd.
- Vertrouwde netwerken worden nooit geblokkeerd: uw kantorennetwerk.
- SIP-wachtwoorden worden gegenereerd, minstens 12 tekens, één per extensie. Een telefoon die zich aanmeldt als één extensie, kan nooit een andere registreren.
- Een scanner die is geblokkeerd, krijgt geen antwoord, zodat deze niets leert.
Tegen fraude
- Extensies kunnen alleen buitenlijnen bellen als dit is toegestaan.
- Premium-nummers worden geweigerd, tenzij een route deze noemt.
- De toll-fraudebewaker (hieronder) beoordeelt elke oproep buiten het land voordat deze wordt geplaatst.
- Kosten (hoofdstuk 54) waarschuwt voor budgetten en voor uit de hand lopende uitgaven: veel oproepen naar één land in een uur.
- Elke extensie mag maximaal vier oproepen tegelijk hebben (Instellingen, Beveiliging).
De toll-fraudebewaker
Schakel deze in in Instellingen, Toll-fraudebewaker. Elke oproep buiten het land (door +, 00 of 011, en de landen die +1 delen met Noord-Amerika, maar andere landen zijn, zoals Jamaica, een klassieke toll-fraudebestemming) wordt dan beoordeeld voordat deze wordt geplaatst:
| Situatie | Wat het doet |
|---|---|
| Een oproep in het buitenland naar een land dat deze extensie de afgelopen 90 dagen heeft gebeld | laat het door |
| Een eerste oproep naar dat land in 90 dagen | laat het door en rapporteert het |
| Een eerste oproep daarbuiten Bureautijden, of geplaatst van buitenaf (een inbelverbinding, een doorverbinding) | vraagt om de PIN die wordt gevraagd (met geen gekozen, weigert het) |
| Meer dan Oproepen in het buitenland in 10 minuten van één extensie | weigert het |
| Een eerste oproep in het buitenland terwijl iemand wachtwoorden aan het raden is (drie opeenvolgende mislukkingen van één adres, of een blokkering, in het afgelopen uur) | weigert het |
| Een noodnummer | laat het altijd door |
Landen die altijd zijn toegestaan (belcodes, zoals 44) en Uitzonderingen (een extensie die is vrijgesteld tot een dag, voor een reis) doen af van 'eerste oproep' en 'buiten kantooruren'; ze excuseren nooit veel oproepen in een korte tijd of een aanval, omdat een gestolen wachtwoord er ook goedgekeurd uitziet. Als de oproepgeschiedenis niet kan worden gelezen, weet de bewaker niet of een oproep een eerste is, en iets dat niet wordt gemeten, wordt nooit als veilig beschouwd: het vraagt om de PIN. Elke beoordeling wordt vermeld op Beveiliging (hoofdstuk 60) met de redenen en staat in het oproeprecord in Oproepgeschiedenis (hoofdstuk 47).
Hoe BitVoice beslist
BitVoice's rechters (de toll-fraudebewaker, de trunk-gezondheidsrechter, de oproepkwaliteitsdiagnose en de 911-bellerlocatiecontrole) volgen elk een regelboek: feiten die worden gemeten, conclusies die ze ondersteunen, de uitzonderingen die een conclusie overrulen en de keuzes. Hoe BitVoice beslist, op Beveiliging (hoofdstuk 60), toont elk regelboek. De regels die de rechters hanteren:
- Elk antwoord komt met de redenen: wat werd vastgehouden, wat werd ertegen geargumenteerd en wat overruled dat.
- Iets dat niemand heeft gemeten, is onbekend, nooit 'nee'. Wanneer een onbekende de uitkomst kan veranderen, neemt de rechter de voorzichtige keuze en zegt wat het niet kon meten.
- 'Kan niet bepalen' is een antwoord: wanneer de regels een situatie onbeslist laten, neemt de rechter de voorzichtige keuze en zegt zo.
- Elk regelboek wordt gecontroleerd in elke combinatie van feiten voordat het wordt gebruikt (wanneer BitVoice start, en door zijn tests): nooit twee keuzes tegelijk, en elke regel bereikbaar. Het scherm toont hoeveel situaties elk werd gecontroleerd.
Versleuteling
- TLS versleutelt signalering (poort 5061), zodat wachtwoorden en nummers niet leesbaar zijn op het netwerk.
- SRTP versleutelt het geluid van oproepen; de browser-telefoon en apps gebruiken deze altijd.
- De webinterface heeft HTTPS op poort 8443 met zijn eigen certificaat, of één die u installeert.
Wie mag wat
- Beheerders veranderen alles; kijkers zien alles, maar veranderen niets; medewerkers gebruiken het portaal alleen voor hun eigen oproepen.
- Schakel tweestapsinloggen in voor elke beheerder (Beheerders (hoofdstuk 57)): een code van een authenticator-app.
- Enkelvoudige aanmelding (hoofdstuk 58) meldt mensen aan bij BitVoice met hun werkaccount, via elke OpenID Connect-provider: Microsoft Entra ID, Google, Okta, Keycloak en anderen. Het verlaten van de organisatie verwijdert hun toegang hier ook.
- Het auditlog registreert elke beheeractie en wie het deed, en kan niet worden bewerkt.
Wijzigingen, back-ups en import
/changesElke opgeslagen wijziging is een revisie: genummerd, met wie het heeft gemaakt, wanneer en een korte samenvatting. Niets in de configuratie gaat ooit verloren.
Vergelijken en herstellen
- Wat is gewijzigd toont het verschil tussen een revisie en de vorige, veld voor veld.
- Herstellen toont wat herstellen zou veranderen en vraagt eerst. Herstellen is zelf een nieuwe revisie, dus het kan ook ongedaan worden gemaakt.
Exporteren en importeren
- Exporteren downloadt de hele configuratie als één bestand (geheimen worden weggelaten, tenzij u ze opvraagt).
- Importeren toont een voorbeeld van de wijzigingen in een bestand voordat ze worden toegepast.
- Importeren (hoofdstuk 68) leest ook FreePBX- en Asterisk-configuraties, 3CX-gebruikerslijsten en de CSV-exports van Cisco Unified CM, Avaya en Mitel.
- Archiveren (hoofdstuk 72) kopieert back-ups, opnames en voicemail naar Amazon S3 of Azure.
Wijzigingen die op hetzelfde moment worden gemaakt
Twee beheerders kunnen niet tegelijkertijd hetzelfde onderdeel bewerken zonder elkaar te overschrijven: de tweede opslag wordt geweigerd met een bericht om opnieuw te laden, en niets gaat verloren.
Updates
/updatesHet updaten van BitVoice is één klik, en veilig: het controleert de nieuwe versie, installeert deze naast de oude en gaat terug naar de oude als de nieuwe niet blijft draaien.
Installeren van een update
- Download de nieuwe release en pak deze uit. Naast het programma staat de handtekening van BioDream:
bitvoice.sig, ofbitvoice.exe.sigop Windows. - Op Updates (hoofdstuk 62) uploadt u het programma en het
.sig-bestand. - Druk op Installeren. Standaard wacht BitVoice totdat er geen gesprekken in uitvoering zijn; u kunt ook meteen installeren.
- BitVoice start opnieuw met de nieuwe versie. Met meerdere servers worden gesprekken in uitvoering overgedragen aan een andere server en gaan door.
Terugkeren
De versie die u hebt verlaten, wordt bewaard: Terugkeren keert ernaar terug in één klik. Een nieuwe versie die tweemaal niet start of niet blijft draaien, wordt vervangen door de vorige door zichzelf.
Handtekeningen
Elke release vanaf v0.1.3 draagt de release-sleutel van BioDream. Een dergelijke build installeert alleen programma's die zijn ondertekend met die sleutel: een ondertekend bestand, een bestand ondertekend door iemand anders, of een bestand dat door één byte is gewijzigd, wordt geweigerd met de handtekening komt niet overeen. De pagina zegt of deze build controleert (Verplicht) of niet.
| U uitvoert | Updates accepteert |
|---|---|
| een release, v0.1.3 of later | alleen programma's ondertekend door BioDream |
| v0.1.2 of eerder, of een build van uzelf | elk programma: zonder sleutel kan een .sig-bestand niet worden gecontroleerd en wordt genegeerd |
Meerdere servers als één telefoonsysteem
/serversTwee of meer BitVoice-servers die één PostgreSQL-database delen, werken als één telefoonsysteem:
- Een gesprek bereikt een telefoon ongeacht welke server het is geregistreerd bij: ringgroepen, wachtrijen, doorverbinden naar een extensie en gesprekken van providerlijnen laten alle telefoons op elke server overgaan.
- Instellingen die op één server zijn gewijzigd, zijn van toepassing op alle servers binnen vijf seconden; gebruikers, contacten, gespreksgeschiedenis, transcripten van opnames en teksten zijn gedeeld.
- Bezette lampjes (BLF) laten telefoons op elke server zien die overgaan en bezet zijn; parkeerslots zijn gedeeld, dus een gesprek dat is geparkeerd op één server kan worden opgepakt vanaf een telefoon op een andere server; omroepen bereiken telefoons op elke server; teksten bereiken bureautelefoons waar ze ook zijn geregistreerd.
- Een wachtrijagent in een gesprek op één server telt als bezet op de andere servers, en het kanaallimiet van een providerlijn telt gesprekken op elke server.
- Actieve gesprekken op elke server vermeldt ook de gesprekken op de andere servers (alleen-lezen: ophangen of meeluisteren op de server die het gesprek heeft).
- Het gespreksrecord wordt één keer geschreven, door de server die de beller heeft, en een gesprek wordt daar ook opgenomen.
Instellen
- Verplaats de gegevens van de eerste server naar PostgreSQL: Instellingen, Database.
- Start elke andere server met dezelfde database:
bitvoice -database postgres://…(of de BITVOICE_DATABASE-omgevingsvariabele). Het voegt zich meteen bij; Servers vermeldt het. - Op Servers, controleer waar elke server bereikbaar is (zijn adres en SIP-poort op het netwerk dat de servers delen), en geef elke server een naam. Servers die elk vanaf het internet bereikbaar zijn via een adres van hun eigen (cloudservers met openbare IP's, geen gedeeld adres) krijgen Zijn eigen openbaar adres ook: providers en telefoons buiten worden dat adres verteld, zodat wanneer een server een gesprek overneemt, het geluid van de provider dat volgt. Als het leeg wordt gelaten, gebruikt een server het openbare adres in Instellingen.
- Vertel telefoons hoe ze de servers kunnen vinden (hieronder).
- Providerlijnen (hieronder).
Hoe telefoons de servers vinden. Telefoons die BitVoice instelt (Yealink, Polycom, Grandstream) krijgen automatisch een andere actieve server als back-up. Voor de anderen, Snom en telefoons die handmatig zijn ingesteld, gebruikt u een van de volgende opties op Servers:
- Een DNS-naam voor elke server: een naam zoals pbx.example.com met SRV-records (_sip._udp, _sip._tcp, _sips._tcp) die elke server vermelden. Telefoons die BitVoice instelt, krijgen de naam, en Servers controleert de records tegen de actieve servers, vermeldt wat ontbreekt en geeft de records om te maken, klaar om te kopiëren.
- Een gedeeld adres: een ongebruikt adres op het netwerk van de servers, zoals 192.168.1.50/24. Één actieve server houdt het adres vast en vertelt het netwerk meteen (gratuitous ARP); als het stopt, neemt de volgende server het adres over binnen enkele seconden, zet de gesprekken voort en neemt de telefoons op hetzelfde adres op zonder dat ze opnieuw hoeven te registreren. Het vereist Linux en de NET_ADMIN- en NET_RAW-machtigingen (in een container:
--cap-add NET_ADMIN --cap-add NET_RAW), en de servers op één netwerk. Start elke server opnieuw na het instellen.
Providerlijnen. In elke trunk, geeft Gedeeld tussen servers aan hoe:
- Elke server gebruikt deze: elke server registreert zich en plaatst zijn eigen gesprekken. Voor providers die meerdere registraties op één account toelaten, of geen.
- Één server tegelijk: één server registreert zich en draagt de lijn; de andere servers tonen deze als In wacht, vastgehouden door die server en sturen hun gesprekken via deze server. Als deze stopt, registreert de volgende server zich binnen enkele seconden. Voor providers die één registratie per account toelaten.
Wanneer een server stopt
- Gesprekken gaan door. Elke server houdt een notitie van zijn gesprekken in de database; wanneer één stopt, neemt een actieve server elk gesprek over binnen enkele seconden, verplaatst het geluid naar zichzelf en vertelt beide partijen (een re-INVITE). Er is een onderbreking van enkele seconden in het geluid. Een geplande stop (een upgrade, een herstart) geeft gesprekken over aan één server zonder onderbreking.
- Een gesprek waarvan de telefoon is geregistreerd bij de server die het overneemt, gaat door zonder de telefoon te storen: alleen de andere partij wordt verplaatst.
- Zijn telefoons gaan door via hun back-upserver, de DNS-naam of het gedeelde adres.
- Een server die alleen herstart (een upgrade, een herstart) weet nog steeds waar zijn eigen telefoons zijn geregistreerd: hij houdt ze in zijn gegevensmap (
registrations.json), dus gesprekken bereiken ze voordat ze opnieuw registreren. - Health en Servers tonen deze als gestopt; wanneer deze terugkeert, neemt deze niets over van de server die het heeft overgenomen.
Tussen servers. De servers bereiken elkaar op hun SIP-poort via TCP of TLS wanneer ze een certificaat hebben (elke server accepteert alleen het certificaat dat de andere heeft gepubliceerd en de geluidsoverdracht tussen hen is dan versleuteld met SRTP) en sturen geluid naar elkaars mediapoorten (UDP, het bereik in Instellingen). Oproepen tussen servers worden ondertekend met een geheim dat ze delen in de database en worden alleen geaccepteerd van een actieve lid op zijn eigen adres. Een firewall tussen hen moet deze poorten doorlaten.
Probeer het eerst: het lab. BitVoice komt met een lab dat twee servers, hun database en testtelefoons op één computer met Docker uitvoert, elk op een adres van zichzelf: deploy/lab/run.sh up bouwt en start het en stelt het gedeelde adres in; run.sh call belt tussen telefoons op verschillende servers; run.sh failover doodt de server die een oproep via het gedeelde adres uitvoert en controleert of de oproep doorgaat (het geluid komt over ongeveer vijf seconden terug); run.sh impaired belt vanuit een telefoon op een slechte verbinding (vertraging, jitter en 5% verlies) en controleert de oproepkwaliteit die BitVoice rapporteert; run.sh down verwijdert het. De serverspagina's zijn te vinden op https://127.0.0.1:18501 en :18502 (gebruiker admin).
Waar de gegevens worden opgeslagen (SQLite of PostgreSQL)
/settingsBitVoice bewaart zijn instellingen en hun opgeslagen versies, gebruikers, contacten, oproeprecords, het auditlog, teksten, notities en transscripties in een database. Opnames en voicemail blijven geluidsbestanden in de gegevensmap.
Dit servers eigen bestand (SQLite, standaard): een enkel bestand, bitvoice.db in de gegevensmap, met niets om te installeren. Back-up de gegevensmap en u heeft alles.
PostgreSQL: voor meerdere BitVoice-servers die één set gegevens delen, of voor rapporten in tools zoals Power BI, Grafana of Metabase. In Instellingen, Database, Verplaats de gegevens naar PostgreSQL: maak een lege database en een gebruiker die deze bezit, voer het adres in (postgres://gebruiker:wachtwoord@host:5432/database), druk op Test, vervolgens Kopieer de gegevens en start opnieuw met PostgreSQL. Alles wordt in één keer gekopieerd (alles of niets) en BitVoice start opnieuw met het gebruik ervan; het oude bestand blijft waar het was. Terugverplaatsen naar het servers eigen bestand werkt op dezelfde manier. Verplaatsingen worden geweigerd tijdens lopende oproepen.
Servers die een PostgreSQL-database delen, zien elkaars instellingswijzigingen binnen vijf seconden. Elke server beantwoordt nog steeds zijn eigen telefoons en oproepen; voor een tweede server om een eerste servers telefoons over te nemen, moeten de telefoons beide adressen hebben (of één adres dat verplaatst).
De database kan ook worden genoemd wanneer BitVoice start, met -database postgres://… of de BITVOICE_DATABASE-omgevingsvariabele; deze wordt dan gewijzigd, niet in Instellingen.
Oudere installaties: bij de eerste start van deze versie, kopieert BitVoice zijn oude JSON-bestanden naar de database en verplaatst ze naar pre-database in de gegevensmap.
Andere organisaties hosten
/tenantsEen BitVoice kan meerdere organisaties hosten. Elke organisatie is een eigen telefoonsysteem: eigen extensies, nummers, trunks, routes, beheerders, voicemail, opnames en oproepgeschiedenis. Geen organisatie kan die van een andere zien. Ze delen alleen de SIP-poort, IAX2-poort en mediapoorten van deze server.
Wanneer te gebruiken
- Een provider of een IT-bedrijf dat telefoonsystemen voor veel kleine klanten op één server uitvoert.
- Een groep kantoren of klinieken die afzonderlijke systemen willen, beheerd door afzonderlijke beheerders, op gedeelde hardware.
- Meerdere meldkamers die één systeem delen, elk met hun eigen call-takers en records.
Het hoofdsysteem is ook een organisatie: de organisatie waarvoor deze server is ingesteld. De beheerders van het hoofdsysteem beheren de andere organisaties.
Een organisatie toevoegen
- Open Organisaties (hoofdstuk 65) en druk op Organisatie toevoegen.
- Geef de naam en een korte naam (kleine letters, cijfers en streepjes). De korte naam is onderdeel van het webadres,
/t/acme/, en van de telefoonaanmeldingen,acme.100. Deze kan later niet worden gewijzigd. - Geef optioneel een eigen domein, zoals
pbx.acme.example, dat naar deze server wijst. Telefoons melden zich aan bij dat domein, en de beheerders openen het in een browser. - Stel de eerste beheerder in: een gebruikersnaam en een wachtwoord van minstens 12 tekens, en het land.
- Stel optioneel limieten in.
De organisatie start onmiddellijk met een leeg telefoonsysteem, klaar voor de beheerder om in te stellen zoals beschreven in Aan de slag (hoofdstuk 1).
Hoe oproepen de juiste organisatie vinden
| Aanvraag | gaat naar |
|---|---|
van een telefoon die zich aanmeldt bij pbx.acme.example | de organisatie met dat domein |
van een telefoon die zich aanmeldt als acme.100 | Acme, extensie 100 |
| van een provider, voor een nummer | de organisatie waarvan de trunk het nummer afkomstig is en waarvan de binnenkomende route dat nummer heeft |
| alles anders | het hoofdsysteem |
Dus twee organisaties kunnen beide extensie 100 hebben, en meerdere kunnen één provideraccount delen met verschillende nummers.
Waar de gegevens zijn
Op SQLite heeft elke organisatie een eigen map onder tenants/ in de gegevensmap, met een eigen databasebestand. Op PostgreSQL heeft elke organisatie een eigen schema in dezelfde database (tenant_acme). Back-ups, archieven en exporteren zijn per organisatie.
Limieten
| Limiet | Wat gebeurt bij |
|---|---|
| Extensies | het toevoegen van nog een extensie wordt geweigerd met een bericht |
| Oproepen tegelijk | nieuwe oproepen worden geweigerd (503) totdat er een eindigt |
| Opslag | nieuwe opnames en voicemail worden niet bewaard |
| AI-aanvragen per dag | transcripten, samenvattingen en de AI-receptionist stoppen tot middernacht UTC |
0 is geen limiet. Noodoproepen worden nooit geweigerd: een organisatie die haar oproepslimiet heeft bereikt of is geschorst, kan nog steeds 911 bellen en teruggebeld worden.
Een organisatie openen
Openen meldt u aan bij de webinterface van de organisatie als provider, zonder een eigen account; dit wordt weergegeven in het auditlog van de organisatie als de provider. De beheerders van de organisatie melden zich aan bij het eigen adres met hun eigen accounts. Elke organisatie heeft haar eigen aanmeldcookie, dus aangemeld zijn bij de ene organisatie betekent nooit dat iemand is aangemeld bij een andere.
Organisaties zien nooit de schermen van deze server: updates, de database, de andere servers, het certificaat, de SIP-trace (die alle berichten van elke organisatie laat zien), de oproepgenerator of deze lijst.
Onderbreken en verwijderen
Onderbroken stopt aanmeldingen en elk gesprek behalve noodgesprekken; niets wordt verwijderd. Verwijderen stopt de organisatie en verplaatst de map ernaast (tenants/.removed-<name>-<time>), zodat een fout handmatig kan worden hersteld.
Codecs en geluid
Een codec is de manier waarop geluid wordt omgezet in gegevens tijdens een gesprek. Telefoons, browsers en providers ondersteunen elk een aantal; BitVoice zet elk paar codecs om wanneer twee partijen verschillen, zodat iedereen met iedereen kan praten. Wanneer beide partijen dezelfde codec gebruiken, wordt het geluid ongewijzigd doorgegeven.
De codecs
| Codec | Geluid | Bandbreedte | Gebruikt door |
|---|---|---|---|
| G.722 | HD (breedband) | 64 kbit/s | meeste bureautelefoons: de beste keuze tussen hen |
| G.711 µ-law | telefoon | 64 kbit/s | Noord-Amerika en Japan; elke carrier |
| G.711 A-law | telefoon | 64 kbit/s | de rest van de wereld |
| Opus | HD, omgaat met verlies | 24 kbit/s | browsers en mobiele apps |
| G.729 | telefoon, een beetje ruwer | 8 kbit/s | dunne verbindingen, sommige carriers |
| G.726 (40 kbit/s) | telefoon; draagt modemtonen het beste van de G.726-snelheden | 40 kbit/s | gateways, sommige DECT-systemen |
| G.726 (32 kbit/s) | nabij telefoon | 32 kbit/s | DECT-basissen, oudere gateways |
| G.726 (24 kbit/s) | tussen 32 en 16 | 24 kbit/s | sommige DECT-systemen |
| G.726 (16 kbit/s) | ruw | 16 kbit/s | zeer dunne verbindingen |
| AMR-WB (G.722.2) | HD | 6,6 tot 23,85 kbit/s | HD-telefonie in mobiele netwerken, VoLTE-interconnects |
| AMR | telefoon, mobiel | 4,75 tot 12,2 kbit/s | mobiele netwerken, sommige carriers en gateways |
| iLBC | telefoon, omgaat met verlies | 13,3 of 15,2 kbit/s | oudere softphones en apps |
| Speex | telefoon | 15 kbit/s (2,15 tot 24,6) | oudere softphones, verbindingen met andere Asterisk-systemen |
| GSM | ruwer | 13 kbit/s | oudere softphones en gateways |
| G.723.1 | ruw; alleen omgezet met ffmpeg | 5,3 of 6,3 kbit/s | zeer oude videotelefoons en gateways |
| G.722.1 (Siren 7) | breedband, ongewijzigd overgedragen | 24 of 32 kbit/s | Polycom-telefoons, video- en conferentietelefoons |
| G.722.1C (Siren 14) | super-breedband, ongewijzigd overgedragen | 24 tot 48 kbit/s | conferentietelefoons, ruimtesystemen |
| G.719 | volledig band, ongewijzigd overgedragen | 32 tot 128 kbit/s | telepresenceruimtesystemen |
| Codec2 | zeer lage bandbreedte, ongewijzigd overgedragen | 0,7 tot 3,2 kbit/s | radiolinks, amateur radiogateways |
Instellingen geeft de codecs weer die telefoons mogen gebruiken, eerst de beste; elke trunk mag zijn eigen lijst hebben. Analog adapterpoorten gebruiken altijd G.711, die faxen, modems en alarmpanelen nodig hebben.
G.722.1, G.722.1C, G.719 en Codec2 worden ongewijzigd doorgegeven tussen twee partijen die ze allebei gebruiken, met hun bitrate of modus behouden in het aanbod (BitVoice zet ze niet om, dus een gesprek tussen een van deze en een telefoon zonder het gebruikt een andere codec die ze allebei hebben). Zet ze in een lijst, boven G.711, waar ruimtesystemen of conferentiefoons hun geluidsbereik moeten behouden wanneer ze elkaar bellen. De lijsten noemen G.722.1 bij 32 kHz G7221C, hoewel SDP ze beide G7221 noemt.
G.723.1 gaat ongewijzigd tussen twee partijen die het allebei gebruiken. Om een apparaat dat alleen G.723.1 gebruikt te laten praten met alles anders, schakelt u G.723.1 omzetten met ffmpeg in Instellingen en installeert u ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice voert dan ffmpeg uit als een apart programma voor elke richting die omzetting nodig heeft (gehoord bij elke snelheid, verzonden bij 6,3 kbit/s, de snelheid die de encoder van ffmpeg maakt), ongeveer 60 ms later dan andere codecs, en stopt het een paar seconden na het gesprek. BitVoice bevat geen G.723.1-code van zichzelf: de referentiecode van de ITU heeft geen licentie die het opnemen ervan toestaat, en ffmpeg wordt apart geïnstalleerd en uitgevoerd.
Wat conversie kost
Conversie kost processor-tijd, alleen bij gesprekken waarbij de twee kanten verschillen. Per gesprek ongeveer 0,3 ms van één core elke 20 ms voor Opus en 0,12 ms voor G.729 (ongeveer 60 en 170 omgezette gesprekken per core); G.726 en GSM kosten minder dan G.729; G.711 en G.722 bijna niets. G.729 wordt verstuurd zonder Annex B (geen stilteframes).
Geluidsschoonmaak
Geluidsschoonmaak (Instellingen) verlaagt constante achtergrondruis en egaliseert niveaus, voor voicemail en, als u dat wilt, tijdens gesprekken.
Microsoft Teams (Direct Routing)
/trunksBitVoice kan de sessiegrenscontroller (SBC) zijn voor een Microsoft Teams-tenant, zodat Teams-gebruikers BitVoice-uitbreidingen en uw telefoonlijnen bellen en BitVoice Teams-gebruikers laat overgaan.
Wat u nodig heeft: een openbare naam voor deze server in een domein dat uw Microsoft 365-tenant heeft geverifieerd (sbc.example.com), poort 5061 open in beide richtingen naar Microsofts netwerken 52.112.0.0/14 en 52.120.0.0/14, en een certificaat voor die naam van een openbare autoriteit. Teams-gebruikers hebben een Phone System-licentie nodig.
Stappen
- Instellingen, Certificaat: installeer het certificaat en de privésleutel (PEM). Het wordt meteen gebruikt, voor dit interface en voor SIP over TLS, en BitVoice toont het aan Microsoft.
- Trunks, Toevoegen, begin met Microsoft Teams: voer de openbare naam van de server in. De lade zegt of het certificaat het dekt.
- Kopieer de PowerShell die de lade toont en voer het uit als Teams-beheerder: het voegt de SBC (New-CsOnlinePSTNGateway) toe, een voice-route en -beleid, en een dialplanregel zodat korte extensienummers BitVoice bereiken zoals gedraaid; geef vervolgens elk Teams-gebruiker het beleid en hun nummer.
- Om Teams-gebruikers vanuit BitVoice te bellen, voeg een uitgaande route toe voor hun nummers via de Teams-trunk. Teams vindt zijn gebruikers alleen met nummers met + en het landnummer: als mensen ze zonder + en landnummer bellen, voeg + en het landnummer toe in de route's Voorvoegsel (de call's waarom-spoor zegt zo wanneer een call zonder + en landnummer uitgaat).
Wanneer een Teams-gebruiker een gesprek doorverbindt, vraagt Microsoft aan BitVoice om het te plaatsen (een REFER met zijn eigen proxy, met het nummer of de ID van de Teams-gebruiker): BitVoice belt exact terug wat Microsoft heeft genoemd, met de Referred-By die Microsoft heeft gegeven, zodat een doorverbinding naar een andere Teams-gebruiker even goed werkt als een doorverbinding naar een telefoonnummer. BitVoice stuurt nooit een Replaces-header naar Teams, die Microsoft weigert.
BitVoice stuurt Microsoft elke minuut OPTIONS met de SBC-naam in Contact, zoals Microsoft vereist, en probeert sip, sip2 en sip3.pstnhub.microsoft.com achtereenvolgens. Media zijn altijd versleuteld (SRTP). Health waarschuwt wanneer het certificaat de naam niet dekt, zelfondertekend is of binnenkort verloopt, en wanneer Microsoft stopt met antwoorden.
Dit volgt Microsofts gepubliceerde SBC-vereisten en is getest tegen een gesimuleerde Microsoft-proxy; BitVoice staat niet op Microsofts lijst van gecertificeerde SBC's.
Importeren
/importHaalt extensies, ringgroepen, wachtrijen en trunks over van FreePBX, Asterisk of 3CX; en personen, jacht- en ringgroepen, SIP-trunks, inkomende nummers en kiespatronen van Cisco, Avaya en Mitel. Upload de geëxporteerde bestanden, meerdere tegelijk (een .zip of .tar van hen werkt ook); BitVoice toont precies wat zou veranderen voordat iets wordt toegepast, en de import wordt een revisie die u kunt ongedaan maken op Wijzigingen (hoofdstuk 61).
Overstappen van FreePBX
Het beste bestand is een FreePBX-backup: hierin staat alles, inclusief SIP-wachtwoorden.
- In FreePBX: Beheer → Back-up en herstel → Back-up toevoegen. Vink minstens Core, Belgroepen, Wachtrijen en Voicemail (alle modules is prima) aan, sla op en Voer uit.
- Download de back-up vanuit de rij (het bestand heet bijvoorbeeld
20261001-100000-1790000000-17.0.19-1234567.tar.gz). - Installeer BitVoice op de nieuwe server en voltooi de installatie met één extensie die FreePBX niet gebruikt (bijvoorbeeld 199) en geen telefoonlijn: de import brengt de lijnen mee.
- Op Import (hoofdstuk 68) laat u het .tar.gz-bestand los zoals het is. Lees de voorbeeldweergave: de waarschuwingslijst toont alles wat niet kan worden overgezet.
- Kies Toevoegen. Het is één revisie op Wijzigingen (hoofdstuk 61): herstel het daar als iets er verkeerd uitziet, en importeer opnieuw.
- Verplaats de telefoons: wijs elk naar BitVoice (of stel ze in vanuit Telefoons (hoofdstuk 4)), met hetzelfde extensienummer en SIP-wachtwoord dat ze hadden.
- Test in- en uitgaande gesprekken, en verplaats ten slotte de registratie van de provider (of de nummeroverdracht).
Uitgeprobeerd op een echt systeem: een FreePBX 17.0.33 (de officiële Debian 12-installatie) met vier extensies en voicemail, een PJSIP-trunk die zich registreert, twee uitgaande routes (één met een kiesvoorvoegsel), een ringgroep, een wachtrij met straffen en drie DIDs, die is geback-upt met Backup & Restore met alle modules aangevinkt. De back-up is 70 MB, bijna alles geluidbestanden en oproepgeschiedenis: BitVoice leest het zoals het binnenkomt en houdt alleen de configuratie, dus een back-up van maximaal 512 MB uploadt. Alles hierboven kwam over: de wachtwoorden, de voicemail-PIN's en e-mail, de registratie en codecs van de trunk, de routes met hun voorvoegsels, de ringgroep met voicemail bij niet-beantwoorden, de wachtrij met straffen en de DIDs naar de groep, de wachtrij en de extensie.
Wat wordt overgebracht:
- Extensies: het nummer, de naam, de uitgaande oproep-ID, de ringtijd en het SIP-wachtwoord (BitVoice maakt een nieuw wachtwoord als dat van FreePBX korter is dan 12 tekens: voer het opnieuw in op die telefoon). Voicemail met PIN en e-mailadres (en of berichten zijn gehecht).
- Trunks: PJSIP- en chan_sip-carrieraccounts: server, poort, gebruikersnaam, wachtwoord, registratie, van domein, codecs, oproep-ID. Uitgeschakelde trunks blijven uit.
- Uitgaande routes, in de volgorde van FreePBX: elk patroon wordt voorvoegsel dat wordt toegevoegd. Een route waarvan de patronen verschillende cijfers toevoegen of verwijderen, wordt één BitVoice-route voor elk.
- Ringgroepen: leden, ringtijd, ring-all of een-voor-een (jacht, geheugengebaseerde jacht, eerst beschikbaar), en waar onbeantwoorde oproepen naartoe gaan.
- Wachtrijen: leden met hun straffen, strategie (ring alle, meest recent, minste oproepen, rond, lineair, willekeurig), ringtijd, afhandeltijd en langste wachttijd.
- Inkomende routes: elk DID naar de extensie, ringgroep, wachtrij, voicemailbox of ophangen.
Wat niet wordt overgenomen en in de voorbeeldweergave wordt vermeld: IVR's, tijdvoorwaarden, aankondigingen, volg-mij, aangepaste trunks en contexten, caller-ID-overeenkomst op routes en externe nummers in belgroepen. Bouw deze op basis van Menu's (hoofdstuk 21), Schedules (hoofdstuk 26) en de Volg mij-optie van de extensie. Oudere back-ups (FreePBX 13 en eerder) en een eenvoudige mysqldump asterisk van de FreePBX-database worden op dezelfde manier gelezen.
Andere systemen
Waar elke export als volgt is:
- FreePBX (alleen extensies): Admin → Bulk Handler → Export → Extensies (CSV).
- Asterisk: pjsip.conf of sip.conf.
- 3CX: Gebruikers → Exporteren (CSV).
- Cisco Unified CM: Bulkbeheer → Telefoons → Telefoons exporteren, alle details; of Gebruikers → Gebruikers exporteren. De eerste lijn van de telefoons wordt de extensie, met de naam of label van de lijn als naam.
- Avaya IP Office: Manager → Bestand → Importeren/Exporteren → Exporteren, Gebruikers.
- Avaya Communication Manager:
list stationopgeslagen als CSV; virtuele stations en VDN's worden weggelaten. - Mitel MiVoice Business: Systeemgegevensbeheer → Gebruiker- en apparaatconfiguratie → Exporteren.
Groepen en routes. Upload ze met het personeelsbestand, zodat elke groepsleden worden gevonden op nummer of op naam:
- Cisco Unified CM: Bulkbeheer → Importeren/Exporteren → Exporteren, met Line Group, Hunt List, Hunt Pilot, SIP Trunk en Route Pattern aangevinkt; upload de .tar zoals deze is. Elke hunt pilot wordt een ringgroep met de leden van zijn hunt list's line groups, Top Down en Circular als een voor een, Broadcast als iedereen tegelijk, de RNA-revertijd als de ringtijd. Route patronen worden uitgaande routes:
9.[2-9]XXXXXXmet PreDot is patroon9[2-9]XXXXXXwaarbij de 9 wordt weggehaald;!wordt een punt aan het einde. Patronen die@(het nationale plan) gebruiken, worden opgesomd om handmatig te schrijven. - Avaya IP Office: exporteer Hunt Group en Gebruikers (beide zijn CSV zonder koptekstrij). Groepsmodus is iedereen tegelijk; Hunt, Rotary en Longest Waiting rinkelen een voor een.
- Avaya Communication Manager:
list hunt-groupopgeslagen als CSV, met de leden in een Ledenkolom of een apart ledenbestand. - Mitel MiVoice Business: Ringgroepen en Ringgroep Toewijzing (Cascade is een voor een, Ring All is iedereen tegelijk), en Huntgroepen.
Trunks van deze exports komen uitgeschakeld en zonder wachtwoorden binnen, omdat de exports deze niet bevatten. Routes gaan uit via de geïmporteerde trunk met dezelfde naam; een route waarvan de trunk hier niet is, wordt weggelaten en vermeld. Roterende en langste-ledige rinkeling is dichter bij een wachtrij dan een ringgroep: de voorbeeldweergave zegt dit, zodat u het tot een wachtrij kunt maken.
Deze exports (alleen een FreePBX-back-up) bevatten geen SIP-wachtwoorden, dus elke extensie krijgt een nieuw wachtwoord; voicemail-PIN's, namen en e-mailadressen worden overgezet wanneer de export deze heeft. Cisco-, Avaya H.323/DCP- en Mitel-telefoons draaien de eigen software van de fabrikant en kunnen niet worden ingesteld door BitVoice: de import zegt hoeveel zijn opgesomd. Cisco-telefoons kunnen worden herschreven met Cisco's multiplatform (SIP)-firmware; Avaya J100- en Mitel 6800/6900-telefoons kunnen zich handmatig registreren bij BitVoice in SIP-modus.
Configuratie als code
Alles wat de schermen doen, gaat via de REST API van BitVoice, dus alles kan worden geautomatiseerd, in Git worden opgeslagen of met Terraform worden beheerd. De API wordt beschreven voor tools op /api/openapi.json (/api/openapi.json).
API-tokens
Gemaakt op Beheerders (hoofdstuk 57): één per programma, alleen-lezen of in staat om alles te wijzigen. Verstuur het als Authorization: Bearer bv_.... Het wordt één keer getoond; herroep het wanneer het niet langer nodig is. De wijzigingen van een token worden getoond in Wijzigingen en het auditlog onder de naam ervan.
curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions
Terraform of OpenTofu
Het repository's deploy/terraform toont extenties, ringgroepen en routes die worden beheerd met de generieke REST-provider: plan toont wat zou worden gewijzigd, apply maakt de wijziging. De provider controleert het certificaat van BitVoice; zolang BitVoice nog steeds zijn eigen zelf-ondertekend certificaat gebruikt, kunt u er één krijgen van Let's Encrypt (Instellingen, Certificaten) of bitvoice_insecure = true instellen op een netwerk dat u vertrouwt (op Linux werkt SSL_CERT_FILE dat naar het certificaat van BitVoice wijst ook). Resources worden gematcht met de id die BitVoice eraan geeft, dus een tweede plan toont geen wijzigingen totdat het bestand of de schermen iets wijzigen.
Configuratie vanuit Git
In Instellingen (hoofdstuk 14), Configuratie vanuit Git, leest BitVoice de configuratie uit een bestand in een repository elke paar minuten en toont ofwel wat verschilt of maakt de wijzigingen. Begin het bestand met Exporteren voor Git, dat wachtwoorden weglaat; BitVoice houdt zijn eigen wachtwoorden bij, dus geheimen komen nooit in de repository terecht.
Asterisk-compatibiliteit (AMI, ARI en AGI)
Hulpmiddelen geschreven voor Asterisk kunnen BitVoice besturen: CRMs, wallboards, klik-op-bellknoppen, callrecorderscontrollers. Schakel het in in Instellingen (hoofdstuk 14), Asterisk-compatibiliteit. Hulpmiddelen zien oproepen als kanalen met namen zoals PJSIP/100-..., zoals op Asterisk.
AMI
Het managerinterface op TCP-poort 5038 (AMI luistert naar: standaard alleen naar deze computer). Ondersteund:
| Type | Namen |
|---|---|
| Acties | Inloggen (plain of MD5-uitdaging), Ping, Gebeurtenissen, Filter, LijstOpdrachten, CoreShowChannels, Status, CoreStatus, CoreInstellingen, PJSIPShowEndpoints, Extensiestatus, ExtensiestatusLijst, ApparaatstatusLijst, Getvar, Origineer, Redirect, BlindTransfer, Hangup, Uitloggen |
| Wachtrijen | Wachtrijstatus, WachtrijSamenvatting, WachtrijPauze, WachtrijToevoegen en WachtrijVerwijderen (ze tekenen een agent in of uit alle wachtrijen), Agenten |
| Overig | GeparkeerdeOproepen; ConfbridgeLijstKamers, ConfbridgeLijst, ConfbridgeTrappen, ConfbridgeDempen, ConfbridgeOntdempen, ConfbridgeVergrendelen, ConfbridgeOntgrendelen; PostbusAantal, PostbusStatus; PauzeerBewaking, HervatBewaking; GebruikerGebeurtenis; OpnieuwLaden (niets om opnieuw te laden: wijzigingen worden direct toegepast) |
| Gebeurtenissen | NieuwKanaal, NieuweStatus, Ophangen, DialBegin, DialEinde, AanHouden, Loslaten, PeerStatus, ContactStatus, BerichtInWachtrij, ConfbridgeDeelnemen, ConfbridgeVerlaten, ConfbridgeEinde, GebruikerGebeurtenis |
Filter houdt alleen de gebeurtenissen die overeenkomen met een reguliere expressie (Event: Newchannel), of laat ze vallen met ! als eerste, net zoals bij Asterisk. Er is geen Asterisk-opdrachtregel: Command geeft een foutmelding weer.
ARI
At /ari/, met basisauthenticatie of ?api_key=user:secret:
| Aanvraag | Wat het doet |
|---|---|
GET /ari/channels | de lopende gesprekken |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | toon 100, dan bel de nummer |
DELETE /ari/channels/{id} | ophangen |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | stuur het gesprek naar 102 |
/ari/endpoints, /ari/bridges, /ari/asterisk/info | telefoons, bruggen, versie |
/ari/events | een WebSocket van gebeurtenissen |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | een kanaal dat geluid naar een programma verstuurt via RTP (ulaw of alaw over UDP); de lokale poort staat in het kanaal's UNICASTRTP_LOCAL_PORT |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid> | hetzelfde via AudioSocket |
POST /ari/bridges/{call}/addChannel?channel={id} | het externe mediakanaal voegt zich bij een gesprek: het hoort beide partijen en beide horen het; met role=listener hoort niemand het (voor live transcriptie) |
POST /ari/bridges/{call}/removeChannel?channel={id} | het verlaat het gesprek; de twee partijen praten rechtstreeks weer |
Een extern media-kanaal dat niet binnen een minuut aan een oproep wordt toegevoegd, wordt gesloten.
ARI-toepassingen
Een ARI-toepassing (Asterisk's Stasis()) voert oproepen uit vanuit uw eigen programma. Voeg deze toe onder ARI-toepassingen in Instellingen, Asterisk-compatibiliteit: een naam, een optioneel nummer extensies die worden gebeld, en een fallback. Stuur vervolgens oproepen naar deze toepassing zoals naar elk ander doel: een inkomende route, een menu-toets, een schema.
Uw programma maakt verbinding met /ari/events?app=NAME (een WebSocket, met de inloggegevens in ?api_key=user:secret). Elk gesprek dat de applicatie bereikt, wordt beantwoord en arriveert als StasisStart, met het kanaal; het programma voert het dan uit:
| Aanvraag | Wat het doet |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | speelt prompts af van Sounds (sound:), digits:, number:, tone:beep of een opgeslagen opname (recording:); PlaybackStarted en PlaybackFinished volgen. DELETE /ari/playbacks/{id} stopt het. |
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23 | neemt (wav) op in de opgeslagen opnames; RecordingStarted en RecordingFinished. POST /ari/recordings/live/{name}/stop beëindigt het, DELETE verwijdert het. |
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name} | de opgeslagen opnames |
POST /ari/channels/{id}/dtmf?dtmf=123 | verstuurt toetsen naar de beller |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | de variabelen van het kanaal |
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETE | mengbruggen: iedereen in één hoort iedereen anders |
POST /ari/channels/{id}/continue?extension=101 | laat het gesprek gaan: naar die extensie, ringgroep of wachtrij, anders de fallback |
DELETE /ari/channels/{id} | legt de hoorn neer |
POST /ari/channels?endpoint=PJSIP/101&app=NAME | laat 101 overgaan; beantwoord, het komt de applicatie binnen |
GET /ari/applications | de applicaties, of een programma verbonden is, en hun kanalen |
POST /ari/channels/{id}/mute?direction=in, DELETE .../mute | dempt wat de beller zegt (in), wat ze horen (out) of beide |
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silence | wachtmuziek naar de beller (ChannelHold, ChannelUnhold), of stilte |
GET/POST /ari/channels/{id}/variables | meerdere variabelen tegelijk (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | geeft het kanaal door aan een andere applicatie (StasisEnd, dan StasisStart daar; ApplicationMoveFailed als geen programma het uitvoert) |
POST /ari/channels/{id}/snoop?spy=in&app=NAME | een afluisterkanaal in een applicatie die hoort wat de beller zegt, om het op te nemen (POST /ari/channels/{snoop}/record) |
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, dan POST .../dial | een kanaal dat wacht totdat het wordt gekozen; Dial-gebeurtenissen vertellen hoe het overgaan verloopt, en het komt de applicatie binnen als het wordt beantwoord |
GET /ari/channels/{id}/rtp_statistics | verstuurd en ontvangen pakketten en bytes, verlies en jitter |
POST /ari/playbacks/{id}/control?operation=pause | pauzeert, hervat, herstart, keert terug en gaat vooruit (drie seconden) |
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId} | wachtmuziek naar een brug, opname van de mix, de variabelen |
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mute | kopieert een opname; pauzeert of dempt een live opname |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilter | abonnementen (kanaal:, brug:, endpoint:PJSIP/100, deviceState:) en gebeurtenisfilters ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | telefoontoestellen (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) en aangepaste toestanden die programma's zelf bijhouden (DeviceStateChanged); telefoontoestand arriveert ook als EndpointStateChange |
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0 | voicemailtellers voor extensies (100@default), en postvakken die een programma zelf bijhoudt |
GET /ari/sounds | de prompts van Sounds, in de talen waarin ze zijn opgenomen, en de geluiden die zijn geüpload voor AGI-scripts |
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hi | een tekstbericht naar de telefoon van extensie 100 |
POST /ari/events/user/{name}?application=NAME | een gebruikersgebeurtenis naar een applicatie (ChannelUserevent) |
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modules | ping, globale variabelen, en onderdelen van BitVoice die zijn vernoemd naar de modules waarvoor ze staan |
BitVoice beantwoordt elke bewerking van Asterisk's gepubliceerde ARI (de test suite roept elk een aan en controleert wat terugkomt heeft de velden die Asterisk's beschrijving vereist). Een paar hebben hier niets te doen en beantwoorden 501 met de reden: laadbare modules (BitVoice is één programma), Sorcery's dynamische configuratie (BitVoice is ingesteld in zijn webinterface), logkanalen, brugvideo's (ARI-bruggen dragen geluid), het verzenden van REFER naar telefoons en het claimen van broadcastgesprekken. Een snoop hoort alleen de beller (spy=in), en whisper wordt niet aangeboden: brug een kanaal met die van hen om met hen te praten. Kanaalgebeurtenissen voor elke oproep (ChannelCreated, ChannelStateChange, ChannelDestroyed) gaan naar elk programma, net als bij Asterisk's subscribeAll=true. ARI-bibliotheken die het interface lezen van de server (ari-client en anderen) vinden het op /ari/api-docs/resources.json. Welke programma's bewaren nu, onder ARI-toepassingen in Instellingen, toont de toepassingen, aangepaste apparaatstatussen, postvakken, globale variabelen en bruggen die programma's hebben ingesteld.
Ingedrukte toetsen arriveren als ChannelDtmfReceived; een beller die ophangt als StasisEnd. Wanneer geen programma is verbonden, gaat de oproep naar de fallback; wanneer de verbinding van het laatste programma wordt gesloten, gaan de oproepen daar na vijf seconden (tijd om opnieuw te verbinden) ook naartoe. Voor oproeplogica zonder een eigen programma, gebruikt u Scripts (hoofdstuk 27) die de hele oproep uitvoeren; om de audio over te dragen aan een programma, Voice bots (hoofdstuk 24).
AGI-scripts
Een AGI-script (Asterisk's AGI() en EAGI()) voert een gespreksopdracht uit per opdracht, dus IVR's en integraties die zijn geschreven voor Asterisk (phpagi, pyst2, Asterisk-Java, elke FastAGI-server) blijven werken. Voeg het toe onder AGI-scripts in Instellingen, Asterisk-compatibiliteit:
| Veld | Wat het is |
|---|---|
| Scriptnaam | hoe bestemmingen het noemen |
| Adres | een FastAGI-server, agi://host:4573/script?x=1 (poort 4573 als er geen is opgegeven), hagi://domain/script voor de servers in de SRV-records _agi._tcp van de domeinnaam, in prioriteitsvolgorde, of de bestandsnaam van een programma in de map AGI-programma's |
| Argumenten | doorgegeven als agi_arg_1, agi_arg_2 … |
| Nummer om het te bellen | optioneel: extensies bellen het als elk nummer |
| Fallback | waar het gesprek naartoe gaat als het script eindigt zonder een nummer te kiezen, of niet bereikbaar is |
| Langste uitvoering | een script dat langer loopt, wordt gestopt (standaard een uur) |
| EAGI | voor een programma: de audio van de beller (8 kHz, getekend 16-bit, little-endian) op bestandsdescriptor 3. Linux en macOS |
Test verbindt met de server (of controleert of het programma aanwezig en uitvoerbaar is) zonder een oproep te verzenden. Verzend vervolgens oproepen naar het zoals elke bestemming.
BitVoice beantwoordt de oproep, verzendt de agi_-variabelen (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) en voert de opdrachten uit, antwoordend als Asterisk 20 doet (de test suite vergelijkt elk antwoord met een opname van Asterisk's):
| Opdrachten | Notities |
|---|---|
| ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSE | HANGUP met een kanaalnaam alleen eindigt de oproep van het script |
| STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGIT | ontsnappingsymbolen, monstersoffsets en eindposities zoals in Asterisk; snel vooruit, rewind en pauzeren in CONTROL STREAM FILE |
| SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIME | met een spraakdienst in Instellingen, AI worden ze gesproken; zonder, worden de cijfers gesproken vanaf Geluiden |
| RECORD FILE | s=N stilte, een piep, ontsnappingsymbolen; het bestand belandt in de geluidsbibliotheek |
| SET VARIABLE, GET VARIABLE, GET FULL VARIABLE | CALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … en ${NAME}-uitdrukkingen |
| DATABASE GET, PUT, DEL, DELTREE | Asterisk's database (AstDB), behouden door BitVoice en getoond onder AGI-database |
| SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSIC | SET EXTENSION is waar de oproep naartoe gaat wanneer het script eindigt |
| SPEECH CREATE … SPEECH RECOGNIZE | gebruikt de spraak-naar-tekst van Instellingen, AI: het resultaat is wat de beller zei, als text0, voor het script om te vergelijken; grammatica's worden geaccepteerd en niet gebruikt |
| EXEC | Answer, Hangup, Playback, Background, Read, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (belt elk nummer op; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Andere antwoorden -2, zoals Asterisk doet voor een ontbrekende toepassing |
BitVoice heeft geen dialplan: waar een script zou doorgaan in Asterisk's dialplan (SET EXTENSION, EXEC Goto), gaat de oproep naar dat nummer hier (een bestemming, ringgroep, wachtrij, menu of een extern nummer via de uitgaande routes) wanneer het script eindigt. Scripts bellen nooit noodnummers. Wanneer de beller ophangt, krijgt een FastAGI-script HANGUP en een programma SIGHUP; alleen opdrachten die zijn toegestaan op een dode verbinding, worden dan uitgevoerd (511 voor de anderen), en de verbinding wordt 30 seconden later gesloten als het script doorgaat. Elke uitvoering wordt getoond onder Laatste uitvoeringen met zijn VERBOSE-regels en gaat naar de gebeurtenisstroom als agi.ran.
Geluiden voor AGI-scripts. Scripts spelen geluiden af met de namen die ze op Asterisk gebruiken: upload ze onder Geluiden voor AGI-scripts met een map (custom/welcome; es/custom/welcome voor bellers in het Spaans). WAV, MP3 en Asterisk's .gsm, .ulaw, .alaw, .sln en .sln16 worden geaccepteerd; een pad zoals /var/lib/asterisk/sounds/en/custom/welcome.gsm vindt custom/welcome. Asterisk's digits/0–digits/9, beep, silence/N en een paar anderen (vm-goodbye, invalid, please-hold) spelen BitVoice's eigen prompts en tonen af. Wat scripts opnemen, wordt bewaard in dezelfde bibliotheek, gemarkeerd opgenomen door een script, voor de dagen die u kiest (30 standaard). De bibliotheek bevat maximaal 1 GB.
Programma's. Een programma draait op deze server met de rechten van BitVoice, dus het wordt nooit via het web geüpload: kopieer het naar de map AGI-programma's die op het scherm wordt weergegeven (DATA/agi-bin) en maak het uitvoerbaar. Het krijgt alleen PATH en AST_AGI_DIR van de omgeving, draait in die map en wat het naar de standaardfout schrijft, gaat naar het serverlog. FastAGI verzendt opdrachten in plat TCP: houd de server op deze computer of een privénetwerk.
Inloggen
Elke inloggegevens heeft een Gebruikersnaam en Geheim. Inloggegevens zijn alleen-lezen tenzij ze zijn gemarkeerd als Kan gesprekken wijzigen. Houd AMI op deze computer tenzij het hulpmiddel ergens anders wordt uitgevoerd: AMI is plat, ongecodeerd TCP.
AI-assistenten (MCP)
Een AI-assistent zoals Claude, ChatGPT, Gemini of Cursor kan BitVoice gebruiken via het Model Context Protocol (MCP), de standaardmanier waarop assistenten andere programma's bereiken. Vraag het in gewone woorden: wie belde vanmorgen en heeft iemand hen teruggebeld, wat zei de beller van de tandarts, waarom ging de 9-uur-oproep naar de voicemail, is de providerlijn uit. Met uw toestemming kan het ook een oproep plaatsen, een tekstbericht verzenden of een oproep beëindigen.
BitVoice is de MCP-server, op https://YOUR-SERVER/mcp (Streamable HTTP; het adres wordt weergegeven in Instellingen). Niets wordt naar een AI-service verzonden, tenzij een assistent die u hebt verbonden ernaar vraagt, en dan alleen wat erom is gevraagd.
Inschakelen
In Instellingen (hoofdstuk 14), AI-assistenten (MCP):
- Laat AI-assistenten verbinden: uitgeschakeld door default. Uit,
/mcpantwoordt niets behalve dat het uitgeschakeld is. - Laat assistenten handelen: uitgeschakeld door default. Uit, assistenten kunnen alleen lezen, ongeacht hun token. Aan, een assistent wiens token dingen kan veranderen, krijgt ook de tools die handelen.
De kaart toont het adres en de instellingen voor de meest voorkomende assistenten en lijst alle tools op.
Wat een assistent kan doen
Lezen (elke token):
- calls_now: de oproepen die op dit moment plaatsvinden.
- call_history: verleden oproepen, doorzocht op nummer of naam, op richting en vanaf een tijd, met de reden waarom elke oproep naar een bepaalde bestemming ging.
- extensions: namen, nummers, afdelingen, e-mail; nooit een telefoontoegangscode.
- phones_connected: welke telefoons geregistreerd zijn, van waar.
- voicemail, search_transcripts: berichten en wat er werd gezegd op opgenomen oproepen.
- queues, trunks, health: wachtrijen nu, de providerlijnen, de eigen controles van BitVoice.
- directory, text_messages: het bedrijfs telefoonboek en tekstgesprekken.
Handelen (met Laat assistenten handelen, en een token die dingen kan veranderen):
- place_call: klik om te bellen. De telefoon van de afdeling belt eerst; wanneer iemand daar opneemt, belt BitVoice het nummer voor hen alsof ze het zelf hadden gedraaid, zodat hun routes, beller-ID en limieten van toepassing zijn.
- send_text: een tekstbericht van een van de tekstnummers van de organisatie.
- hang_up_call: beëindigt een lopende oproep.
Elk hulpmiddel is een van de API's eigen routes, uitgevoerd als de assistent: het ziet en verandert precies wat zijn token mag, dezelfde controles zijn van toepassing en zijn wijzigingen worden opgenomen in het auditlog onder zijn naam. Een antwoord wordt beperkt tot ongeveer 60.000 tekens; de assistent wordt gevraagd zijn zoekopdracht te verfijnen wanneer een zoekopdracht wordt afgekapt.
Verbinding maken met een assistent
Assistenten die inloggen (Claude.ai en ChatGPT aangepaste connectors, en anderen): voeg een connector toe met het adres van BitVoice. De assistent opent de inlogpagina van BitVoice in uw browser; log in zoals gewoonlijk (wachtwoord, tweestapsverificatie, eenmalige aanmelding), en de pagina zegt welke assistent vraagt en waar hij naar terugkeert. Een beheerder kan het toestaan om te handelen of Alleen lezen toestaan; de assistent van een kijker kan alleen lezen. Niet toestaan stuurt het weg met niets. De toegang is dan op Beheerders (hoofdstuk 57), API-tokens, als AI-assistent, ingelogd: het werkt alleen op /mcp en nooit voor de rest van de API, duurt een uur en vernieuwt zichzelf voor maximaal 30 dagen van niet gebruiken. Intrekken beëindigt het onmiddellijk. Deze assistenten bereiken BitVoice vanaf hun eigen servers, dus het heeft een adres nodig dat vanaf het internet bereikbaar is en een certificaat dat ze vertrouwen (Let's Encrypt, in Certificaat (hoofdstuk 14)).
Assistenten die een token krijgen (Claude Code, Cursor, VS Code en andere tools die een adres en een header accepteren): maak een API-token aan op Beheerders (hoofdstuk 57), alleen lezen tenzij het moet handelen, en geef het als Authorization: Bearer bv_...:
claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."
Assistenten die een programma starten (Claude Desktop, en anderen die een opdracht accepteren): het BitVoice-programma bevat een brug, bitvoice mcp, die elk bericht naar de server doorgeeft via HTTPS. Geef het het adres van de server en de token:
{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }
With BitVoice's own certificate (not one from an authority), the bridge refuses it and prints its SHA-256: check it is your server's, then add "-pin", "THAT-SHA256" to the arguments. Only that certificate is then accepted.
Veilig om aan te laten
- Alleen tokens: een inlogsessie van een browser naar BitVoice bereikt nooit
/mcp, en een pagina op een andere site wordt geweigerd (Origin), dus een webpagina kan geen assistentverbinding gebruiken. - Assistenten kunnen onjuist zijn. Geef ze een alleen-lezen-token tenzij ze moeten handelen; alles wat ze deden, staat in het auditlog, en het plaatsen van een oproep belt altijd eerst iemands telefoon.
- Inloggen via OAuth 2.1 zoals MCP specificeert: de assistent registreert zichzelf (openbare clients alleen, met PKCE), keert alleen terug naar de adressen die het heeft geregistreerd (https, of http naar zijn eigen computer), en een code is één keer geldig, voor een minuut.
- Een organisatie die wordt gehost op iemands BitVoice geeft zijn assistenten tokens; inloggen via OAuth daar is nog niet geprobeerd.
Archief
/archiveHet archief bewaart kopieën van opnames, voicemail en de configuratie ergens anders: een Amazon S3-bucket (of een S3-compatibele opslag) of een Azure Blob Storage-container. Als de schijf van deze server verloren gaat, heeft het archief ze nog steeds.
Instellen
- Op Archief (hoofdstuk 72), kies Waar archiveren: Amazon S3 of Azure.
- Voor S3: de Bucket, de Regio, een optionele Map in de bucket en Eindpunt (voor S3-compatibele opslag), en een Toegangs-ID en Geheime toegangssleutel. Kopieer het beleid geeft de enige machtiging die BitVoice nodig heeft, om aan de gebruiker of rol te koppelen.
- Voor Azure: een Container SAS-URL met schrijfmachtiging, en een optionele Map in de container.
- Kies wat u naast de configuratie wilt kopiëren: Oproepopnames, Voicemail, of beide.
Wat gebeurt
Elke tien minuten kopieert BitVoice nieuwe opnames en berichten die nog niet in het archief staan, en eenmaal per dag een gedateerde kopie van de configuratie (config/2026-10-13.json). De pagina toont de laatste uitvoering, de laatste succesvolle uitvoering en eventuele fouten.
Het verwijderen van iets hier (door retentie of handmatig) verwijdert de kopie in het archief niet: stel de levensduurregels van de bucket of container in voor de duur dat het archief dingen bewaart.
Wettelijke retentie
/holdsEen wettelijke retentie houdt oproeprecords, opnames en voicemail die voor een zaak nodig kunnen zijn, en voorkomt dat iemand ze verwijdert, totdat deze is vrijgegeven. Gebruik deze wanneer een advocaat vraagt om records te bewaren.
Een hold toevoegen
Op Rechtelijke holds (hoofdstuk 73), druk Toevoegen:
| Veld | Wat het is |
|---|---|
| Naam | hoe de zaak heet |
| Reden | waarom, voor het dossier |
| Nummers | de interne en externe nummers die het dekt (101, +15551234567), of Alles |
| Van, Tot | de datums die het dekt; leeg voor geen limiet |
Terwijl een retentie van kracht is
- Retentie laat wat het dekt met rust, ongeacht de leeftijd.
- Niemand kan een gehouden oproep, opname of voicemail verwijderen, inclusief beheerders.
- Gehouden oproepen tonen een slot in Oproepgeschiedenis (hoofdstuk 47).
Vrijgeven
Vrijgeven maakt wat de retentie heeft bewaard weer onderworpen aan de retentie-instellingen: dingen ouder dan de retentie worden verwijderd bij de volgende schoonmaak. Vrijgegeven retentie blijft in de lijst staan, met wanneer en door wie, en het toevoegen en vrijgeven van retentie wordt opgenomen in het auditlog.
Metrische gegevens: Prometheus, OpenTelemetry, Grafana, SNMP en gespreksrecords
/settingsPrometheus scrapet /metrics op het webadres. Maak een API-token aan onder Beheerders (een kijkertoken is voldoende) en geef het aan Prometheus als zijn bearer-token:
scrape_configs:
- job_name: bitvoice
scheme: https
authorization: { credentials: bv_... }
static_configs: [{ targets: ['pbx.example.com'] }]
Het leest gesprekken in uitvoering (per staat), beëindigde gesprekken (per richting en resultaat), spreektijd, geregistreerde telefoons, elke trunkstatus en ronde reistijd, wachtende bellers en agenten in elke wachtrij, ontvangen en verloren geluidspakketten, een histogram van gesprekskwaliteitsscores (MOS) en geboekte callbacks. Tellers beginnen opnieuw vanaf nul wanneer BitVoice opnieuw start, zoals Prometheus verwacht.
OpenTelemetry: in Instellingen, Metrische gegevens, voer het OTLP/HTTP-adres van een collector in (en een header zoals Autorisatie, met zijn waarde) om dezelfde metingen elke minuut (of zo vaak als u instelt, van 15 seconden) te pushen. Push nu controleert de opgeslagen instellingen.
Grafana-dashboard downloadt een klaar dashboard: importeer het in Grafana en selecteer uw Prometheus-gegevensbron.
SNMP
Voor bewakingsystemen die SNMP spreken (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), schakel de SNMP-agent in Instellingen in. Het beantwoordt SNMPv2c GET, GETNEXT en GETBULK, alleen-lezen, op UDP-poort 161 (of een andere die u kiest: poort 161 heeft het recht nodig om lage poorten te openen op Linux) en alleen vanaf de netwerken die u opgeeft. Kies een gemeenschap die niet openbaar of privé is: het is een wachtwoord dat in duidelijke tekst over het netwerk gaat.
Het serveert de standaard systeemgroep (sysDescr, sysUpTime, sysContact, sysName, sysLocation) en BitVoice-eigen waarden onder de basis-OID: gesprekken in uitvoering en rinkelend, geregistreerde telefoons, trunks omhoog en ingesteld, wachtende bellers, beëindigde gesprekken, spreektijd, verloren pakketten, gemiddelde gesprekskwaliteit, een trunktabel (naam, omhoog of omlaag, latentie) en een wachtrijtabel (wachtend, agenten, beantwoord, verlaten). Download BITVOICE-MIB naast de instellingen voor uw bewaking om te laden. BioDream LLC heeft nog geen ondernemingsnummer, dus de standaardbasis-OID is in Net-SNMP's experimentele ruimte; plaats er een onder uw eigen ondernemingsnummer om het stabiel te houden.
Traps (SNMPv2) gaan naar elke ontvanger die u opgeeft wanneer een trunk naar beneden gaat of terugkomt, een noodgesprek wordt gemaakt of een server van een cluster ophoudt met antwoorden. SNMPv3 wordt nog niet ondersteund.
Gespreksrecords elders
Naast Gesprekslijst kan elk record, zodra het gesprek eindigt, naar:
- Syslog (RFC 5424, als JSON) over UDP, TCP of TLS, voor een logserver of een SIEM.
- Een CSV-bestand per dag, met Asterisk's Master.csv-kolommen, zodat de rapporten en factureringstools gemaakt voor Asterisk het kunnen lezen. Download de bestanden aan de voet van Gesprekslijst (hoofdstuk 47). Cellen die een spreadsheet zou uitvoeren als een formule, worden veilig geschreven.
- Een PostgreSQL-tabel in een andere database, gemaakt de eerste keer met Asterisk's
cdr-kolommen (calldate, clid, src, dst, duration, billsec, disposition, uniqueid…) plus BitVoice's richting, trunk, kosten en MOS. Elk gesprek wordt één keer geschreven.
Verstuur een testrecord probeert de syslog-server en de database met de opgeslagen instellingen.
Oproepgenerator
/loadtestDe oproepgenerator plaatst echte oproepen met echt geluid in BitVoice vanaf deze computer: om te zien hoeveel oproepen een server aankan en hoe goed, of om na een wijziging te controleren of oproepen nog steeds gaan waar ze moeten.
Een test uitvoeren
| Instelling | Wat het is |
|---|---|
| Nummer om te bellen | een nummer binnen BitVoice: een extensie, een groep, een wachtrij, een menu |
| Gesprekken komen van | het nummer van de beller dat wordt getoond |
| Beantwoorden als | een extensie die de generator zelf beantwoordt; of niemand, wanneer het nummer zelf beantwoordt (een menu, de echotest) |
| Gesprekken | het totale aantal |
| Tegelijk | het maximum aantal gelijktijdige gesprekken, tot 2.000. Elk doorgestuurd gesprek neemt mediapoorten in beslag van Media van en Media naar (Instellingen): de standaard 10000-20000 biedt ongeveer 1.800, dus breid deze uit voor meer |
| Nieuwe per seconde | hoe snel ze starten |
| Elke duurt (s) | hoe lang elk gesprek duurt |
Lees de resultaten
| Resultaat | Wat het zegt |
|---|---|
| Beantwoord, Mislukt | en Waarom gesprekken mislukten, per reden |
| Beantwoordtijd, mediaan en 95% | hoe lang bellers hebben gewacht |
| Audio verloren | het aandeel van geluidspakketten dat nooit is aangekomen |
| Audio-score | een schatting van het geluid (MOS): 4 en hoger is goed, onder 3,6 is slecht |
| Jitter, 95% van gesprekken | hoe ongelijkmatig het geluid terugkwam (RFC 3550 interarrival jitter, gemiddeld over elk gesprek); telefoons glad maken tot ongeveer 20 ms |
| Langste onderbreking, slechtste gesprek | de langste wachttijd tussen twee geluidspakketten in een gesprek; deze komen elke 20 ms, dus een stilstand van de server wordt hier weergegeven |
| Geheugenuitstelpauzes, langste pauze | hoe vaak en hoe lang de Go-runtime alles pauzeerde om geheugen op te ruimen tijdens de uitvoering |
| Gesprekken in behandeling in de loop van de tijd | een grafiek van de belasting |
SIP-trace
/traceDe SIP-trace toont de berichten die BitVoice verstuurt en ontvangt, live: de eerste plaats om te kijken wanneer een telefoon niet kan registreren of een oproep mislukt, en wat een ondersteuningsdesk van een provider zal vragen.
Een bericht vinden
BitVoice houdt de laatste 2.000 berichten in het geheugen (niets wordt naar schijf geschreven en ze zijn na een restart verdwenen). Typ een deel van een nummer, een adres of een Call-ID in het filter. Druk op Vernieuwen voor de nieuwste.
Kies een bericht om het in zijn geheel te zien en, ernaast, de oproepstroom: elk bericht van dezelfde oproep in volgorde, tussen de telefoon, BitVoice en de provider, zoals in de figuur.
Een trace lezen
| U ziet | Het betekent meestal |
|---|---|
| REGISTER beantwoord met 401, dan niets | de telefoon heeft geen wachtwoord of heeft het verkeerde wachtwoord |
| REGISTER beantwoord met 403 | het adres is geblokkeerd, of de telefoon meldt zich aan als een andere extensie |
| INVITE beantwoord met 404 | geen route komt overeen met het gedialde nummer (Oproeproutering (hoofdstuk 8)) |
| INVITE beantwoord met 403 door de provider | de provider weigert de caller ID of het nummer |
| 486 | de andere kant is bezet |
| 488 | de twee kanten hebben geen codec gemeen (Codecs (hoofdstuk 66)) |
| 200 OK, dan BYE na ongeveer 30 seconden | de ACK is nooit aangekomen: een router ertussen herschrijft of verwijdert berichten (schakel de "SIP ALG" uit) |
| Een oproep verbindt, maar niemand hoort iets | het geluid is geblokkeerd: controleer het openbare adres in Instellingen en de mediapoorten in de firewall |
Openbare veiligheid: de lab-track
Het 911-antwoordpuntprofiel, de radiodispatchconsole en NG911 Core Services. Ze zijn een lab- en ontwerp-partnertrek: gebouwd en getest tegen opgenomen vastleggingen, voorbeeldgegevens en stand-ins, maar niet gecertificeerd voor live 911 of radiodispatch en nog niet uitgeprobeerd met een live ESInet, P25-systeem of CAD. Ze zijn uit het menu totdat ze in Instellingen zijn ingeschakeld. Noodoproepen van uw eigen telefoons (Aan de slag) maken deel uit van elk telefoonsysteem.
911-gesprekken (het 911-profiel)
/psapBitVoice beantwoordt 911-gesprekken als het gespreksbehandelingssysteem van een PSAP: gesprekken van het noodnetwerk (het ESInet, NENA i3) komen binnen met de locatie van de beller en de gegevens van het netwerk, de call-taker ziet deze meteen, en CAD wordt geïnformeerd wanneer het gesprek wordt beantwoord.
Instellen.
- Op Trunks (hoofdstuk 7) voegt u de trunk van uw ESInet-provider (of de NG911-kern ESRP) toe en schakelt u Vanuit ESInet in.
- In Call routing (hoofdstuk 8) stuurt u de oproepen naar uw call-takers: een wachtrij, of een ringgroep.
- Op 911 oproepen voert u uw agentschap-ID in (een domein, zoals
psap.county.example.gov) en wat CAD nodig heeft: het adres en de poort waarop de ALI-luisteraar is geconfigureerd, en het EIDO-adres.
Wanneer een 911-oproep overgaat, wordt deze weergegeven op 911 oproepen met:
- het adres dat het netwerk heeft verstrekt (civiel adres), en de locatie met de mate van zekerheid (binnen zo veel meter), weergegeven op de kaart met de onzekerheidskring (zodra een kaart is ingesteld, hieronder), en een link naar OpenStreetMap;
- de provider, het type dienst (draadloos, VoIP, residentieel, commercieel), het apparaat en de abonnee, wanneer de oproep deze heeft meegebracht (Additional Data, RFC 7852);
- alles wat er mis is gegaan bij het lezen ervan.
De locatie wordt doorgegeven in de oproep (als waarde), of als een referentie die BitVoice ophaalt met HELD. Een oproep met een referentie heeft Opnieuw zoeken locatie: BitVoice vraagt opnieuw, voor een beller die in beweging is of wiens eerste fix onnauwkeurig was.
Wanneer een opnieuw zoeken de locatie wijzigt, geeft de locatiecontrole aan welke locatie eerst moet worden weergegeven en waarom: de nieuwe locatie als regel; de eerste locatie wanneer deze een nauwkeurige apparaatfix was (GPS, binnen 100 m) minder dan twee minuten oud en de nieuwe locatie onnauwkeuriger is; en beide wanneer twee locaties meer dan hun onzekerheid verschillen, zodat de call-taker de beller vraagt. De eerste locatie blijft op de oproep, hoe dan ook.
Wanneer een call-taker opneemt, ontvangt CAD, elk afzonderlijk zodat een CAD dat uitvalt nooit de oproep tegenhoudt:
- de ALI-uitstroom: de tekstblokken die CAD-systemen lezen (callback-nummer, dienstklasse, adres, locatie en onzekerheid, provider), verzonden via TCP;
- de EIDO, het incidentendocument van NENA-STA-024, via HTTPS POST (met een bearer-token als ingesteld). EIDO op een oproep toont deze. Het adres moet
httpszijn, of gewoonhttpalleen naar een CAD op dezelfde computer (http://127.0.0.1:…): een EIDO bevat de locatie van de beller en het token, dus het mag nooit ongecodeerd over een netwerk worden verzonden, inclusief een privé-netwerk. Hetzelfde geldt voor Verzend radiogebeurtenissen naar CAD op. Het opslaan van een ander gewoonhttp-adres wordt geweigerd; een adres dat is opgeslagen door een oudere versie blijft bestaan, zodat BitVoice nog steeds start en andere wijzigingen nog steeds worden opgeslagen, maar er wordt niets naar verzonden en Health (hoofdstuk 13) toont deze in rood totdat deze wordt gewijzigd.
De ALI-uitstroom zelf is gewoon TCP, omdat legacy CAD-luisteraars deze aannemen, dus kan niet worden vereist dat deze wordt versleuteld. Wanneer deze naar een andere computer gaat, waarschuwt Health: houd deze route buiten elk gedeeld netwerk, met een directe seriële verbinding (serial:/dev/…) of een VPN of privé-circuit naar CAD. Stel ook Agentschap-ID in: EIDOs en de i3-log noemen het agentschap met deze ID, en Health (hoofdstuk 13) waarschuwt zolang deze leeg is.
Een 911-oproep wordt nooit geweigerd. Een spraakoproep van het ESInet (of een CAMA-trunk) waarvan de inkomende route zou weigeren, omdat de route ophangt, een groep belt met niemand erin of niet bestaat, of dat niemand antwoordt, belt elke call-taker in plaats daarvan: elke ingeschakelde extensie, en elke telefoon die verbinding maakt terwijl deze overgaat, totdat iemand antwoordt of de beller ophangt. Een tekstoproep wacht op dit scherm op dezelfde manier. De oproep Hoe deze is gerouteerd zegt wat er is gebeurd, en Health (hoofdstuk 13) waarschuwt over een dergelijke route zodat deze kan worden rechtgezet. Alleen testopropen (urn:service:test.sos) en oproepen die geen 911-oproepen zijn, behouden hun route-weigering.
Noch door een doorverbinding. Wanneer een call-taker een 911-oproep doorverbindt en de doorverbinding niet kan verbinden, omdat de extensie geen telefoon heeft aangesloten of niemand antwoordt, gaat de oproep terug naar die call-taker terwijl deze nog steeds aan de lijn is. Als deze al heeft opgehangen (de meeste bureautelefoons doen dit direct na een blind doorverbinden), belt elke call-taker in plaats daarvan, totdat iemand antwoordt. Een 911-oproep wordt nooit doorgeschakeld naar de voicemail of een andere bestemming zonder antwoord van de extensie, en het routingspoor van de oproep zegt wat er is gebeurd. Op elke oproep geeft een telefoon die direct na het verzoek om doorverbinden ophangt alleen zichzelf vrij: de doorverbinding gaat door.
Een beller die verdwenen is. Wanneer één kant van een oproep ophoudt met het verzenden van geluid voor een minuut (een telefoon die de stroom of het signaal verliest, verstuurt geen ophangsignaal) terwijl de andere kant nog steeds verstuurt, wordt de oproep beëindigd met de reden *het geluid van de beller is gestopt* (of van wie het was), in het oproeprecord en in het call.ended-gebeurtenis dat CAD hoort (cause, endedBy). Een kant in de wacht, die faxt, of die heeft aangegeven dat deze niets verstuurt (een paginatoren), wordt nooit op deze manier beëindigd. Stilte verstuurt nog steeds pakketten, dus een beller die niet kan spreken, houdt de oproep in stand.
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 (hoofdstuk 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.
Beller video en foto's. Bij een 911-gesprek maakt Verstuur de beller een videolink een link die alleen voor dit gesprek geopend wordt: verstuurd naar de beller vanaf het nummer onder Verstuur de link vanaf, of voorgelezen. Wanneer het niet kan worden verstuurd (geen tekstnummer is ingesteld, of de beller heeft geen nummer verstuurd), geeft het scherm en de API's problem aan waarom. De beller opent het in de browser van zijn telefoon (geen app): Deel live video verstuurt de achterste camera live (WebRTC, WHIP: RFC 9725), en Verstuur foto's of video's verstuurt wat ze al hebben gemaakt, inclusief dashcam- en actioncamera-bestanden. Tijdens het gesprek:
- live video toont LIVE; Bekijk de video van de beller afgespeeld vervaagd, en Onthul (kan storend zijn) toont het; Vervaag opnieuw verbergt het;
- elk bestand toont zijn grootte, wanneer het is gemaakt (door de klok van de camera), waar (van zijn GPS, wanneer het die heeft), en zijn SHA-256, genomen zoals het aankwam, zodat een kopie later kan worden getoond om hetzelfde bestand te zijn; Onthul opent het; Houd als bewijs houdt de bestanden van het gesprek na de bewaarperiode;
- de kijklink onderaan (WHEP) laat CAD, het scherm van een eenheid of een andere positie dezelfde live video bekijken, zonder in te loggen: behandel het als een sleutel.
Video neemt nooit van de gesprekken: elke live video heeft zijn eigen poorten, deze server neemt maximaal Live video's tegelijk van hen (4 tenzij ingesteld), elk gevraagd om onder Video-bitsnelheid te blijven, en video die tien seconden stopt, wordt beëindigd. De telefoons van de bellers moeten deze server bereiken op Linkadres (https) en de mediapoorten (UDP). Bestanden worden bewaard Bewaar bestanden en blootstellingslogboek dagen (leeg: totdat ze zijn verwijderd), met uitzondering van gehouden gesprekken.
Opnemen van live video. Met Opnemen van live video van bellers ingeschakeld, wordt de live video van de beller bewaard met de foto's en clips als één bestand per videostuk: dezelfde afbeeldingen die de telefoon heeft verstuurd, niet omgezet, in een IVF-bestand (H.264 of VP8 met de eigen tijd van elke afbeelding), gehasht zoals het wordt geschreven. Een afbeelding die beschadigd is door een verloren pakket, wordt weggelaten in plaats van bewaard te worden, en de telefoon wordt gevraagd om een volledige afbeelding om door te gaan. Onthul speelt het af (vanuit een kopie in WebM of MP4 die ffmpeg maakt, dezelfde afbeeldingen in een andere container; zonder ffmpeg alleen het origineel downloaden); Download het origineel geeft het bestand dat de hash van is. ffmpeg, VLC en forensische videogereedschappen openen het origineel.
Naar CAD. De EIDO (NENA-STA-021) die naar CAD wordt verstuurd, noemt elke foto, clip en opname, en de live video zolang die duurt, als aanvullende gegevens per verwijzing: urlPurpose is caller-photo, caller-video, caller-video-recording of caller-video-live, en additionalDataByReferenceUrl is het bestand op /m/{viewToken}/{n} of de live video op /whep/{viewToken}. BitVoice verstuurt CAD de EIDO opnieuw wanneer een bestand aankomt of live video start of stopt. De links gebruiken Linkadres (of het openbare adres van deze server); met geen van beide, noemt de EIDO geen media. Elke ophaling via deze links wordt in het blootstellingslogboek opgenomen. De gebeurtenisstroom zegt hetzelfde (GET /api/events: call.media, call.video). De EIDO's van BitVoice worden gecontroleerd tegen het gepubliceerde EIDO-schema van NENA.
Links die niet bestaan, worden niet sneller geraden dan aanmeldingen: een adres dat blijft proberen, wordt voor een tijdje weggestuurd. Bestanden van bellers worden geserveerd in een zandbak, nooit als een pagina van deze server.
Blootstelling. Elke onthulling van een live video en elke opening van een foto of clip wordt geteld onder Blootstelling bij 911-gesprekken: wie, hoe vaak, over hoeveel gesprekken. Het is voor supervisors en het wellnessprogramma van het centrum.
Video die een telefoon verstuurt in het 911-gesprek zelf (SIP-video via het ESInet) kan op dezelfde manier worden bekeken: Bekijk neemt het als bron wanneer er geen linkvideo live is.
Gesprekken met alleen een nummer. Een 911-gesprek dat een callbacknummer en geen locatie meebrengt (van een CAMA-trunk, of een ESInet-gesprek waarvan de locatie niet is meegekomen) kan worden opgezocht: geef Locatie-opzoeken (ALI) het adres van uw ALI-database of locatieserver van de HELD-interface (RFC 5985, gevraagd door telefoonnummer zoals RFC 6155 het heeft). BitVoice vraagt het op wanneer het gesprek aankomt, zonder het op te houden, en de locatie verschijnt op het gesprek wanneer het antwoord komt; het gesprek zegt wanneer de opzoeking is mislukt en waarom.
De legacy ALI-link. Zonder een HELD-server kan BitVoice een ALI-controller of de ALI-database's datalink op de oude manier vragen: het verzendt een verzoek en leest het record terug als tekst, over het netwerk (ALI-linkadres host:poort) of uit een seriële poort (serial:/dev/ttyUSB0?baud=9600&parity=none, met bits en stop ook; een USB-seriële adapter werkt; op Linux en macOS, niet op Windows: daar gebruikt u een seriële-naar-netwerkconverter en het adres ervan). Verzoek is wat te verzenden: {ani10} het tien-cijferige callback-nummer, {ani7} de laatste zeven, {pos2} de positie, STX en ETX ({ani10} wanneer leeg). Het antwoord wordt gelezen tot aan de ETX. ALI-indelingen verschillen tussen providers en staten, dus u plaatst elk veld: de regel, de kolom en de lengte (0: tot het einde van de regel), vanuit een afdruk van een ALI-scherm; Straat (hele regel) splitst een straatregel in zijn onderdelen, of plaatst de onderdelen een voor een. Plak een voorbeeldrecord en Lees het voorbeeld om de regels met een kolomregelaar en wat elk veld leest te zien; Vraag vraagt de link zelf om een nummer. Het adres en de positie van het record worden de locatie van de oproep, de naam het naam van de beller, en de klasse van dienst toont op de oproep. Protocollen die geen verzoek en tekstantwoord zijn (PAM, E2 en andere leverancierspecifieke) worden niet ondersteund: ze hebben een gateway nodig.
ALI-overschrijving over een seriële poort. ALI-overschrijving naar neemt ook een seriële poort (serial:/dev/ttyS0?baud=9600), voor een CAD die de overschrijving van een seriële kabel leest.
De kaart. Onder Kaart in de 911-instellingen geeft u BitVoice zijn kaarttegel: een .mbtiles-bestand van raster-tegels (PNG, JPEG of WebP) op deze server, voor een kaart die werkt zonder internet (uw GIS-team, TileMill, gdal2tiles of een tegelleverancier maakt er een van uw gebied), of een tegelserver met {z}, {x} en {y} in het adres (die van uw county, of een commerciële: let op de voorwaarden; de openbare OpenStreetMap-servers zijn hiervoor niet bedoeld). Op welke manier dan ook halen de browsers van de oproepnemers tegels op van BitVoice alleen: het leest het bestand, of haalt op van de tegelserver en houdt de laatste tegels in het geheugen. Dezelfde kaart toont radiopositie op de radiocomputer. Vector-tegels worden niet ondersteund.
Het i3-logboek houdt de NENA i3-gebeurtenissen van elke oproep bij (oproepstart, antwoord, locatie, EIDO-verzonden), één bestand per dag. Antwoordtijden toont hoeveel oproepen binnen uw doel werden beantwoord (NENA: 90% binnen 15 seconden, 95% binnen 20), de afgebroken oproepen, en het gemiddelde van elke oproepnemer. Een regel per dag (CSV) downloadt de aantallen die staat 911-kantoren meestal vragen (oproepen, beantwoord, afgebroken, binnen het doel en binnen 20 seconden, gemiddelde en langste wachttijd) voor de geselecteerde dagen; Een regel per oproep (CSV) lijst elke 911-oproep met wanneer deze werd beantwoord, door wie, en of het een tekstoproep was. Elke staat heeft zijn eigen formulier: leg het uit onder Rapportindelingen. Een tekstoproep die op dit scherm of via een CAD wordt beantwoord, telt voor de persoon die het heeft beantwoord; een oproep die niemand heeft beantwoord voordat de beller ophing, telt als afgebroken.
Rapportindelingen. Nieuwe rapportindeling legt een rapport uit zoals uw staat of county het heeft: wat elke regel is (een dag, een week, een maand, een uur van de dag, een oproepnemer, of één regel voor alles), een totaalregel, en de kolommen, in volgorde, elk met zijn eigen kop als het formulier het anders woordt: oproepen, beantwoord, afgebroken (een telling of een aandeel), beantwoord binnen zo veel seconden (een telling of een aandeel; de seconden zijn van u, dus 10 en 20 voor één formulier en 15 en 40 voor een ander), beantwoord na meer dan zo veel seconden, het gemiddelde en de langste wachttijd, de tijd waarbinnen 90% werden beantwoord, het gemiddelde oproeplengte, en tekstoproepen (TTY, real-time tekst, tekst naar 911). Een wachttijd telt vanaf de aankomst van de oproep tot het antwoord van een oproepnemer. Kies een indeling en datums en Voer uit om het hier te lezen, Spreadsheet (CSV) om het te downloaden, of Pagina om af te drukken voor een eenvoudige pagina om af te drukken of op te slaan als PDF. Indelingen worden opgeslagen met de instellingen, dus ze gaan mee met een back-up en naar Git.
TTY-oproepen. Dove en slechthorende bellers kunnen 911 bellen met een TTY (een teksttelefoon, Baudot op 45,45 bit/s). BitVoice luistert naar een TTY op elke 911-oproep, vanaf het eerste moment: wat de beller typt, verschijnt op de oproep terwijl hij typt, onder Tekst, met een pauze of een nieuwe regel die een nieuwe regel start. Een stille oproep kan een TTY zijn die wacht op u: zodra u antwoordt, Antwoord met TTY verstuurt tekst, zelfs voordat er al tekst is. Typ het antwoord en druk Verzenden: het gaat naar de beller als TTY-tonen (de stem van de oproepnemer wordt gedempt terwijl het afgespeeld wordt, omdat TTY's om de beurt typen), in hoofdletters, en TTY-etiquette geldt: eindig elke beurt met GA ("ga door"), en SK bij het afsluiten. Karakters die een TTY niet kan weergeven, worden weggelaten. Spraak, muziek en toonhoogtes worden nooit aangenomen voor TTY-tekst: een karakter telt alleen als elk bit ervan een schoon TTY-toon is. Het gesprek wordt opgeslagen met de oproep in de oproepgeschiedenis en in het i3-logboek (één MessageLogEvent per beurt). Vink Luister naar TTY's op 911-oproepen uit in de 911-instellingen om te stoppen met luisteren.
Doorgiften. Een 911-gesprek dat naar een andere PSAP wordt doorgestuurd, behoudt zijn locatie: de PIDF-LO gaat mee met het gesprek.
Real-time tekst (RTT). Een telefoon die tekst naast zijn spraak verstuurt (RFC 4103, zoals VoLTE-telefoons en NG911-gesprekken doen) krijgt zijn tekst beantwoord door BitVoice zelf, aangezien desktop-telefoons geen tekst weergeven: elk karakter verschijnt in het gesprek terwijl de beller typt, en uw antwoord wordt teruggestuurd als tekst. Verloren pakketten worden hersteld door de redundantie van RTT; verloren tekst die buiten de redundantie valt, wordt weergegeven als .
Tekst naar 911. Een tekstcontrolecentrum (TCC) verstuurt teksten naar de PSAP als een sessie zonder spraak (MSRP, RFC 4975, via de ESInet-trunk). BitVoice beantwoordt deze en wacht op 911-gesprekken gemarkeerd als Tekst naar 911, met de teksten die zijn ontvangen; geen enkele telefoon rinkelt. Neem deze tekst maakt u de call-taker (de antwoordtijd wordt dan geteld, en CAD krijgt de ALI-spill en de EIDO dan); antwoord in het vak onder het gesprek, en Gesprek beëindigen wanneer u klaar bent. Het TCC dat de sessie sluit, beëindigt deze ook. Een SIP MESSAGE die binnen een 911-gesprek wordt verstuurd, wordt op dezelfde manier behandeld als de tekst van de beller, en antwoorden worden teruggestuurd via SIP MESSAGE. Teksten worden alleen aanvaard van trunks gemarkeerd als Van de ESInet.
Een TCC dat de sessie aanbiedt via TLS (TCP/TLS/MSRP, msrps: paden, RFC 4975, sectie 14) krijgt deze via TLS, met het certificaat van deze server (Instellingen › Certificaten; zonder een dergelijk certificaat wordt het aanbod geweigerd). Het certificaat van de TCC moet het certificaat zijn dat in het aanbod wordt genoemd (a=fingerprint, SHA-256); wanneer er geen certificaat wordt genoemd, moet het worden getraceerd naar de PSAP Credentialing Agency-wortels die zijn ingesteld onder Core services, indien deze zijn ingesteld. Het antwoord van BitVoice noemt zijn eigen certificaat op dezelfde manier.
Het hele gesprek, hoe het ook is ontvangen, wordt opgeslagen met het gesprek in de gesprekslijst en in de i3-log.
Wat hier nog niet is: het doorsturen van een tekstsessie via de NG911-core (de ESRP routeert spraak; een tekstsessie wordt beantwoord waar deze aankomt); de EIDO-conveyance-standaard met zijn eigen abonnementen (NENA-STA-024 WebSocket): BitVoice publiceert EIDOs naar één adres.
Radiodispatchconsole
/radioDispatchers praten op radiokanalen vanaf dezelfde headset als hun telefoongesprekken. BitVoice bereikt de radio's via radio-over-IP (RoIP)-gateways; het radionetwerk zelf blijft bij degene die het beheert.
Instellen. Onder Console-instellingen, kies een console-nummer (800, bijvoorbeeld) en voeg elke kanaal toe: de naam, de poort op deze server waar de gateway de audio van het kanaal naar toe stuurt, en het adres en de poort van de gateway voor de uitgaande audio. Op de gateway: RTP, G.711 µ-law, naar het adres van deze server en die poort; activeer de radio op spraak (VOX). Elk kanaal gebruikt zijn poort en de volgende poort, buiten het bereik van telefoongesprekken.
Deelnemen. Een dispatcher belt het console-nummer vanaf zijn bureau telefoon, of drukt Deelnemen met de browser-telefoon. Vervolgens hoort hij alle verkeer van elk kanaal gemengd; Horen / Gemuteerd op een kanaal haalt het uit zijn headset. De lamp op een kanaal brandt terwijl het ontvangst heeft.
Praten. Houd de Houd vast om te praten-knop van een kanaal ingedrukt (of focus het en houd de spatiebalk ingedrukt): uw stem gaat alleen naar dat kanaal, en het kanaal toont TX met uw extensie. Één dispatcher praat op een kanaal tegelijk; de knop is grijs voor de anderen terwijl iemand aan het praten is. Niets wordt verzonden naar een kanaal terwijl niemand aan het praten is, dus een spraak-geactiveerde radio wordt nooit vastgehouden op de lucht.
Doorgeschakeld. Druk Doorgeschakeld op één kanaal, vervolgens Doorgeschakeld hier op een ander: de twee horen elkaar (een brandkanaal en een onderlinge-bijstandskanaal, bijvoorbeeld) totdat u Niet doorgeschakeld drukt.
P25-praatgroepen. Een kanaal kan ook een P25-praatgroep zijn, rechtstreeks verbonden via de ISSI (TIA-102.BACA, het interface tussen P25-subsystemen; met Verzend het CSSI-console PTT-woord ingeschakeld, voegt BitVoice het woord van het consolesubsyssteem toe aan elke aanvraag). Kies Een P25-praatgroep (ISSI), geef de praatgroep-ID, het SIP-adres en -ID van de RFSS die thuis is van de praatgroep, en een poort voor de spraak. Onder Deze console op het P25-systeem, voer de WACN en systeem-ID in, de RFSS-ID die uw P25-beheerder aan deze console heeft gegeven, de eenheid-ID die dispatchers verzenden als, en de SIP-poort die de ISSI hier gebruikt; het P25-systeem moet deze server kennen als een RFSS op dat adres. De tegel toont P25 terwijl de groepsoproep actief is (P25 niet beschikbaar en de reden wanneer het niet beschikbaar is), en de eenheid-ID van de radio die praat, in rood met NOODGEVAL wanneer het een noodgeval is. Houd vast om te praten vraagt de thuis-RFSS om het kanaal (Kanaal aanvragen...); uw stem gaat er eenmaal doorheen als het wordt toegestaan, en als het wordt geweigerd (iemand met een hogere prioriteit heeft het) zegt de tegel dat zo. De spraak wordt omgezet naar en van IMBE, de P25-vocoder, in BitVoice.
Versleutelde gespreksgroepen. Onder Sleutels, voeg elke verkeerssleutel toe die uw radiowinkel u geeft: een naam, het algoritme (AES-256, DES-OFB of drievoudig DES), de sleutel-ID en de sleutel zelf in hex (TIA-102.AAAD). Een sleutel wordt nooit meer weergegeven nadat deze is opgeslagen, zelfs niet voor beheerders, en het leeg laten van het veld houdt deze. De console hoort een versleutelde transmissie wanneer deze de sleutel met dat algoritme en sleutel-ID heeft: de tegel toont een slot en het algoritme naast de praatgroep. Zonder de sleutel wordt de transmissie gemuteerd, nooit als ruis afgespeeld, en de tegel zegt geen sleutel: gemuteerd. Om versleuteld te verzenden op een gespreksgroep, kies een sleutel onder Verzenden voor dat kanaal; de tegel toont dan TX AES-256 (of het algoritme dat u hebt gekozen). Een volledige configuratie-export (Instellingen, een back-up van een beheerder) bevat de sleutels, dus houd deze bestanden zo veilig als de sleutels.
Privégesprekken. Met de console op een P25-systeem, roept Radio bellen in uw positiebalk een radio op door zijn eenheid-ID (schakel Nood in om het als een noodgeval te bellen). Het gesprek wordt een tegel op zichzelf, Privégesprek: eenheid 197, met Inhouden om te praten zoals elk kanaal en Ophangen. Radios kunnen de console ook bellen, op de eenheid-ID die dispatchers verzenden: het gesprek verschijnt als een tegel gemarkeerd binnenkomend (in rood met NOODGEVAL wanneer de radio als een noodgeval belde), elke dispatcher hoort het, en het verdwijnt wanneer een van beide partijen ophangt. Onder Privégesprekken in de P25-instellingen van de console, geeft u het SIP-adres en de ID van de RFSS die de thuisbasis is van de radios (leeg gebruikt de eerste gespreksgroep thuis) en, als privégesprekken versleuteld moeten worden, de sleutel om ze te verzenden.
Waarschuwingstonen. Verstuur een waarschuwingstoontje... op een kanaal verstuurt een van: Waarschuwing 1, een constante toon van 1000 Hz gedurende 3 seconden; Waarschuwing 2, een warbel tussen 1000 en 1500 Hz; Waarschuwing 3, 1000 Hz-pulsen; of een korte Piep. De toon houdt het kanaal vast terwijl deze afgespeeld wordt (de tegel toont toon en uw extensie), elke dispatcher die het kanaal bewaakt, hoort het gaan, en op een P25-gespreksgroep gaat het eenmaal de thuis-RFSS toestaat het kanaal.
Noodgevallen. Wanneer een radio als noodgeval (zijn noodknop) wordt uitgezonden, wordt zijn tegel rood met NOODGEVAL en het eenheid-ID, de serverlog noteert dit en CAD wordt onmiddellijk op de hoogte gesteld (hieronder). Het noodgeval blijft actief op elke console nadat de radio is gestopt met praten, totdat een dispatcher op Bevestigen drukt: de tegel geeft dan aan wie het heeft bevestigd en wanneer, en CAD ontvangt een radio.emergency.ack-gebeurtenis. Bevestigen noemt de weergegeven eenheid: als een ander eenheid-noodgeval het een moment eerder heeft vervangen, weigert BitVoice en toont de tegel de nieuwe, zodat een tweede noodgeval nooit per ongeluk wordt genegeerd. CAD kan via de API hetzelfde doen: POST /api/radio/channels/{id}/ack met {"unit": "bee07.1d5.00044d"} (of de radio-ID, "1101") retourneert 409 wanneer het noodgeval van het kanaal nu van een andere eenheid is; zonder een body wordt het noodgeval van het kanaal bevestigd.
Simulselect. Om één ding te zeggen op meerdere kanalen tegelijk, vink selecteren aan op elk kanaal, vervolgens Praat op N kanalen in de balk boven de tegels inhouden. Het is alles of niets: als een andere dispatcher op een van hen praat, wordt niets ingeschakeld en wordt u verteld welke.
Radiopositie. Radios sturen hun locatie via de gegevenskant van het radiosysteem, niet via de spraakkant waar de console zich bij aansluit: P25-locatiedienst, Motorola's LRRP of een eigen dienst van de leverancier, verzameld door de radiowinkel's gegevens- of AVL-gateway. Laat de gateway (of een kleine script ernaast) elke melding naar BitVoice posten met een API-token: POST /api/radio/locations met {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, of een lijst van maximaal 500 (snelheid in km/h, richting in graden, nauwkeurigheid in meters; alle drie en de tijd zijn optioneel). Radiopositie op de console toont vervolgens elke radio's laatste positie, met de naam, en CAD ontvangt elke positie als een radio.location-gebeurtenis. BitVoice decodeert LRRP of de P25-locatiedienst zelf niet.
Radionaam. Onder Radionaam, noem radios door hun P25-eenheid-ID (1205 is "Brandweer 5", zeg): de tegel toont de naam naast de eenheid terwijl deze praat, en de radiolog en CAD's gebeurtenissen bevatten deze.
Radiolog en opname. Schakel Elke transmissie opnemen in onder Opname en CAD: elke transmissie op elk kanaal, gehoord of verzonden, wordt bewaard als een opname met een regel in de Radiolog: wanneer, het kanaal, wie (de radio's eenheid, of de dispatcher's extensie), hoe lang, en of het een noodgeval, een waarschuwingstoontje, versleuteld of een privégesprek was. Een gehoorde transmissie begint met de eerste spraak en eindigt 1,5 seconden na het laatste woord. Zoek een eenheid, dispatcher of kanaal met de zoekbox, en druk Afspelen om te luisteren. Opnames worden zo lang bewaard als gespreksopnames (Instellingen, Opname).
Radiogegevens naar CAD. Geef het adres van CAD op onder Radiogebeurtenissen naar CAD verzenden (en een gedeelde geheimcode als CAD daarom vraagt; deze wordt verzonden als een bearer-token en wordt nooit meer getoond). BitVoice verzendt vervolgens elke gebeurtenis (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission en radio.location) als JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit wanneer een radio begint te praten op een kanaal (de unit-ID, WACN, systeem, kanaal, noodtoestand, versleuteling), radio.emergency voor een noodtoestand (drie keer geprobeerd als CAD niet reageert) en radio.transmission voor elke voltooide transmissie zoals deze in het radiologboek verschijnt. CAD kan ook het logboek zelf lezen met GET /api/radio/log (filters: channel, q, since, until). Een CAD die uitgeschakeld is, belemmert de console nooit.
Nog niet beschikbaar: P25-fase 2 (TDMA)-sprach in zijn eigen half-rate-vocoder. Een fase 2-systeem werkt met de console wanneer zijn ISSI-praatgroepen volrate (fase 1)-sprach of zijn transcoder deze omzet, wat gebruikelijk is: vraag uw P25-beheerder. Een praatgroep waarvan de sprach in blokken aankomt die deze console niet decodeert (half-rate-sprach verzonden zonder transcodering, waarschijnlijk) toont Stil hier op zijn tegel terwijl een radio praat, zodat niemand de stilte voor een stille kanaal aanziet. Het decoderen ervan heeft twee dingen nodig die BitVoice niet heeft: de half-rate-vocoder (AMBE+2, gepatenteerd tot 2028: een licentie van de eigenaar of een gelicenceerde hardware-vocoder-chip) en het ISSI-half-rate-sprachblokformaat (TIA-102.BACA-B, verkocht door TIA, niet openbaar).
NG911 Core Services (ECRF, ESRP, LVF, BCF, LIS, logging)
/coreVoor een staat of regionale 911-autoriteit die zijn eigen NG911-core uitvoert: BitVoice beantwoordt LoST als de ECRF en routeert elk 911-gesprek als de ESRP naar de PSAP die de beller bedient.
Servicegebieden. Exporteer uw grenzen van GIS als GeoJSON-polygons (PSAP-grenzen voor urn:service:sos; politie-, brandweer- of EMS-gebieden voor urn:service:sos.police en de anderen) en upload ze op Core services. De name, uri en number-eigenschappen van een polygoon worden gelezen; geef een standaard PSAP-URI op voor die zonder een dergelijke URI. Bewerk een gebied om steden of county's toe te voegen die het bedient, voor bellers wiens locatie alleen een civiele adres is. Probeer een locatie toont welk gebied een positie of een stad bedient, zoals een LoST-query zou doen.
De ECRF. Schakel LoST-queries beantwoorden in en geef de adressen op die mogen vragen (uw ESInet): andere elementen sturen findService naar /lost (RFC 5222) en krijgen de PSAP-URI. Een specifieke service (sos.police) wordt beantwoord vanuit zijn eigen gebieden eerst, dan vanuit sos. Een locatie die niet door een van uw gebieden wordt bediend, kan naar de Forest guide (RFC 5582: het nationale directory van ECRFs) gaan: een recursieve query wordt uitgevoerd namens de vragensteller en het antwoord wordt geretourneerd (beide servers worden vermeld in het antwoordpad), elke andere query wordt doorgestuurd naar deze ECRF, en een query die al door deze ECRF is gegaan, wordt geweigerd als een lus.
De ESRP. Geef de PSAP's op: elke PSAP-URI (zoals de gebieden deze noemen), de trunk die deze bereikt en de overflow-PSAP, en kies de standaard PSAP. Stuur vervolgens de inkomende 911-gesprekken van de ESInet naar ESRP in Call routing (hoofdstuk 8). Elk gesprek gaat naar de PSAP voor zijn locatie (vanuit de gebieden van deze server, of een buiten ECRF via LoST), met zijn locatie en de service die hij heeft aangevraagd; wanneer deze PSAP het gesprek niet aanneemt, naar de overflow; zonder locatie, of van een locatie die niet door een gebied wordt bediend, naar de standaard. Elk besluit wordt opgenomen in de i3-log op 911-gesprekken (hoofdstuk 77).
Beleidsregels. Zodra de ECRF een PSAP heeft gekozen, worden de regels onder Beleidsregels in volgorde gecontroleerd en het eerste waarvan alle voorwaarden waar zijn, bepaalt: stuur het gesprek naar een andere PSAP, of weiger het als bezet. Een regel kan kijken naar de service (alleen brandweergesprekken, bijvoorbeeld), de PSAP die de ECRF heeft gekozen, een schema (terwijl het nachtshiftcentrum gesloten is), gesprekken zonder locatie, gesprekken die door de BCF als verdacht zijn gemarkeerd, en de trunk waarlangs het gesprek binnenkwam. Elk besluit wordt opgenomen in de i3-log als een RouteLogEvent met de naam van de regel.
Grensbewaking (BCF). Met Bewaking van ESInet-gesprekken ingeschakeld, wordt elk gesprek van een ESInet-trunk eerst gecontroleerd: adressen onder Altijd weigeren worden afgewezen, evenals een adres dat meer gesprekken per minuut start of tegelijkertijd in behandeling heeft dan is toegestaan (een telefoondiensteweigering aanval stuurt een overstroming van gesprekken van een paar bronnen). Geweigerde gesprekken krijgen 503 met Retry-After. Schakel Laat het gesprek door als verdacht in om dergelijke gesprekken door te sturen en een beleidsregel te laten beslissen (naar een centrum dat ze screent, of weigert); een echte beller in een overstroming gaat dan niet verloren. Grensbewaking: laatste lijst wat werd geweigerd of gemarkeerd. Controleer STIR/SHAKEN-handtekeningen controleert de ondertekende beller-ID (de Identity-header) van elk gesprek dat er een draagt, tegen de STI-wortels ingesteld onder Call screening in Instellingen: een gesprek waarvan de handtekening faalt, gaat door gemarkeerd als verdacht, voor een beleidsregel om ergens anders naartoe te sturen, en wordt vermeld in het BCF-logboek; een 911-gesprek wordt nooit geweigerd vanwege dit, en ondertekende gesprekken (de meeste vandaag) worden met rust gelaten. Elk gesprek verlaat BitVoice als een nieuwe aanvraag op zich (BitVoice is een back-to-back-agent), met alleen de headers en bodies die BitVoice begrijpt en doorgeeft: de locatie, de Additional Data en de sessie. Inspecteer media controleert elk RTP-pakket van een ESInet-gesprek voordat het wordt gebruikt of doorgegeven: pakketten van een adres andere dan het adres dat het gesprek SDP gaf, met een payload-type dat de aanbieding niet noemde, met headerlengtes (CSRC's, extensie, padding) die niet passen bij het pakket, groter dan Grootste pakket (1.500 bytes als leeg), of verder dan Pakketten per seconde (150 als leeg; G.711 bij 20 ms stuurt 50) worden verworpen en geteld. De eerste van elk type, dan de 10e, 100e enz., gaat in Grensbewaking: laatste (als *media verworpen*) en de notities van het gesprek. Het gesprek wordt nooit beëindigd vanwege de media: de beller houdt de goede pakketten. Gesprekken van CAMA-trunks komen van het lokale kaartprogramma en worden niet geïnspecteerd.
Adresvalidatie (LVF). Upload uw 911 GIS-adresgegevens als GeoJSON, in het NENA GIS-gegevensmodel (NENA-STA-006): wegcentrumlijnen met FromAddr_L, ToAddr_L, Parity_L, IncMuni_L en de rest, en site-/structuuradrespunten met Add_Number, St_Name, Inc_Muni. Een LoST-query met validateLocation="true" krijgt dan de geldige, ongeldige en ongecontroleerde delen van het adres in het antwoord (RFC 5222), zodat carriers en locatieservers een adres kunnen corrigeren voordat een 911-gesprek het ooit gebruikt. Controleer een adres doet hetzelfde hier: een exact adres punt is de beste overeenkomst, dan een straatsegment wiens bereik aan de rechterkant van de weg het nummer bevat (oneven en even zijden gerespecteerd); spellingsvarianten zoals Street en St, North en N worden gelijk behandeld.
De i3-loggingservice. Schakel Voer een i3-loggingservice uit in: de andere elementen van uw core (ESRPs, BCFs, PSAPs) sturen hun loggebeurtenissen (NENA-STA-010) naar deze service, elk ondertekend als een JWS met het elementcertificaat in de x5c-header, door POST naar /i3log/LogEvents van de toegestane adressen. Elk komt als een JWS in de afgeplatte JSON-vorm (ondertekend, of ondertekend met algoritme none, dat een loggingservice kan accepteren: gemarkeerd als niet getraceerd naar de PCA), wordt gecontroleerd en bewaard, en het antwoord is de loggebeurtenis-ID. Lees terug met GET /i3log/LogEvents/{logEventId}; lijst met GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); vind de ID's van een gesprek of incident met /i3log/LogEventIds, /CallIds, /IncidentIds en /AgencyIds; en lees een gesprekstekstconversatie met /i3log/Conversations?callId=. GET /i3log/Versions zegt welke versie deze service spreekt. Loggebeurtenissen ontvangen lijst een dag's gebeurtenissen met wie elk heeft ondertekend. Elk antwoord wordt gecontroleerd tegen NENA's gepubliceerde OpenAPI-definitie van de service; de service is nog niet getest met elementen van een andere leverancier.
PSAP Credentialing Agency. Plak de rootcertificaten van de PCA onder PSAP Credentialing Agency roots: een ondertekende loggebeurtenis wordt dan alleen geaccepteerd als de ondertekenaarcertificaat ketent tot een van hen (en niet is verlopen), en wordt weergegeven met PCA. Zonder hen wordt alleen de handtekening gecontroleerd, en wordt de gebeurtenis weergegeven als niet getraceerd naar de PCA.
Locatiegegevens (LIS). Schakel Antwoord op locatieaanvragen (LIS) in en upload een spreadsheet (CSV) met locatiegegevens: een koptekstregel, en op elke regel een van een nummer (de ALI-gegevens, geëxporteerd), een netwerk (een adresbereik zoals 10.20.3.0/24, of één adres: een gebouw, een verdieping, een VLAN, een Wi-Fi-netwerk) of een mac-adres (één apparaat: een vaste telefoon, een aansluitpunt van een wandcontactdoos), gevolgd door het adres als hno, rd, sts, unit, floor (of flr), a3 (stad), a1 (staat), pc en land, met lat, lon en radius waar bekend (andere namen, zoals telefoon, straat, postcode, subnet en ip, worden ook begrepen). PSAP's, legacy-netwerkgateways en telefoons vragen dan /held (HELD, RFC 5985) van de toegestane adressen en krijgen een PIDF-LO. Een aanvraag noemt zijn apparaat met het telefoonnummer, IP-adres of MAC-adres (RFC 6155); een aanvraag die geen van deze noemt, wordt beantwoord voor het adres waar het vandaan kwam, zoals een LIS op een kantoren- of campusnetwerk. Een adres wordt gelokaliseerd door het smalste netwerk dat het bevat, dus een /24 van een verdieping wint het van een /16 van de campus. Een apparaat zonder record krijgt HELD's locationUnknown; een identiteit van een andere soort (een NAI, een poort) krijgt notLocatable. Een BitVoice-PSAP wijst zijn Locatie-opzoeken (ALI) hierheen. Zoek een nummer, adres of MAC-adres op controleert een record en zegt van welk netwerk het afkomstig is. Een nummer, netwerk of MAC-adres dat opnieuw in de lijst wordt opgenomen, vervangt zijn oude record; Vervang elk record begint opnieuw. Alleen de toegestane adressen worden beantwoord: een LIS die antwoordt op elke aanvraag die hij krijgt, moet niet voor iedereen toegankelijk zijn.
The i3 web services. Under NENA i3 web services, switch on what this core offers the other elements of your ESInet, at /i3/<service>/v1, for the addresses under May ask only. Each answers as NENA's published OpenAPI definitions say (NENA-STA-010.3, the NENA911 repositories), and each has a tab under i3 web services:
- Policy Store (
/i3/PolicyStore/v1/Policies,/PolicyEnums): agencies store, update and delete their routing policies (Policy Routing Rules), each a JWS signed by the agency that owns it (the signer's certificate must name the owner, and come from the PCA when its roots are set). A policy is kept byte for byte as it came. The ESRP runs them: the OriginationRoutePolicy for This ESRP's incoming queue first, else the NormalNextHopRoutePolicy of the PSAP the ECRF chose. Of the rules whose conditions hold, the highest priority acts; when its route fails (busy, no answer within its rnaTimer, 20 seconds when it gives none), the next one does; a BusyAction answers 600 Busy Everywhere. Conditions taken: time periods, SIP headers, Additional Data, body types, location (circle or civic), call suspicion, queue state (BitVoice's own PSAPs), LoST service URN and Normal-NextHop, call source, request URI, incoming queue, and the SDP offer's media and languages; service state and security posture are taken as unknown (Unreachable and Green, as the standard says). Body-part, CAP and calling-number-verification conditions are not run: they count as false. Without a stored policy, the Policy rules above decide. The tab lists what is stored and lets you paste one, or sign one with this server's certificate. - Discrepancy reports (
/i3/DiscrepancyReports/v1): other agencies report problems with this server's services; each shows on the tab, where you answer it with a resolution, sent to the reporter. File a report sends one to another agency's DR service; its answer and later resolution show under Reports this server filed. - Bad actors (
/i3/BadActor/v1/BadActors, with the BCF): each call the BCF passes on carries its source's ID (Call-Info: <sip:ID>;purpose=emergency-source); a PSAP that finds that source attacking reports the ID, and the BCF refuses its calls, or raises their suspicion score for the policies, for A report lasts hours. Lift ends a report early. - Geocode and MSAG conversion (
/i3/Gcs/v1,/i3/Mcs/v1): civic address to position and back from the LVF's address points (the nearest within 150 m), and civic address to MSAG address (120 N MARKET STREET, HARRISBURG CITY, PA) and back, from the centerlines'MSAGComm_L/MSAGComm_Rfields. Answers are JSON objects, or XML when the asker asks for it. - Additional Data (
/i3/Adr/v1/AdditionalData?callerUri=): blocks you keep by caller (RFC 7852 XML), served by value, or by reference for an asker that wants JSON. One block per caller is served by value: the first kept. - Locator (
/i3/ServiceAgencyLocator/v1): this agency's own record (its ID from the 911 calls page, with its logging and discrepancy addresses) and the agencies you add. - Dequeue (
/i3/DequeueRegistration/v1/Registrations): positions or PSAPs sign up to take a queue's calls (this ESRP's queue, or a PSAP's URI); the ESRP sends calls for that queue to them, the most preferred first (preference 5 before 1), over the PSAP's trunk. - Test calls: a PSAP asks this core to send it test calls (
/i3/TestCall/v1/SendTestCalls/{agency ID}: every so many minutes, five at least, between two dates, with a location); BitVoice places each tourn:service:test.sosover the PSAP's trunk and keeps what came back. Place one now tries one. - PSAP states (SIP, not REST): Subscribe to each PSAP's queue and service state has the ESRP SUBSCRIBE (RFC 6665) to every PSAP listed, over its trunk, for
emergency-QueueStateandemergency-ServiceState(NENA-STA-010.3 4.2.1.3 and 2.4.2), for an hour at a time, renewed before it ends. What the PSAPs NOTIFY shows under PSAP states and is what the policy rules' queue state, service state and security posture conditions read. A PSAP whose queue says Inactive, Disabled, Full or ResourceExhausted (or holds its most calls), or whose service says Unstaffed, ScheduledMaintenanceDown, Overloaded, GoingDown or Down, is passed over for its overflow, and the call's notes say so; when every PSAP in the chain says it cannot take calls, the call is sent as listed anyway, never left with nowhere to go. A PSAP that does not answer the SUBSCRIBE is Unreachable (as the standard says a subscriber must assume) and is tried again each minute; one that refuses it (489, 603 ...) is tried again in ten minutes. - This server's states: Tell other elements this server's element, service and queue state answers SUBSCRIBEs for
emergency-ElementState,emergency-ServiceStateandemergency-QueueStatefrom the addresses under May ask (others get 603 Decline; a queue that is not this server's incoming queue, 488). The queue's length is the 911 calls not yet answered here, and it says Full at Most calls waiting in the queue (20 when blank); the service says Overloaded at this server's call limit, else Normal. NOTIFYs go out when the state changes, at most one a second, and once a minute regardless (the standard's default rates); their bodies are checked against NENA's notify-body schemas.
Testgesprekken bij een PSAP. Een BitVoice PSAP beantwoordt een testgesprek van de ESInet (urn:service:test.sos, NENA-STA-010.3 sectie 9, RFC 6881) zelf: het antwoord zegt de naam van de PSAP, de dienst en de locatie waar het gesprek vandaan kwam, de eerste drie geluidspakketten gaan terug en het gesprek wordt beëindigd. Een tweede test vanaf dezelfde locatie binnen twee minuten wordt geweigerd (486), net als een vijfde test direct achter elkaar. Een ESRP doorgeeft een testgesprek als een echt gesprek, nog steeds gemarkeerd als een test. Schakel Testgesprekken beantwoorden uit op de 911-gesprekkenpagina om ze te weigeren (404).
JWS-algoritmen: NENA-STA-010.3 vraagt om EdDSA met Ed448. Go's standaardbibliotheek, die BitVoice gebruikt voor elke cryptografische stap, heeft Ed25519 maar niet Ed448, dus EdDSA-handtekeningen worden gecontroleerd met Ed25519-sleutels en ECDSA- en RSA-handtekeningen worden ook geaccepteerd; een Ed448-certificaat wordt geweigerd.
Bedoelde u. Een adres dat niet geldig is, krijgt maximaal vijf suggesties van dezelfde gegevens, het beste eerst, elk met een verklaring: een straat een letter of twee verwijderd (een omgekeerd paar letters telt als één), dezelfde straat in de volgende stad, of het dichtstbijzijnde nummer op die straat, aan dezelfde kant wanneer dat kan (even nummers blijven even). Gebruiken vult een suggestie in. Een positie met het adres. Geef een breedtegraad en lengtegraad (en de straal van de positie, wanneer bekend) met het adres: de positie wordt gecontroleerd tegen het adrespunt van het adres, met diens straal en 100 m extra (de grootte van een perceel en GIS-fout). Het antwoord geeft de afstand en of de twee overeenkomen, en wanneer ze dat niet doen, het dichtstbijzijnde adrespunt bij de positie. Een adres dat alleen bekend is vanuit wegcentrumlijnen heeft geen punt om tegen te controleren, en het antwoord zegt dat zo. LoST's validateLocation heeft geen plaats voor een van beide, dus carriers die vragen via LoST krijgen alleen de validatie.