BitVoice-manual

Et åpen kildekode-telefonsystem i ett program, konfigurert fullstendig i nettgrensesnittet: utvidelser, køer, konferanserom, ansattportalen, vert organisasjoner og offentlig sikkerhetslaboratorie-sporet.
79 kapitler · 63 figurer · 46 tusen ord · BioDream LLC

Innhold

  1. Del 1. Komme i gang
    1. 1. Komme i gang
    2. 2. Hvor moden hver del er
    3. 3. Utvidelser
    4. 4. Koble telefoner
    5. 5. Skinny-telefoner og MGCP-gateway
    6. 6. Telefoni-kort
    7. 7. Trunker
    8. 8. Anropsruting
    9. 9. PIN-sett
    10. 10. Ringere-id-søk
    11. 11. Nødstilfeller
    12. 12. Steder og kontor 911
    13. 13. Helse
    14. 14. Innstillinger
    15. 15. Skjermene på ditt språk
  2. Del 2. Hvor samtaler går
    1. 16. Samtaleflyt
    2. 17. Ringgrupper
    3. 18. Køer
    4. 19. Utgående oppkobler
    5. 20. Lyder: prompter, språk og ventemusikk
    6. 21. Menyer (auto attendant)
    7. 22. Navn-oppkoblingsskatalog
    8. 23. Innkobling (DISA)
    9. 24. Taleboter (AudioSocket)
    10. 25. Dag/natt-omkoplinger
    11. 26. Timeplaner
    12. 27. Skript (JavaScript og Lua)
    13. 28. AI-resepsjonist, voicemail-triage og spørsmål
    14. 29. Postkasse
    15. 30. Tilbakekall
    16. 31. Samtalelenker og nettsamtaler
  3. Del 3. Hverdags samtaler
    1. 32. Funksjonskoder, videreformidling og hurtigvalg
    2. 33. Ansattportalen
    3. 34. Konferanserom
    4. 35. Paging og høyttalere
    5. 36. Hot desking
    6. 37. Hotell og vekkingoppkall
    7. 38. Kontakter på hver telefon
    8. 39. Kalendere og ikke forstyr
    9. 40. Mobilappene
    10. 41. Videotelefoner
    11. 42. Faks: sending og mottak, faks-maskiner og analoge telefoner
    12. 43. Innboks: web-chat, WhatsApp og Messenger
    13. 44. Bedriftsteksting (SMS)
    14. 45. Overføringsorienteringer
  4. Del 4. Kunder og innsikt
    1. 46. Aktive oppringninger
    2. 47. Oppringningshistorikk
    3. 48. Kundetidslinje
    4. 49. CRM: oppringerkort og oppkallshistorikk
    5. 50. Innsikt i samtaler for overordnede
    6. 51. Oppringingsopptak og kortbetalinger
    7. 52. Innspillings-samtykke
    8. 53. Samtalekvalitet
    9. 54. Kostnader og budsjetter
    10. 55. Ringende ID-reputasjon og merket samtale
    11. 56. Spam-beskyttelse og STIR/SHAKEN
  5. Del 5. Kjøre BitVoice
    1. 57. Administratorene
    2. 58. Enkelt innlogging
    3. 59. Bedriftskatalog (Active Directory og LDAP)
    4. 60. Sikkerhet
    5. 61. Endringer, sikkerhetskopier og import
    6. 62. Oppdateringer
    7. 63. Flere servere som ett telefonisystem
    8. 64. Hvor dataene lagres (SQLite eller PostgreSQL)
    9. 65. Vert for andre organisasjoner
    10. 66. Kodeker og lyd
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importér
    13. 69. Konfigurasjon som kode
    14. 70. Asterisk-kompatibilitet (AMI, ARI og AGI)
    15. 71. AI-assistenter (MCP)
    16. 72. Arkiv
    17. 73. Juridisk varetekt
    18. 74. Målinger: Prometheus, OpenTelemetry, Grafana, SNMP og oppkallshistorikk
    19. 75. Oppkallsgenerator
    20. 76. SIP-sporing
  6. Del 6. Offentlig sikkerhet: lab-sporet
    1. 77. 911-samtaler (911-profilen)
    2. 78. Radiodispecherskonsoll
    3. 79. NG911 Core Services (ECRF, ESRP, LVF, BCF, LIS, logging)
Del 1

Komme i gang

Fra en ny installasjon til et fungerende telefonsystem: utvidelser, telefoner, et telefoniselskap, hvor samtaler går, nødsamtaler fra kontorene, og hvordan du forteller at alt er klart.

Kapittel 1

Komme i gang

I nettgrensesnittet: /

BitVoice er et fullstendig telefon-system i ett program: bytte som telefoner logger inn på, menyene og køene ringere går gjennom, voicemail, opptak, konferanserom, faks og tilkoblinger til telefon-selskaper. Alt settes opp i nettleseren, på skjermene denne håndboken beskriver. Det finnes ingen konfigurasjonsfil å redigere og ingenting annet å 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

Hva du trenger

Første start

Start BitVoice og åpne adressen den skriver ut (på en skrivebord åpner nettleseren seg selv). Web-grensesnittet er HTTPS bare, på denne datamaskinen også. Til du installerer et sertifikat av din egen (Innstillinger, Sertifikat), bruker BitVoice ett det har laget selv, så nettleseren advarer en gang: velg å fortsette til siden. Oppsettsguiden spør fire ting: organisasjonens navn og land, den første administrator-passord, den første utvidelsen og ditt telefon-selskap hvis du har en. Landet bestemmer nød-numre, tone ringere hører og måten 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. Utvidelser: en per person eller skrivebord. Hver har et nummer og en SIP-passord. Åpne Utvidelser (kapittel 3)
  2. Telefoner: koble en skrivebordstelefon, softphone eller nettleser-telefon til hver utvidelse. Åpne Telefoner (kapittel 4)
  3. Trunk: ditt telefoniselskapskonto, så du kan ringe utenom numre og motta samtaler. Åpne Trunk (kapittel 7)
  4. Samtale-ruting: hvor samtaler fra utenom går (en person, en ring-gruppe, en meny), og hvilken trunk som brukes for utenom-samtaler. Åpne Samtale-ruting (kapittel 8)
  5. Helse forteller deg hva som ennå mangler, nødsamtaler først. Åpne Helse (kapittel 13)

Deretter gjør en test-oppringing: fra enhver telefon tast *43, ekko-testen. Du hører deg selv tilbake, hvilket beviser at lyd fungerer begge veier.

Installerer det i ett 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 laster ned den siste utgaven for datamaskinen, sjekker den mot utgavens SHA-256-sum og BioDreams utgave-signatur (med OpenSSL 3, eller ellers med OpenSSHs ssh-keygen, som Windows 10 og 11, macOS og Ubuntu 20.04 har; ssh-keygen sjekker utgaver fra v0.1.14 og oppover), og installerer den som en tjeneste som starter selv:

For en Mac som svarer på samtaler mens ingen er logget inn, installer med sudo (curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): da er BitVoice i /Applications, starter med Macen, kjører som en skjult bruker på egen hånd (_bitvoice), betjener web-grensesnittet på port 443, holder dataene i /Library/Application Support/BitVoice og loggene i /Library/Logs/BitVoice, og Macens brannmur, når den er på, lar den akseptere forbindelser. En av de to per Mac: installatoren nekter den andre mens en er der. Når Macens brannmur er på, spør en BitVoice installert for deg om den kan akseptere inngående forbindelser: tillat det, så telefoner kan koble til. Hvis noe allerede bruker porten, navngir installatoren det og stopper (velg en annen med BITVOICE_HTTPS=:8444). sh install.sh --uninstall (med sudo for Macens egen) fjerner den og holder dataene; --purge fjerner dataene og loggene også. Prøvd på macOS 26 (Apple-silikon), installert for en person: installert, signatur sjekket med Macens egen ssh-keygen, en andre start på samme data nektet, tilbake etter programmet ble drept, startet igjen fra appen, oppgradert på plass, et manipulert program nektet, en port i bruk nektet, avinstallert og beholdt dataene, reinstallert på dem, og renset med ingenting igjen. Installasjonen for hele Macen (sudo) er prøvd på hver endring på GitHub's macOS-maskiner (Apple-silikon): kjører som _bitvoice på port 443, en brukerinstallasjon like ved siden av nektet, tilbake etter programmet ble drept, oppgradert, renset med ingenting igjen (den skjulte brukeren også). Intel-Mac er ikke prøvd ennå.

Run the same command again to upgrade (or use Updates (kapittel 62)). sh -s -- --version v0.1.5 (after the pipe) picks a release; --uninstall removes the program and service and keeps the data, --purge removes the data too. On Windows, save the script and run .\install.ps1 -Version v0.1.5, -Uninstall or -Purge, or remove it in Installed apps. For a server kept off the internet, copy the release's archive and SHA256SUMS into a folder and set BITVOICE_FROM to it.

Hvor det kjører

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

SystemHvordan starte detHvor dataene er
Linux./bitvoice (eller systemd-tjenesten i utgaven)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsdobbeltklikk 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.

Portene det bruker

PortHva for
5060 UDP og TCPSIP: telefoner og trunker
5061 TCPSIP over TLS (kryptert signalisering)
4569 UDPIAX2-trunker, bare når en er konfigurert
1720 TCPH.323-trunker, bare når en er konfigurert
2000 TCPSkinny (SCCP)-telefoner, bare når de er slått på
2727 UDPMGCP-gateway, bare når de er slått på
10000–20000 UDPlyden av samtaler (RTP), konfigurert i Innstillinger
8443 TCPdenne web-grensesnittet, HTTPS bare (vanlig HTTP sendes videre til HTTPS)

Hvis en annen telefon-system allerede har 5060, tar BitVoice neste ledige port og Helse sier det.

Alt i web-grensesnittet

Hver innstilling har en skjerm, og hver skjerm har et kapittel her. Ingen ting trenger en konfigurasjonsfil, en kommandolinje eller et annet verktøy. For automatisering, er de samme skjermene et REST-API, og konfigurasjonen kan følge en fil i Git (Konfigurasjon som kode (kapittel 69)), men ingen av delene er noen gang nødvendig.

Hva BitVoice er for

BitVoice er først og fremst et telefon-system for kontorer og kontakt-sentre, og en vertet telefon-tjeneste for leverandører: alt i de fem første delene av denne håndboken. 911-svar-profilen, radio-dispatch-konsollen og NG911 Core Services er en separat lab- og design-partner-spor (Offentlig sikkerhet (kapittel 77)): de er utenfor menyen til de er slått på i Innstillinger, og ikke sertifisert for live-bruk. Nød-samtaler fra dine egne telefoner er ikke en del av dette sporet; de fungerer på hvert telefon-system fra første start.

Finner veien

Kapittel 2

Hvor moden hver del er

Hvor langt hver del er bevist, åpent. Felttestet: kjørt mot virkelige systemer over et virkelig nettverk (Amazon EC2, internettet, virkelige leverandør-tjenester). Sjekket mot en referanse: testet mot en uavhengig implementering eller standardens egne data. Programtestet: BitVoices egne tester og nettlesertester bare, ikke ennå med virkelig utstyr eller kontoer. Lab: offentlig-sikkerhets-deler, ikke sertifisert.

OmrådeModenhetHva det hviler på
SIP-trunker: registrering, inn- og utgående samtaler, ringeidentitet, beskjeftiget, nøkler (RFC 4733)Felttesteten kommersiell operatør, SIP.US (demonstrationskonto, fra EC2): registrering og utgående samtaler til det offentlige telefonnettet over UDP og over TLS med operatørens sertifikat kontrollert; MOS 4,39, ingen tap. Innkommende samtaler fra det offentlige telefonnettet: T38Fax (faxsamtaler til dens nummer, registrering over UDP). Asterisk som operatør over internettet på EC2; MOS 4,4. Kamailio 5,7 (registrering med digest-signering over TLS, inn- og utgående samtaler, nøkler) og FreeSWITCH 1,11 (TLS og SRTP, inn- og utgående samtaler, G.722 til G.711) som den fjerne enden; MOS 4,39
Skrivebords telefoner over SIPFelttestetAsterisk som skrivebords telefon over internettet. Reelle Yealink-, Poly- eller Grandstream-telefoner er ikke prøvd enda
Netleser-telefon (WebRTC)Felttestetfra utsiden til EC2; Chromium-nettleser-tester med lyd begge veier
To servere, en PostgreSQL, feiloverFelttestetkill -9 og planlagt stopp på EC2: samtalen fortsetter, operatørlinjen flyttes
En-kommando-installasjonFelttestetUbuntu 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-silikon (for en person, og med sudo for hele Mac-en i CI); tilbake etter omstart
KapasitetFelttestet2 000 samtaler samtidig, ingen tap, MOS 4,41, på en 16-vCPU c7i.4xlarge (om lag 10 vCPUs i bruk); 200 samtidig på c7g.large, c7i.large, t4g.small, en M4 og Lightsail-nano. Ved 2 000: jitter 4,0 ms for 95 % av samtaler, lengste gap mellom pakker 74 ms, lengste garbage-samlingpause 4,2 ms
FreePBX-migrering (Import)Felttesteten ekte FreePBX 17,0,33-sikkerhetskopi (70 MB) importert hele; andre fra FreePBX' egne formater
AI-transkript, sammenfatninger, resepsjonistFelttesteten ekte modell gjennom OpenRouter
Fakta og sammenfatninger uten språkmodellProgramvaretestetoppfunne 911-samtaler bare: 23 av 43 fakta (53 %) på den lukkede mengden, 3 fakta ingen ventet; 41/41 trening, hold-out 27/40 kald. Aldri målt på ekte samtaler.
Tale til tekst på denne serveren (whisper)Felttestet på macOS og Linuxwhisper-server 1,9,5 kjørt av BitVoice: på en Mac, og på Ubuntu på EC2 (x86-64), der den skrev live-samtale- og voicemeldingstranskriptene i telefonappens felttest; nedlastinger for hver plattform bygget og prøvd i CI
Arkiv til S3, hemmeligheter fra AWS Secrets ManagerFelttestetekte AWS, vår egen SigV4
SNMP-overvåking og fellerFelttestetnet-snmp's snmpwalk og snmptrapd
Let's EncryptFelttestetutsteder og fornyer den offentlige demoens sertifikat
Maskinbilder (AWS) og konfigurasjon som kodeFelttesteten EC2-bilde bygget av deploy/cloud/build-images.sh fra Ubuntu 24,04: hver server fra det starter nytt; deploy/terraform med OpenTofu 1,13 (opprett, endre, ingen drift, ødelegg). Azure-bilder er ikke prøvd
IAX2-trunkerKontrollert mot en referanseAsterisk 23
Full ICE bak NAT (STUN og TURN-klient)Kontrollert mot en referanseChromiums ICE-agent (vertskandidater og relé bare), JsSIP-softtelefoner med BitVoices tilbud, coturn 4,18 og BitVoices egen TURN-server som reléer, mDNS-vertsnavn fra Chromium løst. Ikke prøvd fra en server bak en ekte NAT-router enda
ICE-gjenopptak (en telefon som endrer nettverk midt i en samtale)Kontrollert mot en referanseChromium gjenopptar ICE på en nettleser-telefonsamtale (BitVoice som ICE-lite og som en fullstendig agent) og SIP.js 0,21 gjenopptar ved re-INVITE over SIP over WebSocket: nye legitimasjoner begge veier, et nytt kandidatpar, lyd hver halvannen sekund gjennom gjenopptak. Ikke prøvd på en telefon som faktisk flytter fra Wi-Fi til et mobilnett
SIP History-Info og Diversion (videreførte samtaler)Kontrollert mot en referanseAsterisk 20s PJSIP begge veier: dens videreførte samtaler lest av BitVoice, og BitVoices videreføringer lest av Asterisks REDIRECTING() fra History-Info alene og fra Diversion alene; RFC 7044-innstillinger beholdt og utvidet på en videreføring på. Ikke prøvd med en operatør eller Teams som sender dem
Bedriftskatalog (LDAP, Active Directory)Kontrollert mot en referanseOpenLDAP 2,4 (StartTLS og LDAPS, 1 203 personer lest gjennom sidning forbi dens 1 000-grense, grupper, innlogging) og Samba 4s Active Directory (LDAPS, sidning forbi 1 000, disabled konti utelatt, nestede grupper for ringegrupper og roller). Ikke prøvd mot Microsofts egen Windows Server-domenekontroller
ARI (Asterisk REST-grensesnitt)Kontrollert mot en referansehver operasjon av Asterisks publiserte ARI kalt og dens svar kontrollert mot modellens påkrevde felt; ari-client 2,2,0, Asterisks JavaScript-bibliotek, leser /ari/api-docs og kjører en applikasjon
Alle-video-rom (SFU, simulcast) og skjermdeleKontrollert mot en referanseTre Chromium-nettlesere i ett rom, hver sender tre størrelser (VP8-simulcast) og mottar de to andre; størrelser skiftet på nøkkelrammer når fliser vokser og krymper. Kameraer og en delt skjerm (Chromiums egen skjermfanging) i et H.264-rom. Ikke prøvd med Firefox eller Safari, over internettet, eller med mer enn tre kameraer; H.264-simulcast velger lag ved nettleserens rekkefølge bare.
AGI og FastAGI (Asterisk-gatewaygrensesnitt)Kontrollert mot en referansehver kommandos svar sammenlignet med Asterisk 20,6s over FastAGI; en FastAGI-server skrevet med pyst2 som kjører en samtale; EAGI-lyd til et program. Ikke prøvd med en produksjons-IVR
AI-assistenter over MCPKontrollert mot en referanseden offisielle MCP TypeScript SDK (1,32,2) som klient: verktøy liste og kalt med en API-nøkkel over Streamable HTTP (protokoll 2025-11-25), og dens OAuth-innlogging fra ende til ende (oppdagelse, registrering, PKCE, nøkkel, fornyelse); samtykkessiden i Chromium; stdio-broen mot en testserver. Ikke prøvd med Claude, ChatGPT eller en annen assistent selv, som trenger en server som er tilgjengelig fra internettet med et pålitelig sertifikat.
Microsoft 365 og Google Workspace (kontakter og kalendere)Programvaretestetmot stand-ins av Microsoft Graph (brukere, organisasjonskontakter, kalender getSchedule, klient-credentials-token) og av Googles People API, Calendar freeBusy og JWT-bærertoken, skrevet fra deres publiserte referanser; stand-in-ene sjekker hva BitVoice sender (JWT-signaturen og krav, sidning, forespørselskropper). Ikke prøvd med en ekte Microsoft 365-leietaker eller Google Workspace-domene.
Skjermene på 14 språkProgramvaretestethver del av tekst skjermene viser (om lag 5 000, fra koden: JSX-tekst, strenger og serverens meldinger) maskinoversatt av Llama 3,3 70B til 13 språk, 99 % beholdt av sjekken (samme placeholders, adresser og kode uendret); tysk tegnet gjennom nettleser-tester (innlogging, meny, søk, skjema, tilbake til engelsk). Ikke gjennomgått av en person på noe språk.
H.323-trunkerKontrollert mot en referanseH323Plus 1,28 (dens simph323 som spiller og recorder WAV-filer) på EC2: samtaler begge veier med Fast Connect og G.711, hver ende hører den andres tone, MOS 4,39; samtaleopprettelse også med Asterisks chan_ooh323 (hvis eget lyd er ødelagt i Asterisk 22)
SIP over WebSocketKontrollert mot en referanseJsSIP og SIP.js
Kodek: GSM, G.726, iLBC, MP3-holdemusikkKontrollert mot en referanseffmpeg, RFC 3951-referanseprogrammet og minimp3, prøve for prøve
Kodek: G.711, G.722, G.729, Opus, SpeexKontrollert mot en referanseG.711 og G.722 byte for byte og prøve for prøve med spandsp; G.729s dekoder prøve for prøve på alle syv av ITUs egne Annex A-testvektorer (bcg729 er ikke), dens encoder samarbeider med bcg729 på samme kvalitet (G.729 krever ikke at encodere matcher); Opus-pakker dekodet av libopus 1,6,1 og libopus-pakker dekodet som libopus gjør; Speex-pakker og lyd identisk til libspeex 1,2,1; Opus-samtaler med Android-appen
Kodek: AMR-NB, AMR-WBKontrollert mot en referanse, med en kjent gapAMR-WB dekoder som opencore-amr prøve for prøve, og på 3GPPs egne TS 26,174-testsekvenser matcher 3GPPs dekoder nøyaktig på 167 av 198 og er aldri målbart under; AMR-NB-encoder ramme for ramme med opencore-amr, men dens dekoder er nær, ikke nøyaktig (om lag 31 dB fra opencore). Begge kommer fra de fikserte goamr-bibliotekene
Kodek som føres uendret: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2Programvaretestetegne tester: tilbudt med deres båndbredde eller modus, svart, pakker begge veier byte for byte; ikke konvertert (ingen gratis referansekode BitVoice kan levere for G.722.1 og G.719). Ikke prøvd med en ekte Polycom eller romsystem enda
ISDN PRI og BRI, T1/E1Kontrollert mot en referanselibpri (Asterisks), begge sider; og på EC2 gjennom den ekte DAHDI 3,4-kernel-drivere (to spann koblet sammen i kernelen, Asterisk 20s chan_dahdi som telefonoperatør): samtaler begge veier med numre og navn, alle 23 kanalene samtidig, MOS 4,39. Ingen fysisk kort eller linje ennå
MFC-R2, E&MKontrollert mot en referanseOpenR2; MF-toner ved våre egne tester. Ingen ekte kort eller linje prøvd
SS7 (ISUP, MTP, linksett med flere linker med ombytte)Kontrollert mot en referanselibss7 (Asterisks chan_dahdi-bibliotek), ITU og ANSI. Ingen ekte operatør-forbindelse prøvd
Faks (T.30, T.38)Felttesteten faksoperatør, T38Fax (gratis prøve, fra EC2): BitVoice sender en faks over det offentlige telefonnettet til dens eget nummer og mottar den, begge over T.38 (2 sider, 14 400 bit/s, sidene ankom intakt; registrering med brukernavn og passord); og passerer en faks gjennom mellom en faks-maskin på en gateway (Asterisk med spandsp, som står for en) og T38Fax, ut og tilbake, 2 sider på 14 400 bit/s begge veier: en gang alle på G.711 (gatewayen nektet T.38) og en gang skiftet til T.38 på begge sider. spandsp (gjennom Asterisk 20) på EC2: mottar og sender over T.38 med feilkorreksjon, og passerer faks mellom to andre maskiner over T.38 og over G.711. Ingen hårdvar-faksgateway prøvd, og T38Fax ba aldri om T.38 selv, så en operatørs switch nektet av gatewayen ble ikke sett
Konfigurasjon: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberDataProgramvaretestetleverandørenes dokumenterte formater; ikke på ekte håndapparater
Skinny (SCCP)-telefoner, MGCP-gatewayKontrollert mot en referanseSkinny: telefoner fra det åpne mwicat/sccp-biblioteket, hver melding lest av Wiresharks dissektor, størrelser som Asterisks chan_skinny; MGCP: Yates MGCP-gateway (gjenopptak, midlertidige svar, bekreftelser; den har ingen analoge porter, så ingen samtale). Ingen Cisco-telefon eller gateway-hårdvar prøvd
Microsoft Teams Direct RoutingProgramvaretestetmot en simulert Microsoft-proxy som følger Microsofts publiserte Direct Routing SIP-regler (OPTIONS, Contact, user=phone, klient-sertifikat, overføringer Teams ber om ved REFER med x-m og x-t); ingen Teams-leietaker prøvd: Microsoft tilbyr ingen gratis (Teams Phone-lisenser)
Hotell (FIAS)Kontrollert mot en referansehver post BitVoice sender kontrollert mot Oracles publiserte FIAS 2,20,23-specifikasjon (lenke start, lenkeposter, innlegg, våkne svar); egne tester. Ikke ennå mot Opera selv
Tekstmeldinger, WhatsApp, Messenger, web-chatKontrollert mot en referanse (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp)Tekstmeldinger gjennom Twilio, Telnyx, Bandwidth, Vonage og TextMagic, og WhatsApp-tekstmeldinger, mal og mal-liste, mot mock-objekter bygget fra leverandørenes egne publiserte OpenAPI-specifikasjoner (Stoplight Prism, nektet alt som ikke er tillatt av spesifikasjonen; TextMagics er den som dens egen klient er generert fra). Vonages viste at nøkkelen hører hjemme i HTTP Basic, ikke lenger i skjemaet. SignalWire snakker Twilios API; Plivo, Flowroute, VoIP.ms og Messenger publiserer ingen spesifikasjon og er kontrollert mot stand-ins skrevet fra deres dokumentasjon. Ingen live-konto prøvd
CRM-kontakt-kort, Azure Blob, Azure Key VaultKontrollert mot en referanseEspoCRM (en ekte åpen kilde-CRM, i Docker) for kontakt-kort; Microsofts Azurite-emulator for Blob-opplasting (container-SAS, nektelser); Lowkey Vault for Key Vault med en managed identitet. Ikke ennå mot Azure selv eller en vert CRM
Spam-filtering: robot-test, ukjente ringere, spam-database, *32, forslagProgramvaretestetBitVoices egne tester: en operatør som ringer inn over SIP og trykker nøkler (RFC 4733) på robot-testen, består og mislykkes den; kjente, alltid-tillatte og nødsituasjon-ringer samtidig; spam-databasen mot en stand-in som svarer på måten Twilio dokumenterer sin Lookup med Nomorobo-tillegget (ingen Twilio-konto prøvd); *32 fra en skrivebords-telefon; forslag fra samtale-logger; innstillingene gjennom nettleser-tester. Ikke ennå prøvd mot ekte robocall eller en betalt database
iPhone- og Android-apperFelttestet (Android)Android: en Google Pixel 8 (Android 16, Wi-Fi) med den signerte utgivelsesbygget mot BitVoice på EC2 med et Let's Encrypt-sertifikat: parret via lenke, ringte med Androids samtale-varsel, svarte fra det, lyd begge veier, forblev tilkoblet med skjermen av og i bakgrunnen (dens pågående-samtale-varsel, Hang up); uten push ringte den ikke i bakgrunnen. En Google Pixel 11 (Android 17) i AWS Device Farm: parret, ringte, svarte, ringte ut; Opus, MOS 4,1. iPhone: appen (SwiftUI, CallKit, PushKit VoIP) bygges mot den nåværende SDK-en (Xcode 27) og serveren signerer Apple VoIP-pusninger (APNs, ES256); samme ekte-enhet-fikser som Android og en App Store-listing (ios/AppStore) er i. Begge apper er en fullstendig utvidelse: overføring (blind, over REFER), hold og en annen samtale, tastatur og mute, med Nylige, visuell Voicemail (med transkript), en Team-beskjeftiget-lampe, Kontakter, den ansattes Chat (kolleger med tilstedeværelse, direkte meldinger og rom, med en varsel i bakgrunnen og en push når appen er lukket), et video-rom-valg (lister SFU-rom med hvem som er i hvert, slutter seg som utvidelsen, vist som en video-samtale på telefon-samtaleskjermbildet) og en live AI-transkript på samtalen (AI.LiveCallTranscripts); overføring, hold, live-transkript, chat når en kollega, rom-liste, et rom slutter seg til og chat-pusj-form er hver dekket av en motor-nivå-, API- eller nettleser-test. På Pixel 8 (2026-10-30, feil-søk-bygget, EC2 med Let's Encrypt): ringte og svarte fra varselet, holdt og gjenopptok (Androids samtale-tilstand følger), ringte ut på Androids samtale-system, Opus begge veier med MOS 4,38 og ingen tap; sluttet seg til et video-rom med dens kamera (bedt om ved første bruk) og så en skrivebordskamera, begge live; en chat-melding i bakgrunnen varslet og åpnet Chat. Hold og overføring når den native samtale-skjermen (CallKit, Telecom). Ikke ennå kjørt på en iPhone eller sendt inn: push, system-samtale-skjermen og signing trenger vår egen Apple-utviklerkonto
911-profil, radio-konsoll, NG911 Core Services, ringers videoLabNENAs skjemaer og eksempeldata, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, en NIST P25-oppfanget (dens IMBE-lyd-rammer pakket ut som mbelib pakker dem ut: samme tonehøyde, harmonier, stemme og amplituder); aldri på en live ESInet, P25-system eller PSAP CAD, og ikke sertifisert
P25-fase-2-halvrate-lyd (AMBE+2)Ikke tilbudtpatentert til 2028
Ed448-signaturer (NENA)Ikke tilbudtikke i Gos standard-bibliotek, og BitVoice skriver ingen kryptografi selv; Ed25519 brukes
SS7-signalingsoverføring (STP), SCCP og TCAPKontrollert mot en referanseOsmoSTP 2,3,0 over M3UA/TCP med libosmo-sigtrans SCCP-eko-bruker bak det: UDT og XUDT begge veier, UDTS returnert, global tittel-oversettelse gjennom STP-en, en switch på et linksett som når ekoen over IP; TCAP mot libosmo-asn1-tcap begge veier. ITU bare; ingen SCTP, connection-orientert SCCP eller SCCP-håndtering; ingen ekte operatør prøvd
MFC-R2 Kina-variant (Kina nr. 1)Programvaretestethver signal på en samtale kontrollert mot Ciscos publiserte Kina-tabeller og anropsskema (KA, KD, gruppe B ved KD sendt, C og D-biter 11). OpenR2s Kina-variant er uenig med seg selv, så ingen program å teste mot; ingen ekte linje prøvd
ALI over PAM eller E2Ikke tilbudtPAM er Intrados eget protokoll med ingen publisert spesifikasjon; E2 (J-STD-036, NENA 05-001) kjører mellom en mobilposisjons-senter og ALI-databasen, ikke til en PSAP. BitVoice snakker anmodning-og-tekst ALI-lenker og HELD i stedet
Kapittel 3

Utvidelser

I nettgrensesnittet: /extensions

En utvidelse er et nummer for en person eller et skrivebord. Telefoner logger inn med utvidelsesnummeret og dets SIP-passord; samtaler til nummeret ringer alle telefoner som er logget inn 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

Legg til en utvidelse

  1. Åpne Utvidelser (kapittel 3) og trykk Legg til utvidelse. Det neste ledige nummeret og et sterkt SIP-passord er allerede fylt inn.
  2. Skriv inn personens navn (vises på andre telefoner når de ringer) og e-post (for voicemail via e-post).
  3. Fyll inn 911-locasjon: sted, etasje og rom. Den sendes med nødsamtaler.
  4. Velg hva som skjer Hvis ingen svarer: voicemail som standard, eller en annen utvidelse, en gruppe eller en meny.
  5. Lagre. Utvidelsen kan logge inn med en gang.

Feltene

FeltHva det gjør
Nummer2 til 8 siffer; ingen andre utvidelser, grupper, køer, rom eller funksjonskoder kan ha det
SIP-passordhva telefonen logger inn med; minst 12 tegn; Generer lager et nytt
Ring isekunder før Hvis ingen svarer skjer (25 som standard)
Ekstern kaller-IDnummeret som vises på utgående samtaler; tom brukes trunkens
Kan ringe eksterne numreav slår telefonen til interne samtaler og nødnumre
Ta opp samtalernår Innstillinger bare tar opp valgte utvidelser
Hot desken delt telefon som blir hvem som logger inn på den
Krypter samtaler til denne telefonenmediakryptering (SRTP); bruk det med TLS så nøklene forblir private
Avdelinggrupperer denne utvidelsens samtalekostnader

Følg meg, plukk opp og intercom

Hver persons egen samtalebehandling er i sin egen boks på utvidelsen:

Videreformidling nå

Under innstillingene vises og endres Videreformidling nå hva personen har satt fra telefonen eller ansattportalen: ikke forstyr, og videreformidling av hver samtale, samtaler mens busy, og samtaler som ikke svarer. Disse er live-tilstand, ikke konfigurasjon: å endre dem gjør ingen revisjon.

Hva som er koblet til

Koblete enheter

En åpen utvidelse viser hver enhet som er logget inn som den: telefonens merke og modell, hvordan den kobler til (UDP, TCP, TLS eller nettleseren) og siden når. Adressen og porten som skal gis til en telefon vises der også.

Kapittel 4

Koble telefoner

I nettgrensesnittet: /phones

Enhver SIP-telefon eller app fungerer: peke den mot denne serverens adresse og port 5060, med utvidelsesnummeret som bruker og dets SIP-passord. Skrivebords-telefoner fra de fire store produsentene settes opp automatisk i stedet, så ingen skriver et passord inn 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 oppsett (provisioning)

  1. På Telefoner (kapittel 4) trykk Legg til telefon og skriv inn telefonens MAC-adresse (på en sticker underside) og utvidelsen den tilhører.
  2. Velg merke: Yealink, Poly, Grandstream (inkludert HT-analog-adaptere), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo eller CyberData.
  3. Fortell telefonen hvor BitVoice er: i din DHCP-server, sett valg 66 til provisioning-adressen som vises på skjermen, så hver telefon på nettverket finner den selv; eller skriv inn samme adresse på telefonens egen nettside, under auto-provisioning.
  4. Start telefonen på nytt. Den henter sin fil over HTTPS, logger inn og dens linjetaster viser hvem som er på telefonen.

HTTPS eller vanlig HTTP. Telefoner henter sine filer over HTTPS når de kan. Noen eldre telefoner kan ikke bruke HTTPS i det hele tatt, og mange stoler ikke på sertifikatet BitVoice lagde selv; for disse viser skjermen også en vanlig http://-adresse på samme port. Vanlig HTTP er bare for disse filene: hver andre side går fortsatt til HTTPS. Over vanlig HTTP går telefonens SIP-passord ukryptert over nettverket, så hold det til et pålitelig kontornettverk, eller installer et sertifikat fra en myndighet og slå på HTTPS bare for telefoner.

Filen inneholder utvidelsen, dets passord, tidszonene, kodekene, busy-lampe-tastene og adressen til denne serveren. Provisjonering er beskyttet av et brukernavn og passord telefonene får en gang.

ProdusentTestede modellerHva den får
YealinkT3x, T4x, T5xkonto, BLF-taster, tid, kodeker
PolyVVX, Edge Edet samme, i Polys eget format
GrandstreamGRP, GXP, HT802/814konto per port på adaptere
SnomD7xxkonto, taster, tid

Disse produsentene er også provisjonert, med filer skrevet fra hver produsents dokumenterte format, men ikke ennå prøvd på deres enheter (Telefoner-skjermen markerer dem som uprøvd):

MerkeModellerFilen enheten ber om
FanvilX og V-seriedens MAC-adresse .cfg
Cisco6800, 7800, 8800 multiplatform (3PCC), SPA-adapteredens MAC-adresse .xml (bedriftsfirmware trenger multiplatform-firmware først)
Mitel (Aastra)6800, 6900 SIPdens MAC-adresse .cfg, i store bokstaver
SangomaS-serieFanvil-formatfilen
Algohøyttalere for høytaleranlegg, adapterealgop og dens MAC-adresse .conf
CyberDatahøyttalere, intercom, høyttaleradapteredens MAC-adresse .xml

Hver får sin konto, serveren (og reserve-serveren, med flere servere), transport og kryptering, og voicemail-nummeret der det har ett. Sett Algo- og CyberData-høyttalernes utvidelser til Høyttaler slik at samtaler til dem besvares med en gang.

Telefoner uten provisioning

Softphone og andre merker tar de samme tre ting: server (denne datamaskinens adresse, port 5060, eller 5061 med TLS), bruker (utvidelsesnummeret) og passord (dens SIP-passord). Helse lister telefoner som prøvde et feil passord; etter noen forsøk blir adressen blokkert en stund (se Sikkerhet (kapittel 60)).

Nettelefonen

Telefonikonet nederst på hver skjerm gjør denne nettleseren til en telefon for en utvidelse, med din mikrofon og høyttalere. Den bruker WebRTC: lyden er kryptert fra ende til ende, og den fungerer gjennom de fleste brannmurer uten noen innstilling.

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 (kapittel 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 trenger ingen pålogging av seg selv: softtelefonen logger på med SIP, og mislykkede påloggingsforsøk og for mange forespørsler teller for dens egen adresse, som for enhver telefon. En softtelefonside betjent fra en annen nettside må stole på denne serverens sertifikat (bruk Let's Encrypt), og nåværende Chrome spør brukeren før en offentlig nettside kan nå en server på det lokale nettverket.

Testet med to uavhengige biblioteker, JsSIP 3.13 og SIP.js 0.21: to softtelefoner av hver registrerer seg, ringer hverandre og hører hverandre gjennom BitVoice. Andre softtelefoner (Linphones nett-klient, Zoipers) snakker samme protokoll, men har ikke blitt prøvd.

TURN, for nettverk som blokkerer UDP

Noen nettverk (hoteller, gjest-Wi-Fi, strenge bedrifts-brannmurer) lar ingen UDP ut, eller skjuler datamaskiner bak NAT som WebRTC ikke kan komme gjennom. For disse, slå på TURN-server i Innstillinger (kapittel 14): BitVoice kjører da sin egen TURN-server (RFC 8656) på port 3478 (UDP og TCP) og, med denne serverens sertifikat, på port 5349 over TLS. Browser-telefoner, stab-telefon og samtale-lenker får midlertidige legitimasjoner for det, og bruker det når de ikke kan nå mediaportene direkte; lyden er fortsatt kryptert fra ende til ende, og BitVoice relayer den bare til sine egne adresser, så ingen kan bruke det til å nå noe annet.

Åpne TURN-porten, TLS-porten og relay-portene (49152 til 49407 med mindre du endrer dem) i brannmuren. TURN over TLS trenger et sertifikat nettleserne stoler på for navnet de bruker, som ett fra Let's Encrypt (kapittel 14): inntil det er ett, tilbyr BitVoice det ikke til nettleserne (de ville prøve det, feile og vente); og setter det tilgjengelig så snart sertifikatet ankommer; sett dets port til 443 på en server med en ledig adresse for å komme gjennom brannmurer som bare tillater HTTPS.

Endring av nettverk under et oppkall

En telefon som flytter til et annet nettverk under et oppkall (ut av kontorets Wi-Fi og inn på et mobilnett, eller en bærbar datamaskin fra ett Wi-Fi til et annet) får en ny adresse, og den gamle kommunikasjonsveien stopper å bære lyd. Web-telefoner og BitVoice-appene merker dette selv: når nettleseren sier at nettverket har endret seg, eller kommunikasjonsveien til oppkallet stopper å svare i to sekunder, starter telefonen ICE på nytt (RFC 8445 9). Den tilbyr nye ICE-legitimasjoner for oppkallet den har, og BitVoice svarer med nye legitimasjoner av sin egen og sjekker den nye kommunikasjonsveien, og oppkallet flyttes til den uten å måtte ringe på nytt. Krypteringen fortsetter med de samme nøklene. Mens dette skjer, vises oppkallet som Gjenkobler…; på en kommunikasjonsvei som fortsatt fungerer, er det ingen gap, ettersom den gamle kommunikasjonsveien bærer oppkallet til den nye kommunikasjonsveien er klar. SIP-softphone over WebSocket (JsSIP, SIP.js) gjør det samme ved å sende en ny INVITE med nye ICE-legitimasjoner. Ingen innstillinger må aktiveres, med BitVoice som ICE-lite eller bak en NAT.

BitVoice bak NAT

TURN-serveren ovenfor hjelper nettlesere på strenge nettverk å nå en BitVoice som har en offentlig adresse. Når BitVoice selv ikke har noen (i en bedrift bak en router uten portvidereføring, eller i et skytjenestenettverk uten offentlig adresse på maskinen), slå på Dette serveren er bak NAT under BitVoice bak NAT i Innstillinger (kapittel 14). BitVoice deltar deretter fullt ut i ICE (RFC 8445) i stedet for å svare på én adresse (ICE-lite):

Den ansattes telefon

Åpne #/phone på enhver datamaskin eller mobilnettleser: personer logger inn med sin utvidelse og SIP-passord, uten en administrator-konto. Det er en fullstendig telefon: taste, svare, holde og overføre og tastaturet. For deres egen videreføring og voicemail bruker de ansattes portalen på #/me (se Ansattes portalen (kapittel 33)).

Mobilappene

BitVoice-appene for iPhone og Android kobles fra utvidelsessiden med en QR-kode. Oppkall vekker appen gjennom Apples og Googles push-tjenester, så den ringer selv når den er lukket (én gang push er konfigurert; se under).

Kapittel 5

Skinny-telefoner og MGCP-gateway

I nettgrensesnittet: /desk-phones

Telefoner og gateway som ikke snakker SIP kan fortsatt brukes. Skinny-telefoner og MGCP-gateway (under Samtaler) tar to eldre protokoller:

Hver Skinny-telefon eller MGCP-linje er en mer enhet til dens utvidelse: den ringer med utvidelsens andre telefoner, ringer ut som utvidelsen og vises i utvidelsens enheter. Siden viser hver enkelt enhets tilstand.

Hva fungerer

Hold, overføring og konferanse gjøres fra utvidelsens andre telefoner for øyeblikket, og en Skinny-telefons andre linje brukes ikke.

Sikkerhet

Ingen av protokollene har passord. Skinny-telefoner aksepteres bare fra det lokale nettverket og bare når de er listet; MGCP-kommandoer følges bare fra gatewayens adresse (eller, uten en, fra det lokale nettverket). Hold begge portene utenfor internettet.

En gateway som fortsatt arbeider med en kommando, kan svare "100 Trying" først: BitVoice venter deretter lengre før den sender kommandoen igjen og bekrefter det endelige svaret (000), slik RFC 3435 ber om. En port som gatewayen ikke vil overvåke, viser gatewayens egen nekt på siden, slik som gatewayen nektet å overvåke porten: 507 Unsupported Functionality fra en mediegateway uten analoge porter.

Hvordan de testes

Kapittel 6

Telefoni-kort

I nettgrensesnittet: /cards

Et telefoni-kort i BitVoice-computeren (Digium, Sangoma, OpenVox og andre kort med Linux DAHDI-drivere) kan bære analoge telefoner og telefoniselskapslinjer. Et separat program, bitvoice-dahdi, driver kortet og kobler portene til BitVoice over computerns egen nettverkskobling, så BitVoice selv aldri berører kernel-drivere og et kortproblem ikke kan stoppe telefonisystemet.

Konfigurasjon

  1. Installer DAHDI-drivere og konfigurer portene som vanlig i /etc/dahdi/system.conf (fxoks=1-4 for porter med telefoner, fxsks=5-8 for porter med linjer, og landets toner i loadzone og defaultzone), og kjør dahdi_cfg.
  2. Under Telefoni-kort (under Samtaler) slå på Bruk telefoni-kort. En token blir laget; kopier den inn i en fil som bare root kan lese, som /etc/bitvoice/cards.token.
  3. Legg til hver port etter sin DAHDI-kanalnummer: en telefon-port (FXS, en telefon, faks eller dørtelefon plugges inn) med dens utvidelse, eller en linje-port (FXO, en telefoniselskapslinje) med linjens nummer. Velg A-lov for Europa og de fleste deler av verden, µ-lov for Nord-Amerika og Japan.
  4. For linjer, legg til en trunk med protokollen Telefoni-kort-linjer på Trunker, og ruter numre til den som til noen trunk; innkommende ruter matcher hver linjes nummer.
  5. Start bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token som en tjenestebruker som kan åpne /dev/dahdi. Den er i Linux-nedlastingen ved siden av bitvoice. Siden viser om den kjører og hver ports tilstand; endringer når den innen ti sekunder. En kanal en annen program fortsatt holder (eller en dahdi_cfg ikke har konfigurert ennå) prøves igjen hver to sekunder, så rekkefølgen ting starter i har ingen betydning.

Hva fungerer

Digitale linjer: T1 og E1 PRI

En T1 (23 samtaler på en gang) eller E1 (30) linje kjører som primær rate ISDN plugges inn i et digitalt kort (Digium/Sangoma TE-serie, OpenVox D-serie og lignende). BitVoice snakker PRI selv (Q.921 på D-kanalen, og Q.931 samtalekontroll), så hver samtale kommer inn med nummeret valgt og caller ID, går ut med utvidelsens caller ID, og telefoniselskapet sier når den fjerne enden svarer, ringer eller er busy.

  1. I /etc/dahdi/system.conf, sett spann opp for PRI som vanlig (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 for en T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 for en E1), og kjør dahdi_cfg.
  2. Under Digitale linjer på Telefoni-kort (kapittel 6), legg til spann: T1 eller E1, dens første DAHDI-kanal, om BitVoice er PBX på telefoniselskapets linje (vanlig) eller nettverket (en annen PBX kobler til BitVoice som om til telefoniselskapet), og switch-typen telefoniselskapet ga deg.
  3. Legg til kort-trunk på Trunker hvis det ikke finnes ennå, og innkommende ruter for numrene (DIDs) telefoniselskapet sender.

Utgående samtaler tar en PRI først, de analoge linjene etter; en busy-nummer, en feil-nummer eller ingen ledige kanal kommer tilbake som busy, ikke funnet eller utilgjengelig, som nettverket sier. Siden viser om hver spanns D-kanal er opp og hvor mange av dens kanaler er i samtaler. T1-kanaler konfigurert med robbed-bit-signaling (fxsks, fxoks) fungerer som de analoge portene ovenfor.

Navn, videreformidling og overføring. En ringers navn kommer inn med samtalen (fra Visnings-elementet, eller på Nasjonal ISDN-2 fra navnet nettverket sender som en fasilitet) og telefoner viser det; utgående samtal sender utvidelsens navn på samme måte. Nummeret et samtal ble videreformidlet fra kommer inn som dets omdirigeringsnummer (BitVoice sender det videre som SIPs Diversion, med årsaken: opptatt, ikke besvart, ubetinget), og når en utvidelses videreformidling sender et samtal ut på PRI, følger utvidelsens nummer med som omdirigeringsnummer, så den fjerne enden og telefon-selskapet vet hvem som ringer. Når et eksternt samtal besvares, forteller BitVoice nettverket nummeret som besvarte (det tilkoblede nummeret).

Slå på Overføring gjennom telefon-selskapet på en spann (brukerside, Nasjonal ISDN-2, 5ESS, DMS-100 eller EuroISDN) og når noen overfører en ringer på denne linjen til et annet nummer på samme linje, ber BitVoice nettverket om å koble de to samtalen selv: To B-kanal-overføring på Nasjonal ISDN-2 og 5ESS-linjer, Release Link Trunk-overføring på en Nortel DMS-100, eksplisitt samtale-overføring (ringeren holdes, så kobles) på EuroISDN. En DMS-100 gir kun en overførings-identifikator til samtal som BitVoice plasserer, så der må en av de to samtalen være et utgående samtal (det vanlige tilfelle: en ringer videreformidlet eller overført til et eksternt nummer). Begge kanalene frigjøres så snart nettverket har koblet dem. Linjen trenger tjenesten (spør telefon-selskapet om "to B-kanal-overføring" eller "ECT"); hvis nettverket nekter, fungerer overføringen likevel, gjennom BitVoice, ved å bruke begge kanalene som før.

Prøv det uten en kort

DAHDI's egne dynamiske spann kan stå inn for en kort: to spann koblet sammen inne i kjernen, BitVoice på en og en annen PBX (Asterisk's chan_dahdi, for eksempel) som telefon-selskapet på den andre. Last 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

La det siste nummeret (tidsstyring) være 0 på begge: DAHDI's egen tidsstyring driver dem da. Spann som er hverandres tidsstyringskilde tikker bare når den andre sender, og D-kanalen kommer og går. Legg til spann 1 her som en T1 (første kanal 1), og sett opp den andre PBX-en som nettverksiden på kanalene 25 til 48.

Grunnrate ISDN (BRI)

En BRI bærer to samtal på samme tid (B1 og B2) og er vanlig i Europa for små kontorer; den kobler også ISDN-bordtelefoner. BRI-kort (Digium B410P, HFC-baserte kort fra OpenVox, Junghanns og andre) fungerer gjennom DAHDI som PRI-kortene gjør: i /etc/dahdi/system.conf er spann span=1,1,0,ccs,ami med bchan=1-2 og hardhdlc=3. Legg til det under Digitale linjer med BRI som linjetypen; kanalene er B1, B2 og deretter D-kanalen.

Navn, videreformidling, overføring på EuroISDN (eksplisitt samtale-overføring) og råd om avgift fungerer på en BRI som på en PRI.

E&M-trunker på en T1

En T1 hvis kanaler er satt opp som E&M (robbed-bit-signalling: e&m=1-24 i /etc/dahdi/system.conf) gir 24 trunker, hver signalisert på sin egen: tilkoblingslinjer til en annen PBX, kanalbanker og langdistanse-leverandørenes Feature Group D-trunker. Under Digitale linjer, legg til en T1 og sett Signalling til E&M, deretter:

Et utgående oppkall tar en ledig trunk, besetter den, venter på startsignalet (ingen blink innen fem sekunder er "ingen blink", og oppkallet feiler), sender nummeret og besvares når den fjerne enden går av hook (svarsovervåking). Et innkommende oppkall besvares ved å gå av hook når utvidelsen besvares.

CAMA-trunker (911, lab-spor). En PSAP som fortsatt mates av en 911-selektiv router over CAMA-trunker setter Startsignal til CAMA (911-trunk). Routeren besetter, BitVoice blinker, og routeren sender oppkallers nummer (ANI) i MF: forbedret CAMA som KP, to informasjons-siffer og alle ti siffer, ST; tradisjonell CAMA som KP, én nummerplan-siffer og syv siffer, ST. For tradisjonell CAMA, list opp under Områdeskoder for NPD 0 til 3 områdeskoden hver nummerplan-siffer står for (routerns konfigurasjonsark har dem); en siffer over 3 betyr at routeren ikke kunne identifisere linjen. Hvert oppkall går til innkommende rute for 911 som et 911-oppkall, med ANI som tilbakekallingsnummer, og BitVoice ser opp dens plassering etter dette nummeret (se 911-oppkall (kapittel 77), Plasseringsoppslag (ALI)). Informasjons-sifferne vises på oppkallet som CAMA (II 00).

MFC-R2 på en E1

I Latin-Amerika, deler av Asia og Afrika, er E1-linjer ofte MFC-R2 i stedet for ISDN: 30 kretser, hver med sine linjesignaler på A- og B-biter i timeslot 16 (ITU-T Q.421) og nummer, kategorien til oppringeren og oppringerens nummer utveksles i multifrekvens-toner (Q.441), frem og tilbake. Sett opp spannet som CAS i /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan fjernet), så under Digitale linjer legg til en E1, sett Signalling til MFC-R2 og velg Landvariant: ITU-T, Argentina, Brasil, Kina, Colombia, Tsjekkia, Ecuador, Mexico, Filippinene eller Venezuela. Hver land tilordner noen signaler forskjellig (hva som betyr beskjeftiget, hvordan slutten av nummeret fortelles, Mexicos ekstra gruppe C); varianten holder disse. Kina nr. 1 ber om oppringerens klasse (KA) og nummer etter nummeret som ble valgt, sender samtaletypen (KD: 3, en lokal samtale) sist, leser beskjeftiget og ledig etter KD den sendte, og setter både C- og D-biter til 1: der, skriv cas=1-15:1111 og cas=17-31:1111.

Hver krets bærer samtaler begge veier. En innkommende samtale når innkommende ruter med nummeret som ble valgt og oppringerens nummer (skjulte numre kommer inn som anonyme); en beskjeftiget utvidelse eller et feil nummer signaliseres tilbake som beskjeftiget eller ikke tilgjengelig, slik varianten sier. En utgående samtale sender nummeret og utvidelsens oppringer-ID, eller "nummer skjult"-signalet når oppringeren skjuler det.

MFC-R2-signalingen testes mot OpenR2 (R2-biblioteket Asterisks chan_dahdi bruker), i hver variant som tilbys og i begge retninger, inkludert et oppkall som avvistes som beskjeftiget; E&M mot BitVoices egne simuleringskanaler.

SS7

En bærer kan overføre T1-er eller E1-er signalisert av SS7 i stedet for ISDN: talekretsene bærer oppkall, hver navngitt av en kretsidentifikasjonskode (CIC), og en timeslot bærer signallinken til bærerens signaloverføringspunkt eller switch, over hvilken ISUP setter oppkallene opp. BitVoice er da et signalpunkt i seg selv, med en punktkode som bæreren tilordner. I /etc/dahdi/system.conf sett opp spannet som rene kanaler med signallink-tidsdelen som mtp2 eller hardhdlc (timeslot 16 på en E1, 24 på en T1). Under Digitale linjer legg til spannet, sett Signalling til SS7 (ISUP) og gi:

Linksett med flere linker. Spann med samme variant, punktkoder og nettverk er ett linksett (inntil 16 linker): hver spanns signallink er en av dens linker, og trenger sin egen Link-kode, og hver spanns kretser tilhører det (deres CIC-er kan ikke overlappe). Trafikken deles mellom linkene i tjeneste ved meldingenes SLS, så en oppkalls meldinger holder seg til en link. Når en link feiler (linktesten blir ikke besvart, eller meldinger blir ikke bekreftet), skifter trafikken over til de andre (Q.704: COO og COA, meldingene den fjerne enden ikke fikk sendt på nytt på en annen link; eller, uten svar i tide, ved tid), oppkallene på hver spann fortsetter, og Telefonkort sier hvor mange linker er i tjeneste og hvordan denne spanns linker står. Når linken kommer tilbake og testes, skifter trafikken tilbake (CBD og CBA). Bare når alle linker er nede, er linksettet nede. Prøvd mot libss7 med to linker, en kuttet midt i et oppkall: libss7 tar nettverksledelsesmeldinger bare på linken deres SLS navner, så en omstillingmelding om den kuttete linken (sendt på den andre, som Q.704 har det) blir droppet der, og begge ender omstiller ved tid i stedet, som fungerer; mellom to BitVoice-ender går det via COO og COA.

Når lenken kommer opp, justerer BitVoice den (MTP nivå 2, med nødsituasjonsperioden som en enkelt-lenke-lenkesett bruker), tester den med lenketesten (SLTM/SLTA), bytter trafikken om igjen og nullstiller hver sirkuit (GRS). Samtaler som når inn til innkommende ruter med nummeret som ble valgt, samtaleres nummer (med unntak av anonyme), nummeret en samtale ble videreformidlet fra og, på ANSI, samtalerens navn; samtaler som går ut bærer utvidelsens samtale-ID og navn. Bærerens blokkering eller nullstilling av sirkuitene adlydes. Ved dobbel beslag tar enden med det høyere punktkoden beholdene sirkuitene, som Q.764 sier, og BitVoice tar de sirkuitene den beholder først.

SS7 testes mot libss7 (SS7-biblioteket Asterisk's chan_dahdi bruker), ITU og ANSI: justering, lenketest, trafikkgjenopptak, sirkuittnullstilling, samtaler begge veier med numre og navn, frigjøring, opptatt og blokkering; og BitVoice mot seg selv med rammer tapt på lenken (sendt igjen av MTP2-feilkorreksjon) og en dobbel beslag. Signaaloverføring (som en STP for andre) og SCCP/TCAP (nummerportabilitetsoppslag, tollfrie oversettelser) tilbys ikke: en PBX er en endepunkt, og disse er bærerens.

Signaloverføringspunkt (STP). bitvoice-dahdi kan også være et STP for sine ITU SS7-lenkesett: slå på Signaloverføringspunkt (SS7) under digitale linjer. Dets STP-punktkode er spansenes egen. Med Send meldinger for andre punktkoder, går en melding fra ett lenkesett for det nærmeste punktet i et annet til det lenkesettet, og en for en annen punktkode går til IP STP (M3UA): en IP STP eller signalgateway på vert:port, nås over M3UA (RFC 4666) over TCP, hvis meldinger for lenkesettets punkter kommer tilbake samme vei (BitVoice registrerer sin punktkode og de bak den, med mindre en Rutingskontekst er gitt). Global titteloversettelse sender SCCP-meldinger adressert til STP ved global tittel til punktkoden og underordnet system for den lengste matchende prefikset, som en SCCP-relé gjør. En melding som ikke kan leveres, kommer tilbake til avsenderen som en UDTS eller XUDTS når den ba om det: ingen oversettelse, ingen rute (MTP-feil), ingen underordnet system her, eller dens hoppteller er gått ut. STPs status viser M3UA-lenken og hvor mange meldinger den har sendt videre, oversatt og returnert. Dets SCCP (UDT, XUDT, UDTS, XUDTS) og TCAP (Start, Fortsett, Slutt, Avbryt, dialoger og komponenter) er sjekket mot Osmocom: OsmoSTP over M3UA, libosmo-sigtrans SCCP-ekko-bruker bak det, og libosmo-asn1-tcaps eget TCAP-koder begge veier. SCTP er ikke tilbudt (Go har ingen): M3UA går over TCP, som OsmoSTP og mange IP STP-er tar. Koblingsorientert SCCP, ANSI-lenkesett og SCCP-håndtering (SST, SSA) er ikke tilbudt.

Råd om avgift. På en EuroISDN-linje, slå på Råd om avgift og BitVoice ber telefonsselskapet, med hver samtale ut, om å si hva det koster: under samtalen (AOC-D) og ved dens slutt (AOC-E), i penger eller i avgiftsenheter. Den siste figuren havner på samtaleposten (belastet EUR 1,50 i Historikk, og ved siden av samtalen på Kostnader); når det er i din valuta (angitt på Kostnader) er det samtalekostnaden, i stedet for figuren fra stammeprisene. Telefonsselskapet må tilby tjenesten på linjen. SIP-stammer kan sende samme råd, som 3GPP AOC XML i en INFO eller BYE, og BitVoice beholder det på samme måte.

PRI-koden testes mot libpri (ISDN-biblioteket Asterisk bruker), både som brukersiden og som nettverksiden, for nasjonale ISDN-2 og EuroISDN-samtaler, navn, omdirigering og tilkoblede numre, eksplisitt samtaleoverføring, to B-kanaloverføring og DMS-100-frigjøringslenkeanmodningsbyte for byte (med libpri's PBX koblet til BitVoice som DMS-100), og råd om avgift i begge retninger; og på BRI, punkt-til-punkt og multipunkt, som terminal og som nettverk (TEI-tildeling, samtaler kringkastet til bussen, numre valgt tall for tall).

Ikke ennå: samtale-ID vist på analoge telefoner eller lest fra analoge linjer, hook flash og ekko-kansellering utover hva kortet selv gjør.

Kapittel 7

Trunker

I nettgrensesnittet: /trunks

En trunk er din konto hos et telefoniselskap. Den bærer samtaler til og fra eksterne numre. De fleste er SIP-trunker; en Asterisk- eller FreePBX-server, eller en IAX2-tilbyder, 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

Legg til en SIP-trunk

  1. På Trunker (kapittel 7) trykk Legg til trunk.
  2. Skriv inn provider-serveren telefoniselskapet ditt ga deg (sip.provider.com), og porten hvis den ikke er 5060.
  3. Skriv inn brukernavn og passord, og slå på Registrer hvis provideren sier det (de fleste gjør det).
  4. Lagre. Innen noen sekunder vises trunken som registrert; hvis ikke, vises årsaken ved siden av.

Trunkhelsevurdering

Med to eller flere trunker på en utgående rute, vurderer BitVoice hver 15. sekund om hver trunk brukes på riktig måte eller prøves etter de andre trunkene. En trunk flyttes bak de andre når dens provider slutter å svare på keep-alive-sjekker, eller når dens siste utgående samtaler feiler ett etter ett på providerens side (Feilende samtaler på rad innen Innen (minutter), Innstillinger, Trunkhelsevurdering), og en annen trunk fungerer. Den flyttes ikke på grunn av en feilende keep-alive alene mens samtaler via den fortsatt kommer frem; og når alle trunker feiler samtidig, er det sannsynligvis dette systemets eget internett-tilknytning som er årsaken, så ingen trunker flyttes. En endring krever to vurderinger på rad (30 sekunder), så en trunk vil aldri flakke. En trunk tas aldri helt ut: den prøves fortsatt når de andre feiler, så en nødsamtale har alltid alle mulige utveier. Trunkens side viser vurderingen og dens årsaker; en samtale som gikk ut en annen vei viser det i sin journal.

  1. Legg til en inngående rute for ditt nummer og en utgående rute som bruker denne trunken (Samtale-ruting (kapittel 8)).
FeltHva det gjør
TransportUDP (vanlig), TCP eller TLS for kryptert signalisering
Registrerlogg inn hver få minutter, så provideren vet hvor den skal sende samtaler
Autentiseringsbrukernavnbare når provideren gir et eget
Fra domenedomenet i brukerens adresse, når provideren ber om det
Caller IDnummeret som vises på utgående samtaler; en utvidelses eget caller ID vinner
Også aksepter samtaler fraproviderens andre adresser eller nettverk som sender samtaler inn. Samtaler fra denne datamaskinen fra telefoner som er registrert her, og den innebygde samtale-generatoren, tas aldri som trunkens, selv når den tillater 127.0.0.1
Samtaler på ganggrensen din plan tillater; samtaler utover dette går til neste trunk i ruten
Krypter mediaSRTP, for providere som støtter det. En provider som svarer uten det, får likevel samtalen, ukryptert, og Samtale-historikk markerer samtalen Ikke kryptert
Krever kryptering(med Krypter media) avvis hva provideren ikke vil kryptere: en utgående samtale som provideren svarer uten SRTP, avsluttes, og en inngående samtale som provideren sender uten SRTP, avvises; Samtale-historikk sier hvorfor
Codecla det være på *samme som Innstillinger*, eller velg hva denne provideren støtter, best først
Tarifferhva samtaler koster etter nummerprefiks, for Kostnader (kapittel 54)

Sky-providere

Start fra fyller inn Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector eller Azure Communication Services, med en notis om hva som må settes på deres side. Teams beskrives i sin egen kapittel (Microsoft Teams (kapittel 67)).

IAX2-trunker til Asterisk og FreePBX

Velg IAX2 som protokollen for å koble til en annen Asterisk- eller FreePBX-server, eller en IAX2-provider. IAX2 bærer signalisering og lyd på én UDP-port, 4569, som gjør det enkelt å gå gjennom brannmurer.

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 en peer som denne alt som trengs:

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

IAX2-port 4569 åpnes bare når den første IAX2-trunken legges til, så en Asterisk som kjører på samme datamaskin holder det til da.

H.323-trunker

Velg H.323 som protokollen for eldre gateways, PBX-er og video-konferansesystemer som snakker H.323, men ikke SIP. Gi gateways adresse (port 1720); samtaler aksepteres bare fra den. Samtaler settes opp med Hurtig-tilkobling og G.711 (µ-lov eller A-lov; trunkens codec-liste kan begrense det til ett), og lyden går rett mellom gatewayen og BitVoices media-porter. BitVoice konverterer til hva den andre parten bruker.

H.323 her er bevisst liten: ingen gatekeeper (RAS), ingen H.245 (så en gateway som ikke vil bruke Hurtig-tilkobling, får ingen samtale, og blir fortalt det), ingen video, ingen H.235-sikkerhet. Caller ID kommer fra Q.931-oppringer-nummer eller brukerens valgte-nummer-alias, navnet fra display eller dets H.323-ID. BitVoices H.225.0- og H.245-koding ble sjekket mot en uavhengig ASN.1-koder, men ikke ennå mot gateway-hardware.

Videreformidde anrop

Når et anrop når deg allerede videreformidlet (noen andres nummer er videreformidlet til ditt, eller en Teams-bruker), sier leverandøren det med History-Info (RFC 7044) eller Diversion (RFC 5806). BitVoice leser begge: Anropshistorikk (kapittel 47) viser videreformidlet av nummeret som sendte det videre, med nummeret som først ble ringt og grunnen i dets tips, anropssporingen sier det med ord, og anropsopptaket beholder det (forwardedFrom, original, forwardReason). Når leverandøren ber om at historikken skal være privat, beholdes ikke numrene.

Når en utvidelse videreformidler et anrop ut gjennom en trunk (videreformidler alle, når det er opptatt, når ingen svarer), fortelles leverandøren hvilken utvidelse som videreformidlet det og hvorfor, så den kan vise ditt nummer og fakturere riktig konto: som standard med begge headerne, og med historikken anropet kom inn med beholdes og videreformidlingen legges til. En leverandør som er forvirret av en av dem kan settes til den andre under trunkens Avansert, Videreformidde anrop sier hvis de er med. På en T1/E1-telefonikort blir hver header nettverkets omadresseringsnummer.

Hva status betyr

StatusBetydning
registrertlogget inn; anrop kan komme inn
klarregistrerer ikke, eller IAX2 venter på anrop
utilgjengeligserverens navn er ikke i DNS, eller ingenting svarer
feiletleverandøren avviste innloggingen; grunnen vises
reserveservere deler denne trunken en etter en og en annen holder den
Kapittel 8

Anropsruting

I nettgrensesnittet: /routes

Anropsruting avgjør to ting: hvor anrop fra utsiden går, etter nummeret som ble ringt, og hvilken trunk anrop til utenfor numre bruker.

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

Innkommende ruter

Hver innkommende rute matcher nummeret som ble ringt (eller noe nummer) og sender anropet til en destinasjon: en utvidelse, ringgruppe, kø, meny, timeplan, skript, konferanserom, AI-resepsjonist eller voicemail. Numre matcher i noen form: +1 212 555 0100, 2125550100 og 12125550100 er det samme.

Utgående ruter

Utgående ruter matcher hva folk ringer, etter mønster, og sender det til trunker i rekkefølge: hvis den første er nede eller full, prøves den neste.

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
Xnoen siffer
Z1 til 9
N2 til 9
[1-5]ett av en sett
. på sluttenett eller flere flere siffer
NXXNXXXXXXet ti-sifret nordamerikansk nummer
1NXXNXXXXXXdet samme med 1 foran
011.et internasjonalt anrop fra USA

Nødanrop

Nødanroppene fungerer alltid. En rute som navngir nummeret nøyaktig, brukes først; med ingen, prøves hver arbeidende trunk i tur og orden. Et anrop til dem avvises aldri for en utvidelses begrensninger, en vert organisasjons begrensninger eller en manglende rute. Helse advarer når ingen trunk kan bære dem.

Kapittel 9

PIN-sett

I nettgrensesnittet: /pin-sets

Et PIN-sett (kapittel 9) er en liste over PIN-koder en utgående rute ber om før den ringer ut: for å holde internasjonale eller langdistanse-samtaler til personer med en PIN, eller for å fakturere samtaler til kunder og prosjekter etter deres kode.

  1. Legg til PIN-sett og liste ut dets PIN-er (4 til 10 sifre hver).
  2. Slå på Behold PIN-en i samtaleposten for å skrive PIN-en brukt inn i hver samtalepost som dets konto-kode (konto-kode-kolonnen i CSV, syslog og PostgreSQL samtale-post-utdata, og account i API-et).
  3. På Samtale-ruting (kapittel 8), åpne en utgående rute og velg settet under Spør om en PIN.

Ringere som ringer et nummer som ruten tar, hører "Vennligst tast inn din PIN, deretter trykk på hash", taster den inn, og samtalen går ut. Tre feil PIN-er avslutter samtalen, og forsøket logges som et sikkerhets-hendelse. Nødstilfeller ber aldri om en PIN, uansett rute de tar, og videre-samtaler og følg-meg-numre blir ikke bedt om det heller: bare personer som ringer fra en telefon.

Kapittel 10

Ringere-id-søk

I nettgrensesnittet: /lookups

Mange telefon-selskaper sender en ringers nummer, men ingen navn. BitVoice ser først i selskaps-kontakter (kapittel 38); etter det kan en inn-gående rute be om en ringere-id-søk (kapittel 10):

Velg søket på en inn-gående rute på Samtale-ruting (kapittel 8) (Ringere-id-søk). Telefoner viser navnet mens de ringer, og det går inn i samtale-posten.

Et søk holder aldri en samtale opp: BitVoice venter i maks vente (1,5 sekunder med mindre du endrer det, 5 som maks) og ringer deretter uten et navn. Svar beholdes i en dag (eller så lenge du setter, eller aldri med -1), så en vanlig ringer ikke søkes opp på hver samtale; numre tjenesten ikke kjenner, spørres igjen etter en time. Prøv det på søkets side ber om et nummer med en gang, med innstillingene som lagret.

Kapittel 11

Nødstilfeller

Nødstilfeller går alltid ut, fra hver enkelt utvidelse, selv de som ikke kan ringe utenfor numre. Dette kapitlet handler om nødstilfeller fra telefonene BitVoice kjører: et kontor som ringer 911. Å svare på 911-samtaler er 911-profilen (kapittel 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

Hva BitVoice gjør på hver nødstilfelle

  1. Ruter den, alltid: en rute som navngir nummeret først; med ingen, hver arbeidende trunk i tur. Begrensninger stopper aldri det: en utvidelse som ikke er tillatt utenfor numre, en vert-organisasjon på sin samtale-grense eller suspendert, en trunk på sin kanal-grense.
  2. Sender hvor ringeren er: med Send ringerens adresse på (Innstillinger), samtalen bærer lokalitetens sivile adresse, etasje og rom til leverandøren som PIDF-LO.
  3. Forteller personer på stedet (Kari's Law i USA): utvidelsene under Varsle får en melding på telefonene sine, hver åpen BitVoice-skjerm viser en varsling, og adressene under Også e-post får en e-post med ringerens navn, utvidelse, lokalitet, etasje og rom, så noen kan møte svarene ved døren.
  4. Låter samtalen gå tilbake: i en time etter en nødstilfelle, innkommende samtaler nektas aldri, så svare-punktet alltid kan ringe tilbake.

Oppsett

  1. Sjekk nødstilfells-numrene i Innstillinger (kapittel 14) (sett etter land: 911 og 933 i USA).
  2. Legg til hver bygning under Steder (kapittel 12), med sin gate-adresse og nettverkene telefonene bruker.
  3. Gi hver utvidelse sin lokalitet, etasje og rom.
  4. Sørg for at en utgående rute og trunk tar nødstilfeller; Helse (kapittel 13) advarer når ingen kan.
  5. Fyll inn Varsle og Også e-post.
  6. Ring 933 (i USA) for å høre adressen din leverandør har.

Fjern-arbeidere

En telefon som registrerer seg fra utenfor lokalitetens nettverk er en fjern-arbeider: deres telefon-side ber om hvor de er, og den adressen brukes i stedet. Varslinger sier når den ikke ble bekreftet.

Nødmodus

En annen ting: en bryter som sender alle innkommende samtaler til ett sted (evakuering, stengning, hendelse). Sett hvor samtaler går, en valgfri kode som *55 og utvidelsene som er tillatt å ringe det i Innstillinger (kapittel 14); slå det på Dashbord (kapittel 1), eller ved å ringe koden (stigende toner for på, en lav tone for av). En rød linje vises på hver skjerm mens det er på.

Kapittel 12

Steder og kontor 911

I nettgrensesnittet: /sites

Et sted er en bygning: dens gateadresse og nettverkene dens telefoner bruker. Steder er hvordan en nødrop oppgir hvor oppringeren er, ned til etasje og rom. I USA krever Kari's Law og RAY BAUM'S Act nøyaktig dette fra bedriftstelefoner.

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

Legg til en lokalitet

På Steder (kapittel 12), trykk Legg til:

FeltHva det er
Navnhva folk kaller det: Hovedkontor
Gate, By, Fylke eller provins, Postnummer, Landden sivile adresse hjelpere sendes til
Nettverkadresseområdene det bruker til telefoner, som 10.1.0.0/16; ett per linje

Deretter på hver utvidelse gi dens sted, etasje og rom. Helse (kapittel 13) lister utvidelser uten en plassering.

Hvor en telefon plasseres

  1. En telefon som registrerer seg fra ett av et stedets nettverk, er på det stedet, med etasje og rom for dens netttelefonnummer.
  2. En varm skrivebord bærer skrivebordets eget sted, etasje og rom, ikke personen som er logget inn (Varmplassering (kapittel 36)).
  3. En telefon som registrerer seg fra utenfor alle stedets nettverk er en remsearbeider. Ved sin første nødsituasjonskapable registrering fra et nytt sted, blir dens bruker bedt om å bekrefte sin adresse på sin telefonside; nødsamtaler har deretter denne adressen.
  4. Hvis en remsearbeider aldri har bekreftet, går samtalen likevel ut, med netttelefonnummerets vanlige sted, og varslinger sier at adressen ikke ble bekreftet.

##Varsler på stedet Med E-post når noen ringer 911 angitt i Innstillinger, mottar personene som er navngitt der, navn, utvidelse, sted, etasje og rom så snart et oppkall til en nødnummer begynner, slik at noen kan møte respondentene ved døren. Varsle utvidelser får en melding på telefonene sine, og hver åpen BitVoice-skjerm viser en varsling. Se Nødanrop (kapittel 11).

Kapittel 13

Helse

I nettgrensesnittet: /health

Helse sier om systemet er klart for samtaler, og hvis ikke, hva du skal gjøre. Hver linje sier hva som er galt på vanlig språk og lenker til skjermen hvor det fikses. Sjekk det etter hver endring av noen størrelse.

Hva det sjekker

SjekkHvorfor det er viktig
Nødsamtaler kan komme uten rute og en fungerende trunk bærer nød-numrene
Utvidelser uten en nød-lokasjonderes 911-samtaler ville bære ingen etasje eller rom
Telefon-tjenestenSIP lytter, og på hvilken port
Telefoner ikke koblet tilutvidelser ingen har logget inn som
Trunkerregistrert, eller grunnen til at de ikke er
Menyer uten en innspilt promptsamtale-partnere ville høre stillhet
Tidssonentimeplaner følger den
Opptak og deres lagringdisk-plass, og hvor lenge opptakene beholdes
Sertifikaternår TLS-sertifikatet går ut
Nøkkel-hvelvhemmeligheter et hvelv ikke kan lese
Andre serverenår flere deler en database, om hver er kjørende

Problemer er fargede: rød stopper samtaler (ingen nød-rute), gul skal sjekkes (en telefon ikke koblet til), og grå er for informasjon.

Kapittel 14

Innstillinger

I nettgrensesnittet: /settings

Innstillinger inneholder alt om systemet som helhet. Hver seksjon lagrer på egen hånd, og hver lagring er en revisjon på Endringer (kapittel 61).

SectionWhat is there
Systemname, country, time zone, language, the public address phones and providers see
Numbersthe echo test, voicemail and park numbers, and the emergency numbers
Codecsthe codecs phones may use, best first (Codecs (kapittel 66))
Call recordingoff, every call, or selected extensions; consent rules; how long recordings are kept
Soundclean-up for voicemail and during calls
Protectionbans after failed sign-ins, trusted networks, calls per extension, premium numbers
Emergencysend the caller's address, who is notified, who is emailed, emergency mode
AIthe AI service, models, and which AI features are on (AI (kapittel 28))
Single sign-onthe identity provider (Single sign-on (kapittel 58))
Asterisk compatibilityAMI and ARI for programs written for Asterisk (Asterisk compatibility (kapittel 70))
AI assistants (MCP)whether AI assistants such as Claude or ChatGPT may connect, and whether they may act (AI assistants (kapittel 71))
Microsoft 365 and Google Workspacepeople and shared contacts into Contacts, and calendars for who is away (Contacts (kapittel 38), Calendars (kapittel 39))
Mobile appsthe push service that wakes the apps
Emailthe mail server voicemail, faxes and alerts go through
Key vaultssecrets kept in AWS Secrets Manager or Azure Key Vault
Configuration from Gitkeep the configuration in step with a file in a repository
DatabaseSQLite or PostgreSQL (Database (kapittel 64))
Certificatethe certificate for this interface and SIP over TLS: from Let's Encrypt, installed by hand, or BitVoice's own

Passord og nøkler vises aldri igjen en gang de er lagret; la dem være tomme for å beholde dem. Visere ser Innstillinger med alle hemmeligheter fjernet.

Sertifikatet og Let's Encrypt

BitVoice starter med et sertifikat det har laget selv, som nettlesere og telefoner advarer om. For en server med et offentlig navn, slå på Let's Encrypt under Sertifikat: angi navnene (pbx.example.com), valgfritt en e-postadresse, og apply. BitVoice får et gratis sertifikat fra Let's Encrypt, bruker det med en gang for nettgrensesnittet, SIP over TLS og Teams, og fornyer det omtrent 30 dager før det utløper (Let's Encrypt-sertifikater varer 90 dager eller mindre). Statuslinjen sier når det ble utstedt, når det fornyes og, hvis det feilet, hvorfor; det prøver igjen etter en time, så mindre ofte, innen Let's Encrypts grenser. Sjekk nå prøver med en gang.

Let's Encrypt må nå serveren under hvert navn fra internettet for å bevise at det er deres:

Andre ACME-myndigheter som ikke trenger konto-binding (et selskaps eget step-ca, Let's Encrypts testtjeneste for tester) velges under Myndighet. Wildcard-navn trenger DNS-bevis, som BitVoice ikke gjør: installer disse sertifikatene manuelt. Hver server i en cluster får sitt eget sertifikat.

Kapittel 15

Skjermene på ditt språk

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

Velg ett

Hver nettleser har sitt eget språk: velg det under menyen (språklisten ved siden av temaene), på innloggingssiden eller på oppsettsguidens første side. Før du velger, bruker BitVoice nettleserens eget språk når det er ett av disse, ellers engelsk. Valget lagres bare i denne nettleseren: to personer på en server kan hver arbeide på sitt eget.

Alt på skjermene er oversatt: menyen, overskrifter, knapper, hint, meldinger fra serveren og navn skjermlesere annonserer. Søk (⌘K) finner en side etter dens navn på ditt språk eller på engelsk. Igjen som de er: hva mennesker skriver (navn, numre, notater), adresser, koder, skript i redigeringsverktøyene og navn på produkter og protokoller. Datoer og numre følger nettleserens egne innstillinger.

Hvordan det oversettes, og hvor godt

Oversettelsene er laget av en maskin (en stor språkmodell), for hver del av teksten skjermene viser, om lag 5 000 av dem; ingen har blitt sjekket av en person. Noen setninger skjermene bygger fra deler (et nummer og et ord) kan lese ujevnt, og en term kan bli oversatt på to måter på to steder. Alt uten oversettelse, som en skjerm nyere enn oversettelsene, forblir engelsk.

Hjelp holder denne håndboken på engelsk, som skrevet, med en lenke øverst på hvert kapittel til samme kapittel oversatt hele (også av maskin) på bitvoice.org.

Telefondelen er separat: hva ringere hører (lydinnspillinger, valgmeny for voicemail) er på standard lydinnstillingspråket (Lyder (kapittel 20)), med mindre en utvidelse eller en kø har sitt eget språk.

Del 2

Hvor samtaler går

Byggeklossene som ringere går gjennom: grupper og køer, menyer og planer, skript og AI-resepsjonist, voicemail og diagrammet som viser alt.

Kapittel 16

Samtaleflyt

I nettgrensesnittet: /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

Sjekk hver situasjon

Sjekk hver situasjon, øverst på Samtaleflyt (kapittel 16), prøver hele ditt samtaleplan i hver situasjon det kan være i, ikke et utvalg:

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 sjekken kjøres på endringer før de gjøres: et forslag fra Spør på en enkel måte og Gjenopprett denne ser på en gammel revisjon, begge lister hva endringen ville bryte som fungerer i dag.

Prøv et oppringning

Angi hvem som ringer (en utvidelse eller et eksternt nummer), hva de ringer og når, og trykk Prøv det. BitVoice følger oppringningen nøyaktig som den ville for ekte, uten å ringe noe: den innkommende ruten, tidsskjemaer på den tiden, routingskript (de kjører, i deres sandkasse), menyer, grupper og køer, og hva som skjer hvis ingen svarer. Veien denne oppringningen tar, er merket; andre veier på (en menys nøkler, et tidsskjemas andre side) kan åpnes. Grønt betyr det fungerer, gul betyr se på det (en telefon som ikke er koblet til, et skript som faller tilbake), rødt betyr oppringningen feiler der. Velg Anta at hver telefon er koblet til for å se planen som den er designet, i stedet for hvordan den er akkurat nå; Ankommer på velger trunken for ruter som bare tar en.

Diagrammet

Diagrammet viser hvor oppringninger fra utsiden går, boks for boks: hver innkommende rute, deretter menyer, grupper, køer, tidsskjemaer, skript og personer det leder til.

Klikk en boks (eller trykk Tab til den og trykk Enter) for å endre hvor oppringninger går fra den: en rutes destinasjon, en utvidelses eller gruppes Hvis ingen svarer, et tidsskjemas åpne og lukkede destinasjoner, en menys nøkler (legg til eller fjern nøkler rett der), et skripts fallback eller en resepsjonists person. Lagring av sjekker endringen som enhver annen og lager en revisjon. Åpne full redigerer går til elementets egen side. Legg til innkommende rute legger til en rute uten å forlate diagrammet.

Kapittel 17

Ringgrupper

I nettgrensesnittet: /ring-groups

En ringgruppe er ett nummer som ringer flere utvidelser: en salgsteam, resepsjonen og dens reserve, alle i verkstedet.

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 som er borte (i et møte på deres kalender, eller med ikke forstyr på) hopper over; gruppen ringer de andre. Medlemmer med mobilappen våkner med en push og ringer også.

Hvis ingen svarer

Når ingen svarer innen ringetiden, går anropet til Hvis ingen svarer: en medlems voicemail, en kø, en meny, en annen gruppe. Med ingenting satt, ringer det til den som ringer gir opp.

Grupper, køer eller plukk?

BrukNår
En ringgruppenoen mennesker, hvor noen kan ta anropet, og anropet skal ringe nå
En køanropere kan måtte vente på noen som er ledig, og skal høre sin plass
En plukkgruppehver person har sine egne anrop, men kolleger kan svare for dem
Kapittel 18

Køer

I nettgrensesnittet: /queues

En kø holder anropere i rekkefølge, med musikk, og ringer den neste ledige agenten. Det er hjertet av en kontakt-senter, og nyttig i noen kontor hvor anrop kommer raskere enn mennesker kan ta 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 samtaler tilbys

StrategiHvem ringer
Lengst inaktivden ledige agenten som har ventet lengst siden sin siste samtale
Runde robinhver ledig agent i tur, fortsetter fra den siste
Ring allealle ledige agenter samtidig
Færrest samtalerden ledige agenten som tok færrest samtaler i dag
I rekkefølge (lineær)alltid fra toppen av listen: den første ledige agenten
Tilfeldigen tilfeldig ledig agent
Vektet tilfeldigtilfeldig, agenter med en lavere straff blir valgt mye oftere

Skjermen Køer er en live tavle: hvem venter, hvor lenge, og hver agents tilstand.

Agenter

Agenter ringer *45 for å logge inn eller ut av hver kø, og *46 for å pause (en pause) og gjenopprette; pausede og logged-out agenter tilbys ikke samtaler. Tavlen har samme knapper, og viser hvorfor en agent pauserte.

TilstandMening
tilgjengeligledig; vil bli tilbudt neste samtale
ringerblir tilbudt en samtale
opptattpå en samtale
avslutningnettopp ferdig; avslutningstiden løper
pausepå en pause, med årsaken gitt
bortepå et møte eller på permisjon, fra deres kalender
logged outtar ikke køsamtaler i det hele tatt

Overvåkere

På Aktive samtalene (kapittel 46), Overvåk ringer en overvåkers telefon; når de svarer, kan de lytte (høres av ingen), viske (høres bare av agenten) eller bryte inn (høres av begge), og kan skifte mellom dem under samtalen.

Køer med faste agenter og VIP-er

Slå på Faste i en kø, og en gjentakende samtale (en som ble besvart i løpet av de siste 30 dagene, eller så mange som du setter) blir først tilbudt agenten som svarte sist, hvis den agenten er ledig; hvis de ikke svarer, fortsetter køen som vanlig. VIP-samtaler, nederst i Køer, går foran hver kø de ringer, etter eventuelle VIP-samtaler som allerede venter, og er merket VIP på tavlen.

Kapittel 19

Utgående oppkobler

I nettgrensesnittet: /dialer

Den utgående oppringeren (kapittel 19) ringer liste over kontakter for en kø (kapittel 18)'s agenter: fornyelser, avtalepåminnelser, innkrevinger, undersøkelser. Hver kampanje har sin egen kø, sin liste og sin måte å ringe på:

ModusHvordan den ringer
Forhåndsvisningen agent ber om neste kontakt, ser detaljene, deretter ringer den (deres telefon ringer først) eller hopper over den
Progressiven samtale for hver ledig agent
Kraftet fast antall samtaler for hver ledig agent (1 til 3)
ForutsigbarBitVoice justerer samtaler per agent, med vekt på mens få samtaler er fraflyttet og bakover mens fraflyttingsraten nærmer seg grensen
  1. Legg til kampanje: dens kø, dens ringende ID (nummeret kontaktene ser), timene samtaler kan gjøres i en tidssone, hvor lenge en kontakts telefon ringer, hvor mange forsøk og hvor langt fra hverandre.
  2. Åpne Kontakter og Legg til en liste: en CSV-fil med en header-rad og en kolonne kalt number (eller phone); name og andre kolonner vises til agenten i forhåndsvisning. Duplikate og ugyldige numreer hoppe over.
  3. Ta opp meldingen (i kampanjen): hvem som ringer og hvorfor, og "trykk 9 hvis du ikke ønsker disse samtaler". Den spilles av til en person som har svart når ingen agent er ledig, og, hvis du velger, etter en beskjed på en telefonsvarer.
  4. Start den. Den ringer bare innenfor sine timer, og stopper å ringe når den er pause eller ingenting er due.

Personer og maskiner. BitVoice lytter til de første sekundene etter en beskjed: en lang, uavbrutt hilsen er en telefonsvarer; en kort «hallo?» og en pause er en person. En maskin kan legges på (og forsøkes igjen), eller en melding kan bli etterlatt, eller den kan overføres til en agent som hvem som helst andre. Når det er tvil, tar den svaret for en person.

Frafunnete oppkall. En person som har svart når ingen agent er ledig i to sekunder, hører meldingen og teller som frafunnet. Med kraftig og prediktiv ringing, hvis andelen frafunnete oppkall over de siste hundre svarene går over kampanjens grense (3% med mindre du endrer det, US-regel), ringer kampanjen ett oppkall per ledig agent til det er tilbake under. Kampanjen viser sin frafunnsrate, oppkall som ringer og ledige agenter live.

Ikke ring liste. Ingen kampanje ringer et nummer på ikke ring listen, uansett hvilken liste det kom inn på; hvem som helst som trykker 9 under meldingen, legges til med en gang. Legg til numre for hånd eller gjennom API (POST /api/dnc). For den nasjonale registret (i USA, FTCs National Do Not Call Registry: last ned områdeskodene du ringer som en flat fil), velg filen under Nasjonalt register og Import: hver linje med et nummer teller (212,5550100 som FTC skriver dem, eller ett nummer per linje), overskrifter og ødelagte linjer hopper over og teller. Med Erstatt siste import på, fjernes de forrige nedlastningens numre først, så et nummer som har forlatt registret kan ringes igjen; numre lagt til for hånd eller ved å trykke 9 forblir alltid. Registret må oppdateres minst hver 31. dag (US-regler); siden teller listen og hvor mye av den som kom fra registret. API er POST /api/dnc/import?replace=1 med filen som brødteksten.

Kapittel 20

Lyder: prompter, språk og ventemusikk

I nettgrensesnittet: /sounds

Lyder (kapittel 20) inneholder alt BitVoice sier eller spiller til oppringere, bortsett fra hilsener og menyprompter, som blir innspilt der de brukes.

Prompter, på hvert språk

En prompt er en ting BitVoice sier: "Vennligst tast inn din PIN", "Din plass i køen er", tallene den leser opp. Navn- og oppslagskataloger, innringing (DISA), vekkingssamtaler og køannonsering snakker med dem. BitVoice har ordene til hver prompt på engelsk, spansk, fransk, tysk, italiensk, portugisisk, nederlandsk og polsk; tall leses opp siffer for siffer, som høres likt ut på hvert språk.

Bakgrunnsmusikk

Bakgrunnsmusikk er gruppert i klasser (Roft, Jazz, Salgs Tilbud…), hver en liste over spor som spilles ett etter ett, fra starten eller tilfeldig. Last opp spor på opptil femten minutter i ethvert format nettleseren kan lese; MP3- og WAV-filer kan også sendes direkte til API-et (PUT /api/music/{class}/{name}), og BitVoice dekoderer MP3 selv (MPEG-1, 2 og 2.5 Lag III, med en dekoder som gir samme eksempler som minimp3).

Internett radio. En klasse kan spille en strøm i stedet for sine spor: oppgi en MP3-strøms adresse (Icecast, Shoutcast, de fleste internett radio) under Internett radio. BitVoice kobler til når den første samtaler blir satt på vent med denne klassen, spiller den ene strømmen til alle som venter, og kobler fra halvannen minutt etter at den siste forlater.

Hvem hører detHvilken musikk
noen som er satt på ventmusikken valgt på den som holder samtalen, ellers standard
en parkert samtalermusikken til personen som parkerte dem, ellers standard
en samtaler som venter i en køkøens musikk, ellers standard
en samtaler som venter på en konferanselederstandard

Standard for alle kan være ventetonen, så ingenting endres før du velger musikk. Velg ventetonen på en kø eller utvidelse holder tonen der.

Kapittel 22

Navn-oppkoblingsskatalog

I nettgrensesnittet: /directories

En dial-by-name-katalog (kapittel 22) lar oppringere nå noen uten å kjenne deres nummer: de staver de første bokstavene i navnet på tastaturet (2 for ABC, 3 for DEF, opp til 9 for WXYZ) og blir koblet gjennom.

  1. Legg til katalog, navngi det, og gi det et nummer (411, for eksempel) eller la nummeret være tomt og bruk det som et menyvalg.
  2. Velg hva samtaler skal stave: etternavn (vanlig), fornavn, eller begge.
  3. Velg hvem som er listet, eller ingen for å liste alle med en telefon.

Samtaler hører "Vennligst oppgi de første tre bokstavene i personens navn". En match kobles til med en gang. Flere leses opp, åtte om gangen: hver persons navn, deretter "for å ringe denne personen, trykk 1", 2 og så videre, med 9 for flere navn. Ingen match: "Ingen matcher", og de prøver igjen (tre forsøk).

Uttales navn: Innspill hver persons navn på deres utvidelse (Uttales navn: Innspill i nettleseren eller last opp en fil), og katalogen sier det; inntil da leser den ut utvidelsesnummeret. Katalogens egne ord kommer fra katalogpromptene i Lyder (kapittel 20), på dets språk.

Kapittel 23

Innkobling (DISA)

I nettgrensesnittet: /dial-in

En dial-in (kapittel 23) (DISA, "direkte innvendig systemtilgang") lar noen ringe inn fra utsiden, bevise hvem de er, og ringe ut igjen gjennom kontoret: samtalen går ut med kontorets oppringer-ID, dens ruter og dens takster, som om de var ved deres skrivebord.

  1. Legg til dial-in, og sett et PIN (4 til 10 sifre), de numrene som er tillatt å bruke det (Kun fra disse numrene), eller begge deler. En av de to er påkrevd.
  2. Velg utvidelsen som samtalen blir gjort fra: dens utenom-kalle-tillatelse, oppringer-ID og utgående ruter gjelder. Den må være tillatt å ringe utenom.
  3. Gi det et nummer å ringe inn, og send et telefonnummer til det på Samtale-ruting (kapittel 8) (velg dial-in som destinasjon).

Oppringere hører "Vennligst tast inn ditt PIN, så trykk på hash", så "Vennligst tast inn nummeret du vil ringe, så trykk på hash", og blir koblet gjennom. Ordene kommer fra dial-in-promptene i Lyder (kapittel 20).

Kapittel 24

Taleboter (AudioSocket)

I nettgrensesnittet: /voice-bots

En talebot (kapittel 24) er et program du selv har laget (en AI-agent, en tale-gjenkjenning IVR, en opptaker) som tar oppkall over AudioSocket, det enkle protokollen Asterisk bruker: BitVoice svarer på oppkallet, åpner en TCP-tilkobling til boten og sender oppkallets UUID, deretter callerens lyd som 20 ms-rammer av 8 kHz 16-bit lineær audio og hver tast trykket; hva som helst lyd boten sender tilbake, spilles til calleren. Bots og tale-tjeneste-tilkoblinger skrevet for Asterisks AudioSocket fungerer uendret med BitVoice.

  1. Legg til talebot: dens navn, botens adresse (10.0.0.9:9092) og, valgfritt, et nummer for å ringe den.
  2. Velg hvor calleren går hvis boten ikke kan ta oppkallet, eller bryter av (en person, en kø, voicemail): påkrevd, så ingen caller noen gang blir droppet fordi en bot er nede.
  3. Send oppkall til den fra Oppkallsruting (kapittel 8), en menyvalg, en timeplan eller en omkopling.

Når boten sender en AudioSocket-oppkobling, avsluttes oppkallet; når calleren legger på, sendes en til boten. En bot som ikke kan nås innen tre sekunder, eller hvis tilkoblingen bryter uten en oppkobling, overfører calleren til reservevalget, og feilen logges.

For å bringe et program inn i et oppkall som allerede er i gang (en lytting transkriber, en assistent som hvisker til ingen), bruk ARI-ekstern media: se Asterisk-kompatibilitet (kapittel 70).

Kapittel 25

Dag/natt-omkoplinger

I nettgrensesnittet: /toggles

En dag/natt-omkopling (kapittel 25) er en bryter for en oppkallstrøm (FreePBX kaller det oppkallstrøm-kontroll). Oppkall sendt til den går til dens normale destinasjon, eller til den andre mens noen har skiftet den over: kontoret lukker tidlig på grunn av en storm, noen ringer *281 på vei ut, og oppkall går til voicemail til det skiftes tilbake om morgenen. Den forblir som den ble latt, over omstarter.

  1. Legg til omkopling, gi den en kode (1 til 3 siffer: ringt etter *28) og velg hvor oppkall går normalt og når den er skiftet over. Begge sider kan være en timeplan, så en omkopling kan sitte foran åpningstidene og overstyre dem.
  2. Velg hvem som kan skifte den fra en telefon (ingen valgt lar hvilken som helst utvidelse).
  3. Send oppkall til den fra Oppkallsruting (kapittel 8), en menyvalg eller en timeplan, som enhver annen destinasjon.

Skift den ved å ringe *28 og dens kode (en stigende tone: skiftet over; en synkende tone: tilbake til normalt), med omkoplingen ved siden av den på Omkoplinger-siden, eller gjennom API (POST /api/toggles/{id}/state). En busy-lampe-nøkkel som overvåker *281 er lys mens den omkoplingen er skiftet over, så personen som lukker opp kan se det fra sin pult. Omkoplingskoden selv er på Funksjonskoder (kapittel 32).

Kapittel 26

Timeplaner

I nettgrensesnittet: /schedules

En timeplan sender samtalene en vei når du er åpen og en annen når du er stengt. Peke en innkommende rute mot en timeplan, og timeplanen mot menyen (åpen) og voicemail (stengt).

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

Åpningstider

Hver linje med tider er en sett av dager og en tid fra og til. Flere linjer er tillatt: mandag til fredag 9:00 til 17:00, og lørdag 10:00 til 13:00. Tider kan kryss midnatt (22:00 til 06:00) for nattskifter.

Helligdager

Helligdager teller som stengt hele dagen, uansett hva tider sier. Legg til hver dato med et navn; navnet vises på Samtaleflyt (kapittel 16) når du prøver en samtale på den dagen.

Tidssone

Tidssonen er den i Innstillinger. Når klokken endrer, følger timeplanene lokal tid.

Kapittel 27

Skript (JavaScript og Lua)

I nettgrensesnittet: /scripts

Et skript bestemmer hvor en samtale går når menyer, timeplaner og grupper ikke er nok: ringende fra ett område til ett kontor, VIP-numre rett til en person, en beslutning fra dine egne data. Eller, sett til Kjører hele samtalen, besvarer det samtalen og kjører den, som en Asterisk-dialplan eller AGI-skript ville: promter og tale, taster, innspillinger, ringing av personer, overføring (nedenunder). Skriptene skrives i JavaScript eller Lua på Skript (kapittel 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

Sikker ved design

Hva et skript ser

call har:

FeltHva det er
from, fromNameoppringerens nummer og navn
tonummeret som ble valgt
directioninbound eller internal
trunktrunken det kom inn på
weekday, hour, minutetid nå (0 er søndag)
dateYYYY-MM-DD

What it returns

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

JavaScript

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

Lua

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

Bruke et skript

Pek en innkommende rute, en menytast eller en timeplan mot skriptet, som mot en hvilken som helst destinasjon. Test kjører det med et oppring du beskriver, uten å plassere et oppring; kjørelisten viser hver ekte kjøring med dens avgjørelse, tid brukt og eventuelle feil. Oppringsflyt (kapittel 16) kjører også skript når du prøver et oppring.

Skript som kjører hele oppringen

Velg Kjører hele oppringen. Skriptet svarer da på oppringen og går fra topp til bunn, hvor hvert steg venter til det er ferdig:

StegHva det gjør
play(name)spiller en prompt fra Lyder (kapittel 20) på oppringerens språk (goodbye, digit-5...), digits:1234, eller en tone: beep, confirm, error, off, hold. En prompt som ikke er innspilt enda er en beep.
say(text)snakker ordene med tale-tjenesten i Innstillinger, AI (en beep uten en)
collect({max, timeout, interDigit, end, say, prompt})samler inn tastene: maks max (32), venter timeout sekunder for den første (5) og interDigit for hver neste (3), til end (#). say eller prompt spør først. Returnerer tastene, "" når ingen.
record({box, seconds, beep})innspiller en melding til en extensions postkasse, til # eller tiden; returnerer sekundene
wait(seconds)venter, returnerer en tast trykket
dial(destination, ringSeconds)ringer det med at oppringeren hører ringesignal. Besvart: de snakker og skriptet er ferdig (true). Ikke besvart: false, og skriptet fortsetter.
transfer(destination)overfører oppringen; skriptet er ferdig
hangup()avslutter oppringen
log(text)skriver til kjørelisten

En destinasjon er et nummer (en utvidelse, ringgruppe eller kø her, ellers et eksternt nummer gjennom utgående ruter; aldri et nødnummer) eller {type, target} som ovenfor. En tast trykket under en lyd stopper den; play og say returnerer den og den neste collect starter med den. Å returnere en destinasjon sender oppringen dit.

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 stegene (collect{max = 1}). Gi skriptet et Nummer å ringe for å ringe det fra en utvidelse.

Dets grenser holder oppringen trygg: skriptets egen kode kan kjøre maks en fjerdedel sekund mellom to steg; en oppring tar maks 1 000 steg; og hele skriptet stopper etter sin Lengste kjøring (10 minutter med mindre du sier, 60 som mest). Når det feiler, stoppes eller avslutter uten å avslutte eller overføre oppringen, går oppringen til sin fallback; en oppringer som legger på stopper det med en gang. Prøv det kjører skriptet med tastene du sier oppringeren trykker og lister hver steg, uten å plassere et oppring.

Kapittel 28

AI-resepsjonist, voicemail-triage og spørsmål

I nettgrensesnittet: /receptionists

AI-funksjoner bruker AI-tjenesten satt i Innstillinger (kapittel 14): en OpenAI-kompatibel tjeneste (OpenRouter som standard) eller en du kjører selv. Hva de trenger sendes der, så velg en tjeneste du stoler på med samtaler; for en 911-sentrale, dens eget regjeringsnettverk teller 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-resepsjonist

Velg en resepsjonist som hvor samtaler går: en rute, et menyvalg eller en utvidelses Hvis ingen svarer. Den sier at den er automatisert, besvarer bare fra Godkjent informasjon, tar en melding, booker en tilbakekalling (se Tilbakekallinger (kapittel 30)), eller overfører til En person er. Trykk 0 eller spør om en person når du alltid når noen, og så gjør også noen problemer med AI-tjenesten eller talemodellen: ringere blir aldri stukket med den.

Modeller

Modell gjør tekstarbeid: sammenfatninger, resepsjonistens svar og spørsmål på vanlig språk. Å omdanne tale til tekst trenger en modell som tar audio; sett den som Tale-til-tekst-modell (for eksempel google/gemini-2.5-flash på OpenRouter) for å bruke en tekst-basert modell for resten, som meta-llama/llama-3.3-70b-instruct.

Tale til tekst i bygningen

Tale kan skrives ned uten noen språkmodell: en talegjenkjenner (whisper) hører audioen og skriver hva som ble sagt, ikke mer. Hvem skriver tale ned, i AI-innstillingene, 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.

Fakta nevnt i samtalen (ingen språkmodell)

Hver transkript leses også av regler, uten språkmodell, for faktene en call-taker noterer: hva som skjedde, hvor, hvor mange som er skadet (eller at ingen er), tilstander (pusting, våken, blødende ...), farer (brann, røyk, gass, våpen, kjemikalier, drivstoff), kjøretøy, hvem ringende er i forhold til personen i need, og et tilbakekallingsnummer. Hver faktum vises med setningen det kom fra og siden som sa det, i transkriptets Fakta nevnt i samtalen. Uten en modell, skrives sammenfatningen fra disse faktene alene, og sier det.

SettFaktum funnetFaktum funnet som ingen forventet
Trening (reglene ble skrevet fra den)41 av 410
Hold-out, scoret kaldt, før noen regel ble skrevet fra den27 av 40 (67%)2
Hold-out, etter en andre runde med regler skrevet fra dens savn40 av 400
Forseglet, scoret kaldt (ingen regel er noen gang skrevet fra den)23 av 43 (53%)3

Det forseglende poengsummen er det en kan forvente på samtaler den ikke har sett, og de tre settene ble skrevet av samme personer som reglene, så virkelige samtaler vil sannsynligvis gjøre det dårligere. Les faktumene ved siden av transkripsjonen, aldri istedenfor den.

Større modeller trenger mer prosessor: en server som skriver ut mange samtaler samtidig, bør starte med base, eller bruke en maskin med en GPU som en tale-til-tekst-tjeneste for bygningen. På Apple-computere bruker whisper GPU-en.

Voicemail-triaging

Med Transkriber og summer voicemail på, blir hvert meldingsopptak også merket som急, normalt eller lav prioritet, med sin type (salg, support, fakturering...). Urgente meldinger utløser en varsel på hver administrators skjerm.

Spør på enkelt måte

På Endringer (kapittel 61), beskriv en endring ("send salgsoppringer til voicemail etter kl. 17"). AIen foreslår den, BitVoice sjekker den som enhver annen endring og viser nøyaktig hva som ville endre seg. Ingenting endres før du trykker Apply, og den blir en revisjon du kan gjenopprette. Passord sendes aldri til AIen.

Kapittel 29

Postkasse

I nettgrensesnittet: /voicemail

Hver utvidelse kan ha en postkasse. Oppringere som ikke blir besvart hører dens hilsen og lar en melding; personen hører den på sin telefon, leser den på skjermen eller får den via e-post.

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

Slå det på

På utvidelsen, slå på Postkasse. Hvis ingen svarer er da satt til postkassen. Gi den et PIN (4 til 10 sifre): det åpner postkassen fra en annen telefon, og logger personen inn på medarbeiderportalen og på varme skrivebord.

InnstillingHva det gjør
Lengste melding10 til 900 sekunder (180 som standard)
E-post nye meldingertil utvidelsens e-postadresse, med meldingen vedlagt
Hilseninnspilt i nettleseren, lastet opp, eller innspilt fra telefonen; uten en, hører oppringere en beep

Avspilling

Med AI

Med Transkriber og summer postkasse på (Innstillinger, AI), blir hver melding skrevet ut, summerert på en linje, og merket som急, normal eller lav prioritet med sin type (salg, support, fakturering). Urgente meldinger utløser en varsling på hver administrators skjerm. Se AI (kapittel 28).

Lydrensing

Lydrensing (Innstillinger) fjerner jevne bakgrunnsstøy og jevner ut nivåer mens meldinger lagres, så en melding fra en bil eller en travel gate er lettere å høre.

Kapittel 30

Tilbakekall

I nettgrensesnittet: /callbacks

Personer som ba om å bli ringt tilbake. En AI-resepsjonist bestiller en når en ringer ber om det: den samler inn navn, nummeret til å ringe (og tilbyr nummeret de ringer fra), en god tid og hva det gjelder, leser det opp igjen og bestiller det bare når ringeren samtykker. Den lover aldri en nøyaktig tid. Administratorer kan også legge til tilbakekall 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 tilbakekall viser en advarsel på hver åpen skjerm og blir sendt til eieren av resepsjonistens Ta meldinger for postboks når den utvidelsen har en e-postadresse og e-post er satt opp i Innstillinger.

For å ringe tilbake, velg din utvidelse og trykk Ring tilbake: telefonen din ringer først, og når du tar opp, ringer BitVoice nummeret for deg, med dine normale ruter og ringernavn. Deretter legg til en notis hvis du ønsker og trykk Ferdig (eller Avbryt). Fulle tilbakekall blir vist under åpne og kan åpnes igjen.

Del 3

Hverdags samtaler

Hva folk gjør på telefonene sine hver dag, og hva de setter for seg selv: videreformidling, følg-meg, oppringning, konferanserom, høyttalere, varme skrivebord, faks og tekster.

Kapittel 32

Funksjonskoder, videreformidling og hurtigvalg

I nettgrensesnittet: /codes

Funksjonskoder er hva folk ringer på telefonene sine for å endre egne innstillinger og nå funksjoner. De fungerer på hver telefon, skrivebords- eller softphone, uten at noe er konfigurert på telefonen selv. En stigende tone betyr ferdig; en fallende tone betyr avvist.

Kodesamlingen på ett blunk

KodeHva den gjør
*72videreformidler hver samtale (så nummeret og #, eller nummeret rett etter: *722125550199)
*73stopper videreformidling av hver samtale
*90 / *91videreformidler når du er i en samtale / stopper
*52 / *53videreformidler når ikke besvart / stopper
*78 / *79ikke forstyr på / av
*76slår av/på ikke forstyr (stigende tone: nå på)
*21slår av/på følg meg
*8besvarer en samtale som ringer i din opphentingsgruppe
** og en utvidelsebesvarer samtalen som ringer på den utvidelsen
*80 og en utvidelseintercom: den telefonen besvarer på høyttaleren
*0 og en kodeen hurtigvalg
*62vekkingssamtale: hører den, bestiller en (fire sifre, som 0630) eller avbestiller den (stjerne)
*68 og en sifferromstatus, for rengjøring i hoteller
*28 og en omkoplings kodeslår over eller tilbake en dags/natt-omkopling (kapittel 25)
*32blokkerer den siste ringende: den siste eksterne nummeret som ringte denne telefonen havner på blokkeringslisten (Spam-beskyttelse (kapittel 56))
*43ekko-testen
*97din voicemail
70parkerer en samtale (overfører den hit); 71 til 79 henter den opp
*45 / *46kø-agenter: logger inn eller ut / pauser eller gjenopptar
*33 / *34logger inn eller ut på en varm skrivebord
*7 / *8 under en samtalepauser og gjenopptar opptak (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 annen utvidelse bruker den utvidelsens egne innstillinger (dens voicemail, dens følg meg), opp til fire hopp så to personer som videreformidler til hverandre ikke kan danne en loop. Videreformidling til et eksternt nummer går gjennom utgående ruter, som om personen ringte det, og trenger at utvidelsen er tillatt eksterne samtaler.

Videreformidling er live-tilstand, ikke konfigurasjon: å sette den gjør ingen revisjon, og den beholdes over omstarter. Utvidelser (kapittel 3) og personaleportalen viser og endrer den også.

Ikke forstyr

*78 på, *79 av, *76 skifter. Med ikke forstyr på, samtaler går til voicemail, eller til utvidelsens ikke-svar-destinasjon. Ikke forstyr satt for hånd vinner over kalenderen (Kalendere (kapittel 39)). Nødsamtaler ringer fortsatt.

Følg meg

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 slår follow-me på og av for utvidelser som har follow-me-numre angitt (på utvidelsen eller i ansattportalen). Skrivebordet ringer først i sin ringetid, deretter follow-me-numrene, ett etter ett eller alle sammen. På et eksternt nummer med trykk 1 på, hører personen en tone og trykker 1 for å ta opp samtalen; en voicemail eller stilhet gjør aldri det, og etter 15 sekunder flyttes samtalen videre.

Besvarer noen andres samtale

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 utvidelse ringer den med auto-svar: dens telefon svarer på høyttaleren, og begge sider snakker. Yealink, Grandstream og Snom leser BitVoices Call-Info-header, Poly leser Alert-Info; noen telefoner trenger intercom tillatt i sine egne innstillinger. En utvidelse kan nekte intercom; da ringer samtalen som vanlig. Dørstasjoner tar aldri intercom.

Hurtigvalg

*0 og en kode ringer et lagret nummer: *05. Selskapets hurtigvalg er på denne siden; hver person kan ha sine egne på sin utvidelse eller i ansattportalen, og deres seirer over selskapets med samme kode. Kodene er 1 til 3 sifre.

Endre kodene

Hver kode kan endres på Funksjonskoder (kapittel 32), eller slås av med ordet off. To funksjoner kan ikke dele en kode, og ingen kode kan være en utvidelses eller en gruppes nummer: BitVoice sier hvilken som kolliderer. Ekko, voicemail og park-numre er i Innstillinger (kapittel 14).

Kapittel 33

Ansattportalen

Personaleportalen lar alle se etter sine egne samtaler uten en administrator: ikke forstyr, videreformidling, følg-meg, hurtigvalg, voicemail og dens hilsen, deres PIN, og en liste over deres egne samtaler. Den er på #/me på denne serverens adresse, og koblet fra innloggingssiden.

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

Innlogging

Personer logger inn med sin utvidelsesnummer og sin voicemail-PIN: samme PIN som åpner deres voicemail fra en telefon og logger dem inn på varme skrivebord. En utvidelse uten PIN kan ikke logge inn; en administrator setter en på utvidelsen.

Gjentatte feil forsøk fra en adresse låser den ute i ti minutter. En portaløkt når bare personens egne innstillinger: aldri en annen utvidelse, konfigurasjon eller noen opptak.

Hva personer kan gjøre

FaneHva som er der
Hvor samtaler gårikke forstyr; videreformidling av hver samtale, når de er opptatt og når de ikke er besvart; følg-meg-numre; egne hurtigvalg
Voicemailmeldinger å spille av og slette, med transkripsjoner og sammenfatninger når AI er på; spille inn eller laste opp hilsenen
Dine samtalerpersonens egne samtaler, nyeste først, uten opptak
PINendre PIN, ved å gi den nåværende

Videreformidling og ikke forstyr som settes her er de samme som de som settes fra telefonen med funksjonskoder (Funksjonskoder (kapittel 32)): hvilken som helst som ble satt sist er i kraft. Følg-meg-numre og hurtigvalg er en del av utvidelsens konfigurasjon, så å endre dem gjør en revisjon på Endringer (kapittel 61), registrert som personens egen.

Chat og tilstedeværelse

Portalens Chat-faner viser kolleger med hvordan de er akkurat nå: tilgjengelig, på samtale, ringer, borte (ikke forstyr, et møte eller fravær fra kalenderen, med årsaken) eller frakoblet (ingen telefon tilkoblet), og statusen de har skrevet ("På lunsj, tilbake kl 14"). Velg en person for å sende melding; meldinger ankommer med en gang, og et tall ved siden av et navn teller ubeskjedne meldinger. Teamrom (Innstillinger, Personalechat) er samtaler for en gruppe eller for alle når et rom ikke har noen medlemmer.

Meldinger sees bare av personene i samtalen: administratorer håndterer rommene, leser dem aldri. Innstillinger, Personalechat slår av chat, og setter hvor lenge meldinger beholdes (0 beholdes de nyeste tusen av hver samtale).

Kapittel 34

Konferanserom

I nettgrensesnittet: /conferences

Et konferanserom er et nummer mennesker ringer for å snakke sammen. Ansatte ringer det fra sine skrivebord; eksterne ringere når det gjennom en inngående rute eller et menyvalg som peker på rommet.

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

Oppsett av et rom

  1. Åpne Konferanserom (kapittel 34) og trykk Legg til konferanserom.
  2. Gi det et nummer (ethvert ledig nummer, 500 som standard) og et navn.
  3. Valgfritt sett et PIN. Ringere hører en tone, skriver inn PIN og trykker #. Tre feil PIN og samtalen avsluttes.
  4. Valgfritt sett et leder-PIN, forskjellig fra PIN. Den som skriver det inn, går med som leder.
  5. For å la eksterne ringere komme inn, peker en inngående rute (eller et menyvalg) på rommet.

Valg

ValgHva det gjør
Vent på lederalle andre hører ventetonen til en leder går med; når den siste lederen forlater, lukkes rommet og alle henges opp. Trenger et leder-PIN.
Medlemmer går med stumtfor briefing og forelesninger: ledere snakker, medlemmer lytter. En medlem trykker 1 for å be om å snakke, og en leder demper dem opp.
Ta opp rommethele rommet beholdes som en opptak i Samtalehistorikk (kapittel 47), med mindre opptak er av for hele systemet
Toner når mennesker går med og forlaterpå som standard
De fleste mennesker på en gang50 som standard, opp til 200

Nøkler under en samtale

Mens et rom er i bruk

Siden viser hvert rom i bruk: hvem som er i, hvem som snakker (den grønne lykten), hvem som er stumt, hvem som har bedt om å snakke, og hvem som fortsatt venter på lederen. En administrator kan dempe eller dempe opp noen, fjerne noen, og låse eller låse opp rommet.

Alle i et rom hører alle andre som ikke er stumt, blandet av BitVoice; hver persons telefon kan bruke sin egen codec. En samtaleopptak beholdes for hver persons samtale, og en for rommet selv med varighet og opptak.

HD-lyd

Slå på HD-lyd i et rom (nye rom har det på) og det blandes i 16 kHz i stedet for 8: mennesker på bredbåndstelefoner (G.722, Opus, nettleser-telefonen) hører hverandre i HD, med skarpheten til et moderne oppkall, mens mennesker på vanlige telefoner (G.711, mobiltelefoner gjennom en leverandør) hører samme rom som vanlig. Den live-visningen markerer rommet og hver medlem som er i HD. HD trenger G.722 blant codecene telefonene bruker (det er først i systemets liste, Innstillinger, Codec). Opptak av rommet beholdes i telefonkvalitet.

Videorom

Sett Video på et rom og videotelefoner (og softtelefoner) som går med, sender kamera og ser ett bilde, skiftet når mennesker snakker, som i Asterisks ConfBridge:

BitVoice skifter bildene uten å dekodere dem, så det koster nesten ingenting, og det ber hver nytt bilde fra telefonen om et fullt bilde (RTCP PLI og FIR, og SIP INFO billed-hurtigoppdatering de fleste skrivebords-telefoner svarer) så skiftet vises med en gang. Hvert medlems video bruker rommets video codec (H.264 med mindre du velger VP8); en telefon uten det går med med lyd bare. Hver seer får en stabil strøm (en kilde, sin egen payload-type), uansett hvem som er på skjermen.

Et rutenett lages på en annen måte: BitVoice gir hver bilde til ffmpeg på serveren, som dekoder dem, plasserer dem i et 1280 x 720-bilde med 15 bilder per sekund og koder det en gang for alle. Installer ffmpeg (Innstillinger, videoomvandling, sier om den er funnet); uten den følger et rutenettrom speakeren og rommets skjerm sier det. Hvert bilde koster prosessortid: på en liten server, hold rutenettene til noen få rom samtidig. Bare medlemmer hvis kamera sender er vist: noen som slutter seg uten video eller hvis kameraet stopper, forlater rutenettet (det fryser aldri på et stille kamera), og rutenettet gjenoprettes innen noen sekunder når det endres, med en kort pause i bildet. Den tiende medlemmen og senere høres, men vises ikke. Live-visningen markerer rutenettets størrelse og hvem som er i rutenettet.

Alle videoer (nettlesere)

Velg Alle videoer og rommet får sin egen side (Konferanserom, Åpne videorommet, eller #/video-room/NUMBER). Hver person der trykker Slå på med kameraet mitt: nettleseren sender kameraet en gang, i tre størrelser (simulcast), og mottar hvert annet kamera i sitt eget bilde. BitVoice videreformidler bildene som de kom, uten å dekodere dem (en selektiv videreformidlingsenhet, SFU), så det koster lite prosessortid; opplastingen av hver nettleser og nedlasting av hver viser er hva som begrenser et rom, så det tar opp til 16 kameraer.

Del en skjerm: trykk Del min skjerm og velg en skjerm, et vindu eller en nettleserfane i nettleserens egen velger. Alle i rommet ser det som det store bildet, under ditt navn, med tekst som holdes skarp (bildesendingen reduseres i stedet når nettverket er kort). Du trenger ikke å bli med på kameraet ditt først. Stop deling, eller nettleserens egen Stop deling-linje, avslutter det.

Kapittel 35

Paging og høyttalere

I nettgrensesnittet: /paging

Paging snakker gjennom mange telefoner på en gang: ring et pagingsnummer, og hver telefon i gruppen svarer på sin høyttaler av seg selv. Bruk det til annonseringer til en lager, en skole, en butikk-gulv.

Oppsett av en høyttalergruppe

  1. På Høyttalere (kapittel 35) trykk Legg til høyttalergruppe og gi den et nummer (800 som standard) og et navn.
  2. Velg telefonene. Overhead-høyttalere som er satt opp som utvidelser (type Overhead-høyttaler) kan også være medlemmer.
  3. Valgfritt, en multicast-adresse og port.

Multicast

Multicast sender også siden til en multicast-adresse og port (239.0.1.10:5000), som G.711 µ-law, som overhead-høyttalere og mange skrivebords-telefoner kan lytte til uten en samtale hver. En gruppe kan bare ha en multicast-adresse. Den fungerer på ett nettverk: routere passerer ikke multicast med mindre de er konfigurert til det.

Høyttalere og intercom

HøyttalereIntercom
Hvem høreralle i gruppenen utvidelse
Snakk tilbakenei, en veija, begge veier
Hvordanring gruppenummeret*80 og utvidelsen

Telefoner som ikke svarer på en høyttaler selv innen noen få sekunder, utelates, så en telefon uten auto-svar holder aldri en høyttaler opp. Noen telefoner trenger auto-svar (intercom) tillatt i sine egne innstillinger.

Kapittel 36

Hot desking

I nettgrensesnittet: /phones

En hot desk er en delt telefon som blir til den som logger inn på den: for kontorer hvor folk ikke har faste plasser. Lag en ved å slå på Hot desk i utvidelsen telefonen er satt opp som (deskenes egen utvidelse, slik som 900 Desk 3).

Innlogging og utlogging

  1. Ved telefonen, ring *33 og vent på tonen.
  2. Skriv inn din utvidelse og #, og vent på tonen.
  3. Skriv inn din voicemail-PIN og #. En stigende tone betyr at du er logget inn; en synkende tone betyr at det ble avvist.

Deretter ringer samtaler til din utvidelse også denne desken, samt dine andre telefoner, og samtaler du foretar fra den viser ditt nummer og navn og teller som dine på Kostnader. Innlogging på en annen desk flytter deg dit. *34 logger deg ut. Fem feil forsøk låser desken i ti minutter.

Administrasjon av hot desker

På Telefoner (kapittel 4), viser Hot desker hvem som er logget inn hvor; administratorer kan logge noen inn (uten deres PIN) eller ut. Kodene, og en tid hver dag når alle er logget ut, er i Innstillinger. Innlogninger beholdes over omstarter.

Kapittel 37

Hotell og vekkingoppkall

I nettgrensesnittet: /hotel

Vekkingoppkall

Hvem som helst kan bestille en vekking: gjester, nattskifter, personer på vakt. Fra sin egen telefon ringer de *62: BitVoice sier den ene som er satt (hvis noen), deretter angir de tiden som fire siffer (0630), eller trykker stjerne for å avbryte den. På Hotell (kapittel 37) bestiller en administrator en for enhver utvidelse, en gang eller hver dag.

Når det er tid, ringer telefonen med systemnavnet; besvart, hører den "God morgen. Dette er din vekking." (vekking-prompten i Lyder (kapittel 20), på gjestens eller utvidelsens språk). Ubesvart, prøves det igjen (3 forsøk, 5 minutter apart, begge innstilt under Innstillinger på siden), og etter siste gang kan resepsjon-utvidelsen ringes. Med flere servere, gjør bare en vekkingssamtaler.

Gjesterom

Slå på Gjesterom på utvidelsen til hver roms telefon. På Hotel vises hver rom sin gjest, vekking og romstatus, med Sjekk inn og Sjekk ut-knapper.

Hotellsystemet (PMS)

Kapittel 38

Kontakter på hver telefon

I nettgrensesnittet: /contacts

Kontakter er bedriftskatalogen: leverandører, kunder og andre kontorer folk ringer. Hver telefon lister den ved siden av utvidelsene, og når ett av disse numrene ringer inn, viser telefonene og samtalekortet kontaktens navn (når leverandøren sendte ingen). Et nummer matcher uansett hvordan det er skrevet: +1 212 555 0100 og 2125550100 er 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

Legg til kontakter

Legg til kontakt for en om gangen, med så mange numre (arbeid, mobil, hjem, annet) som de har. Importér tar en regneark lagret som CSV hvis første rad navngir kolonnene: navn, selskap, arbeid (eller telefon), mobil, hjem, annet, e-post, notater. BitVoice sjekker hele filen først og sier hvilke linjer som er feil; en kontakt med samme navn som en som allerede er der oppdateres i stedet for å bli lagt til to ganger, og Ersett alle kontakter starter listen på nytt. Eksporter laster ned listen som CSV.

På skrivebords telefoner

Telefoner satt opp av Telefoner (kapittel 4) (provisioning) får katalogen uten mer oppsett:

I nettleser-telefonen

Kontakter under tastaturet finner et navn eller nummer og setter det klart til å ringe.

Fra Microsoft 365 eller Google Workspace

BitVoice kan holde Kontakter i takt med din organisasjons katalog: alle i den som har et telefonnummer, og dens delte kontakter (Exchanges organisasjonskontakter eller Googles delte domenekontakter). I Innstillinger (kapittel 14), Microsoft 365 og Google Workspace, velg tjenesten, gi hva den trenger, og trykk Sjekk nå: den logger inn, teller personene og sier hvilke utvidelser matcher en person etter e-post. Lagre, og Kontakter fylles inn innen en halv minutt; så hver halvtime, eller med en gang med Synkroniser kontakter nå.

Microsoft 365 (en app-registrering; du må kunne gi admin-samtykke):

  1. I Entra-administrasjonssenteret, App-registreringer, Ny registrering: gi den navnet BitVoice, enkeltleiet, ingen omadresseringsadresse.
  2. API-tilganger, Legg til en tilgang, Microsoft Graph, Applikasjons-tilganger: User.Read.All, OrgContact.Read.All og Calendars.ReadBasic. Deretter Gi admin-samtykke.
  3. Sertifikater & hemmeligheter, Ny klienthemmelighet: kopier verdien (vises én gang).
  4. I BitVoice: katalogen (leier) ID, applikasjons (klient) ID og hemmeligheten. En hemmelighet utløper (Microsoft tilbyr inntil to år): når den gjør det, sier kortet at hemmeligheten ble avvist; lag en ny og lim den inn.

Google Workspace (en tjenestekonto; du må være en super-administrator):

  1. I Google Cloud, i ett av dine prosjekter: slå på People API og Google Calendar API, lag en tjenestekonto, og legg til en nøkkel (JSON) til den.
  2. I Google Admin-konsollen, Sikkerhet, Tilgang og datakontroll, API-kontroller, Domene-omfattende delegasjon, Legg til ny: tjenestekontoenes klient-ID, med omfanget https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy.
  3. I BitVoice: nøkkel-filen, og e-posten til en administrator for tjenestekontoen å fungere som.

Hva som kommer inn:

Kapittel 39

Kalendere og ikke forstyr

I nettgrensesnittet: /extensions

En utvidelse kan følge personens kalender: under møter og fritid, går samtaler til voicemail eller blir videreformidlet (til en annen utvidelse eller en mobil), i stedet for å ringe en telefon som ingen vil svare på. Ringegrupper ringer de andre i mellomtiden, og i køer vises agenten som Borte.

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 utvidelsen, Kalender og ikke forstyr, lim inn kalenderens private adresse:

Sjekk leser den med en gang og lister de neste opptatte tidene. BitVoice leser hver kalender hver femte minutt. Fritid (alle døgns hendelser og Outlooks "utenfor kontor") teller alltid; møter teller når Møter teller som opptatt er på; hendelser merket som ledig teller aldri, og heller ikke avlyste hendelser. Gjentakende møter, med hoppede og flyttede hendelser, forstås. Hvis en kalender ikke kan leses, sier Helse det.

Ikke forstyr nå stopper utvidelsen fra å ringe til den slås av, uansett hva kalenderen sier. Utvidelseslisten viser hvem som er borte og til når.

Den private adressen fungerer som en passord: alle med den kan lese den kalenderen, så den holdes med de andre hemmelighetene.

Hver kalender på en gang: Microsoft 365 og Google Workspace

I stedet for en privat adresse per utvidelse, kan BitVoice lese hver persons kalender fra Microsoft 365 eller Google Workspace: konfigurer det en gang i Innstillinger (kapittel 14), Microsoft 365 og Google Workspace (se Kontakter (kapittel 38) for trinnvis vejledning), med Kalendere sier hvem er borte på. Hver utvidelse er koblet til sin person ved sin e-post; en med en privat adresse av sin egen type bruker den i stedet. Utvidelsens innstillinger her (Møter teller som opptatt, Mens opptatt, samtaler) gjelder som med en privat adresse.

Kapittel 40

Mobilappene

BitVoice-appene for iPhone og Android gjør en mobiltelefon til en av utvidelsens telefoner. Den ringer som en skrivebords telefon, på telefonens egen samtale-skjerm, 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

Konfigurere push

En lukket app våknes for samtaler av en push-melding. I Innstillinger (kapittel 14), Mobilappene, velg en:

PushHva du trenger
Push-relayBioDreams relay (med hosting eller støtte) eller din egen bvpush: dens Relay-adresse, Nøkkel-ID og Hemmelighet
Egne apperdine egne bygginger: for Apple, Lag-ID, Pakke-ID, Nøkkel-ID og Nøkkel (.p8); for Google, Firebase-tjenestekonto (JSON)

Sett Adressen appene bruker til denne serverens https-adresse som den nås fra hvor som helst, ikke bare kontoret.

Koble en telefon

  1. Åpne utvidelsen og trykk Legg til en telefon.
  2. Skann QR-koden i appen. Koden fungerer én gang, i ti minutter.

Når en samtale kommer inn

BitVoice våkner appen; den kobler seg, ringer på telefonens egen samtale-skjerm, og blir svart som en hvilken som helst annen telefon for utvidelsen: ring-grupper og køer ringer den med utvidelsens andre telefoner. Utvidelsens side listar sine koblete telefoner, om hver Kan våknes for samtaler, når den sist ble sett og sist våknet, og eventuelle push-problemer. Fjern kobling stopper en telefon fra å ringe med en gang, for en tapt telefon.

Under et oppkall

Appen er en fullstendig utvidelse, ikke bare en oppkallingsfunksjon:

De andre fanene

Live-transkript under et oppkall

Med Skriv ut oppkall live på (Innstillinger (kapittel 14), AI), skrives hver side av et oppkall ut mens det tales og vises på telefonen mens oppkallet pågår. Lyden går til tale-til-tekst-tjenesten (på din egen datamaskin, der det er konfigurert) eller AI-tjenesten mens oppkallet varer. Det er samme skrivning-ut som 911 live-transkripter (kapittel 13), for vanlige oppkall.

Kapittel 41

Videotelefoner

I nettgrensesnittet: /settings

Når begge telefoner i et samtale sender video (videotelefoner, softphone, videodørklokkor), går bildet mellom dem gjennom BitVoice. Ingen å konfigurere: det er på med mindre Innstillinger → Videotelefoner er slått av.

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

Konvertering av video

Telefoner og apper som deler en videokodek (de fleste bruker H.264) får hverandres video som den er. Når to parter ikke har noen kodek til felles (en skrivebords-telefon med bare H.264 og en nettleser med bare VP8), slå på Konverter video mellom H.264 og VP8 i Innstillinger: BitVoice tilbyr da begge kodekene, svarer hver part på sin egen, og konverterer hver vei med ffmpeg, som må være installert på serveren (apt install ffmpeg, brew install ffmpeg; eller gi dens sti). Konvertering koster omtrent en prosessor-kjerne per samtale og legger til en liten forsinkelse, så den er av som standard og brukes bare når nødvendig. Innstillinger sier om ffmpeg ble funnet.

Kapittel 42

Faks: sending og mottak, faks-maskiner og analoge telefoner

I nettgrensesnittet: /faxes

Faksmaskiner, analoge telefoner, dørtelefoner og gamle linjer kobles til gjennom en SIP-gateway (eller en telefoni-kort i BitVoice-datamaskinen: se Telefonikort (kapittel 6)): en ATA (Grandstream HT-serie, for en eller to analoge telefoner eller en faks), eller en større gateway (Patton SmartNode, AudioCodes MediaPack og Mediant) for mange analoge porter, en ISDN-linje (BRI/PRI) eller gamle analoge linjer (FXO). Hver port registrerer seg hos BitVoice som en utvidelse, som 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

Motta faks uten en faks-maskin. På Faks, legg til et faks-nummer (300, si), med e-postadressene hver faks går til. Deretter i Telefonvei (kapittel 8) send en telefonnummers samtaler til den. BitVoice svarer som en faks-maskin, bytter samtalen til T.38 og tar imot faksen; hver faks blir en PDF, lagret på Faks (Vis, PDF) og sendt via e-post. En faks som bryter av delvis beholder sidene som ankom og sier det. Hver faks i listen viser den sendende eller mottakende maskinens egen identitet når den avviker fra nummeret, og hastigheten sidene gikk på (14 400 bit/s er den raskeste; en maskin hvis fakser stadig feiler på en lav hastighet har vanligvis en dårlig linje). Dette krever en leverandør som støtter T.38 (de fleste gjør det); en faks sendt som lyd kan ikke mottas på denne måten. Prøvd med T38Fax, en faks-leverandør: registrer stammen med dens brukernavn og passord til sip.t38fax.com, port 5080 (UDP); tillat UDP fra dens nettverk (8.34.182.0/24 og 8.20.91.0/24) gjennom enhver brannmur foran BitVoice.

Send en faks. På Faks, Send en faks: velg faks-nummeret det går fra, skriv nummeret til å sende til, skriv en notis hvis du ønsker (den blir den første siden) og legg til dokumenter. Tekstfiler og bilder (PNG, JPEG, GIF) fungerer overalt. PDF trenger poppler på serveren (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument og RTF trenger LibreOffice også. Siden sier hvilke serveren kan gjøre. Hver side får en header-linje, som faks-maskiner skriver ut: tiden, faks-nummerets navn, dens identitet og side-tellingen. Anropet går ut fra identitetens siffer (+1 212 555 0300 ringer fra +12125550300), eller fra faks-nummeret selv når identiteten ikke er et nummer. Sider er US-brevstørrelse i Nord-Amerika og A4 andre steder, fra landet i Innstillinger.

BitVoice ringer nummeret over dine utgående ruter, som en utvidelse ville, og sender på den raskeste hastigheten linjen bærer (14 400 bit/s, langsommere hvis linjen er dårlig). Faks fra ett faks-nummer går ett om gangen. Et beskjeftiget nummer, eller ett som ikke svarer, prøves igjen fem minutter senere, tre ganger i alt. Sendte faks er listet med mottatte faks: Sendt, Venter på å sende, Feilet (med Prøv igjen), eller Delvis sendt når linjen brøt etter noen sider.

Email to fax. Below the list, set up a mailbox for BitVoice to read (IMAP over TLS, port 993; for Google and Microsoft mailboxes use an app password), then Test and Save. Anyone allowed to send writes to that mailbox with the fax number in the subject (Fax 212 555 0199), or to a plus address (fax+2125550199@example.com) if the mail server takes them. Attachments become the pages and the email's own words the cover note (the signature and quoted mail are left out). It goes from the fax number that lists the sender: its Email each fax to addresses may always send, and May also send faxes by email adds others (whole addresses, or @example.com for a domain). The sender gets an email when the fax has gone through, or why it could not.

E-post er lett å forfalske, så BitVoice sender en faks bare når din postserver fant ut at den virkelig kom fra avsenders domene (DKIM, SPF eller DMARC, i Autentiserings-resultat-linjen den legger til). Andre meldinger droppes uten svar. Slå Aksepter e-post avsenderens domene ikke garanterer for på bare for en postkasse ingen ekstern e-post kan nå.

Faks maskiner på gateways. BitVoice sender faks over T.38, den internasjonale faksstandarden for internett: når gatewayen hører en faks tone, bytter den til T.38, BitVoice ber den andre siden (din provider eller en annen gateway) om å bytte også, og sender faksen mellom dem. Hvis den andre siden ikke kan håndtere T.38, forblir samtalen på G.711 og faksen sendes som lyd, som fungerer på et godt nettverk. Aktive samtaler viser faks (T.38) mens en faks pågår.

For pålitelige faks:

Kapittel 43

Innboks: web-chat, WhatsApp og Messenger

I nettgrensesnittet: /inbox

Den Innboksen (kapittel 43) inneholder alle skrevne samtaler i én liste: chatboksen på nettstedet ditt, WhatsApp, Facebook Messenger og tekster (kapittel 44). Alle som er logget inn på nettgrensesnittet kan svare; den første som svarer tar samtalen (hver enkelt kan overføre den med Besvart av), og Lukk legger den bort til personen skriver igjen. Uleste samtaler teller seg, og listen oppdateres automatisk.

Chat-boksen på nettstedet ditt

Under Kanaler, slå på Web-chat, velg tittelen, fargen og første linjen, og legg til linjen som vises på nettstedets sider:

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

Den tegner en chat-knapp i hjørnet av hver side; besøkende skriver (med sitt navn hvis de ønsker) og ser dine svar mens de kommer. Samtalen forblir i deres nettleser, så den fortsetter mens de beveger seg mellom sider. List opp dine nettsteder under Kun på disse nettstedene så boksen kjører ingen andre steder. Besøkende må nå denne serverens adresse fra internettet, med et sertifikat nettleserne stoler på (Let's Encrypt (kapittel 14)). Ti nye chats fra en adresse på ti minutter er maksimum BitVoice tar.

WhatsApp

WhatsApp Business-numre på Metas Cloud API. På Metas utviklerside, lag en app med WhatsApp, legg til ditt nummer og lag en systembruker med en permanent tilgangstoken. Under Kanaler, slå på WhatsApp og gi telefonnummer-ID og forretningskonto-ID (begge fra API-oppssett), tilgangstoken og appens app-hemmelighet, så lagre. I appens WhatsApp-konfigurasjon, sett webhook: tilbakekall-adressen og verifiser token BitVoice viser, abonnert på *meldinger*.

WhatsApp lar deg svare fritt i 24 timer etter kundens siste melding; etter det aksepterer det bare meldingsskjemaer godkjent i WhatsApp Manager. Svar-boksen blir da en skjema-velger: velg et skjema (det lister opp kontoens skjemaer, med språk og type), fyll inn verdiene ({{1}}, {{2}} ...), sjekk forhåndsvisningen, som er hva kunden vil lese, og Send skjema. Skjemaer innboksen ikke kan fylle ut, er listet grått med årsaken: ett med bilde-, video- eller dokumentoverskrift, en variabel i overskriften eller en knapps lenke, navngitte parametre eller en kodeknapp; og de som ikke er godkjent enda. Lag skjemaer i WhatsApp Manager; Meta gjennomgår hver enkelt, vanligvis innen minutter.

Facebook Messenger

For en Facebook-side: i Meta-appen, legg til Messenger, kobler siden og lag en side-tilgangstoken. Under Kanaler, gi side-ID, side-tilgangstoken og app-hemmelighet; så sett webhook (adressen og verifiser token som vises), abonnert på *meldinger* og *messaging_postbacks*. Svar er tillatt i 24 timer etter personens siste melding. Fra da til 7 dager, tar Messenger svar skrevet av en person (sendt med Metas *human agent*-tag: appen trenger Metas Human Agent-tillatelse, bedt om i App-gjennomgang); den automatiske hilsenen går aldri da. Etter 7 dager, tar innboksen ikke svar før de skriver igjen.

Hver webhook sjekkes med app-hemmeligheten (Metas signatur) før BitVoice tror på den, og en melding Meta sender to ganger, blir lagret én gang. Bilder, lydnotater og andre vedlegg vises som hva de er ("[bilde]"); åpne dem i Metas egne apper.

Automatisk hilsen, når den er satt, svarer på den første meldingen i hver ny konversasjon med en gang.

Kapittel 44

Bedriftsteksting (SMS)

I nettgrensesnittet: /texts

Send og motta tekstmeldinger fra bedriftsnumre på Tekster. Tekster går gjennom en tekst-leverandør. Innbygget: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute og VoIP.ms, pluss Din egen webhook for enhver annen tjeneste eller en egen gateway. Ethvert antall leverandørkontoer kan brukes samtidig: hvert nummer sier hvilken som 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

Oppsett

  1. I leverandørens portal, finn kontoens API-detaljer. Skjemaet ber om eksakt hva leverandøren kaller dem (Twilio: Konto-SID og autentiseringstoken; Telnyx: en API-nøkkel; Bandwidth: API-bruker, passord, konto-ID og meldingsapplikasjons-ID; SignalWire: også ditt rom-adresse) og sier hvor du finner dem.
  2. På Tekster, Tekstoppsett, legg til leverandøren med dem, og lagre. BitVoice viser en adresse for mottatte tekster: sett den i leverandøren som hvor mottatte meldinger sendes (dens tilbakekall, webhook eller meldings-URL). For VoIP.ms, legg til ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} til slutten. Leveringskvitteringer sendt til samme adresse, ignoreres. BitVoice må være tilgjengelig fra internettet der.
  3. Legg til hvert nummer du tekster fra (med landskoden), leverandøren som bærer det, og utvidelsene for å varsle på e-post når en tekst kommer inn.

US 10DLC

US-operatørene blokkerer tekstmeldinger fra vanlige bedriftsnumre som ikke er registrert. Registrer din merkevare og deretter en kampanje med din tekstleverandør; sjekklisen på Tekster sporer hvor de står, og advarer når din eksempelmelding mangler avmeldingsordene operatørene forventer.

Samtaler

Hver samtale viser hvem det er (fra Kontakter), uleste tekster og tråden. Send knappen sender; telleren viser hvor mange tekster en lang melding tar. Når noen svarer STOPP, kan ikke flere meldinger sendes til dem fra det nummeret før de svarer START. Mottatte tekster vises også som en melding i BitVoice.

Kapittel 45

Overføringsorienteringer

I nettgrensesnittet: /settings

Så en ringsignal behøver aldri å gjenta seg selv: med Brief hver enkelt en samtale overføres til på (Innstillinger, AI), når en samtale overføres, skriver BitVoice en to-setningers sammenfatting av samtalen så langt (hvem som ringer, hva de ønsker, alt som allerede er lovet) for personen det går til. Den vises på deres nettleser-telefon med den ringende samtalen, på Aktive samtaler (kapittel 46), og som en tekst på deres skrivebords-telefons skjerm (for telefoner som viser SIP-meldinger).

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åte når AI-resepsjonisten overfører en ringende til en person: orienteringen kommer fra hva ringende fortalte assistenten.

Det trenger AI-tjenesten og en tale-til-tekst-modell (Innstillinger, AI), og samtalelyden så langt (inntil fem minutter) sendes til den tjenesten for å bli skrevet ut. En sammenfatting tar noen sekunder, så den kan vises like etter at telefonen begynner å ringe.

Del 4

Kunder og innsikt

Vite hvem ringte og hvordan det gikk: live-samtaler og historikk, kundetidslinje, CRM, opptak og samtykke, kvalitet, kostnader og ringers rykte.

Kapittel 46

Aktive oppringninger

I nettgrensesnittet: /calls

Aktive oppringninger viser hver oppringning i gang, oppdatert mens det skjer: hvem ringte hvem, hvor lenge det har pågått, dens kodeker og dens 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

Hva administratorer kan gjøre

HandlingHva det gjør
Legg påavslutter samtalen for begge parter
Åpne dørenfor et oppringning fra en dørstasjon
Pause innspillingfor et kortnummer: den pausede delen er stille i innspillingen og merket i historikken (Innspilling av samtale (kapittel 51))
Lyttehøre samtalen stille
Whispersnakke med agenten alene; oppringeren hører ikke
Bargedelta i samtalen; alle hører deg

For å lytte, viske eller barge, trykk Overvåk, velg telefonen du vil bruke under Fra telefon og trykk Ring meg: din telefon ringer, og når du svarer, slår du inn i oppringningen. Du kan bytte mellom å lytte, viske og barge mens du er i den.

Hva som vises ellers

Når et oppkall slutter, flyttes det til Oppkallshistorikk (kapittel 47).

Kapittel 47

Oppringningshistorikk

I nettgrensesnittet: /history

Hver ferdig oppringning: hvem ringte hvem, når, hvor lenge og hvordan den avsluttet. Sorter kolonnene, spill av innspillinger (en pause for kortnumre er merket), og last ned listen som CSV. Hvor lenge innspillinger beholdes, er angitt i Innstillinger, Oppringningsinnspilling; en rettslig hold (kapittel 73) holder dem lengre.

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 ble rutevalgt

Under hver samtale-resultat, Hvordan det ble rutevalgt lister, på vanlig språk og i rekkefølge, hva bestemte hvor samtalen gikk: den innkommende ruten som tok den, om en timeplan var åpen eller stengt og tid, en toggles side, hva en rutevalgsskript valgte (eller at dens fallback tok samtalen), tastene trykket i et meny, hvem var borte, hvem hadde ingen telefon koblet til, hvem ikke svarte, den utgående ruten og trunkene som ble brukt (og en trunk som helse-dommeren flyttet bak de andre), toll-svindel-vaktens dom, og, for en innspilt samtale hvis parter er under forskjellige samtykkes-regler, hvilken regel som ble brukt.

Quality, sound and encryption

The Quality column shows each answered call's score (MOS, out of 5) and two marks when they apply:

Transkriberinger og søk

Med AI på og Transkriber innspilte samtaler slått på (Innstillinger, AI), hver innspilt samtale skrives ut, med en kort sammenfatting og dens handlingselementer: hva noen ble enige om eller ble bedt om å gjøre. Hver side av samtalen skrives ut separat fra opptakene, så transkriptet viser hvem sa hva, og når. Transkript-knappen ved siden av en opptak åpner den; administratorer kan også transkribere en enkelt samtale, eller transkribere en igjen.

Søk hva som ble sagt finner samtaler ved ord fra deres transkriberinger, sammenfatninger og handlingselementer. Bare innspilte samtaler transkriberes. En transkript slettes med dens opptak, og lesing eller søking av transkriberinger noteres i revisjonsloggen, som å spille av en opptak.

Kapittel 48

Kundetidslinje

I nettgrensesnittet: /timeline

Kundetidslinjen viser alt med ett telefonnummer over det siste året, nyeste først, så den som plukker opp vet 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

Hva det viser

ElementMed
Samtalerhvem som tok dem, hvor lenge og med en transkript, en sammenfatting, opptak og transkript
Voice-mailsderes sammenfatninger
Teksterbegge veier
Tilbakekallbedt om og om det er gjort
Notaterteamets egne notater

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

Opening it

From a caller card (Timeline), from Contacts, from an incoming call in Call history, from a text conversation, or type a number at the top of Timeline (kapittel 48).

Notater

Administratorene kan Legg til en notat for teamet: det vises på tidslinjen for alle, med hvem som skrev det og når, og kan fjernes.

Kapittel 49

CRM: oppringerkort og oppkallshistorikk

I nettgrensesnittet: /settings

Koble til en kundesystem i Innstillinger (kapittel 14), CRM. Den fungerer med alle systemer som har en webadresse, uten kode skrevet for 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

Oppringerkort

Mens et oppkall fra utsiden ringer, viser Live calls et kort: hvem det er (fra din CRM, eller utvidelsens navn), hvor ofte de har ringt i 90 dager, eventuelle tilbakekall (kapittel 30) de venter på, og en sammenfatting av deres siste transkriberte oppkall. Nettside-telefonen viser et kortere kort til personen som svarer: hvem det er, tidligere oppkall og ventende tilbakekall, men ikke andre personers oppkallssammenfatninger.

For navnet, sett Oppslagadresse: BitVoice spør den (GET) med oppringers nummer i stedet for {number}, sender Oppslagheader med dets verdi (en vault-referanse fungerer), og forventer JSON med navn, selskap, url og notater; 404 betyr ukjent. Svar blir lagret i fem minutter. Åpne i CRM-lenke legger en lenke til oppringeren på kortet. Bruk Søk det opp for å prøve et nummer før du lagrer.

Et CRMs eget svar

De fleste CRMs svarer på en søkning i deres egen form, vanligvis en liste over treff, ikke BitVoices {"name": ...}. Åpne Svarfelt og angi hvor hver del er, som en punktert sti: et navn går inn i et objekt og et nummer inn i en liste, så list.0.name er navnet på det første treffet. Lenke til kontakt kan være en sti til en lenke som CRM-en gir, eller en nettadresse med stier i klammer, som https://crm.example.com/#Contact/view/{list.0.id}. Et tomt felt leser BitVoices eget navn for det. En søkning som ikke finner noen er det samme som 404: kortet sier at oppringeren ikke er kjent. Prøv et nummer med Søk det opp før du lagrer.

For eksempel, EspoCRM (testet mot en ekte EspoCRM): lag en API-bruker (Administrasjon, API-brukere, autentisering ved API-nøkkel) med en rolle som kan lese kontakter og kontoer, og deretter sett:

EspoCRM holder numre i internasjonal form (+15405550117), som BitVoice passerer. Andre CRMs fungerer på samme måte med deres egen søkeadresse og felt navn; sjekk formen på deres svar i deres API-dokumentasjon, eller med Søk opp, hvis melding navngir hva den fant.

Logg av samtaler

Sett Loggadresse for samtaler og Hemmelig nøkkel for signering, og hver samtale sendes deretter når den avsluttes (hendelse call.ended), igjen med en sammenfatting, handlinger og transkript når det er transkribert (call.summarized), og hver booket tilbakekalling (callback.new). Hver POST-innhold bærer X-BitVoice-Event, X-BitVoice-Timestamp og X-BitVoice-Signature: sha256= etterfulgt av HMAC-SHA256, med hemmelig nøkkel, av tidsstempel, en punktum og innholdet. En mislykket levering prøves fire ganger over omtrent ett minutt; hvis den fortsatt mislykkes, sier Health det. Send en testhendelse sjekker adressen og hemmelig nøkkel.

Kapittel 50

Innsikt i samtaler for overordnede

I nettgrensesnittet: /quality

For kontaktssentere: bevis om hvordan samtaler gikk, for en overordnet å lytte til, aldri 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 en samtale Transkript, Hvordan det gikk viser, målt fra opptakets lyd alene: hvor mye hver side snakket, hver sides lengste strek, hvor ofte hver side begynte å snakke over den andre, hvor lenge begge snakket samtidig, og den stille (en lang stillhet er ofte et hold eller dødt luft).

Med Noter hvordan hver transkribert samtale gikk på (Innstillinger, AI), leser AIen også transkriptet og sier hvordan oppringeren syntes på begynnelsen og slutten, og lister opp til seks øyeblikk: Gikk bra, Se på (snakke over oppringeren, et langt hold, et uklart svar), Ikke besvart (et spørsmål oppringeren stilte som ikke fikk noe svar) og Løftet (noe noen sa de ville gjøre), hver med tid og ord sagt, så du kan gå rett til det. En administrator kan be om det på enhver transkribert samtale med Se på denne samtalen.

På Kvalitet på samtaler (kapittel 50) summerer Samtaler, etter hvem tok dem de transkriberte samtaler for perioden per person: deres andel av samtalen, deres lengste sammenhengende tale, hvor ofte de talte over samtalepartneren, stille tid, samtaler som endte med at samtalepartneren ble irritert, og øyeblikkene som er merket. Bruk det til å velge samtaler å lytte til, ikke til å rangere mennesker.

Veiledningsnotater er dine egne ord på en samtale, i øyeblikket de handler om: under Hvordan det gikk, skriv Øyeblikk (1:05, eller la det stå tomt for begynnelsen) og Veiledningsnotat, og trykk Legg til notat. Notater listes i rekkefølgen til samtalen med hvem som skrev dem og når; administratorer skriver og fjerner dem, visere leser dem med transkriptet, og å legge til eller fjerne ett notat noteres i revisjonsloggen. De følger med opptakene, så deres oppbevaring og juridiske hold dekker dem også. Veiledningsnotater på Samtalekvalitet teller dem per person.

Kapittel 51

Oppringingsopptak og kortbetalinger

Opptak er satt i Innstillinger (kapittel 14), Oppringingsopptak: av, hver oppring, eller bare oppringene til utvidelser merket Opptak av oppring. Opptak spilles av fra Oppringslogg (kapittel 47), og med AI på blir de skrevet ut og summerert.

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

Informere mennesker

Noen steder må alle på et oppkall bli informert om at det er oppbevart: Announce, Beep og regler etter region er i Recording consent (kapittel 52).

Kortbetalinger (PCI DSS)

Kortnumre må ikke lagres i opptak. Før en oppringer leser ett høyt, trykker personen på utvidelsen *7; *8 gjenopptar. Pause opptak på Live calls (kapittel 46) gjør det samme. Den pauseerte delen er stille i opptaket og er listet i oppkallshistorikken, så en revisor kan se hvor og hvor lenge.

Konferanserom

Et rom med Opptak av rom på blir lagret som ett opptak av hele rommet (Konferanserom (kapittel 34)).

Hvor lenge ting blir lagret

Innstillinger bestemmer hvor mange dager opptak, oppkallshistorikk og voicemail blir lagret; eldre enn det slettes innen time. Alt under en rettslig hold (kapittel 73) blir lagret uansett alder. Arkiv (kapittel 72) kan lagre kopier andre steder.

Administratorene og seerne kan spille av opptak og lese transkriberinger; bare administratorer kan transkribere et oppkall eller transkribere det igjen. Å spille av et opptak eller lese dets transkript blir notert i revisjonsloggen.

Kapittel 53

Samtalekvalitet

I nettgrensesnittet: /quality

How calls sounded over the last day, week, month or 90 days, from the sound BitVoice itself received on each side of each call. Phones are grouped by their site (kapittel 12) (or "no site"), and calls from outside by the provider's line they came in on.

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

Hver plass viser sine samtaler, gjennomsnittlig score (MOS, på en skala fra 1 til 5: over 4 er bra, under 3,6 lyder dårlig), andelen lydpakker som aldri ankom, og jitter (uregelmessig forsinkelse). Under dette forteller BitVoice hva som er galt på vanlig språk, for eksempel "Tap av lydpakker i hovedkontorets nettverk: 3,2% av lyden ankom aldri, hovedsakelig mellom 14:00 og 16:00", samt hva som bør sjekkes. Diagrammet viser lyden som gikk tapt etter klokkeslett.

Diagnosen sammenligner de to halvdelene av samme samtaler: lyden fra stedets telefoner og lyden fra leverandøren som samme samtaler gikk gjennom. Når den andre halvdelen ankommer ren, er tapet på dette stedets side, og det sier det; når begge halvdelene taper lyd, er stedet ikke alene skyldig og det peker på hva samtaler deler, dette systems eget internett-tilknytning. Hvis hvert sted mister lyd samtidig, er årsaken likeledes hva de deler. Hvordan dette ble arbeidet ut listar årsakene, steg for steg (samtalekvalitetsregelboken, se Sikkerhet (kapittel 60), "Hvordan BitVoice avgjør"). Steder med færre enn tre samtaler blir ikke vurderinger. Samtalekvalitet per samtale er også i Samtalehistorikk (kapittel 47) (Kvalitetskolonnen) og, mens samtaler er aktive, på Aktive samtaler (kapittel 46).

En samtale som koblet til, men fikk ingen lyd i det hele tatt fra en side, blir telt for seg, under uten lyd, og plassert først: det er ikke dårlig lyd, men lyd som aldri ankom, nesten alltid en brannmur eller NAT-router som lar SIP gå gjennom og holder media ute. Plassens råd sier hva som bør sjekkes (for en leverandør, dens media-adresser).

Kapittel 54

Kostnader og budsjetter

I nettgrensesnittet: /costs

BitVoice priser hver samtale fra hva din leverandør beregner, og viser månedens utgifter etter avdeling, person og trunk, med de dyreste samtaler.

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å Trunker (kapittel 7), åpne en trunk og dens Samtalepriser. Hver pris dekker numre som starter med noen siffer, slik nummeret sendes til leverandøren (siffer bare, så 44 for Storbritannia, 1900 for US premium rate); den lengste matchen vinner, og en pris uten siffer dekker alle andre numre. Gi prisen per minutt, eventuell avgift per besvart samtale, faktureringssteg (60 sekunder for hele minutter, 6 eller 1 for finere) og eventuell minimum. Innkommende samtaler, per minutt er for gratis numre du betaler for å motta. Hva ville det koste sjekker et nummer før noen ringer det. Valutaen settes på Kostnader.

En samtalekostnad er fast når den avsluttes, med prisene på tidspunktet; å endre en pris endrer ikke tidligere samtaler. Kostnader sier hvor mange besvarte utgående samtaler ikke hadde pris.

Avdelinger og budsjetter

Gi utvidelser en Avdeling (i utvidelsen). På Kostnader, legg til et budsjetter for hver samtale eller for en avdeling: en advarsel vises i BitVoice, og sendes til budsjetts e-postadresse og advarseladresse, på 80% og igjen på 100% av måneden.

Advarselen

Utgående samtaler koster mer enn dette i en time utløser en advarsel når utgående samtaler overstiger denne summen innen en time. En plutselig rekke dyre samtaler er det vanlige tegnet på tollsvindel (en stjålet telefonpassord): sjekk Samtalehistorikk, så deaktiver utvidelsen eller trunken.

Kapittel 55

Ringende ID-reputasjon og merket samtale

I nettgrensesnittet: /reputation

Telefonselskaper kjører spam-filtre som kan merke et bedriftsnummer "Svindel sannsynlig", eller blokkere det, og deretter svarer nesten ingen. Ringende ID-reputasjon overvåker hvert nummer du ringer ut fra, fra dine egne samtaler, og sier i klart språk hvordan det går:

Numre med færre enn 20 samtaler vises som for få til å dømme.

Dine utgående numre gir hvert nummer et navn (sendt som navnet til oppringeren), en årsak for å ringe og et logo (en https://-bilde). På en trunk med Send merket oppringer-ID på, går logoen og årsaken ut som rik oppringerdata (RFC 9796 Call-Info); operatører som støtter merket ringing viser dem på den ringede telefonen. De fleste telefoner viser navnet fra oppringer-navn (CNAM)-databasen i stedet, som din provider setter: spør dem. Overvåk setter en advarsel på Helse når et overvåket nummer begynner å se merket ut.

Siden sier også hva du skal gjøre når et nummer er merket.

Kapittel 56

Spam-beskyttelse og STIR/SHAKEN

I nettgrensesnittet: /settings

I USA og Canada, signerer leverandøren en samtale starter med sin samtale-ID (STIR/SHAKEN): A når den kjenner ringende og kan bruke nummeret, B når den kjenner ringende, men ikke nummeret, C når den bare har videreformidlet samtalen. Din leverandør forteller enten BitVoice sin dom (verstat) eller sender den signerte Identitet-headeren videre, som BitVoice så sjekker selv: signatur, at den er under en minutt gammel, og at den navngir numrene i denne samtalen. Dommen vises som Verifisert, Delvis verifisert, Uverifisert eller Ikke verifisert på Aktive samtaler og i Samtalehistorikk.

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 Innstillinger, Spam-beskyttelse, velg hva som skjer når en samtale-ID mislykkes verifisering (ringe, ringe merket, eller avvis), når den ikke er verifisert i det hele tatt, og når nummeret er skjult. En merket samtale ringer med Spam? (eller din egen merking) før ringendes navn. Blokkerte numre avvises; en post som slutter med * blokkerer et nummerområde (+1900* er alle amerikanske premium-numre). Alltid tillatt numre avvises eller merkes aldri. I Samtalehistorikk, knappen for å blokkere en ringende legger dem til listen; avviste samtaler vises som Blokkert.

Innen en time etter et nødkall fra noen utvidelse, avvises ingen kall (blokkerte ringer i stedet), i tilfelle det er nødetaten som ringer tilbake. Et 911-kall (fra ESInet eller en CAMA-trunk) avvises aldri eller hindres av skjerming.

Callers BitVoice does not know

A caller is known when the number is always allowed, in the contacts (kapittel 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:

ValgHva ringeren får
Ring som vanligsamtalen ringer som noen andre (standard)
Robot-test førstBitVoice svarer og sier "For å bli koblet til, trykk" og en tall, som endres hver samtale. Riktig tast setter dem igjennom til hvor samtalen var ment å gå; noe annet, eller ingenting (to ganger), og de går til Ringer som mislykkes i testen går til, eller hører farvel. Robot-samtaler trykker det ikke
Send andre stederingenting ringer: de går rett til stedet valgt, en voicemail-boks for eksempel

Robottesten trenger ord: i Lyder (kapittel 20), ta opp eller lag (med en tale-tjeneste) skjermingsprompene og tallene 1 til 9 på kallerens språk. Inntil de er tatt opp, ringer slike oppkallinger som vanlig (en kaller kan ikke bestå en test de ikke kan høre), og Helse sier det. En kaller som består, teller som kjent i 90 dager. Testen besvarer oppkallet, så kallers leverandør starter å belaste dem fra det øyeblikket, som for ethvert besvart oppkall. Oppkallingshistorikken viser hver oppkallings resultat (bestått, feilet, sendt) og hvorfor-sporet sier hva som skjedde.

Et spam-database

BitVoice kan spørre en rykte-tjeneste om hver ukjent kaller før oppkallet ringer. Bruk Nomorobo via Twilio fyller inn Twilio Lookup med Nomorobo spam-poeng (installer Nomorobo-tillegget i din Twilio-konto, så skriv inn dets konto-ID og autentiseringstoken); enhver annen tjeneste som svarer i JSON fungerer også: gi dens adresse med {e164} (+12125550142) eller {number} (som leverandøren sendte det), hvor dens uttalelse er (Uttalelse-felt, en punktert sti), og når det betyr spam (et poeng på eller over Spam ved poeng, true, eller teksten i Eller spam når teksten er, som f.eks. BLOCK). Velg hva som skjer med en kaller det kaller spam: ring merket, robottesten eller avvist.

Blokker den siste kalleren

Like etter et uønsket oppkall, tast *32 (Funksjonskoder (kapittel 32)) fra telefonen det ringte: den siste ytre nummeret som ringte den utvidelsen i løpet av den siste dagen havner på blokkeringslisten, og telefonen leser nummeret igjen. Et alltid-tillatt nummer blir ikke blokkert, og telefonen sier det. Hver enkelt er i kontroll-loggen, med hvem blokkerte det.

Forslag fra dine oppkall

BitVoice leser de siste 30 dagers oppkall fra utsiden for numre som ringer igjen og igjen og blir kvitt med en gang: tre eller flere oppkall, nesten alle av dem over innen 10 sekunder, eller to robottester feilet, og aldri en ekte samtale (noen som snakker 30 sekunder eller mer). Kjente numre er ikke med. Hver kommer med hvorfor; Blokker setter det på blokkeringslisten og Ikke spam betyr at det aldri blir foreslått igjen. Ingenting blir blokkert før en person sier det.

For å sjekke sertifikater mot STI-myndighetene, lim inn deres sertifikater under STI-sertifikatmyndigheter; uten dem, sjekker BitVoice at samtalen ble signert med sertifikatet det navngir, men ikke hvem utstedte det sertifikatet.

Signering av egne samtaler

De fleste leverandører signerer kundenes samtaler selv. Hvis din leverandør lar deg signere (eller du er en leverandør som kjører BitVoice), slå på Signer avsender-ID på trunken (Trunker (kapittel 7)) og angi STI-sertifikat (fra en STI-sertifiseringsmyndighet, med din tjenesteleverandørkodetoken) og dens privat nøkkel (P-256). Hver samtale ut via trunken har deretter en signert Identity-header (ES256, som SHAKEN krever).

Del 5

Kjøre BitVoice

Holdning det trygt og kjørende: administratorer og pålogging, sikkerhet, endringer og oppdateringer, flere servere, vertede organisasjoner, kodeker, Teams, importering, automatisering og verktøy for feilsøking.

Kapittel 57

Administratorene

I nettgrensesnittet: /users

Administratorene er personer som logger inn på dette nettgrensesnittet. Ansatte som bare tar hånd om sine egne samtaler, bruker ansattportalen i stedet og trenger ingen konto her (Ansattportalen (kapittel 33)).

Roller

RolleKan
Administratorendre alt, avspille opptak, se hver hemmelig feltets eksistens (aldri verdien)
Viserse alt, endre ingenting; hemmeligheter er skjulte

En endring av rolle eller passord, logger personen ut overalt på en gang.

To-trinns innlogging

Hver person aktiverer to-trinns innlogging for seg selv: Konfigurer viser en nøkkel for en autentiseringsapp; å angi koden den viser, aktiverer den. Deretter ber innlogging om en kode i tillegg til passordet. Å deaktivere den, krever passordet.

Enkelt innlogging

Med enkelt innlogging (Innstillinger), logger personer inn med organisasjonens konto (Microsoft Entra, Google, Okta, enhver OpenID Connect-leverandør), og en konto opprettes for dem første gangen. Se Enkelt innlogging (kapittel 58).

API-tekster

Programmer (Terraform, skript) bruker API-tekster i stedet for passord: opprettet på denne siden, vist én gang, og tilbakekalt når som helst. Hver tekst er en administrator eller en viser. En tekst laget med Navngir personen det virker for (for en CAD) kan sende X-BitVoice-On-Behalf-Of med personens navn, og opptak navngir da personen ved siden av teksten (911-samtaler (kapittel 77)).

Kapittel 58

Enkelt innlogging

Enkelt innlogging lar mennesker logge inn i BitVoice med deres arbeidskonto, gjennom enhver OpenID Connect-leverandør: Microsoft Entra ID, Google, Okta, Keycloak og andre. Å forlate organisasjonen fjerner deres tilgang 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

Setting it up

In Settings (kapittel 14), Single sign-on:

  1. Register an application with the provider, with the Redirect address shown here.
  2. Fill in for a provider sets the Issuer for the common ones; copy the Client ID and Client secret from the provider.
  3. Name the provider's Administrator groups and Viewer groups. Groups claim is where the provider puts them (groups unless set).
  4. Optionally change the Button text on the sign-in page.
  5. Switch on Use single sign-on.

Hvordan det fungerer

Kapittel 59

Bedriftskatalog (Active Directory og LDAP)

BitVoice kan lese bedriftskatalogen din, Active Directory eller en annen LDAP-tjener (OpenLDAP, Samba, 389 Directory Server, FreeIPA): personer med telefonnummer blir utvidelser, kataloggrupper fyller ringgrupper, og personer logger inn på webgrensesnittet med deres katalogpassord. BitVoice leser bare katalogen; den skriver aldri til den.

Tilkobling

I Innstillinger (kapittel 14), Bedriftskatalog:

  1. Velg Active Directory eller OpenLDAP eller en annen LDAP-tjener: det setter hvilke attributter som leses (sAMAccountName eller uid for påloggingsnavn, displayName eller cn, mail, telephoneNumber). Endre noen av dem i dens boks.
  2. Tjener: ldaps://dc1.example.com (port 636), eller ldap://... med StartTLS på. Vanlig LDAP avvies med mindre tjeneren er denne datamaskinen, fordi passord ville krysse nettverket uten kryptering. Når tjenerens sertifikat kommer fra din egen sertifikatmyndighet, lim inn myndigheten i Bedriftssertifikatmyndighet.
  3. Lese-konto og Dens passord: en konto som har tillatelse til å lese personer og grupper (reader@example.com på Active Directory). Passordet kan være en referanse til en nøkkelhvelv (Innstillinger, Nøkkelhvelv).
  4. Base DN: hvor personer og grupper er (dc=example,dc=com). Hvilke personer begrenser dem med en LDAP-filter; på Active Directory, er disabled accounts alltid utelatt.
  5. Test logger inn med lese-kontoen og leser alle, uten å endre noe: det viser hvor mange personer det fant, hvor mange som har et nummer, og hvilken utvidelse hver ville få.

Extensions and ring groups

Pålogging

Med Personer logger inn her med deres katalognavn og passord på, tar påloggingsiden katalognavn og passord i tillegg til BitVoices egne konti:

Kapittel 60

Sikkerhet

I nettgrensesnittet: /security

Et telefonisystem på internett angripes innen timer: skannere prøver passord på hver SIP-port, og et overtatt system kjører opp samtaler til premium-numre. BitVoice er bygget for å motstå 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

Mot passordgjetting

Mot svindel

Svindelvakt

Slå det på i Innstillinger, Svindelvakt. Hver samtale utenfor landet (etter +, 00 eller 011, og steder som deler +1 med Nord-Amerika, men er andre land, som Jamaica, et klassisk svindel-mål) blir da dømt før den plasseres:

SituasjonHva den gjør
En samtale utenlands til et land denne utvidelsen ringte i de siste 90 dagenelar den gå gjennom
En første samtale til det landet i 90 dagerlar den gå gjennom og rapporterer det
En første samtale der utenfor Arbeidstid, eller plassert fra utenfor (en innringing, en videreføring)ber om PIN som er bedt om (med ingen valgt, avviser den)
Flere enn Samtaler utenlands i 10 minutter fra en utvidelseavviser den
En første samtale utenlands mens noen gjetter passord (tre feil på rad fra en adresse, eller en blokkering, i de siste 60 minuttene)avviser den
En nødnummerlar den alltid gå gjennom

Land som alltid er tillatt (ringekoder, som 44) og Unntak (en utvidelse unntatt til en dag, for en reise) fjerner "første samtale" og "utenfor timer"; de unntar aldri mange samtaler i en kort tid eller et angrep, fordi en stjålet passord ser ut til å være godkjent også. Hvis samtale-historikken ikke kan leses, vet ikke vakt om en samtale er en første, og noe som ikke måles er aldri tatt for trygt: den ber om PIN-en. Hver dom blir listet på Sikkerhet (kapittel 60) med dets grunner, og er på samtale-posten i Samtalelogg (kapittel 47).

Hvordan BitVoice bestemmer

BitVoices dommere (svindel-vakten, trunk-helse-dommeren, samtale-kvalitets-diagnosen og 911-oppringer-lokasjons-sjekken) hver følger en regelbok: fakta som måles, konklusjoner de støtter, unntak som overruler en konklusjon, og valg. Hvordan BitVoice bestemmer, på Sikkerhet (kapittel 60), viser hver regelbok. Reglene dommerne holder:

Kryptering

Hvem kan gjøre hva

Kapittel 61

Endringer, sikkerhetskopier og import

I nettgrensesnittet: /changes

Hver lagret endring er en revisjon: nummerert, med hvem som gjorde det, når, og en enkel linje med sammenfatting. Ingen del av konfigurasjonen går noen gang tapt.

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 gjenopprett

Eksport og import

Endringer gjort samtidig

To administratorer som redigerer samme ting samtidig kan ikke overskrive hverandre: den andre lagringen avvises med en melding om å laste inn på nytt, og ingenting går tapt.

Kapittel 62

Oppdateringer

I nettgrensesnittet: /updates

Oppdatering av BitVoice er ett klikk, og trygt: den sjekker den nye versjonen, installerer den ved siden av den gamle, og går tilbake på egen hånd hvis den nye ikke forblir oppe.

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

Installer en oppdatering

  1. Last ned den nye utgaven og pak den ut. Ved siden av programmet er dens signatur fra BioDream: bitvoice.sig, eller bitvoice.exe.sig på Windows.
  2. På Oppdateringer (kapittel 62), last opp programmet og .sig-filen.
  3. Trykk Installer. Som standard venter BitVoice til ingen samtaler er i gang; du kan også installere med en gang.
  4. BitVoice starter på ny på den nye versjonen. Med flere servere, overføres samtaler i gang til en annen server og fortsetter.

Gå tilbake

Den versjonen du forlot, blir beholdt: Gå tilbake returnerer til den på ett klikk. En ny versjon som ikke starter to ganger, eller ikke forblir oppe i ett minutt, erstattes av den forrige av seg selv.

Signaturer

Hver utgave fra v0.1.3 inneholder BioDreams utgivelsesnøkkel. Slike bygninger installerer bare programmer signert med den nøkkelen: et usignert fil, en signert av noen andre, eller en endret med en enkelt byte, avvises med signaturer stemmer ikke overens. Siden sier om denne bygningen sjekker (Kreves) eller ikke.

Du kjørerOppdateringer aksepterer
en utgave, v0.1.3 eller senerebare programmer signert av BioDream
v0.1.2 eller tidligere, eller en bygning av din egenalle programmer: uten nøkkel, kan en .sig-fil ikke sjekkes og ignoreres
Kapittel 63

Flere servere som ett telefonisystem

I nettgrensesnittet: /servers

To eller flere BitVoice-servere som deler en PostgreSQL-database fungerer som ett 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

Konfigurasjon

  1. Flytt den første serverens data til PostgreSQL: Innstillinger, Database.
  2. Start hver annen server med samme database: bitvoice -database postgres://… (eller BITVOICE_DATABASE-miljøvariabel). Den slutter seg til med en gang; Servere lister den.
  3. På Servere, sjekk hvor hver server nås (dens adresse og SIP-port på nettverket serverne deler), og gi hver en navn. Servere som hver nås fra internettet på en adresse av sin egen (skytservere med offentlige IP-er, ingen delt adresse) får Den offentlige adresse også: leverandører og telefoner utenfor blir fortalt den, så når en server overtar en samtale, følger leverandørens lyd med. Tomt, bruker en server den offentlige adressen i Innstillinger.
  4. Fortell telefoner hvordan de finner serverne (nedover).
  5. Leverandørslinjer (nedover).

Hvordan telefoner finner serverne. Telefoner BitVoice konfigurerer (Yealink, Polycom, Grandstream) får en annen kjørende server som reserve av seg selv. For de andre, Snom og telefoner konfigurert for hånd, bruk en av disse på Servere:

Leverandørslinjer. I hver trunk, sier Delt mellom servere hvordan:

Når en server stopper

Mellom servere. Serverne når hverandre på SIP-porten over TCP, eller TLS når de har et sertifikat (hver aksepterer bare sertifikatet den andre har publisert, og lyden mellom dem er da kryptert med SRTP), og sender lyd til hverandres medieporter (UDP, rekken i Innstillinger). Samtaler mellom servere er signert med en hemmelighet de deler i databasen, og bare akseptert fra en kjørende medlem på sin egen adresse. En brannmur mellom dem må slippe disse portene igjennom.

Prøv det først: laben. BitVoice kommer med en lab som kjører to servere, deres database og testtelefoner på én datamaskin med Docker, hver på en adresse på sin egen: deploy/lab/run.sh up bygger og starter den og setter den delte adressen; run.sh call ringer mellom telefoner på forskjellige servere; run.sh failover dreper serveren som bærer en samtale gjennom den delte adressen og sjekker om samtalen fortsetter (lyden kommer tilbake om ca. fem sekunder); run.sh impaired ringer fra en telefon på et dårlig link (forsinkelse, jitter og 5% tap) og sjekker samtalekvaliteten BitVoice rapporterer; run.sh down fjerner den. Servernes sider er på https://127.0.0.1:18501 og :18502 (bruker admin).

Kapittel 64

Hvor dataene lagres (SQLite eller PostgreSQL)

I nettgrensesnittet: /settings

BitVoice lagrer innstillinger og deres lagrede versjoner, brukere, kontakter, samtalelogg, revisjonslogg, tekster, notater og transkripsjoner i en database. Innspillinger og voicemail blir som lydfiler i data-mappen.

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 serverens egen fil (SQLite, standard): en enkelt fil, bitvoice.db i data-mappen, med ingenting å installere. Sikkerhetskopier data-mappen og du har alt.

PostgreSQL: for flere BitVoice-servere som deler én sett med data, eller for rapporter i verktøy som Power BI, Grafana eller Metabase. I Innstillinger, Database, Flytt dataene inn i PostgreSQL: lag en tom database og en bruker som eier den, skriv inn dens adresse (postgres://bruker:passord@host:5432/database), trykk Test, så Kopier dataene og start på nytt på PostgreSQL. Alt blir kopiert i ett slag (alt eller ingenting) og BitVoice starter på nytt på det; den gamle filen blir hvor den var. Å flytte tilbake til serverens egen fil fungerer på samme måte. Flyttinger blir avvist mens samtaler pågår.

Servere som deler en PostgreSQL-database ser hverandres innstillingsendringer innen fem sekunder. Hver server svarer fortsatt på sine egne telefoner og samtaler; for at en annen server skal overta en annen servers telefoner, må telefonene ha begge adressene (eller én adresse som flyttes).

Databasen kan også navngis når BitVoice starter, med -database postgres://… eller miljøvariabelen BITVOICE_DATABASE; den blir da endret der, ikke i Innstillinger.

Eldre installasjoner: på første start av denne versjonen, kopierer BitVoice sine gamle JSON-filer inn i databasen og flytter dem til pre-database i data-mappen.

Kapittel 65

Vert for andre organisasjoner

I nettgrensesnittet: /tenants

En BitVoice kan vertse flere organisasjoner. Hver organisasjon er et eget telefonisystem: eget utvidelser, numre, trunker, ruter, administratorer, voicemail, opptak og samtalehistorikk. Ingen organisasjon kan se en annens. De deler bare denne serverens 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 du skal bruke det

Hovedsystemet er en organisasjon også: den denne serveren ble satt opp som. Dets administratorer administrerer de andre.

Legg til en organisasjon

  1. Åpne Organisasjoner (kapittel 65) og trykk Legg til organisasjon.
  2. Gi dens navn og et kort navn (små bokstaver, tall og bindestreker). Det korte navnet er en del av dens web-adresse, /t/acme/, og av dens telefoners innlogginger, acme.100. Det kan ikke endres senere.
  3. Gi eventuelt dens eget domene, som pbx.acme.example, pekt på denne serveren. Telefoner registrerer seg til det domenet, og dens administratorer åpner det i en nettleser.
  4. Sett dens første administrator: et brukernavn og et passord på minst 12 tegn, og dets land.
  5. Gi eventuelt begrensninger.

Organisasjonen starter med en gang med et tomt telefonisystem, klart for dens administrator å sette opp som beskrevet i Komme i gang (kapittel 1).

Hvordan samtaler finner riktig organisasjon

En forespørselgår til
fra en telefon som registrerer seg til pbx.acme.exampleorganisasjonen med det domenet
fra en telefon som logger inn som acme.100Acme, utvidelse 100
fra en leverandør, for et nummerorganisasjonen hvis trunk det kommer fra og hvis innkommende rute har det nummeret
alt annethovedsystemet

Så to organisasjoner kan begge ha utvidelse 100, og flere kan dele en leverandørkonto med forskjellige numre.

Hvor dens data er

På SQLite, har hver organisasjon sin egen mappe under tenants/ i data-mappen, med sin egen databasefil. På PostgreSQL, har hver sin egen skjema i samme database (tenant_acme). Sikkerhetskopier, arkiver og eksport er per organisasjon.

Begrensninger

BegrensningHva skjer ved den
Utvidelserå legge til en mer blir nektet med en melding
Samtaler samtidignye samtaler blir nektet (503) til en avsluttes
Lagringnye opptak og voicemail blir ikke lagret
AI-forespørsler per dagtranskripsjoner, sammenfatninger og AI-resepsjonisten stopper til midnatt UTC

0 er ingen begrensning. Nødsamtaler blir aldri nektet: en organisasjon på sin samtalebegrensning, eller suspendert, kan fortsatt ringe 911 og bli ringt tilbake.

Åpne en organisasjon

Åpne logger deg inn til dens web-grensesnitt som leverandøren, uten dens egen konto; det vises i dens audit-logg som leverandøren. Dens administratorer logger inn på dens egen adresse med sine egne konti. Hver organisasjon har sin egen innloggings-cookie, så å være logget inn på en gir aldri noen innlogging på en annen.

Organisasjoner ser aldri denne serverens egne skjermer: oppdateringer, database, andre servere, sertifikat, SIP-sporing (som viser hver organisasjons meldinger), samtale-generatoren eller denne listen.

Suspendering og fjerning

Suspenderer stopper innlogginger og hver samtale unntatt nødsamtaler; ingenting blir slettet. Fjern stopper organisasjonen og flytter dens mappe til side (tenants/.removed-<name>-<time>), så en feil kan bli gjort om for hånd.

Kapittel 66

Kodeker og lyd

En kodek er hvordan lyd omgjøres til data i en samtale. Telefoner, nettlesere og operatører støtter hver sine; BitVoice omgjør mellom hvilke som helst to kodeker når to parter forskjeller, så alle kan snakke med alle. Når begge bruker samme kodek går lyden ubesvart gjennom.

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

Kodekene

KodekLydBåndbreddeBrukt av
G.722HD (bredbånd)64 kbit/sde fleste skrivebords telefoner: det beste valget mellom dem
G.711 µ-lovtelefon64 kbit/sNord-Amerika og Japan; hver operatør
G.711 A-lovtelefon64 kbit/sresten av verden
OpusHD, tåler tap24 kbit/snettlesere og mobilappene
G.729telefon, litt grovere8 kbit/stynne koblinger, noen operatører
G.726 (40 kbit/s)telefon; bringer modemtoner best av G.726-hastighetene40 kbit/sgateways, noen DECT-systemer
G.726 (32 kbit/s)nær telefon32 kbit/sDECT-baser, eldre gateways
G.726 (24 kbit/s)mellom 32 og 1624 kbit/snoen DECT-systemer
G.726 (16 kbit/s)grov16 kbit/smeget tynne koblinger
AMR-WB (G.722.2)HD6,6 til 23,85 kbit/smobilnettverks HD-lyd, VoLTE-interkoblinger
AMRtelefon, mobil4,75 til 12,2 kbit/smobilnettverk, noen operatører og gateways
iLBCtelefon, tåler tap13,3 eller 15,2 kbit/seldre softphones og apps
Speextelefon15 kbit/s (2,15 til 24,6)eldre softphones, koblinger til andre Asterisk-systemer
GSMgrovere13 kbit/seldre softphones og gateways
G.723.1grov; omgjort bare med ffmpeg5,3 eller 6,3 kbit/smeget gamle videotelefoner og gateways
G.722.1 (Siren 7)bredbånd, ubesvart24 eller 32 kbit/sPolycom-telefoner, videotelefoner og konferansetelefoner
G.722.1C (Siren 14)super-bredbånd, ubesvart24 til 48 kbit/skonferansetelefoner, romsystemer
G.719fullt bånd, ubesvart32 til 128 kbit/stelepresensromsystemer
Codec2meget lav båndbredde, ubesvart0,7 til 3,2 kbit/sradiokoblinger, amatørradiogateways

Innstillinger lister opp kodekene telefoner kan bruke, beste først; hver trunk kan ha sin egen liste. Analog adapterporter bruker alltid G.711, som faks, modemer og alarmpaneler trenger.

G.722.1, G.722.1C, G.719 og Codec2 bringes ubesvart mellom to parter som begge bruker dem, med deres båndbredde eller modus beholdt i tilbudet (BitVoice omgjør dem ikke, så en samtale mellom en av disse og en telefon uten det bruker en annen kodek begge har). Legg dem i en liste, over G.711, der romsystemer eller konferansetelefoner bør beholde sin lydrekkeffekt når de ringer hverandre. Listene navngir G.722.1 på 32 kHz G7221C, selv om SDP kaller begge G7221.

G.723.1 bringes ubesvart mellom to parter som begge bruker det. For å la en G.723.1-enhet snakke med noe annet, slå på Omgjør G.723.1 med ffmpeg i Innstillinger og installer ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice kjører da ffmpeg som et eget program for hver retning som trenger omgjøring (hørt ved hver rate, sendt ved 6,3 kbit/s, hastigheten ffmpeg-kodekens encoder lager), omtrent 60 ms senere enn andre kodeker, og stopper det noen sekunder etter samtalen. BitVoice har ingen G.723.1-kodek på egen hånd: ITUs referansekode har ingen lisens som tillater å inkludere den, og ffmpeg installeres og kjøres på egen hånd.

Hva konvertering koster

Konvertering tar prosessortid, bare på oppkall der de to sidene er forskjellige. Per oppkall, omtrent 0,3 ms av en kjerne hver 20 ms for Opus og 0,12 ms for G.729 (noen 60 og 170 konverterte oppkall per kjerne); G.726 og GSM koster mindre enn G.729; G.711 og G.722 nesten ingenting. G.729 sendes uten Annex B (ingen stille-rammer).

Lydrensing

Lydrensing (Innstillinger) dumper ned jevne bakgrunnsstøy og jevner ut nivåer, for voicemail og, hvis du ønsker, under oppkall.

Kapittel 67

Microsoft Teams (Direct Routing)

I nettgrensesnittet: /trunks

BitVoice kan være session border controller (SBC) for en Microsoft Teams-leier, så Teams-brukere ringer BitVoice-utvidelser og dine telefonlinjer, og BitVoice ringer Teams-brukere.

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

Hva du trenger: et offentlig navn for denne serveren i et domene ditt Microsoft 365-leier har verifisert (sbc.eksempel.com), åpne port 5061 begge veier til Microsofts nettverk 52.112.0.0/14 og 52.120.0.0/14, og et sertifikat for det navnet fra en offentlig myndighet. Teams-brukere trenger en Phone System-lisens.

Steg

  1. Innstillinger, Sertifikat: installer sertifikatet og dens private nøkkel (PEM). Det brukes med en gang, for dette grensesnittet og for SIP over TLS, og BitVoice presenterer det til Microsoft.
  2. Trunker, Legg til, start fra Microsoft Teams: skriv inn serverens offentlige navn. Skuffen sier om sertifikatet dekker det.
  3. Kopier PowerShell som skuffen viser og kjør det som en Teams-administrator: det legger til SBC (New-CsOnlinePSTNGateway), en stemmerute og -politikk, og en dialplanregel så kort utvidelsesnumre når BitVoice som valgt; deretter gi hver Teams-bruker politikken og deres nummer.
  4. For å ringe Teams-brukere fra BitVoice, legg til en utgående rute for deres numre gjennom Teams-trunken. Teams finner sine brukere bare ved numre med + og landskoden: hvis mennesker ringer dem uten, legg til + og landskoden i rutens Foran (kallens hvorfor-spor sier så når ett går ut uten).

Når en Teams-bruker overfører et kall, ber Microsoft BitVoice om å plassere det (en REFER som navngir sin egen proxy, med nummeret eller Teams-brukerens ID): BitVoice ringer eksakt hva Microsoft navnga, med den Referred-By Microsoft ga, så en overføring til en annen Teams-bruker fungerer like bra som en til et telefonnummer. BitVoice sender aldri en Replaces-header til Teams, som Microsoft avviser.

BitVoice sender Microsoft OPTIONS hver minutt med SBC-navnet i Kontakt, som Microsoft krever, og prøver sip, sip2 og sip3.pstnhub.microsoft.com på rad. Media er alltid kryptert (SRTP). Helse advarer når sertifikatet ikke dekker navnet, er selv-signert eller utløper snart, og når Microsoft stopper å svare.

Dette følger Microsofts offentliggjorte SBC-krav og er testet mot en simulert Microsoft-proxy; BitVoice er ikke på Microsofts liste over sertifiserte SBC-er.

Kapittel 68

Importér

I nettgrensesnittet: /import

Bringer over utvidelser, ringgrupper, køer og trunker fra FreePBX, Asterisk eller 3CX; og personer, jakt og ringgrupper, SIP-trunker, innkommende numre og valgmodn fra Cisco, Avaya og Mitel. Last opp de eksporterte filene, flere på en gang (en .zip eller .tar av dem fungerer også); BitVoice viser nøyaktig hva som vil endres før noe blir anvendt, og importen blir en revisjon du kan angre på Endringer (kapittel 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

Flytting fra FreePBX

Den beste filen er en FreePBX- Sikkerhetskopiering: den inneholder alt, inkludert SIP-passord.

  1. I FreePBX: Admin → Sikkerhetskopiering & Gjenopprettelse → Legg til Sikkerhetskopiering. Velg minst Core, Ringgrupper, Køer og Voicemail (alle moduler er greit), lagre og Kjør.
  2. Last ned sikkerhetskopien fra dens rad (filen har navn som 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. Installer BitVoice på den nye serveren og fullfør oppsettet med en utvidelse som FreePBX ikke bruker (sier 199) og ingen telefonlinje: importen bringer linjene.
  4. På Importér (kapittel 68), slipp .tar.gz-filen som den er. Les forhåndsvisningen: advarselen lister opp alt som ikke kan komme over.
  5. Velg Legg til. Det er en revisjon på Endringer (kapittel 61): angre det der hvis noe ser feil ut, og importér på nytt.
  6. Flytt telefonene: peke hver av dem mot BitVoice (eller konfigurer dem fra Telefoner (kapittel 4)), med samme utvidelsesnummer og SIP-passord de hadde.
  7. Test anrop inn og ut, og flytt deretter registreringen av operatøren (eller nummeroverføringen) som siste punkt.

Prøvd på et ekte system: en FreePBX 17.0.33 (den offisielle Debian 12-installasjonen) med fire utvidelser og voicemail, en PJSIP-trunk som registrerer, to utgående ruter (en med et valgforanledningsprefiks), en ringgruppe, en kø med straffer og tre DIDs, sikkerhetskopiert av Sikkerhetskopiering & Gjenopprettelse med alle moduler valgt. Sikkerhetskopien er 70 MB, nesten alt av det er lydfiler og anropshistorikk: BitVoice leser det som det kommer og beholder bare konfigurasjonen, så en sikkerhetskopiering på opptil 512 MB lastes opp. Alt ovenfor kom over: passordene, voicemail-PINene og e-post, trunkens registrering og kodeker, rutene med deres prefikser, ringgruppens voicemail når den ikke besvares, køens straffer og DIDs til gruppen, køen og utvidelsen.

Hva som kommer over:

Hva som ikke kommer over, og som blir sagt i forhåndsvisningen: IVR-er, tid-betingelser, annonsering, følg-meg, egne trunker og kontekster, anrop-ID-matching på ruter, og eksterne numre i ringgrupper. Bygg disse på Menyer (kapittel 21), Tidsplaner (kapittel 26) og utvidelsens Følg meg. Eldre sikkerhetskopier (FreePBX 13 og før) og en ren mysqldump asterisk av FreePBX-databasen leses på samme måte.

Andre systemer

Hvor hver eksport er:

Grupper og ruter. Last dem opp med personfilen, så hver gruppes medlemmer finnes ved nummer eller navn:

Trunker fra disse eksportene kommer inn slått av og uten passord, da eksportene ikke inneholder dem. Ruter går ut på den importerte trunk med samme navn; en rute hvis trunk ikke er her, utelates og meldes. Rotasjon og lengste ledig ringing er nærmere en kø enn en ringgruppe: forhåndsvisningen sier det, så du kan gjøre det til en.

Disse eksportene (alle unntatt en FreePBX- Sikkerhetskopiering) inneholder ingen SIP-passord, så hver utvidelse får et nytt; voicemail-PIN-er, navn og e-postadresser kommer over når eksporten har dem. Cisco-, Avaya H.323/DCP- og Mitel-telefoner kjører produsentens egen programvare og kan ikke konfigureres av BitVoice: importen sier hvor mange som ble listet. Cisco-telefoner kan bli gjenprogrammert med Ciscos multiplattform (SIP)-firmvare; Avaya J100 og Mitel 6800/6900-telefoner kan registrere seg hos BitVoice for hånd i SIP-modus.

Kapittel 69

Konfigurasjon som kode

Alt skjermene gjør, går gjennom BitVoices REST-API, så hva som helst kan skrives om, lagres i Git eller håndteres med Terraform. API-et beskrives for verktøy 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-tekster

Lages på Administrere (kapittel 57): en per program, kun lese eller i stand til å endre alt. Send den som Authorization: Bearer bv_.... Den vises én gang; tilbakekall den når den ikke lenger er nødvendig. En teksts endringer vises i Endringer og revisjonsloggen under dens navn.

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

Terraform eller OpenTofu

Repositorys deploy/terraform viser utvidelser, ringegrupper og ruter håndtert med den generiske REST-leverandøren: plan viser hva som ville endres, apply gjør endringen. Leverandøren sjekker BitVoices sertifikat; mens BitVoice fortsatt bruker sitt eget selvsignerte sertifikat, hent enten ett fra Let's Encrypt (Innstillinger, Sertifikater) eller sett bitvoice_insecure = true på et nett du stoler på (på Linux, SSL_CERT_FILE som peker på BitVoices sertifikat fungerer også). Ressursene sammenlignes med id-en BitVoice gir dem, så en andre plan viser ingen endringer før filen eller skjermene endrer noe.

Konfigurasjon fra Git

I Innstillinger (kapittel 14), Konfigurasjon fra Git, leser BitVoice konfigurasjonen fra en fil i et repository hver få minutter og enten viser hva som avviker eller gjør endringene. Start filen med Eksportér for Git, som lar være å inkludere passord; BitVoice beholder sine egne, så hemmeligheter havner aldri i repository.

Kapittel 70

Asterisk-kompatibilitet (AMI, ARI og AGI)

Verktøy skrevet for Asterisk kan kontrollere BitVoice: CRM, wallboards, klikk-til-ring-knapper, kontrollere for opptak av samtaler. Slå det på i Innstillinger (kapittel 14), Asterisk-kompatibilitet. Verktøy ser samtaler som kanaler med navn 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

Administrasjonsgrensesnittet på TCP-port 5038 (AMI lytter på: denne datamaskinen bare som standard). Støttet:

TypeNavn
HandlingerInnlogging (plain eller MD5-utfordring), Ping, Hendelser, 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 inn i, eller ut av, alle deres køer), Agents
AnnetParkedCalls; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; MailboxCount, MailboxStatus; PauseMonitor, UnpauseMonitor; UserEvent; Reload (ingen å laste om: endringer blir effektive med en gang)
HendelserNewchannel, Newstate, Hangup, DialBegin, DialEnd, Hold, Unhold, PeerStatus, ContactStatus, MessageWaiting, ConfbridgeJoin, ConfbridgeLeave, ConfbridgeEnd, UserEvent

Filter holder bare hendelsene som en regulær uttrykk matcher (Event: Newchannel), eller dropper dem med ! først, som på Asterisk. Det finnes ingen Asterisk-kommandolinje: Command svarer med en feil.

ARI

På /ari/, med grunnleggende autentisering eller ?api_key=user:secret:

ForespørselHva den gjør
GET /ari/channelssamtaler i gang
POST /ari/channels?endpoint=PJSIP/100&extension=5551234ringer 100, så ringer nummeret
DELETE /ari/channels/{id}legg på telefonen
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102sender samtalen til 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefoner, broer, versjon
/ari/eventsen WebSocket med hendelser
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawen kanal som sender lyd til et program via RTP (ulaw eller alaw over UDP); dens 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 media-kanalen går med i en samtale: den hører begge parter og begge hører den; med role=listener hører ingen den (for live-transkripsjon)
POST /ari/bridges/{call}/removeChannel?channel={id}den forlater samtalen; de to partene snakker direkte igjen

En ekstern media-kanal som ikke er lagt til en samtale innen en minutt blir stengt.

ARI-applikasjoner

En ARI-applikasjon (Asterisk sin Stasis()) kjører samtaler fra ditt eget program. Legg den til under ARI-applikasjoner i Innstillinger, Asterisk-kompatibilitet: et navn, et valgfritt nummer utvidelser ringer, og en fallback. Så send samtaler til den som til enhver destinasjon: en innkommende rute, en menyknapp, en timeplan.

Ditt program kobler seg til /ari/events?app=NAME (en WebSocket, med innlogging i ?api_key=user:secret). Hver samtale som når applikasjonen blir besvart og ankommer som StasisStart, med kanalen; programmet kjører den så:

ForespørselHva den gjør
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42spiller opp meldinger fra Sounds (sound:), digits:, number:, tone:beep eller en lagret opptak (recording:); PlaybackStarted og PlaybackFinished følger. DELETE /ari/playbacks/{id} stopper den.
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23opptar (wav) til lagrede opptak; RecordingStarted og RecordingFinished. POST /ari/recordings/live/{name}/stop avslutter den, DELETE kasserer den.
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name}lagrede opptak
POST /ari/channels/{id}/dtmf?dtmf=123sender tastetrykk til brukeren
GET/POST /ari/channels/{id}/variable?variable=X&value=Ykanalens variabler
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEblandingsbroer: alle i en hører alle andre
POST /ari/channels/{id}/continue?extension=101slipper samtalen: til den utvidelsen, ringegruppen eller køen, ellers fallbacken
DELETE /ari/channels/{id}legger på telefonen
POST /ari/channels?endpoint=PJSIP/101&app=NAMEringer 101; besvart, går den inn i applikasjonen
GET /ari/applicationsapplikasjonene, om et program er koblet til, og deres kanaler
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutedemper hva brukeren sier (in), hva de hører (out) eller begge
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silenceholdemusikk til brukeren (ChannelHold, ChannelUnhold), eller stilhet
GET/POST /ari/channels/{id}/variablesflere variabler på en gang (ChannelVarset)
POST /ari/channels/{id}/move?app=otheroverfører kanalen til en annen applikasjon (StasisEnd, så StasisStart der; ApplicationMoveFailed når ingen program kjører den)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEen snopp-kanal i en applikasjon som hører hva brukeren sier, for å opptare det (POST /ari/channels/{snoop}/record)
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, så POST .../dialen kanal som venter til den ringer; Dial-hendelser forteller hvordan ringing går, og den går inn i applikasjonen når den blir besvart
GET /ari/channels/{id}/rtp_statisticspakker og bytes sendt og mottatt, tap og jitter
POST /ari/playbacks/{id}/control?operation=pausepause, fortsett, restart, bakover og fremover (tre sekunder)
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId}holdemusikk til en bro, opptak av dens blandingsmix, dens variabler
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mutekopierer en opptak; pauser eller demper en live en
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterabonnementer (kanal:, bro:, endpoint:PJSIP/100, deviceState:) og hendelsesfilter ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEtelefoners tilstander (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) og egendefinerte tilstander programmer holder (DeviceStateChanged); telefoners tilstand ankommer også som EndpointStateChange
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0utvidelsers voicemail-tellere (100@default), og postkasser et program holder selv
GET /ari/soundsmeldingene fra Sounds, på språkene de er innspilt på, og lydene lastet opp for AGI-skript
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hien tekst på utvidelse 100s telefoner
POST /ari/events/user/{name}?application=NAMEen brukerhendelse til en applikasjon (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, globale variabler, og BitVoices deler navngitt som modulene de står for

BitVoice svarer på hver enkelt operasjon i Asterisks publiserte ARI (testsvitene kalder hver enkelt og sjekker hva som kommer tilbake har feltene Asterisks beskrivelse krever). Noen har ingen relevans her og svarer 501 med årsaken: lastbare moduler (BitVoice er et program), Sorcerys dynamiske konfigurasjon (BitVoice er konfigurert i sin nettgrensesnitt), loggekanaler, broer videokilder (ARI-broer bærer lyd), sending av REFER til telefoner og krav om kringkastingsanrop. En snikelytter hører bare oppringeren (spy=in), og whisper tilbys ikke: bro en kanal med deres for å snakke med dem. Kanalehendelser for hver samtale (ChannelCreated, ChannelStateChange, ChannelDestroyed) går til hvert program, som med Asterisks subscribeAll=true. ARI-biblioteker som leser grensesnittet fra serveren (ari-client og andre) finner det på /ari/api-docs/resources.json. Hvilke programmer holder nå, under ARI-applikasjoner i Innstillinger, viser applikasjonene, tilpassede enhetsstater, postkasser, globale variabler og broer programmer har satt.

Tastetrykk ankommer som ChannelDtmfReceived; en oppringer som legger på som StasisEnd. Når ingen program er koblet, går samtalen til fallbacken; når programmet siste kobling lukkes, går samtalen der også etter fem sekunder (tid til å gjenopprette koblingen). For samtalelogikk uten et eget program, bruk Skript (kapittel 27) som kjører hele samtalen; for å overføre lyden til et program, Taleboter (kapittel 24).

AGI-skript

Et AGI-skript (Asterisks AGI() og EAGI()) kjører en samtale kommando for kommando, så IVR og integrasjoner skrevet for Asterisk (phpagi, pyst2, Asterisk-Java, enhver FastAGI-server) fungerer fortsatt. Legg det til under AGI-skript i Innstillinger, Asterisk-kompatibilitet:

FeltHva det er
Skriptnavnhvordan destinasjoner navngir det
Adresseen FastAGI-server, agi://host:4573/script?x=1 (port 4573 når ingen er gitt), hagi://domain/script for servere i domenets _agi._tcp SRV-poster, prøvd i prioritetsrekkefølge, eller filnavnet på et program i AGI-programmer-mappen
Argumenteroverført som agi_arg_1, agi_arg_2 …
Nummer å ringevalgfritt: utvidelser ringer det som et vanlig nummer
Fallbackhvor samtalen går når skriptet avsluttes uten å velge et nummer, eller ikke kan nås
Lengste kjøringet skript som kjører lengre stoppes (standard en time)
EAGIfor et program: oppringerens lyd (8 kHz, signed 16-bit, little-endian) på filbeskrivningsnummer 3. Linux og macOS

Test kobler til serveren (eller sjekker om programmet er der og kjørbar) uten å sende en samtale. Deretter send samtaler til det som et vanlig mål.

BitVoice svarer på samtalen, sender agi_-variablene (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) og utfører kommandoene, og svarer som Asterisk 20 gjør (testsviten sammenligner hvert svar med en innspilling av Asterisks):

KommandoerNotater
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP med kun en kanalnavn avslutter skriptets egen samtale
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITescape-taster, sample-offset og endpos som på Asterisk; hurtigspoling, tilbakevinding og pause i CONTROL STREAM FILE
SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIMEmed en tale-tjeneste i Innstillinger, AI de uttales; uten, sies sifrene fra Lyder
RECORD FILEs=N stilhet, en pip, escape-taster; filen havner i lydbiblioteket
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … og ${NAME}-uttrykk
DATABASE GET, PUT, DEL, DELTREEAsterisks database (AstDB), vedlikeholdt av BitVoice og vist under AGI-database
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION er hvor samtalen går når skriptet avsluttes
SPEECH CREATE … SPEECH RECOGNIZEbruker tale-til-tekst i Innstillinger, AI: resultatet er hva oppringeren sa, som text0, for skriptet å sammenligne; grammatikker aksepteres og ikke brukes
EXECSvar, Avslutt, Avspilling, Bakgrunn, Les, Sett, MSet, SayDigits, SayNumber, SayAlpha, Vent, Ring (ringer hver nummer i tur; DIALSTATUS), Gå til, VoiceMail, Kø, Musikk på hold, Innspilling, Ingen handling, Verbose, Logg. Andre svarer -2, som Asterisk gjør for en manglende applikasjon

BitVoice har ingen valgplan: hvor et skript ville gå videre i Asterisks valgplan (SET EXTENSION, EXEC Goto), går samtalen til det nummeret her (en utvidelse, ringegruppe, kø, meny eller et eksternt nummer via utgående ruter) når skriptet avsluttes. Skriptene ringer aldri nødnumre. Når oppringeren legger på, får en FastAGI-skript HANGUP og et program SIGHUP; bare kommandoer som er tillatt på en død kanal kjører deretter (511 for de andre), og koblingen lukkes 30 sekunder senere hvis skriptet fortsetter. Hver kjøring vises under Siste kjøringer med sine VERBOSE-linjer, og går til hendelsesstrømmen som agi.ran.

Lyder for AGI-skript. Skriptene spiller lyder med navnene de bruker på Asterisk: last dem opp under Lyder for AGI-skript med en mappe (custom/welcome; es/custom/welcome for oppringere på spansk). WAV, MP3 og Asterisks .gsm, .ulaw, .alaw, .sln og .sln16 aksepteres; en sti som /var/lib/asterisk/sounds/en/custom/welcome.gsm finner custom/welcome. Asterisks digits/0–digits/9, beep, silence/N og noen andre (vm-goodbye, invalid, please-hold) spiller BitVoices egne promter og toner. Hva skriptene innspiller, beholdes i samme bibliotek, merket innspilt av et skript, for de dagene du velger (30 som standard). Biblioteket holder opptil 1 GB.

Programmer. Et program kjører på denne serveren med BitVoices rettigheter, så det lastes aldri opp via web: kopier det inn i AGI-programm-mappen som vises på skjermen (DATA/agi-bin) og gjør det kjørbar. Det får bare PATH og AST_AGI_DIR fra miljøet, kjører i den mappen og hva det skriver til standardfeil går til serverloggen. FastAGI sender kommandoer i ren TCP: hold serveren på denne datamaskinen eller et privat nettverk.

Innlogging

Hver innlogging har et Brukernavn og Hemmelighet. Innlogginger er kun lese med mindre de er merket Kan endre samtaler. Hold AMI på denne datamaskinen med mindre verktøyet kjører et annet sted: AMI er ren, ukryptert TCP.

Kapittel 71

AI-assistenter (MCP)

En AI-assistent som Claude, ChatGPT, Gemini eller Cursor kan bruke BitVoice gjennom Model Context Protocol (MCP), standardmåten assistenter når andre programmer. Spør den i vanlige ord: hvem ringte i morra og om noen ringte tilbake, hva var det ringende fra tannlegens kontor sa, hvorfor gikk 9-tiden ringingen til voicemail, er leverandør-linjen nede. Med din tillatelse, kan den også initiere et oppkall, sende en tekst eller avslutte et oppkall.

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.

Slå den på

I Innstillinger (kapittel 14), AI-assistanter (MCP):

Kortet viser adressen og innstillinger som er klare til å kopieres for de vanlige assistentene, og lister alle verktøy.

Hva en assistent kan gjøre

Lese (med noen token):

Handle (med La assistenter handle, og en token som kan endre ting):

Hvert verktøy er en av API-ene sine egne ruter, kjørt som assistenten: den ser og endrer nøyaktig hva dens token kan, samme sjekker gjelder, og dens endringer er i revisjonsloggen under dens navn. Et svar beholdes på omtrent 60 000 tegn; assistenten blir bedt om å begrense sin søk når en er kutta.

Kobling av en assistent

Assistenter som logger inn (Claude.ai og ChatGPT-tilpassede koblinger, og andre): legg til en kobling med BitVoices adresse. Assistenten åpner BitVoices innlogging i nettleseren din; logg inn som vanlig (passord, to-trinns, enkelt innlogging), og siden sier hvilken assistent som ber og hvor den returnerer til. En administrator kan la den fungere eller Kun la den lese; en seers assistent kan bare lese. Tillat ikke sender den vekk med ingenting. Tilgangen er deretter på Administratorene (kapittel 57), API-tekster, som AI-assistent, logget inn: den fungerer bare på /mcp og aldri for resten av API-en, varer en time av gangen og fornyer seg selv i opp til 30 dager uten å bli brukt. Tilbakekall avslutter den med en gang. Disse assistentene når BitVoice fra sine egne servere, så det trenger en adresse som er tilgjengelig fra internettet og et sertifikat de stoler på (Let's Encrypt, i Sertifikat (kapittel 14)).

Assistenter gitt en token (Claude Code, Cursor, VS Code og andre verktøy som tar en adresse og en header): lag en API-tekst på Administratorene (kapittel 57), kun lese med mindre den skal fungere, og gi den som Authorization: Bearer bv_...:

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

Assistenter som starter et program (Claude Desktop, og andre som tar en kommando): BitVoice-programmet har en bro, bitvoice mcp, som passerer hver melding til serveren over HTTPS. Gi den serveradressen og tokenet:

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

Med BitVoices eget sertifikat (ikke ett fra en myndighet), nekter broen det og skriver ut dets SHA-256: sjekk at det er din servers, og legg til "-pin", "THAT-SHA256" til argumentene. Bare dette sertifikatet aksepteres deretter.

Sikker å forlate på

Kapittel 72

Arkiv

I nettgrensesnittet: /archive

Arkivet holder kopier av opptak, voicemail og konfigurasjonen et annet sted: en Amazon S3-bucket (eller en annen S3-kompatibel lagring) eller en Azure Blob Storage-beholder. Hvis denne serverens disk går tapt, har arkivet dem fortsatt.

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

Konfigurasjon

  1. På Arkiv (kapittel 72), velg Hvor arkivere: Amazon S3 eller Azure.
  2. For S3: Bucket, Region, et valgfritt Mappe i bucket og Endpoint (for S3-kompatible lagringssteder), og et Tilgangsnøkkel-ID og Hemmelig tilgangsnøkkel. Kopier politikken gir den eneste tillatelse BitVoice trenger, for å koble til brukeren eller rollen.
  3. For Azure: en Container SAS-URL med skrive-tillatelse, og et valgfritt Mappe i containeren.
  4. Velg hva som skal kopieres utenom konfigurasjonen: Opptak, Voicemail, eller begge.

Hva skjer

Hver tiende minutt kopierer BitVoice nye opptak og meldinger som ikke er i arkivet ennå, og en gang om dagen en datert kopi av konfigurasjonen (config/2026-10-13.json). Siden viser den siste kjøringen, den siste suksessen og eventuelle feil.

Sletting av noe her (ved oppbevaring eller for hånd) sletter ikke arkivets kopi: sett bucketens eller containerens egne livssyklusregler for hvor lenge arkivet beholder ting.

Kapittel 73

Juridisk varetekt

I nettgrensesnittet: /holds

En juridisk varetekt holder samtalelogg, opptak og voicemail som en sak kan trenge, og forhindrer at noen sletter dem, til den blir løst. Bruk den når en advokat ber om at loggene 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

Legg til en vakt

På Lovlige vakter (kapittel 73), trykk Legg til:

FeltHva det er
Navnhva saken kalles
Årsakhvorfor, for protokollen
Numreutvidelser og eksterne numre det dekker (101, +15551234567), eller Alt
Fra, Tildatoer det dekker; tom for ingen begrensning

Mens en vakt er på

Løsning

Løs gjør det varetektet holdt tilgjengelig for varetektinnstillingene igjen: ting eldre enn varetektet blir slettet ved neste opprydning. Løste varetekter blir vist, med når og av hvem, og å legge til og løse varetekter er i revisjonsloggen.

Kapittel 74

Målinger: Prometheus, OpenTelemetry, Grafana, SNMP og oppkallshistorikk

I nettgrensesnittet: /settings

Prometheus scraper /metrics på webadressen. Lag en API-nøkkel under Administratorer (en seernøkkel er nok) og gi den til Prometheus som dens bærernøkkel:

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 leser oppkall i gang (etter tilstand), oppkall avsluttet (etter retning og resultat), samtaletid, telefoner registrert, hver trunks tilstand og rundtur, oppringere som venter og agenter i hver kø, lydpakker mottatt og tapt, en histogram over oppkallskvalitetspoeng (MOS), og tilbakekall booket. Tellerne starter igjen fra null når BitVoice restartes, som Prometheus forventer.

OpenTelemetry: i Innstillinger, Målinger, skriv inn en samlers OTLP/HTTP-adresse (og en header som Autorisasjon, med dets verdi) for å få de samme målingene dyttet hver minutt (eller så ofte du setter, fra 15 sekunder). Dytt nå sjekker de lagrede innstillingene.

Grafana- dashboard laster ned et ferdiglaget dashboard: importer det i Grafana og velg din Prometheus-datakilde.

SNMP

For overvåkingssystemer som snakker SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), slå på SNMP-agenten i Innstillinger. Den svarer på SNMPv2c GET, GETNEXT og GETBULK, kun lese, på UDP-port 161 (eller en annen du velger: port 161 trenger retten til å åpne lavports på Linux), og bare fra nettverkene du lister. Velg en samfunn som ikke er offentlig eller privat: det er en passord som krysser nettverket i klart.

Den serverer standard systemgruppen (sysDescr, sysUpTime, sysContact, sysName, sysLocation) og BitVoices egne verdier under basis-OID: oppkall i gang og ringende, telefoner registrert, trunks opp og konfigurert, oppringere som venter, oppkall avsluttet, samtalesekunder, tapt pakker, gjennomsnittlig oppkallskvalitet, en trunktabelle (navn, opp eller ned, latency) og en køtabelle (ventende, agenter, besvart, forkastet). Last ned BITVOICE-MIB ved siden av innstillingene for din overvåking å laste. BioDream LLC har ingen bedriftsnummer ennå, så standard basis-OID er i Net-SNMPs eksperimentelle rom; legg til en under ditt eget bedriftsnummer for å holde det stabilt.

Feller (SNMPv2) går til hver mottaker du lister når en trunk går ned eller kommer tilbake, et nødoppkall blir gjort, eller en server i en kluster slutter å svare. SNMPv3 støttes ikke ennå.

Oppkallshistorikk andre steder

Ved siden av Oppkallshistorikk, kan hver post gå, når oppkallet slutter, til:

Send en testpost prøver syslog-tjeneren og databasen med innstillingene lagret.

Kapittel 75

Oppkallsgenerator

I nettgrensesnittet: /loadtest

Oppkallsgeneratoren plasserer ekte oppkall med ekte lyd inn i BitVoice fra denne datamaskinen: for å se hvor mange oppkall en server håndterer og hvor godt, eller for å sjekke etter en endring at oppkall fortsatt går der 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

Kjør en test

InnstillingHva det er
Nummer å ringeet nummer innen BitVoice: en utvidelse, en gruppe, en kø, et meny
Samtaler kommer franummeret som vises som ringende
Besvar somen utvidelse som generator besvarer for seg selv; eller ingen, når nummeret besvarer seg selv (et meny, ekko-test)
Samtalerhvor mange i alt
Samtidighvor mange som pågår samtidig, opp til 2 000. Hver videreformidlet samtale tar medieporter fra Media fra og Media til (Innstillinger): standard 10000-20000 rommer omtrent 1 800, så utvid det for mer
Ny per sekundhvor raskt de starter
Hver varer (s)hvor lenge hver samtale varer

Les resultater

ResultatHva det sier
Besvart, Feiletog Hvorfor samtaler feilet, etter årsak
Besvartid, median og 95%hvor lenge ringere ventet
Lyd taptandelen lydpakker som aldri ankom
Lydkvaliteten estimat av lyden (MOS): 4 og over er bra, under 3,6 er dårlig
Jitter, 95% av samtalerhvor ujevn lyden kom tilbake (RFC 3550 interankomst jitter, gjennomsnittlig over hver samtale); telefoner glatter ut opptil ca. 20 ms
Lengste gap, verste samtaleden lengste ventetiden mellom to lydpakker i noen samtale; de kommer hver 20 ms, så en blokkering av serveren vises her
Minnepauser, lengste pausehvor ofte, og hvor lenge på det lengste, Go-kjøretiden pause alt for å rydde minne under kjøring
Samtaler i gang over tidet diagram over belastningen
Kapittel 76

SIP-sporing

I nettgrensesnittet: /trace

SIP-sporingen viser meldingene BitVoice sender og mottar, live: det første stedet å se når en telefon ikke kan registrere eller en samtale feiler, og hva en leverandørs support-avdeling vil be om.

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

Finner en melding

BitVoice holder de siste 2 000 meldingene i minne (ingen skrives til disk, og de er borte etter en omstart). Skriv inn en del av et nummer, en adresse eller en Call-ID i filteret. Trykk Oppdater for de nyeste.

Velg en melding for å se den i fullt og, ved siden av den, samtale-fløten: hver melding av samme samtale i rekkefølge, mellom telefonen, BitVoice og leverandøren, som i figuren.

Reading a trace

You seeIt usually means
REGISTER answered 401, then nothingthe phone does not have the password, or has the wrong one
REGISTER answered 403the address is banned, or the phone signs in as another extension
INVITE answered 404no route matches the number dialled (Call routing (kapittel 8))
INVITE answered 403 by the providerthe provider refuses the caller ID or the number
486the other side is busy
488the two sides have no codec in common (Codecs (kapittel 66))
200 OK, then BYE after about 30 secondsthe ACK never arrived: a router in between rewrites or drops messages (switch off its "SIP ALG")
A call connects but nobody hears anythingthe sound is blocked: check the public address in Settings, and the media ports in the firewall
Del 6

Offentlig sikkerhet: lab-sporet

911-svarprofilen, radiodispatchkonsollen og NG911 Core Services. De er et lab- og designpartner-spor: bygget og testet mot innspilte opptak, eksempeldata og stedfortredere, men ikke sertifisert for live 911 eller radiodispatch og ikke ennå prøvd med en live ESInet, P25-system eller CAD. De er utenfor menyen til de aktiveres i Innstillinger. Nødoppringer fra egne telefoner (Kom i gang) er ikke en del av dette sporet: de er en del av hver telefon-system.

Kapittel 77

911-samtaler (911-profilen)

I nettgrensesnittet: /psap

BitVoice svarer 911-samtaler som et PSAPs samtale-behandlingssystem: samtaler fra nødnettverket (ESInet, NENA i3) ankommer med ringers plassering og nettverkets data, og operatøren ser dem med en gang, og CAD blir underrettet når samtalen blir besvart.

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

Konfigurasjon.

  1. På Trunker (kapittel 7), legg til trunken fra din ESInet-leverandør (eller NG911-kjernens ESRP) og slå på Fra ESInet.
  2. I Rutevalg (kapittel 8), send dess samtaler til dine nødanropstakere: en kø, eller en ringgruppe.
  3. På 911-samtaler, angi din byrå-ID (et domene, som psap.county.example.gov) og hva CAD tar: adressen og porten dens ALI-lytter er på, og dens EIDO-adresse.

Når en 911-samtale ringer, vises den på 911-samtaler med:

Lokasjon kommer i samtalen (ved verdi), eller som en referanse BitVoice henter med HELD. En samtale med en referanse har Rebid lokasjon: BitVoice spør igjen, for en ringer som flytter eller hvis første fiksering var grov.

Når en rebid endrer lokasjonen, sier lokasjonstsjekken hvilken som skal vises først, og hvorfor: den nye lokasjonen som regel; den første når den var en presis enhetsfiksering (GPS, innen 100 m) mindre enn to minutter gammel og den nye er grovere; og begge når to lokasjoner er uenige mer enn deres usikkerhet tillater, så nødanropstakeren spør ringeren. Den første lokasjonen forblir på samtalen uansett.

Når en nødanropstaker svarer, får CAD, hver på sin egen så en CAD som er nede aldri holder opp samtalen:

ALI-utslippet selv er bare TCP, siden legacy CAD-lyttere tar det, så det kan ikke kreves å være kryptert. Når det går til en annen datamaskin, advarer Helse: hold denne banen utenfor noen delt nettverk, med en direkte seriel kobling (serial:/dev/…) eller en VPN eller privat krets til CAD. Sett Byrå-ID også: EIDOs og i3-loggen navngir byrået etter det, og Helse (kapittel 13) advarer mens det er tomt.

En 911-samtale avvises aldri. En tale-samtale fra ESInet (eller en CAMA-trunk) hvis innkommende rute ville sende den vekk, fordi ruten legger på, ringer en gruppe uten noen i den eller ikke eksisterer, eller at ingen svarer, ringer hver nødanropstaker i stedet: hver aktivert utvidelse, og enhver telefon som kobler seg mens den ringer, til noen svarer eller ringeren legger på. En tekst-samtale venter på denne skjermen på samme måte. Samtalens Hvordan den ble rutevalgt sier hva som skjedde, og Helse (kapittel 13) advarer om en slik rute så den kan rettes. Bare test-samtaler (urn:service:test.sos) og samtaler som ikke er 911-samtaler beholder sin rutes avvisning.

Ikke heller droppet av en overføring. Når en nødanropstaker overfører en 911-samtale og overføringen ikke kan koble til, fordi utvidelsen ikke har noen telefon koblet eller ingen svarer den, går samtalen tilbake til den nødanropstakeren mens de fortsatt er på. Hvis de allerede har lagt på (de fleste skrivebords-telefoner gjør det like etter en blind overføring), ringer hver nødanropstaker i stedet, til en svarer. En 911-samtale blir aldri overført til utvidelsens voicemail eller annen ikke-svar-destinasjon, og dens rute-spor sier hva som skjedde. På enhver samtale, frigjør en telefon som legger på like etter å ha bedt om en overføring bare seg selv: overføringen fortsetter.

En ringer som forsvant. Når en side av en samtale stopper å sende lyd i ett minutt (en telefon som mistet kraft eller signal sender ingen avslutning) mens den andre siden fortsatt sender, avsluttes samtalen med årsaken *ringers lyd stoppet* (eller hvis det var), i samtale-logg og i call.ended-hendelsen CAD hører (cause, endedBy). En side på hold, faksing, eller som sa den sender ingenting (en høytaler) avsluttes aldri på denne måten. Stille sender likevel pakker, så en ringer som ikke kan snakke holder samtalen 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 (kapittel 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.

Oppringerens video og bilder. På et 911-opptak, Send oppringeren en video-lenke lager en lenke bare dette opptaket åpner: tekstet til oppringeren fra nummeret under Tekst lenken fra, eller lest opp. Når det ikke kan tekstes (ingen tekst-nummer er satt, eller oppringeren sendte ingen nummer), sier skjermen og API-en problem hvorfor. Oppringeren åpner det i sin telefonnettleser (ingen app): Del live-video sender bak-kameraet live (WebRTC, WHIP: RFC 9725), og Send bilder eller videoer sender det de allerede har tatt, dashcam- og action-kamera-filer inkludert. På opptaket:

Video tar aldri fra samtaler: hver live video har sine egne porter, denne serveren tar maksimalt Live videoer på gang av dem (4 med mindre det er satt), hver bedt om å forbli under Video bitrate, og video som stopper i ti sekunder avsluttes. Oppringernes telefoner må nå denne serveren på Linkadresse (https) og dens medieporter (UDP). Filer beholdes Behold filer og eksponeringslogg dager (tom: til sletting), holdte samtaler unntatt.

Opptak av live video. Med Opptak av oppringernes live video på, er oppringerens live video beholdt med bildene og klippene som en fil per videosekvens: samme bilder telefonen sendte, ikke konvertert, i en IVF-fil (H.264 eller VP8 med hvert bilde sitt eget tidspunkt), hashet mens den skrives. Et bilde skadet av en tapt pakke utelates heller enn beholdes ødelagt, og telefonen bedes om et fullt bilde for å fortsette fra. Avslør spiller den (fra en kopi i WebM eller MP4 som ffmpeg lager, samme bilder i en annen container; uten ffmpeg bare den originale lastes ned); Last ned originalen gir fila hashen er av. Ffmpeg, VLC og forensiske videoverktøy åpner den originale.

Til CAD. EIDO (NENA-STA-021) sendt til CAD navngir hver bilde, klipp og opptak, og live video mens den varer, som ekstra data ved referanse: urlPurpose er caller-photo, caller-video, caller-video-recording eller caller-video-live, og additionalDataByReferenceUrl er fila på /m/{viewToken}/{n} eller live video på /whep/{viewToken}. BitVoice sender CAD EIDO igjen når en fil ankommer eller live video starter eller stopper. Linkene bruker Linkadresse (eller denne serverens offentlige adresse); med ingen av dem, navngir EIDO ingen media. Hvert henting gjennom dem er i eksponeringsloggen. Hendelsesstrømmen sier det samme (GET /api/events: call.media, call.video). BitVoices EIDOs er sjekket mot NENAs publiserte EIDO-skjema.

Linker som ikke eksisterer gjettes ikke raskere enn innlogginger: en adresse som fortsetter å prøve blir avvist en stund. Filer fra oppringere serveres i en sandbox, aldri som en side på denne serveren.

Eksponering. Hver avsløring av live video og hver åpning av et bilde eller klipp teller under Eksponering på 911-samtaler: hvem, hvor ofte, over hvor mange samtaler. Det er for overordnede og senterets velværsprogram.

Video en telefon sender i 911-samtalen selv (SIP-video over ESInet) kan sees på samme måte: Se tar den som kilde når ingen link-video er live.

Samtaler med bare et nummer. En 911-samtale som bringer et tilbakekallingsnummer og ingen plassering (fra en CAMA-trunk eller en ESInet-samtale hvis plassering ikke kom) kan søkes opp: gi Plasseringsoppføring (ALI) adressen til din ALI-database eller plasseringservers HELD-grensesnitt (RFC 5985, spurt av telefonnummer som RFC 6155 har det). BitVoice spør når samtalen ankommer, uten å holde den opp, og plasseringen vises på samtalen når svaret kommer; samtalen sier når oppføringen feilet og hvorfor.

Den legacy ALI-lenken. Uten en HELD-server, kan BitVoice spørre en ALI-kontroller eller ALI-databasens datakobling på den gamle måten: den sender en forespørsel og leser tilbake posten som tekst over nettverket (ALI-lenkeadresse host:port) eller fra en serieport (serial:/dev/ttyUSB0?baud=9600&parity=none, med bits og stop også; en USB-seriell adapter fungerer; på Linux og macOS, ikke Windows: der bruker du en serie-til-nettverksomvandler og dens adresse). Forespørsel er hva som skal sendes: {ani10} de ti sifrene i tilbakekallingsnummeret, {ani7} de siste syv, {pos2} posisjonen,  STX og  ETX ({ani10} når det er blankt). Svaret leses inntil dets ETX. ALI-utformninger varierer mellom leverandører og stater, så du plasserer hver felt: dens linje, dens kolonne og dens lengde (0: til slutten av linjen), fra en utskrift av en ALI-skjerm; Gate (hele linjen) deler en gate-linje inn i dens deler, eller plasser delene ett og ett. Lim inn et eksempel på posten og Les eksemplet for å se linjene med en kolonneruler og hva hvert felt leses; Spør spør lenken selv om et nummer. Postens adresse og posisjon blir oppkallets plassering, dens navn blir ringers navn, og dens klasse av tjeneste vises på oppkallet. Protokoller som ikke er en forespørsel og en tekstsvar (PAM, E2 og andre leverandørers egne) støttes ikke: de trenger en gateway.

ALI-utslipp over en serieport. ALI-utslipp til tar også en serieport (serial:/dev/ttyS0?baud=9600), for en CAD som leser utslippet fra en seriekabel.

Kartet. Under Kart i 911-innstillingene, gi BitVoice kartflisene: en .mbtiles-fil med rasterfliser (PNG, JPEG eller WebP) på denne serveren, for et kart som fungerer uten internett (ditt GIS-team, TileMill, gdal2tiles eller en flistilbygger lager en av ditt område), eller en flisserver med {z}, {x} og {y} i dens adresse (ditt fylkes, eller en kommersiell en: merk dets vilkår; de offentlige OpenStreetMap-serverne er ikke for dette). Uansett måten, henter call-takerens nettlesere flisene fra BitVoice bare: den leser filen eller henter fra flisserveren og holder de siste flisene i minnet. Samme kart viser radioposisjoner på radiokonsollen. Vektorfliser støttes ikke.

i3-loggen holder NENA i3-hendelsene for hvert oppkall (oppkall start, svar, plassering, EIDO sendt), en fil per dag. Svartider viser hvor mange oppkall som ble besvart innen ditt mål (NENA: 90% innen 15 sekunder, 95% innen 20), de forlatte, og hver call-takers gjennomsnitt. En rad per dag (CSV) laster ned tellinger statlige 911-kontorer vanligvis ber om (oppkall, besvart, forlatt, innen målet og innen 20 sekunder, gjennomsnitt og lengste ventetid) for de valgte dagene; En rad per oppkall (CSV) lister hvert 911-oppkall med når det ble besvart, av hvem, og om det var tekst. Hver stat har sin egen skjema: legg din ut under Rapportutformninger. Et tekstoppkall tatt på denne skjermen eller gjennom en CAD teller under personen som tok det; ett som ingen tok før ringeren forlot, teller som forlatt.

Rapportutformninger. Ny rapportutforming legger ut en rapport som din stat eller fylkes skjema har det: hva hver rad er (en dag, en uke, en måned, en time av dagen, en call-taker, eller en rad i alt), en totalrad, og kolonnene, i rekkefølge, hver med sin egen overskrift hvis skjemaet ordlegger det annerledes: oppkall, besvart, forlatt (en telling eller en andel), besvart innen så mange sekunder (en telling eller en andel; sekundene er dine, så 10 og 20 for ett skjema og 15 og 40 for et annet), besvart etter mer enn så mange sekunder, gjennomsnitt og lengste ventetid, tiden innenfor hvilken 90% ble besvart, gjennomsnittlig oppkallslengde, og tekstoppkall (TTY, sanntidstekst, tekst til 911). En ventetid teller fra oppkallets ankomst til en call-takers svar. Velg en utforming og datoer og Kjør den for å lese den her, Regneark (CSV) for å laste den ned, eller Side til utskrift for en vanlig side til å printe eller lagre som PDF. Utformninger lagres med innstillingene, så de følger med en sikkerhetskopi og inn i Git.

TTY-oppkall. Døve og hørselshemmede ringere kan ringe 911 med en TTY (en teksttelefon, Baudot på 45,45 bit/s). BitVoice lytter etter en på hvert 911-oppkalls tale, fra det første øyeblikket: hva ringeren skriver, vises på oppkallet mens de skriver det, under Tekst, med en pause eller en ny linje som starter en ny linje. Et stille oppkall kan være en TTY som venter på deg: når du svarer, sender Svar med TTY tekst selv før noen har kommet. Skriv svaret og trykk Send: det går til ringeren som TTY-toner (call-takerens tale er dempet mens den spilles, da TTY-er tar tur), i store bokstaver, og TTY-etikette gjelder: avslutt hver tur med GA ("gå videre"), og SK når du signerer av. Karakterer en TTY ikke kan vise, utelates. Tale, musikk og touch-toner tas aldri for TTY-tekst: en karakter teller bare når hver bit av den er en ren TTY-tone. Samtalen lagres med oppkallet i oppkallshistorikken og i i3-loggen (en MessageLogEvent per tur). Avmerk Lytt etter TTY-er på 911-oppkall i 911-innstillingene for å stoppe lyttingen.

Overføringer. Et 911-opprinnelig oppkall sendt videre til en annen PSAP beholder sin plassering: PIDF-LO følger med oppkallet.

Sanntidstekst (RTT). En telefon som sender tekst ved siden av sin stemme (RFC 4103, som VoLTE-telefoner og NG911-opprinnelige oppkall gjør) får sin tekst besvart av BitVoice selv, siden skrivebordstelefoner ikke viser noen: hver karakter vises på oppkallet mens avsenderen skriver, og ditt svar går tilbake som tekst. Tapsede pakker gjøres godt av RTT-redundansen; tekst som går tapt utover dette vises som .

Tekst til 911. Et tekstkontrollsentrum (TCC) sender tekster til PSAP som en sesjon uten stemme (MSRP, RFC 4975, over ESInet-trunken). BitVoice besvarer det og venter på 911-opprinnelige oppkall merket Tekst til 911, med tekstene som har kommet; ingen telefon ringer. Ta denne teksten gjør deg til call-taker (svarstiden teller da, og CAD får ALI-utslippet og EIDO da); svare i boksen under samtalen, og Avslutt samtale når du er ferdig. TCC som lukker sesjonen avslutter den også. En SIP-MELDING sendt innenfor en 911-opprinnelig oppkalls dialog tas som avsenderens tekst på samme måte, og svar går tilbake via SIP-MELDING. Tekster tas bare fra trunker merket Fra ESInet.

Et TCC som tilbyr sesjonen over TLS (TCP/TLS/MSRP, msrps: stier, RFC 4975 seksjon 14) får den over TLS, med denne serverens sertifikat (Innstillinger › Sertifikater; uten ett slikt tilbud avvies). TCC-sertifikatet må være det som tilbudet navngir (a=fingerprint, SHA-256); når det ikke navngir noen, må det spores tilbake til PSAP Credentialing Agency-roten som er satt under Core-tjenester, hvis noen er satt. BitVoices svar navngir sitt eget sertifikat på samme måte.

Hele samtalen, uansett hvordan den kom, beholdes med oppkallet i oppkallshistorikken og i i3-loggen.

Hva som ikke er her ennå: å overføre en tekstsesjon videre gjennom NG911-kjernen (ESRP-ruter stemme; en tekstsesjon besvares der den ankommer); EIDO-konveyansstandardens egne abonnementer (NENA-STA-024 WebSocket): BitVoice poster EIDOs til én adresse.

Kapittel 78

Radiodispecherskonsoll

I nettgrensesnittet: /radio

Dispechere snakker på radiokanaler fra samme hodetelefon som deres telefonoppringer. BitVoice når radioene via radi-over-IP (RoIP)-gateways; radio nettverket selv blir hos den som kjører 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

Oppsett. Under Konsolloppsett, velg en konsollnummer (800, si), og legg til hver kanal: navn, porten på denne serveren gatewayen sender kanalens lyd til, og gatewayens adresse og port for lyden som går ut. På gatewayen: RTP, G.711 µ-lov, til denne serverens adresse og den porten; aktiver radioen på stemme (VOX). Hver kanal bruker sin port og den neste, utenfor rekken telefonoppringer bruker.

Bli med. En dispecher ringer konsollnummeret fra deres skrivebords telefon, eller trykker Bli med med nettleser-telefonen. De hører deretter all kanalens trafikk blandet sammen; Høre / Avlytt på en kanal tar den ut av hodetelefonen. Lysen på en kanal lyser mens den mottar.

Snakke. Hold en kanals Hold for å snakke-knapp (eller fokusere den og holde mellomromstasten): stemmen din går til den kanalen bare, og kanalen viser TX med din utvidelse. En dispecher snakker på en kanal om gangen; knappen er grå for de andre mens noen snakker. Ingen lyd blir sendt til en kanal mens ingen snakker, så en stemme-aktivert radio blir aldri holdt på luften.

Koble. Trykk Koble på en kanal, så Koble her på en annen: de to hører hverandre (en brannkanal og en gjensidig-hjelp-kanal, si) til du trykker Avkoble.

P25-talker. En kanal kan også være en P25-talker, koblet direkte over ISSI (TIA-102.BACA, grensesnittet mellom P25-underystemer; med Send CSSI-konsoll PTT-ord på, legger BitVoice til konsoll-underystemets ord til hver forespørsel). Velg En P25-talker (ISSI), gi talker-ID, SIP-adresse og -ID til RFSS som er hjemmet til talkeren, og en port for dens stemme. Under Denne konsollen på P25-systemet, skriv inn WACN og system-ID, RFSS-ID din P25-administrator ga denne konsollen, enhets-ID dispechere sender som, og SIP-porten ISSI bruker her; P25-systemet må kjenne denne serveren som en RFSS på den adressen. Flisen viser P25 mens gruppeoppringen er opp (P25 ned og grunn når den ikke er det), og enhets-ID til radioen som snakker, i rødt med NØD når det er en nødoppringing. Hold for å snakke ber hjem-RFSS om kanalen (Ber om kanalen…); stemmen din går en gang den gir den, og hvis den avviser (noen med høyere prioritet har den) sier flisen det.

Krypterte talegrupper. Under Krypteringsnøkler, legg til hver trafikk-nøkkel din radiobutikk gir deg: et navn, algoritmen (AES-256, DES-OFB eller trippel DES), nøkkel-ID og nøkkelen selv i hex (TIA-102.AAAD). En nøkkel vises aldri igjen en gang den er lagret, ikke engang for administratorer, og å la feltet være tomt beholder det. Konsollen hører en kryptert overføring når den har nøkkelen med samme algoritme og nøkkel-ID: flisen viser en lås og algoritmen ved siden av den talende enheten. Uten nøkkelen er overføringen muted, aldri spilt som støy, og flisen sier ingen nøkkel: muted. For å overføre kryptert på en talegruppe, velg en nøkkel under Overfør for den kanalen; flisen viser da TX AES-256 (eller algoritmen du valgte). En fullstendig konfigurasjons-eksport (Innstillinger, en administrator's backup) inneholder nøklene, så behold disse filene like trygge som nøklene.

Private samtaler. Med konsollen på et P25-system, Ring en radio i din posisjonsfelt ringer en radio ved dets enhets-ID (slå på Nød for å ringe det som en nød). Samtalen blir en flis på egen hånd, Privat samtale: enhet 197, med Hold for å tale som en hvilken som helst kanal og Legg på. Radioer kan også ringe konsollen, på enhets-ID dispatchere overfører som: samtalen vises som en flis merket ringt inn (i rødt med NØD når radioen ringte som en nød), hver dispatcher hører det, og det forsvinner når en av partene legger på. Under Private samtaler i konsollens P25-innstillinger, gi SIP-adressen og -ID til RFSS som er hjemmet til radioene (tomt bruker den første talegruppens hjem), og, hvis private samtaler skal være kryptert, nøkkelen som skal sendes med.

Advarselstoner. Send en advarselstone… på en kanal sender en av følgende: Advarsel 1, en jevn 1000 Hz-tone i 3 sekunder; Advarsel 2, en kvervel mellom 1000 og 1500 Hz; Advarsel 3, 1000 Hz-pulser; eller en kort Bip. Tonen holder kanalen mens den spilles (flisen viser tone og din utvidelse), hver dispatcher som overvåker kanalen hører den gå ut, og på en P25-talegruppe går den en gang hjem-RFSS-en gir kanalen.

Nødtilfeller. Når en radio sender som et nødtilfelle (dens nødknapp), blir flisen dens rød med NØDTILFELLE og enhets-ID, serverloggen noterer det, og CAD underrettes med en gang (under). Nødtilfelle forblir hevet på hver konsoll etter at radioen slutter å snakke, til en dispasjør trykker Bekreft: flisen sier da hvem som bekreftet det og når, og CAD mottar en radio.emergency.ack-hendelse. Bekreftelse navngir enheten vist: hvis en annen enhets nødtilfelle erstatter den et øyeblikk før, nekter BitVoice og flisen viser den nye, så et annet nødtilfelle aldri blir stilt til å tie av feil. CAD kan bekrefte gjennom API på samme måte: POST /api/radio/channels/{id}/ack med {"unit": "bee07.1d5.00044d"} (eller radio-ID, "1101") returnerer 409 når kanalens nødtilfelle nå er en annen enhets; uten en body bekrefter den hva kanalen inneholder.

Simulselect. For å si en ting på flere kanaler samtidig, merk velg på hver kanal, og hold Tale på N kanaler i feltet over flisene. Det er enten alt eller ingenting: hvis en annen dispatcher taler på en av dem, blir ingen aktiver, og du blir informert om hvilken.

Radioposisjoner. Radiosender rapporterer hvor de er over radiosystemets dataside, ikke talesiden konsollen slutter seg til: P25-loceringstjeneste, Motorolas LRRP eller en leverandørs egen, samlet inn av radioselgers data- eller AVL-gateway. La gatewayen (eller et lite script ved siden av) sende hver rapport til BitVoice med en API-nøkkel: 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 på opptil 500 (hastighet i km/t, retning i grader, nøyaktighet i meter; alle tre og tid er valgfrie). Radioposisjoner på konsollen viser deretter hver radios siste posisjon, med navn, og CAD mottar hver enkelt som en radio.location-hendelse. BitVoice dekoderer ikke LRRP eller P25-loceringstjenesten selv.

Radionavn. Under Radionavn, navngi radioer etter deres P25-enhets-ID (1205 er "Brannbil 5", for eksempel): flisen viser navnet ved siden av enheten mens den taler, og radio-loggen og CADs hendelser inneholder det.

Radiologg og opptak. Slå på Opptak hver overføring under Opptak og CAD: hver overføring på hver kanal, hørt eller sendt, blir lagret som et opptak med en linje i Radiologgen: når, kanalen, hvem (radioens enhet eller dispatchers utvidelse), hvor lenge, og om det var en nød, en advarselstone, kryptert eller en privat samtale. Et hørt opptak starter med den første tale og slutter 1,5 sekunder etter den siste ord. Finn en enhet, dispatcher eller kanal med søkefeltet, og trykk Avspill for å lytte. Opptak blir lagret like lenge som samtaleopptak (Innstillinger, Opptak).

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 ennå: P25-fase 2 (TDMA)-tale i sin egen halvrate-vokoder. En fase 2-system fungerer med konsollen når dens ISSI-samtalegrupper bærer fullrate (fase 1)-tale eller dens transkoder konverterer dem, noe som er vanlig: spør din P25-administrator. En samtalegruppe hvis tale ankommer i blokker som denne konsollen ikke dekoder (halvrate-tale sendt uten transkoding, mest sannsynlig) viser Stille her på dens flise mens en radio snakker, så ingen tar stillhet for en stille kanal. Dekoding trenger to ting BitVoice ikke har: halvrate-vokoderen (AMBE+2, patentert til 2028: en lisens fra eieren, eller en lisensiert hardware-vokoder-chip), og ISSIs halvrate-tale-blokkformat (TIA-102.BACA-B, solgt av TIA, ikke offentlig).

Kapittel 79

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

I nettgrensesnittet: /core

For en stat eller regional 911-myndighet som kjører sin egen NG911-kjerne: BitVoice besvarer LoST som ECRF, og ruter hver 911-opprinnelig oppkall som ESRP til PSAP som betjener avsenderen.

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

Tjenesteområder. Eksporter grensene dine fra GIS som GeoJSON-polygoner (PSAP-grensene for urn:service:sos; politi-, brann- eller ambulanseområder for urn:service:sos.police og de andre) og last dem opp på Kjerne-tjenester. En polygon sine name, uri og number-egenskaper leses; gi en standard PSAP-URI for de uten en. Rediger et område for å legge til byene eller fylkene det betjener, for oppringere hvis plassering bare er en sivil adresse. Prøv et sted viser hvilket område som svarer på en posisjon eller en by, som en LoST-spørring ville.

ECRF. Slå på Besvar LoST-spørringer og liste adressene som kan spørre (din ESInet): andre elementer sender findService til /lost (RFC 5222) og får PSAPs URI. En bestemt tjeneste (sos.police) besvares fra sine egne områder først, deretter fra sos. Et sted som ingen av dine områder dekker kan gå til Skogveilederen (RFC 5582: den nasjonale katalogen over ECRF-er): en rekursiv spørring utføres der på spørerens vegne og svaret returneres (begge servere listet i svarets sti), og en spørring som allerede har passert gjennom denne ECRF avvies som en loop.

ESRP. Liste PSAP-ene: hver enkelt PSAPs URI (som områdene navngir), trunken som når den og dens overflods-PSAP, og velg standard-PSAP. Deretter send ESInets innkommende 911-opprinnelige oppkall til ESRP i Oppkallsruting (kapittel 8). Hvert oppkall går til PSAP for dens plassering (fra denne serverens områder, eller en utenfor ECRF via LoST), med dens plassering og tjenesten den ba om fraktet med; når den PSAP ikke tar det, til dens overflod; uten plassering, eller fra et sted ingen område dekker, til standard. Hver avgjørelse er i i3-loggen på 911-opprinnelige oppkall (kapittel 77).

Policyregler. Når ECRF har valgt en PSAP, sjekkes reglene under Policyregler i rekkefølge og den første hvis betingelser alle holder avgjør: send oppkallet til en annen PSAP, eller avvis det som opptatt. En regel kan se på tjenesten (brannopprinnelige oppkall bare, for eksempel), PSAP som ECRF valgte, en timeplan (mens nattskiftets senter er stengt), oppkall uten plassering, oppkall som BCF har merket som mistenkelige, og trunken oppkallet kom inn på. Hver avgjørelse er i i3-loggen som en RouteLogEvent som navngir regelen.

Grensekontroll (BCF). Med Sjekk oppkall fra ESInet på, sjekkes hvert oppkall fra en ESInet-trunk først: adresser under Alltid avvis blir sendt tilbake, og det samme gjelder en adresse som starter flere oppkall per minutt, eller holder flere oppkall samtidig, enn du tillater (en telefoni-negativt tjenesteangrep sender flommer av oppkall fra noen kilder). Avviste oppkall får 503 med Retry-After. Slå på la oppkallet gå gjennom merket som mistenkelig for å sende slike oppkall videre og la en politikeregel bestemme (til et senter som skjermmer dem, eller avvist); en ekte oppringer i en flom blir da ikke tapt. Grensekontroll: siste lister hva som ble avvist eller merket. Sjekk STIR/SHAKEN-signaturer sjekker den signerte oppringer-ID-en (Identity-headeren) til hvert oppkall som bærer en, mot STI-rotene satt under Oppringerfiltrering i Innstillinger: et oppkall hvis signatur feiler, går gjennom merket som mistenkelig, for en politikeregel å sende noe annet, og blir listet i BCF-loggen; et 911-oppkall blir aldri avvist for det, og usignerte oppkall (de fleste i dag) blir latt alene. Hvert oppkall forlater BitVoice som en ny forespørsel på egen hånd (BitVoice er en tilbake-til-bake-agent), som bærer bare headerne og kroppene BitVoice forstår og sender videre: plasseringen, den ekstra dataen og sesjonen. Inspektér media sjekker hver RTP-pakke av et ESInet-oppkall før den brukes eller sendes videre: pakker fra en adresse annen enn den oppkallets SDP ga, med en payload-type som tilbudsavtalen ikke navnga, med headerlengder (CSRCs, utvidelse, padding) som ikke passer pakken, større enn Største pakke (1 500 byte når blank), eller forbi Pakker per sekund (150 når blank; G.711 på 20 ms sender 50) blir droppet og talt. Den første av hver type, så den 10., 100. og så videre, går i Grensekontroll: siste (som *media droppet*) og oppkallets notater. Oppkallet blir aldri avsluttet for mediene: oppringeren beholder de gode pakkene. Oppkall fra CAMA-trunker kommer fra det lokale kortprogrammet og blir ikke inspisert.

Adressevalidering (LVF). Last opp dine 911 GIS-adresse-data som GeoJSON, i NENA GIS-data-modellen (NENA-STA-006): vei-midtpunkter med FromAddr_L, ToAddr_L, Parity_L, IncMuni_L og resten, og sted-/struktur-adresse-punkter med Add_Number, St_Name, Inc_Muni. En LoST-spørring med validateLocation="true" får da adressens gyldige, ugyldige og usjekket deler i svaret (RFC 5222), så bærere og plasserings-servere kan korrigere en adresse før et 911-oppkall noen gang bruker den. Sjekk en adresse gjør det samme her: et nøyaktig adresse-punkt er det beste sammenfallet, så en gate-segment hvis rekke på høyre side av veien holder nummeret (odd og like sider respektert); stavinger som Street og St, North og N behandles likt.

i3-loggingstjenesten. Slå på Kjør en i3-loggingstjeneste: de andre elementene i kjerne-delen din (ESRPer, BCFer, PSAPer) sender sine logghendelser (NENA-STA-010), hver signert som en JWS med elementets sertifikat i x5c-headeren, ved POST til /i3log/LogEvents fra de tillatte adressene. Hver kommer som en JWS i den flattede JSON-formen (signert, eller usignert med algoritme none, som en loggingstjeneste kan ta: merket som ikke sporet til PCA), blir sjekket og lagret, og svaret er logghendelsens ID. Les tilbake med GET /i3log/LogEvents/{logEventId}; list med GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); finn ID-ene til et oppkall eller en hendelse med /i3log/LogEventIds, /CallIds, /IncidentIds og /AgencyIds; og les en tekst-konversasjon til et oppkall med /i3log/Conversations?callId=. GET /i3log/Versions sier hva denne tjenesten snakker. Logghendelser mottatt lister en dags hendelser med hvem signerte hver. Hvert svar blir sjekket mot NENAs offentlige OpenAPI-definisjon av tjenesten; tjenesten har ennå ikke blitt prøvd med en annen leverandørs elementer.

PSAP-bevisselsesbyrå. Lim inn PCA-rot-sertifikatene under PSAP-bevisselsesbyrå-roter: et signert logghendels blir da bare tatt når dens signatør-sertifikat kjeder til en av dem (og ikke er utløpt), og blir vist med PCA. Uten dem, blir bare signatur alene sjekket, og hendelsen blir vist som ikke sporet til PCA.

Lokasjonsopplysninger (LIS). Slå på Svar på lokasjonsforespørsler (LIS) og last opp en regneark (CSV) med lokasjonsopplysninger: en overskriftsrad, og på hver rad ett av en nummer (ALI-data, eksportert), et nettverk (et adresseområde som f.eks. 10.20.3.0/24, eller en enkelt adresse: et bygg, en etasje, en VLAN, et Wi-Fi-nettverk) eller en mac-adresse (en enhet: en skrivebordsphone, en veggkontakts switchport), deretter adressen som hno, rd, sts, unit, floor (eller flr), a3 (by), a1 (stat), pc og land, med lat, lon og radius der dette er kjent (andre navn, som f.eks. phone, street, zip, subnet og ip, blir også forstått). PSAP-er, legacy-nettverksporter og telefoner ber så om /held (HELD, RFC 5985) fra de tillatte adressene og får en PIDF-LO. En forespørsel navngir sin enhet med telefonnummer, IP-adresse eller MAC-adresse (RFC 6155); en forespørsel som ikke navngir noen, blir besvart for adressen den kom fra, som en LIS på et kontor- eller campusnettverk. En adresse blir lokalisert av det smaleste nettverket som omfatter den, så en etasjes /24 vinner over campus /16. En enhet uten oppføring får HELD's locationUnknown; en identitet av en annen type (en NAI, en port) får notLocatable. En BitVoice PSAP peker sin Lokasjonsoppsøking (ALI) hit. Søk opp et nummer, adresse eller MAC-adresse sjekker en oppføring og sier hvilket nettverk den kom fra. Et nummer, nettverk eller MAC-adresse som er oppført igjen, erstatter den gamle oppføringen; Erstatt alle oppføringer starter på nytt. Bare de tillatte adressene blir besvart: en LIS som svarer for enhver adresse den blir bedt om, må ikke være åpen 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:

Testoppringer til en PSAP. En BitVoice PSAP besvarer en testoppringing fra ESInet (urn:service:test.sos, NENA-STA-010.3 seksjon 9, RFC 6881) på egen hånd: svaret sier PSAP-navnet, tjenesten og plasseringen som oppringingen kom fra, de tre første lydpakkene sendes tilbake, og den henger opp. En ny test fra samme sted innen to minutter blir avvist (486), likeså en femte på én gang. En ESRP sender en testoppringing videre som en ekte, fortsatt merket som en test. Slå av Besvar testoppringer på siden for 911-oppringer for å avvise dem (404).

JWS-algoritmer: NENA-STA-010.3 ber om EdDSA med Ed448. Go's standardbibliotek, som BitVoice bruker for hver kryptografisk steg, har Ed25519 men ikke Ed448, så EdDSA-signaturer blir sjekket med Ed25519-nøkler, og ECDSA- og RSA-signaturer blir også tatt; et Ed448-sertifikat blir avvist.

Meente du. En adresse som ikke er gyldig får opp til fem forslag fra samme data, best først, hver som sier hvorfor: en gate en eller to bokstaver unna (en byttet bokstaverpar teller som en), samme gate i neste by, eller nærmeste nummer gaten har, på samme side når det kan (partall blir partall). Bruk fyller et forslag inn. En posisjon med adressen. Gi en bredde- og lengdegrad (og posisjonens radius, når kjent) med adressen: posisjonen blir sjekket mot adressens egen adressepunkt, med tillatelse for dens radius og 100 m mer (størrelsen på en tomt, og GIS-feil). Svaret gir avstanden og om de to er enige, og når de ikke er det, adressen nærmest posisjonen. En adresse som bare er kjent fra vegmidtpunkter har ingen punkt å sjekke mot, og svaret sier det. LoST's validateLocation har ingen plass for noen av delene, så operatører som spør via LoST får bare valideringen.