BitVoice-brugervejledning

Et åbent kilde-telefonsystem i ét program, konfigureret helt i webgrænsefladen: udvidelser, køer, konferencerum, medarbejderportal, hosted organisationer og offentlig-sikkerhedslaboratorie-sporet.
79 kapitler · 63 figurer · 46 tusind ord · BioDream LLC

Indhold

  1. Del 1. Kom i gang
    1. 1. Kom i gang
    2. 2. Hvor modent hver del er
    3. 3. Udvidelser
    4. 4. Tilslutning af telefoner
    5. 5. Skinny-telefoner og MGCP-gateways
    6. 6. Telefoni-kort
    7. 7. Trunk
    8. 8. Opkaldsrouting
    9. 9. PIN-sæt
    10. 10. Opkalders ID-søgning
    11. 11. Nødkald
    12. 12. Steder og kontor 911
    13. 13. Sundhed
    14. 14. Indstillinger
    15. 15. Skærmene på dit sprog
  2. Del 2. Hvor opkald går hen
    1. 16. Opkaldsflow
    2. 17. Ringgrupper
    3. 18. Køer
    4. 19. Udgående dialer
    5. 20. Lyde: prompts, sprog og holdemusik
    6. 21. Menuer (auto attendant)
    7. 22. Navn-vejledning
    8. 23. Indringning (DISA)
    9. 24. Tale robotter (AudioSocket)
    10. 25. Dag/nat toggles
    11. 26. Tidsplaner
    12. 27. Scripter (JavaScript og Lua)
    13. 28. AI-receptionist, voicemail-triage og spørgsmål
    14. 29. Telefonsvarer
    15. 30. Callback
    16. 31. Opkaldslinks og websamtale
  3. Del 3. Hverdagsopkald
    1. 32. Funktioner, videreformidling og hurtigvalg
    2. 33. Medarbejderportalen
    3. 34. Konference rum
    4. 35. Højttaler- og højtaleranlæg
    5. 36. Hot desking
    6. 37. Hotel og vækkeopkald
    7. 38. Kontakter på hver telefon
    8. 39. Kalendere og ikke forstyr
    9. 40. Mobile apps
    10. 41. Videoopkald
    11. 42. Fax: sending og modtagning, faxmaskiner og analoge telefoner
    12. 43. Indbakke: webchat, WhatsApp og Messenger
    13. 44. Erhvervstekstning (SMS)
    14. 45. Overføringsbriefing
  4. Del 4. Kunder og indsigt
    1. 46. Live-opkald
    2. 47. Opkaldshistorik
    3. 48. Kundetidslinje
    4. 49. CRM: opkaldende-kort og opkaldslogning
    5. 50. Kald indsigt for ledere
    6. 51. Opkaldsoptagelse og kreditkortbetalinger
    7. 52. Optagelses-samtykke
    8. 53. Opkaldskvalitet
    9. 54. Omkostninger og budgetter
    10. 55. Opkalders rygte og mærkede opkald
    11. 56. Spam-beskyttelse og STIR/SHAKEN
  5. Del 5. Kørsel af BitVoice
    1. 57. Administratore
    2. 58. Enkelt-logon
    3. 59. Virksomhedsadresse (Active Directory og LDAP)
    4. 60. Sikkerhed
    5. 61. Ændringer, sikkerhedskopier og import
    6. 62. Opdateringer
    7. 63. Flere servere som ét telefonisystem
    8. 64. Hvor dataene gemmes (SQLite eller PostgreSQL)
    9. 65. Værter andre organisationer
    10. 66. Codec og lyd
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importér
    13. 69. Konfiguration som kode
    14. 70. Asterisk-kompatibilitet (AMI, ARI og AGI)
    15. 71. AI-assistenter (MCP)
    16. 72. Arkiv
    17. 73. Juridisk retention
    18. 74. Metrikker: Prometheus, OpenTelemetry, Grafana, SNMP og opkaldsoptagelser
    19. 75. Opkaldsgenerator
    20. 76. SIP-sporing
  6. Del 6. Offentlig sikkerhed: laboratorie-sporet
    1. 77. 911-opkald (911-profilen)
    2. 78. Radiodispatch-konsol
    3. 79. NG911 Core Services (ECRF, ESRP, LVF, BCF, LIS, logging)
Del 1

Kom i gang

Fra en ny installation til et fungerende telefonsystem: udvidelser, telefoner, et teleselskab, hvor opkald går hen, nødkald fra jeres kontorer og hvordan man kan se, om alt er klar.

Kapitel 1

Kom i gang

I webgrænsefladen: /

BitVoice er et komplet telefon-system i ét program: telefoncentralen, som telefoner logger ind på, menuer og køer, som ringerne bevæger sig gennem, voicemail, optagelse, konferencelokaler, faks og forbindelserne til telefon-selskaber. Alt er konfigureret i browseren, på skærme, som denne vejledning beskriver. Der er ingen konfigurationsfil at redigere og intet andet at installere.

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
Figur 1. Where BitVoice sits: phones and carriers on one side, people and systems on the other

Hvad du behøver

Første start

Start BitVoice og åbn adressen, den udskriver (på en skrivebord åbner den browseren selv). Web-grænsefladen er kun HTTPS, også på denne computer. Indtil du installerer et certifikat af din egen (Indstillinger, Certifikat), bruger BitVoice et, den selv har lavet, så browseren advarer én gang: vælg at fortsætte til siden. Konfigurationsguiden spørger om fire ting: organisationens navn og land, den første administrators adgangskode, den første udvidelse og dit telefon-selskab, hvis du har et. Landet bestemmer nød-numre, tone, ringerne hører og måden, telefon-numre skrives på.

Første time

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.
Figur 2. The first hour: five steps from a new install to a working phone system
  1. Ekstensioner: en per person eller skrivebord. Hver har et nummer og en SIP-adgangskode. Åbn Ekstensioner (kapitel 3)
  2. Telefoner: tilslut en skrivebordstelefon, softphone eller browser-telefon til hver ekstension. Åbn Telefoner (kapitel 4)
  3. Trunk: jeres telefonudbyderkonto, så I kan ringe til eksterne numre og modtage opkald. Åbn Trunk (kapitel 7)
  4. Opkaldsrouting: hvor opkald fra eksternt kommer til (en person, en ringegruppe, en menu), og hvilken trunk der bruges til eksterne opkald. Åbn Opkaldsrouting (kapitel 8)
  5. Sundhedsrapport fortæller jer, hvad der endnu mangler, med nødopkald først. Åbn Sundhedsrapport (kapitel 13)

Herefter kan du lave et test-opkald: fra enhver telefon tast *43, echo-testen. Du hører dig selv tilbage, hvilket beviser, at lyden fungerer begge veje.

Installation i én kommando

På en Linux-server (Ubuntu, Debian, RHEL, Fedora, Alpine med systemd) eller en Mac:

curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sh

På Windows, i PowerShell:

irm https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.ps1 | iex

Det downloader den seneste version til computeren, checker den mod versionens SHA-256 summer og BioDreams udgivelsessignatur (med OpenSSL 3, eller ellers med OpenSSH's ssh-keygen, som Windows 10 og 11, macOS og Ubuntu 20.04 har; ssh-keygen checker udgivelser fra v0.1.14 og frem), og installerer den som en tjeneste, der starter selv:

Kør samme kommando igen for at opgradere (eller brug Opdateringer (kapitel 62)). sh -s -- --version v0.1.5 (efter røret) vælger en udgivelse; --uninstall fjerner programmet og tjenesten og gemmer data, --purge fjerner også data. På Windows, gem scriptet og kørende .\install.ps1 -Version v0.1.5, -Uninstall eller -Purge, eller fjern det i Installerede apps. For en server, der holdes uden for internettet, kopier udgivelsens arkiv og SHA256SUMS til en mappe og angiv BITVOICE_FROM til den.

Hvor det kører

BitVoice kører på Linux, macOS og Windows.

SystemHvordan starte detHvor dets data er
Linux./bitvoice (eller systemd-tjenesten i udgaven)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsdobbeltklik bitvoice.exe%APPDATA%\BitVoice

On Windows, keep the window it opens while you use BitVoice (closing it stops BitVoice), and when Windows asks whether it may use the network, allow private networks so phones can connect. -data puts the data anywhere else; -https and -sip choose the addresses and ports; -log FILE also writes everything it prints to a file, for a computer where nobody watches its window.

De porte det bruger

PortHvad til
5060 UDP og TCPSIP: telefoner og trunker
5061 TCPSIP over TLS (krypteret signalering)
4569 UDPIAX2-trunker, kun når en er konfigureret
1720 TCPH.323-trunker, kun når en er konfigureret
2000 TCPSkinny (SCCP)-telefoner, kun når aktiveret
2727 UDPMGCP-gateways, kun når aktiveret
10000–20000 UDPlyden af opkald (RTP), konfigureres i Indstillinger
8443 TCPdenne webinterface, HTTPS kun (ren HTTP sendes videre til HTTPS)

Hvis en anden telefoncentral allerede har 5060, tager BitVoice den næste ledige port, og Status siger det.

Alt i webinterfacen

Hver indstilling har en skærm, og hver skærm har et kapitel her. Intet kræver en konfigurationsfil, en kommandolinje eller et andet værktøj. Til automatisering er de samme skærme en REST-API, og konfigurationen kan følge en fil i Git (Konfiguration som kode (kapitel 69)), men ingen af delene er nogensinde påkrævet.

Hvad BitVoice er til

BitVoice er først og fremmest en telefoncentral til kontorer og kontaktcentre, og en værtsservice til udbydere: alt i de første fem dele af denne vejledning. 911-svarpunktprofilen, radiodispatchkonsollen og NG911 Core Services er en separat laboratorie- og designpartnerbane (Offentlig sikkerhed (kapitel 77)): de er ude af menuen, indtil de er aktiveret i Indstillinger, og ikke certificeret til brug i live.

At finde vej

Kapitel 2

Hvor modent hver del er

Hvor langt hver del er blevet bevist, åbent. Felttestet: kørt mod rigtige systemer over et rigtigt netværk (Amazon EC2, internettet, rigtige udbyderes tjenester). Tjekket mod en reference: testet mod en uafhængig implementering eller standardens egen data. Softwaretestet: BitVoices egne tests og browser-tests kun, ikke endnu med rigtig udstyr eller konti. Laboratorium: offentlig-sikkerhedsdele, ikke certificeret.

OmrådeModenhedHvad det hviler på
SIP-trunker: registrering, indgående og udgående opkald, opkalders ID, beskæftiget, taster (RFC 4733)Felttesteten kommerciel udbyder, SIP.US (demo-konto, fra EC2): registrering og udgående opkald til det offentlige telefonnetværk over UDP og over TLS med udbyderens certifikat kontrolleret; MOS 4,39, ingen tab. Indgående opkald fra det offentlige telefonnetværk: T38Fax (fax-opkald til dets nummer, registrering over UDP). Asterisk som udbyder over internettet på EC2; MOS 4,4. Kamailio 5,7 (registrering med digest-signatur over TLS, opkald i begge retninger, taster) og FreeSWITCH 1,11 (TLS og SRTP, opkald i begge retninger, G.722 til G.711) som den fjerne ende; MOS 4,39
Skrivebordstelefone over SIPFelttestetAsterisk som skrivebordsphone over internettet. Ægte Yealink-, Poly- eller Grandstream-håndapparater er endnu ikke testet
Browser-telefon (WebRTC)Felttestetfra udenfor til EC2; Chromium-browser-test med lyd i begge retninger
To servere, en PostgreSQL, failoverFelttestetkill -9 og planlagt stop på EC2: opkaldet fortsætter, udbyderlinjen flyttes
En-kommando-installationFelttestetUbuntu 24,04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (som administrator og ikke, i PowerShell 5,1 og 7), Ubuntu 20,04 og Fedora 42 i containere, macOS 26 på Apple-silicium (til en person, og med sudo for hele Mac'en i CI); tilbage efter genstart
KapacitetFelttestet2.000 opkald på én gang, ingen tab, MOS 4,41, på en 16-vCPU c7i.4xlarge (omkring 10 vCPU'er beskæftiget); 200 på én gang på c7g.large, c7i.large, t4g.small, en M4 og Lightsail nano. Ved 2.000: jitter 4,0 ms for 95% af opkaldene, længste pause mellem pakker 74 ms, længste garbage-collection-pause 4,2 ms
FreePBX-migration (Import)Felttesteten ægte FreePBX 17,0,33-sikkerhedskopi (70 MB) importeret hel; andre fra FreePBX's egne formater
AI-transkriptioner, sammenfatninger, receptionistFelttesteten ægte model gennem OpenRouter
Fakta og sammenfatninger uden sprogmodelSoftware-testetopfundne 911-opkald kun: 23 af 43 fakta (53%) på den forseglede samling, 3 fakta som ingen forventede; 41/41 træning, hold-out 27/40 kold. Aldrig målt på ægte opkald.
Tale til tekst på denne server (whisper)Felttestet på macOS og Linuxwhisper-server 1,9,5 kørt af BitVoice: på en Mac, og på Ubuntu på EC2 (x86-64), hvor det skrev live-opkalds- og voicemail-transkriptioner i telefonappens felttest; downloads til hver platform bygget og testet i CI
Arkivering til S3, hemmeligheder fra AWS Secrets ManagerFelttestetægte AWS, vores egen SigV4
SNMP-overvågning og fælderFelttestetnet-snmp's snmpwalk og snmptrapd
Let's EncryptFelttestetudsteder og fornyer det offentlige demos certifikat
Maskinimages (AWS) og konfiguration som kodeFelttesteten EC2-image bygget af deploy/cloud/build-images.sh fra Ubuntu 24,04: hver server fra den starter ny; deploy/terraform med OpenTofu 1,13 (opret, ændr, ingen drift, ødelæg). Azure-images er ikke testet
IAX2-trunkerKontrolleret mod en referenceAsterisk 23
Fuldt ICE bag NAT (STUN- og TURN-klient)Kontrolleret mod en referenceChromiums ICE-agent (host-kandidater og relay kun), JsSIP-softphones med BitVoices tilbud, coturn 4,18 og BitVoices egen TURN-server som relæer, mDNS-hostnavne af Chromium løst. Endnu ikke testet fra en server bag en ægte NAT-router
ICE-genstart (en telefon, der skifter netværk midt i et opkald)Kontrolleret mod en referenceChromium genstarter ICE på et browser-telefonopkald (BitVoice som ICE-lite og som en fuld agent) og SIP.js 0,21 genstarter ved re-INVITE over SIP over WebSocket: nye legitimationsoplysninger i begge retninger, en ny kandidatpar, lyd hvert andet sekund gennem genstarten. Endnu ikke testet på en telefon, der faktisk flytter fra Wi-Fi til et mobilt netværk
SIP History-Info og Diversion (videretninger)Kontrolleret mod en referenceAsterisk 20's PJSIP i begge retninger: dens videretninger læst af BitVoice, og BitVoices videretninger læst af Asterisk's REDIRECTING() fra History-Info alene og fra Diversion alene; RFC 7044-poster gemt og udvidet på en videretning på. Endnu ikke testet med en udbyder eller Teams, der sender dem
Virksomhedsdirectory (LDAP, Active Directory)Kontrolleret mod en referenceOpenLDAP 2,4 (StartTLS og LDAPS, 1.203 personer læst gennem paginering forbi dens 1.000-grænse, grupper, login) og Samba 4's Active Directory (LDAPS, paginering forbi 1.000, deaktiverede konti udeladt, nestede grupper til ringegrupper og roller). Endnu ikke testet mod Microsofts egen Windows Server-domænecontroller
ARI (Asterisk REST Interface)Kontrolleret mod en referencehver operation af Asterisk's publicerede ARI kaldt og dens svar kontrolleret mod modellens krævede felter; ari-client 2,2,0, Asterisk's JavaScript-bibliotek, læser /ari/api-docs og kører en applikation
Alle-video-rum (SFU, simulcast) og skærmdeleKontrolleret mod en referenceTre Chromium-browsere i ét rum, hver sender tre størrelser (VP8-simulcast) og modtager de to andre; størrelser skiftes ved nøgleframes, som fliser vokser og mindsker. Kameraer og en delt skærm (Chromiums egen skærmfangst) i et H.264-rum. Endnu ikke testet med Firefox eller Safari, over internettet eller med mere end tre kameraer; H.264-simulcast vælger lag efter browserens rækkefølge kun.
AGI og FastAGI (Asterisk Gateway Interface)Kontrolleret mod en referencehver kommandos svar sammenlignet med Asterisk 20,6's over FastAGI; en FastAGI-server skrevet med pyst2 kører et opkald; EAGI-lyd til et program. Endnu ikke testet med en produktions-IVR
AI-assistenter over MCPKontrolleret mod en referenceden officielle MCP TypeScript SDK (1,32,2) som klient: værktøjer listet og kaldt med et API-token over Streamable HTTP (protokol 2025-11-25), og dens OAuth-login slut til slut (opdagelse, registrering, PKCE, token, forny); samtykke-siden i Chromium; stdio-broen mod en testserver. Endnu ikke testet med Claude, ChatGPT eller en anden assistent, der kræver en server, der er tilgængelig fra internettet med et tilladt certifikat.
Microsoft 365 og Google Workspace (kontakter og kalendere)Software-testetmod stand-ins af Microsoft Graph (brugere, organisationskontakter, kalender getSchedule, client-credentials-token) og af Googles People API, Calendar freeBusy og JWT-bærertoken, skrevet fra deres publicerede referencer; stand-ins kontrollerer, hvad BitVoice sender (JWT's signatur og krav, paginering, anmodningskroppe). Endnu ikke testet med en ægte Microsoft 365-lejer eller Google Workspace-domæne.
Skærmene på 14 sprogSoftware-testethver del af tekst, skærmene viser (om 5.000, fra koden: JSX-tekst, strenge og serverens meddelelser) maskinoversat af Llama 3,3 70B til 13 sprog, 99% beholdt af kontrollerne (samme placeringer, adresser og koder ubeskadiget); tysk tegnet gennem browser-testerne (login, menu, søgning, en form, tilbage til engelsk). Endnu ikke gennemgået af en person på noget sprog.
H.323-trunkerKontrolleret mod en referenceH323Plus 1,28 (dens simph323 afspiller og optager WAV-filer) på EC2: opkald i begge retninger med Fast Connect og G.711, hver ende hører den andens tone, MOS 4,39; opkaldsopsætning også med Asterisk's chan_ooh323 (hvis egen lyd er brudt i Asterisk 22)
SIP over WebSocketKontrolleret mod en referenceJsSIP og SIP.js
Codec'er: GSM, G.726, iLBC, MP3-holdemusikKontrolleret mod en referenceffmpeg, RFC 3951-referenceprogrammet og minimp3, prøve for prøve
Codec'er: G.711, G.722, G.729, Opus, SpeexKontrolleret mod en referenceG.711 og G.722 byte for byte og prøve for prøve med spandsp; G.729's decoder prøve for prøve på alle syv af ITU's egne Annex A-testvektorer (bcg729 er ikke), dens encoder samarbejder med bcg729 på samme kvalitet (G.729 kræver ikke, at encodere matcher); Opus-pakker dekodet af libopus 1,6,1 og libopus's pakker dekodet som libopus gør; Speex-pakker og lyd identiske med libspeex 1,2,1; Opus-opkald med Android-appen
Codec'er: AMR-NB, AMR-WBKontrolleret mod en reference, med en kendt lukkeAMR-WB dekoder som opencore-amr prøve for prøve, og på 3GPP's egne TS 26,174-testsekvenser matcher 3GPP's decoder nøjagtigt på 167 af 198 og er aldrig målbart under den. AMR-NB-encoder ramme for ramme med opencore-amr, men dens decoder er tæt på, ikke nøjagtig (omkring 31 dB fra opencore). Begge kommer fra de fastgjorte goamr-biblioteker
Codec'er, der transporteres uberørt: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2Software-testetegne tests: tilbudt med deres bitrate eller tilstand, besvaret, pakker i begge retninger byte for byte; ikke konverteret (ingen fri referencekode BitVoice må medføre til G.722.1 og G.719). Endnu ikke testet med en ægte Polycom eller rum-system
ISDN PRI og BRI, T1/E1Kontrolleret mod en referencelibpri (Asterisk's), begge sider; og på EC2 gennem den virkelige DAHDI 3,4-kernel-driver (to spans koblet sammen i kernelen, Asterisk 20's chan_dahdi som telefonudbyderen): opkald i begge retninger med numre og navne, alle 23 kanaler på én gang, MOS 4,39. Ingen fysisk kort eller linje endnu
MFC-R2, E&MKontrolleret mod en referenceOpenR2; MF-toner af vores egne tests. Ingen ægte kort eller linje prøvet
SS7 (ISUP, MTP, link-sæt af flere links med skift)Kontrolleret mod en referencelibss7 (Asterisk's chan_dahdi-bibliotek), ITU og ANSI. Ingen ægte udbyderlink prøvet
Fax (T.30, T.38)Felttesteten fax-udbyder, T38Fax (gratis prøve, fra EC2): BitVoice sender en fax over det offentlige telefonnetværk til dets eget nummer og modtager den, begge over T.38 (2 sider, 14.400 bit/s, siderne ankom intakt; registrering med brugernavn og adgangskode); og passerer en fax mellem en faxmaskine på en gateway (Asterisk med spandsp, stående i for en) og T38Fax, ud og tilbage, 2 sider på 14.400 bit/s i begge retninger: en gang alle på G.711 (gatewayen afviste T.38) og en gang skiftet til T.38 på begge sider. spandsp (gennem Asterisk 20) på EC2: modtager og sender over T.38 med fejlrettelse, og passerer faks mellem to andre maskiner over T.38 og over G.711. Ingen hardware-fax-gateway prøvet, og T38Fax bad aldrig om T.38 selv, så en udbyders skift blev afvist af gatewayen ikke set
Konfiguration: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberDataSoftware-testetleverandørernes dokumenterede formater; ikke på ægte håndapparater
Skinny (SCCP)-telefone, MGCP-gatewaysKontrolleret mod en referenceSkinny: telefoner fra det open-source mwicat/sccp-bibliotek, hver besked læst af Wiresharks dissektor, størrelser som Asterisk's chan_skinny; MGCP: Yate's MGCP-gateway (genstart, midlertidige svar, bekræftelser; den har ingen analoge porte, så ingen opkald). Ingen Cisco-telefon eller gateway-hardware prøvet
Microsoft Teams Direct RoutingSoftware-testetmod en simuleret Microsoft-proxy, der følger Microsofts publicerede Direct Routing SIP-regler (OPTIONS, Contact, user=phone, client-certifikat, overførsler Teams beder om ved REFER med x-m og x-t); ingen Teams-lejer prøvet: Microsoft tilbyder ingen gratis (Teams Phone-licenser)
Hotel (FIAS)Kontrolleret mod en referencehver post BitVoice sender kontrolleret mod Oracles publicerede FIAS 2,20,23-specifikation (link-start, link-poster, poster, væk-opkald); egne tests. Endnu ikke mod Opera selv
Tekstning, WhatsApp, Messenger, web-chatKontrolleret mod en reference (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp)Tekster gennem Twilio, Telnyx, Bandwidth, Vonage og TextMagic, og WhatsApp-tekster, skabeloner og skabelonlister, mod mocks bygget fra udbydernes egne publicerede OpenAPI-specifikationer (Stoplight Prism, afviser alt, hvad specifikationen ikke tillader; TextMagics er den, dens egen klient er genereret fra). Vonages viste, at nøglen skal være i HTTP Basic, ikke længere i formen. SignalWire taler Twilios API; Plivo, Flowroute, VoIP.ms og Messenger publicerer ingen specifikation og kontrolleres mod stand-ins skrevet fra deres dokumentation. Ingen live-konto prøvet
CRM-opkaldskort, Azure Blob, Azure Key VaultKontrolleret mod en referenceEspoCRM (en ægte open-source CRM, i Docker) til opkaldskort; Microsofts Azurite-emulator til Blob-upload (container-SAS, afvisninger); Lowkey Vault til Key Vault med en administreret identitet. Endnu ikke testet mod Azure selv eller en hosted CRM
Spam-filtrering: robot-test, ukendte opkaldere, spam-database, *32, forslagSoftware-testetBitVoices egne tests: en udbyder, der ringer ind over SIP og trykker taster (RFC 4733) på robot-testen, passerer og fejler den; kendte, altid-tilladte og nød-opkaldere ringer på én gang; spam-databasen mod en stand-in, der svarer, som Twilio dokumenterer sin Lookup med Nomorobo-tilføjelsen (ingen Twilio-konto prøvet); *32 fra en skrivebordsphone; forslag fra opkaldsposter; indstillingerne gennem browser-testerne. Endnu ikke testet mod ægte robot-opkald eller en betalt database
iPhone- og Android-appsFelttestet (Android)Android: en Google Pixel 8 (Android 16, Wi-Fi) med den signede udgivelsesbygning mod BitVoice på EC2 med et Let's Encrypt-certifikat: parret via link, ringede med Androids opkaldsnotifikation, svarede fra den, lyd i begge retninger, forblev forbundet med skærmen slukket og i baggrunden (dens pågældende opkaldsnotifikation, Hang up); uden push ringede den ikke i baggrunden. En Google Pixel 11 (Android 17) i AWS Device Farm: parret, ringede, svarede, ringede ud; Opus, MOS 4,1. iPhone: appen (SwiftUI, CallKit, PushKit VoIP) bygges mod den aktuelle SDK (Xcode 27) og serveren signerer Apple VoIP-push (APNs, ES256); samme ægte enhedsrettelser som Android og en App Store-listing (ios/AppStore) er i. Begge apps er en fuld udvidelse: overføring (blind, over REFER), hold og et andet opkald, tastatur og mute, med Recents, visuel Voicemail (med transkriptioner), en Team-beskæftiget-lampe, Kontakter, den personale Chat (kolleger med tilstedeværelse, direkte beskeder og rum, med en notifikation i baggrunden og en push, når appen er lukket), en video-rum-vælger (lister SFU-rum med, hvem der er i hvert, sluttes til som udvidelsen, vist som et video-opkald på telefon-opkaldsskærmen) og en live AI-transkription på opkaldet (AI.LiveCallTranscripts); overføring, hold, den live-transkription, chatten når en kollega, rum-vælgeren, et rum sluttes til fra en phone og chatten push-form er hver dækket af en motor-niveau, API eller browser-test. På Pixel 8 (2026-10-30, debug-bygning, EC2 med Let's Encrypt): ringede og svarede fra notifikationen, holdt og genoptog (Androids opkaldsstatus følger), ringede ud på Androids opkaldssystem, Opus i begge retninger med MOS 4,38 og ingen tab; sluttede til et video-rum med dets kamera (bedt om ved første brug) og så en desktop-kamera, begge live; en chat-besked i baggrunden notificerede og åbnede Chat. Hold og overføring når den native opkaldsskærm (CallKit, Telecom). Endnu ikke kørt på en iPhone eller indsendt: push, system-opkaldsskærmen og signing kræver vores egen Apple Developer-konto
911-profil, radiokonsol, NG911 Core Services, opkalders videoLaboratorieNENAs skemaer og samplesdata, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, en NIST P25-optagelse (dens IMBE-lydrammer pakket ud som mbelib pakker dem ud: samme tonehøjde, harmonier, stemme og amplituder); aldrig på et live ESInet, P25-system eller PSAP CAD, og ikke certificeret
P25-fase 2-halvrate-lyd (AMBE+2)Ikke tilbudtpatenteret indtil 2028
Ed448-signaturer (NENA)Ikke tilbudtikke i Gos standardbibliotek, og BitVoice skriver ingen kryptografi af sig selv; Ed25519 bruges
SS7-signalingsoverføring (STP), SCCP og TCAPKontrolleret mod en referenceOsmoSTP 2,3,0 over M3UA/TCP med libosmo-sigtrans SCCP-echo-bruger bag det: UDT og XUDT i begge retninger, UDTS returneret, global titel-oversættelse gennem STP, en switch på et link-sæt når echoen over IP; TCAP mod libosmo-asn1-tcap i begge retninger. ITU kun; ingen SCTP, forbindelsesorienteret SCCP eller SCCP-styring; ingen ægte udbyder prøvet
MFC-R2 Kina-variant (Kina nr. 1)Software-testethver signal af et opkald kontrolleret mod Ciscos publicerede Kina-tabeller og opkaldssekvenser (KA, KD, Gruppe B af KD sendt, C og D-bits 11). OpenR2's Kina-variant er uenig med sig selv, så ingen program til at teste mod; ingen ægte linje prøvet
ALI over PAM eller E2Ikke tilbudtPAM er Intrados eget protokol med ingen publiceret specifikation; E2 (J-STD-036, NENA 05-001) kører mellem en mobil positionscenter og ALI-databasen, ikke til en PSAP. BitVoice taler anmodning-og-tekst ALI-links og HELD i stedet
Kapitel 3

Udvidelser

I webgrænsefladen: /extensions

En udvidelse er et nummer for en person eller en skrivebordstelefon. Telefoner logger ind med udvidelsesnummeret og dets SIP-adgangskode; opkald til nummeret ringer på alle telefoner, der er logget ind som det, samtidig.

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

Tilføjelse af en ekstension

  1. Åbn Ekstensioner (kapitel 3) og tryk på Tilføj ekstension. Det næste ledige nummer og en stærk SIP-adgangskode bliver udfyldt.
  2. Indtast personens navn (vises på andre telefoner, når de ringer) og email (til voicemail via email).
  3. Udfyld 911-placeringen: stedet, etagen og rummet. Den sendes med nødopkald.
  4. Vælg, hvad der sker Hvis ingen svarer: voicemail som standard, eller en anden ekstension, en gruppe eller en menu.
  5. Gem. Ekstensionen kan logge på med det samme.

Felterne

FeltnavnHvad det gør
Nummer2 til 8 cifre; ingen anden udvidelse, gruppe, kø eller funktionsskode må have det
SIP-adgangskodehvad telefonen logger ind med; mindst 12 tegn; Generér laver en ny
Ringer isekunder, før Hvis ingen svarer sker (25 som standard)
Ekstern kald-idnummeret, der vises på udgående opkald; tom bruger trunkens
Kan ringe eksterne numreslukket holder telefonen til interne opkald og nødnumre
Optag kaldnår Indstillinger kun optager valgte udvidelser
Hot desken fælles telefon, der bliver den, der logger ind på den
Kryptér kald til denne telefonmedie-kryptering (SRTP); brug det med TLS, så nøglerne forbliver private
Afdelinggrupperer denne udvidelses opkaldsomkostninger

Følg-mig, afhent og intercom

Hver persons egen opkaldshåndtering er i sin egen boks på udvidelsen:

Viderebeforing lige nu

Under indstillingerne viser og ændrer Viderebeforing lige nu det, personen har indstillet fra sin telefon eller personaleportalen: ikke forstyr, og viderebeforing af hvert opkald, af opkald under beskæftigelse og af opkald, der ikke er besvaret. Disse er live-tilstand, ikke konfiguration: ændring af dem skaber ingen revision.

Hvad der er tilsluttet

Tilsluttede enheder

En åben udvidelse viser hver enhed, der er logget ind som den: telefonens mærke og model, hvordan den tilslutter (UDP, TCP, TLS eller browseren) og siden hvornår. Adresse og port til at give til en telefon vises også der.

Kapitel 4

Tilslutning af telefoner

I webgrænsefladen: /phones

Enhver SIP-telefon eller app virker: pege på denne servers adresse og port 5060, med udvidelsesnummeret som bruger og dets SIP-adgangskode. Skrivebords-telefoner fra de fire store producenter konfigureres automatisk i stedet, så ingen skriver en adgangskode ind i en telefons tastatur.

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
Figur 4. Provisioning: a desk phone fetches its settings by itself

Automatisk opsætning (provisioning)

  1. På Telefoner (kapitel 4) tryk på Tilføj telefon og indtast telefonens MAC-adresse (på en stikker under) og den ekstension, den tilhører.
  2. Vælg mærket: Yealink, Poly, Grandstream (inklusive HT-analogadaptere), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo eller CyberData.
  3. Fortæl telefonen, hvor BitVoice er: i jeres DHCP-server, indstil option 66 til den provisioningadresse, der vises på skærmen, så hver telefon på netværket finder den selv; eller indtast den samme adresse på telefonens egen web-side under auto-provisioning.
  4. Genstart telefonen. Den henter sin fil over HTTPS, logger på og dens linjetaster viser, hvem der er på telefonen.

HTTPS eller plain HTTP. Telefoner henter deres fil over HTTPS når de kan. Nogle ældre telefoner kan ikke bruge HTTPS overhovedet, og mange stoler ikke på certifikatet BitVoice selv har lavet; til disse viser skærmen også en plain http://-adresse på samme port. Plain HTTP er kun til disse filer: hver anden side går stadig til HTTPS. Over plain HTTP krydser telefonens SIP-adgangskode netværket ukrypteret, så hold det til et tillidsfuldt kontor-netværk, eller installer et certifikat fra en myndighed og slå HTTPS kun til telefoner til.

Filen indeholder udvidelsen, dens adgangskode, tidszone, codec, beskæftigelses-lamper og adressen på denne server. Konfiguration er beskyttet af en brugernavn og adgangskode telefonerne får én gang.

MærkeTestede modellerHvad den får
YealinkT3x, T4x, T5xkonto, BLF-taster, tid, codec
PolyVVX, Edge Edet samme, i Polys eget format
GrandstreamGRP, GXP, HT802/814konto per port på adaptorer
SnomD7xxkonto, taster, tid

Disse mærker konfigureres også, med filer skrevet fra hvert mærkes dokumenterede format, men ikke endnu testet på deres enheder (Telefoner-skærmen markerer dem som ubeprøvede):

FabrikatModellerFilen enheden beder om
FanvilX og V-serierdens MAC-adresse .cfg
Cisco6800, 7800, 8800 multiplatform (3PCC), SPA-adaptorerdens MAC-adresse .xml (entreprise-firmware kræver multiplatform-firmware først)
Mitel (Aastra)6800, 6900 SIPdens MAC-adresse .cfg, i store bogstaver
SangomaS-serieFanvil-formatfilen
Algohøjttalere til opkald, lys, adaptoreralgop og dens MAC-adresse .conf
CyberDatahøjttalere, intercom, opkaldsadaptorerdens MAC-adresse .xml

Hver enhed får sin egen konto, serveren (og reserve-serveren, hvis der er flere servere), transport og kryptering, samt voicemail-nummer, hvis den har et. Angiv Algo- og CyberData-højttaleres udvidelser til Højttaler så opkald til dem besvares med det samme.

Telefoner uden provisioning

Softphones og andre mærker tager de samme tre ting: server (dette computers adresse, port 5060 eller 5061 med TLS), bruger (ekstensionsnummeret) og adgangskode (dens SIP-adgangskode). Sundhedsrapporten viser telefoner, der har forsøgt en forkert adgangskode; efter et par forsøg bliver adressen blokeret i en periode (se Sikkerhed (kapitel 60)).

Browser-telefonen

Telefonikonet nederst på hver skærm gør denne browser til en telefon for en udvidelse, med din mikrofon og højttalere. Den bruger WebRTC: lyden er krypteret fra ende til ende, og den fungerer gennem de fleste brandvægge uden nogen indstillinger.

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

WebSockets kræver ingen selvstændig login: softphone logger ind med SIP, og mislykkede login-forsøg og for mange anmodninger tælles for dens egen adresse, ligesom for enhver telefon. En softphone-side serveret fra en anden side skal stole på denne servers certifikat (brug Let's Encrypt), og nuværende Chrome beder brugeren om tilladelse, før en offentlig web-side kan nå en server på det lokale netværk.

Testet med to uafhængige biblioteker, JsSIP 3.13 og SIP.js 0.21: to softphones af hver registrerer, ringer til hinanden og hører hinanden gennem BitVoice. Andre softphones (Linphones web-klient, Zoipers) kommunikerer med samme protokol, men er ikke blevet testet.

TURN, til netværk der blokerer UDP

Nogle netværk (hoteller, gæst-Wi-Fi, strenge virksomhedsbrandvægge) lader ingen UDP ud, eller gemmer computere bag NAT, som WebRTC ikke kan komme igennem. Til disse, slå TURN-server til i Indstillinger (kapitel 14): BitVoice kører derefter sin egen TURN-server (RFC 8656) på port 3478 (UDP og TCP) og, med denne servers certifikat, på port 5349 over TLS. Browser-telefoner, personale-telefonen og opkaldslinks får midlertidige legitimationsoplysninger til den og bruger den, når de ikke kan nå medieportene direkte; lyden er stadig krypteret fra ende til ende, og BitVoice formidler den kun til sine egne adresser, så ingen kan bruge den til at nå noget andet.

Åbn TURN-porten, TLS-porten og relay-portene (49152 til 49407, medmindre I ændrer dem) i brandvæggen. TURN over TLS kræver et certifikat, som browsere stoler på, til det navn, de bruger, såsom et fra Let's Encrypt (kapitel 14): indtil der er et, tilbyder BitVoice det ikke til browsere (de ville forsøge det, fejle og vente); og tilbyder det, så snart certifikatet ankommer; indstil dets port til 443 på en server med en ledig adresse for at komme igennem brandvægge, der kun tillader HTTPS.

Skift af netværk under et opkald

En telefon, der bevæger sig til et andet netværk under et opkald (uden for kontorets Wi-Fi til et mobilt netværk, eller en bærbar computer fra et Wi-Fi til et andet), får en ny adresse, og den gamle vej standses med at bære lyd. Browser-telefoner og BitVoice-apps bemærker det selv: Når browseren siger, at dens netværk er ændret, eller opkaldets vej standses med at svare i to sekunder, genstartes ICE (RFC 8445 9). Den tilbyder nye ICE-legitimationsoplysninger for det opkald, den har, og BitVoice svarer med nye og kontrollerer den nye vej, og opkaldet flyttes til den uden at skulle taste igen. Krypteringen fortsætter med de samme nøgler. Mens det sker, vises opkaldet som Genopretter…; på en vej, der stadig fungerer, er der ingen pause, da den gamle vej bærer opkaldet, indtil lyd kommer på den nye. SIP-softphones over WebSocket (JsSIP, SIP.js) gør det samme ved at geninvitere med nye ICE-legitimationsoplysninger. Intet behøver at aktiveres, med BitVoice som ICE-lite eller bag NAT.

BitVoice bag NAT

TURN-serveren ovenfor hjælper browsere på stramme netværk med at nå en BitVoice, der har en offentlig adresse. Når BitVoice selv ikke har nogen (på et kontor bag en router uden portvidereføring eller i et cloud-netværk uden offentlig adresse på maskinen), skal du aktivere Dette server er bag NAT under BitVoice bag NAT i Indstillinger (kapitel 14). BitVoice deltager derefter fuldt ud i ICE (RFC 8445) i stedet for at svare på én adresse (ICE-lite):

Den personale-telefon

Åbn #/phone på enhver computer eller mobilbrowser: personer logger ind med deres udvidelse og SIP-adgangskode, uden en administrator-konto. Det er en fuld telefon: taste, besvar, hold, overfør og tastatur. Til deres egen videreføring og voicemail bruger de personale-portalen på #/me (se Den personale-portal (kapitel 33)).

De mobile apps

BitVoice-apps til iPhone og Android parres fra udvidelsessiden med en QR-kode. Opkald vækker appen via Apples og Googles push-tjenester, så den ringer, selv når den er lukket (når push er konfigureret; se nedenfor).

Kapitel 5

Skinny-telefoner og MGCP-gateways

I webgrænsefladen: /desk-phones

Telefoner og gateways, der ikke taler SIP, kan stadig bruges. Skinny-telefoner og MGCP-gateways (under Opkald) tager to ældre protokoller:

Hver Skinny-telefon eller MGCP-linje er én mere enhed af dens udvidelse: den ringer med udvidelsens andre telefoner, ringer ud som udvidelsen og vises i udvidelsens enheder. Siden viser hver af dens tilstand.

Hvad virker

Hold, overføring og konference udføres i øjeblikket fra udvidelsens andre telefoner, og en Skinny-telefons anden linje bruges ikke.

Sikkerhed

Ingen af protokollerne har adgangskoder. Skinny-telefoner accepteres kun fra det lokale netværk og kun, når de er nævnt; MGCP-kommandoer følges kun fra gatewayens adresse (eller, uden en, fra det lokale netværk). Hold begge porte uden for internettet.

En gateway, der stadig arbejder på en kommando, kan svare "100 Trying" først: BitVoice venter derefter længere, før den sender kommandoen igen og bekræfter det endelige svar (000), som RFC 3435 kræver. En port, som gatewayen ikke vil overvåge, viser gatewayens egen afvisning på siden, såsom gatewayen nægtede at overvåge porten: 507 Unsupported Functionality fra en mediegateway med ingen analoge porte.

Hvordan de testes

Kapitel 6

Telefoni-kort

I webgrænsefladen: /cards

Et telefoni-kort i BitVoice-computeren (Digium, Sangoma, OpenVox og andre kort med Linux DAHDI-drivere) kan bære analoge telefoner og telefonfirmaets linjer. Et separat program, bitvoice-dahdi, driver kortet og forbinder dets porte til BitVoice over computerns egen netværksforbindelse, så BitVoice selv aldrig rører kernel-driveren, og et kortproblem ikke kan standse telefon-systemet.

Opsætning

  1. Installer DAHDI-drivere og konfigurer portene som sædvanligt i /etc/dahdi/system.conf (fxoks=1-4 til porte med telefoner, fxsks=5-8 til porte med linjer, og landets toner i loadzone og defaultzone), og kørende dahdi_cfg.
  2. Under Telefoni-kort (under Opkald) slå Brug telefoni-kort til. En token oprettes; kopier den til en fil, som kun root kan læse, f.eks. /etc/bitvoice/cards.token.
  3. Tilføj hver port efter dets DAHDI-kanalnummer: en telefon-port (FXS, en telefon, fax eller dørtelefon tilsluttet) med dets udvidelse, eller en linje-port (FXO, en telefonfirmaets linje) med linjens nummer. Vælg A-lov til Europa og det meste af verden, µ-lov til Nordamerika og Japan.
  4. Til linjer, tilføj en trunk med protokollen Telefoni-kort linjer på Trunks, og ruter numre til den, som til enhver trunk; indgående ruter matcher hver linjes nummer.
  5. Start bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token som en servicebruger, der må åbne /dev/dahdi. Den er i Linux-download ved siden af bitvoice. Siden viser, om den kører, og hver ports tilstand; ændringer når den inden for ti sekunder. En kanal, som et andet program stadig holder (eller en, som dahdi_cfg endnu ikke har konfigureret), prøves igen hver to sekunder, så rækkefølgen, ting starter i, har ingen betydning.

Hvad virker

Digitale linjer: T1 og E1 PRI

En T1 (23 opkald på én gang) eller E1 (30) linje køres som primær rate ISDN og er forbundet til et digitalt kort (Digium/Sangoma TE-serie, OpenVox D-serie og lignende). BitVoice taler PRI selv (Q.921 på D-kanalen og Q.931 opkaldskontrol), så hvert opkald kommer ind med det valgte nummer og opkalders ID, går ud med udvidelsens opkalders ID, og telefonfirmaet siger, når den fjerne ende ringer, besvarer eller er beskæftiget.

  1. I /etc/dahdi/system.conf, konfigurer spannet op til PRI som sædvanligt (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 til en T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 til en E1), og kørende dahdi_cfg.
  2. Under Digitale linjer på Telefoni-kort (kapitel 6), tilføj spannet: T1 eller E1, dets første DAHDI-kanal, om BitVoice er PBX på telefonfirmaets linje (det sædvanlige) eller netværket (en anden PBX forbinder til BitVoice som til telefonfirmaet), og switch-typen, som telefonfirmaet har givet dig.
  3. Tilføj kort-trunk på Trunks, hvis der ikke er en allerede, og indgående ruter for numrene (DIDs), som telefonfirmaet sender.

Udgående opkald tager en PRI først, de analoge linjer efter; en beskæftiget nummer, et forkert nummer eller ingen fri kanal kommer tilbage som beskæftiget, ikke fundet eller utilgængelig, som netværket siger. Siden viser, om hver spans D-kanal er oppe og hvor mange af dets kanaler er i opkald. T1-kanaler konfigureret med robbed-bit-signalling (fxsks, fxoks) fungerer som de analoge porte ovenfor.

Navne, videreformidling og overførsler. En opkalders navn kommer med opkaldet (fra Visningsfeltet eller fra nettet som en facilitet på National ISDN-2) og vises på telefonerne; udgående opkald sender udvidelsens navn på samme måde. Nummeret, som et opkald er videreformidlet fra, kommer som omdirigeringsnummer (BitVoice videreformidler det som SIP's Diversion med årsagen: optaget, ikke besvaret, ubetinget), og når en udvidelses videreformidling sender et opkald ud på PRI, følger udvidelsens nummer med som omdirigeringsnummer, så den fjerne ende og telefonselskabet kan se, hvem opkaldet tilhører. Når et eksternt opkald besvares, fortæller BitVoice nettet om det nummer, der besvarede (det tilsluttede nummer).

Slå Overførsler via telefonselskabet til på en span (brugerside, National ISDN-2, 5ESS, DMS-100 eller EuroISDN) og når nogen overfører en opkald på den linje til et andet nummer på samme linje, beder BitVoice nettet om at slutte de to opkald sammen selv: To B-Kanal-Overførsel på National ISDN-2 og 5ESS-linjer, Release Link Trunk-overførsel på en Nortel DMS-100, eksplicit opkaldsoverførsel (opkalderen holdt, derefter sluttede) på EuroISDN. En DMS-100 giver kun en overførselsidentifikator til opkald, som BitVoice foretager, så der skal en af de to opkald være et udgående opkald (det almindelige tilfælde: en opkald, der er videreformidlet eller overført til et eksternt nummer). Begge kanaler frigøres, så snart nettet har sluttede dem sammen. Linjen kræver denne service (bed telefonselskabet om "to B-kanal-overførsel" eller "ECT"); hvis nettet afviser, fungerer overførslen stadig, via BitVoice, ved hjælp af begge kanaler som før. På en span, hvor BitVoice er nettets side, kan en anden PBX bede BitVoice om at slutte to af dens opkald sammen; BitVoice afviser (det er ikke en switch), og PBX'en beholder opkaldene selv.

Prøv det uden en kort

DAHDI's egne dynamiske span kan erstatte en kort: to span forbundet inden i kernel, BitVoice på den ene og en anden PBX (Asterisk's chan_dahdi, for eksempel) som telefonselskabet på den anden. Indlæs dahdi, dahdi_dynamic og dahdi_dynamic_loc, og i /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

Lad det sidste nummer (tidsstyring) være 0 på begge: DAHDI's egen tidsstyring driver dem så. Span, der er hinandens tidsstyringskilde, tikker kun, når den anden sender, og D-kanalen kommer og går. Tilføj span 1 her som en T1 (første kanal 1), og konfigurer den anden PBX som nettets side på kanaler 25 til 48.

Grundlæggende hastighed ISDN (BRI)

En BRI kan bære to opkald på samme tid (B1 og B2) og er almindelig i Europa til små kontorer; den forbinder også ISDN-skrivebords telefoner. BRI-kort (Digium B410P, HFC-baserede kort fra OpenVox, Junghanns og andre) fungerer gennem DAHDI, som PRI-kortene gør: i /etc/dahdi/system.conf er span'et span=1,1,0,ccs,ami med bchan=1-2 og hardhdlc=3. Tilføj det under Digitale linjer med BRI som linjetypen; dets kanaler er B1, B2 og derefter D-kanalen.

Navne, videreformidling, overførsler på EuroISDN (eksplicit opkaldsoverførsel) og råd om betaling fungerer på en BRI som på en PRI.

E&M-trunker på en T1

En T1, hvis kanaler er konfigureret som E&M (robbed-bit-signalling: e&m=1-24 i /etc/dahdi/system.conf), giver 24 trunker, hver signaliseret på sin egen: tilslutningslinjer til en anden PBX, kanalbanker og langdistanceudbyderes Feature Group D-trunker. Under Digitale linjer, tilføj en T1 og sæt Signalling til E&M, derefter:

Et udgående opkald tager en ledig trunk, beslaglægger den, venter på startsignalet (ingen blink inden for fem sekunder er "ingen blink", og opkaldet mislykkes), sender nummeret og besvares, når den fjerne ende tager røret af hook (svarsupervision). Et indgående opkald besvares ved at tage røret af hook, når extensionen besvarer.

CAMA-trunker (911, lab-tracker). En PSAP, der stadig fødes af en 911-selektiv router over CAMA-trunker, indstiller Startsignal til CAMA (911-trunk). Routeren beslaglægger, BitVoice blinker, og routeren sender opkalders nummer (ANI) i MF: forbedret CAMA som KP, to informationscifre og alle ti cifre, ST; traditionel CAMA som KP, én nummerplan-ciffer og syv cifre, ST. For traditionel CAMA skal du under Områdenumre for NPD 0 til 3 liste områdenummeret, som hvert nummerplan-ciffer står for (din routers opsætningsark har dem); et ciffer over 3 betyder, at routeren ikke kunne identificere linjen. Hvert opkald går til den indgående rute for 911 som et 911-opkald med ANI som tilbagekaldningsnummer, og BitVoice søger efter dets placering ved hjælp af dette nummer (se 911-opkald (kapitel 77), Placeringsopslag (ALI)). Informationscifrene vises på opkaldet som CAMA (II 00).

MFC-R2 på en E1

I Latinamerika, dele af Asien og Afrika er E1-linjer ofte MFC-R2 i stedet for ISDN: 30 kredsløb, hver med sine linjesignaler på A- og B-bitterne i tidsinterval 16 (ITU-T Q.421) og dens nummer, opkaldskategorien og opkalders nummer udveksles i tvangs-multifrekvens-toner (Q.441), frem og tilbage. Konfigurer spændet som CAS i /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan fjernet), derefter under Digitale linjer tilføjer du en E1, sætter Signalering til MFC-R2 og vælger Land_variant: ITU-T, Argentina, Brasilien, Kina, Colombia, Tjekkiet, Ecuador, Mexico, Filippinerne eller Venezuela. Hver land tildeles nogle signaler anderledes (hvad der betyder beskæftiget, hvordan slutningen af nummeret fortælles, Mexicos ekstra Gruppe C); varianten holder disse. Kina nr. 1 beder om opkalders klassen (KA) og nummer efter det valgte nummer, sender opkaldstypen (KD: 3, et lokalt opkald) sidst, læser beskæftiget og inaktiv efter KD, der blev sendt, og sætter både C- og D-bitterne til 1: her, skriv cas=1-15:1111 og cas=17-31:1111.

Hvert kredsløb bærer opkald i begge retninger. Et indgående opkald når de indgående ruter med det valgte nummer og opkalders nummer (medholdte numre kommer ind som anonyme); en beskæftiget udvidelse eller et forkert nummer signaleres tilbage som beskæftiget eller ikke tilgængelig, som varianten siger. Et udgående opkald sender nummeret og udvidelsens opkalders-ID eller "nummer medholdt"-signalet, når opkalderskabet gemmer det.

MFC-R2-signalingen testes mod OpenR2 (R2-biblioteket, som Asterisks chan_dahdi bruger), i hver tilbudte variant og i begge retninger, herunder et opkald, der afvistes som beskæftiget; E&M mod BitVoices egne simulerede kanaler.

SS7

En bærer kan overdrage T1'er eller E1'er, der signaleres af SS7 i stedet for ISDN: de vokale kredsløb fører opkald, hver navngivet af en kredsløbsidentifikationskode (CIC), og én tidsinterval fører signaleringslinket til bærerens signaloverførselspunkt eller switch, over hvilken ISUP opretter opkaldene. BitVoice er så et signalpunkt i sig selv, med en punktkode, som bæreren tildeler. I /etc/dahdi/system.conf indstilles spændet som rene kanaler med signalerings-tidsinterval som mtp2 eller hardhdlc (tidsinterval 16 på en E1, 24 på en T1). Under Digitale linjer føjes spændet til, Signalling indstilles til SS7 (ISUP) og følgende oplysninger gives:

Link-sæt af flere links. Spænder med samme variant, punktkoder og netværk er ét link-sæt (op til 16 links): hver spænds signaleringslink er ét af dets links, og har brug for sin egen Link-kode, og hver spænds kredsløb tilhører det (deres CIC'er må ikke overlappe). Trafik deles mellem links i drift via meddelelsernes SLS, så én opkalds meddelelser holder sig til ét link. Når et link fejler (link-testen bliver ikke besvaret, eller meddelelser bliver ikke anerkendt), skifter dets trafik over til de andre (Q.704: COO og COA, de meddelelser, som den fjerne ende ikke havde sendt, sendes igen på et andet link; eller, uden svar i tide, efter tid), og opkaldene på hver spænd fortsætter, og Telefoni-kort viser, hvor mange links er i drift og hvordan dette spænds linker står. Når linket er tilbage og testet, skifter dets trafik tilbage (CBD og CBA). Kun når alle links er nede, er link-sættet nede. Testet mod libss7 med to links, ét af dem klippet midt i et opkald: libss7 tager kun netværksledelsesmeddelelser på linket, som SLS nævner, så en omstillingmeddelelse om det klippede link (sendt på det andet, som Q.704 har det) bliver droppet der, og begge ender omstiller ved tid i stedet, hvilket virker; mellem to BitVoice-endepunkter sker det via COO og COA.

Når linket kommer op, justerer BitVoice det (MTP niveau 2, med den nødsituationssikring periode som en enkelt-link link-sæt bruger), tester det med link-testen (SLTM/SLTA), udveksler trafik genstart tilladt og nulstiller hver omgang (GRS). Opkald når ind til de indgående ruter med det valgte nummer, opkalders nummer (med hemmelige som anonyme), nummeret et opkald blev videresendt fra og, på ANSI, opkalders navn; udgående opkald bærer udvidelsens opkalders-ID og navn. Bærerens blokering eller nulstilling af omgange overholdes. Ved dobbelt beslagtagning beholder den ende med det højere punkt-kode de lige omgange, som Q.764 siger, og BitVoice tager de omgange den beholder først.

SS7 testes mod libss7 (SS7-biblioteket Asterisks chan_dahdi bruger), ITU og ANSI: justering, link-test, trafik genstart, omgang nulstilling, opkald i begge retninger med numre og navne, frigivelse, beskæftiget og blokering; og BitVoice mod sig selv med rammer tabt på linket (sendt igen af MTP2's fejlkorrektion) og en dobbelt beslagtagning. Signaloverførsel (som en STP for andre) og SCCP/TCAP (nummer-portabilitets-søgninger, tollfri oversættelse) tilbydes ikke: en PBX er et endepunkt, og disse er bærerens.

Signaloverførselspunkt (STP). bitvoice-dahdi kan også være et STP for dets ITU SS7-link-sæt: skru på Signaloverførselspunkt (SS7) under de digitale linjer. Dets STP-punktkode er spændets egen. Med Overfør beskeder for andre punktkoder går en besked fra et link-sæt til det næste punkt i et andet link-sæt, og en til enhver anden punktkode går til IP-STP (M3UA): en IP-STP eller signalgateway på vært:port, som nås over M3UA (RFC 4666) over TCP, hvis beskeder for link-sættens punkter kommer tilbage på samme måde (BitVoice registrerer sin punktkode og dem bagved, medmindre en Routningskontekst er givet). Global titeloversættelse sender SCCP-beskeder adresseret til STP efter global titel til punktkoden og under-systemet af den længste matchende præfiks, som en SCCP-relæ gør. En besked, der ikke kan leveres, kommer tilbage til afsenderen som en UDTS eller XUDTS, når den bad om det: ingen oversættelse, ingen rute (MTP-fejl), ingen under-system her eller dens hop-antal er brugt op. STP-status viser M3UA-linken og hvor mange beskeder den har overført, oversat og returneret. Dets SCCP (UDT, XUDT, UDTS, XUDTS) og TCAP (Begin, Continue, End, Abort, dialoger og komponenter) er kontrolleret mod Osmocom: OsmoSTP over M3UA, libosmo-sigtrans SCCP-echo-bruger bagved det og libosmo-asn1-tcaps egen TCAP-koder begge veje. SCTP tilbydes ikke (Go har ingen): M3UA går over TCP, som OsmoSTP og mange IP-STP'er tager. Forbindelses-orienteret SCCP, ANSI-link-sæt og SCCP-styring (SST, SSA) tilbydes ikke.

Råd om betaling. På en EuroISDN-linje, slå Råd om betaling til, og BitVoice beder telefonfirmaet, med hvert udgående opkald, om at sige hvad det koster: under opkaldet (AOC-D) og ved dets slutning (AOC-E), i penge eller i betalingsenheder. Den sidste værdi føjes til opkaldets post (betalt EUR 1,50 i Historik, og ved siden af opkaldet på Omkostninger); når det er i din valuta (indstillet på Omkostninger) er det opkaldets omkostning, i stedet for værdien fra trunkens satser. Telefonfirmaet må tilbyde tjenesten på linjen. SIP-trunker kan sende samme råd, som 3GPP AOC XML i en INFO eller BYE, og BitVoice gemmer det på samme måde.

PRI-koden testes mod libpri (ISDN-biblioteket Asterisk bruger), både som bruger-side og som netværk-side, til nationale ISDN-2 og EuroISDN-opkald, navne, omdirigering og forbundne numre, eksplicit opkaldsoverførsel, to B-kanal overførsel og DMS-100 Release Link Trunk-anmodninger byte for byte (med libpris PBX forbundet med BitVoice som DMS-100), og råd om betaling i begge retninger; og på BRI, punkt-til-punkt og multipunkt, som terminal og som netværk (TEI-tildeling, opkald udsendt til bussen, numre valgt digit for digit).

Ikke endnu: opkalders-ID vist på analoge telefoner eller læst fra analoge linjer, hook flash og ekko-kansellering ud over hvad kortet selv gør.

Kapitel 7

Trunk

I webgrænsefladen: /trunks

En trunk er din konto hos et telefonfirma. Den transporterer opkald til og fra eksterne numre. De fleste er SIP-trunker; en Asterisk- eller FreePBX-server eller en IAX2-udbyder kan nås med IAX2 i stedet.

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

Tilføjelse af en SIP-trunk

  1. På Trunk (kapitel 7) tryk på Tilføj trunk.
  2. Indtast provider-serveren, som din telefonudbyder har givet dig (sip.provider.com), og porten, hvis den ikke er 5060.
  3. Indtast brugernavn og adgangskode, og slå Register til, hvis udbyderen siger, at du skal (de fleste gør det).
  4. Gem. Inden for få sekunder vises trunken som registreret; hvis ikke, vises årsagen ved siden af.

Trunkhelbredsdømmekraft

Med to eller flere trunker på en udgående rute, vurderer BitVoice hver 15. sekund, om hver trunk er brugt på sin plads eller prøves efter de andre trunker. En trunk rykker bag de andre, når dens udbyder ophører med at svare på keep-alive-kontroller, eller når dens sidste udgående opkald mislykkes en efter en på udbyderens side (Mislykkede opkald i træk inden for Inden for (minutter), Indstillinger, Trunkhelbredsdømmekraft), og en anden trunk er i funktion. Den rykker ikke, hvis kun keep-alive-kontrollen mislykkes, mens opkald gennem den stadig kan gå igennem; og hvis alle trunker mislykkes på én gang, er årsagen sandsynligvis dette systems egen internetforbindelse, så intet rykker. En ændring kræver to vurderinger i træk (30 sekunder), så en trunk aldrig flimrer. En trunk fjernes aldrig helt: den prøves stadig, hvis de andre fejler, så et nødopkald altid har alle muligheder. Trunkens side viser vurderingen og dens årsager; et opkald, der gik ud på en anden måde, siger det i sin post.

  1. Tilføj en indgående rute for dit nummer og en udgående rute, der bruger denne trunk (Opkalds-routing (kapitel 8)).
FeltHvad det gør
TransportUDP (normalt), TCP eller TLS til krypteret signalering
Registerlog på hver få minutter, så udbyderen ved, hvor den skal sende opkald
Godkendelsesbrugernavnkun når udbyderen giver et separat
Fra-domænedomænet i opkalders adresse, når udbyderen beder om det
Opkalders IDnummeret, der vises på udgående opkald; en extensions eget opkalders ID sejrer
Også accepter opkald fraudbyderens andre adresser eller netværk, der sender opkald ind. Opkald fra denne computer fra telefoner, der er registreret her, og den indbyggede opkaldsgenerator, bliver aldrig taget som trunkens, selvom den tillader 127.0.0.1
Opkald på én ganggrænsen for din plan; opkald ud over det går til den næste trunk i ruten
Krypter medieSRTP, til udbydere, der understøtter det. En udbyder, der svarer uden det, får alligevel opkaldet, ukrypteret, og Opkaldshistorik markerer opkaldet Ikke krypteret
Kræv kryptering(med Krypter medie) afvis, hvad udbyderen ikke vil kryptere: et udgående opkald, der svarer uden SRTP, afbrydes, og et indgående opkald, der sendes uden SRTP, afvises; Opkaldshistorik siger hvorfor
Codeclad det være på *samme som Indstillinger*, eller vælg, hvad denne udbyder understøtter, bedst først
Taksterhvad opkald koster efter nummerpræfiks, til Omhold (kapitel 54)

Cloud-udbydere

Start fra udfylder Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector eller Azure Communication Services, med en note om, hvad der skal indstilles på deres side. Teams beskrives i sit eget kapitel (Microsoft Teams (kapitel 67)).

IAX2-trunker til Asterisk og FreePBX

Vælg IAX2 som protokol for at slutte en anden Asterisk- eller FreePBX-server eller en IAX2-udbyder. IAX2 bærer signalering og lyd på én UDP-port, 4569, hvilket gør det let at gå igennem firewalls.

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

På Asterisk-siden er et peer som dette alt, der er nødvendigt:

[bitvoice]
type=friend
host=dynamic
secret=the shared password
context=from-bitvoice

IAX2-port 4569 åbnes kun, når den første IAX2-trunk tilføjes, så en Asterisk, der kører på samme computer, holder den åben, indtil da.

H.323-trunker

Vælg H.323 som protokol til ældre gateways, PBX'er og video-konferencesystemer, der taler H.323, men ikke SIP. Giv gatewayens adresse (port 1720); opkald accepteres kun fra den. Opkald er opsat med Fast Connect og G.711 (µ-lov eller A-lov; trunkens codec-liste kan begrænse det til én), og lyden går direkte mellem gatewayen og BitVoices medie-porte. BitVoice konverterer til, hvad den anden part bruger.

H.323 her er bevidst lille: ingen gatekeeper (RAS), ingen H.245 (så en gateway, der ikke vil bruge Fast Connect, får intet opkald og bliver fortalt det), ingen video, ingen H.235-sikkerhed. Opkalders ID kommer fra Q.931-opkalders nummer eller opkalders diallede-ciffer-alias, navnet fra displayet eller dets H.323-ID. BitVoices H.225.0- og H.245-kodning er kontrolleret mod en uafhængig ASN.1-kodner, men endnu ikke mod gateway-hardware.

Videreformidlede opkald

Når et opkald når dig allerede videreformidlet (nogen andres nummer er videreformidlet til dit, eller en Teams-brugers), siger udbyderen det med History-Info (RFC 7044) eller Diversion (RFC 5806). BitVoice læser begge: Opkaldshistorik (kapitel 47) viser videreformidlet af det nummer, der sendte det videre, med det nummer, der først blev diallet, og årsagen i dets tip, opkaldets hvorfor-spor siger det i ord, og opkaldsoptegnelsen gemmer det (forwardedFrom, original, forwardReason). Når udbyderen beder om, at historikken skal være privat, gemmes numrene ikke.

Når en udvidelse videreformidler et opkald ud gennem en trunk (videreformidler alle, når beskæftiget, når ingen svarer), fortælles udbyderen, hvilken udvidelse videreformidlede det og hvorfor, så den kan vise dit nummer og fakturere den rigtige konto: som standard med begge headers, og med den historik, opkaldet kom ind med, gemt og videreformidlingen tilføjet. En udbyder, der er forvirret af en af dem, kan indstilles til den anden under trunkens Avanceret, Videreformidlede opkald siger, hvis de er. På en T1/E1-telefonkort bliver hver header netværkets omdirigeringsnummer.

Hvad status betyder

StatusBetydning
registeredlogget ind; opkald kan komme ind
readyregistrerer ikke, eller IAX2 venter på opkald
unreachableserverens navn er ikke i DNS, eller intet svarer
failedudbyderen afviste log-ind; årsagen vises
standbyservere deler denne trunk én ad gangen, og en anden holder den
Kapitel 8

Opkaldsrouting

I webgrænsefladen: /routes

Opkaldsrouting afgør to ting: hvor opkald fra udenfor går, efter det nummer, der blev diallet, og hvilken trunk opkald til udenfor-numre bruger.

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

Indgående ruter

Hver indgående rute matcher det nummer, der blev ringet (eller ethvert nummer) og sender opkaldet til en destination: en udvidelse, en ringgruppe, en kø, en menu, en tidsplan, et script, en konferencerum, en AI-receptionist eller en voicemail. Numre matcher i enhver form: +1 212 555 0100, 2125550100 og 12125550100 er det samme.

Udgående ruter

Udgående ruter matcher, hvad folk dialer, efter mønster, og sender det til trunker i rækkefølge: hvis den første er nede eller fuld, prøves den næste.

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.
Figur 8. Outgoing routes: the first pattern that matches, its trunks in order
MønsterMatcher
Xenhver cifre
Z1 til 9
N2 til 9
[1-5]en af en samling
. i slutningenen eller flere yderligere cifre
NXXNXXXXXXet ti-cifret nordamerikansk nummer
1NXXNXXXXXXdet samme med 1 foran
011.et internationalt opkald fra USA

Nødtal

Nødtallene virker altid. En rute, der nævner nummeret præcist, bruges først; med ingen, prøves hver arbejdende trunk i rækkefølge. Et opkald til dem afvises aldrig på grund af en udvidelses begrænsninger, en værtsorganisations begrænsninger eller en manglende rute. Sundhedsadvarsel, når ingen trunk kan bære dem.

Kapitel 9

PIN-sæt

I webgrænsefladen: /pin-sets

Et PIN-sæt (kapitel 9) er en liste over PIN'er, som en udgående rute beder om, før den ringer ud: for at holde internationale eller langdistance-opkald til personer med en PIN eller for at fakturere opkald til kunder og projekter efter deres kode.

  1. Tilføj PIN-sæt og liste dens PIN'er (4 til 10 cifre hver).
  2. Slå Gem PIN'en i opkaldsrekorden til at skrive den brugte PIN ind i hver opkaldsrekord som kontokode (kontokode-kolonnen i CSV-, syslog- og PostgreSQL-opkaldsrekord-udgangene og account i API'et).
  3. På Opkaldsrouting (kapitel 8), åbn en udgående rute og vælg sættet under Bed om en PIN.

Opkaldere, der ringer et nummer, som ruten tager, hører "Indtast din PIN, derefter tryk på hash", indtaster den og opkaldet går ud. Tre forkerte PIN'er afslutter opkaldet, og forsøget logges som et sikkerhedsbegivenhed. Nødkald numre beder aldrig om en PIN, uanset hvilken rute de tager, og videresendte opkald og følg-mig-numre bedes heller ikke: kun personer, der ringer fra en telefon.

Kapitel 10

Opkalders ID-søgning

I webgrænsefladen: /lookups

Mange teleselskaber sender en opkalders nummer, men ingen navn. BitVoice søger først i virksomheds-kontakter (kapitel 38); derefter kan en indgående rute bede om en opkalders ID-søgning (kapitel 10):

Vælg søgningen på en indgående rute på Opkaldsrouting (kapitel 8) (Opkalders ID-søgning). Telefoner viser navnet, mens de ringer, og det går ind i opkaldsrekorden.

En søgning holder aldrig et opkald tilbage: BitVoice venter maksimalt dens vent (1,5 sekunder, medmindre du ændrer det, 5 sekunder som maksimum) og ringer derefter uden et navn. Svar gemmes i en dag (eller så længe, du indstiller, eller aldrig med -1), så en regelmæssig opkalders ikke søges op på hver opkald; numre, som tjenesten ikke kender, bedes igen efter en time. Prøv det på søgningens side beder om et nummer med det samme, med indstillingerne som gemt.

Kapitel 11

Nødkald

Nødkald numre går altid ud, fra hver udvidelse, selv dem, der ikke kan ringe til ydre numre. Dette kapitel handler om nødkald lavet fra telefonerne BitVoice kører: et kontor, der ringer 911. At besvare 911-opkald er 911-profilen (kapitel 77).

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

Hvad BitVoice gør på hvert nødkald

  1. Ruter det, altid: en rute, der nævner nummeret først; med ingen, hver arbejdende trunk i tur. Begrænsninger stopper det aldrig: en udvidelse, der ikke er tilladt ydre opkald, en vært-organisation på dens opkaldsgrænse eller suspenderet, en trunk på dens kanalgrænse.
  2. Sender, hvor opkalderen er: med Send opkaldersens adresse på (Indstillinger), medfører opkaldet stedets civile adresse, etage og rum til udbyderen som PIDF-LO.
  3. Fortæller personer på stedet (Kari's Law i USA): udvidelserne under Underret får en besked på deres telefoner, hver åben BitVoice-skærm viser en advarsel, og adresserne under Også e-mail får en e-mail med opkaldersens navn, udvidelse, sted, etage og rum, så nogen kan møde reaktionerne ved døren.
  4. Lader opkaldet ringe tilbage: i en time efter et nødkald, er indgående opkald aldrig afvist, så besvarelsespunktet altid kan ringe tilbage.

Opsætning

  1. Kontroller nødkaldsnumre i Indstillinger (kapitel 14) (indstillet efter land: 911 og 933 i USA).
  2. Tilføj hvert bygning under Steder (kapitel 12), med dens gadeadresse og de netværk, dens telefoner bruger.
  3. Giv hver udvidelse dens sted, etage og rum.
  4. Sørg for, at en udgående rute og trunk kan føre nødkald; Sundhed (kapitel 13) advarer, når ingen kan.
  5. Udfyld Underret og Også e-mail.
  6. Ring 933 (i USA) for at høre adressen, din udbyder har.

Fjernarbejdere

En telefon, der registrerer sig fra udenfor dens steds netværk, er en fjernarbejder: deres telefon-side beder om, hvor de er, og den adresse bruges i stedet. Advarsler siger, når det ikke blev bekræftet.

Nødtilstand

En anden ting: en omstiller, der sender alle indgående opkald til ét sted (en evakuering, en lukning, en incident). Indstil, hvor opkald går, en valgfri kode som *55 og de tilladte udvidelser til at taste den i Indstillinger (kapitel 14); skift den til på Dashboard (kapitel 1), eller ved at taste koden (stigende toner for til, en lav tone for fra). En rød bar vises på hver skærm, mens den er til.

Kapitel 12

Steder og kontor 911

I webgrænsefladen: /sites

Et sted er en bygning: dets gadeadresse og de netværk, dets telefoner bruger. Steder er, hvordan et nødopkald siger, hvor opkalderen er, ned til etagen og rummet. I USA kræver Kari's Law og RAY BAUM'S Act præcis dette fra erhvervstelefon-systemer.

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

Tilføjelse af et sted

På Steder (kapitel 12), tryk Tilføj:

FeltHvad det er
Navnhvad folk kalder det: Hovedkontor
Gade, By, Stat eller provins, Postnummer, Landden civile adresse, som reagere sendes til
Netværkadresseområderne, som telefonerne bruger, f.eks. 10.1.0.0/16; en per linje

Derefter på hver udvidelse gives dens sted, etage og rum. Sundhed (kapitel 13) lister udvidelser uden en placering.

Hvordan en telefons placering findes

  1. En telefon, der registrerer sig fra et af et steds netværk, er på det sted, med dens udvidelses etage og rum.
  2. En varm skrivebord bærer skrivebordets eget sted, etage og rum, ikke personen, der logger ind (Varmt skrivebord (kapitel 36)).
  3. En telefon, der registrerer sig fra uden for hvert steds netværk, er en fjernarbejder. På dens første nødopkalds-aktiverede registration fra et nyt sted, bedes dens bruger bekræfte sin adresse på sin telefon-side; nødopkald bærer derefter den adresse.
  4. Hvis en fjernarbejder aldrig bekræfter, går opkaldet alligevel ud, med udvidelsens sædvanlige sted, og advarsler siger, at adressen ikke blev bekræftet.

Lokale advarsler

Med E-mail, når nogen ringer 911 aktiveret i Indstillinger, modtager personerne, der er navngivet der, opkalders navn, udvidelse, sted, etage og rum, så snart et opkald til en nødnummer startes, så nogen kan møde reagerne ved døren. Underret udvidelser modtager en besked på deres telefoner, og hver åben BitVoice-skærm viser en advarsel. Se Nødopkald (kapitel 11).

Kapitel 13

Sundhed

I webgrænsefladen: /health

Sundhed siger, om systemet er klar til opkald, og hvis ikke, hvad der skal gøres. Hver linje siger, hvad der er galt i plain tekst og linker til skærmen, hvor det kan løses. Kontroller det efter hver ændring af nogen størrelse.

Hvad det checker

CheckHvorfor det er vigtigt
Nødopkald kan komme uden rute og en fungerende trunk bærer nødnumre
Udvidelser uden en nødlokationderes 911-opkald ville ikke bære nogen etage eller rum
TelefonservicenSIP lytter, og på hvilken port
Telefoner ikke forbundetudvidelser, som ingen har logget ind som
Trunkerregistreret, eller årsagen til, at de ikke er
Menuer uden en optaget promptopkaldere ville høre stilhed
Tidszonenskemaer følger den
Optagelser og deres opbevaringdiskenheden, og hvor længe optagelser gemmes
Certifikaternår TLS-certifikatet udløber
Nøgle-vælthemmeligheder, en vælt ikke kan læse
Andre serverenår flere deler en database, om hver kører

Problemer er farvet: rød stopper opkald (ingen nødrute), amber skal ses på (en telefon ikke forbundet), og grå er til information.

Kapitel 14

Indstillinger

I webgrænsefladen: /settings

Indstillinger indeholder alt om systemet som helhed. Hver sektion gemmes separat, og hver gemt ændring er en revision på Ændringer (kapitel 61).

AfsnitHvad der er der
Systemnavn, land, tidszone, sprog, den offentlige adresse telefoner og udbydere ser
Numreekko-test, voicemail og parkeringsnumre og nødnumre
Codeccodecene telefoner kan bruge, bedst først (Codec (kapitel 66))
Optagelse af opkaldslukket, hver opkald eller valgte udvidelser; samtykkesregler; hvor længe optagelser gemmes
Lydrydning til voicemail og under opkald
Beskyttelseforbud efter mislykkede logninger, betroede netværk, opkald per udvidelse, premiumnumre
Nødsituationsende opkalders adresse, hvem der bliver underrettet, hvem der bliver e-mail, nødtilstand
AIAI-tjenesten, modeller og hvilke AI-funktioner er aktiveret (AI (kapitel 28))
Enkelt logonidentitetsudbyderen (Enkelt logon (kapitel 58))
Asterisk-kompatibilitetAMI og ARI til programmer skrevet til Asterisk (Asterisk-kompatibilitet (kapitel 70))
AI-assistenter (MCP)om AI-assistenter som Claude eller ChatGPT kan tilslutte, og om de kan handle (AI-assistenter (kapitel 71))
Microsoft 365 og Google Workspacepersoner og fælles kontakter i Kontakter, og kalendere for hvem der er væk (Kontakter (kapitel 38), Kalendere (kapitel 39))
Mobilappspush-tjenesten der vækker apps
E-mailmailserveren voicemail, faks og alarmer går gennem
Nøglekamrehemmeligheder gemt i AWS Secrets Manager eller Azure Key Vault
Konfiguration fra Githolde konfigurationen i trit med en fil i et repository
DatabaseSQLite eller PostgreSQL (Database (kapitel 64))
Certifikatcertifikatet til dette interface og SIP over TLS: fra Let's Encrypt, installeret manuelt eller BitVoices eget

Adgangskoder og nøgler vises aldrig igen, når de er gemt; lad dem være tomme for at bevare dem. Viewere ser Indstillinger med alle hemmeligheder fjernet.

Certifikatet og Let's Encrypt

BitVoice starter med et certifikat, det selv har lavet, som browsere og telefoner advarer om. Til en server med et offentligt navn, skal du slå Let's Encrypt til under Certifikat: indtast navnene (pbx.example.com), valgfrit en e-mailadresse, og anvend. BitVoice får et gratis certifikat fra Let's Encrypt, bruger det med det samme til webinterface, SIP over TLS og Teams, og fornyer det omkring 30 dage før det udløber (Let's Encrypt-certifikater varer 90 dage eller mindre). Statuslinjen siger, hvornår det blev udstedt, hvornår det fornyes og, hvis det mislykkedes, hvorfor; det prøver igen efter en time, derefter mindre ofte, inden for Let's Encrypts grænser. Check nu prøver med det samme.

Let's Encrypt skal kunne nå serveren under hvert navn fra internettet for at bevise, at det er din:

Andre ACME-myndigheder, der ikke kræver konto-binding (et firma's eget step-ca, Let's Encrypt's testtjeneste til tests) vælges under Myndighed. Wildcard-navne kræver DNS-beviser, som BitVoice ikke udfører: installer disse certifikater manuelt. Hver server i en cluster får sit eget certifikat.

Kapitel 15

Skærmene på dit sprog

BitVoices skærme kommer på engelsk og på tretten andre sprog: Deutsch, Français, Español, Italiano, Português, Nederlands, Polski, Svenska, Dansk, Norsk bokmål, Suomi, 日本語 og 简体中文.

Vælg ét

Hver browser har sit eget sprog: vælg det under menuen (sproglisten ved siden af temaerne), på loginsiden eller på opsætningsguidens første side. Indtil du vælger, bruger BitVoice browserens eget sprog, når det er ét af disse, ellers engelsk. Valget gemmes kun i denne browser: to personer på én server kan hver arbejde på deres eget.

Alt på skærmene er oversat: menuen, overskrifter, knapper, hints, meddelelser fra serveren og navnene, skærmlæsere annoncerer. Søgning (⌘K) finder en side efter dens navn på dit sprog eller på engelsk. Lad, som de er: hvad folk skriver (navne, numre, noter), adresser, koder, scripts i editorerne og navnene på produkter og protokoller. Datoer og numre følger browserens egne indstillinger.

Hvordan det oversættes og hvor godt

Oversættelserne er lavet af en maskine (en stor sprogmodel), for hver tekst, skærmene viser, omkring 5.000 af dem; ingen er blevet kontrolleret af en person. Nogle sætninger, skærmene bygger fra dele (et nummer og et ord), kan lyde underligt, og en term kan være oversat på to måder på to steder. Alt uden en oversættelse, såsom en skærm, der er nyere end oversættelserne, forbliver på engelsk.

Hjælp holder denne vejledning på engelsk, som skrevet, med en link øverst på hvert kapitel til det samme kapitel oversat hel (også af en maskine) på bitvoice.org.

Telefonsiden er separat: hvad opkaldere hører (prompts, voicemail-menuen) er på det standard prompt-sprog (Lyde (kapitel 20)), medmindre en udvidelse eller en kø har sit eget sprog.

Del 2

Hvor opkald går hen

Byggeklodserne, som ringerne bevæger sig gennem: grupper og køer, menuer og planer, scripts og den kunstige intelligens-receptionist, voicemail og diagrammet, der viser det hele.

Kapitel 16

Opkaldsflow

I webgrænsefladen: /flow
CarrierIncoming routeby number dialledScheduleopen or closed?openclosedMenu1 sales, 2 supportRing grouprings everyone for 25 sVoicemailafter hoursif nobody answers
Figur 11. How a call from outside finds its way

Tjek hver situation

Tjek hver situation, øverst i Opkaldsflow (kapitel 16), prøver hele dit opkaldsplan i hver situation, det kan være i, ikke et udvalg:

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.

Den samme tjek køres på ændringer, før de gøres: et forslag fra Spørg i almindelige ord og Gendan denne revision både lister, hvad ændringen ville bryde, som fungerer i dag.

Prøv et opkald

Indtast hvem der ringer (en udvidelse eller et eksternt nummer), hvad de tastede og hvornår, og tryk på Prøv det. BitVoice følger opkaldet nøjagtigt, som det ville i virkeligheden, uden at ringe noget: den indgående rute, tidsplaner på det pågældende tidspunkt, routingskripter (de køres i deres sandbox), menuer, grupper og køer, og hvad der sker, hvis ingen svarer. Den vej, dette opkald tager, er markeret; andre veje på (en menus nøgler, en tidsplans anden side) kan åbnes. Grønt betyder, det virker, amber betyder se på det (en telefon, der ikke er tilsluttet, et script, der falder tilbage), rødt betyder, opkaldet mislykkes der.

Diagrammet

Diagrammet viser, hvor opkald fra udenfor går, boks for boks: hver indgående rute, derefter menuer, grupper, køer, tidsplaner, skripter og personer, det fører til.

Klik på en boks (eller tryk på Tab og Enter) for at ændre, hvor opkald går fra den: en rutes destination, en udvidelses eller gruppes Hvis ingen svarer, en tidsplans åbne og lukkede destinationer, en menus nøgler (tilføj eller fjern nøgler lige der), et scripts fallback eller en receptions persons. Gemt kontrollerer ændringen ligesom enhver anden og laver en revision. Åbn dens fulde editor går til elementets egen side. Tilføj indgående rute tilføjer en rute uden at forlade diagrammet.

Kapitel 17

Ringgrupper

I webgrænsefladen: /ring-groups

En ringgruppe er ét nummer, der ringer flere udvidelser: en salgsteam, receptionen og dens backup, alle i værkstedet.

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

Ringestrategier

Medlemmer, der er væk (i et møde på deres kalender eller med ikke-forstyr), springes over; gruppen ringer de andre. Medlemmer med mobilappen vækkes af en push og ringer også.

Hvis ingen svarer

Når ingen svarer inden for ringetiden, går opkaldet til Hvis ingen svarer: en medlems voicemail, en kø, en menu, en anden gruppe. Med intet sat, ringer det, til opkalderen giver op.

Grupper, køer eller afhentning?

BrugNår
En ringgruppefå personer, hvem som helst kan tage opkaldet, og opkaldet skal ringe nu
En køopkaldere kan være nødt til at vente på en fri agent, og skal høre deres plads
En afhentningsgruppehver person har deres egne opkald, men kolleger kan svare for dem
Kapitel 18

Køer

I webgrænsefladen: /queues

En kø holder opkaldere i rækkefølge, med musik, og ringer den næste fri agent. Det er hjertet af en kontaktcenter, og nyttigt i ethvert kontor, hvor opkald kommer hurtigere, end folk kan tage dem.

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

Hvordan opkald tilbydes

StrategiHvem ringer
Længst inaktivden frie agent, der har ventet længst siden deres sidste opkald
Rundringhver fri agent i tur, hvor den sidste agent blev afbrudt
Ring allealle frie agenter på én gang
Færrest opkaldden frie agent, der har taget færrest opkald i dag
I rækkefølge (lineær)altid fra toppen af listen: den første frie agent
Tilfældigen tilfældig fri agent
Vægtet tilfældigtilfældigt, agenter med en lavere straf udvalges mere ofte

Skærmen Køer er en live wallboard: hvem venter, hvor længe, og hver agents tilstand.

Agenter

Agenter taste *45 for at logge ind eller ud af hver kø, og *46 for at pause (en pause) og genoptage; pausede og loggede agenter tilbydes ikke opkald. Wallboardet har samme knapper og viser, hvorfor en agent pausede.

TilstandMening
tilgængeligfri; vil blive tilbudt det næste opkald
ringerbliver tilbudt et opkald
optagetpå et opkald
afslutninglige afsluttet; afslutningstiden kører
pausepå en pause, med årsagen angivet
væki et møde eller på fri, fra deres kalender
loggede udtager ikke køopkald overhovedet

Supervisorer

På Aktive opkald (kapitel 46) ringer Superviser en supervisors telefon; når de svarer, kan de lytte (høres af ingen), viske (høres kun af agenten) eller afbryde (høres af begge), og kan skifte mellem dem under opkaldet.

Køer og VIP'er

Slå Kø til i en kø, og en tilbagevendende opkald (en besvaret i de sidste 30 dage, eller så mange som du indstiller) tilbydes først til den agent, der svarede dem sidst, hvis den agent er fri; hvis de ikke svarer, fortsætter køen som normalt. VIP-opkald, i bunden af Køer, går til fronten af hver kø, de ringer til, efter eventuelle VIP, der allerede venter, og er markeret VIP på tavlen.

Kapitel 19

Udgående dialer

I webgrænsefladen: /dialer

Den udgående dialer (kapitel 19) ringer lister af kontakter for en køs (kapitel 18) agenter: fornyelser, aftalemindere, indsamlinger, undersøgelser. Hver kampagne har sin kø, sin liste og sin måde at ringe på:

TilstandHvordan det ringer
Forhåndsvisningen agent beder om den næste kontakt, ser detaljerne, derefter ringer til den (deres telefon ringer først) eller springer over den
Progressivét opkald for hver fri agent
Effektet fast antal opkald for hver fri agent (1 til 3)
ForudsigendeBitVoice justerer opkaldene per agent, læner sig ind, mens få opkald bliver afvist, og trækker sig tilbage, mens afvisningsraten nærmer sig grænsen
  1. Tilføj kampagne: dens kø, dens opkalders ID (nummeret kontakter ser), timerne opkald må laves i en tidszone, hvor lang tid en kontakts telefon ringer, hvor mange forsøg og hvor langt imellem.
  2. Åbn Kontakter og Tilføj en liste: en CSV-fil med en header-række og en kolonne kaldet number (eller phone); name og eventuelle andre kolonner vises til agenten i forhåndsvisning. Dublerede og forkerte numre bliver sprunget over.
  3. Optag meddelelsen (i kampagnen): hvem der ringer og hvorfor, og "tryk 9, hvis du ikke ønsker disse opkald". Den afspilles til en person, der besvarer, når ingen agent er fri, og, hvis du vælger, efter en telefonsvarers greeting.
  4. Start den. Den ringer kun inden for dens timer, og stopper med at ringe, når den er pause eller intet er tilbage.

Mennesker og maskiner. BitVoice lytter til de første sekunder efter et svar: en lang, uafbrudt velkomst er en telefonsvarer; et kort "hallo?" og en pause er et menneske. En maskine kan lægges på (og prøves igen), efterlades en besked, eller overføres til en agent ligesom alle andre. Når der er tvivl, tager den svaret for et menneske.

Opgivne opkald. Et menneske svarede, når der ikke er nogen agent ledig i to sekunder, hører beskeden og tælles som opgivet. Med power- og predictivt dialling, hvis andelen af opgivne opkald over de sidste hundred svar overstiger kampagnens grænse (3%, medmindre du ændrer det, den amerikanske regel), dialer kampagnen ét opkald per ledig agent, indtil det er under igen. Kampagnen viser sin opgivelsesrate, opkald i gang og ledige agenter i realtid.

Ikke ringe liste. Ingen kampagne ringer et nummer på ikke ringe listen, uanset hvilken liste det kom fra; enhver, der trykker 9 under beskeden, føjes til med det samme. Tilføj numre manuelt eller gennem API (POST /api/dnc). For den nationale registry (i USA, FTC's National Do Not Call Registry: download områdekoderne du ringer som en flad fil), vælg filen under National registry og Import: hver linje med et nummer tælles (212,5550100 som FTC skriver dem, eller ét nummer per linje), overskrifter og ødelagte linjer bliver sprunget over og tælles. Med Erstat den sidste import aktiveret, fjernes de forrige downloads numre først, så et nummer, der forlod registret, kan ringes igen; numre tilføjet manuelt eller ved at trykke 9 bliver altid. Registret skal opdateres mindst hver 31. dag (amerikanske regler); siden tæller listen og hvor meget af den, der kom fra registret. API'et er POST /api/dnc/import?replace=1 med filen som brødteksten.

Kapitel 20

Lyde: prompts, sprog og holdemusik

I webgrænsefladen: /sounds

Lyde (kapitel 20) indeholder alt, hvad BitVoice siger eller afspiller til opkaldere, bortset fra hilsner og menuprompts, som er optaget, hvor de bruges.

Prompts, på hvert sprog

En prompt er en ting, BitVoice siger: "Indtast din PIN", "Din plads i køen er", cifre, der læses op. Navn- og nummerkatalog, indringning (DISA), vækkeopkald og kømeddelelser taler med dem. BitVoice har ordene til hver prompt på engelsk, spansk, fransk, tysk, italiensk, portugisisk, hollandsk og polsk; numre læses cifre for cifre, som lyder ens på hvert sprog.

Holdemusik

Holdemusik er grupperet i klasser (Rolig, Jazz, Salgsbudskaber…), hver en liste af numre, der afspilles én efter én, fra starten eller blandet. Upload numre på op til 15 minutter i enhver format, browseren kan læse; MP3- og WAV-filer kan også sendes direkte til API'et (PUT /api/music/{class}/{name}), og BitVoice afkoder MP3 selv (MPEG-1, 2 og 2.5 Lag III, med en afkoder, der giver de samme samples som minimp3).

Internetradio. En klasse kan afspille en stream i stedet for dens numre: indtast en MP3-streams adresse (Icecast, Shoutcast, de fleste internetradio) under Internetradio. BitVoice tilslutter, når den første opkald stilles i venteposition med denne klasse, afspiller den ene stream til alle, der venter, og afbryder forbindelsen halvanden minut efter den sidste forlader. Mens streamen ikke kan nås, afspiller klassens egne numre (eller ventetonen, uden numre), og klassen viser hvorfor.

Hvem hører detHvad musik
nogen stiller i ventepositionden musik, der er valgt på den person, der holder, ellers standard
en parkeret opkaldmusikken for den person, der parkerede dem, ellers standard
en opkald, der venter i en køkøens musik, ellers standard
en opkald, der venter på en konferencelederstandard

Standard for alle kan være ventetonen, så intet ændrer sig, indtil du vælger musik. Ved at vælge ventetonen på en kø eller en udvidelse beholder tonen der.

Kapitel 22

Navn-vejledning

I webgrænsefladen: /directories

En navn-vejledning (kapitel 22) giver opkaldere mulighed for at nå en person uden at kende deres nummer: de staver de første bogstaver i navnet på tastaturet (2 til ABC, 3 til DEF, op til 9 til WXYZ) og bliver sat igennem.

  1. Tilføj vejledning, navngiv den og giv den et nummer (411, sige) eller lad nummeret være tomt og brug den som en menuoption.
  2. Vælg, hvad opkaldere skal stave: efternavn (det normale), fornavn eller begge.
  3. Vælg hvem der er listet, eller ingen for at liste alle med en telefon.

Opkaldere hører "Indtast de første tre bogstaver i personens navn". En enkelt match bliver sat igennem med det samme. Flere matches bliver læst op, otte ad gangen: hver persons navn, derefter "for at ringe til denne person, tryk 1", 2 og så videre, med 9 for flere navne. Ingen match: "Ingen matcher", og de prøver igen (tre forsøg).

Udtalt navne: optag hvert persons navn på deres udvidelse (Udtalt navn: optag i browseren eller upload en fil), og vejledningen siger det; indtil da læser den udvidelsesnummeret op. Vejledningens egne ord kommer fra vejledningsprompterne i Lyde (kapitel 20), på dets sprog.

Kapitel 23

Indringning (DISA)

I webgrænsefladen: /dial-in

En indringning (kapitel 23) (DISA, "direct inward system access") giver mulighed for, at nogen kan ringe ind udefra, bevise, hvem de er, og ringe ud igen gennem kontoret: opkaldet går ud med kontorets opkalders ID, dets ruter og dets takster, som om de var ved deres skrivebord.

  1. Tilføj indringning, og indstil en PIN (4 til 10 cifre), de numre, der er tilladt at bruge det (Kun fra disse numre), eller begge. En af de to er påkrævet.
  2. Vælg den udvidelse, opkaldene bliver lavet som: dens tilladelse til udgående opkald, opkalders ID og udgående ruter gælder. Den skal være tilladt udgående opkald.
  3. Giv det et nummer at ringe ind på, og send et telefonnummer til det på Opkaldsrouting (kapitel 8) (vælg indringningen som destination).

Opkaldere hører "Indtast din PIN, derefter tryk på hash", derefter "Indtast nummeret at ringe til, derefter tryk på hash", og bliver sat igennem. Ordene kommer fra indringningsprompterne i Lyde (kapitel 20).

Kapitel 24

Tale robotter (AudioSocket)

I webgrænsefladen: /voice-bots

En tale robot (kapitel 24) er et program af din egen (en AI-agent, en tale-genkendelses-IVR, en optager) der tager opkald over AudioSocket, det simple protokol Asterisk bruger: BitVoice svarer på opkaldet, åbner en TCP-forbindelse til robotten og sender opkaldets UUID, derefter svarerens lyd som 20 ms-rammer af 8 kHz 16-bit lineær audio og hver tast trykket; hvilken som helst lyd robotten sender tilbage, afspilles til svareren. Robotter og tale-service-tilslutninger skrevet til Asterisks AudioSocket fungerer med BitVoice uændret.

  1. Tilføj tale robot: dens navn, robotens adresse (10.0.0.9:9092) og, hvis ønsket, et nummer til at ringe til den.
  2. Vælg, hvor svareren går hvis robotten ikke kan tage opkaldet, eller afbryder (en person, en kø, en telefonsvarer): påkrævet, så ingen svarer nogensinde bliver droppet, fordi en robot er nede.
  3. Send opkald til den fra Opkalds routing (kapitel 8), en menu mulighed, en tidsplan eller en toggle.

Når robotten sender en AudioSocket-afslutning, slutter opkaldet; når svareren lægger på, sendes en afslutning til robotten. En robot, der ikke kan nås inden for tre sekunder, eller hvis forbindelsen afbrydes uden en afslutning, overfører svareren til reservevalget, og fejlen logges.

For at bringe et program ind i et opkald, der allerede er i gang (en lytten transkriber, en assistent, der hvisker til ingen), brug ARI's eksterne medie: se Asterisk kompatibilitet (kapitel 70).

Kapitel 25

Dag/nat toggles

I webgrænsefladen: /toggles

En dag/nat toggle (kapitel 25) er en skifter for en opkaldsflow (FreePBX kalder det opkaldsflow kontrol). Opkald sendt til den går til dens normale destination, eller til den anden, mens nogen har skiftet den over: kontoret lukker tidligt på grund af en storm, nogen ringer *281 på vej ud, og opkald går til telefonsvareren, indtil det skiftes tilbage om morgenen. Den forbliver, som den blev efterladt, på tværs af genstart.

  1. Tilføj toggle, giv det en kode (1 til 3 cifre: ringet efter *28) og vælg, hvor opkald går normalt og når det skiftes over. Begge sider kan være en tidsplan, så en toggle kan sidde foran åbningstiderne og overtage dem.
  2. Vælg, hvem der må skifte det fra en telefon (ingen valgt tillader enhver udvidelse).
  3. Send opkald til den fra Opkalds routing (kapitel 8), en menu mulighed eller en tidsplan, ligesom enhver anden destination.

Skift det ved at ringe *28 og dens kode (en stigende tone: skiftet over; en faldende tone: tilbage til normalt), med skiftet ved siden af det på Toggles siden, eller gennem API (POST /api/toggles/{id}/state). En busy lamp nøgle, der overvåger *281, er tændt, mens den toggle er skiftet over, så personen, der lukker op, kan se det fra deres skrivebord. Toggle-koden selv er på Funktioner (kapitel 32).

Kapitel 26

Tidsplaner

I webgrænsefladen: /schedules

En tidsplan sender opkald en vej, når du er åben, og en anden vej, når du er lukket. Peger en indgående rute på en tidsplan, og tidsplanen på menuen (åben) og voicemail (lukket).

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

Åbningstider

Hver linje med timer er en samling af dage og en tid fra og til. Flere linjer er tilladt: mandag til fredag 9:00 til 17:00, og lørdag 10:00 til 13:00. Timer kan krydse midnat (22:00 til 06:00) for nattevagter.

Helligdage

Helligdage tæller som lukket hele dagen, uanset hvad timerne siger. Tilføj hver dato med et navn; navnet vises på Opkaldsflow (kapitel 16), når du prøver et opkald på den dag.

Tidszone

Tidszonen er den i Indstillinger. Når urene skifter, følger tidsplanerne den lokale tid.

Kapitel 27

Scripter (JavaScript og Lua)

I webgrænsefladen: /scripts

Et script afgør, hvor et opkald går, når menuer, planer og grupper ikke er nok: opkaldere fra ét område til ét kontor, VIP-numre direkte til en person, en beslutning fra jeres egne data. Eller, indstillet til Kører hele opkaldet, besvarer det opkald og kører det, som en Asterisk dialplan eller AGI-script ville: prompts og tale, taster, optagelser, ringning af personer, overdragelse (nedenfor). Scripterne skrives i JavaScript eller Lua på Scripter (kapitel 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.
Figur 16. A routing script: code decides, a fallback is always there

Sikkerhed ved design

Hvad et script ser

call har:

FeltHvad det er
from, fromNameopkalders nummer og navn
todet nummer der er valgt
directioninbound eller internal
trunkden trunk det kom ind på
weekday, hour, minutetidspunktet nu (0 er søndag)
dateÅÅÅÅ-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

Brug af et script

Peger en indgående rute, en menuknap eller en tidsplan på scriptet, som på enhver destination. Test kører det med et opkald, du beskriver, uden at placere et; kørselslisten viser hver rigtig kørsel med dets beslutning, tid taget og eventuelle fejl. Opkaldsflow (kapitel 16) kører også scripter, når du prøver et opkald.

Script, der kører hele opkaldet

Vælg Kører hele opkaldet. Scriptet svarer herefter på opkaldet og går fra top til bund, hvor hvert trin venter, til det er færdigt:

StepWhat it does
play(name)plays a prompt from Sounds (kapitel 20) in the caller's language (goodbye, digit-5...), digits:1234, or a tone: beep, confirm, error, off, hold. A prompt not recorded yet is a beep.
say(text)speaks the words with the speech service in Settings, AI (a beep without one)
collect({max, timeout, interDigit, end, say, prompt})gathers keys: at most max (32), waiting timeout seconds for the first (5) and interDigit for each next (3), until end (#). say or prompt asks first. Returns the keys, "" when none.
record({box, seconds, beep})records a message into an extension's mailbox, until # or the time; returns its seconds
wait(seconds)waits, returning a key pressed
dial(destination, ringSeconds)rings it with the caller hearing ringback. Answered: they talk and the script is done (true). Not answered: false, and the script carries on.
transfer(destination)hands the call on; the script is done
hangup()ends the call
log(text)writes to the run list

En destination er et nummer (en extension, ringgruppe eller kø her, ellers et eksternt nummer gennem udgående ruter; aldrig et nødnummer) eller {type, target} som ovenfor. En trykket tast under en lyd stopper den; play og say returnerer den og den næste collect starter med den. At returnere en destination sender opkaldet dertil.

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 har de samme trin (collect{max = 1}). Giv scriptet et Nummer til at ringe for at ringe til det fra en extension.

Dets begrænsninger holder opkaldet sikkert: scriptets egen kode må køre i højst en kvart sekund mellem to trin; et opkald tager i højst 1.000 trin; og hele scriptet stopper efter sin Længste kørsel (10 minutter medmindre du siger, 60 som maks.). Når det fejler, stoppes eller slutter uden at afslutte eller overføre opkaldet, går opkaldet til dets fallback; en opkalders, der afslutter, stopper det med det samme. Prøv det kører scriptet med de taster, du siger, opkalders trykker, og listen over hvert trin, uden at placere et opkald.

Kapitel 28

AI-receptionist, voicemail-triage og spørgsmål

I webgrænsefladen: /receptionists

AI-funktioner bruger AI-tjenesten angivet i Indstillinger (kapitel 14): en OpenAI-kompatibel tjeneste (OpenRouter som standard) eller en, du selv kører. Hvad de behøver, sendes derhen, så vælg en tjeneste, du stoler på med opkald; til en 911-centre tæller dens egen regeringscloud som lokal.

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.
Figur 17. The AI receptionist: answers, helps, and always hands over to a person

AI-receptionist

Vælg en receptionist som, hvor opkald går hen: en rute, en menuoption eller en udvidelses Hvis ingen besvarer. Den siger, det er automatiseret, besvarer kun fra Godkendt information, tager en besked, booker en callback (se Callbacks (kapitel 30)) eller overfører til En person er. Tryk på 0 eller spørg om en person for at nå en, og så gør det også, hvis der er et problem med AI-tjenesten eller talemodellen: opkaldere bliver aldrig fastlåst med den.

Modeller

Model udfører tekstarbejdet: sammenfattelser, receptionistens svar og spørgsmål i almindelige ord. At omdanne tale til tekst kræver en model, der kan tage audio; angiv den som Tale-til-tekst-model (f.eks. google/gemini-2.5-flash på OpenRouter) for at bruge en tekst-baseret model til resten, f.eks. meta-llama/llama-3.3-70b-instruct.

Tale til tekst i bygningen

Tale kan skrives ned uden nogen sprogmodel: en talegenkender (whisper) hører audioen og skriver, hvad der blev sagt, intet mere. Hvem skriver tale ned, i AI-indstillingerne, har tre valg:

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.

Kendsgerninger, der blev sagt i opkaldet (ingen sprogmodel)

Hver transkription læses også af regler uden en sprogmodel, for kendsgerningerne, en opkaldstager noterer: hvad der skete, hvor, hvor mange er sårede (eller at ingen er), tilstande (åndedræt, vågen, blødende ...), farer (ild, røg, gas, våben, kemikalier, brændstof), køretøjer, hvem opkaldsøgeren er i forhold til den, der har brug for hjælp, og et callback-nummer. Hver kendsgerning vises med den sætning, den kom fra, og den side, der sagde det, i transkriptionens Kendsgerninger, der blev sagt i opkaldet. Uden en model skrives sammenfattningen kun fra disse kendsgerninger og siger det.

SætKendsgerninger fundetKendsgerninger fundet, som ingen forventede
Træning (reglerne blev skrevet fra det)41 af 410
Hold-out, scoret koldt, før nogen regel blev skrevet fra det27 af 40 (67%)2
Hold-out, efter en anden runde af regler skrevet fra dets mangler40 af 400
Forseglet, scoret koldt (ingen regel bliver nogensinde skrevet fra det)23 af 43 (53%)3

Det forseglede score er det, man kan forvente på opkald, det ikke har set, og de tre sæt blev skrevet af de samme personer som reglerne, så rigtige opkald sandsynligvis vil gøre det værre. Læs kendsgerningerne ved siden af transkriptionen, aldrig i stedet for den.

Større modeller kræver mere processor: en server, der skriver mange opkald på samme tid, skal starte med base eller bruge en maskine med en GPU som en tale-til-tekst-tjeneste for bygningen. På Apple-computere bruger whisper GPU'en.

Voicemail triage

Med Transkriber og summer voicemail aktiveret, markeres hvert meddelelse også som urgent, normal eller lav prioritet, med dens type (salg, support, fakturering...). Urgente meddelelser udløser en alarm på hver administrators skærm.

Spørg i almindelige ord

På Ændringer (kapitel 61), beskriv en ændring ("send salgsopkald til voicemail efter kl. 17"). AI'en foreslår det, BitVoice checker det som enhver anden ændring og viser nøjagtigt, hvad der vil ændre sig. Ingen ændringer sker, før du trykker på Anvend, og det bliver en revision, du kan genskabe. Adgangskoder sendes aldrig til AI'en.

Kapitel 29

Telefonsvarer

I webgrænsefladen: /voicemail

Hver extension kan have en postkasse. Opkaldere, der ikke bliver besvaret, hører dens besked og efterlader en besked; personen hører den på sin telefon, læser den på skærmen eller får den via 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.
Figur 18. Voicemail: from a missed call to a message you can read

Aktivering af det

På extensionen, skift Telefonsvarer til. Hvis ingen svarer er herefter sat til postkassen. Giv den et PIN (4 til 10 cifre): det åbner postkassen fra en anden telefon og logger personen ind på medarbejderportalen og på hot desks.

IndstillingHvad det gør
Længste besked10 til 900 sekunder (180 som standard)
E-mail nye beskedertil extensions e-mail-adresse, med beskeden vedhæftet
Beskedoptaget i browseren, uploadet eller optaget fra telefonen; uden en, hører opkaldere en beep

Aflytning

Med AI

Med Transkriber og sammenfatter telefonsvarer aktiveret (Indstillinger, AI), skrives hver besked ud, sammenfattes i en linje og markeres som urgent, normal eller lav prioritet med dens type (salg, support, fakturering). Urgente beskeder udløser en alarm på hver administrators skærm. Se AI (kapitel 28).

Lydrensning

Lydrensning (Indstillinger) fjerner konstant baggrundsstøj og jævner niveauer, mens beskeder gemmes, så en besked fra en bil eller en travl gade er lettere at høre.

Kapitel 30

Callback

I webgrænsefladen: /callbacks

Personer, der har bedt om at blive ringet op. En AI-receptionist booker en, når en opkaldende beder om det: den indsamler deres navn, nummeret at ringe til (og tilbyder det nummer, de ringer fra), et godt tidspunkt og hvad det handler om, læser det op for dem og booker det kun, når opkaldende accepterer. Den lover aldrig et præcist tidspunkt. Administratore kan også tilføje callbacks manuelt.

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

En ny callback viser en advarsel på hver åben skærm og sendes via e-mail til ejeren af receptionistens Tag beskeder for postkasse, når denne udvidelse har en e-mail-adresse og e-mail er konfigureret i Indstillinger.

For at ringe tilbage, vælger du din udvidelse og trykker Ring tilbage: din telefon ringer først, og når du tager den, ringer BitVoice nummeret for dig, med dine normale ruter og opkaldende-id. Derefter kan du tilføje en note, hvis du ønsker, og trykke Færdig (eller Afbryd). Færdige callbacks gemmes under de åbne og kan åbnes igen.

Del 3

Hverdagsopkald

Hvad folk gør på deres telefoner hver dag, og hvad de indstiller for sig selv: videreformidling, følg-mig, opkaldsafhentning, konferencerum, højttalere, varme skriveborde, faks og tekster.

Kapitel 32

Funktioner, videreformidling og hurtigvalg

I webgrænsefladen: /codes

Funktioner er, hvad folk ringer på deres telefoner for at ændre deres egne indstillinger og nå funktioner. De virker på enhver telefon, skrivebords- eller softphone, uden noget opsætning på telefonen selv. En stigende tone betyder færdig; en faldende tone betyder afvist.

Koderne på et øjeblik

KodHvad den gør
*72videreformidler hver opkald (så nummeret og #, eller nummeret lige efter: *722125550199)
*73stopper videreformidling af hver opkald
*90 / *91videreformidler, når der er opkald / stopper
*52 / *53videreformidler, når der ikke er besvaret / stopper
*78 / *79ikke forstyr på / af
*76skifter ikke forstyr (stigende tone: nu på)
*21skifter følg-mig på og af
*8besvarer et opkald, der ringer i din afhentningsgruppe
** og en udvidelsebesvarer opkaldet, der ringer på den udvidelse
*80 og en udvidelseinternkommunikation: den telefon besvarer på sin højtaler
*0 og en kodeen hurtigvalg
*62vækkeopkald: hører det, book en (fire cifre, såsom 0630) eller annuller det (stjerne)
*68 og en cifrerumstatus, til rengøring i hoteller
*28 og en skifters kodeskifter en dag/nat-skifter (kapitel 25) over, eller tilbage
*32blokerer den sidste opkaldende: den sidste eksterne nummer, der ringede til denne telefon, kommer på bloklisten (Spam-beskyttelse (kapitel 56))
*43ekko-testen
*97din telefonsvarer
70parkerer et opkald (overfører det her); 71 til 79 henter det op
*45 / *46køagent: logger ind eller ud / pauserer eller genoptager
*33 / *34logger ind eller ud på en varm skrivebordsplads
*7 / *8 under et opkaldpauserer og genoptager optagelsen (kortbetalinger)

Videreformidling

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
Figur 21. Forwarding: every call, when busy, when not answered

Videreformidling til en anden udvidelse bruger den udvidelses egne indstillinger (dens telefonsvarer, dens følg-mig), op til fire hop, så to personer, der videreformidler til hinanden, ikke kan danne en løkke. Videreformidling til et eksternt nummer går gennem de udgående ruter, som om personen havde ringet det, og kræver, at udvidelsen er tilladt eksterne opkald.

Videresendelse er en live-tilstand, ikke en konfiguration: indstilling af den medfører ingen revision, og den gemmes på tværs af genstart. Udvidelser (kapitel 3) og medarbejderportalen viser og ændrer den også.

Ikke forstyr

*78 på, *79 af, *76 skifter. Med ikke forstyr på, går opkald til telefonsvareren, eller til udvidelsens ikke-besvaret destination. Ikke forstyr sat af hånd vinder over kalenderen (Kalendere (kapitel 39)). Nødkald tilbage-ringer stadig.

Følg-mig

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

*21 skifter follow-me til og fra, for udvidelser der har follow-me-numre angivet (på udvidelsen eller i medarbejderportalen). Skrivebordet ringer først i sin ringetid, derefter follow-me-numrene, ét efter ét eller alle sammen. På et eksternt nummer med tryk 1 aktiveret, hører personen en tone og trykker 1 for at tage samtalen; en voicemail eller en tavshed gør aldrig det, og efter 15 sekunder flyttes samtalen videre.

Besvare nogen andres opkald

101 rings102 dials *8takes the callpickup group "Front office"** then the extensionanswers that one extension's call*8answers the oldest in your group
Figur 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
Figur 24. Intercom: the called phone answers on its speaker

*80 og en udvidelse ringer til den med auto-svar: dens telefon svarer på højttaleren, og begge sider taler. Yealink, Grandstream og Snom læser BitVoices Call-Info-header, Poly læser Alert-Info; nogle telefoner kræver, at intercom tillades i deres egne indstillinger. En udvidelse kan afvise intercom; derefter ringer opkaldet, som det plejer.

Hurtigvalg

*0 og en kode ringer til en gemt nummer: *05. Virksomhedens hurtigvalg er på denne side; hver person kan have deres eget på deres udvidelse eller i medarbejderportalen, og deres sejrer over virksomhedens med samme kode. Koder er 1 til 3 cifre.

Ændring af koder

Hver kode kan ændres på Funktioner (kapitel 32), eller slås fra med ordet off. To funktioner kan ikke dele en kode, og ingen kode må være en udvidelses- eller en gruppenummer: BitVoice siger, hvilken af dem der er i konflikt. Echo, voicemail og park-numre er i Indstillinger (kapitel 14).

Kapitel 33

Medarbejderportalen

Medarbejderportalen giver alle mulighed for at passe deres egne opkald uden en administrator: ikke forstyr, videreformidling, følg-mig, hurtigvalg, voicemail og dens besked, deres PIN, og en liste over deres egne opkald. Den er på #/me på denne servers adresse og er linket fra login-siden.

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

Login

Personer logger ind med deres udvidelsesnummer og deres voicemail-PIN: samme PIN, der åbner deres voicemail fra en telefon og logger dem ind på hotdesks. En udvidelse uden PIN kan ikke logge ind; en administrator sætter en på udvidelsen.

Gentagne forkerte forsøg fra en adresse låser den ud i 10 minutter. En portal-session når kun personens egne indstillinger: aldrig en anden udvidelse, konfiguration eller nogen optagelser.

Hvad personer kan gøre

FaneHvad der er der
Hvor opkald gårikke forstyr; videreformidling af hvert opkald, når beskæftiget og når ikke besvaret; følg-mig-numre; egne hurtigvalg
Voicemailbeskeder at afspille og slette, med transkriptioner og sammenfattelser, når AI er aktiveret; optage eller uploade beskeden
Dine opkaldpersonens egne opkald, nyeste først, uden optagelser
PINændre PIN, ved at give den nuværende

Videreføring og ikke-forstyrre, der er indstillet her, er de samme som dem, der er indstillet fra telefonen med funktioner ( Funktionskoder (kapitel 32) ): hvilken der blev indstillet sidst, er i kraft. Følg-mig-numre og hurtigvalg er en del af udvidelsens konfiguration, så ændring af dem opretter en revision på Ændringer (kapitel 61), registreret som personens egen.

Videreformidling til et eksternt nummer virker kun for udvidelser, der er tilladt at ringe til eksterne numre. Portalen siger det, i stedet for at gemme en videreformidling, der aldrig kan ringe.

Chat og tilstedeværelse

Portalens Chat-fane viser kolleger med deres aktuelle status: tilgængelig, i samtale, ringer, væk (ikke forstyr, møde eller fravær fra kalenderen, med årsag) eller frakoblet (ingen telefon tilsluttet), og den status de har tastet ("Til lunch, tilbage kl. 14"). Vælg en person for at sende en besked; beskeder ankommer med det samme, og et tal ved siden af et navn tæller de ulæste beskeder. Teamrum (Indstillinger, Personalechat) er samtaler for en gruppe eller for alle, når et rum ikke viser nogen medlemmer.

Beskeder ses kun af personerne i samtalen: administratorer kan styre rummene, men læser dem aldrig. Indstillinger, Personalechat slår chat fra, og indstiller, hvor længe beskeder gemmes (0 gemmer de nyeste tusind af hver samtale).

Kapitel 34

Konference rum

I webgrænsefladen: /conferences

Et konference rum er et nummer, som flere personer kan ringe til for at tale sammen. Personale ringer til det fra deres skriveborde; eksterne ringere når det gennem en indgående rute eller et menuvalg, der peger på rummet.

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
Figur 26. A conference room: PIN, leaders, and who is talking

Opsætning af et rum

  1. Åbn Konference rum (kapitel 34) og tryk på Tilføj konference rum.
  2. Tilføj et nummer (ethvert ledigt nummer, 500 som standard) og et navn.
  3. Tilføj eventuelt en PIN. Ringerne hører en tone, indtaster PIN'en og trykker #. Tre forkerte PIN'er, og samtalen afsluttes.
  4. Tilføj eventuelt en leder-PIN, der er forskellig fra PIN'en. Den person, der indtaster den, deltager som leder.
  5. For at give eksterne ringere adgang, peger en indgående rute (eller et menuvalg) på rummet.

Valg

ValgHvad det gør
Vent på lederenalle andre hører holdtønten, indtil en leder deltager; når den sidste leder forlader rummet, lukkes rummet, og alle hænges op. Kræver en leder-PIN.
Medlemmer deltager mutedetil briefing og forelæsninger: ledere taler, medlemmer lytter. Et medlem trykker 1 for at bede om at tale, og en leder afmutede dem.
Optag rummethele rummet gemmes som en enkelt optagelse i Samtalehistorik (kapitel 47), medmindre optagelse er slået fra for hele systemet
Toner, når personer deltager og forladerslået til som standard
Flest personer på én gang50 som standard, op til 200

Taster under en samtale

Mens et rum er i brug

Siden viser hvert rum i brug: hvem der er i, hvem der taler (den grønne lygte), hvem der er muted, hvem har bedt om at tale, og hvem venter stadig på lederen. En administrator kan af- eller tilslutte en person, fjerne en person og låse eller låse rummet op.

Alle i et rum hører alle andre, der ikke er mutede, blandet af BitVoice; hver persons telefon kan bruge sin egen codec. En samtaleoptagelse gemmes for hver persons samtale, og en for rummet selv med dets varighed og optagelse.

HD-lyd

Slå HD-lyd til i et rum (nye rum har det slået til), og det blandes i 16 kHz i stedet for 8: personer på bredbånds-telefoner (G.722, Opus, browser-telefonen) hører hinanden i HD, med skarpheden af et moderne opkald, mens personer på almindelige telefoner (G.711, mobiltelefoner gennem en udbyder) hører det samme rum som sædvanligt. Live-visningen markerer rummet og hver medlem, der er i HD. HD kræver G.722 blandt codecs, telefonerne bruger (det er først i systemets liste, Indstillinger, Codecs). Optagelser af rummet forbliver i telefonkvalitet.

Video rum

Slå Video til på et rum, og video-telefoner (og softphones), der deltager, sender deres kamera og ser ét billede, skiftet, når personer taler, som i Asterisks ConfBridge:

BitVoice skifter billederne uden at afkode dem, så det koster næsten ingenting, og det beder hver ny billed-telefons fulde ramme (RTCP PLI og FIR, og SIP INFO billed-hurtig-opdatering, som de fleste skrivebords-telefoner svarer) om, så skiftet vises med det samme. Hvert medlems video bruger rummets video codec (H.264, medmindre du vælger VP8); en telefon uden det deltager med lyd alene. Hver seer får én stabil strøm (én kilde, dens egen payload-type), uanset hvem der er på skærmen. Live-visningen markerer, hvem der har video, og hvem der er på skærmen.

Et grid oprettes på en anden måde: BitVoice giver hver billede til ffmpeg på serveren, som afkoder dem, placerer dem i et 1280 x 720 billede i 15 billeder i sekundet og koder det en gang til alle. Installer ffmpeg (Indstillinger, Videoomdannelse, angiver, om det er fundet); uden det følger et grid-værelse taleren, og værelsets skærm siger det. Hvert billede koster procesortid: på en lille server, hold griddet til få værelser ad gangen. Kun medlemmer, hvis kamera sender, vises: nogen, der deltager uden video, eller hvis kamera stopper, forlader griddet (det fryser aldrig på et stille kamera), og griddet genoprettes inden for et par sekunder, når det ændrer sig, med en kort pause i billedet. Den tiende medlem og senere høres, men vises ikke. Live-visningen markerer griddets størrelse og hvem der er i griddet.

Alle menneskers video (browsere)

Vælg Alle menneskers video og rummet får sin egen side (Konference rum, Åbn video rum, eller #/video-room/NUMBER). Hver person der trykker Deltag med min kamera: browseren sender sin kamera én gang, i tre størrelser (simulcast), og modtager hver anden kamera i sit eget billede. BitVoice videreformidler billederne, som de kom, uden at afkode dem (en selektiv videreformidlingsenhed, SFU), så det koster lidt processor tid; upload af hver browser og download af hver seer er, hvad der begrænser et rum, så det kan tage op til 16 kameraer.

Deling af skærm: tryk på Del min skærm og vælg en skærm, et vindue eller en browserfane i browserens egen vælger. Alle i rummet ser det som det store billede under dit navn, med tekst, der holdes skarp (billedfrekvensen falder i stedet, når netværket er kort). Du behøver ikke at deltage med din kamera først. Stop deling, eller browserens egen Stop deling-linje, afslutter det.

Kapitel 35

Højttaler- og højtaleranlæg

I webgrænsefladen: /paging

Højttaler taler gennem mange telefoner på én gang: ring et højttalernummer, og hver telefon i gruppen svarer på sin højttaler selv. Brug det til meddelelser til en lager, en skole, en butiksgulv.

Opsætning af en oplæsningsgruppe

  1. På Oplæsning (kapitel 35) tryk på Tilføj oplæsningsgruppe og giv den et nummer (800 som standard) og et navn.
  2. Vælg telefonerne. Overhead-højttalere, der er opsat som udvidelser (type Overhead-højttaler), kan også være medlemmer.
  3. Valgfrit, en multicast-adresse og port.

Multicast

Multicast sender også oplæsningen til en multicast-adresse og port (239.0.1.10:5000), som overhead-højttalere og mange skrivebords-telefoner kan lytte til uden en opringning hver. En gruppe kan kun have en multicast-adresse. Det fungerer på ét netværk: routere sender ikke multicast videre, medmindre de er konfigureret til det.

Oplæsning og intercom

OplæsningIntercom
Hvem høreralle i gruppenen udvidelse
Tale tilbagenej, en vejja, begge veje
Hvordanringe gruppenummer*80 og udvidelsen

Telefoner, der ikke besvarer en oplæsning selv inden for få sekunder, er udelukket, så en telefon uden auto-svar holder aldrig en oplæsning tilbage. Nogle telefoner kræver auto-svar (intercom) tilladt i deres egne indstillinger.

Kapitel 36

Hot desking

I webgrænsefladen: /phones

En hot desk er en delt telefon, der bliver til den, der logger ind på den: til kontorer, hvor folk ikke har faste borde. Lav en ved at slå Hot desk til i udvidelsen, telefonen er konfigureret som (deskens egen udvidelse, f.eks. 900 Desk 3).

Logge ind og ud

  1. Ved telefonen, taste *33 og vent på tonen.
  2. Indtast din udvidelse og #, og vent på tonen.
  3. Indtast din voicemail-PIN og #. En stigende tone betyder, du er logget ind; en faldende tone betyder, det blev afvist.

Herefter ringer opkald til din udvidelse denne desk samt dine andre telefoner, og opkald du laver fra den viser dit nummer og navn og tælles som dine på Omkostninger. At logge ind på en anden desk flytter dig derhen. *34 logger dig ud. Fem forkerte forsøg låser desk'en i ti minutter.

Administrere hot desks

På Telefoner (kapitel 4), viser Hot desks, hvem der er logget ind hvor; administratorer kan logge nogen ind (uden deres PIN) eller ud. Koderne og en tid hver dag, hvor alle er logget ud, er i Indstillinger. Log-ind er gemt på tværs af genstart.

Kapitel 37

Hotel og vækkeopkald

I webgrænsefladen: /hotel

Vækkeopkald

Enhver kan bestille et vækkeopkald: gæster, nattevagter, personer på vagt. Fra deres egen telefon ringer de *62: BitVoice siger det, der er sat (hvis nogen), derefter indtaster de tiden som fire cifre (0630), eller trykker stjerne for at annullere det. På Hotel (kapitel 37) bestiller en administrator et til enhver udvidelse, en gang eller hver dag.

Ved den tid ringer telefonen med systemnavnet; besvaret høres "Godmorgen. Dette er din vækkeopkald." (vækkeopkaldsprompten i Lyde (kapitel 20), på gæstens eller udvidelsens sprog). Ubesvaret prøves det igen (3 forsøg, 5 minutter imellem, begge indstillet under Indstillinger på siden), og efter det sidste kan reception udvidelsen ringes. Med flere servere udfører kun en vækkeopkald.

Gæsteværelser

Slå Gæsteværelse til på udvidelsen af hver rooms telefon. På Hotel vises hver rooms gæst, vækkeopkald og roomstatus med Check ind og Check ud knapper.

The hotel system (PMS)

Kapitel 38

Kontakter på hver telefon

I webgrænsefladen: /contacts

Kontakter er virksomhedens adressekartotek: leverandører, kunder og andre kontorer, folk ringer til. Hver telefon viser det ved siden af udvidelserne, og når et af disse numre ringer ind, viser telefoner og opkaldskortet kontaktpersonens navn (når udbyderen ikke sendte noget). Et nummer matcher uanset, hvordan det er skrevet: +1 212 555 0100 og 2125550100 er den samme linje.

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

Tilføje kontakter

Tilføj kontakt for en ad gangen, med så mange numre (arbejde, mobil, hjem, andre), som de har. Import tager en regneark gemt som CSV, hvis første række navngiver kolonnerne: navn, virksomhed, arbejde (eller telefon), mobil, hjem, andre, e-mail, noter. BitVoice kontrollerer hele filen først og siger, hvilke linjer er forkerte; en kontakt med samme navn som en, der allerede er der, opdateres i stedet for at blive tilføjet to gange, og Erstat hver kontakt starter listen på ny. Eksport downloader listen som CSV.

På skrivebords-telefoner

Telefoner konfigureret af Telefoner (kapitel 4) (konfiguration) får adressekartoteket uden yderligere opsætning:

I browser-telefonen

Kontakter under tastaturet finder et navn eller nummer og lægger det klar til opkald.

Fra Microsoft 365 eller Google Workspace

BitVoice kan holde Kontakter i trit med jeres organisationskatalog: alle i det, der har et telefonnummer, og dets fælles kontakter (Exchanges organisationskontakter eller Googles fælles domænekontakter). I Indstillinger (kapitel 14), Microsoft 365 og Google Workspace, vælg tjenesten, giv, hvad den behøver, og tryk Tjek nu: den logger ind, tæller personerne og siger, hvilke udvidelser matcher en person via email. Gem, og Kontakter udfyldes inden for et halvt minut; derefter hver halve time eller med det samme med Synkroniser kontakter nu.

Microsoft 365 (en app-registrering; du skal kunne give admin-samtykke):

  1. I Entra-admin-centret, App-registreringer, Ny registrering: navngiv den BitVoice, enkelt-lejer, ingen omdirigeringsadresse.
  2. API-tilgange, Tilføj en tilladelse, Microsoft Graph, Applikations-tilladelse: User.Read.All, OrgContact.Read.All og Calendars.ReadBasic. Derefter Give admin-samtykke.
  3. Certifikater & hemmeligheder, Ny klient-hemmelighed: kopier værdien (vises én gang).
  4. I BitVoice: kataloget (lejer-ID), applikations-(klient-)ID og hemmeligheden. En hemmelighed udløber (Microsoft tilbyder op til to år): når den gør, siger kortet, at hemmeligheden blev afvist; lav en ny og indsæt den.

Google Workspace (en service-konto; du skal være en super-administrator):

  1. I Google Cloud, i et af dine projekter: skru People API og Google Calendar API til, lav en service-konto, og tilføj en nøgle (JSON) til den.
  2. I Google Admin-konsollen, Sikkerhed, Adgang og data-kontrol, API-kontroller, Domain-omfattende delegation, Tilføj ny: service-kontens klient-ID, med omfang https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy.
  3. I BitVoice: nøgle-filen og e-mailen for en administrator for service-konten til at agere som.

Hvad der kommer ind:

Kapitel 39

Kalendere og ikke forstyr

I webgrænsefladen: /extensions

En udvidelse kan følge personens kalender: under møder og fri, går opkaldene til voicemail eller videreføres (til en anden udvidelse eller en mobil), i stedet for at ringe en telefon, som ingen vil svare på. Ringgrupper ringer de andre imens, og i køer viser agenten som Fraværende.

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

I udvidelsen, Kalender og ikke forstyr, indsæt kalenderens private adresse:

Tjek læser det med det samme og viser de næste beskæftigede tider. BitVoice læser hver kalender hver femte minut. Fri (alle-dages-begivenheder og Outlooks "uden for kontoret") tæller altid; møder tæller, når Møder tæller som beskæftiget er aktiveret; begivenheder, der er markeret som fri, tæller aldrig, og heller ikke aflyste begivenheder. Gentagne møder med sprunget og flyttet forekomst forstås. Hvis en kalender ikke kan læses, siger Health det.

Ikke forstyr nu stopper udvidelsens ringning, indtil det slås fra, uanset hvad kalenderen siger. Udvidelseslisten viser, hvem der er fraværende og indtil hvornår.

Den private adresse fungerer som en adgangskode: enhver med den kan læse den kalender, så den opbevares med de andre hemmeligheder.

Alle kalendere på én gang: Microsoft 365 og Google Workspace

I stedet for en privat adresse per udvidelse, kan BitVoice læse hver persons kalender fra Microsoft 365 eller Google Workspace: konfigurer det én gang i Indstillinger (kapitel 14), Microsoft 365 og Google Workspace (se Kontakter (kapitel 38) for trinnene), med Kalendere viser, hvem der er væk aktiveret. Hver udvidelse matchas med sin person ved sin e-mail; en med en privat adresse af sin egen bruger den i stedet. Udvidelsens indstillinger her (Møder tælles som optaget, Mens optaget, opkald) gælder som med en privat adresse.

Kapitel 40

Mobile apps

BitVoice-appene til iPhone og Android gør en mobiltelefon til en af en udvidelses telefoner. Den ringer som en kontor-telefon, på telefonens egen opkaldsskærm, selv når appen er lukket.

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

Konfiguration af push

En lukket app vækkes til opkald via en push-besked. I Indstillinger (kapitel 14), Mobile apps, vælg en:

PushHvad du behøver
Push-relæBioDreams relæ (med hosting eller support) eller din egen bvpush: dens Relæ-adresse, Nøgle-ID og Hemmelighed
Egen appsdine egne bygninger: til Apple, Team-ID, Bundle-ID, Nøgle-ID og Nøgle (.p8); til Google, Firebase-servicekonto (JSON)

Indstil Adressen, appene bruger til denne servers https-adresse, som den nås fra hvor som helst, ikke kun kontoret.

Parre en telefon

  1. Åbn udvidelsen og tryk Tilføj en telefon.
  2. Scann QR-koden i appen. Koden virker kun én gang, i ti minutter.

Når et opkald kommer ind

BitVoice vækker appen; den tilslutter, ringer på telefonens egen opkaldsskærm og besvares som en hvilken som helst anden telefon på udvidelsen: ringegrupper og køer ringer den med udvidelsens andre telefoner. Udvidelsens side viser en liste over dens parrede telefoner, om hver Kan vækkes til opkald, hvornår den sidst blev set og sidst vækket, og eventuelle push-problemer. Fjern parring stopper en telefon med at ringe med det samme, til en tabt telefon.

Under et opkald

Appen er en fuld udvidelse, ikke kun en tastatur:

De andre faner

Live-transskription på et opkald

Med Skriv ud opkald live på (Indstillinger (kapitel 14), AI), skrives hver side af et opkald ud, mens det tales, og vises på telefonen, mens opkaldet er i gang. Lyden går til tale-til-tekst-tjenesten (på din egen computer, hvor det er indstillet) eller AI-tjenesten, mens opkaldet varer. Det er den samme skrivning som 911 live-transskriptioner (kapitel 13), for almindelige opkald.

Kapitel 41

Videoopkald

I webgrænsefladen: /settings

Når begge telefoner i et opkald sender video (video skrivebords-telefoner, softphones, video-dørklokkering), passerer billedet mellem dem gennem BitVoice. Intet at konfigurere: det er aktiveret, medmindre Indstillinger → Videoopkald er slukket.

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

Konvertering af video

Telefoner og apps, der deler en video-kodek (de fleste bruger H.264), får hinandens video, som den er. Når to parter ikke har nogen kodek til fælles (en skrivebords-telefon med kun H.264 og en browser med kun VP8), skal du slå Konverter video mellem H.264 og VP8 til i Indstillinger: BitVoice tilbyder derefter begge kodeker, besvarer hver part i dens eget, og konverterer hver vej med ffmpeg, der skal være installeret på serveren (apt install ffmpeg, brew install ffmpeg; eller give dens sti). Konvertering koster cirka en processor kerne per opkald og tilføjer en lille forsinkelse, så det er slukket som standard og kun bruges, når det er nødvendigt. Indstillinger siger, om ffmpeg blev fundet.

Kapitel 42

Fax: sending og modtagning, faxmaskiner og analoge telefoner

I webgrænsefladen: /faxes

Faxmaskiner, analoge telefoner, dørtelefoner og gamle linjer tilslutter via en SIP-gateway (eller en telefoni-kort i BitVoice-computeren: se Telefonikort (kapitel 6)): en ATA (Grandstream HT-serie, for en eller to analoge telefoner eller en fax), eller en større gateway (Patton SmartNode, AudioCodes MediaPack og Mediant) til mange analoge porte, en ISDN-linje (BRI/PRI) eller gamle analoge linjer (FXO). Hver port registrerer sig til BitVoice som en udvidelse, ligesom en telefon.

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.
Figur 31. Fax: machines, email and PDFs

Modtagelse af faks uden en faxmaskine. På Faks, tilføj et faxnummer (300, sige), med de e-mail-adresser, som hver fax skal sendes til. Så i Opkaldsvejledning (kapitel 8) sender du et telefonnummers opkald til det. BitVoice svarer som en faxmaskine, skifter opkaldet til T.38 og modtager faxen; hver fax bliver en PDF, gemt på Faks (Vis, PDF) og sendt via e-mail. En fax, der afbrydes undervejs, gemmer de sider, der ankom, og siger det. Hver fax i listen viser den sendende eller modtagende maskines egen identitet, når den afviger fra nummeret, og hastigheden, som siderne gik med (14.400 bit/s er den hurtigste; en maskine, hvis faks ofte mislykkes ved en lav hastighed, har sandsynligvis en dårlig linje). Dette kræver en udbyder, der understøtter T.38 (de fleste gør); en fax, der sendes som lyd, kan ikke modtages på denne måde. Prøvet med T38Fax, en fax-udbyder: registrer forbindelsen med dens brugernavn og adgangskode til sip.t38fax.com, port 5080 (UDP); tillad UDP fra dens netværk (8.34.182.0/24 og 8.20.91.0/24) gennem enhver firewall foran BitVoice.

Sending af en fax. På Fax, Send en fax: Vælg det faxnummer, det skal sendes fra, skriv nummeret til at sende til, skriv en note, hvis du ønsker (den bliver den første side), og tilføj dokumenter. Tekstfiler og billeder (PNG, JPEG, GIF) virker overalt. PDF kræver poppler på serveren (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument og RTF kræver LibreOffice også. Siden siger, hvilke serveren kan gøre. Hver side får en overskriftslinje, som faxmaskiner printer den: tiden, faxnummrets navn, dets identitet og sideantallet. Opkaldet går ud fra identitetens cifre (+1 212 555 0300 ringer fra +12125550300), eller fra faxnummeret selv, når identiteten ikke er et nummer. Siderne er US-brevstørrelse i Nordamerika og A4 andre steder, fra landet i Indstillinger.

BitVoice ringer nummeret op over dine udgående ruter, som en udvidelse ville, og sender med den hurtigste rate, linjen kan bære (14.400 bit/s, langsommere, hvis linjen er dårlig). Fax fra et faxnummer sendes én ad gangen. Et beskæftiget nummer eller et, der ikke svarer, prøves igen fem minutter senere, tre gange i alt. Sendte fax er listet med de modtagne: Sendt, Venter på at sende, Fejlet (med Prøv igen), eller Delvist sendt, når linjen brød efter nogle sider.

Email til fax. Længere nede på listen, konfigurer en mailbox, som BitVoice kan læse (IMAP over TLS, port 993; for Google- og Microsoft-mailboxer brug en app-adgangskode), derefter Test og Gem. Enhver, der har tilladelse til at sende, skriver til den mailbox med faxnummeret i emnefeltet (Fax 212 555 0199), eller til en plus-adresse (fax+2125550199@example.com), hvis mailserveren accepterer dem. Vedhæftninger bliver siderne, og emailens egne ord bliver dæksiden (signatur og citeret mail bliver udeladt). Den sendes fra det faxnummer, der lister afsenderen: dets Email hver fax til-adresser kan altid sende, og Kan også sende fax via email tilføjer andre (hele adresser eller @example.com for et domæne). Afsenderen modtager en email, når faxen er sendt, eller hvorfor den ikke kunne.

Email er let at forfalske, så BitVoice faxer kun en besked, når din mailserver har fundet ud af, at den virkelig kom fra afsenderens domæne (DKIM, SPF eller DMARC, i Authentication-Results-linjen, den tilføjer). Andre beskeder bliver droppet uden svar. Skift Acceptér mail, som afsenderens domæne ikke har godkendt til kun for en mailbox, som ingen udenfor mail kan nå.

Faxmaskiner på gateways. BitVoice sender fax via T.38, den internationale faxstandard: når gatewayen hører en faxtone, skifter den kaldet til T.38, BitVoice beder den anden side (din udbyder eller en anden gateway) om at skifte også, og passerer faxen mellem dem. Hvis den anden side ikke kan håndtere T.38, bliver kaldet på G.711, og faxen sendes som lyd, hvilket fungerer på et godt netværk. Aktive kald viser fax (T.38), mens en fax sendes igennem.

Til pålidelige faks:

Kapitel 43

Indbakke: webchat, WhatsApp og Messenger

I webgrænsefladen: /inbox

Indboksen (kapitel 43) indeholder hver skreven konversation i én liste: chatboksen på din website, WhatsApp, Facebook Messenger og tekster (kapitel 44). Enhver, der er logget ind på webgrænsefladen, kan svare; den første, der svarer, tager konversationen (enhver kan overdrage den med Besvaret af), og Luk lægger den væk, indtil personen skriver igen. Ulæste konversationer tælles, og listen opdateres automatisk.

Chatboksen på din website

Under Kanaler, slå Webchat til, vælg dens titel, farve og første linje, og indsæt linjen den vises i dine sideskodser:

<script src="https://pbx.example.com:8443/webchat.js" async></script>

Den tegner en chatknap i hjørnet af hver side; besøgende skriver (med deres navn, hvis de ønsker) og ser dine svar, som de kommer. Konversationen forbliver i deres browser, så den fortsætter, mens de bevæger sig mellem sider. Listen over dine sites under Kun på disse sites, så boksen kører ingen andre steder. Besøgende skal nå denne servers adresse fra internettet med et certifikat, som browsere stoler på (Let's Encrypt (kapitel 14)). Ti nye chats fra én adresse i ti minutter er det maksimum, BitVoice tager.

WhatsApp

WhatsApp Business-numre på Metas Cloud API. I Metas udviklerside, lav en app med WhatsApp, tilføj dit nummer og lav en systembruger med en permanent adgangstoken. I Kanaler, slå WhatsApp til og indtast telefonnummer-ID og forretningskonto-ID (begge fra API-oplysninger), adgangstoken og appens app-hemmelighed, og gem derefter. I appens WhatsApp-konfiguration, indstil webhook: callback-adressen og verificeringstoken BitVoice viser, abonneret på *beskeder*.

WhatsApp lader dig svare frit i 24 timer efter kundens sidste besked; derefter accepterer den kun beskedsskabeloner godkendt i WhatsApp Manager. Svarboksen bliver så til en skabelonvælger: vælg en skabelon (den viser dine kontos skabeloner, med deres sprog og type), udfyld dens værdier ({{1}}, {{2}} ...), kontroller forhåndsvisningen, som er hvad kunden vil læse, og Send skabelon. Skabeloner, som indbakken ikke kan udfylde, vises gråt med årsagen: en med et billede, video eller dokumentoverskrift, en variabel i overskriften eller en knaps link, navngivne parametre eller en kodeknap; og dem, der endnu ikke er godkendt. Lav skabeloner i WhatsApp Manager; Meta gennemgår hver enkelt, normalt inden for minutter.

Facebook Messenger

Til en Facebook-side: i Meta-appen, tilføj Messenger, tilknyt siden og lav en sideadgangstoken. I Kanaler, indtast side-ID, sideadgangstoken og app-hemmelighed; og indstil derefter webhook (adressen og verificeringstoken vist), abonneret på *beskeder* og *messaging_postbacks*. Svar er tilladt i 24 timer efter personens sidste besked. Fra da til 7 dage tager Messenger svar skrevet af en person (sendt med Metas *human agent*-tag: appen kræver Metas Human Agent-tilladelse, anmodet i App-gennemgang); den automatiske velkomst vises aldrig så.

Hver webhook kontrolleres med app-hemmeligheden (Metas signatur) før BitVoice tror på den, og en besked, som Meta sender to gange, gemmes én gang. Billeder, lydnoter og andre vedhæftninger vises som hvad de er ("[billede]"); åbn dem i Metas egne apps.

Automatisk velkomst, når den er indstillet, svarer på den første besked i hver ny konversation med det samme.

Kapitel 44

Erhvervstekstning (SMS)

I webgrænsefladen: /texts

Send og modtag tekstbeskeder fra dine forretningsnumre på Tekster. Tekster går gennem en tekstningsudbyder. Indbygget: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute og VoIP.ms, plus Din egen webhook til enhver anden tjeneste eller en gateway af din egen. Enhver antal udbyderkonti kan bruges på samme tid: hvert nummer siger, hvilken udbyder der bærer det.

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

Opsætning

  1. I udbyderens portal, find kontos API-oplysninger. Skemaet beder om præcis det, som udbyderen kalder dem (Twilio: Account SID og auth-token; Telnyx: en API-nøgle; Bandwidth: API-bruger, adgangskode, konto-ID og messaging-applikations-ID; SignalWire: også dit rumadresse) og siger, hvor du finder dem.
  2. På Tekster, Tekstningsopsætning, tilføj udbyderen med dem og gem. BitVoice viser en adresse for modtagne tekster: indstil den i udbyderen som, hvor modtagne beskeder sendes (dens callback, webhook eller besked-URL). For VoIP.ms, tilføj ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} til slutningen. Leveringskvitteringer sendt til samme adresse ignoreres. BitVoice skal være tilgængelig fra internettet der.
  3. Tilføj hvert nummer, du tekstér fra (med landskoden), udbyderen, der bærer det, og udvidelserne for at fortælle ved e-mail, når en tekst kommer ind.

US 10DLC

Amerikanske operatører blokerer tekstbeskeder fra almindelige forretningsnumre, der ikke er registreret. Registrer dit brand og derefter en kampagne med din tekstudbyder; listen over tekstbeskeder sporer, hvor de er, og advarer, når dit eksempelbesked mangler de afmeldingsord, operatørerne forventer.

Samtaler

Hver samtale viser, hvem det er (fra Kontakter), ulæste tekstbeskeder og tråden. Indtast sender; tælleren viser, hvor mange tekstbeskeder en lang besked tager. Når nogen besvarer STOP, kan der ikke sendes flere beskeder til dem fra det nummer, før de besvarer START. Modtagne tekstbeskeder vises også som en meddelelse i BitVoice.

Kapitel 45

Overføringsbriefing

I webgrænsefladen: /settings

Så en opkaldende aldrig behøver at gentage sig selv: med Brief den, som opkaldet overføres til på (Indstillinger, AI), når et opkald overføres, skriver BitVoice en to-sætnings sammenfatning af opkaldet indtil videre (hvem der ringer, hvad de vil, noget der allerede er lovet) til den person, det går til. Den vises på deres browser-telefon med det ringende opkald, på Aktive opkald (kapitel 46) og som en tekst på deres skrivebords-telefons skærm (for telefoner, der viser SIP-besked)

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

Det fungerer på samme måde, når AI-receptionisten overdrager en opkaldende til en person: briefing kommer fra, hvad opkaldende fortalte assistenten.

Det kræver AI-tjenesten og en tale-til-tekst-model (Indstillinger, AI), og opkaldets lyd indtil videre (op til fem minutter) sendes til den tjeneste for at blive skrevet ud. En sammenfatning tager et par sekunder, så den kan vises lige efter, at telefonen starter med at ringe.

Del 4

Kunder og indsigt

At vide, hvem der har ringet og hvordan det gik: de aktive opkald og historik, kundetidslinjen, CRM-systemer, optagelser og samtykke, kvalitet, omkostninger og opkalders rygte.

Kapitel 46

Live-opkald

I webgrænsefladen: /calls

Live-opkald viser hvert opkald i gang, opdateret, som det sker: hvem ringede til hvem, hvor længe det har været i gang, dets codec og dets kvalitet.

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
Figur 34. Live calls and history: every call, while it happens and after

Hvad administratorer kan gøre

HandlingHvad det gør
Afslutafslutter opkaldet for begge sider
Åbn dørenfor et opkald fra en dørstation
Pause optagelsefor et kortnummer: den pausede strækning er stille i optagelsen og markeret i historikken (Opkaldsoptagelse (kapitel 51))
Lythør opkaldet stille
Whispertale til agenten alene; opkalderseren hører ikke
Bargedeltage i opkaldet; alle hører dig

For at lytte, viske eller barge, tryk på Overvåg, vælg telefonen at bruge under Fra telefon og tryk på Ring mig: din telefon ringer, og når du svarer, deltager du i opkaldet. Du kan skifte mellem at lytte, viske og barge, mens du er i det.

Hvad andre viser

Når et opkald slutter, flyttes det til Opkaldshistorik (kapitel 47).

Kapitel 47

Opkaldshistorik

I webgrænsefladen: /history

Hvert færdigt opkald: hvem ringede til hvem, hvornår, hvor længe og hvordan det sluttede. Sortér kolonnerne, afspil optagelser (en pause for kortnumre er markeret), og download listen som CSV. Hvordan længe optagelser gemmes, er indstillet i Indstillinger, Opkaldsoptagelse; en retlig hold (kapitel 73) gemmer dem længere.

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
Figur 35. Live calls and history: every call, while it happens and after

Hvordan det blev ruteret

Under hver opkalds resultat, viser Hvordan det blev ruteret i plain tekst og i rækkefølge, hvad der bestemte, hvor opkaldet gik: den indgående rute, der tog det, om en skema var åben eller lukket og tidspunktet, en toggles side, hvad en ruterings-script valgte (eller at dens fallback tog opkaldet), tasterne trykket i en menu, hvem var væk, hvem havde ingen telefon forbundet, hvem ikke svarede, den udgående rute og trunker brugt (og en trunk, som sundhedsdommeren flyttede bag de andre), toll-svindel-vagts dom, og, for et optaget opkald, hvis parter er under forskellige samtykke-regler, hvilken regel der blev anvendt.

Kvalitet, lyd og kryptering

Kvalitets-kolonnen viser hver besvaret opkalds score (MOS, ud af 5) og to mærker, når de gælder:

Transkriptioner og søgning

Med AI aktiveret og Transkriber optagede opkald slået til (Indstillinger, AI), bliver hver optaget opkald skrevet ud, med en kort sammenfatning og dets handlingselementer: hvad nogen enedes om eller blev bedt om at gøre. Hver side af opkaldet skrives ud separat fra optagelsen, så transkriptionen viser, hvem sagde hvad, og hvornår. Transkriptionsknappen ved siden af en optagelse åbner den; administratorer kan også transkribe et enkelt opkald eller transkribe et igen.

Søg efter hvad der blev sagt finder opkald efter ord fra deres transkriptioner, sammenfatninger og handlingselementer. Kun optagede opkald bliver transkriberet. En transkription slettes med dens optagelse, og læsning eller søgning i transkriptioner bliver noteret i audit-loggen, ligesom afspilning af en optagelse.

Kapitel 48

Kundetidslinje

I webgrænsefladen: /timeline

Kundetidslinjen viser alt med ét telefonnummer over de sidste 12 måneder, nyeste først, så den, der tager opkaldet, kender hele historien.

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
Figur 36. One customer timeline: everything about a number in one place

Hvad det viser

ElementMed
Opkaldhvem der tog dem, hvor lang tid og med en transkript, dens sammenfatning, optagelsen og transkriptet
Beskederderes sammenfatninger
Teksteri begge retninger
Callbacksanmodet om og om det er gjort
Noterteamets egne noter

Et nummer matcher uanset hvordan det er skrevet: +1 212 555 0100 og 2125550100 er det samme.

Åbning

Fra et kaldkort (Tidslinje), fra Kontakter, fra et indgående opkald i Opkaldshistorik, fra en tekstkonversation eller skriv et nummer øverst på Tidslinje (kapitel 48).

Noter

Administratore kan Tilføje en note til teamet: den vises på tidslinjen for alle, med hvem der skrev den og hvornår, og kan fjernes.

Kapitel 49

CRM: opkaldende-kort og opkaldslogning

I webgrænsefladen: /settings

Tilslut en kundesystem i Indstillinger (kapitel 14), CRM. Det fungerer med ethvert system, der har en webadresse, uden kode skrevet til hvert produkt.

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

Opkaldende-kort

Mens et opkald fra udenfor ringer, viser Live-opkald et kort: hvem det er (fra din CRM, eller udvidelsens navn), hvor ofte de har ringet i 90 dage, eventuelle callbacks (kapitel 30), de venter på, og sammenfattningen af deres sidste transkriberede opkald. Browser-telefonen viser et kortere kort til personen, der besvarer: hvem det er, tidligere opkald og ventende callbacks, men ikke andre personers opkaldssammenfattelser.

Til navnet, indstil Adresseopslag: BitVoice spørger det (GET) med opkaldendes nummer i stedet for {number}, sender Adresseopslag-header med dets værdi (en vault-reference virker), og forventer JSON med navn, virksomhed, URL og noter; 404 betyder ukendt. Svar gemmes i fem minutter. Åbn i CRM-link placerer et link til opkaldende på kortet. Brug Find det til at prøve et nummer, før du gemmer.

Et CRMs eget svar

De fleste CRMs besvarer en søgning i deres egen form, normalt en liste over match, ikke BitVoices {"name": ...}. Åbn Svarfelter og angiv, hvor hver del er, som en punkteret sti: et navn træder ind i et objekt, og et nummer ind i en liste, så list.0.name er navnet på den første match. Link til kontakten kan være en sti til en link, som CRM'et giver, eller en webadresse med stier i klammer, f.eks. https://crm.example.com/#Contact/view/{list.0.id}. Et tomt felt læser BitVoices eget navn for det. En søgning, der ikke finder nogen, er det samme som 404: kortet siger, at opkalderen ikke er kendt. Prøv et nummer med Find det før du gemmer.

For eksempel, EspoCRM (testet mod et rigtigt EspoCRM): Opret en API-bruger (Administration, API-brugere, godkendelse ved API-nøgle) med en rolle, der må læse kontakter og konti, og angiv derefter:

EspoCRM gemmer numre i international form (+15405550117), som BitVoice sender dem. Andre CRMs fungerer på samme måde med deres egen søgeadresse og felt navne; tjek formen på deres svar i deres API-dokumentation eller med Find det, hvis besked navngiver, hvad den fandt.

Opkaldslogning

Angiv Opkaldslog-adresse og Signeringshemmelighed, og hvert opkald sendes derhen, når det afsluttes (begivenhed call.ended), igen med sin sammenfatning, handlinger og transskription, når det er transkriberet (call.summarized), og hver booket callback (callback.new). Hver POST medfører X-BitVoice-Event, X-BitVoice-Timestamp og X-BitVoice-Signature: sha256= efterfulgt af HMAC-SHA256, med hemmeligheden, af tidsstempel, et punktum og brødteksten. En mislykket levering prøves fire gange over cirka et minut; hvis den stadig mislykkes, siger Health det. Send en testbegivenhed kontrollerer adressen og hemmeligheden.

Kapitel 50

Kald indsigt for ledere

I webgrænsefladen: /quality

Til kontaktcentre: bevis for, hvordan opkald gik, til en leder at lytte til, aldrig en automatisk 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.
Figur 38. Call insight: evidence for a supervisor, never a score

I et opkalds Transkript, viser Hvordan det gik sig, målt fra optagelsens lyd alene: hvor meget hver side talte, hver sides længste stræk, hvor ofte hver side begyndte at tale over den anden, hvor længe begge talte på samme tid, og den stille (en lang pause er ofte en hold eller død luft).

Med Notér, hvordan hver transkriberet samtale gik aktiveret (Indstillinger, AI), læser AI'en også transkriptet og siger, hvordan opkaldspersonen syntes at være til at starte og slutte, og viser op til seks øjeblikke: Gik godt, Se på (tale over opkaldspersonen, en lang hold, et uklart svar), Ikke besvaret (et spørgsmål, opkaldspersonen stillede, som ikke fik noget svar) og Løftet (noget, nogen sagde, de ville gøre), hver med tid og ord, så du kan gå direkte til det. En administrator kan bede om det på ethvert transkriberet opkald med Se på dette opkald.

På Kaldkvalitet (kapitel 50) summerer Samtaler, efter hvem tog dem de transkriberede opkald for perioden pr. person: deres andel af snakken, deres længste stræk, hvor ofte de talte over kaldet, stille tid, opkald der endte med at kaldet blev sur, og de markerede øjeblikke. Brug det til at vælge opkald at lytte til, ikke til at rangere personer.

Coachingsnoter er dine egne ord om et opkald, på det øjeblik, de er om: under Hvordan det gik, skriv Øjeblik (1:05, eller lad det være tomt for starten) og Coachingsnote, og tryk Tilføj note. Noter er listet i rækkefølge af opkaldet med, hvem der skrev dem, og hvornår; administratorer skriver og fjerner dem, visere læser dem med transkriptet, og tilføjelse eller fjernelse af en note noteres i revisionsloggen. De følger med optagelsen, så dens retention og juridiske retentioner dækker dem også. Coachingsnoter på Kaldkvalitet tæller dem pr. person.

Kapitel 51

Opkaldsoptagelse og kreditkortbetalinger

Optagelse er indstillet i Indstillinger (kapitel 14), Optagelse af opkald: fra, hvert opkald eller kun opkald fra udvidelser, der er markeret Optag opkald. Optagelser afspilles fra Opkaldshistorik (kapitel 47), og med AI aktiveret skrives de ud og summeres.

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
Figur 39. Recording with consent: announce, beep, or not at all

Underretning af personer

Nogle steder kræver det, at alle på et opkald bliver underrettet om, at det optages: Meddelelse, Signal og regler efter region er i Optagelsesgodkendelse (kapitel 52).

Kortbetalinger (PCI DSS)

Kortnumre må ikke gemmes i optagelser. Før en opkaldende læser et op, trykker personen på udvidelsen *7; *8 genoptager. Pause optagelse på Aktive opkald (kapitel 46) gør det samme. Den pausede del er stille i optagelsen og er opført i opkaldshistorikken, så en revisor kan se, hvor og hvor længe.

Konferencerum

Et rum med Optag rummet aktiveret gemmes som én optagelse af hele rummet (Konferencerum (kapitel 34)).

Hvor længe ting gemmes

Indstillingerne angiver, hvor mange dage optagelser, opkaldshistorik og voicemail gemmes; ældre optagelser slettes inden for en time. Alt under en retlig befaling (kapitel 73) gemmes uanset alderen. Arkivet (kapitel 72) kan gemme kopier andre steder.

Administratore og visere kan afspille optagelser og læse transskriptioner; kun administratore kan transskribere et opkald eller transskribere det igen. Afspilning af en optagelse eller læsning af dens transskript noteres i overvågningsloggen.

Kapitel 53

Opkaldskvalitet

I webgrænsefladen: /quality

Hvordan opkaldene lød over de sidste dag, uge, måned eller 90 dage, fra lyden BitVoice selv modtog på hver side af hvert opkald. Telefoner er grupperet efter deres lokation (kapitel 12) (eller "ingen lokation"), og opkald fra udenfor efter udbyderens linje, de kom ind på.

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

Hvert sted viser sine opkald, dens gennemsnitlige score (MOS, ud af 5: over 4 er godt, under 3,6 lyder dårligt), andelen af lydpakker, der aldrig ankom, og jitter (urent forsinkelse). Under dette fortæller BitVoice, hvad der er galt i almindelige vendinger, f.eks. "Packettab på hovedkontorets netværk: 3,2% af lyden ankom aldrig, mest mellem 14:00 og 16:00", samt hvad der skal kontrolleres. Stangdiagrammet viser den tabte lyd efter klokkeslæt.

Diagnosen sammenligner de to halvdele af de samme opkald: lyden fra stedets telefoner og lyden fra udbyderen, som de samme opkald gik gennem. Når den anden halvdel ankom ren, er tabet på dette steds side, og det siger det; når begge halvdele mistede lyd, er stedet ikke alene skyld i det, og det peger på, hvad opkaldene deler, dette systems egen internetforbindelse. Hvis hvert sted mister lyd på samme tid, er årsagen ligeså, hvad de deler. Hvordan dette blev udarbejdet listar årsagerne, trin for trin (opkaldskvalitetsregelbogen, se Sikkerhed (kapitel 60), "Hvordan BitVoice beslutter"). Steder med færre end tre opkald bliver ikke vurderet. Opkaldskvalitet pr. opkald er også i Opkaldshistorik (kapitel 47) (kvalitetskolonnen) og, mens opkald er i live, på Liveopkald (kapitel 46).

Et opkald, der connectede, men fik ingen lyd overhovedet fra den ene side, tælles separat, under med ingen lyd, og placeres først: det er ikke dårlig lyd, men lyd, der aldrig ankom, næsten altid en firewall eller NAT-router, der lader SIP igennem og holder medieudgangen tilbage. Stedets råd siger, hvad der skal kontrolleres (for en udbyder, dens medieadresseområder).

Kapitel 54

Omkostninger og budgetter

I webgrænsefladen: /costs

BitVoice priser hvert opkald ud fra, hvad din udbyder beregner, og viser månedens udgifter efter afdeling, person og trunk, med de dyreste opkald.

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).
Figur 42. Costs: every call priced, budgets watched

Priser

På Trunk (kapitel 7), åbn en trunk og dens Opkaldspriser. Hver pris dækker numre, der starter med nogle cifre, som nummeret sendes til udbyderen (kun cifre, så 44 for Storbritannien, 1900 for US-premiumrate); den længste match vinder, og en pris uden cifre dækker alle andre numre. Angiv prisen per minut, eventuel afgift per besvaret opkald, faktureringsinterval (60 sekunder for hele minutter, 6 eller 1 for finere) og eventuel minimum. Opkald ind, per minut er for gratisnumre, du betaler for at modtage. Hvad ville det koste kontrollerer et nummer, før nogen ringer det. Valutaen er sat på Omkostninger.

Et opkalds omkostning er fast, når det slutter, med priserne på tidspunktet; ændring af en pris ændrer ikke tidligere opkald. Omkostninger siger, hvor mange besvarede opkald ud havde ingen pris.

Afdelinger og budgetter

Giv udvidelser en Afdeling (i udvidelsen). På Omkostninger, tilføj et budget for hvert opkald eller for en afdeling: en advarsel vises i BitVoice, og sendes til budgettets adresse og advarslingsadressen, på 80% og igen på 100% af måneden.

Advarslen

Opkald ud koster mere end dette i en time udløser en advarsel, når udgående opkald overstiger denne mængde inden for en time. En pludselig række dyre opkald er det sædvanlige tegn på toll-svindel (en stjålet telefonadgangskode): kontroller Opkaldshistorik, derefter deaktiver udvidelsen eller trunk'en.

Kapitel 55

Opkalders rygte og mærkede opkald

I webgrænsefladen: /reputation

Telefonselskaber kører spamfiltre, der kan mærke et virksomhedsnummer "Spam sandsynligt", eller blokke det, og derefter besvarer næsten ingen. Opkalders rygte overvåger hvert nummer, du ringer ud fra, fra dine egne opkald, og siger i klare ord, hvordan det går:

Numre med færre end 20 opkald vises som for få til at dømme.

Dine udgående numre giver hvert nummer et navn (sendt som opkalders navn), en årsag til opkaldet og et logo (et https://-billede). På en trunk med Send branded caller ID aktiveret, sendes logo og årsag ud som rich call data (RFC 9796 Call-Info); operatører, der understøtter branded calling, viser dem på den modtagende telefon. De fleste telefoner viser navnet fra caller-name (CNAM)-databasen i stedet, som din udbyder indstiller: spørg dem. Overvåg sætter en advarsel på Health, når et overvåget nummer begynder at se ud til at være mærket.

Siden siger også, hvad man skal gøre, når et nummer er mærket.

Kapitel 56

Spam-beskyttelse og STIR/SHAKEN

I webgrænsefladen: /settings

I USA og Canada signerer udbyderen, som et opkald starter med, sin opkalders-ID (STIR/SHAKEN): A, når den kender opkaldende og måske bruger nummeret, B, når den kender opkaldende, men ikke nummeret, C, når den kun har videregivet opkaldet. Din udbyder fortæller enten BitVoice sin dom (verstat) eller sender den signede Identitets-header videre, som BitVoice derefter kontrollerer selv: signatur, at den er under en minut gammel og at den nævner numrene på dette opkald. Dommen vises som Verificeret, Delvist verificeret, Ikke verificeret eller Ikke verificeret på Aktive opkald og i Opkaldshistorik.

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

I Indstillinger, Spam-beskyttelse, vælge, hvad der sker, når en opkalders-ID mislykkes med verificering (ringe, ringe mærket eller afvise), når den ikke er verificeret overhovedet og når nummeret er tilbageholdt. Et mærket opkald ringer med Spam? (eller din egen mærkning) før opkaldendes navn. Blokerede numre afvises; en post, der slutter med * blokerer et nummerrum (+1900* er alle amerikanske premium-rate-numre). Altid tilladt numre afvises eller mærkes aldrig. I Opkaldshistorik tilføjer knappen Blokér ved siden af en opkaldende dem til listen; afviste opkald er listet som Blokeret.

Inden for en time efter et nødopkald fra en hvilken som helst extension, afvises intet opkald (blokerede ringer i stedet med mærke), for det kan være nødtjenesten, der ringer tilbage. Et 911-opkald (fra ESInet eller en CAMA-trunk) afvises aldrig eller forsinkes af skærmning.

Callers BitVoice does not know

A caller is known when the number is always allowed, in the contacts (kapitel 38), was called from here in the last year, or passed the robot test in the last 90 days. Numbers are matched however they are written (with or without the country code, 1, 0 or +). Under Callers BitVoice does not know, choose what happens to everyone else:

ValgHvad ringeren får
Ringe som normaltopkaldet ringer som ethvert andet (standard)
Robot-test førstBitVoice besvarer og siger "For at blive forbundet, tryk venligst" og en cifre, som ændrer sig hver gang. Den rigtige tast sørger for, at de kommer igennem til det sted, opkaldet var bestemt for; noget andet eller intet (to gange), og de kommer til Hvor ringere, der ikke består testen, kommer, eller hører farvel. Automatiserede opkald trykker ikke på den
Send et andet sted henintet ringer: de kommer direkte til det valgte sted, en voicemail-boks for eksempel

Robot-testen behøver sine ord: i Lyde (kapitel 20), optag eller lav (med en tale-tjeneste) skærmnings-prompter og tal fra 1 til 9 på kalderens sprog. Indtil de er optaget, ringer opkaldene, som sædvanligt (en kalder kan ikke bestå en test, han ikke kan høre), og Sundheds-tjenesten siger det. En kalder, der består, tæller som kendt i 90 dage. Testen besvarer opkaldet, så kalderens udbyder starter med at beregne det fra det øjeblik, som for ethvert besvaret opkald. Opkaldshistorik viser hvert opkalds resultat (bestået, fejlet, sendt) og hvorfor-sporet siger, hvad der skete.

Et spam-database

BitVoice kan spørge en rygte-tjeneste om hver ukendt ringer før opkaldet ringer. Brug Nomorobo gennem Twilio udfylder Twilio Lookup med Nomorobo-spam-karakter (installer Nomorobo-tilføjelsen i din Twilio-konto, og indtast derefter dens konto-ID og godkendelsestoken); enhver anden tjeneste, der besvarer i JSON, virker også: give dens adresse med {e164} (+12125550142) eller {number} (som udbyderen sendte det), hvor dens dom er (Dom-felt, en punkteret sti), og når det betyder spam (en score på eller over Spam ved score, sand, eller teksten i Eller spam, når teksten er, som f.eks. BLOCK). Vælg, hvad der sker med en ringer, den kalder spam: ringe mærket, robot-testen eller afvist.

Bloker den sidste kalder

Lige efter et uønsket opkald, tast *32 (Funktionstaster (kapitel 32)) fra telefonen, det ringede: det sidste ydre nummer, der ringede til denne udvidelse i sidste døgn, kommer på blokeringslisten, og telefonen læser nummeret op. Et altid-tilladt nummer blokeres ikke, og telefonen siger det. Hver enkelt er i revisionsloggen, med hvem blokerede det.

Foreslået fra dine opkald

BitVoice læser de sidste 30 dages opkald fra udenfor for numre, der ringer igen og igen og afvises straks: tre opkald eller mere, næsten alle af dem overstået inden for 10 sekunder, eller to robot-tester mislykkedes, og aldrig en rigtig samtale (nogen taler 30 sekunder eller mere). Kendte numre udelades. Hver kommer med hvorfor; Blokér sætter det på blok-listen, og Ikke spam betyder, at det aldrig bliver foreslået igen. Intet bliver blokeret, før en person siger det.

For at kontrollere certifikater mod STI-myndighederne, indsæt deres certifikater under STI-certifikatmyndigheder; uden dem kontrollerer BitVoice, at opkaldet blev signeret med certifikatet, det nævner, men ikke hvem udstedte det certifikat.

Signering af dine egne opkald

De fleste udbydere signerer deres kunders opkald selv. Hvis din udbyder tillader dig at signere (eller du er en udbyder, der kører BitVoice), skru Signer opkalders-ID på trunken (Trunk (kapitel 7)) og give det dit STI-certifikat (fra en STI-certifikatmyndighed med din tjenesteudbyderkodetoken) og dets private nøgle (P-256). Hvert opkald ud gennem trunken bærer derefter en signeret Identitets-header (ES256, som SHAKEN kræver).

Del 5

Kørsel af BitVoice

Sikkerhed og drift: administratorer og login, sikkerhed, ændringer og opdateringer, flere servere, hosted organisationer, codecs, Teams, import og automatisering samt værktøjer til fejlfinding.

Kapitel 57

Administratore

I webgrænsefladen: /users

Administratore er personer, der logger ind på dette webinterface. Personale, der kun tager sig af deres egne opkald, bruger medarbejderportalen i stedet og har ikke brug for en konto her (Medarbejderportalen (kapitel 33)).

Roller

RolleKan
Administratorændre alt, afspille optagelser, se hver hemmelig feltets eksistens (aldrig dens værdi)
Viewerse alt, ændre intet; hemmeligheder er skjulte

En ændring af rolle eller adgangskode logger personen ud overalt på én gang.

To-trins login

Hver person aktiverer to-trins login for sig selv: Konfigurer viser en nøgle til en autentificeringsapp; indtastning af koden den viser aktiverer det. Herefter beder login om en kode samt adgangskode. Deaktivering kræver adgangskode.

Enkelt login

Med enkelt login (Indstillinger), logger personer ind med organisationens konto (Microsoft Entra, Google, Okta, enhver OpenID Connect-udbyder), og en konto oprettes til dem første gang. Se Enkelt login (kapitel 58).

API-token

Programmer (Terraform, scripts) bruger API-token i stedet for en adgangskode: oprettet på denne side, vist én gang, og tilbagekaldt når som helst. Hver token er en administrator eller en viewer. En token oprettet med Navngiver personen, der handler (til en CAD) kan sende X-BitVoice-On-Behalf-Of med personens navn, og optagelser navngiver derefter personen ved siden af tokenet (112-opkald (kapitel 77)).

Kapitel 58

Enkelt-logon

Enkelt-logon låser personer ind i BitVoice med deres arbejdskonto, gennem enhver OpenID Connect-udbyder: Microsoft Entra ID, Google, Okta, Keycloak og andre. At forlade organisationen fjerner derefter deres adgang her også.

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

Konfiguration

I Indstillinger (kapitel 14), Enkelt logon:

  1. Registrér en applikation hos udbyderen med den Omdirigeringsadresse, der vises her.
  2. Udfyld for en udbyder indstiller Udsteder for de almindelige; kopier Klient-ID og Klienthemmelighed fra udbyderen.
  3. Navngiv udbyderens Administratorgrupper og Viewergrupper. Grupperkrav er, hvor udbyderen placerer dem (groups medmindre det er angivet).
  4. Ændr eventuelt Knapttekst på logon-siden.
  5. Skift Brug enkelt logon til.

Sådan virker det

Kapitel 59

Virksomhedsadresse (Active Directory og LDAP)

BitVoice kan læse jeres virksomhedsadresse, Active Directory eller en anden LDAP-server (OpenLDAP, Samba, 389 Directory Server, FreeIPA): personer med et telefonnummer bliver omgående tilknyttet en telefon, directorygrupper udfylder ringgrupper, og personer logger ind på webgrænsefladen med deres directoryadgangskode. BitVoice læser kun i directory; den skriver aldrig til den.

Forbindelse

I Indstillinger (kapitel 14), Virksomhedsadresse:

  1. Vælg Active Directory eller OpenLDAP eller en anden LDAP-server: det indstiller, hvilke attributter der læses (sAMAccountName eller uid til logonnavn, displayName eller cn, mail, telephoneNumber). Ændr eventuelt nogen af dem i dens boks.
  2. Server: ldaps://dc1.example.com (port 636), eller ldap://... med StartTLS slået til. Almindelig LDAP afvises, medmindre serveren er denne computer, fordi adgangskoder ellers ville krydse netværket uden kryptering. Når serverens certifikat kommer fra jeres egen certifikatudsteder, indsæt udstederen i Virksomhedscertifikatudsteder.
  3. Læse-konto og Dens adgangskode: en konto, der har tilladelse til at læse personer og grupper (reader@example.com på Active Directory). Adgangskoden kan være en nøglevaultreference (Indstillinger, Nøglevault).
  4. Base DN: hvor personer og grupper er (dc=example,dc=com). Hvilke personer indsnævrer dem med en LDAP-filter; på Active Directory udelades inaktive konti altid.
  5. Test logger ind med læse-kontoen og læser alle, uden at ændre noget: det viser, hvor mange personer det fandt, hvor mange der har et nummer, og hvilken telefon hver ville få.

Udvidelser og ringgrupper

Logon

Med Personer logger ind her med deres directorynavn og adgangskode slået til, tager logonsiden directorynavne og adgangskoder samt BitVoices egne konti:

Kapitel 60

Sikkerhed

I webgrænsefladen: /security

Et telefonisystem på internettet bliver angrebet inden for timer: scannere prøver adgangskoder på hver SIP-port, og et brudt system kører op til premiumnumre. BitVoice er bygget til at stå imod det som standard, i lag.

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
Figur 45. Layers of protection

Imod adgangskode-gætning

Imod svindel

Svindelvagten

Skift den til i Indstillinger, Svindelvagten. Hvert opkald uden for landet (efter +, 00 eller 011, og de steder, der deler +1 med Nordamerika, men er andre lande, såsom Jamaica, et klassisk svindeldestination) bedømmes derefter, før det placeres:

SituationHvad den gør
Et opkald til et land, som denne udvidelse har ringt til i de sidste 90 dagelader det gå igennem
Et første opkald til det land i 90 dagelader det gå igennem og rapporterer det
Et første opkald derude uden for Arbejdstid, eller placeret fra udenfor (en dial-in, en videresendelse)beder om PIN, der bedes om (med ingen valgt, afviser det)
Mere end Opkald uden for landet i 10 minutter fra en udvidelseafviser det
Et første opkald uden for landet, mens nogen gætter adgangskoder (tre fejl i træk fra en adresse, eller en blokering, i den sidste time)afviser det
Et nødnummerlader det altid gå igennem

Land, der altid er tilladt (ringekoder, såsom 44) og Undtagelser (en udvidelse undtaget, indtil en dag, for en rejse) fjerner "første samtale" og "uden for åbningstid"; de undskylder aldrig mange samtaler i en kort tid eller et angreb, fordi en stjålet adgangskode ser godkendt ud. Hvis samtale-historikken ikke kan læses, ved vagten ikke, om en samtale er en første, og noget, der ikke måles, er aldrig taget for sikkert: den beder om PIN-koden. Hver bedømmelse er listet på Sikkerhed (kapitel 60) med dens årsager og er på samtale-optegnelsen i Samtale-historik (kapitel 47).

Hvordan BitVoice beslutter

BitVoices dommere (svindel-vagten, trunk-helbredsdommen, samtale-kvalitets-diagnosen og 911-opkalds-placeringstjek) følger hver en regelbog: fakta, der måles, konklusioner, de støtter, undtagelser, der overregulerer en konklusion, og valg. Hvordan BitVoice beslutter, på Sikkerhed (kapitel 60), viser hver regelbog. Reglerne, dommerne holder:

Kryptering

Hvem kan gøre hvad

Kapitel 61

Ændringer, sikkerhedskopier og import

I webgrænsefladen: /changes

Hver gemt ændring er en revision: nummereret, med hvem lavede den, hvornår og en enkelt linje sammenfatning. Intet i konfigurationen går nogensinde tabt.

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

Sammenlign og genskab

Eksport og import

Ændringer lavet på samme tid

To administratorer, der redigerer det samme på samme tid, kan ikke overskrive hinanden: den anden gemt ændring afvisses med en besked om at genindlæse, og intet går tabt.

Kapitel 62

Opdateringer

I webgrænsefladen: /updates

At opdatere BitVoice er ét klik, og sikkert: det checker den nye version, installerer den ved siden af den gamle, og går tilbage på egen hånd, hvis den nye ikke forbliver aktiv.

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
Figur 47. Updates: install, check, and fall back on their own

Installation af opdatering

  1. Download den nye version og pak den ud. Ved siden af programmet er dens signatur fra BioDream: bitvoice.sig, eller bitvoice.exe.sig på Windows.
  2. På Opdateringer (kapitel 62), upload programmet og dets .sig-fil.
  3. Tryk Installér. Som standard venter BitVoice, til der ikke er opkald i gang; du kan også installere med det samme.
  4. BitVoice genstartes på den nye version. Med flere servere overføres opkald i gang til en anden server og fortsætter.

Tilbage

Den version, du forlod, gemmes: Gå tilbage returnerer til den på ét klik. En ny version, der ikke starter to gange, eller ikke forbliver aktiv i en minut, erstattes af den forrige på egen hånd.

Signaturer

Hver udgave fra v0.1.3 bærer BioDreams udgivelsesnøgle. En sådan bygning installerer kun programmer signeret med denne nøgle: et unsigned fil, en signeret af nogen anden, eller en ændret med en enkelt byte afvistes med signaturerne matcher ikke. Siden siger, om denne bygning checker (Kræves) eller ej.

Du kørerOpdateringer accepterer
en udgave, v0.1.3 eller senerekun programmer signeret af BioDream
v0.1.2 eller tidligere, eller en bygning af din egenethvert program: med ingen nøgle, kan en .sig-fil ikke checkes og ignoreres
Kapitel 63

Flere servere som ét telefonisystem

I webgrænsefladen: /servers

To eller flere BitVoice-servere, der deler en PostgreSQL-database, fungerer som ét telefonisystem:

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

Konfiguration

  1. Flyt den første servers data til PostgreSQL: Indstillinger, Database.
  2. Start hver anden server med samme database: bitvoice -database postgres://… (eller miljøvariablen BITVOICE_DATABASE). Den slutter sig til med det samme; Servere viser den.
  3. På Servere, kontroller hvor hver server nås (dens adresse og SIP-port på det netværk, serverne deler), og giv hver en navn. Servere, der hver især nås fra internettet på en adresse (skyservere med offentlige IP'er, ingen fælles adresse), får Dens egen offentlige adresse også: udbydere og telefoner udenfor fortælles den, så når en server overtager et opkald, følger udbyderens lyd med. Lad det stå tomt, en server bruger den offentlige adresse i Indstillinger.
  4. Fortæl telefonerne, hvordan de finder serverne (nedenfor).
  5. Udbyderlinjer (nedenfor).

Hvordan telefoner finder serverne. Telefoner, som BitVoice konfigurerer (Yealink, Polycom, Grandstream), gives en anden kørende server som deres reserve af sig selv. For de andre, Snom og telefoner, der konfigureres manuelt, brug en af disse på Servere:

Udbyderlinjer. I hver trunk, siger Deles mellem servere, hvordan:

Når en server stopper

Mellem servere. Serverne når hinanden på deres SIP-port over TCP eller TLS, når de har et certifikat (hver accepterer kun det certifikat, den anden har offentliggjort, og lyden mellem dem er derefter krypteret med SRTP), og sender lyd til hinandens medieporte (UDP, intervallet i Indstillinger). Opkald mellem servere er signeret med en hemmelighed, de deler i databasen, og kun accepteret fra en kørende medlem på dens egen adresse. En brandmur mellem dem skal lade disse porte gå igennem.

Prøv det først: laboratoriet. BitVoice kommer med et laboratorium, der kører to servere, deres database og testtelefoner på én computer med Docker, hver på en adresse på egen hånd: deploy/lab/run.sh up bygger og starter det og angiver den fælles adresse; run.sh call ringer mellem telefoner på forskellige servere; run.sh failover slår serveren, der bærer et opkald gennem den fælles adresse, ihjel og kontrollerer, om opkaldet fortsætter (lyden kommer tilbage efter cirka fem sekunder); run.sh impaired ringer fra en telefon på et dårligt link (forsinkelse, jitter og 5% tab) og kontrollerer opkaldskvaliteten, BitVoice rapporterer; run.sh down fjerner det. Servernes sider er på https://127.0.0.1:18501 og :18502 (bruger admin).

Kapitel 64

Hvor dataene gemmes (SQLite eller PostgreSQL)

I webgrænsefladen: /settings

BitVoice gemmer sine indstillinger og deres gemte versioner, brugere, kontakter, opkaldsrekorder, revisionslog, tekster, noter og transkriptioner i en database. Optagelser og voicemail bliver som lydfiler i datafoldere.

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

Denne servers egen fil (SQLite, standard): en enkelt fil, bitvoice.db i datafoldere, med intet at installere. Sikkerhedskopier datafoldere, og du har alt.

PostgreSQL: til flere BitVoice-servere, der deler én sæt data, eller til rapporter i værktøjer som Power BI, Grafana eller Metabase. I Indstillinger, Database, Flyt dataene til PostgreSQL: lav en tom database og en bruger, der ejer den, indtast dens adresse (postgres://bruger:adgangskode@host:5432/database), tryk Test, derefter Kopier dataene og genstart på PostgreSQL. Alt kopieres på én gang (alt eller intet) og BitVoice genstartes på det; den gamle fil bliver, hvor den var. Flytning tilbage til serverens egen fil virker på samme måde. Flytninger afvises, mens opkald er i gang.

Servere, der deler en PostgreSQL-database, ser hinandens indstillingsændringer inden for fem sekunder. Hver af dem besvarer stadig sine egne telefoner og opkald; for at en anden server skal overtage en anden servers telefoner, skal telefonerne have begge adresser (eller én adresse, der flyttes).

Databasen kan også navngives, når BitVoice starter, med -database postgres://… eller miljøvariablen BITVOICE_DATABASE; den ændres derefter der, ikke i Indstillinger.

Ældre installationer: på den første start af denne version, kopierer BitVoice sine gamle JSON-filer til databasen og flytter dem til pre-database i datafoldere.

Kapitel 65

Værter andre organisationer

I webgrænsefladen: /tenants

En BitVoice kan hoste flere organisationer. Hver organisation er sin egen telefoncentral: dens egne udvidelser, numre, trunker, ruter, administratorer, voicemail, optagelser og opkaldshistorik. Ingen organisation kan se en andens. De deler kun denne servers SIP-port, IAX2-port og medieporter.

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
Figur 50. Hosted organisations: one server, separate phone systems

Når skal det bruges

Hovedsystemet er også en organisation: den, som denne server blev konfigureret til. Dets administratorer administrerer de andre.

Tilføjelse af en organisation

  1. Åbn Organisationer (kapitel 65) og tryk Tilføj organisation.
  2. Giv dens navn og et kort navn (små bogstaver, cifre og bindestreger). Det korte navn er en del af dets web-adresse, /t/acme/, og af dets telefoners log-in, acme.100. Det kan ikke ændres senere.
  3. Valgfrit giv dens eget domæne, såsom pbx.acme.example, der peger på denne server. Telefoner registrerer sig til det domæne, og dets administratorer åbner det i en browser.
  4. Indstil dens første administrator: et brugernavn og en adgangskode på mindst 12 tegn, og dets land.
  5. Valgfrit indstil begrænsninger.

Organisationen starter med det samme med et tomt telefon-system, klar til at blive konfigureret af dens administrator, som beskrevet i Kom i gang (kapitel 1).

Hvordan opkald finder den rigtige organisation

En anmodninggår til
fra en telefon, der registrerer sig til pbx.acme.exampleorganisationen med det domæne
fra en telefon, der logger ind som acme.100Acme, udvidelse 100
fra en udbyder, til et nummerorganisationen, hvis trunk det kommer fra, og hvis indgående rute har det nummer
alt andethovedsystemet

Så to organisationer kan begge have udvidelse 100, og flere kan dele én udbyderkonto med forskellige numre.

Hvor dens data er

På SQLite har hver organisation sin egen mappe under tenants/ i data-mappen, med sin egen databasefil. På PostgreSQL har hver sin egen skema i samme database (tenant_acme). Sikkerhedskopier, arkiver og eksport er pr. organisation.

Begrænsninger

BegrænsningHvad sker der ved den
Udvidelsertilføjelse af én mere afvises med en besked
Samtidige opkaldnye opkald afvises (503) indtil én afsluttes
Lagringnye optagelser og voicemail ikke gemmes
AI-anmodninger om dagentranskriptioner, sammenfattelser og AI-receptionisten stopper indtil midnat UTC

0 er ingen begrænsning. Nødopkald afvises aldrig: en organisation ved sin opkaldsbegrænsning eller suspenderet kan stadig ringe 911 og blive ringet op.

Åbne en organisation

Åbn logger dig ind til dens webinterface som udbyderen, uden dens egen konto; det vises i dens overvågningslog som udbyderen. Dens administratorer logger ind på dens egen adresse med deres egne konti. Hver organisation har sin egen login-cookie, så at være logget ind til én af dem logger aldrig nogen ind til en anden.

Organisationer ser aldrig denne servers egne skærme: opdateringer, database, andre servere, certifikat, SIP-sporing (der viser alle organisationers meddelelser), opkaldsgenerator eller denne liste.

Suspension og fjernelse

Suspenderet stopper log-in og hver samtale, undtagen nødsamtaler; intet slettes. Fjern stopper organisationen og flytter dens mappe til side (tenants/.removed-<name>-<time>), så en fejl kan rettes manuelt.

Kapitel 66

Codec og lyd

En codec er, hvordan lyd omdannes til data i et opkald. Telefoner, browsere og operatører understøtter hver især nogle; BitVoice konverterer mellem enhver to af dens codec, når to parter afviger, så alle kan tale med alle. Når begge bruger samme codec, går lyden ubeskadet igennem.

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
Figur 51. Codecs: each side speaks its own, BitVoice converts in between

Codec

CodecLydBåndbreddeBruges af
G.722HD (bredbånd)64 kbit/sde fleste skrivebordstelefone: det bedste valg mellem dem
G.711 µ-lovtelefon64 kbit/sNordamerika og Japan; hver operatør
G.711 A-lovtelefon64 kbit/sresten af verden
OpusHD, kan klare tab24 kbit/sbrowsere og mobilapps
G.729telefon, en smule grovere8 kbit/stynde forbindelser, nogle operatører
G.726 (40 kbit/s)telefon; transporterer modemtoner bedst af G.726-hastighederne40 kbit/sgateways, nogle DECT-systemer
G.726 (32 kbit/s)nær telefon32 kbit/sDECT-baser, ældre gateways
G.726 (24 kbit/s)mellem 32 og 1624 kbit/snogle DECT-systemer
G.726 (16 kbit/s)ru16 kbit/smeget tynde forbindelser
AMR-WB (G.722.2)HD6,6 til 23,85 kbit/smobilnetværks HD-lyd, VoLTE-interconnects
AMRtelefon, mobil4,75 til 12,2 kbit/smobilnetværk, nogle operatører og gateways
iLBCtelefon, kan klare tab13,3 eller 15,2 kbit/sældre softphones og apps
Speextelefon15 kbit/s (2,15 til 24,6)ældre softphones, forbindelser til andre Asterisk-systemer
GSMruere13 kbit/sældre softphones og gateways
G.723.1ru; kun konverteret med ffmpeg5,3 eller 6,3 kbit/smeget gamle videotelefoner og gateways
G.722.1 (Siren 7)bredbånd, transporteret ubeskadet24 eller 32 kbit/sPolycom-telefoner, videotelefoner og konference-telefoner
G.722.1C (Siren 14)super-bredbånd, transporteret ubeskadet24 til 48 kbit/skonference-telefoner, rum-systemer
G.719fuld bånd, transporteret ubeskadet32 til 128 kbit/stelepræsence-rum-systemer
Codec2meget lav båndbredde, transporteret ubeskadet0,7 til 3,2 kbit/sradiolinker, amatør-radiogateways

Indstillingerne viser codec, som telefoner kan bruge, bedst først; hver trunk kan have sin egen liste. Analog adapterports bruger altid G.711, som faks, modems og alarmpaneler har brug for.

G.722.1, G.722.1C, G.719 og Codec2 transporteres ubeskadet mellem to parter, der begge bruger dem, med deres bitrate eller tilstand bevaret i tilbuddet (BitVoice konverterer dem ikke, så et opkald mellem en af disse og en telefon uden det bruger en anden codec, som begge har). Placer dem i en liste, oven over G.711, hvor rum-systemer eller konference-telefoner skal bevare deres lydkvalitet, når de ringer til hinanden. Listene navngiver G.722.1 ved 32 kHz G7221C, selvom SDP kalder begge G7221.

G.723.1 transporteres ubeskadet mellem to parter, der begge bruger det. For at lade en G.723.1-enhed tale med noget andet, skal du aktivere Konverter G.723.1 med ffmpeg i Indstillinger og installere ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice kører derefter ffmpeg som et separat program for hver retning, der har brug for konvertering (høres ved hver af hastighederne, sendes ved 6,3 kbit/s, den hastighed, som ffmpeg-encoderen laver), omkring 60 ms senere end andre codec, og stopper det få sekunder efter opkaldet. BitVoice har ingen G.723.1-kode med: ITU's referencekode har ingen licens, der tillader inklusion, og ffmpeg installeres og køres på egen hånd.

Hvad konvertering koster

Konvertering tager procesortid, kun på opkald, hvor de to sider afviger. Pr. opkald, ca. 0,3 ms af en kerne hver 20 ms for Opus og 0,12 ms for G.729 (nogen 60 og 170 konverterede opkald pr. kerne); G.726 og GSM koster mindre end G.729; G.711 og G.722 næsten intet. G.729 sendes uden Annex B (ingen stille rammer).

Lydrensning

Lydrensning (Indstillinger) dæmper konstant baggrundsstøj og jævner niveauer, til voicemail og, hvis du ønsker det, under opkald.

Kapitel 67

Microsoft Teams (Direct Routing)

I webgrænsefladen: /trunks

BitVoice kan være session border controller (SBC) for en Microsoft Teams-lejer, så Teams-brugere ringer BitVoice-udvidelser og jeres telefonlinjer, og BitVoice ringer Teams-brugere.

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

Hvad du behøver: et offentligt navn for denne server i et domæne, jeres Microsoft 365-lejer har verificeret (sbc.example.com), port 5061 åben begge veje til Microsofts netværk 52.112.0.0/14 og 52.120.0.0/14, og et certifikat til dette navn fra en offentlig myndighed. Teams-brugere behøver en Phone System-licens.

Trin

  1. Indstillinger, Certifikat: Installer certifikatet og dens private nøgle (PEM). Det bruges med det samme, til denne grænseflade og til SIP over TLS, og BitVoice præsenterer det for Microsoft.
  2. Trunk, Tilføj, start fra Microsoft Teams: Indtast serverens offentlige navn. Skuffen siger, om certifikatet dækker det.
  3. Kopier PowerShell-koden, som skuffen viser, og køre den som en Teams-administrator: Den tilføjer SBC (New-CsOnlinePSTNGateway), en stemmerute og -politik, og en dialplanregel, så korte extensionsnumre når BitVoice, som de er taste. Derefter giver hver Teams-bruger politikken og deres nummer.
  4. For at ringe til Teams-brugere fra BitVoice, tilføj en udgående rute for deres numre gennem Teams-trunk. Teams finder kun brugere ved numre med + og landskoden: Hvis personer ringer dem uden, skal + og landskoden indsættes i ruten Foranstil (opkaldets hvorfor-spor siger det, når et går ud uden).

Når en Teams-bruger overfører et opkald, beder Microsoft BitVoice om at placere det (en REFER, der navngiver sin egen proxy, med nummeret eller Teams-brugerens ID): BitVoice ringer præcis, hvad Microsoft navngav, med den Referred-By, som Microsoft gav, så en overføring til en anden Teams-bruger fungerer lige så godt som en til et telefonnummer. BitVoice sender aldrig en Replaces-header til Teams, som Microsoft afviser.

BitVoice sender Microsoft OPTIONS hvert minut med SBC-navnet i Kontakt, som Microsoft kræver, og forsøger sip, sip2 og sip3.pstnhub.microsoft.com i rækkefølge. Medie er altid krypteret (SRTP). Health advarer, når certifikatet ikke dækker navnet, er selvsigneret eller udløber snart, og når Microsoft stopper med at svare.

Dette følger Microsofts offentliggjorte SBC-krav og er testet mod en simuleret Microsoft-proxy; BitVoice er ikke på Microsofts liste over certificerede SBC'er.

Kapitel 68

Importér

I webgrænsefladen: /import

Bringér extensions, ringgrupper, køer og trunker over fra FreePBX, Asterisk eller 3CX; og personer, jagt og ringgrupper, SIP-trunker, indgående numre og dialmønstre fra Cisco, Avaya og Mitel. Upload de eksporterede filer, flere ad gangen (en .zip eller .tar af dem virker også); BitVoice viser nøjagtigt, hvad der vil ændre sig, før noget bliver anvendt, og importen bliver en revision, du kan fortryde på Ændringer (kapitel 61).

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

Flytning fra FreePBX

Den bedste fil er en FreePBX-sikkerhedskopi: den indeholder alt, inklusive SIP-adgangskoder.

  1. I FreePBX: Admin → Backup & Restore → Tilføj Backup. Afkryds mindst Core, Ringgrupper, Køer og Voicemail (alle moduler er i orden), gem, og Kør.
  2. Download sikkerhedskopien fra dens række (filen er navngivet som 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. Installer BitVoice på den nye server og afslut konfigurationen med en enkelt extension, som FreePBX ikke bruger (såsom 199), og ingen telefonlinje: importen bringer linjerne.
  4. På Importér (kapitel 68), slip .tar.gz, som den er. Læs forhåndsvisningen: advarslerne listar alt, der ikke kan overføres.
  5. Vælg Tilføj. Det er en revision på Ændringer (kapitel 61): fortryd det der, hvis noget ser forkert ud, og importér igen.
  6. Flyt telefonerne: pege hver af dem mod BitVoice (eller konfigurere dem fra Telefoner (kapitel 4)), med samme extensionsnummer og SIP-adgangskode, de havde.
  7. Test opkald ind og ud, og flyt derefter carrierens registrering (eller nummervisningen) sidst.

Prøvet på et rigtigt system: en FreePBX 17.0.33 (den officielle Debian 12-installation) med fire extensioner og voicemail, en PJSIP-trunk, der registrerer, to udgående ruter (en med et dialpræfiks), en ringgruppe, en kø med straffe og tre DIDs, sikkerhedskopieret af Backup & Restore med alle moduler afkrydset. Sikkerhedskopien er 70 MB, næsten alt af det er lydfiler og opkaldshistorik: BitVoice læser det, som det kommer, og gemmer kun konfigurationen, så en sikkerhedskopi på op til 512 MB kan uploades. Alt ovenfor kom over: adgangskoderne, voicemail-PIN'erne og e-mail, trunkens registrering og codec, ruterne med deres præfikser, ringgruppens voicemail, når den ikke blev besvaret, køens straffe og DIDs til gruppen, køen og extensionen.

Hvad kommer over:

Hvad ikke, og siges i forhåndsvisningen: IVR'er, tidsbetingelser, meddelelser, følg-mig, brugerdefinerede trunker og kontekster, opkalds-ID-matching på ruter, og eksterne numre i ringgrupper. Byg dem på Menuer (kapitel 21), Schedules (kapitel 26) og extensionens Følg-mig. Ældre sikkerhedskopier (FreePBX 13 og før) og en ren mysqldump asterisk af FreePBX-databasen læses på samme måde.

Andre systemer

Hvor hver eksport er:

Grupper og ruter. Upload dem med personfilen, så hver gruppes medlemmer kan findes ved nummer eller navn:

Trunk fra disse eksporter kommer ind slukket og uden adgangskoder, da eksporten ikke medfører dem. Ruter går ud på den importeret trunk med samme navn; en rute, hvis trunk ikke er her, er udeladt og nævnt. Roterende og længst ledig ringning er tættere på en kø end en ringgruppe: forhåndsvisningen siger det, så du kan gøre det til en.

Disse eksporter (alle undtagen en FreePBX-sikkerhedskopi) indeholder ingen SIP-adgangskoder, så hver udvidelse får en ny; voicemail-PIN'er, navne og e-mail-adresser kommer over, hvis eksporten har dem. Cisco-, Avaya H.323/DCP- og Mitel-telefoner kører deres egen software og kan ikke konfigureres af BitVoice: importen siger, hvor mange der blev nævnt. Cisco-telefoner kan genprogrammeres med Cisco's multiplatform (SIP)-firmware; Avaya J100- og Mitel 6800/6900-telefoner kan registrere sig hos BitVoice manuelt i SIP-tilstand.

Kapitel 69

Konfiguration som kode

Alt, hvad skærmene gør, går gennem BitVoices REST-API, så hvad som helst kan skrives som script, gemmes i Git eller administreres med Terraform. API'et er beskrevet for værktøjer på /api/openapi.json (/api/openapi.json).

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

API-token

Oprettet på Administratore (kapitel 57): en pr. program, kun læs eller i stand til at ændre alt. Send det som Authorization: Bearer bv_.... Det vises én gang; tilbagekald, når det ikke længere er nødvendigt. En tokens ændringer vises i Ændringer og revisionsloggen under dets navn.

curl -H "Authorization: Bearer bv_..." https://pbx.example.com/api/extensions

Terraform eller OpenTofu

Repositorys deploy/terraform viser udvidelser, ringgrupper og ruter administreret med den generiske REST-leverandør: plan viser, hvad der ville ændre, anvend gør ændringen. Leverandøren checker BitVoices certifikat; mens BitVoice stadig bruger sit eget selvsignerede certifikat, enten få et fra Let's Encrypt (Indstillinger, Certifikater) eller angiv bitvoice_insecure = true på et netværk, du stoler på (på Linux, SSL_CERT_FILE pegende på BitVoices certifikat virker også). Ressourcer matchas af den id, BitVoice giver dem, så en anden plan viser ingen ændringer, før filen eller skærmene ændrer noget.

Konfiguration fra Git

I Indstillinger (kapitel 14), Konfiguration fra Git, læser BitVoice konfigurationen fra en fil i et repository hver få minutter og enten viser, hvad der afviger, eller gør ændringerne. Start filen med Eksportér til Git, som udelader adgangskoder; BitVoice beholder sine egne, så hemmeligheder kommer aldrig ind i repository.

Kapitel 70

Asterisk-kompatibilitet (AMI, ARI og AGI)

Værktøjer skrevet til Asterisk kan styre BitVoice: CRM, wallboards, klik-for-at-ringe-knapper, kaldeoptagerkontrollere. Slå det til i Indstillinger (kapitel 14), Asterisk-kompatibilitet. Værktøjer ser opkald som kanaler med navne som PJSIP/100-..., som på Asterisk.

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

AMI

Managergrænsefladen på TCP-port 5038 (AMI lytter på: denne computer alene som standard). Understøttet:

TypeNavne
HandlingerLogin (ren eller MD5-udfordring), Ping, Begivenheder, Filter, ListCommands, CoreShowChannels, Status, CoreStatus, CoreSettings, PJSIPShowEndpoints, ExtensionState, ExtensionStateList, DeviceStateList, Getvar, Originate, Redirect, BlindTransfer, Hangup, Logoff
KøerQueueStatus, QueueSummary, QueuePause, QueueAdd og QueueRemove (de logger en agent ind eller ud af alle deres køer), Agents
AndreParkerede opkald; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; MailboxCount, MailboxStatus; PauseMonitor, UnpauseMonitor; UserEvent; Reload (intet at genindlæse: ændringer anvendes med det samme)
BegivenhederNewchannel, Newstate, Hangup, DialBegin, DialEnd, Hold, Unhold, PeerStatus, ContactStatus, MessageWaiting, ConfbridgeJoin, ConfbridgeLeave, ConfbridgeEnd, UserEvent

Filter gemmer kun de begivenheder, som en regulær udtryksmæssig sammenligning matcher (Event: Newchannel), eller dropper dem med ! først, som på Asterisk. Der er ingen Asterisk-kommandolinje: Kommando returnerer med en fejl.

ARI

På /ari/, med grundlæggende godkendelse eller ?api_key=user:secret:

AnmodningHvad den gør
GET /ari/channelsopkald i gang
POST /ari/channels?endpoint=PJSIP/100&extension=5551234ring 100, derefter ringe til nummeret
DELETE /ari/channels/{id}afslut
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102send opkaldet til 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefoner, broer, version
/ari/eventsen WebSocket med begivenheder
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawen kanal, der sender lyd til et program via RTP (ulaw eller alaw over UDP); den lokale port er i kanalens UNICASTRTP_LOCAL_PORT
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid>det samme via AudioSocket
POST /ari/bridges/{call}/addChannel?channel={id}den eksterne mediekanal deltager i et opkald: den hører begge parter, og begge parter hører den; med role=listener hører ingen den (til live-transkription)
POST /ari/bridges/{call}/removeChannel?channel={id}den forlader opkaldet; de to parter taler direkte igen

En ekstern mediekanal, der ikke er tilføjet til et opkald inden for en minut, lukkes.

ARI-applikationer

En ARI-applikation (Asterisks Stasis()) kører opkald fra jeres eget program. Tilføj den under ARI-applikationer i Indstillinger, Asterisk-kompatibilitet: et navn, et valgfrit nummer extensioner, der ringer, og en fallback. Så send opkald til den som til enhver destination: en indgående rute, en menuknop, en tidsplan.

Dit program tilslutter sig /ari/events?app=NAME (en WebSocket, med login i ?api_key=user:secret). Hver opkald, der når applikationen, bliver besvaret og ankommer som StasisStart, med kanalen; programmet kører derefter:

AnmodningHvad den gør
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42afspiller prompts fra Sounds (sound:), digits:, number:, tone:beep eller en gemt optagelse (recording:); PlaybackStarted og PlaybackFinished følger. DELETE /ari/playbacks/{id} stopper det.
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23optager (wav) til de gemte optagelser; RecordingStarted og RecordingFinished. POST /ari/recordings/live/{name}/stop stopper det, DELETE smider det væk.
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name}de gemte optagelser
POST /ari/channels/{id}/dtmf?dtmf=123sender taster til opkaldsøgeren
GET/POST /ari/channels/{id}/variable?variable=X&value=Ykanalens variabler
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEmiksebroer: alle i én hører alle andre
POST /ari/channels/{id}/continue?extension=101slipper opkaldet: til den udvidelse, ringegruppe eller kø, ellers fallback
DELETE /ari/channels/{id}afslutter opkaldet
POST /ari/channels?endpoint=PJSIP/101&app=NAMEringer til 101; når det bliver besvaret, kommer det ind i applikationen
GET /ari/applicationsapplikationerne, om et program er tilsluttet, og deres kanaler
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutedæmper, hvad opkaldsøgeren siger (in), hvad de hører (out) eller begge
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silenceholdmusik til opkaldsøgeren (ChannelHold, ChannelUnhold), eller stilhed
GET/POST /ari/channels/{id}/variablesflere variabler på én gang (ChannelVarset)
POST /ari/channels/{id}/move?app=otheroverdrager kanalen til en anden applikation (StasisEnd, derefter StasisStart der; ApplicationMoveFailed når intet program kører det)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEen snoop-kanal i en applikation, der hører, hvad opkaldsøgeren siger, for at optage det (POST /ari/channels/{snoop}/record)
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, derefter POST .../dialen kanal, der venter, til den bliver ringet; Dial-begivenheder fortæller, hvordan ringningen går, og den kommer ind i applikationen, når den bliver besvaret
GET /ari/channels/{id}/rtp_statisticspakker og bytes sendt og modtaget, tab og jitter
POST /ari/playbacks/{id}/control?operation=pausepause, genoptag, genstart, baglæns og frem (tre sekunder)
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId}holdmusik til en bro, optagelse af dens mikse, dens variabler
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mutekopierer en optagelse; pauser eller dæmper en live optagelse
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterabonnementer (kanal:, bro:, endpoint:PJSIP/100, deviceState:) og begivenhedsfilter ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEtelefoners tilstand (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) og brugerdefinerede tilstande, som programmer selv opretholder (DeviceStateChanged); telefoners tilstand kommer også som EndpointStateChange
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0udvidelsers voicemail-tællere (100@default), og mailbokse, som et program selv opretholder
GET /ari/soundsSounds' prompts, på de sprog de er optaget i, og lyde, der er uploadet til AGI-script
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hien tekst til udvidelse 100's telefoner
POST /ari/events/user/{name}?application=NAMEen brugerbegivenhed til en applikation (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, globale variabler og BitVoices komponenter, navngivet efter de moduler, de står for

BitVoice besvarer hver enkelt operation af Asterisks offentliggjorte ARI (dens test-suite kalder hver enkelt og checker, hvad der kommer tilbage har de felter, Asterisks beskrivelse kræver). Nogle har intet at gøre her og besvarer 501 med årsagen: indlæselige moduler (BitVoice er et program), Sorcerys dynamiske konfiguration (BitVoice er konfigureret i dets webinterface), log-kanaler, broers video-kilder (ARI-broer transporterer lyd), sending af REFER til telefoner og krav om broadcast-opkald. En snager hører kun opkalderen (spy=in), og whisper tilbydes ikke: bro en kanal med deres for at tale med dem. Kanal-hændelser for hvert opkald (ChannelCreated, ChannelStateChange, ChannelDestroyed) går til hvert program, som med Asterisks subscribeAll=true. ARI-biblioteker, der læser grænsefladen fra serveren (ari-client og andre), finder den på /ari/api-docs/resources.json. Hvilke programmer holder nu, under ARI-applikationer i Indstillinger, viser applikationerne, brugerdefinerede enheds-tilstande, postkasser, globale variabler og broer programmer har konfigureret.

Tastetryk ankommer som ChannelDtmfReceived; en opkalders afslutning som StasisEnd. Når der ikke er nogen program tilkoblet, går opkaldet til standardværdien; når programmet sidste forbindelse lukkes, går opkaldene deres også efter fem sekunder (tid til genforbindelse). Til opkaldslogik uden et program af din egen, brug Scripts (kapitel 27), der kører hele opkaldet; for at overføre lyden til et program, tale-robotter (kapitel 24).

AGI-scripts

Et AGI-script (Asterisks AGI() og EAGI()) kører et opkald kommando for kommando, så IVR og integrationer skrevet til Asterisk (phpagi, pyst2, Asterisk-Java, enhver FastAGI-server) fungerer stadig. Tilføj det under AGI-scripts i Indstillinger, Asterisk-kompatibilitet:

FeltHvad det er
Scriptnavnhvordan destinationer navngiver det
Adresseen FastAGI-server, agi://host:4573/script?x=1 (port 4573 når ingen er angivet), hagi://domain/script for serverne i domænets _agi._tcp SRV-records, prøvet i prioritetsrækkefølge, eller filnavnet på et program i mappen AGI-programmer
Argumenterpasseret som agi_arg_1, agi_arg_2 …
Nummer til at ringevalgfrit: udvidelser ringer det som ethvert nummer
Standardværdihvor opkaldet går, når scriptet afslutter uden at vælge et nummer, eller ikke kan nås
Længste kørselet script, der kører længere, stoppes (standard en time)
EAGIfor et program: opkaldersens lyd (8 kHz, signed 16-bit, little-endian) på filbeskrivningsnummer 3. Linux og macOS

Test tilslutter serveren (eller checker, om programmet er der og kan køres) uden at sende et opkald. Så send opkald til det som til ethvert andet destination.

BitVoice besvarer opkaldet, sender agi_-variablerne (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) og udfører kommandoerne, besvarende som Asterisk 20 gør (test-suiten sammenligner hver besvarelse med en optagelse af Asterisks):

KommandoerNoter
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP med kun en kanalnavn afslutter kun scriptets eget opkald
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITescape-taster, sample-offset og slutposition som på Asterisk; hurtig-frem, tilbage og pause i CONTROL STREAM FILE
SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIMEmed en tale-service i Indstillinger, AI de er tale; uden, er cifrene sagt fra Lyde
RECORD FILEs=N stilhed, en bip, escape-taster; filen lander i lydbiblioteket
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … og ${NAME}-udtryk
DATABASE GET, PUT, DEL, DELTREEAsterisks database (AstDB), vedligeholdt af BitVoice og vist under AGI-database
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION er, hvor opkaldet går, når scriptet afslutter
SPEECH CREATE … SPEECH RECOGNIZEbruger tale-til-tekst i Indstillinger, AI: resultatet er, hvad opkalderen sagde, som text0, til scriptet kan sammenligne; grammatikker accepteres og ikke brugt
EXECAnswer, Hangup, Playback, Background, Read, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (ringer hver nummer i tur; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Andre besvarer -2, som Asterisk gør for en manglende applikation

BitVoice har ingen dialplan: hvor et script ville gå videre i Asterisks dialplan (SET EXTENSION, EXEC Goto), går opkaldet til det nummer her (en udvidelse, ringegruppe, kø, menu eller et eksternt nummer gennem udgående ruter) når scriptet afslutter. Scripts ringer aldrig nødnumre. Når opkalderen afslutter, får en FastAGI-script HANGUP og et program SIGHUP; kun kommandoer, der er tilladt på en død kanal, kører derefter (511 for de andre), og forbindelsen lukkes 30 sekunder senere, hvis scriptet fortsætter. Hver kørsel vises under Seneste kørsler med dens VERBOSE-linjer og går til begivenhedsstrømmen som agi.ran.

Lyde til AGI-scripts. Scripts afspiller lyde ved navnene, de bruger på Asterisk: upload dem under Lyde til AGI-scripts med en mappe (custom/welcome; es/custom/welcome til opkaldere på spansk). WAV, MP3 og Asterisks .gsm, .ulaw, .alaw, .sln og .sln16 accepteres; en sti som /var/lib/asterisk/sounds/en/custom/welcome.gsm finder custom/welcome. Asterisks digits/0–digits/9, beep, silence/N og nogle andre (vm-goodbye, invalid, please-hold) afspiller BitVoices egne prompts og tone. Hvad scripts optager, gemmes i samme bibliotek, markeret optaget af et script, for de dage, du vælger (30 som standard). Biblioteket kan holde op til 1 GB.

Programmer. Et program køres på denne server med BitVoices rettigheder, så det aldrig uploades via web: kopier det ind i mappen AGI-programmer, som vises på skærmen (DATA/agi-bin), og gør det eksekverbart. Det modtager kun PATH og AST_AGI_DIR fra miljøet, køres i denne mappe, og hvad det skriver til standardfejl går til serverloggen. FastAGI sender kommandoer i ren TCP: hold serveren på denne computer eller et privat netværk.

Logins

Hver login har et Brugernavn og en Hemmelighed. Logins er kun læs medmindre de er markeret Kan ændre opkald. Hold AMI på denne computer, medmindre værktøjet køres et andet sted: AMI er ren, ukrypteret TCP.

Kapitel 71

AI-assistenter (MCP)

En AI-assistent, såsom Claude, ChatGPT, Gemini eller Cursor, kan bruge BitVoice gennem Model Context Protocol (MCP), den standardmåde, assistenter når andre programmer på. Spørg det i almindelige ord: hvem ringede i morges og om nogen ringede tilbage, hvad opkaldende fra tandlægen sagde, hvorfor 9-tiden-opkaldet gik til telefonsvareren, om udbyderlinjen er nede. Med din tilladelse kan det også foretage et opkald, sende en tekst eller afslutte et opkald.

BitVoice is the MCP server, at https://YOUR-SERVER/mcp (Streamable HTTP; the address shows in Settings). Nothing goes to any AI service unless an assistant you connected asks for it, and then only what it asked for.

Aktivering

I Indstillinger (kapitel 14), AI-assistenter (MCP):

Kortet viser adressen og klar-til-kopiering-indstillinger for de almindelige assistenter og listen over alle værktøjer.

Hvad en assistent kan gøre

Læsning (enhver token):

Handling (med Lad assistenter handle, og en token der måske ændrer ting):

Hvert værktøj er en af API'ens egne ruter, kørt som assistenten: den ser og ændrer præcis det, dens token må, samme kontroller gælder, og dens ændringer er i revisionsloggen under dets navn. Et svar holdes til omkring 60.000 tegn; assistenten bedes om at begrænse sin søgning, når en er afkortet.

Tilslutning af en assistent

Assistenter, der logger ind (Claude.ai og ChatGPT-brugerdefinerede connectores, og andre): tilføj en connector med BitVoices adresse. Assistenten åbner BitVoices login i din browser; log ind som normalt (adgangskode, to-trins, enkelt-sign-on), og siden siger hvilken assistent beder og hvor den vender tilbage til. En administrator kan lade det handle eller Kun lade det læse; en seers assistent kan kun læse. Tillad ikke sender det væk med ingenting. Dets adgang er derefter på Administratore (kapitel 57), API-tokens, som AI-assistent, logget ind: det fungerer kun på /mcp, aldrig for resten af API'et, varer en time ad gangen og fornyer sig selv i op til 30 dage, hvis det ikke bruges. Tilbagekald afslutter det med det samme. Disse assistenter når BitVoice fra deres egne servere, så det kræver en adresse, der kan nås fra internettet, og et certifikat, de stoler på (Let's Encrypt, i Certifikat (kapitel 14)).

Assistenter, der får en token (Claude Code, Cursor, VS Code og andre værktøjer, der tager en adresse og en header): opret en API-token på Administratore (kapitel 57), kun læs, medmindre det skal handle, og give det som Authorization: Bearer bv_...:

claude mcp add --transport http bitvoice https://pbx.example.com:8443/mcp --header "Authorization: Bearer bv_..."

Assistenter, der starter et program (Claude Desktop, og andre, der tager en kommando): BitVoices program medfører en bro, bitvoice mcp, der passerer hver besked til serveren over HTTPS. Giv det serverens adresse og tokenet:

{ "mcpServers": { "bitvoice": { "command": "bitvoice", "args": ["mcp", "-url", "https://pbx.example.com:8443"], "env": { "BITVOICE_TOKEN": "bv_..." } } } }

Med BitVoices eget certifikat (ikke et fra en myndighed), afviser broen det og printer dets SHA-256: kontroller, at det er jeres server, derefter tilføj "-pin", "THAT-SHA256" til argumenterne. Kun dette certifikat accepteres herefter.

Sikker at lade være på

Kapitel 72

Arkiv

I webgrænsefladen: /archive

Arkivet gemmer kopier af optagelser, voicemail og konfiguration et andet sted: en Amazon S3-bruger (eller en hvilken som helst S3-kompatibel butik) eller en Azure Blob Storage-beholder. Hvis denne servers disk gå tabt, har arkivet dem stadig.

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

Konfiguration

  1. På Arkiv (kapitel 72), vælg Hvor arkiveret: Amazon S3 eller Azure.
  2. Til S3: Bucket, dens Region, en valgfri Mappe i bucket og Endpoint (til S3-kompatible butikker), og en Adgangsnøgle-ID og Hemmelig adgangsnøgle. Kopier politik giver den eneste tilladelse BitVoice behøver, for at vedhæfte til brugeren eller rollen.
  3. Til Azure: en Container SAS-URL med skriveadgang, og en valgfri Mappe i beholderen.
  4. Vælg, hvad der skal kopieres ud over konfigurationen: Optagelser, Voicemail, eller begge.

Hvad sker der

Hver tiende minut kopierer BitVoice nye optagelser og beskeder, der ikke er i arkivet endnu, og en gang om dagen en dateret kopi af konfigurationen (config/2026-10-13.json). Siden viser den seneste kørsel, den seneste succes og eventuelle fejl.

Sletning af noget her (ved retention eller med hånden) sletter ikke arkivets kopi: angiv bucketens eller beholderens egne livscyklusregler for, hvor længe arkivet gemmer ting.

Kapitel 73

Juridisk retention

I webgrænsefladen: /holds

En juridisk retention bevarer opkaldsrekorder, optagelser og voicemail, som en sag måske har brug for, og forhindrer, at nogen sletter dem, indtil den frigøres. Brug den, når en advokat beder om, at rekorderne skal bevares.

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.
Figur 57. A legal hold: kept, whatever the retention says

Tilføjelse af en pause

På Juridiske pauser (kapitel 73), tryk Tilføj:

FeltHvad det er
Navnhvad sagen hedder
Årsaghvorfor, til protokollen
Numreudvidelserne og ydre numre, det dækker (101, +15551234567), eller Alt
Fra, Tildatoerne, det dækker; tom for ingen begrænsning

Mens en pause er aktiv

Frigørelse

Frigør gør, hvad retentionen holdt, til genstand for bevaringsindstillingerne igen: ting, der er ældre end bevaringsperioden, slettes ved den næste rengøring. Frigjorte retentioner bliver vist, med hvornår og af hvem, og tilføjelse og frigørelse af retentioner er i revisionsloggen.

Kapitel 74

Metrikker: Prometheus, OpenTelemetry, Grafana, SNMP og opkaldsoptagelser

I webgrænsefladen: /settings

Prometheus scraper /metrics på webadressen. Opret en API-nøgle under Administratore (en visernøgle er tilstrækkelig) og give den til Prometheus som dens bærertoken:

BitVoicePrometheusscrapes /metricsOpenTelemetrypushed each minuteGrafanathe ready-made dashboardCalls, phones, trunks, queues, packets lost, quality scores, callbacks.
Figur 58. Metrics: Prometheus pulls, OpenTelemetry is pushed
scrape_configs:
  - job_name: bitvoice
    scheme: https
    authorization: { credentials: bv_... }
    static_configs: [{ targets: ['pbx.example.com'] }]

Den læser opkald i gang (efter tilstand), opkald afsluttet (efter retning og udfald), tale tid, telefoner registreret, hver trunk's tilstand og rundtur, opkaldende i venten og agenter i hver kø, lydpakker modtaget og tabt, en histogram over opkaldskvalitetsvurderinger (MOS), og callbacks booket. Tællere starter igen fra nul, når BitVoice genstartes, som Prometheus forventer.

OpenTelemetry: i Indstillinger, Metrikker, indtast en samlers OTLP/HTTP-adresse (og en header som f.eks. Autorisation, med dets værdi) for at få de samme målinger pushet hver minut (eller så ofte, som du indstiller, fra 15 sekunder). Push nu kontrollerer de gemte indstillinger.

Grafana-dashboard downloader et færdigt dashboard: importér det i Grafana og vælg din Prometheus-datakilde.

SNMP

For overvågningsystemer, der taler SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), slå SNMP-agenten til i Indstillinger. Den besvarer SNMPv2c GET, GETNEXT og GETBULK, kun læs, på UDP-port 161 (eller en anden, du vælger: port 161 kræver retten til at åbne lavports på Linux), og kun fra de netværk, du listar. Vælg en fællesskabsstreng, der ikke er offentlig eller privat: det er en adgangskode, der krydser netværket i klart.

Den serverer den standardmæssige systemgruppe (sysDescr, sysUpTime, sysContact, sysName, sysLocation) og BitVoice's egne værdier under base OID: opkald i gang og ringende, telefoner registreret, trunk'er oppe og konfigureret, opkaldende i venten, opkald afsluttet, talesekunder, tabte pakker, gennemsnitlig opkaldskvalitet, en trunk-tabel (navn, oppe eller nede, latency) og en kø-tabel (ventende, agenter, besvaret, opgivet). Downloade BITVOICE-MIB ved siden af indstillingerne for din overvågning til at indlæse. BioDream LLC har endnu ikke en virksomhedsnummer, så standard-base OID er i Net-SNMP's eksperimentelle rum; placer en under dit eget virksomhedsnummer for at holde det stabilt.

Fælder (SNMPv2) går til hver modtager, du listar, når en trunk går ned eller kommer tilbage, et nødopkald bliver foretaget, eller en server i en cluster ophører med at svare. SNMPv3 er ikke understøttet endnu.

Opkaldsoptagelser andre steder

Ved siden af Opkaldshistorik kan hver optagelse gå, når opkaldet slutter, til:

Send en testoptagelse prøver syslog-serveren og databasen med de gemte indstillinger.

Kapitel 75

Opkaldsgenerator

I webgrænsefladen: /loadtest

Opkaldsgeneratoren placerer rigtige opkald med rigtigt lyd i BitVoice fra denne computer: for at se, hvor mange opkald en server kan håndtere, og hvor godt, eller for at kontrollere efter en ændring, at opkald stadig går, hvor de skal.

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

Kør en test

IndstillingHvad det er
Nummer at ringe tilet nummer inden for BitVoice: en udvidelse, en gruppe, en kø, en menu
Opkald kommer fraopkalders nummer, som opkald viser
Besvar somen udvidelse, som generatoren besvarer for sig selv; eller ingen, når nummeret besvarer sig selv (en menu, ekko-test)
Opkaldhvor mange i alt
Samtidigtdet maksimale antal samtidige opkald, op til 2.000. Hvert videreformidlet opkald tager medieporte fra Medie fra og Medie til (Indstillinger): standard 10000-20000 kan rumme omkring 1.800, så udvid det for mere
Nye per sekundhvor hurtigt de starter
Hver varer (s)hvor lang tid hver taler

Læsning af resultaterne

ResultatHvad det siger
Besvaret, Mislykketog Hvorfor opkald mislykkedes, efter årsag
Besvartid, median og 95%hvor lang tid kalderne ventede
Audio tabtandelen af lydpakker, der aldrig ankom
Audio-scoreen vurdering af lyden (MOS): 4 og over er godt, under 3,6 er dårligt
Jitter, 95% af opkaldhvor ujævnt lyden kom tilbage (RFC 3550 interarrival jitter, gennemsnitligt over hvert opkald); telefoner glatter op til omkring 20 ms
Længste pause, værst opkaldden længste ventetid mellem to lydpakker i et opkald; de kommer hver 20 ms, så en blokering af serveren viser her
Hukommelsepauser, længste pausehvor ofte, og hvor længe på det højeste, Go-runtiden standsede alt for at rydde hukommelse under kørslen
Opkald i gang over tidet diagram over belastningen
Kapitel 76

SIP-sporing

I webgrænsefladen: /trace

SIP-sporingen viser de meddelelser, BitVoice sender og modtager, live: det første sted at se på, når en telefon ikke kan registrere eller et opkald fejler, og hvad en leverandørs supportafdeling vil bede om.

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

Find en meddelelse

BitVoice gemmer de sidste 2.000 meddelelser i hukommelsen (intet bliver skrevet til disken, og de forsvinder efter en genstart). Skriv en del af et nummer, en adresse eller en Call-ID i filteret. Tryk Opdater for de nyeste.

Vælg en meddelelse for at se den i fuld udstrækning og, ved siden af den, opkaldsflowet: hver meddelelse i samme opkald i rækkefølge, mellem telefonen, BitVoice og leverandøren, som i figuren.

Læsning af en sporingslog

Du serDet betyder normalt
REGISTER besvaret 401, derefter intettelefonen har ikke adgangskoden, eller har den forkerte
REGISTER besvaret 403adressen er blokeret, eller telefonen logger ind som en anden udvidelse
INVITE besvaret 404ingen rute svarer til det valgte nummer (Rutevalg (kapitel 8))
INVITE besvaret 403 af udbyderenudbyderen afviser opkalders-ID eller nummer
486den anden side er optaget
488de to sider har ingen fælles codec (Codecs (kapitel 66))
200 OK, derefter BYE efter ca. 30 sekunderACK anmodningen ankom aldrig: en router imellem omskriver eller dropper beskeder (sluk for dens "SIP ALG")
Et opkald tilslutter, men ingen hører nogetlyden er blokeret: kontroller den offentlige adresse i Indstillinger og medieportene i brandmuren
Del 6

Offentlig sikkerhed: laboratorie-sporet

911-svarprofilen, radiodispatchkonsollen og NG911 Core Services. De er et laboratorie- og designpartner-sporet: bygget og testet mod optagede captures, eksempeldata og stand-ins, men ikke certificeret til live 911 eller radiodispatch og endnu ikke afprøvet med en live ESInet, P25-system eller CAD. De er ikke på menuen, før de er aktiveret i Indstillinger. Nødopkald fra jeres egne telefoner (Kom i gang) er ikke en del af dette sporet: de er en del af enhver telefon-system.

Kapitel 77

911-opkald (911-profilen)

I webgrænsefladen: /psap

BitVoice besvarer 911-opkald som et PSAP's opkaldshåndteringssystem: opkald fra det nødnetværk (ESInet, NENA i3) ankommer med opkalders placering og netværksdata, og opkaldshåndtageren ser dem med det samme, og CAD underrettes, når opkaldet besvares.

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

Konfiguration.

  1. På Trunk (kapitel 7) tilføjes trunk fra ESInet-udbyderen (eller NG911-kernens ESRP) og slå Fra ESInet til.
  2. I Opkaldsdirigering (kapitel 8) sendes opkaldene til call-tagerne: en kø, eller en ringgruppe.
  3. På 911-opkald indtastes myndigheds-ID'et (et domæne, som psap.county.example.gov) og hvad CAD modtager: adresse og port for dens ALI-lytter og dens EIDO-adresse.

Når et 911-opkald ringer, vises det på 911-opkald med:

Lokalitet kommer i opkaldet (ved værdi) eller som en reference, som BitVoice henter med HELD. Et opkald med en reference har Rebid lokalitet: BitVoice beder om det igen, hvis opkaldsstederne er i bevægelse eller hvis den første fastlæggelse var upræcis.

Når en rebid ændrer lokaliteten, siger lokalitetskontrollen, hvilken der skal vises først, og hvorfor: den nye lokalitet som regel; den første, hvis den var en præcis enhedsfastlæggelse (GPS, inden for 100 m) og mindre end to minutter gammel, og den nye er upræcisere; og begge, hvis to lokaliteter er uenige med mere end deres usikkerhed tillader, så call-tageren beder om oplysninger.

Når en call-tager besvarer, modtager CAD hver for sig, så en CAD, der er nede, aldrig forhindrer opkaldet:

Selv ALI-spillet er plain TCP, da legacy CAD-lyttere tager det, så det ikke kan kræves at være krypteret. Når det går til en anden computer, advarer Health: hold denne sti uden for enhver delt netværk, med en direkte serieforbindelse (serial:/dev/…) eller en VPN eller privat kredsløb til CAD. Indstil også Agent-ID: EIDOs og i3-loggen navngiver agenturen efter det, og Health (kapitel 13) advarer, mens det er tomt.

Et 911-opkald afvises aldrig. Et taleopkald fra ESInet (eller en CAMA-trunk) hvis indgående rute ville afvise det, fordi ruten afbryder, ringer en gruppe uden nogen i den eller ikke eksisterer, eller at ingen besvarer, ringer i stedet alle call-tagere: hver aktiveret udvidelse og enhver telefon, der tilslutter, mens det ringer, indtil nogen besvarer eller opkaldsstederne afbryder. Et tekstopkald venter på denne skærm på samme måde. Opkaldets Sådan blev det dirigeret fortæller, hvad der skete, og Sundhedsstatus (kapitel 13) advarer om en sådan rute, så den kan rettes. Kun testopkald (urn:service:test.sos) og opkald, der ikke er 911-opkald, beholder deres rutes afvisning.

Ej heller tabt ved overførsel. Når en call-tager overfører et 911-opkald, og overførslen ikke kan oprette forbindelse, fordi udvidelsen ikke har nogen telefon tilsluttet eller ingen besvarer den, går opkaldet tilbage til call-tageren, mens de stadig er på. Hvis de allerede har afbrudt (de fleste skrivebordstelefone gør det lige efter en blind overførsel), ringer alle call-tagere i stedet, indtil en besvarer. Et 911-opkald overføres aldrig til udvidelsens beskeder eller anden ikke-svar-destination, og dets rute-spor fortæller, hvad der skete. På ethvert opkald frigør en telefon, der afbryder lige efter at have bedt om overførsel, kun sig selv: overførslen fortsætter.

En opkaldssted, der forsvandt. Når den ene side af et opkald stopper med at sende lyd i et minut (en telefon, der mistede strøm eller signal, sender ingen afbrydelse), mens den anden side stadig sender, afbrydes opkaldet med årsagen *opkaldsstedets lyd stoppede* (eller hvis det var), i opkaldsrekorden og i call.ended-begivenheden, som CAD hører (cause, endedBy). En side på hold, under faxing eller som sagde, at den sender intet (en højtaler), afbrydes aldrig på denne måde. Stilhed sender stadig pakker, så en opkaldssted, der ikke kan tale, holder opkaldet oppe.

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

Opkalders video og fotos. På et 911-opkald gør Send opkalders video-link en link, der kun åbnes af dette opkald: tekstet til opkalders fra nummeret under Tekst link fra, eller oplæst. Når det ikke kan tekstes (ingen tekstnummer er angivet, eller opkalders sendte ingen nummer), siger skærmen og API'ens problem, hvorfor. Opkalders åbner det i deres telefons browser (ingen app): Del live-video sender bagkameraet live (WebRTC, WHIP: RFC 9725), og Send fotos eller videoer sender, hvad de allerede har taget, inklusive dashcam- og action-camera-filer. På opkaldet:

Video tager aldrig fra opkald: hver live-video har sine egne porte, denne server tager maksimalt Live-videoer på én gang af dem (4 medmindre angivet), hver bedt om at forblive under Video-bitrate, og video, der stopper i ti sekunder, afsluttes. Opkalders' telefoner må nå denne server på Link-adresse (https) og dens media-porte (UDP). Filer gemmes Gem filer og exponeringslog dage (tom: indtil slettet), bortset fra opkald, der holdes.

Optagelse af live-video. Med Optag opkalders live-video aktiveret, gemmes opkalders live-video sammen med fotos og klip som en fil per video-sekvens: samme billeder, som telefonen sendte, ikke konverteret, i en IVF-fil (H.264 eller VP8 med hvert billede sin egen tid), hashet, som den skrives. Et billede, der er beskadiget af en tabt pakke, efterlades ude i stedet for at blive gemt ødelagt, og telefonen bedes om et fuldt billede for at fortsætte fra. Afslør afspiller den (fra en kopi i WebM eller MP4, som ffmpeg laver, samme billeder i en anden container; uden ffmpeg kun den originale downloader); Downloader den originale giver filen, som hashen er af. ffmpeg, VLC og retsmedicinske videoværktøjer åbner den originale.

Ind i CAD. Den EIDO (NENA-STA-021), der sendes til CAD, navngiver hver foto, klip og optagelse samt livevideoen, så længe den varer, som ekstra data ved reference: urlPurpose er caller-photo, caller-video, caller-video-recording eller caller-video-live, og additionalDataByReferenceUrl er filen på /m/{viewToken}/{n} eller livevideoen på /whep/{viewToken}. BitVoice sender CAD EIDO igen, når en fil ankommer eller livevideo starter eller stopper. Links bruger Linkadresse (eller denne servers offentlige adresse); uden nogen af dem, navngiver EIDO ingen medier. Hver hentning gennem dem er i eksponeringsloggen. Eventstreamen siger det samme (GET /api/events: call.media, call.video). BitVoices EIDOs er kontrolleret mod NENAs offentliggjorte EIDO-skema.

Link, der ikke eksisterer, gættes ikke hurtigere end log-ind: en adresse, der fortsætter med at prøve, afvises i en periode. Filer fra opkaldere serveres i en sandbox, aldrig som en side på denne server.

Exponering. Hver afsløring af en live-video og hver åbning af et foto eller en klip tælles under Exponering på 911-opkald: hvem, hvor ofte, over hvor mange opkald. Det er til supervisorer og centerets trivselsprogram.

Video, en telefon sender i 911-opkaldet selv (SIP-video over ESInet), kan ses på samme måde: Se tager den som kilde, når der ikke er nogen link-video live.

Opkald med kun et nummer. Et 911-opkald, der bringer et callback-nummer og ingen placering (fra en CAMA-trunk eller et ESInet-opkald, hvis placering ikke kom), kan søges: giv Placering-søgning (ALI) adressen på din ALI-databases eller placeringsservers HELD-grænseflade (RFC 5985, spurgt af telefonnummer som RFC 6155 har det). BitVoice spørger, da opkaldet ankommer, uden at holde det op, og placeringen vises på opkaldet, når svaret kommer; opkaldet siger, når søgningen fejlede og hvorfor.

Den legacy ALI-forbindelse. Uden en HELD-server kan BitVoice spørge en ALI-controller eller ALI-databasens dataforbindelse på den gamle måde: den sender en anmodning og læser tilbage optegnelsen som tekst over netværket (ALI-forbindelsesadresse host:port) eller ud af en serieport (serial:/dev/ttyUSB0?baud=9600&parity=none, med bits og stop også; en USB-serieadapter virker; på Linux og macOS, ikke Windows: der bruges en serie-til-netværksomdannelse og dens adresse). Anmodning er hvad der skal sendes: {ani10} de ti cifre i tilbageslutningsnummeret, {ani7} de sidste syv, {pos2} positionen,  STX og  ETX ({ani10} når blank). Svaret læses indtil dets ETX. ALI-layouts varierer mellem udbydere og stater, så du placerer hver felt: dets linje, dets kolonne og dets længde (0: til slutningen af linjen), fra en udskrift af en ALI-skærm; Gade (hele linjen) splitter en gadelinje op i dets dele, eller placer de enkelte dele en efter en. Indsæt en prøveoptegnelse og Læs prøven for at se linjerne med en kolonnerækkeregler og hvad hvert felt læser; Spørg spørger forbindelsen selv om et nummer. Optegnelsens adresse og position bliver opkaldets placering, dets navn opkalders navn, og dets serviceklasse vises på opkaldet. Protokoller, der ikke er en anmodning og en tekstsvarelse (PAM, E2 og andre udbyderes egne), tales ikke: de kræver en gateway.

ALI-overskridelse over en serieport. ALI-overskridelse til tager også en serieport (serial:/dev/ttyS0?baud=9600), til en CAD, der læser overskridelsen fra en seriekabel.

Kortet. Under Kort i 911-indstillingerne giver du BitVoice dets kortfliser: en .mbtiles-fil med rastertilinger (PNG, JPEG eller WebP) på denne server, til et kort, der fungerer uden internet (dit GIS-team, TileMill, gdal2tiles eller en tile-udbyder laver en til dit område), eller en tile-server med {z}, {x} og {y} i dets adresse (dit countys, eller en kommerciel: husk dets vilkår; de offentlige OpenStreetMap-servere er ikke til dette). Uanset hvilken måde, henter opkaldstagerne browserne fliser fra BitVoice alene: den læser filen eller henter fra tile-serveren og holder de sidste fliser i hukommelsen. Det samme kort viser radiopositioner på radiokonsollen. Vektortilinger understøttes ikke.

i3-loggen gemmer NENA i3-begivenhederne for hvert opkald (opkaldsstart, svar, placering, EIDO sendt), en fil om dagen. Svartider viser, hvor mange opkald blev besvaret inden for dit mål (NENA: 90% inden for 15 sekunder, 95% inden for 20), de forladte, og hver opkaldstagers gennemsnit. En række om dagen (CSV) downloader tællingerne stat 911-kontorer normalt beder om (opkald, besvaret, forladt, inden for målet og inden for 20 sekunder, gennemsnit og længste ventetid) for de valgte dage; En række om opkald (CSV) listar hvert 911-opkald med, hvornår det blev besvaret, af hvem, og om det var tekst. Hver stat har sin egen form: layout din under Rapportlayout. En tekstopkald taget på denne skærm eller gennem en CAD tælles under personen, der tog det; en, der ingen tog, før opkalderen forlod, tælles som forladt.

Rapportlayout. Nyt rapportlayout layouter en rapport, som din stat eller countys form har det: hvad hver række er (en dag, en uge, en måned, en time af dagen, en opkaldstager, eller en række i alt), en samlet række, og kolonnerne i rækkefølge, hver med sin egen overskrift, hvis formen ordlægger det anderledes: opkald, besvaret, forladt (en tælling eller en andel), besvaret inden for så mange sekunder (en tælling eller en andel; sekunderne er dine, så 10 og 20 for en form og 15 og 40 for en anden), besvaret efter mere end så mange sekunder, gennemsnitlig og længste ventetid, tiden inden for hvilken 90% blev besvaret, gennemsnitlig opkaldslængde, og tekstopkald (TTY, real-time tekst, tekst til 911). En ventetid tælles fra opkaldets ankomst til en opkaldstagers svar. Vælg et layout og datoer og Kør det for at læse det her, Regneark (CSV) for at downloade det, eller Side til udskrift til en plain side til udskrift eller gemme som PDF. Layouts gemmes med indstillingerne, så de følger med en backup og ind i Git.

TTY-opkald. Døve og hørehæmmede opkaldere kan ringe 911 med en TTY (en teksttelefon, Baudot ved 45,45 bit/s). BitVoice lytter efter en på hvert 911-opkalds stemme, fra det første øjeblik: hvad opkalderen skriver, vises på opkaldet, mens de skriver, under Tekst, med en pause eller en ny linje, der starter en ny linje. Et stille opkald kan være en TTY, der venter på dig: når du svarer, sender Svar med TTY tekst, selv før nogen er kommet. Skriv svaret og tryk Send: det går til opkalderen som TTY-toner (opkaldstagerens stemme er dæmpet, mens den afspilles, da TTY'er tager tur), i store bogstaver, og TTY-etikette gælder: slut hver tur med GA ("gå videre"), og SK, når du skriver af. Karakterer, en TTY ikke kan vise, udelades. Tale, musik og tonefrekvenser tages aldrig for TTY-tekst: en karakter tælles kun, når hver bit af den er en ren TTY-tone. Samtalen gemmes med opkaldet i opkaldshistorikken og i i3-loggen (en MessageLogEvent per tur). Fjern markeringen Lytt efter TTY'er på 911-opkald i 911-indstillingerne for at stoppe lytten.

Overførsler. En 911-opkald, der sendes videre til en anden PSAP, beholder sin placering: PIDF-LO følger med opkaldet.

Realtids-tekst (RTT). En telefon, der sender tekst sammen med sin stemme (RFC 4103, som VoLTE-telefoner og NG911-opkald gør), får sin tekst besvaret af BitVoice selv, da kontorstelefoner ikke viser nogen: hver karakter vises på opkaldet, mens afsenderen skriver, og din svar går tilbage som tekst. Tabte pakker genskabes ved den redundans, RTT medfører; tekst, der går tabt ud over det, vises som .

Tekst til 911. En tekstkontrolcentral (TCC) sender tekster til PSAP som en session uden stemme (MSRP, RFC 4975, over ESInet-forbindelsen). BitVoice besvarer det og venter på 911-opkald, der er markeret Tekst til 911, med de tekster, der er kommet; ingen telefoner ringer. Tag denne tekst gør dig til call-taker (besvartiden tælles derefter, og CAD får ALI-spillet og EIDO derefter); besvar i boksen under samtalen, og Afslut samtale, når du er færdig. TCC's lukning af sessionen afslutter den også. En SIP-MEDDELELSE, der sendes inden for en 911-opkalds dialog, behandles som afsenderens tekst på samme måde, og svar går tilbage via SIP-MEDDELELSE. Tekster modtages kun fra forbindelser, der er markeret Fra ESInet.

En TCC, der tilbyder sessionen over TLS (TCP/TLS/MSRP, msrps: stier, RFC 4975, afsnit 14), får den over TLS, med denne servers certifikat (Indstillinger › Certifikater; uden et sådant afvisses tilbuddet). TCC's certifikat skal være det, som tilbuddet nævner (a=fingerprint, SHA-256); når det ikke nævner noget, skal det spores tilbage til PSAP Credentialing Agency-rødder, der er angivet under Core services, hvis nogen er angivet. BitVoice's svar nævner sit eget certifikat på samme måde.

Hele samtalen, uanset hvordan den kom, gemmes med opkaldet i opkaldshistorikken og i i3-loggen.

Hvad der endnu ikke er her: at videregive en tekstsession gennem NG911-kernen (ESRP-ruter stemme; en tekstsession besvares, hvor den ankommer); EIDO-overførselsstandardens egne abonnementer (NENA-STA-024 WebSocket): BitVoice poster EIDOs til en adresse.

Kapitel 78

Radiodispatch-konsol

I webgrænsefladen: /radio

Dispatchere taler på radiokanaler fra samme hovedtelefon som deres telefonopkald. BitVoice når radioerne via radio-over-IP (RoIP)-gatewaye; radio-netværket selv forbliver hos den, der driver det.

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
Figur 62. The radio console: talkgroups beside the phone

Opsætning. Under Konsolopsætning, vælg en konsolnummer (800, sige) og tilføj hver kanal: dens navn, porten på denne server, gatewayen sender kanalens lyd til, og gatewayens adresse og port for lyden, der går ud. På gatewayen: RTP, G.711 µ-law, til denne servers adresse og den port; tænd radioen på lyd (VOX). Hver kanal bruger sin port og den næste, uden for rækken telefonopkald bruger.

Tilslutning. En dispatcher ringer konsolnummeret fra deres skrivebords telefon eller trykker Tilslut med browser-telefonen. De hører herefter hver kanals trafik blandet sammen; Høring / Dæmpet på en kanal fjerner den fra deres hovedtelefon. Lampen på en kanal lyser, mens den modtager.

Tale. Hold en kanals Hold til tale-knap (eller fokusér den og hold mellemrumstasten): din stemme går kun til den kanal, og kanalen viser TX med din udvidelse. En dispatcher taler på en kanal ad gangen; knappen er grået for de andre, mens nogen taler. Intet sendes til en kanal, mens ingen taler, så en stemme-aktiveret radio er aldrig holdt på luften.

Forbindelse. Tryk Forbind på en kanal, derefter Forbind her på en anden: de to hører hinanden (en brandkanal og en fælles-hjælpekanal, sige) indtil du trykker Afbrud.

P25-talgrupper. En kanal kan også være en P25-talgruppe, som tilsluttes direkte over ISSI (TIA-102.BACA, grænsefladen mellem P25-underystemer; med Send CSSI-konsol PTT-ord aktiveret, tilføjer BitVoice konsol-under-systemets ord til hver anmodning). Vælg En P25-talgruppe (ISSI), angiv talgruppe-ID, SIP-adresse og -ID for RFSS, der er hjemsted for talgruppen, og en port for dens stemme. Under Denne konsol på P25-systemet, indtast WACN og system-ID, RFSS-ID, din P25-administrator gav denne konsol, enheds-ID, dispatchere transmitter som, og SIP-porten, ISSI bruger her; P25-systemet skal kende denne server som en RFSS på den adresse. Flisen viser P25, mens gruppeopkaldet er oppe (P25 ned og årsagen, når det ikke er), og enheds-ID for den radio, der taler, i rød med NØDSITUATION, når det er et nødopkald. Hold til tale beder om hjem-RFSS for kanalen (Bedende om kanalen…); din stemme går, når den bevilger den, og hvis den afviser (nogen med højere prioritet har den) siger flisen det. Stemme konverteres til og fra IMBE, P25-vokoderen, i BitVoice.

Krypterede talegrupper. Under Krypteringsnøgler, tilføj hver trafiknøgle, som din radiobutik giver dig: et navn, algoritmen (AES-256, DES-OFB eller triple DES), nøgle-ID og nøglen selv i hex (TIA-102.AAAD). En nøgle vises aldrig igen, når den er gemt, ikke engang for administratorer, og efterlader feltet tomt, så den bliver gemt. Konsollen hører en krypteret transmission, når den har nøglen med den pågældende algoritme og nøgle-ID: flisen viser en lås og algoritmen ved siden af den talende enhed. Uden nøglen bliver transmissionen dæmpet, aldrig afspillet som støj, og flisen siger ingen nøgle: dæmpet. For at transmittere krypteret på en talegruppe skal du vælge en nøgle under Transmit til den kanal; flisen viser derefter TX AES-256 (eller den algoritme, du valgte). En fuld konfigurations-eksport (Indstillinger, en administrators backup) medfører nøglerne, så behold disse filer så sikre som nøglerne.

Private opkald. Med konsollen på et P25-system, Ring en radio i din positionsbar ringer en radio efter dets enheds-ID (slå Nød til for at ringe det som en nødsituation). Opkaldet bliver en flise af sig selv, Privat opkald: enhed 197, med Hold for at tale ligesom enhver kanal og Afslut. Radioer kan også ringe konsollen, på den enheds-ID, som dispatcherne transmitterer som: opkaldet vises som en flise markeret ringet ind (i rødt med NØD når radioen ringede som en nødsituation), hver dispatcher hører det, og det forsvinder, når enten side afslutter.

Advarselstoner. Send en advarselstone... på en kanal sender en af følgende: Advarsel 1, en fast tone på 1000 Hz i 3 sekunder; Advarsel 2, en krigende tone mellem 1000 og 1500 Hz; Advarsel 3, 1000 Hz pulser; eller en kort Bip. Tonen holder kanalen, mens den afspilles (flisen viser tone og din udvidelse), hver dispatcher, der overvåger kanalen, hører den gå ud, og på en P25-talegruppe går den, så snart hjem-RFSS'en giver kanalen.

Nødsituationer. Når en radio transmitterer som en nødsituation (dens nødknap), skifter dens flise til rød med NØDSITUTION og enheds-ID'et, serverloggen noterer det, og CAD underrettes straks (nedenfor). Nødsituationen forbliver aktiveret på hver console efter radien holder op med at tale, indtil en dispatcher trykker Godkend: flisen siger derefter, hvem der godkendte det og hvornår, og CAD modtager et radio.emergency.ack-begivenhed. Godkendelse navngiver den viste enhed: hvis en anden enheds nødsituation erstattede den et øjeblik før, afviser BitVoice og flisen viser den nye, så en anden nødsituation aldrig undertrykkes ved en fejl. CAD kan godkende gennem API på samme måde: POST /api/radio/channels/{id}/ack med {"unit": "bee07.1d5.00044d"} (eller radio-ID'et, "1101") returnerer 409, når kanalenes nødsituation nu er en anden enheds; uden en brødtekst godkender den, hvad kanalen indeholder.

Simulselect. For at sige noget på flere kanaler på én gang skal du markere Vælg på hver kanal og derefter holde Tal på N kanaler i baren over fliserne. Det er enten alt eller intet: hvis en anden dispatcher taler på en af dem, bliver ingen af dem aktiveret, og du bliver underrettet om, hvilken kanal det er.

Radio positioner. Radioer rapporterer, hvor de er over radio systemets data side, ikke tale siden console joiner: P25 lokalitetstjeneste, Motorolas LRRP eller en leverandørs egen, samlet af radio butikkens data eller AVL gateway. Lad gatewayen (eller et lille script ved siden af) POST hver rapport til BitVoice med en API-token: POST /api/radio/locations med {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, eller en liste over op til 500 (hastighed i km/t, retning i grader, nøjagtighed i meter; alle tre og tiden er valgfrie). Radio positioner på console listen så viser hver radios sidste fastlæggelse, med dets navn, og CAD modtager hver enkelt som en radio.location begivenhed. BitVoice afkoder ikke LRRP eller P25 lokalitetstjenesten selv.

Radio-navne. Under Radio-navne kan du navngive radioer efter deres P25-enheds-ID (1205 er "Motor 5", for eksempel): flisen viser navnet ved siden af enheden, mens den taler, og radio-loggen og CAD's begivenheder medfører det.

Radio-log og optagelse. Slå Optag hver transmission til under Optagelse og CAD: hver transmission på hver kanal, hørt eller sendt, gemmes som en optagelse med en linje i Radio-loggen: hvornår, kanalen, hvem (radioens enhed eller dispatcheren udvidelse), hvor lang tid og om det var en nødsituation, en advarselstone, krypteret eller et privat opkald. En hørt transmission starter med den første tale og slutter 1,5 sekund efter det sidste ord. Find en enhed, dispatcher eller kanal med søgefeltet og tryk Afspil for at lytte. Optagelser gemmes så længe opkaldsoptagelser gemmes (Indstillinger, Optagelse).

Radio data to CAD. Give CAD's address under Send radio events to CAD at (and a shared secret if CAD wants one; it is sent as a bearer token and never shown again). BitVoice then POSTs each event (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission and radio.location) as JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit when a radio starts talking on a channel (its unit ID, WACN, system, the channel, emergency, encryption), radio.emergency for an emergency (tried three times if CAD does not answer), and radio.transmission for each finished transmission as it appears in the radio log. CAD can also read the log itself with GET /api/radio/log (filters: channel, q, since, until). A CAD that is down never holds up the console. P25 radios' GPS positions are not part of this: they travel over P25 packet data (location services), not over the ISSI's voice.

Ikke her endnu: P25-fase 2 (TDMA)-tale i sin egen halv-rates kodek. En fase 2-system fungerer med consolen, når dens ISSI-samtalegrupper indeholder fuld-rates (fase 1)-tale eller dens transkoder konverterer dem, hvilket er almindeligt: spørg din P25-administrator. En samtalegruppe, hvis tale ankommer i blokke, som denne console ikke kan afkode (halv-rates tale sendt uden transkodning, sandsynligvis), viser Stille her på dens flise, mens en radio taler, så ingen tager stilheden for en stille kanal. Afkodning af den kræver to ting, som BitVoice ikke har: halv-rates kodeken (AMBE+2, patenteret indtil 2028: en licens fra dens ejer eller en licenseret hardware-kodek-chip) og ISSI's halv-rates tale-blok-format (TIA-102.BACA-B, solgt af TIA, ikke offentligt).

Kapitel 79

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

I webgrænsefladen: /core

Til en stat eller regional 911-myndighed, der kører sin egen NG911-kernel: BitVoice besvarer LoST som ECRF og ruter hvert 911-opkald som ESRP til PSAP, der betjener opkaldsstedet.

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

Serviceområder. Eksporter jeres grænser fra GIS som GeoJSON-polygoner (PSAP-grænser for urn:service:sos; politi-, brand- eller EMS-områder for urn:service:sos.police og de andre) og upload dem på Core services. En polygons name, uri og number-egenskaber læses; angiv en standard-PSAP-URI for dem, der ikke har en. Rediger et område for at tilføje de byer eller amter, det betjener, til opkaldere, hvis placering kun er en civile adresse. Prøv et sted viser, hvilket område besvarer en position eller en by, som en LoST-forespørgsel ville.

ECRF. Slå Besvar LoST-forespørgsler til og listen over adresser, der må spørges (jeres ESInet): andre elementer sender findService til /lost (RFC 5222) og får PSAP's URI. En bestemt service (sos.police) besvares fra dens egne områder først, derefter fra sos. Et sted, der ikke er dækket af nogen af jeres områder, kan gå til Skovguiden (RFC 5582: den nationale directory af ECRF'er): en rekursiv forespørgsel stilles der på forespørgerens vegne, og svaret returneres (begge servere er listet i svarets sti), og enhver anden forespørgsel får en omdirigering til den, og en forespørgsel, der allerede er gået gennem denne ECRF, afvisses som en løkke.

ESRP'en. Listen over PSAP'er: hver enkelt URI (som områderne navngiver den), trunken, der når den, og dens overflow-PSAP, og vælg standard-PSAP'en. Så send ESInets indgående 911-opkald til ESRP i Rutevalg (kapitel 8). Hvert opkald går til PSAP'en for dens placering (fra denne servers områder eller et eksternt ECRF via LoST), med dens placering og den service, det bad om, medført; når den PSAP ikke tager det, til dens overflow; uden en placering eller fra et sted, ingen område dækker, til standarden. Hver beslutning er i i3-loggen på 911-opkald (kapitel 77).

Policyregler. Når ECRF har valgt en PSAP, kontrolleres reglerne under Policyregler i rækkefølge, og den første, hvis betingelser alle er opfyldt, afgør: send opkaldet til en anden PSAP eller afvis det som beskæftiget. En regel kan se på servicen (kun brandopkald, f.eks.), PSAP, som ECRF valgte, en tidsplan (mens nattevagtscenteret er lukket), opkald uden placering, opkald, som BCF har markeret som mistænkelige, og forbindelsen, opkaldet kom fra. Hver beslutning er i i3-loggen som en RouteLogEvent, der nævner reglen.

Grænsekontrol (BCF). Med Check omkald fra ESInet aktiveret, kontrolleres hvert opkald fra en ESInet-trunk først: adresser under Afvis altid afvises, og det samme gør en adresse, der starter flere opkald per minut eller holder flere opkald på én gang, end du tillader (en telefoni-afvisningstjeneste sender oversvømmelser af opkald fra få kilder). Afviste opkald modtager 503 med Retry-After. Aktivér Lad opkaldet gå igennem markeret som mistænkeligt for at sende sådanne opkald videre i stedet og lade en politikregel afgøre (til et center, der screener dem, eller afvist); en rigtig opkaldsaktør i en oversvømmelse går ikke tabt. Grænsekontrol: seneste viser, hvad der blev afvist eller markeret. Check STIR/SHAKEN-signaturer kontrollerer den signerende opkalders ID (Identity-headeren) for hvert opkald, der bærer en, mod STI-roden, der er angivet under Opkaldsskærmning i Indstillinger: et opkald, hvis signatur mislykkes, går igennem markeret som mistænkeligt, og en politikregel kan sende det et andet sted, og det vises i BCF-loggen; et 911-opkald afvises aldrig på grund af det, og usignede opkald (de fleste i dag) bliver stående. Hvert opkald forlader BitVoice som en ny anmodning på egen hånd (BitVoice er en back-to-back-agent), der kun bærer de headers og bodies, som BitVoice forstår og videreformidler: placeringen, Yderligere Data og sessionen. Inspecter medie kontrollerer hver RTP-pakke af et ESInet-opkald, før den bruges eller videreformidles: pakker fra en adresse, der ikke er den, som opkaldets SDP gav, med en payload-type, som tilbuddet ikke nævnte, med headerlængder (CSRCs, udvidelse, padding), der ikke passer pakken, større end Største pakke (1.500 byte, hvis feltet er tomt), eller forbi Pakker per sekund (150, hvis feltet er tomt; G.711 ved 20 ms sender 50), bliver droppet og talt. Den første af hver type, derefter den 10., 100. og så videre, kommer i Grænsekontrol: seneste (som *medie droppet*) og i opkaldets noter. Opkaldet afsluttes aldrig på grund af dets medie: opkaldsaktøren beholder de gode pakker. Opkald fra CAMA-trunker kommer fra det lokale kortprogram og inspiceres ikke.

Adressevalidering (LVF). Upload din 911 GIS-adresse-data som GeoJSON i NENA GIS-data-modellen (NENA-STA-006): vejcenterlinjer med FromAddr_L, ToAddr_L, Parity_L, IncMuni_L og resten, og sted-/struktur-adressepunkter med Add_Number, St_Name, Inc_Muni. En LoST-forespørgsel med validateLocation="true" får så adressens gyldige, ugyldige og ikke-afprøvede dele i svaret (RFC 5222), så bærere og placeringsservere kan korrigere en adresse, før et 911-opkald nogensinde bruger den. Check en adresse gør det samme her: et præcist adressepunkt er den bedste match, derefter en vejsegment, hvis interval på vejens højre side indeholder nummeret (ulige og lige sider respekteres); staveformer som Street og St, North og N behandles ens.

i3-logtjenesten. Slå Kør en i3-logtjeneste til: de andre elementer i din kerne (ESRPer, BCFer, PSAPer) sender deres loghændelser (NENA-STA-010), hver signeret som en JWS med elementets certifikat i dets x5c-header, ved POST til /i3log/LogEvents fra de tilladte adresser. Hver kommer som en JWS i den fladde JSON-form (signeret eller usigneret med algoritme none, som en logtjeneste kan acceptere: markeret som ikke sporet til PCA), kontrolleres og gemmes, og svaret er loghændelsens ID. Læs tilbage med GET /i3log/LogEvents/{logEventId}; listen med GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); find ID'erne for et opkald eller en incident med /i3log/LogEventIds, /CallIds, /IncidentIds og /AgencyIds; og læs en opkaldstekstsamtale med /i3log/Conversations?callId=. GET /i3log/Versions siger, hvad denne tjeneste taler. Loghændelser modtaget viser en dags hændelser med, hvem har signeret hver. Hvert svar kontrolleres mod NENAs offentliggjorte OpenAPI-definition af tjenesten; tjenesten er endnu ikke testet med en anden leverandørs elementer.

PSAP-Credentialeringsselskab. Indsæt PCA'ens root-certifikater under PSAP-Credentialeringsselskab roots: et signeret loghændelses-ID modtages herefter kun, hvis dens signaturs certifikat er knyttet til en af dem (og ikke er udløbet), og vises med PCA. Uden dem kontrolleres kun signaturerne alene, og hændelsen vises som ikke sporet til PCA.

Lokationsposter (LIS). Slå Besvar lokationsanmodninger (LIS) til og upload en regneark (CSV) med lokationsposter: en overskriftsrække og på hver række enten et nummer (ALI-data, eksporteret), et netværk (en adresseinterval såsom 10.20.3.0/24, eller en enkelt adresse: et bygning, en etage, en VLAN, et Wi-Fi-netværk) eller en mac-adresse (en enhed: en bordtelefon, en vægkontakts switchport), derefter adressen som hno, rd, sts, unit, floor (eller flr), a3 (by), a1 (stat), pc og land, med lat, lon og radius hvor dette er kendt (andre navne, såsom phone, street, zip, subnet og ip, er også forstået). PSAP'er, legacy-netværksgateveje og telefoner beder herefter om /held (HELD, RFC 5985) fra de tilladte adresser og får en PIDF-LO. En anmodning navngiver sin enhed efter telefonnummer, IP-adresse eller MAC-adresse (RFC 6155); en anmodning, der ikke navngiver nogen, besvares for den adresse, den kommer fra, som en LIS på et kontor- eller campusnetværk gør. En adresse lokaliseres ved det smalleste netværk, der indeholder den, så en etages /24 sejrer over campus /16. En enhed uden post får HELD's locationUnknown; en identitet af en anden art (en NAI, en port) får notLocatable. En BitVoice PSAP peger sin Lokationsopslag (ALI) her. Find en nummer, adresse eller MAC-adresse kontrollerer en post og siger, hvilket netværk den kommer fra. En nummer, netværk eller MAC-adresse, der er nævnt igen, erstatter sin gamle post; Erstat hver post starter forfra. Kun de tilladte adresser besvares: en LIS, der besvarer for enhver adresse, den bedes om, må ikke være åben for alle.

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:

Testopkald ved en PSAP. En BitVoice PSAP besvarer et testopkald fra ESInet (urn:service:test.sos, NENA-STA-010.3 sektion 9, RFC 6881) på egen hånd: dens svar siger PSAP-navnet, servicen og den lokalitet, opkaldet kom fra, de første tre lydpakker sendes tilbage, og den afbryder. Et andet test fra samme sted inden for to minutter afvisses (486), ligesom et femte på én gang. En ESRP videreformidler et testopkald som et rigtigt, stadig markeret som et test. Slå Besvar testopkald fra på siden for 911-opkald for at afvise dem (404).

JWS-algoritmer: NENA-STA-010.3 kræver EdDSA med Ed448. Go's standardbibliotek, som BitVoice bruger til hver kryptografisk trin, har Ed25519 men ikke Ed448, så EdDSA-signaturer kontrolleres med Ed25519-nøgler, og ECDSA- og RSA-signaturer accepteres også; en Ed448-certifikat afvisses.

Meant du. En adresse, der ikke er gyldig, får op til fem forslag fra samme data, bedst først, hver med en begrundelse: en gade et par bogstaver væk (en ombyttet bogstavspar tæller som ét), samme gade i den næste by, eller det nærmeste nummer gaden har, på samme side når det kan (lige numre forbliver lige). Brug udfylder et forslag. En position med adressen. Giv en bredde- og længdegrad (og positionens radius, når den er kendt) med adressen: positionen kontrolleres mod adressens egen adressepunkt, med tilladelse til dets radius og 100 m mere (størrelsen af en grund og GIS-fejl). Svaret giver afstanden og om de to er enige, og hvis de ikke er, det nærmeste adressepunkt ved positionen. En adresse, der kun er kendt fra vejmidter, har ingen punkt at kontrollere mod, og svaret siger det. LoST's validateLocation har ingen plads til nogen af delene, så operatører, der spørger via LoST, får kun valideringen.