BitVoice-handleiding

Een open-source telefoonsysteem in één programma, volledig ingesteld in de webinterface: extensies, wachtrijen, conferentiezalen, het medewerkersportaal, gehoste organisaties en de openbare-veiligheidslab-track.
79 hoofdstukken · 63 figuren · 50 duizend woorden · BioDream LLC

Inhoud

  1. Deel 1. Aan de slag
    1. 1. Aan de slag
    2. 2. Hoe volwassen elk deel is
    3. 3. Toestellen
    4. 4. Telefoons verbinden
    5. 5. Skinny-telefoons en MGCP-gateways
    6. 6. Telefoniekaarten
    7. 7. Trunks
    8. 8. Oproeproutering
    9. 9. PIN-sets
    10. 10. Beller-ID-opzoeken
    11. 11. Noodoproepen
    12. 12. Locaties en kantoor 911
    13. 13. Gezondheid
    14. 14. Instellingen
    15. 15. De schermen in uw taal
  2. Deel 2. Waar gesprekken naartoe gaan
    1. 16. Gespreksstroom
    2. 17. Ringgroepen
    3. 18. Wachtrijen
    4. 19. Uitgaande dialer
    5. 20. Geluiden: prompts, talen en wachtmuziek
    6. 21. Menu's (auto-antwoordapparaat)
    7. 22. Dial-by-name-map
    8. 23. Inbellen (DISA)
    9. 24. Sprachbots (AudioSocket)
    10. 25. Dag/nacht-toggles
    11. 26. Plannen
    12. 27. Scripts (JavaScript en Lua)
    13. 28. AI-receptionist, voicemail triage en vragen
    14. 29. Voicemail
    15. 30. Terugbelverzoeken
    16. 31. Oproepkoppelingen en website-oproepen
  3. Deel 3. Alledaags bellen
    1. 32. Functiecodes, doorsturen en sneltoetsen
    2. 33. De medewerkersportal
    3. 34. Conferentiekamers
    4. 35. Pagina en luidsprekers
    5. 36. Hot desking
    6. 37. Hotel- en wekoproepen
    7. 38. Contacten op elke telefoon
    8. 39. Kalenders en niet storen
    9. 40. Mobiele apps
    10. 41. Videogesprekken
    11. 42. Fax: verzenden en ontvangen, faxapparaten en analoge telefoons
    12. 43. Postvak IN: webchat, WhatsApp en Messenger
    13. 44. Bedrijfsteksten (SMS)
    14. 45. Overdracht van korte beschrijvingen
  4. Deel 4. Klanten en inzicht
    1. 46. Actieve gesprekken
    2. 47. Gespreksgeschiedenis
    3. 48. Klantentijdlijn
    4. 49. CRM: bellerkaarten en gesprekslogboek
    5. 50. Inzicht in oproepen voor supervisors
    6. 51. Oproepopname en betaalpassen
    7. 52. Opname-toestemming
    8. 53. Gesprekskwaliteit
    9. 54. Kosten en budgetten
    10. 55. Beller-ID-reputatie en gemarkeerde oproepen
    11. 56. Spam-bescherming en STIR/SHAKEN
  5. Deel 5. BitVoice uitvoeren
    1. 57. Beheerders
    2. 58. Enkelvoudige aanmelding
    3. 59. Bedrijfsdirectory (Active Directory en LDAP)
    4. 60. Beveiliging
    5. 61. Wijzigingen, back-ups en import
    6. 62. Updates
    7. 63. Meerdere servers als één telefoonsysteem
    8. 64. Waar de gegevens worden opgeslagen (SQLite of PostgreSQL)
    9. 65. Andere organisaties hosten
    10. 66. Codecs en geluid
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importeren
    13. 69. Configuratie als code
    14. 70. Asterisk-compatibiliteit (AMI, ARI en AGI)
    15. 71. AI-assistenten (MCP)
    16. 72. Archief
    17. 73. Wettelijke retentie
    18. 74. Metrische gegevens: Prometheus, OpenTelemetry, Grafana, SNMP en gespreksrecords
    19. 75. Oproepgenerator
    20. 76. SIP-trace
  6. Deel 6. Openbare veiligheid: de lab-track
    1. 77. 911-gesprekken (het 911-profiel)
    2. 78. Radiodispatchconsole
    3. 79. NG911 Core Services (ECRF, ESRP, LVF, BCF, LIS, logging)
Deel 1

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.

Hoofdstuk 1

Aan de slag

In de webinterface: /

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.

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

Wat u nodig heeft

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

Extensionsone per person1Phonesconnect each one2Trunkyour carrier3Call routingwhere calls go4Healthwhat is missing5Every step has a page in the menu; Health lists anything still missing, emergency calling first.
Figuur 2. The first hour: five steps from a new install to a working phone system
  1. Extensies: één per persoon of bureau. Elke heeft een nummer en een SIP-wachtwoord. Open Extensies (hoofdstuk 3)
  2. Telefoons: verbind een bureautelefoon, softphone of de browser-telefoon met elke extensie. Open Telefoons (hoofdstuk 4)
  3. Trunk: uw account met een telefoonmaatschappij, zodat u buitennummers kunt bellen en gebeld kunt worden. Open Trunks (hoofdstuk 7)
  4. Oproep-routing: waar oproepen van buiten naartoe gaan (een persoon, een ringgroep, een menu), en welke trunk buitenoproepen gebruikt. Open Oproep-routing (hoofdstuk 8)
  5. 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:

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.

SysteemHoe het te startenWaar de gegevens zijn
Linux./bitvoice (of de systemd-service in de release)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsdubbelklik 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

PoortWaarvoor
5060 UDP en TCPSIP: telefoons en trunks
5061 TCPSIP over TLS (versleutelde signalering)
4569 UDPIAX2-trunks, alleen eenmaal een trunk is ingesteld
1720 TCPH.323-trunks, alleen eenmaal een trunk is ingesteld
2000 TCPSkinny (SCCP)-telefoons, alleen wanneer ingeschakeld
2727 UDPMGCP-gateways, alleen wanneer ingeschakeld
10000–20000 UDPhet geluid van gesprekken (RTP), ingesteld in Instellingen
8443 TCPdeze 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

Hoofdstuk 2

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.

GebiedVolwassenheidWaar het op rust
SIP-trunks: registratie, in- en uitgaande gesprekken, caller ID, bezet, toetsen (RFC 4733)Veld-getesteen 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 SIPVeld-getestAsterisk als bureau-telefoon over het internet. Echte Yealink-, Poly- of Grandstream-toestellen nog niet geprobeerd
Browser-telefoon (WebRTC)Veld-getestvan buiten naar EC2; Chromium-browser-tests met geluid beide kanten
Twee servers, één PostgreSQL, failoverVeld-getestkill -9 en geplande stop op EC2: het gesprek gaat door, de providerlijn verplaatst
Een-opdracht-installatieVeld-getestUbuntu 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
CapaciteitVeld-getest2.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-getesteen echte FreePBX 17.0.33-backup (70 MB) geïmporteerd; anderen van FreePBX's eigen formaten
AI-transcripten, samenvattingen, receptieVeld-getesteen echt model via OpenRouter
Feiten en samenvattingen zonder taalmodelSoftware-getestuitgevonden 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 Linuxwhisper-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 ManagerVeld-getestechte AWS, onze eigen SigV4
SNMP-bewaking en -valstrikkenVeld-getestnet-snmp's snmpwalk en snmptrapd
Let's EncryptVeld-getestproblemen en vernieuwt het openbare demo-certificaat
Machine-afbeeldingen (AWS) en configuratie als codeVeld-getesteen 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-trunksGeverifieerd tegen een referentieAsterisk 23
Volledige ICE achter NAT (STUN- en TURN-client)Geverifieerd tegen een referentieChromium'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 referentieChromium 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 referentieAsterisk 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 referentieOpenLDAP 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 referentieelke 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 delenGeverifieerd tegen een referentieDrie 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 referentieelke 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 MCPGeverifieerd tegen een referentiede 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-getesttegen 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 talenSoftware-getestelk 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-trunksGeverifieerd tegen een referentieH323Plus 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 WebSocketGeverifieerd tegen een referentieJsSIP en SIP.js
Codecs: GSM, G.726, iLBC, MP3-houdmuziekGeverifieerd tegen een referentieffmpeg, het RFC 3951-referentieprogramma en minimp3, sample voor sample
Codecs: G.711, G.722, G.729, Opus, SpeexGeverifieerd tegen een referentieG.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-WBGeverifieerd tegen een referentie, met een bekende kloofAMR-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, Codec2Software-getesteigen 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/E1Geverifieerd tegen een referentielibpri (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&MGeverifieerd tegen een referentieOpenR2; MF-tonen door onze eigen tests. Geen echte kaart of lijn geprobeerd
SS7 (ISUP, MTP, linksets van meerdere links met wisseling)Geverifieerd tegen een referentielibss7 (Asterisk's chan_dahdi-bibliotheek), ITU en ANSI. Geen echte carrier-link geprobeerd
Fax (T.30, T.38)Veld-getesteen 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, CyberDataSoftware-getestde fabrikanten's gedocumenteerde formaten; niet op echte toestellen
Skinny (SCCP)-telefoons, MGCP-gatewaysGeverifieerd tegen een referentieSkinny: 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 RoutingSoftware-getesttegen 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 referentieelk 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-chatGeverifieerd 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 VaultGeverifieerd tegen een referentieEspoCRM (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, suggestiesSoftware-getestBitVoice'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-appsVeld-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-videoLabNENA'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 aangebodengepatenteerd tot 2028
Ed448-handtekeningen (NENA)Niet aangebodenniet in Go's standaardbibliotheek, en BitVoice schrijft geen cryptografie van zichzelf; Ed25519 wordt gebruikt
SS7-signaaloverdracht (STP), SCCP en TCAPGeverifieerd tegen een referentieOsmoSTP 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-getestelk 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 E2Niet aangebodenPAM 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
Hoofdstuk 3

Toestellen

In de webinterface: /extensions

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

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

Een extensie toevoegen

  1. Open Extensies (hoofdstuk 3) en druk op Extensie toevoegen. Het volgende vrije nummer en een sterk SIP-wachtwoord worden ingevuld.
  2. Voer de naam van de persoon in (weergegeven op andere telefoons wanneer ze bellen) en het e-mailadres (voor voicemail per e-mail).
  3. Vul de 911-locatie in: de site, verdieping en kamer. Deze wordt meegestuurd met noodoproepen.
  4. Kies wat er gebeurt Als niemand antwoordt: voicemail standaard, of een andere extensie, een groep of een menu.
  5. Sla op. De extensie kan meteen inloggen.

De velden

VeldWat het doet
Nummer2 tot 8 cijfers; geen ander toestel, groep, wachtrij, kamer of functiecode mag dit hebben
SIP-wachtwoordwaarmee de telefoon zich aanmeldt; minstens 12 tekens; Genereren maakt een nieuw wachtwoord aan
Overgaat naseconden voordat Als niemand antwoordt gebeurt (25 seconden standaard)
Beller-ID buitenhet nummer dat wordt weergegeven bij uitgaande oproepen; leeg gebruikt het nummer van de trunk
Kan buitenlijnen bellenuitgeschakeld houdt de telefoon beperkt tot interne oproepen en noodnummers
Oproepen opnemenwanneer Instellingen alleen geselecteerde toestellen opneemt
Hot deskeen gedeelde telefoon die overgaat op degene die zich aanmeldt
Versleutel oproepen naar deze telefoonmedia-versleuteling (SRTP); gebruik dit met TLS zodat de sleutels privé blijven
Afdelinggroepeert de oproepkosten van dit toestel

Volg-me, ophalen en intercom

Elke persoon heeft zijn eigen oproepafhandeling in zijn eigen vak op het toestel:

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

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.

Hoofdstuk 4

Telefoons verbinden

In de webinterface: /phones

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

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

Automatische installatie (provisioning)

  1. 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.
  2. Kies het merk: Yealink, Poly, Grandstream (inclusief de HT-analoge adapters), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo of CyberData.
  3. 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.
  4. 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.

FabrikantGeteste modellenWat het krijgt
YealinkT3x, T4x, T5xaccount, BLF-toetsen, tijd, codecs
PolyVVX, Edge Ehetzelfde, in Poly's eigen formaat
GrandstreamGRP, GXP, HT802/814account per poort op adapters
SnomD7xxaccount, 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):

FabrikantModellenBestand dat het apparaat vraagt
FanvilX- en V-reekszijn MAC-adres .cfg
Cisco6800, 7800, 8800 multiplatform (3PCC), SPA-adapterszijn MAC-adres .xml (enterprise-firmware heeft eerst de multiplatform-firmware nodig)
Mitel (Aastra)6800, 6900 SIPzijn MAC-adres .cfg, in hoofdletters
SangomaS-reekshet Fanvil-formaatbestand
Algopaginatoren, sirenes, adaptersalgop en zijn MAC-adres .conf
CyberDataluidsprekers, intercoms, paginatorenzijn 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):

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

Hoofdstuk 5

Skinny-telefoons en MGCP-gateways

In de webinterface: /desk-phones

Telefoons en gateways die geen SIP spreken, kunnen nog steeds worden gebruikt. Skinny-telefoons en MGCP-gateways (onder Oproepen) ondersteunen twee oudere protocollen:

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

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

Hoofdstuk 6

Telefoniekaarten

In de webinterface: /cards

Een 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

  1. Installeer de DAHDI-stuurprogramma's en stel de poorten in zoals gebruikelijk in /etc/dahdi/system.conf (fxoks=1-4 voor poorten met telefoons, fxsks=5-8 voor poorten met lijnen, en de landtonen in loadzone en defaultzone), en voer dahdi_cfg uit.
  2. 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.
  3. 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.
  4. 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.
  5. Start bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token als 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

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.

  1. Stel in /etc/dahdi/system.conf de span in voor PRI zoals gebruikelijk (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 voor een T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 voor een E1), en voer dahdi_cfg uit.
  2. 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.
  3. 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.

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:

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:

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.

Hoofdstuk 7

Trunks

In de webinterface: /trunks

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

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

Een SIP-trunk toevoegen

  1. Op Trunks (hoofdstuk 7) drukt u op Trunk toevoegen.
  2. Voer de provider-server in die uw telefoonmaatschappij u heeft gegeven (sip.provider.com), en de poort als deze niet 5060 is.
  3. Voer de gebruikersnaam en wachtwoord in, en schakel Registreren in als de provider zegt dat u dit moet doen (de meeste doen dit).
  4. 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.

  1. Voeg een inkomende route toe voor uw nummer en een uitgaande route die deze trunk gebruikt (Oproeproutering (hoofdstuk 8)).
FieldWhat it does
TransportUDP (usual), TCP, or TLS for encrypted signalling
Registersign in every few minutes, so the provider knows where to send calls
Authentication usernameonly when the provider gives a separate one
From domainthe domain in the caller's address, when the provider asks for one
Caller IDthe number shown on calls out; an extension's own caller ID wins
Also accept calls fromthe 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 oncethe limit your plan allows; calls beyond it go to the next trunk in the route
Encrypt mediaSRTP, 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
Codecsleave it on *same as Settings*, or choose what this provider supports, best first
Rateswhat 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.

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

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

StatusBetekenis
geregistreerdingelogd; oproepen kunnen binnenkomen
klaarregistreert niet, of IAX2 in afwachting van oproepen
onbereikbaarde naam van de server is niet in DNS, of er is geen antwoord
misluktde provider heeft de aanmelding geweigerd; de reden wordt getoond
standbyservers delen deze trunk een voor een en een andere houdt deze vast
Hoofdstuk 8

Oproeproutering

In de webinterface: /routes

Oproeproutering beslist twee dingen: waar oproepen van buitenaf naartoe gaan, op basis van het nummer dat is gebeld, en welke trunk oproepen naar buitenlijnnummers gebruikt.

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

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.

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.

Dialled2125550199Emergency 911Long distance 1NXXNXXXXXXLocal NXXNXXXXXXInternational 011.matchTrunk AfirstTrunk Bif A failsN is 2–9, X is any digit, . is anything more; emergency numbers never fail for want of a pattern.
Figuur 8. Outgoing routes: the first pattern that matches, its trunks in order
PatroonKomt overeen met
Xelk cijfer
Z1 tot 9
N2 tot 9
[1-5]één van een set
. aan het eindeéén of meer verdere cijfers
NXXNXXXXXXeen tien-cijferig Noord-Amerikaans nummer
1NXXNXXXXXXhetzelfde met 1 ervoor
011.een internationale oproep vanuit de VS

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.

Hoofdstuk 9

PIN-sets

In de webinterface: /pin-sets

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

  1. Voeg PIN-set toe en lijst de PIN's (4 tot 10 cijfers elk).
  2. 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 account in de API).
  3. 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.

Hoofdstuk 10

Beller-ID-opzoeken

In de webinterface: /lookups

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

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.

Hoofdstuk 11

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

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

Wat BitVoice doet bij elke noodoproep

  1. 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.
  2. 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.
  3. 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.
  4. Laat de oproep terugkomen: voor een uur na een noodoproep, worden inkomende oproepen nooit geweigerd, zodat het antwoordpunt altijd terug kan bellen.

Instellen

  1. Controleer de noodnummers in Instellingen (hoofdstuk 14) (per land ingesteld: 911 en 933 in de VS).
  2. Voeg elke gebouw toe onder Sites (hoofdstuk 12), met het straatadres en de netwerken die de telefoons gebruiken.
  3. Geef elke extensie zijn site, verdieping en kamer.
  4. Zorg ervoor dat een uitgaande route en trunk noodoproepen kunnen verwerken; Gezondheid (hoofdstuk 13) waarschuwt wanneer geen enkele dit kan.
  5. Vul Meld en E-mail ook in.
  6. 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.

Hoofdstuk 12

Locaties en kantoor 911

In de webinterface: /sites

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

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

Een site toevoegen

Op Sites (hoofdstuk 12) drukt u op Toevoegen:

VeldWat het is
Naamwat mensen het noemen: Hoofdkantoor
Straat, Stad, Provincie of staat, Postcode, Landhet civiele adres waarop hulpdiensten worden gestuurd
Netwerkenhet 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

  1. 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.
  2. Een hot desk heeft de locatie, verdieping en kamer van de desk zelf, niet van de persoon die is aangemeld (Hot desking (hoofdstuk 36)).
  3. 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.
  4. 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)

Hoofdstuk 13

Gezondheid

In de webinterface: /health

Gezondheid 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

ControleWaarom het belangrijk is
Noodoproepen kunnen worden doorgestuurdeen route en een werkende trunk dragen de noodnummers
Extensies zonder noodlocatiehun 911-oproepen zouden geen verdieping of kamer meesturen
De telefoondienstSIP luistert en op welke poort
Telefoons die niet zijn aangeslotenextensies waar niemand voor is ingelogd
Trunksgeregistreerd, of de reden waarom ze niet zijn
Menus zonder opgenomen promptbellers zouden stilte horen
De tijdzoneschema's volgen deze
Opnames en hun bewarenschijfruimte en hoe lang opnames worden bewaard
Certificatenwanneer het TLS-certificaat verloopt
Sleutelkluisjesgeheimen die een kluisje niet kan lezen
Andere serverswanneer 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.

Hoofdstuk 14

Instellingen

In de webinterface: /settings

Instellingen bevat alles over het systeem als geheel. Elk gedeelte wordt afzonderlijk opgeslagen, en elke opslaan is een revisie op Wijzigingen (hoofdstuk 61).

SectieWat er is
Systeemnaam, land, tijdzone, taal, het openbare adres dat telefoons en providers zien
Nummersde echo-test, voicemail- en parkeernummers, en de noodnummers
Codecsde codecs die telefoons kunnen gebruiken, beste eerst (Codecs (hoofdstuk 66))
Gespreksopnameuit, elke oproep, of geselecteerde extensions; toestemmingsregels; hoe lang opnames worden bewaard
Geluidopschoning voor voicemail en tijdens gesprekken
Beveiligingverboden na mislukte aanmeldingen, vertrouwde netwerken, oproepen per extensie, premiumnummers
Noodgevalverzend het adres van de beller, wie wordt op de hoogte gesteld, wie wordt per e-mail op de hoogte gesteld, noodmodus
AIde AI-service, modellen en welke AI-functies zijn ingeschakeld (AI (hoofdstuk 28))
Eenmalige aanmeldingde identiteitsprovider (Eenmalige aanmelding (hoofdstuk 58))
Asterisk-compatibiliteitAMI 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 Workspacepersonen en gedeelde contacten in Contacten, en agenda's voor wie afwezig is (Contacten (hoofdstuk 38), Agenda's (hoofdstuk 39))
Mobiele appsde push-service die de apps activeert
E-mailde mailserver voor voicemail, faxen en waarschuwingen
Sleutelkluizengeheimen die worden bewaard in AWS Secrets Manager of Azure Key Vault
Configuratie vanuit Gitde configuratie in overeenstemming houden met een bestand in een repository
DatabaseSQLite of PostgreSQL (Database (hoofdstuk 64))
Certificaathet 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:

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.

Hoofdstuk 15

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.

Deel 2

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.

Hoofdstuk 16

Gespreksstroom

In de webinterface: /flow
CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
Figuur 11. How a call from outside finds its way

Controleer elke situatie

Controleer elke situatie, bovenaan Call flow (hoofdstuk 16), probeert uw hele belplan in elke situatie die het kan zijn, niet een steekproef:

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.

Hoofdstuk 17

Ringgroepen

In de webinterface: /ring-groups

Een ringgroep is één nummer dat meerdere extensies belt: een verkoopsteam, de receptie en de back-up, iedereen in de werkplaats.

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

Belstrategieën

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?

GebruikWanneer
Een ringgroepeen paar mensen, van wie er één de oproep kan aannemen, en de oproep moet nu bellen
Een wachtrijbellers moeten mogelijk wachten tot iemand beschikbaar is, en moeten hun positie horen
Een ophalengroepelke persoon heeft zijn eigen oproepen, maar collega's kunnen voor hen aannemen
Hoofdstuk 18

Wachtrijen

In de webinterface: /queues

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

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

Hoe gesprekken worden aangeboden

StrategieWie wordt gebeld
Langste inactiviteitde vrije agent die het langst heeft gewacht sinds zijn laatste gesprek
Rondgangelke vrije agent om de beurt, waarbij de vorige wordt voortgezet
Bel allenelke vrije agent tegelijk
Minste gesprekkende 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
Willekeurigelke vrije agent, door toeval
Gewogen willekeurdoor toeval, agenten met een lagere straf veel vaker

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.

StatusBetekenis
beschikbaarvrij; zal het volgende gesprek krijgen
belletjewordt gebeld
bezetin gesprek
afhandelingnet klaar; de afhandelingstijd loopt
gepauzeerdop pauze, met de reden vermeld
afwezigin een vergadering of met verlof, volgens hun agenda
uitgelogdneemt 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.

Hoofdstuk 19

Uitgaande dialer

In de webinterface: /dialer

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

ModusHoe het belt
Previeween 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
Powereen vast aantal gesprekken voor elke vrije agent (1 tot 3)
PredictiefBitVoice past de gesprekken per agent aan, leunt naar voren terwijl weinig gesprekken worden afgebroken en trekt terug als het afbreukpercentage de limiet nadert
  1. 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.
  2. Open Contacten en Lijst toevoegen: een CSV-bestand met een koptekstregel en een kolom met de naam number (of phone); name en eventuele andere kolommen worden aan de agent getoond in de voorbeeldweergave. Dubbele en beschadigde nummers worden overgeslagen.
  3. 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.
  4. 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.

Hoofdstuk 20

Geluiden: prompts, talen en wachtmuziek

In de webinterface: /sounds

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

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 hoortWelke muziek
iemand die in de wachtrij staatde muziek die is geselecteerd op de extensie van de persoon die in de wachtrij staat, anders de standaard
een geparkeerde bellerde muziek van de persoon die hen heeft geparkeerd, anders de standaard
een beller die wacht in een wachtrijde muziek van de wachtrij, anders de standaard
een beller die wacht op een conferentieleiderde 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.

Hoofdstuk 22

Dial-by-name-map

In de webinterface: /directories

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

  1. Map toevoegen, noem het en geef het een nummer (411, zeg) of laat het nummer leeg en gebruik het als een menu-optie.
  2. Kies wat bellers spellen: de achternaam (de gebruikelijke), de voornaam, of beide.
  3. 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.

Hoofdstuk 23

Inbellen (DISA)

In de webinterface: /dial-in

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

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

Hoofdstuk 24

Sprachbots (AudioSocket)

In de webinterface: /voice-bots

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

  1. Voeg sprachbot toe: de naam, het adres van de bot (10.0.0.9:9092) en, optioneel, een nummer om het te bellen.
  2. 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.
  3. 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).

Hoofdstuk 25

Dag/nacht-toggles

In de webinterface: /toggles

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

  1. 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.
  2. Kies wie het mag overschakelen vanaf een telefoon (niemand gekozen laat elke extensie toe).
  3. 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).

Hoofdstuk 26

Plannen

In de webinterface: /schedules

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

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

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.

Hoofdstuk 27

Scripts (JavaScript en Lua)

In de webinterface: /scripts

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

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

Veilig door ontwerp

Wat een script ziet

call heeft:

VeldWat het is
from, fromNamehet nummer en de naam van de beller
tohet nummer dat is gedraaid
directioninbound of internal
trunkde trunk waarop het binnenkwam
weekday, hour, minutede huidige tijd (0 is zondag)
dateYYYY-MM-DD

What it returns

A destination, {type, target}: type is extension, ringgroup, queue, menu, schedule, voicemail or hangup, and target is its number. Returning nothing uses the fallback. log("text") writes to the script's run list.

JavaScript

if (call.from.startsWith("212")) {
  log("New York caller")
  return { type: "ringgroup", target: "600" }
}
if (call.weekday === 0 || call.weekday === 6) return { type: "voicemail", target: "100" }

Lua

if string.sub(call.from, 1, 3) == "212" then
  log("New York caller")
  return { type = "ringgroup", target = "600" }
end
if call.weekday == 0 or call.weekday == 6 then
  return { type = "voicemail", target = "100" }
end

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:

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

Hoofdstuk 28

AI-receptionist, voicemail triage en vragen

In de webinterface: /receptionists

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

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

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:

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.

SetFeiten gevondenFeiten gevonden die niemand verwachtte
Training (de regels zijn geschreven op basis van deze set)41 van 410
Hold-out, gescoord zonder enige regel die ooit vanuit deze set is geschreven27 van 40 (67%)2
Hold-out, na een tweede ronde van regels geschreven op basis van de misses40 van 400
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.

Hoofdstuk 29

Voicemail

In de webinterface: /voicemail

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

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

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.

InstellingWat het doet
Langste bericht10 tot 900 seconden (180 standaard)
Nieuwe berichten per e-mailnaar het e-mailadres van de extensie, met het bericht als bijlage
Begroetingopgenomen in de browser, geüpload of opgenomen vanaf de telefoon; zonder een, horen bellers een beep

Luisteren

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.

Hoofdstuk 30

Terugbelverzoeken

In de webinterface: /callbacks

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

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

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.

Deel 3

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.

Hoofdstuk 32

Functiecodes, doorsturen en sneltoetsen

In de webinterface: /codes

Functiecodes 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

CodeWat het doet
*72elke oproep doorsturen (dan het nummer en #, of het nummer rechtstreeks erna: *722125550199)
*73doorsturen van elke oproep stoppen
*90 / *91doorsturen wanneer in gesprek / stoppen
*52 / *53doorsturen wanneer niet beantwoord / stoppen
*78 / *79niet storen aan / uit
*76niet storen omkeren (stijgende toon: nu aan)
*21volg-mij aan- en uitzetten
*8een oproep beantwoorden die in uw oproepgroep rinkt
** en een extensiede oproep beantwoorden die voor die extensie rinkt
*80 en een extensieintercom: die telefoon beantwoordt op zijn luidspreker
*0 en een codeeen snelkeuze
*62wekker: hoor het, boek een wekker (vier cijfers, zoals 0630) of annuleer het (ster)
*68 en een cijferkamerstatus, voor huisvesting in hotels
*28 en een code van een schakelaareen dag/nachtschakelaar (hoofdstuk 25) omkeren, of terug
*32de laatste beller blokkeren: het laatste externe nummer dat deze telefoon belde, komt op de blokkeerlijst (Spam-bescherming (hoofdstuk 56))
*43de echotest
*97uw voicemail
70een oproep parkeren (doorschakelen hier); 71 tot 79 pakken het op
*45 / *46wachtrijagenten: in- of uitloggen / pauzeren of hervatten
*33 / *34in- of uitloggen bij een warme werkplek
*7 / *8 tijdens een oproeppauzeren en hervatten van de opname (kaartbetalingen)

Doorsturen

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

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

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

*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

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

Intercom

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

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

Hoofdstuk 33

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.

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

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

TabWat er is
Waar oproepen naartoe gaanniet storen; doorsturen van elke oproep, wanneer bezet en wanneer niet beantwoord; volgnummers; eigen sneltoetsen
Voicemailberichten om af te spelen en te verwijderen, met transcripties en samenvattingen wanneer AI is ingeschakeld; begroeting opnemen of uploaden
Uw oproepende oproepen van de persoon, nieuwste eerst, zonder opnames
PINPIN 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).

Hoofdstuk 34

Conferentiekamers

In de webinterface: /conferences

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

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

Een kamer instellen

  1. Open Conferentiekamers (hoofdstuk 34) en druk op Conferentiekamer toevoegen.
  2. Geef het een nummer (elk vrij nummer, 500 standaard) en een naam.
  3. Stel optioneel een PIN in. Bellers horen een toon, voeren de PIN in en drukken op #. Drie verkeerde PIN's en het gesprek eindigt.
  4. Stel optioneel een leider-PIN in, verschillend van de PIN. Wie deze invoert, voegt zich bij als leider.
  5. Om externe bellers toe te laten, wijs een inkomende route (of een menu-toets) naar de kamer.

Keuzes

KeuzeWat het doet
Wacht op de leideriedereen 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 stiltevoor 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 opde 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 verlatenstandaard aan
Meeste mensen tegelijk50 standaard, tot 200

Toetsen tijdens een gesprek

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:

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.

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.

Hoofdstuk 35

Pagina en luidsprekers

In de webinterface: /paging

Pagina 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

  1. Ga naar Paging (hoofdstuk 35) en druk op Paginagroep toevoegen en geef deze een nummer (standaard 800) en een naam.
  2. Kies de telefoons. Overheadluidsprekers die zijn ingesteld als extensies (type Overheadluidspreker) kunnen ook leden zijn.
  3. 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

PaginatieIntercom
Wie hoortiedereen in de groepéén extensie
Terugpratennee, eenrichtingsverkeerja, tweerichtingsverkeer
Hoebel 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.

Hoofdstuk 36

Hot desking

In de webinterface: /phones

Een 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

  1. Bel op de telefoon *33 en wacht op het geluid.
  2. Voer uw extensie en # in, en wacht op het geluid.
  3. 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.

Hoofdstuk 37

Hotel- en wekoproepen

In de webinterface: /hotel

Wekoproepen

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.

The hotel system (PMS)

Hoofdstuk 38

Contacten op elke telefoon

In de webinterface: /contacts

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

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

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:

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

  1. In het Entra-admincentrum, App-registraties, Nieuwe registratie: noem het BitVoice, enkele tenant, geen omleidingsadres.
  2. API-machtigingen, Een machtiging toevoegen, Microsoft Graph, Toepassingsmachtigingen: User.Read.All, OrgContact.Read.All en Calendars.ReadBasic. Vervolgens Admin-toestemming verlenen.
  3. Certificaten en geheimen, Nieuw clientgeheim: kopieer de waarde (weergegeven eenmalig).
  4. 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):

  1. 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.
  2. 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.
  3. In BitVoice: het sleutelbestand en het e-mailadres van een beheerder voor het serviceaccount om als te handelen.

Wat binnenkomt:

Hoofdstuk 39

Kalenders en niet storen

In de webinterface: /extensions

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

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

In de extensie, Kalender en niet storen, plakt u het privé-adres van de kalender:

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.

Hoofdstuk 40

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.

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

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:

PushWat u nodig heeft
Push-relayBioDream's relay (met hosting of ondersteuning) of uw eigen bvpush: het Relay-adres, Sleutel-ID en Geheim
Eigen appsuw 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

  1. Open het toestel en druk op Telefoon toevoegen.
  2. 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:

De andere tabs

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.

Hoofdstuk 41

Videogesprekken

In de webinterface: /settings

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

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

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.

Hoofdstuk 42

Fax: verzenden en ontvangen, faxapparaten en analoge telefoons

In de webinterface: /faxes

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

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

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:

Hoofdstuk 43

Postvak IN: webchat, WhatsApp en Messenger

In de webinterface: /inbox

Het 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

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.

Hoofdstuk 44

Bedrijfsteksten (SMS)

In de webinterface: /texts

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

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

Instellen

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

Hoofdstuk 45

Overdracht van korte beschrijvingen

In de webinterface: /settings

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

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

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.

Deel 4

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.

Hoofdstuk 46

Actieve gesprekken

In de webinterface: /calls

Actieve gesprekken toont elk lopend gesprek, bijgewerkt zoals het gebeurt: wie belt wie, hoe lang het al duurt, de codecs en de kwaliteit.

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

Wat beheerders kunnen doen

ActieWat het doet
Ophangenbeëindigt de oproep voor beide partijen
Deur openenvoor een oproep van een deurstation
Opnemen pauzerenvoor een kaartnummer: het gepauzeerde gedeelte is stil in de opname en gemarkeerd in de geschiedenis (Oproepopname (hoofdstuk 51))
Luisterende oproep stil kunnen horen
Fluisterenpraat alleen met de agent; de beller hoort niets
Binnenvallendeelnamen 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

Wanneer een gesprek eindigt, wordt het verplaatst naar Gespreksgeschiedenis (hoofdstuk 47).

Hoofdstuk 47

Gespreksgeschiedenis

In de webinterface: /history

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

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

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:

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.

Hoofdstuk 48

Klantentijdlijn

In de webinterface: /timeline

De klantentijdlijn toont alles met één telefoonnummer in het afgelopen jaar, met de nieuwste eerst, zodat degene die opneemt het hele verhaal kent.

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

Wat het laat zien

ItemMet
Gesprekkenwie ze heeft beantwoord, hoe lang ze duurden, en met een transcript, een samenvatting, de opname en het transcript
Voicemailshun samenvattingen
Tekstenin beide richtingen
Callbacksaangevraagd en of ze zijn gedaan
Notitiesde 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.

Hoofdstuk 49

CRM: bellerkaarten en gesprekslogboek

In de webinterface: /settings

Verbind een klantsysteem in Instellingen (hoofdstuk 14), CRM. Het werkt met elk systeem dat een webadres heeft, zonder code die voor elk product is geschreven.

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

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:

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.

Hoofdstuk 50

Inzicht in oproepen voor supervisors

In de webinterface: /quality

Voor contactcentra: bewijs over hoe oproepen verliepen, voor een supervisor om naar te luisteren, nooit een automatische score.

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

Hoofdstuk 51

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.

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

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.

Hoofdstuk 53

Gesprekskwaliteit

In de webinterface: /quality

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

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

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

Hoofdstuk 54

Kosten en budgetten

In de webinterface: /costs

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

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

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.

Hoofdstuk 55

Beller-ID-reputatie en gemarkeerde oproepen

In de webinterface: /reputation

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

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.

Hoofdstuk 56

Spam-bescherming en STIR/SHAKEN

In de webinterface: /settings

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

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

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:

KeuzeWat de beller krijgt
Rinkelen zoals gebruikelijkhet gesprek rinkelt zoals elk ander (standaard)
Robot-test eerstBitVoice 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 eldersniets 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.

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

Deel 5

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.

Hoofdstuk 57

Beheerders

In de webinterface: /users

Beheerders 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

RolKan
Beheerderalles wijzigen, opnames afspelen, elke geheime veldbestaan zien (nooit de waarde)
Kijkeralles 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)).

Hoofdstuk 58

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.

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

Instellen

In Instellingen (hoofdstuk 14), Single sign-on:

  1. Registreer een applicatie bij de provider, met het Redirect-adres dat hier wordt weergegeven.
  2. Invullen voor een provider stelt de Issuer in voor de meest voorkomende; kopieer de Client ID en Client secret van de provider.
  3. Geef de Beheerdersgroepen en Kijkergroepen van de provider een naam. Groepsclaim is waar de provider ze plaatst (groups tenzij ingesteld).
  4. Wijzig optioneel de Knopptekst op de aanmeldingspagina.
  5. Schakel Gebruik single sign-on in.

Hoe het werkt

Hoofdstuk 59

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:

  1. 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.
  2. Server: ldaps://dc1.example.com (poort 636), of ldap://... 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.
  3. Leesaccount en Wachtwoord: een account dat mensen en groepen mag lezen (reader@example.com op Active Directory). Het wachtwoord kan een verwijzing naar een sleutelkluis zijn (Instellingen, Sleutelkluizen).
  4. 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.
  5. 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

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:

Hoofdstuk 60

Beveiliging

In de webinterface: /security

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

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

Tegen wachtwoordraden

Tegen fraude

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:

SituatieWat het doet
Een oproep in het buitenland naar een land dat deze extensie de afgelopen 90 dagen heeft gebeldlaat het door
Een eerste oproep naar dat land in 90 dagenlaat 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 extensieweigert 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 noodnummerlaat 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:

Versleuteling

Wie mag wat

Hoofdstuk 61

Wijzigingen, back-ups en import

In de webinterface: /changes

Elke opgeslagen wijziging is een revisie: genummerd, met wie het heeft gemaakt, wanneer en een korte samenvatting. Niets in de configuratie gaat ooit verloren.

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

Vergelijken en herstellen

Exporteren en importeren

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.

Hoofdstuk 62

Updates

In de webinterface: /updates

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

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

Installeren van een update

  1. Download de nieuwe release en pak deze uit. Naast het programma staat de handtekening van BioDream: bitvoice.sig, of bitvoice.exe.sig op Windows.
  2. Op Updates (hoofdstuk 62) uploadt u het programma en het .sig-bestand.
  3. Druk op Installeren. Standaard wacht BitVoice totdat er geen gesprekken in uitvoering zijn; u kunt ook meteen installeren.
  4. 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 uitvoertUpdates accepteert
een release, v0.1.3 of lateralleen programma's ondertekend door BioDream
v0.1.2 of eerder, of een build van uzelfelk programma: zonder sleutel kan een .sig-bestand niet worden gecontroleerd en wordt genegeerd
Hoofdstuk 63

Meerdere servers als één telefoonsysteem

In de webinterface: /servers

Twee of meer BitVoice-servers die één PostgreSQL-database delen, werken als één telefoonsysteem:

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

Instellen

  1. Verplaats de gegevens van de eerste server naar PostgreSQL: Instellingen, Database.
  2. Start elke andere server met dezelfde database: bitvoice -database postgres://… (of de BITVOICE_DATABASE-omgevingsvariabele). Het voegt zich meteen bij; Servers vermeldt het.
  3. 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.
  4. Vertel telefoons hoe ze de servers kunnen vinden (hieronder).
  5. 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:

Providerlijnen. In elke trunk, geeft Gedeeld tussen servers aan hoe:

Wanneer een server stopt

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

Hoofdstuk 64

Waar de gegevens worden opgeslagen (SQLite of PostgreSQL)

In de webinterface: /settings

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

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

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.

Hoofdstuk 65

Andere organisaties hosten

In de webinterface: /tenants

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

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

Wanneer te gebruiken

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

  1. Open Organisaties (hoofdstuk 65) en druk op Organisatie toevoegen.
  2. 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.
  3. 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.
  4. Stel de eerste beheerder in: een gebruikersnaam en een wachtwoord van minstens 12 tekens, en het land.
  5. 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

Aanvraaggaat naar
van een telefoon die zich aanmeldt bij pbx.acme.examplede organisatie met dat domein
van een telefoon die zich aanmeldt als acme.100Acme, extensie 100
van een provider, voor een nummerde organisatie waarvan de trunk het nummer afkomstig is en waarvan de binnenkomende route dat nummer heeft
alles andershet 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

LimietWat gebeurt bij
Extensieshet toevoegen van nog een extensie wordt geweigerd met een bericht
Oproepen tegelijknieuwe oproepen worden geweigerd (503) totdat er een eindigt
Opslagnieuwe opnames en voicemail worden niet bewaard
AI-aanvragen per dagtranscripten, 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.

Hoofdstuk 66

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.

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

De codecs

CodecGeluidBandbreedteGebruikt door
G.722HD (breedband)64 kbit/smeeste bureautelefoons: de beste keuze tussen hen
G.711 µ-lawtelefoon64 kbit/sNoord-Amerika en Japan; elke carrier
G.711 A-lawtelefoon64 kbit/sde rest van de wereld
OpusHD, omgaat met verlies24 kbit/sbrowsers en mobiele apps
G.729telefoon, een beetje ruwer8 kbit/sdunne verbindingen, sommige carriers
G.726 (40 kbit/s)telefoon; draagt modemtonen het beste van de G.726-snelheden40 kbit/sgateways, sommige DECT-systemen
G.726 (32 kbit/s)nabij telefoon32 kbit/sDECT-basissen, oudere gateways
G.726 (24 kbit/s)tussen 32 en 1624 kbit/ssommige DECT-systemen
G.726 (16 kbit/s)ruw16 kbit/szeer dunne verbindingen
AMR-WB (G.722.2)HD6,6 tot 23,85 kbit/sHD-telefonie in mobiele netwerken, VoLTE-interconnects
AMRtelefoon, mobiel4,75 tot 12,2 kbit/smobiele netwerken, sommige carriers en gateways
iLBCtelefoon, omgaat met verlies13,3 of 15,2 kbit/soudere softphones en apps
Speextelefoon15 kbit/s (2,15 tot 24,6)oudere softphones, verbindingen met andere Asterisk-systemen
GSMruwer13 kbit/soudere softphones en gateways
G.723.1ruw; alleen omgezet met ffmpeg5,3 of 6,3 kbit/szeer oude videotelefoons en gateways
G.722.1 (Siren 7)breedband, ongewijzigd overgedragen24 of 32 kbit/sPolycom-telefoons, video- en conferentietelefoons
G.722.1C (Siren 14)super-breedband, ongewijzigd overgedragen24 tot 48 kbit/sconferentietelefoons, ruimtesystemen
G.719volledig band, ongewijzigd overgedragen32 tot 128 kbit/stelepresenceruimtesystemen
Codec2zeer lage bandbreedte, ongewijzigd overgedragen0,7 tot 3,2 kbit/sradiolinks, 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.

Hoofdstuk 67

Microsoft Teams (Direct Routing)

In de webinterface: /trunks

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

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

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

  1. 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.
  2. Trunks, Toevoegen, begin met Microsoft Teams: voer de openbare naam van de server in. De lade zegt of het certificaat het dekt.
  3. 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.
  4. 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.

Hoofdstuk 68

Importeren

In de webinterface: /import

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

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

Overstappen van FreePBX

Het beste bestand is een FreePBX-backup: hierin staat alles, inclusief SIP-wachtwoorden.

  1. 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.
  2. Download de back-up vanuit de rij (het bestand heet bijvoorbeeld 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. 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.
  4. 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.
  5. Kies Toevoegen. Het is één revisie op Wijzigingen (hoofdstuk 61): herstel het daar als iets er verkeerd uitziet, en importeer opnieuw.
  6. Verplaats de telefoons: wijs elk naar BitVoice (of stel ze in vanuit Telefoons (hoofdstuk 4)), met hetzelfde extensienummer en SIP-wachtwoord dat ze hadden.
  7. 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:

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:

Groepen en routes. Upload ze met het personeelsbestand, zodat elke groepsleden worden gevonden op nummer of op naam:

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.

Hoofdstuk 69

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

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

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.

Hoofdstuk 70

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.

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

AMI

Het managerinterface op TCP-poort 5038 (AMI luistert naar: standaard alleen naar deze computer). Ondersteund:

TypeNamen
ActiesInloggen (plain of MD5-uitdaging), Ping, Gebeurtenissen, Filter, LijstOpdrachten, CoreShowChannels, Status, CoreStatus, CoreInstellingen, PJSIPShowEndpoints, Extensiestatus, ExtensiestatusLijst, ApparaatstatusLijst, Getvar, Origineer, Redirect, BlindTransfer, Hangup, Uitloggen
WachtrijenWachtrijstatus, WachtrijSamenvatting, WachtrijPauze, WachtrijToevoegen en WachtrijVerwijderen (ze tekenen een agent in of uit alle wachtrijen), Agenten
OverigGeparkeerdeOproepen; ConfbridgeLijstKamers, ConfbridgeLijst, ConfbridgeTrappen, ConfbridgeDempen, ConfbridgeOntdempen, ConfbridgeVergrendelen, ConfbridgeOntgrendelen; PostbusAantal, PostbusStatus; PauzeerBewaking, HervatBewaking; GebruikerGebeurtenis; OpnieuwLaden (niets om opnieuw te laden: wijzigingen worden direct toegepast)
GebeurtenissenNieuwKanaal, 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:

AanvraagWat het doet
GET /ari/channelsde lopende gesprekken
POST /ari/channels?endpoint=PJSIP/100&extension=5551234toon 100, dan bel de nummer
DELETE /ari/channels/{id}ophangen
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102stuur het gesprek naar 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefoons, bruggen, versie
/ari/eventseen WebSocket van gebeurtenissen
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaween 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:

AanvraagWat het doet
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42speelt 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=%23neemt (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=123verstuurt toetsen naar de beller
GET/POST /ari/channels/{id}/variable?variable=X&value=Yde variabelen van het kanaal
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEmengbruggen: iedereen in één hoort iedereen anders
POST /ari/channels/{id}/continue?extension=101laat 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=NAMElaat 101 overgaan; beantwoord, het komt de applicatie binnen
GET /ari/applicationsde applicaties, of een programma verbonden is, en hun kanalen
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutedempt wat de beller zegt (in), wat ze horen (out) of beide
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencewachtmuziek naar de beller (ChannelHold, ChannelUnhold), of stilte
GET/POST /ari/channels/{id}/variablesmeerdere variabelen tegelijk (ChannelVarset)
POST /ari/channels/{id}/move?app=othergeeft 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=NAMEeen 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 .../dialeen 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_statisticsverstuurd en ontvangen pakketten en bytes, verlies en jitter
POST /ari/playbacks/{id}/control?operation=pausepauzeert, 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, .../mutekopieert een opname; pauzeert of dempt een live opname
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterabonnementen (kanaal:, brug:, endpoint:PJSIP/100, deviceState:) en gebeurtenisfilters ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEtelefoontoestellen (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=0voicemailtellers voor extensies (100@default), en postvakken die een programma zelf bijhoudt
GET /ari/soundsde 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=Hieen tekstbericht naar de telefoon van extensie 100
POST /ari/events/user/{name}?application=NAMEeen gebruikersgebeurtenis naar een applicatie (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, 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:

VeldWat het is
Scriptnaamhoe bestemmingen het noemen
Adreseen 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
Argumentendoorgegeven als agi_arg_1, agi_arg_2 …
Nummer om het te bellenoptioneel: extensies bellen het als elk nummer
Fallbackwaar het gesprek naartoe gaat als het script eindigt zonder een nummer te kiezen, of niet bereikbaar is
Langste uitvoeringeen script dat langer loopt, wordt gestopt (standaard een uur)
EAGIvoor 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):

OpdrachtenNotities
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP met een kanaalnaam alleen eindigt de oproep van het script
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITontsnappingsymbolen, 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 DATETIMEmet een spraakdienst in Instellingen, AI worden ze gesproken; zonder, worden de cijfers gesproken vanaf Geluiden
RECORD FILEs=N stilte, een piep, ontsnappingsymbolen; het bestand belandt in de geluidsbibliotheek
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … en ${NAME}-uitdrukkingen
DATABASE GET, PUT, DEL, DELTREEAsterisk's database (AstDB), behouden door BitVoice en getoond onder AGI-database
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION is waar de oproep naartoe gaat wanneer het script eindigt
SPEECH CREATE … SPEECH RECOGNIZEgebruikt 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
EXECAnswer, 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.

Hoofdstuk 71

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

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

Handelen (met Laat assistenten handelen, en een token die dingen kan veranderen):

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

Hoofdstuk 72

Archief

In de webinterface: /archive

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

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

Instellen

  1. Op Archief (hoofdstuk 72), kies Waar archiveren: Amazon S3 of Azure.
  2. 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.
  3. Voor Azure: een Container SAS-URL met schrijfmachtiging, en een optionele Map in de container.
  4. 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.

Hoofdstuk 73

Wettelijke retentie

In de webinterface: /holds

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

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

Een hold toevoegen

Op Rechtelijke holds (hoofdstuk 73), druk Toevoegen:

VeldWat het is
Naamhoe de zaak heet
Redenwaarom, voor het dossier
Nummersde interne en externe nummers die het dekt (101, +15551234567), of Alles
Van, Totde datums die het dekt; leeg voor geen limiet

Terwijl een retentie van kracht is

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.

Hoofdstuk 74

Metrische gegevens: Prometheus, OpenTelemetry, Grafana, SNMP en gespreksrecords

In de webinterface: /settings

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

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

Verstuur een testrecord probeert de syslog-server en de database met de opgeslagen instellingen.

Hoofdstuk 75

Oproepgenerator

In de webinterface: /loadtest

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

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

Een test uitvoeren

InstellingWat het is
Nummer om te belleneen nummer binnen BitVoice: een extensie, een groep, een wachtrij, een menu
Gesprekken komen vanhet nummer van de beller dat wordt getoond
Beantwoorden alseen extensie die de generator zelf beantwoordt; of niemand, wanneer het nummer zelf beantwoordt (een menu, de echotest)
Gesprekkenhet totale aantal
Tegelijkhet 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 secondehoe snel ze starten
Elke duurt (s)hoe lang elk gesprek duurt

Lees de resultaten

ResultaatWat het zegt
Beantwoord, Mislukten Waarom gesprekken mislukten, per reden
Beantwoordtijd, mediaan en 95%hoe lang bellers hebben gewacht
Audio verlorenhet aandeel van geluidspakketten dat nooit is aangekomen
Audio-scoreeen schatting van het geluid (MOS): 4 en hoger is goed, onder 3,6 is slecht
Jitter, 95% van gesprekkenhoe ongelijkmatig het geluid terugkwam (RFC 3550 interarrival jitter, gemiddeld over elk gesprek); telefoons glad maken tot ongeveer 20 ms
Langste onderbreking, slechtste gesprekde langste wachttijd tussen twee geluidspakketten in een gesprek; deze komen elke 20 ms, dus een stilstand van de server wordt hier weergegeven
Geheugenuitstelpauzes, langste pauzehoe 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 tijdeen grafiek van de belasting
Hoofdstuk 76

SIP-trace

In de webinterface: /trace

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

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

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 zietHet betekent meestal
REGISTER beantwoord met 401, dan nietsde telefoon heeft geen wachtwoord of heeft het verkeerde wachtwoord
REGISTER beantwoord met 403het adres is geblokkeerd, of de telefoon meldt zich aan als een andere extensie
INVITE beantwoord met 404geen route komt overeen met het gedialde nummer (Oproeproutering (hoofdstuk 8))
INVITE beantwoord met 403 door de providerde provider weigert de caller ID of het nummer
486de andere kant is bezet
488de twee kanten hebben geen codec gemeen (Codecs (hoofdstuk 66))
200 OK, dan BYE na ongeveer 30 secondende ACK is nooit aangekomen: een router ertussen herschrijft of verwijdert berichten (schakel de "SIP ALG" uit)
Een oproep verbindt, maar niemand hoort ietshet geluid is geblokkeerd: controleer het openbare adres in Instellingen en de mediapoorten in de firewall
Deel 6

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.

Hoofdstuk 77

911-gesprekken (het 911-profiel)

In de webinterface: /psap

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

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

Instellen.

  1. Op Trunks (hoofdstuk 7) voegt u de trunk van uw ESInet-provider (of de NG911-kern ESRP) toe en schakelt u Vanuit ESInet in.
  2. In Call routing (hoofdstuk 8) stuurt u de oproepen naar uw call-takers: een wachtrij, of een ringgroep.
  3. 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:

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

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.

Hoofdstuk 78

Radiodispatchconsole

In de webinterface: /radio

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

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

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

Hoofdstuk 79

NG911 Core Services (ECRF, ESRP, LVF, BCF, LIS, logging)

In de webinterface: /core

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

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

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:

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.