BitVoice handbok

En öppen källkods telefonväxel i ett program, konfigurerad helt i webbgränssnittet: tillägg, köer, konferensrum, personalportalen, värdorganisationer och den offentliga säkerhetslaboratoriebanan.
79 kapitel · 63 figurer · 46 tusen ord · BioDream LLC

Innehåll

  1. Del 1. Komma igång
    1. 1. Komma igång
    2. 2. Hur mogen varje del är
    3. 3. Tillägg
    4. 4. Ansluta telefoner
    5. 5. Smala telefoner och MGCP-gatewayer
    6. 6. Telefonikort
    7. 7. Trunkar
    8. 8. Samtalsswitchning
    9. 9. PIN-samlingar
    10. 10. Samtals-ID-sökning
    11. 11. Nödsamtal
    12. 12. Platser och kontors 911
    13. 13. Hälsa
    14. 14. Inställningar
    15. 15. Skärmarna på ditt språk
  2. Del 2. Vart samtal går
    1. 16. Samtalflöde
    2. 17. Ringgrupper
    3. 18. Köer
    4. 19. Utgående uppringare
    5. 20. Ljud: prompter, språk och hållmusik
    6. 21. Menyer (automatisk växel)
    7. 22. Namndirectory
    8. 23. Inringning (DISA)
    9. 24. Röstbottar (AudioSocket)
    10. 25. Dag/natt-omkopplare
    11. 26. Tidtabeller
    12. 27. Skript (JavaScript och Lua)
    13. 28. AI-receptionist, röstbrevlådetrionage och fråga
    14. 29. Meddelandelåda
    15. 30. Återkopplingar
    16. 31. Samtalslänkar och webbsamtal
  3. Del 3. Vardagssamtal
    1. 32. Funktioner, vidarebefordring och snabbval
    2. 33. Personalportalen
    3. 34. Konferensrum
    4. 35. Paging och högtalare
    5. 36. Hot desking
    6. 37. Hotell och väckningssamtal
    7. 38. Kontakter på varje telefon
    8. 39. Kalendrar och stör ej
    9. 40. Mobilappar
    10. 41. Videotal
    11. 42. Fax: skicka och ta emot, faxmaskiner och analoga telefoner
    12. 43. Inkorg: webbchatt, WhatsApp och Messenger
    13. 44. Företagstextning (SMS)
    14. 45. Överföringsinformation
  4. Del 4. Kunder och insikt
    1. 46. Pågående samtal
    2. 47. Samtalshistorik
    3. 48. Kundtidslinje
    4. 49. CRM: uppringarkort och samtalshistorik
    5. 50. Samtalinsikt för chefer
    6. 51. Samtalinspelning och kortbetalningar
    7. 52. Spelainsamtycke
    8. 53. Samtalskvalitet
    9. 54. Kostnader och budgetar
    10. 55. Anropar-ID-reputation och varumärkesanrop
    11. 56. Spamskydd och STIR/SHAKEN
  5. Del 5. Köra BitVoice
    1. 57. Administratörer
    2. 58. Enkel inloggning
    3. 59. Företagskatalog (Active Directory och LDAP)
    4. 60. Säkerhet
    5. 61. Ändringar, säkerhetskopior och import
    6. 62. Uppdateringar
    7. 63. Flera servrar som ett telefonisystem
    8. 64. Där data lagras (SQLite eller PostgreSQL)
    9. 65. Värd för andra organisationer
    10. 66. Kodningar och ljud
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importera
    13. 69. Konfiguration som kod
    14. 70. Asterisk-kompatibilitet (AMI, ARI och AGI)
    15. 71. AI-assistent (MCP)
    16. 72. Arkiv
    17. 73. Rättsliga kvarhållningar
    18. 74. Mätvärden: Prometheus, OpenTelemetry, Grafana, SNMP och samtalshistorik
    19. 75. Samtalsgenerator
    20. 76. SIP-spårning
  6. Del 6. Allmän säkerhet: labb-spåret
    1. 77. 911-samtal (911-profilen)
    2. 78. Radiodispatchkonsol
    3. 79. NG911 Core-tjänster (ECRF, ESRP, LVF, BCF, LIS, loggning)
Del 1

Komma igång

Från en ny installation till en fungerande telefonväxel: tillägg, telefoner, ett telefonföretag, vart samtal går, nödsamtal från dina kontor och hur man berättar att allt är klart.

Kapitel 1

Komma igång

I webbgränssnittet: /

BitVoice är ett komplett telefonsystem i ett program: växeln som telefoner loggar in på, menyer och köer som ringsignalerna passerar genom, röstbrevlåda, inspelning, konferensrum, fax och anslutningar till telefombolag. Allt konfigureras i webbläsaren, på skärmar som beskrivs i den här handboken. Det finns ingen konfigurationsfil att redigera och ingenting annat att installera.

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

Vad du behöver

Den första starten

Starta BitVoice och öppna den adress den skriver ut (på en skrivbord kan den öppna webbläsaren själv). Webbgrensnittet är endast HTTPS, även på den här datorn. Tills du installerar ett eget certifikat (Inställningar, Certifikat) använder BitVoice ett som den skapat själv, så webbläsaren varnar en gång: välj att fortsätta till webbplatsen. Konfigurationsguiden frågar efter fyra saker: organisationens namn och land, den första administratörens lösenord, den första tilläggen och ditt telefombolag om du har ett. Landet bestämmer nödnumren, tonerna ringsignalerna hör och sättet att skriva telefonnummer på.

Den första timmen

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. Tillägg: ett per person eller skrivbord. Var och en har ett nummer och ett SIP-lösenord. Öppna Tillägg (kapitel 3)
  2. Telefoner: anslut en skrivbords telefon, mjukvara eller webbtelefon till varje tillägg. Öppna Telefoner (kapitel 4)
  3. Trunk: ditt telefonföretags konto, så att du kan ringa ut och bli uppringd. Öppna Trunkar (kapitel 7)
  4. Samtalshanterare: vart samtal från utsidan går (en person, en ringgrupp, ett menyval), och vilken trunk som används för utgående samtal. Öppna Samtalshanterare (kapitel 8)
  5. Hälsa berättar vad som fortfarande saknas, nödsamtal först. Öppna Hälsa (kapitel 13)

Sedan gör du ett testanrop: från vilken telefon som helst slår du *43, eko-testet. Du hör dig själv tillbaka, vilket visar att ljud fungerar åt båda hållen.

Installera 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 laddar ner den senaste versionen för datorn, kontrollerar den mot versionens SHA-256-summor och BioDreams versionsignatur (med OpenSSL 3, eller annars med OpenSSHs ssh-keygen, som Windows 10 och 11, macOS och Ubuntu 20.04 har; ssh-keygen kontrollerar versioner från v0.1.14 och framåt), och installerar den som en tjänst som startar automatiskt:

Kör samma kommando igen för att uppgradera (eller använd Uppdateringar (kapitel 62)). sh -s -- --version v0.1.5 (efter pipen) väljer en version; --uninstall tar bort programmet och tjänsten men behåller data, --purge tar bort data också. I Windows, spara skriptet och kör .\install.ps1 -Version v0.1.5, -Uninstall eller -Purge, eller ta bort det i Installerade appar. För en server som hålls utanför internet, kopiera versionsarkivet och SHA256SUMS till en mapp och ange BITVOICE_FROM till den.

Var det körs

BitVoice körs på Linux, macOS och Windows.

SystemHur man startar detVar dess data är
Linux./bitvoice (eller systemd-tjänsten i versionen)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowsdubbelklicka bitvoice.exe%APPDATA%\BitVoice

I Windows, håll kvar fönstret det öppnar medan du använder BitVoice (stängning stoppar BitVoice), och när Windows frågar om det får använda nätverket, tillåt privata nätverk så att telefoner kan ansluta. -data placerar data var som helst annars; -https och -sip väljer adresser och portar; -log FILE skriver också allt det skriver ut till en fil, för en dator där ingen tittar på dess fönster.

Portarna det använder

PortVad för
5060 UDP och TCPSIP: telefoner och trunkar
5061 TCPSIP över TLS (krypterad signalering)
4569 UDPIAX2-trunkar, endast en gång en är konfigurerad
1720 TCPH.323-trunkar, endast en gång en är konfigurerad
2000 TCPSkinny (SCCP)-telefoner, endast när de är aktiverade
2727 UDPMGCP-gatewayer, endast när de är aktiverade
10000–20000 UDPljudet i samtal (RTP), inställt i Inställningar
8443 TCPden här webbgränssnittet, endast HTTPS (vanlig HTTP skickas vidare till HTTPS)

Om ett annat telefonisystem redan har 5060, tar BitVoice nästa lediga port och Hälsa meddelar det.

Allt i webbgränssnittet

Varje inställning har en skärm, och varje skärm har ett kapitel här. Ingenting behöver en konfigurationsfil, en kommandorad eller ett andra verktyg. För automatisering, är samma skärmar en REST-API, och konfigurationen kan följa en fil i Git (Konfiguration som kod (kapitel 69)), men ingen av dem krävs någonsin.

Vad BitVoice är till för

BitVoice är först ett telefonisystem för kontor och kontaktcenter, och en värdtjänst för leverantörer: allt i de fem första delarna av den här handboken. 911-svarspunktsprofilen, radiodispatchkonsolen och NG911 Core Services är en separat laboratorie- och designpartnertrack (Allmän säkerhet (kapitel 77)): de är utanför menyn tills de är aktiverade i Inställningar, och inte certifierade för direkt användning. Nödsamtal från era egna telefoner är inte en del av den tracken; de fungerar på varje telefonisystem från starten.

Hitta din väg

Kapitel 2

Hur mogen varje del är

Hur långt varje del har bevisats, öppet. Fälttestad: kör mot riktiga system över ett riktigt nätverk (Amazon EC2, internet, riktiga leverantörstjänster). Kontrollerad mot en referens: testad mot en oberoende implementering eller standardens egna data. Programtestad: BitVoices egna tester och webbläsartester endast, inte med riktiga enheter eller konton ännu. Laboratorie: allmän säkerhetsdelar, inte certifierade.

OmrådeMognadVad det vilar på
SIP-trunkar: registrering, samtal in och ut, anroparens ID, upptagen, tangenter (RFC 4733)Fälttestaden kommersiell operatör, SIP.US (demo-konto, från EC2): registrering och samtal ut till det offentliga telefonnätet över UDP och över TLS med operatörens certifikat kontrollerat; MOS 4,39, ingen förlust. Samtal in från det offentliga telefonnätet: T38Fax (faxsamtal till dess nummer, registrering över UDP). Asterisk som operatör över internet på EC2; MOS 4,4. Kamailio 5,7 (registrering med digest-inloggning över TLS, samtal båda vägarna, tangenter) och FreeSWITCH 1,11 (TLS och SRTP, samtal båda vägarna, G,722 till G,711) som den avlägsna änden; MOS 4,39
Skrivbordstelefoner över SIPFälttestadAsterisk som skrivbordstelefon över internet. Riktiga Yealink-, Poly- eller Grandstream-telefoner har inte testats ännu
Webbläsartelefon (WebRTC)Fälttestadfrån utsidan till EC2; Chromium-webbläsartester med ljud båda vägarna
Två servrar, en PostgreSQL, redundansFälttestadkill -9 och planerad stopp på EC2: samtalet fortsätter, leverantörsraden flyttas
En-kommandos-installationFälttestadUbuntu 24,04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (som administratör och inte, i PowerShell 5,1 och 7), Ubuntu 20,04 och Fedora 42 i containrar, macOS 26 på Apple-silikon (för en person, och med sudo för hela Mac i CI); tillbaka efter omstart
KapacitetFälttestad2 000 samtal samtidigt, ingen förlust, MOS 4,41, på en 16-vCPU c7i,4xlarge (cirka 10 vCPUs upptagna); 200 samtidigt på c7g,large, c7i,large, t4g,small, en M4 och Lightsail-nano, Vid 2 000: jitter 4,0 ms för 95 % av samtalen, längsta lucka mellan paket 74 ms, längsta garbage-samlingpaus 4,2 ms
FreePBX-migrering (Import)Fälttestaden riktig FreePBX 17,0,33-säkerhetskopia (70 MB) importerad i sin helhet; andra från FreePBX egna format
AI-transkriptioner, sammanfattningar, receptionistFälttestaden riktig modell via OpenRouter
Fakta och sammanfattningar utan språkmodellProgramtestaduppfunna 911-samtal endast: 23 av 43 fakta (53 %) på den förseglade uppsättningen, 3 fakta som ingen förväntade sig; 41/41 utbildning, hålls 27/40 kallt. Aldrig mätt på riktiga samtal.
Tal-till-text på den här servern (whisper)Fälttestad på macOS och Linuxwhisper-server 1,9,5 kör av BitVoice: på en Mac, och på Ubuntu på EC2 (x86-64), där den skrev live-samtals- och röstbrevlådetranskriptioner i telefonappens fälttest; nedladdningar för varje plattform byggd och testad i CI
Arkivering till S3, hemligheter från AWS Secrets ManagerFälttestadriktig AWS, vår egen SigV4
SNMP-övervakning och fällorFälttestadnet-snmps snmpwalk och snmptrapd
Let's EncryptFälttestadutfärdar och förnyar det offentliga demo-certifikatet
Maskinbilder (AWS) och konfiguration som kodFälttestaden EC2-avbildning byggd av deploy/cloud/build-images.sh från Ubuntu 24,04: varje server från den startar ny; deploy/terraform med OpenTofu 1,13 (skapa, ändra, ingen drift, förstör). Azure-avbilder har inte testats
IAX2-trunkarKontrollerad mot en referensAsterisk 23
Fullständig ICE bakom NAT (STUN- och TURN-klient)Kontrollerad mot en referensChromes ICE-agent (värdkandidater och relay endast), JsSIP-mjuktelefoner med BitVoices erbjudande, coturn 4,18 och BitVoices egen TURN-server som relayer, mDNS-värdnamn för Chrome upplösta. Inte ännu testad från en server bakom en riktig NAT-router
ICE-omstart (en telefon som byter nätverk mitt i ett samtal)Kontrollerad mot en referensChrome som startar om ICE på ett webbsamtal (BitVoice som ICE-lite och som en fullständig agent) och SIP.js 0,21 som startar om genom re-INVITE över SIP över WebSocket: nya autentiseringsuppgifter båda vägarna, ett nytt kandidatpar, ljud varje halv sekund genom omstarten. Inte ännu testad på en telefon som verkligen flyttar från Wi-Fi till ett mobilt nätverk
SIP History-Info och Diversion (vidarebefordrade samtal)Kontrollerad mot en referensAsterisk 20:s PJSIP båda vägarna: dess vidarebefordrade samtal lästa av BitVoice, och BitVoices vidarebefordringar lästa av Asterisks REDIRECTING() från History-Info ensamt och från Diversion ensamt; RFC 7044-poster behållna och utvidgade på en vidarebefordran. Inte ännu testad med en operatör eller Teams som skickar dem
Företagskatalog (LDAP, Active Directory)Kontrollerad mot en referensOpenLDAP 2,4 (StartTLS och LDAPS, 1 203 personer lästa genom sidnumrering förbi dess 1 000-gräns, grupper, inloggning) och Samba 4:s Active Directory (LDAPS, sidnumrering förbi 1 000, inaktiverade konton utelämnade, kapslade grupper för ringsgrupper och roller). Inte testad mot Microsofts egen Windows Server-domänkontrollant
ARI (Asterisk REST-gränssnitt)Kontrollerad mot en referensvarje åtgärd i Asterisks publicerade ARI anropad och dess svar kontrollerad mot modellens krävda fält; ari-client 2,2,0, Asterisks JavaScript-bibliotek, läsande /ari/api-docs och körande ett program
Allas videorum (SFU, simulcast) och skärmvisaKontrollerad mot en referensTre Chromium-webbläsare i ett rum, var och en som skickar tre storlekar (VP8-simulcast) och tar emot de andra två; storlekar byttas vid nyckelramar när flikarna växer och minskar. Kameror och en delad skärm (Chromes egen skärmavbildning) i ett H.264-rum. Inte ännu testad med Firefox eller Safari, över internet, eller med fler än tre kameror; H.264-simulcast väljer lager efter webbläsarens ordning endast.
AGI och FastAGI (Asterisk Gateway-gränssnitt)Kontrollerad mot en referensvarje kommandos svar jämfört med Asterisk 20,6:s över FastAGI; en FastAGI-server skriven med pyst2 som kör ett samtal; EAGI-ljud till ett program. Inte testad med en produktions-IVR
AI-assistenter via MCPKontrollerad mot en referensdet officiella MCP TypeScript SDK (1,32,2) som klient: verktyg listade och anropade med en API-nyckel över Streamable HTTP (protokoll 2025-11-25), och dess OAuth-inloggning från slut till slut (upptäckt, registrering, PKCE, token, förnya); samtyckessidan i Chromium; stdio-bryggan mot en testserver. Inte ännu testad med Claude, ChatGPT eller en annan assistent, som behöver en server som är tillgänglig från internet med ett betrott certifikat.
Microsoft 365 och Google Workspace (kontakter och kalendrar)Programtestadmot mock-objekt av Microsoft Graph (användare, organisationskontakter, kalender getSchedule, klient-credentials-token) och av Googles People API, Calendar freeBusy och JWT-bärartoken, skrivna från deras publicerade referenser; mock-objekten kontrollerar vad BitVoice skickar (JWT:s signatur och anspråk, sidnumrering, begärandedelar). Inte ännu testad med en riktig Microsoft 365-klient eller Google Workspace-domän.
Skärmarna på 14 språkProgramtestadvarje text som skärmarna visar (cirka 5 000, från koden: JSX-text, strängar och serverns meddelanden) maskinöversatt av Llama 3,3 70B till 13 språk, 99 % behållna av kontrollerna (samma platshållare, adresser och koder orörda); tyska ritade genom webbläsartesterna (inloggning, meny, sökning, ett formulär, tillbaka till engelska). Inte granskad av en person på något språk.
H.323-trunkarKontrollerad mot en referensH323Plus 1,28 (dess simph323 som spelar och spelar in WAV-filer) på EC2: samtal båda vägarna med Fast Connect och G,711, varje ände hör den andres ton, MOS 4,39; samtalssättning också med Asterisks chan_ooh323 (vars eget ljud är trasigt i Asterisk 22)
SIP över WebSocketKontrollerad mot en referensJsSIP och SIP.js
Kodekar: GSM, G,726, iLBC, MP3-hållmusikKontrollerad mot en referensffmpeg, RFC 3951-referensprogrammet och minimp3, exempel för exempel
Kodekar: G,711, G,722, G,729, Opus, SpeexKontrollerad mot en referensG,711 och G,722 byte för byte och exempel för exempel med spandsp; G,729:s avkodare exempel för exempel på alla sju av ITU:s egna testvektorer i bilaga A (bcg729 är inte), dess kodare som fungerar med bcg729 på samma kvalitet (G,729 kräver inte att kodare matchar); Opus-paket avkodade av libopus 1,6,1 och libopus-paket avkodade som libopus gör; Speex-paket och ljud identiska med libspeex 1,2,1; Opus-samtal med Android-appen
Kodekar: AMR-NB, AMR-WBKontrollerad mot en referens, med en känd luckaAMR-WB avkodar som opencore-amr exempel för exempel, och på 3GPP:s egna TS 26,174-testsekvenser matchar 3GPP:s avkodare exakt på 167 av 198 och är aldrig mätbart under den; AMR-NB-kodaren ram för ram med opencore-amr, men dess avkodare är nära, inte exakt (cirka 31 dB från opencore). Båda kommer från de fästa goamr-biblioteken
Kodekar som transporteras oförändrade: G,722,1 (Siren 7), G,722,1C (Siren 14), G,719, Codec2Programtestadegna tester: erbjuds med deras bitrate eller läge, besvarade, paket båda vägarna byte för byte; inte omvandlade (inget fritt referenskod BitVoice får skicka för G,722,1 och G,719). Inte ännu testad med en riktig Polycom- eller konferenssystem
ISDN PRI och BRI, T1/E1Kontrollerad mot en referenslibpri (Asterisks), båda sidor; och på EC2 genom den riktiga DAHDI 3,4-kärndrivrutinen (två spann kopplade ihop i kärnan, Asterisk 20:s chan_dahdi som telefonföretaget): samtal båda vägarna med nummer och namn, alla 23 kanaler samtidigt, MOS 4,39. Inget fysiskt kort eller linje ännu
MFC-R2, E&MKontrollerad mot en referensOpenR2; MF-toner genom våra egna tester. Inget riktigt kort eller linje testat
SS7 (ISUP, MTP, länksamlingar med flera länkar med byte)Kontrollerad mot en referenslibss7 (Asterisks chan_dahdi-bibliotek), ITU och ANSI. Inget riktigt operatörsnät testat
Fax (T,30, T,38)Fälttestaden faxoperatör, T38Fax (kostnadsfri test, från EC2): BitVoice som skickar en fax över det offentliga telefonnätet till dess eget nummer och tar emot den, båda över T,38 (2 sidor, 14 400 bit/s, sidorna anlände oskadade; registrering med användarnamn och lösenord); och som skickar en fax mellan en faxmaskin på en gateway (Asterisk med spandsp, som står för en) och T38Fax, ut och tillbaka, 2 sidor vid 14 400 bit/s båda vägarna: en gång allt på G,711 (gatewayen vägrade T,38) och en gång bytt till T,38 på båda sidor. spandsp (genom Asterisk 20) på EC2: tar emot och skickar över T,38 med felrättning, och skickar faks mellan två andra maskiner över T,38 och över G,711. Inget hårdvarufaxgateway testat, och T38Fax bad aldrig om T,38 själv, så en operatörs växel som nekades av gatewayen sågs inte
Provisionering: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberDataProgramtestadleverantörernas dokumenterade format; inte på riktiga telefoner
Skinny (SCCP)-telefoner, MGCP-gatewaysKontrollerad mot en referensSkinny: telefoner från det öppna källbiblioteket mwicat/sccp, varje meddelande läst av Wiresharks dissector, storlekar som Asterisks chan_skinny; MGCP: Yates MGCP-gateway (omstart, provisoriska svar, bekräftelser; den har inga analoga portar, så inget samtal). Inget Cisco-telefon- eller gateway-hårdvara testat
Microsoft Teams Direct RoutingProgramtestadmot en simulerad Microsoft-proxy som följer Microsofts publicerade Direct Routing SIP-regler (OPTIONS, Contact, user=phone, klientcertifikat, överföringar som Teams ber om via REFER med x-m och x-t); inget Teams-konto testat: Microsoft erbjuder inget kostnadsfritt (Teams Phone-licenser)
Hotell (FIAS)Kontrollerad mot en referensvarje post som BitVoice skickar kontrollerad mot Oracles publicerade FIAS 2,20,23-specifikation (länkstart, länkposter, inlägg, väck-svar); egna tester. Inte ännu mot Opera själv
Textmeddelanden, WhatsApp, Messenger, webbchattKontrollerad mot en referens (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp)textmeddelanden via Twilio, Telnyx, Bandwidth, Vonage och TextMagic, och WhatsApp-textmeddelanden, mallar och mallistor, mot mock-objekt byggda från leverantörernas publicerade OpenAPI-specifikationer (Stoplight Prism, som vägrar allt som specifikationen inte tillåter; TextMagics är den som dess egen klient genereras från). Vonages visade att nyckeln hör hemma i HTTP Basic, inte längre i formuläret. SignalWire talar Twilios API; Plivo, Flowroute, VoIP.ms och Messenger publicerar ingen specifikation och testas mot mock-objekt skrivna från deras dokumentation. Inget live-konto testat
CRM-anropskort, Azure Blob, Azure Key VaultKontrollerad mot en referensEspoCRM (en riktig öppen käll-CRM, i Docker) för anropskort; Microsofts Azurite-emulator för Blob-uppladdningar (container-SAS, vägran); Lowkey Vault för Key Vault med en hanterad identitet. Inte ännu testad mot Azure själv eller en värd-CRM
Spamskydd: robottest, okända anropare, spamdatabas, *32, förslagProgramtestadBitVoices egna tester: en leverantör som ringer in via SIP och trycker på tangenter (RFC 4733) vid robottestet, som passerar och misslyckas med det; kända, alltid tillåtna och nödanropare som ringer samtidigt; spamdatabasen mot en mock som svarar som Twilio dokumenterar sin Lookup med Nomorobo-tillägget (inget Twilio-konto testat); *32 från en skrivbordstelefon; förslag från anropsjournaler; inställningarna via webbtesterna. Inte ännu testad mot riktiga robosamtal eller en betald databas
iPhone- och Android-apparFälttestad (Android)Android: en Google Pixel 8 (Android 16, Wi-Fi) med den undertecknade versionsbyggnaden mot BitVoice på EC2 med ett Let's Encrypt-certifikat: parat via länk, ringde med Androids anropsavisering, svarade från den, ljud båda vägarna, förblev ansluten med skärmen avstängd och i bakgrunden (dess pågående anropsavisering, Hänga upp); utan push ringde den inte i bakgrunden. En Google Pixel 11 (Android 17) i AWS Device Farm: parat, ringde, svarade, ringde ut; Opus, MOS 4,1. iPhone: appen (SwiftUI, CallKit, PushKit VoIP) byggs mot den aktuella SDK:n (Xcode 27) och servern undertecknar Apple VoIP-pusher (APNs, ES256); samma riktiga enhetsfixar som Android och en App Store-lista (ios/AppStore) finns. Båda apparna är en fullständig utvidgning: överföring (blind, via REFER), paus och ett andra samtal, tangentbord och tyst, med Recents, visuell röstbrevlåda (med transkriptioner), en Team-busy-lampa, Kontakter, personalchatten (kollegor med närvaro, direktmeddelanden och rum, med en avisering i bakgrunden och en push när appen är stängd), en videorumsväljare (listar SFU-rummen med vem som är i varje, ansluter som utvidgningen, visas som ett videosamtal på telefonens skärm) och en live AI-transkription på samtalet (AI.LiveCallTranscripts); överföring, paus, den live-transkriptionen, chatten som når en kollega, rumlistan, ett rum som ansluts av en telefon och chatt-puschen form är var och en täckt av en motor-nivå, API eller webbtest. På Pixel 8 (2026-10-30, felsökningbyggnad, EC2 med Let's Encrypt): ringde och svarade från aviseringen, pausade och återupptog (Androids anropsstatus följer), ringde ut på Androids anropssystem, Opus båda vägarna med MOS 4,38 och ingen förlust; anslöt till ett videorum med dess kamera (begärd vid första användningen) och såg en skrivbordskamera, båda live; ett chattmeddelande i bakgrunden meddelade och öppnade Chatt. Paus och överföring når den nativa anropsskärmen (CallKit, Telecom). Inte ännu kördes på en iPhone eller skickades in: push, systemanropsskärmen och undertecknande behöver vårt eget Apple Developer-konto
911-profil, radiokonsol, NG911 Core Services, anroparens videoLaboratorietestadNENAs scheman och exempeldata, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, en NIST P25-avkodning (dess IMBE-riktiga röster avkodade som mbelib avkodar dem: samma tonhöjd, harmonier, röst och amplituder); aldrig på ett live-ESInet, P25-system eller PSAP CAD, och inte certifierad
P25-fas 2 halvrate-röst (AMBE+2)Ej erbjudenpatenterad till 2028
Ed448-signaturer (NENA)Ej erbjudeninte i Golangs standardbibliotek, och BitVoice skriver ingen egen kryptografi; Ed25519 används
SS7-signalingöverföring (STP), SCCP och TCAPKontrollerad mot en referensOsmoSTP 2,3,0 över M3UA/TCP med libosmo-sigtrans SCCP-eko bakom den: UDT och XUDT båda vägarna, UDTS returnerade, global titelöversättning via STP, en switch på en länksamling som når eko via IP; TCAP mot libosmo-asn1-tcap båda vägarna. ITU endast; ingen SCTP, anslutningsorienterad SCCP eller SCCP-hantering; ingen riktig operatör testad
MFC-R2 Kina-variant (Kina nr 1)Programtestadvarje signal på ett samtal kontrollerad mot Ciscos publicerade Kina-tabeller och anropssekvenser (KA, KD, grupp B av KD som skickas, C och D-bitarna 11). OpenR2:s Kina-variant är oenig med sig själv, så inget program att testa mot; ingen riktig linje testad
ALI via PAM eller E2Ej erbjudenPAM är Intrados eget protokoll med ingen publicerad specifikation; E2 (J-STD-036, NENA 05-001) körs mellan en mobil positionscentral och ALI-databasen, inte till en PSAP. BitVoice talar begäran- och text-ALI-länkar och HELD istället
Kapitel 3

Tillägg

I webbgränssnittet: /extensions

Ett tillägg är ett nummer för en person eller en arbetsplats. Telefoner loggar in med tilläggsnumret och dess SIP-lösenord; samtal till numret ringer alla telefoner som är inloggade som det, samtidigt.

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

Lägga till ett tillägg

  1. Öppna Tillägg (kapitel 3) och tryck på Lägg till tillägg. Nästa lediga nummer och ett starkt SIP-lösenord fylls i.
  2. Ange personens namn (visas på andra telefoner när de ringer) och e-post (för röstbrevlåda via e-post).
  3. Fyll i 911-platsen: platsen, våningen och rummet. Den skickas med nödsamtal.
  4. Välj vad som händer Om ingen svarar: röstbrevlåda som standard, eller ett annat tillägg, en grupp eller ett menyval.
  5. Spara. Tillägget kan logga in omedelbart.

Fälten

FältVad det gör
Nummer2 till 8 siffror; inget annat tillägg, grupp, kö eller funktionssignum får ha det
SIP-lösenordvad telefonen loggar in med; minst 12 tecken; Generera skapar ett nytt
Ringa isekunder innan Om ingen svarar inträffar (25 som standard)
Yttre samtals-IDdet nummer som visas på utgående samtal; tomt använder trunkens
Kan ringa yttre nummeravstängt håller telefonen till interna samtal och nödnummer
Spela in samtalnär Inställningar spelar in endast valda tillägg
Hot desken delad telefon som blir vem som loggar in på den
Kryptera samtal till den här telefonenmediekryptering (SRTP); använd det med TLS så att nycklarna förblir privata
Avdelninggrupperar det här tilläggets samtalskostnader

Följ-mig, hämta och intercom

Varje persons eget samtalshantering är i sin egen ruta på tillägget:

Omdirigering just nu

Under inställningarna visas Omdirigering just nu och ändrar vad personen ställt in från sin telefon eller personalportalen: stör ej, och omdirigering av alla samtal, av samtal medan upptagen, och av samtal som inte besvaras. Dessa är live-tillstånd, inte konfiguration: att ändra dem skapar ingen revision.

Vad som är anslutet

Anslutna enheter

Ett tillägg som är öppet visar varje enhet som är inloggad som det: telefonens tillverkare och modell, hur den ansluter (UDP, TCP, TLS eller webbläsaren) och sedan när. Adressen och porten att ge till en telefon visas också där.

Kapitel 4

Ansluta telefoner

I webbgränssnittet: /phones

Vilken SIP-telefon eller app som helst fungerar: peka den mot den här serverns adress och port 5060, med extensionsnumret som användare och dess SIP-lösenord. Skrivbordstelefoner från de fyra stora tillverkarna konfigureras automatiskt istället, så att ingen skriver in ett lösenord i en telefons tangentbord.

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 konfiguration (provisionering)

  1. På Telefoner (kapitel 4) tryck på Lägg till telefon och ange telefonens MAC-adress (på en etikett under) och tillägget det tillhör.
  2. Välj tillverkaren: Yealink, Poly, Grandstream (inklusive HT-analog adaptrar), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo eller CyberData.
  3. Berätta för telefonen var BitVoice är: i din DHCP-server, ställ in alternativ 66 till konfigurationsadressen som visas på skärmen, så att varje telefon på nätverket hittar den av sig själv; eller skriv in samma adress i telefonens egen webbsida, under automatisk konfiguration.
  4. Starta om telefonen. Den hämtar sin fil över HTTPS, loggar in och dess linjeknycklar visar vem som är på telefonen.

HTTPS eller vanligt HTTP. Telefoner hämtar sina filer över HTTPS när de kan. Vissa äldre telefoner kan inte använda HTTPS alls, och många litar inte på certifikatet som BitVoice skapade själv; för dem visas också en vanlig http://-adress på samma port på skärmen. Vanligt HTTP är bara för dessa filer: varje annan sida går fortfarande till HTTPS. Över vanligt HTTP korsar telefonens SIP-lösenord nätverket oekrypterat, så håll det till ett betrott kontorsnätverk, eller installera ett certifikat från en myndighet och slå på HTTPS bara för telefoner.

Filen innehåller extensionen, dess lösenord, tidszonen, codecarna, upptagna lampa knappar och den här serverns adress. Konfigurationen skyddas av ett användarnamn och lösenord som telefonerna får en gång.

TillverkareTestade modellerVad den får
YealinkT3x, T4x, T5xkonto, BLF-knappar, tid, codec
PolyVVX, Edge Esamma, i Polys eget format
GrandstreamGRP, GXP, HT802/814konto per port på adaptrar
SnomD7xxkonto, knappar, tid

Dessa tillverkare konfigureras också, med filer skrivna från varje tillverkares dokumenterade format men inte ännu testade på deras enheter (Telefoner skärmen markerar dem otestade):

TillverkareModellerFilen enheten ber om
FanvilX och V-seriendess MAC-adress .cfg
Cisco6800, 7800, 8800 multiplatform (3PCC), SPA-adapterdess MAC-adress .xml (företagsfirmware behöver multiplatformfirmware först)
Mitel (Aastra)6800, 6900 SIPdess MAC-adress .cfg, i versaler
SangomaS-serienFanvil-formatfilen
Algohögtalare för utrop, signaler, adapteralgop och dess MAC-adress .conf
CyberDatahögtalare, intercom, utropsadapterdess MAC-adress .xml

Var och en får sitt konto, servern (och reservservern, med flera servrar), transport och kryptering, och meddelandenummer där det finns. Ställ in Algo- och CyberData-högtalares tillägg till Högtalare så att samtal till dem svaras omedelbart.

Telefoner utan provisionering

Mjukvaror och andra tillverkare kräver samma tre saker: server (denna dators adress, port 5060, eller 5061 med TLS), användare (tilläggsnumret) och lösenord (dess SIP-lösenord). Hälsa listar telefoner som försökte med ett felaktigt lösenord; efter några försök blockeras adressen under en stund (se Säkerhet (kapitel 60)).

Webbläsartelefonen

Telefonikonen längst ner på varje skärm gör den här webbläsaren till en telefon för ett tillägg, med din mikrofon och högtalare. Den använder WebRTC: ljudet är krypterat från ände till ände, och den fungerar genom de flesta brandväggar utan någon inställning.

Other WebRTC softphones (SIP over WebSocket)

Softphones and web apps built on JsSIP, SIP.js and similar libraries speak SIP over WebSocket (RFC 7118). Switch on SIP over WebSocket in Settings (kapitel 14) and point them at wss://<this server's name>:<web port>/ws, with the extension number as the user and its SIP password. BitVoice ends their WebRTC sound itself (ICE, DTLS-SRTP, Opus or G.711), so they reach every phone, trunk and feature as desk phones do: calls both ways, keys pressed, hold, transfers by the other party, busy lamps and message-waiting. Settings shows how many are connected.

WebSockets behöver ingen inloggning på egen hand: mjukvarutelefonen loggar in med SIP, och misslyckade inloggningar och för många förfrågningar räknas för dess egen adress, som för vilken telefon som helst. En mjukvarutelefonsida som serveras från en annan webbplats måste lita på den här serverns certifikat (använd Let's Encrypt), och nuvarande Chrome frågar användaren innan en offentlig webbsida får nå en server på det lokala nätverket.

Testad med två oberoende bibliotek, JsSIP 3.13 och SIP.js 0.21: två mjukvarutelefoner av varje registrerar sig, ringer varandra och hör varandra genom BitVoice. Andra mjukvarutelefoner (Linphones webbklient, Zoipers) talar samma protokoll men har inte testats.

TURN, för nätverk som blockerar UDP

Vissa nätverk (hotell, gäst-Wi-Fi, strikta företagsbrandväggar) tillåter ingen UDP-utgång, eller döljer datorer bakom NAT som WebRTC inte kan komma igenom. För dem, aktivera TURN-server i Inställningar (kapitel 14): BitVoice kör då sin egen TURN-server (RFC 8656) på port 3478 (UDP och TCP) och, med denna servers certifikat, på port 5349 över TLS. Webbtelefoner, personaltelefonen och samtalsslänkar får kortlivade autentiseringsuppgifter för den, och använder den när de inte kan nå media-portarna direkt; ljudet är fortfarande krypterat från ände till ände, och BitVoice vidarebefordrar det endast till sina egna adresser, så att ingen kan använda det för att nå något annat.

Öppna TURN-porten, TLS-porten och relay-portarna (49152 till 49407 om du inte ändrar dem) i brandväggen. TURN över TLS kräver ett certifikat som webbläsare litar på för det namn de använder, till exempel ett från Let's Encrypt (kapitel 14): tills det finns ett, erbjuder BitVoice det inte till webbläsare (de skulle försöka, misslyckas och vänta); och erbjuder det så snart certifikatet anländer; ställ in dess port till 443 på en server med en ledig adress för att komma igenom brandväggar som endast tillåter HTTPS.

Nätverksbyte under ett samtal

En telefon som flyttar till ett annat nätverk under ett samtal (från kontorets Wi-Fi till ett mobilnätverk, eller en laptop från ett Wi-Fi till ett annat) får en ny adress, och den gamla vägen slutar att bära ljud. Webbläsartelefoner och BitVoice-apparna upptäcker detta automatiskt: när webbläsaren meddelar att nätverket har ändrats, eller samtalets väg slutar att svara inom två sekunder, startar telefonen om ICE (RFC 8445 9). Den erbjuder nya ICE-autentiseringsuppgifter för det pågående samtalet, BitVoice svarar med nya autentiseringsuppgifter och kontrollerar den nya vägen, och samtalet flyttas till den utan att behöva kopplas igen. Krypteringen fortsätter med samma nycklar. Medan detta sker visas Återanslutning...; på en väg som fortfarande fungerar finns det ingen lucka, eftersom den gamla vägen bär samtalet tills ljud kommer på den nya. SIP-softphones via WebSocket (JsSIP, SIP.js) gör samma sak genom att skicka en ny INVITE med nya ICE-autentiseringsuppgifter. Inget behöver aktiveras, med BitVoice som ICE-lite eller bakom NAT.

BitVoice bakom NAT

TURN-servern ovan hjälper webbläsare på stränga nätverk att nå en BitVoice som har en offentlig adress. När BitVoice själv inte har någon (i ett kontor bakom en router utan portvidarebefordran, eller i ett molnnätverk utan offentlig adress på maskinen), aktivera Denna server är bakom NAT under BitVoice bakom NAT i Inställningar (kapitel 14). BitVoice deltar då fullt ut i ICE (RFC 8445) istället för att svara på en adress (ICE-lite):

Personaltelefonen

Öppna #/phone på valfri dator eller mobil webbläsare: personer loggar in med sin tillägg och SIP-lösenord, utan administratörskonto. Det är en fullständig telefon: slå nummer, svara, håll och överför och tangentbordet. För sin egen vidarebefordran och röstbrevlåda använder de personalportalen på #/me (se Personalportalen (kapitel 33)).

Mobilapparna

BitVoice-apparna för iPhone och Android är parade från extensionsidan med en QR-kod. Samtal väcker appen via Apples och Googles push-tjänster, så den ringer även när den är stängd (när push är konfigurerat; se nedan).

Kapitel 5

Smala telefoner och MGCP-gatewayer

I webbgränssnittet: /desk-phones

Telefoner och gatewayer som inte talar SIP kan fortfarande användas. Smala telefoner och MGCP-gatewayer (under Samtal) tar två äldre protokoll:

Varje smal telefon eller MGCP-linje är en till enhet för dess tillägg: den ringer med tilläggets andra telefoner, ringer ut som tillägget och visas i tilläggets enheter. Sidan visar varje enskild enhets tillstånd.

Vad som fungerar

Håll, överföring och konferens görs för tillfället från en annan telefon till extensionen, och en Skinny-telefons andra linje används inte.

Säkerhet

Ingen av protokollen har lösenord. Skinny-telefoner accepteras endast från det lokala nätverket och endast när de är listade; MGCP-kommandon följs endast från gatewayens adress (eller, utan en, från det lokala nätverket). Håll båda portarna utanför internet.

En gateway som fortfarande arbetar på ett kommando kan svara "100 Trying" först: BitVoice väntar sedan längre innan kommandot skickas igen och bekräftar det slutliga svaret (000), som RFC 3435 begär. En port som gatewaven inte kommer att övervaka visar gateways eget avslag på sidan, såsom gatewaven vägrade att övervaka porten: 507 Otillräcklig funktionalitet från en mediegateway utan analoga portar.

Hur de testas

Kapitel 6

Telefonikort

I webbgränssnittet: /cards

Ett telefonikort i BitVoice-datorn (Digium, Sangoma, OpenVox och andra kort med Linux DAHDI-drivrutin) kan hantera analoga telefoner och telefonföretagslinjer. Ett separat program, bitvoice-dahdi, driver kortet och ansluter dess portar till BitVoice via datorns egen nätverksanslutning, så BitVoice själv berör aldrig kernel-drivrutinen och ett kortproblem kan inte stoppa telefonisystemet.

Konfigurera det

  1. Installera DAHDI-drivrutinerna och konfigurera portarna som vanligt i /etc/dahdi/system.conf (fxoks=1-4 för portar med telefoner, fxsks=5-8 för portar med linjer, och landets toner i loadzone och defaultzone), och kör sedan dahdi_cfg.
  2. Under Telefonikort (under Samtal) aktivera Använd telefonikort. En token skapas; kopiera den till en fil som endast root kan läsa, t.ex. /etc/bitvoice/cards.token.
  3. Lägg till varje port efter dess DAHDI-kanalnummer: en telefon-port (FXS, en telefon, fax eller dörrtelefon ansluten) med dess tilläggsnummer, eller en linje-port (FXO, en telefonföretagslinje) med linjens nummer. Välj A-lag för Europa och större delen av världen, µ-lag för Nordamerika och Japan.
  4. För linjer, lägg till en trunk med protokollet Telefonikortslinjer på Trunkar, och dirigera nummer till den som till vilken trunk som helst; inkommande rutter matchar varje linjes nummer.
  5. Starta bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token som en tjänsteanvändare som kan öppna /dev/dahdi. Det finns i Linux-nerladdningen bredvid bitvoice. Sidan visar om det körs och varje ports tillstånd; ändringar når den inom tio sekunder. En kanal som ett annat program fortfarande håller (eller en som dahdi_cfg inte har konfigurerat än) försöks igen varannan sekund, så startordningen för saker inte spelar någon roll.

Vad som fungerar

Digitala linjer: T1 och E1 PRI

En T1 (23 samtal på en gång) eller E1 (30) linje som körs som primär ISDN ansluts till ett digitalt kort (Digium/Sangoma TE-serie, OpenVox D-serie och liknande). BitVoice talar PRI själv (Q.921 på D-kanalen, och Q.931 samtalshantering), så varje samtal kommer in med det uppringda numret och caller-id, går ut med tilläggsnummerets caller-id, och telefonföretaget säger när den andra ändan svarar, ringer eller är upptagen.

  1. I /etc/dahdi/system.conf, konfigurera spannet för PRI som vanligt (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 för en T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 för en E1), och kör sedan dahdi_cfg.
  2. Under Digitala linjer på Telefonikort (kapitel 6), lägg till spannet: T1 eller E1, dess första DAHDI-kanal, om BitVoice är telefonväxeln på telefonföretagets linje (det vanliga) eller nätverket (en annan telefonväxel ansluter till BitVoice som till telefonföretaget), och switch-typen som telefonföretaget gav dig.
  3. Lägg till kort-trunken på Trunkar om det inte finns någon än, och inkommande rutter för numren (DIDs) som telefonföretaget skickar.

Utgående samtal tar en PRI först, de analoga linjerna efter; en upptagen nummer, en fel nummer eller ingen ledig kanal kommer tillbaka som upptagen, inte funnen eller otillgänglig, som nätverket säger. Sidan visar om varje spannets D-kanal är uppe och hur många av dess kanaler är i samtal. T1-kanaler konfigurerade med robbed-bit signalering (fxsks, fxoks) fungerar som de analoga portarna ovan.

Namn, vidarekoppling och överföringar. En uppringares namn kommer med samtalet (från Display-elementet eller från nätverket som en anläggning på National ISDN-2) och telefoner visar det; utgående samtal skickar tilläggets namn på samma sätt. Numret som ett samtal vidarekopplats från kommer in som dess omdirigeringsnummer (BitVoice skickar det vidare som SIP:s Diversion, med orsaken: upptaget, inte svarat, ovillkorligt), och när en tilläggs vidarekoppling skickar ett samtal ut på PRI, skickas tilläggets nummer med det som omdirigeringsnummer, så att den andra änden och telefonbolaget vet vem samtalet tillhör. När ett utgående samtal besvaras, berättar BitVoice för nätverket vilket nummer som besvarade (det anslutna numret).

Slå på Överföringar via telefonbolaget på en span (användarsida, National ISDN-2, 5ESS, DMS-100 eller EuroISDN) och när någon överför en uppringare på den linjen till ett annat nummer på samma linje, ber BitVoice nätverket att ansluta de två samtalen själv: Two B-Channel Transfer på National ISDN-2 och 5ESS-linjer, Release Link Trunk-överföring på en Nortel DMS-100, explicit samtalstransfer (uppringaren hålls, sedan ansluten) på EuroISDN. En DMS-100 ger en överföringsidentifierare endast till samtal som BitVoice placerat, så där måste ett av de två samtalen vara ett utgående samtal (det vanliga fallet: en uppringare som vidarekopplats eller överförts till ett yttre nummer). Båda kanalerna frigörs så snart nätverket har anslutit dem. Linjen behöver tjänsten (be telefonbolaget om "two B-channel transfer" eller "ECT"); om nätverket vägrar, fungerar överföringen fortfarande, via BitVoice, med båda kanalerna som förut. På en span där BitVoice är nätverkssidan, kan en annan PBX be BitVoice att ansluta två av dess samtal; BitVoice avböjer (det är inte en switch), och PBX:n behåller samtalen själv.

Försök utan en krets

DAHDI:s egna dynamiska span kan stå i för en krets: två span anslutna inuti kärnan, BitVoice på en och en annan PBX (Asterisk:s chan_dahdi, säg) som telefonbolaget på den andra. Ladda dahdi, dahdi_dynamic och dahdi_dynamic_loc, och 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

Lämna det sista numret (tidtagning) på 0 på båda: DAHDI:s egen timer driver dem då. Span som är varandras tidtagningskälla tickar endast när den andra skickar, och D-kanalen kommer och går. Lägg till span 1 här som en T1 (första kanalen 1), och ställ in den andra PBX:n som nätverkssidan på kanaler 25 till 48.

Grundläggande hastighet ISDN (BRI)

En BRI bär två samtal på samma gång (B1 och B2) och är vanlig i Europa för små kontor; den ansluter också ISDN-skrivbordstelefoner. BRI-kort (Digium B410P, HFC-baserade kort från OpenVox, Junghanns och andra) fungerar via DAHDI som PRI-korten: i /etc/dahdi/system.conf är span span=1,1,0,ccs,ami med bchan=1-2 och hardhdlc=3. Lägg till det under Digitala linjer med BRI som linjetyp; dess kanaler är B1, B2 och sedan D-kanalen.

Namn, vidarekoppling, överföringar på EuroISDN (explicit samtalstransfer) och rådgivning om avgift fungerar på en BRI som på en PRI.

E&M-trunkar på en T1

En T1 vars kanaler är konfigurerade som E&M (robbed-bit signalering: e&m=1-24 i /etc/dahdi/system.conf) ger 24 trunkar, var och en signalerad på sin egen: tie-linjer till en annan PBX, kanalbanker och långdistansoperatörers Feature Group D-trunkar. Under Digitala linjer, lägg till en T1 och ställ in Signalering till E&M, sedan:

Ett utgående samtal tar en ledig trunk, säkrar den, väntar på startsignalen (inget blink inom fem sekunder är "ingen blink" och samtalet misslyckas), skickar numret och besvaras när den andra änden lägger på luren (svarsupervision). Ett inkommande samtal besvaras genom att lägga på luren när tillägget svarar.

CAMA-trunkar (911, labb-spår). En PSAP som fortfarande matas av en 911-väljare via CAMA-trunkar ställer in Startsignal till CAMA (911-trunk). Väljaren säkrar, BitVoice blinkar och väljaren skickar anroparens nummer (ANI) i MF: förbättrad CAMA som KP, två informations­siffror och alla tio siffror, ST; traditionell CAMA som KP, en nummerplan­s­siffra och sju siffror, ST. För traditionell CAMA, lista under Riktnummer för NPD 0 till 3 riktnumret som varje nummerplan­s­siffra står för (din växlarens konfigurationssida har dem); en siffra över 3 betyder att växlaren inte kunde identifiera linjen. Varje samtal går till den inkommande rutten för 911 som ett 911-samtal, med ANI som dess återuppringningsnummer, och BitVoice letar reda på dess plats med hjälp av det numret (se 911-samtal (kapitel 77), Plats­sökning (ALI)). Informations­siffrorna visas på samtalet som CAMA (II 00).

MFC-R2 på en E1

I Latinamerika, delar av Asien och Afrika är E1-linjer ofta MFC-R2 snarare än ISDN: 30 kretsar, var och en med sina linjesignaler på A- och B-bitarna i tidsintervallet 16 (ITU-T Q.421) och dess nummer, anroparens kategori och anroparens nummer utbyts i tvångsmultifrekvenstoner (Q.441), framåt och bakåt. Ställ in spannet som CAS i /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan borttagen), sedan under Digitala linjer lägg till en E1, ställ in Signalering till MFC-R2 och välj Landsvariant: ITU-T, Argentina, Brasilien, Kina, Colombia, Tjeckien, Ecuador, Mexiko, Filippinerna eller Venezuela. Varje land tilldelar vissa signaler annorlunda (vad som betyder upptaget, hur numrets slut meddelas, Mexikos extra grupp C); varianten innehåller dessa. Kina nr 1 begär anroparens klass (KA) och nummer efter det uppringda numret, skickar samtalstypen (KD: 3, ett lokalt samtal) sist, läser upptaget och ledigt efter den KD som skickades, och ställer in C- och D-bitarna båda till 1: där, skriv cas=1-15:1111 och cas=17-31:1111.

Varje krets bär samtal åt båda hållen. Ett inkommande samtal når de inkommande ruterna med det uppringda numret och anroparens nummer (hemliga nummer kommer in som anonyma); en upptagen anknytning eller ett felaktigt nummer signaleras tillbaka som upptaget eller otilldelat, enligt varianten. Ett utgående samtal skickar numret och anknytningens anroparens ID, eller signalen "nummer hemligt" när anroparen döljer det.

MFC-R2-signaleringen testas mot OpenR2 (R2-biblioteket som Asterisks chan_dahdi använder), i varje variant som erbjuds och i båda riktningarna, inklusive ett samtal som avvisas som upptaget; E&M mot BitVoices egna simulerade kanaler.

SS7

En operatör kan lämna över T1 eller E1 som signaleras av SS7 snarare än ISDN: de talande kretsarna bär samtal, var och en namngiven av en kretsidentifieringskod (CIC), och en timeslot bär signaleringslänken till operatörens signalöverföringspunkt eller switch, över vilken ISUP ställer in samtalen. BitVoice är då en signalpunkt i sig, med en punktkod som operatören tilldelar. I /etc/dahdi/system.conf ställer du in spannet som rena kanaler med signalerings-timesloten som mtp2 eller hardhdlc (timeslot 16 på en E1, 24 på en T1). Under Digitala linjer lägger du till spannet, ställer in Signalering till SS7 (ISUP) och anger:

Länksamlingar med flera länkar. Spann med samma variant, punktkoder och nätverk är en länksamling (upp till 16 länkar): varje spanns signaleringslänk är en av dess länkar, och behöver sin egen Länkkod, och varje spanns kretsar tillhör den (deras CIC kan inte överlappa). Trafik delas mellan länkarna i tjänst av meddelandenas SLS, så ett samtals meddelanden håller sig till en länk. När en länk misslyckas (länktestet besvaras inte, eller meddelanden inte bekräftas), ändras dess trafik till de andra (Q.704: COO och COA, meddelanden som den andra änden inte fick skickas igen på en annan länk; eller, utan svar inom tid, genom tid), samtal på varje spann fortsätter, och Telefonikort visar hur många länkar som är i tjänst och hur detta spanns står. När länken återställs och testas, ändras dess trafik tillbaka (CBD och CBA). Endast när varje länk är nere är länksamlingen nere. Testat mot libss7 med två länkar, en skuren mitt i ett samtal: libss7 tar endast nätverksledningsmeddelanden på den länk som deras SLS namnger, så ett ändringsmeddelande om den skurna länken (skickat på den andra, som Q.704 har det) släpps där, och båda ändarna ändrar över genom tid istället, vilket fungerar; mellan två BitVoice-ändar går det via COO och COA.

När länken kommer upp, justerar BitVoice den (MTP-nivå 2, med nödsituationens bevisperiod som en enskild länk uppsättning använder), testar den med länktestet (SLTM/SLTA), utbyter trafikstart tillåten och återställer varje krets (GRS). Samtal som når inkommande rutter med det nummer som rings, samtalsägarens nummer (med hemliga nummer som anonyma), det nummer som samtalet vidarebefordrades från och, på ANSI, samtalsägarens namn; utgående samtal bär extensions samtals-ID och namn. Operatörens blockering eller återställning av kretsar följs. Vid dubbel beslag tar den ände med den högre punktkoden de jämna kretsarna, som Q.764 säger, och BitVoice tar de kretsar den behåller först.

SS7 testas mot libss7 (SS7-biblioteket som Asterisks chan_dahdi använder), ITU och ANSI: justering, länktest, trafikstart, kretsåterställning, samtal i båda riktningarna med nummer och namn, frigöring, upptaget och blockering; och BitVoice mot sig själv med ramverk som förlorats på länken (skickas igen av MTP2:s felkorrigering) och en dubbel beslag. Signalöverföring (som en STP för andra) och SCCP/TCAP (nummerportabilitets sökningar, avgiftsfri översättning) erbjuds inte: en PBX är en slutpunkt, och de är operatörens.

Signalöverföringspunkt (STP). bitvoice-dahdi kan också vara en STP för dess ITU SS7-länksamlingar: aktivera Signalöverföringspunkt (SS7) under de digitala linjerna. Dess STP-punktkod är spännens egen. Med Lämna vidare meddelanden för andra punktkoder skickas ett meddelande från en länksamling för den angränsande punkten i en annan länksamling till den länksamlingen, och ett för någon annan punktkod skickas till IP STP (M3UA): en IP STP eller signalgateway på värd:port, som nås via M3UA (RFC 4666) över TCP, vars meddelanden för länksamlingarnas punkter kommer tillbaka på samma sätt (BitVoice registrerar sin punktkod och de bakom den, såvida inte en Routningskontext anges). Global titelöversättning skickar SCCP-meddelanden som är adresserade till STP med global titel till punktkoden och underystemet för den längsta matchande prefixet, som en SCCP-relä gör. Ett meddelande som inte kan levereras kommer tillbaka till avsändaren som ett UDTS eller XUDTS när det begärde det: ingen översättning, ingen väg (MTP-fel), ingen underystem här, eller dess hoppräknare är slut. STP-statusen visar M3UA-länken och hur många meddelanden den har lämnat vidare, översatt och returnerat. Dess SCCP (UDT, XUDT, UDTS, XUDTS) och TCAP (Börja, Fortsätt, Sluta, Avbryt, dialoger och komponenter) kontrolleras mot Osmocom: OsmoSTP via M3UA, libosmo-sigtrans SCCP-ekoanvändare bakom det, och libosmo-asn1-tcaps eget TCAP-kodare båda vägarna. SCTP erbjuds inte (Go har ingen): M3UA går över TCP, som OsmoSTP och många IP STP tar. Anslutningsorienterad SCCP, ANSI-länksamlingar och SCCP-hantering (SST, SSA) erbjuds inte.

Råd om avgift. På en EuroISDN-linje, slå på Råd om avgift och BitVoice ber telefonbolaget, med varje utgående samtal, att säga vad det kostar: under samtalet (AOC-D) och vid dess slut (AOC-E), i pengar eller i avgiftsenheter. Den sista siffran hamnar på samtalets post (debiterad EUR 1,50 i Historik, och bredvid samtalet på Kostnader); när den är i din valuta (inställd på Kostnader) är det samtalets kostnad, istället för siffran från trunkens taxor. Telefonbolaget måste erbjuda tjänsten på linjen. SIP-trunkar kan skicka samma råd, som 3GPP AOC XML i en INFO eller BYE, och BitVoice behåller den på samma sätt.

PRI-koden testas mot libpri (ISDN-biblioteket Asterisk använder), både som användarsidan och som nätverkssidan, för nationella ISDN-2 och EuroISDN-samtal, namn, omdirigering och anslutna nummer, explicit samtalstransfer, två B-kanalstransfer och DMS-100 Release Link Trunk-förfrågningar byte för byte (med libpris PBX ansluten till BitVoice som DMS-100), och råd om avgift i båda riktningarna; och på BRI, punkt-till-punkt och multipunkt, som terminal och som nätverk (TEI-tilldelning, samtal som sänds till bussen, nummer som rings siffra för siffra).

Inte ännu: samtals-ID som visas på analoga telefoner eller läses från analoga linjer, hook flash och ekkor som går utöver vad kortet själv gör.

Kapitel 7

Trunkar

I webbgränssnittet: /trunks

En trunk är ditt konto hos en telefonioperatör. Den bär samtal till och från externa nummer. De flesta är SIP-trunkar; en Asterisk- eller FreePBX-server, eller en IAX2-leverantör, kan nås med IAX2 istället.

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

Lägga till en SIP-trunk

  1. På Trunkar (kapitel 7) tryck Lägg till trunk.
  2. Ange leverantörens server som din telefonoperatör har gett dig (sip.provider.com), och porten om den inte är 5060.
  3. Ange användarnamn och lösenord, och aktivera Registrera om leverantören säger att du ska göra det (de flesta gör det).
  4. Spara. Inom några sekunder visas trunken som registrerad; om inte, visas orsaken bredvid den.

Stamkontroll

Med två eller flera stammar på en utgående rutt, bedömer BitVoice var 15:e sekund om var och en används på sin plats eller försöks efter de andra stammarna. En stam flyttas bakom de andra när dess leverantör slutar att svara på keep-alive-kontroller, eller när dess senaste utgående samtal misslyckades ett efter ett på leverantörens sida (Misslyckade samtal i rad inom Inom (minuter), Inställningar, Stamkontroll), och en annan stam fungerar. Den flyttas inte på grund av en enda misslyckad keep-alive om samtal fortfarande går genom den; och när alla stammar misslyckas samtidigt, är den troligaste orsaken detta systems eget internetuppkoppling, så ingenting flyttas. En förändring kräver två på varandra följande bedömningar (30 sekunder), så en stam flimrar aldrig. En stam tas aldrig bort helt och hållet: den försöks fortfarande när de andra misslyckas, så ett nödsamtal har alltid alla utvägar. Stamens sida visar bedömningen och dess orsaker; ett samtal som gick ut på ett annat sätt säger till i sin post.

  1. Lägg till en inkommande rutt för ditt nummer och en utgående rutt som använder denna stam (Samtalshanterare (kapitel 8)).
FältVad det gör
TransportUDP (vanligt), TCP eller TLS för krypterad signalering
Registerlogga in var få minuter, så leverantören vet var den ska skicka samtal
Autentiseringsanvändarnamnendast när leverantören ger ett separat
Från domändomänen i avsändarens adress, när leverantören begär en
Anroparens IDnumret som visas på utgående samtal; en utökning av anroparens eget ID vinner
Acceptera också samtal frånleverantörens andra adresser eller nätverk som skickar samtal in. Samtal från denna dator av telefoner som registrerats här och den inbyggda samtalsgeneratorns, tas aldrig som stammens, även när den tillåter 127.0.0.1
Samtal samtidigtgränsen som din plan tillåter; samtal utöver detta går till nästa stam i rutten
Kryptera mediaSRTP, för leverantörer som stöder det. En leverantör som svarar utan det får fortfarande samtalet, okrypterat, och Samtalslogg markerar samtalet Ej krypterat
Kräv kryptering(med Kryptera media) vägra vad leverantören inte vill kryptera: ett utgående samtal som leverantören svarar utan SRTP avbryts, och ett inkommande samtal som leverantören skickar utan SRTP vägras; Samtalslogg säger varför
Kodekarlämna det på *samma som Inställningar*, eller välj vad denna leverantör stöder, bäst först
Taxorvad samtal kostar per nummerprefix, för Kostnader (kapitel 54)

Molnleverantörer

Starta från fyller i Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector eller Azure Communication Services, med en not om vad som ska ställas in på deras sida. Teams beskrivs i sitt eget kapitel (Microsoft Teams (kapitel 67)).

IAX2-stammar till Asterisk och FreePBX

Välj IAX2 som protokoll för att ansluta till en annan Asterisk- eller FreePBX-server, eller en IAX2-leverantör. IAX2 överför signalering och ljud på en enda UDP-port, 4569, vilket gör det enkelt att gå igenom brandväggar.

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-sidan räcker det med en peer som denna:

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

IAX2-port 4569 öppnas endast när den första IAX2-stammen läggs till, så en Asterisk som körs på samma dator håller den tills dess.

H.323-stammar

Välj H.323 som protokoll för äldre gateways, PBX:er och videokonferenssystem som talar H.323 men inte SIP. Ge gatewayens adress (port 1720); samtal accepteras endast från den. Samtal konfigureras med Snabb anslutning och G.711 (µ-law eller A-law; stammens kodeklista kan begränsa det till en), och ljudet går direkt mellan gatewayen och BitVoices mediaportar. BitVoice konverterar till vad den andra parten använder.

H.323 här är medvetet liten: ingen gatekeeper (RAS), ingen H.245 (så en gateway som inte vill använda Snabb anslutning får inget samtal, och meddelas så), ingen video, ingen H.235-säkerhet. Anroparens ID kommer från Q.931-anroparens nummer eller anroparens dialade-siffror-alias, namnet från displayen eller dess H.323-ID. BitVoices H.225.0- och H.245-kodning har kontrollerats mot en oberoende ASN.1-kodare, men inte ännu mot gateway-hårdvara.

Vidarekopplade samtal

När ett samtal når dig redan vidarekopplat (någon annans nummer vidarekopplat till ditt, eller en Teams-användare), meddelar operatören detta med History-Info (RFC 7044) eller Diversion (RFC 5806). BitVoice läser båda: Samtalshistorik (kapitel 47) visar vidarekopplat av det nummer som skickade det vidare, med det nummer som ursprungligen ringdes och orsaken i dess tips, samtalsspåret säger det i ord och samtalssposten sparar det (forwardedFrom, original, forwardReason). När operatören begär att historiken ska vara privat sparas inte numren.

När en anknytning vidarekopplar ett samtal ut via en trunk (vidarekoppla allt, när upptagen, när ingen svarar), meddelas operatören vilken anknytning som vidarekopplade det och varför, så att den kan visa ditt nummer och debitera rätt konto: som standard med båda rubrikerna, och med den historik som samtalet kom in med sparad och vidarekopplingen tillagd. En operatör som förvirras av en av dem kan ställas in på den andra under trunkens Avancerat, Vidarekopplade samtal säger vem de tillhör med. På en T1/E1-telefonikort blir antingen rubrik nätverkets omdirigeringsnummer.

Vad statusen betyder

StatusBetydelse
registeredinloggad; samtal kan komma in
readyregistrerar inte, eller IAX2 väntar på samtal
unreachableserverns namn finns inte i DNS, eller ingenting svarar
failedoperatören vägrade inloggningen; orsaken visas
standbyservrar delar på denna trunk en i taget och en annan håller den
Kapitel 8

Samtalsswitchning

I webbgränssnittet: /routes

Samtalsswitchning bestämmer två saker: vart samtal från utsidan går, efter det nummer som ringdes, och vilken trunk samtal till yttre nummer använder.

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

Inkommande rutter

Varje inkommande rutt matchar det nummer som ringdes (eller något nummer) och skickar samtalet till en destination: en anknytning, ringgrupp, kö, meny, schema, skript, konferensrum, AI-receptionist eller röstbrevlåda. Nummer matchar i vilken form som helst: +1 212 555 0100, 2125550100 och 12125550100 är samma sak.

Utgående rutter

Utgående rutter matchar vad människor slår, efter mönster, och skickar det till trunkar i ordning: om den första är nere eller full, försöks den nästa.

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önsterMatchar
Xvilken siffra som helst
Z1 till 9
N2 till 9
[1-5]en av en uppsättning
. i slutetett eller flera ytterligare siffror
NXXNXXXXXXett tiosiffrigt nordamerikanskt nummer
1NXXNXXXXXXsamma med 1 framför
011.ett internationellt samtal från USA

Nödnummer

Nödnumren fungerar alltid. En rutt som namnger numret exakt används först; med ingen, försöks varje fungerande trunk i turordning. Ett samtal till dem avvisas aldrig på grund av en anknytnings begränsningar, en värdorganisations begränsningar eller en saknad rutt. Hälsa varnar när ingen trunk kan bära dem.

Kapitel 9

PIN-samlingar

I webbgränssnittet: /pin-sets

En PIN-samling (kapitel 9) är en lista med PIN-koder som en utgående rutt frågar efter innan den ringer ut: för att hålla internationella eller långväga samtal till personer med en PIN, eller för att fakturera samtal till kunder och projekt med deras kod.

  1. Lägg till PIN-uppsättning och lista dess PIN-koder (4 till 10 siffror vardera).
  2. Slå på Behåll PIN-koden i samtalshistoriken för att skriva in den använda PIN-koden i varje samtals historia som kontokod (kontokodkolumnen i CSV-, syslog- och PostgreSQL-samtalshistorikutdata, och account i API:t).
  3. På Samtalssökvägar (kapitel 8), öppna en utgående sökväg och välj uppsättningen under Begär en PIN.

Samtalare som ringer ett nummer som rutten tar emot hör "Vänligen ange din PIN, sedan hash", anger den och samtalet går ut. Tre felaktiga PIN-koder avslutar samtalet, och försöket loggas som ett säkerhetshändelse. Nödnummer frågar aldrig efter en PIN, oavsett vilken rutt de tar, och vidarebefordrade samtal och följ-mig-nummer frågas inte heller: endast personer som ringer från en telefon.

Kapitel 10

Samtals-ID-sökning

I webbgränssnittet: /lookups

Många telefonioperatörer skickar en samtalares nummer men inget namn. BitVoice söker först i företagskontakter (kapitel 38); efter det kan en inkommande rutt fråga en samtals-ID-sökning (kapitel 10):

Välj sökningen på en inkommande rutt på Samtalshanterare (kapitel 8) (Samtals-ID-sökning). Telefoner visar namnet medan de ringer, och det går in i samtalshistoriken.

En sökning håller aldrig upp ett samtal: BitVoice väntar som mest vänta (1,5 sekunder om du inte ändrar det, 5 som mest) och sedan ringer utan namn. Svar sparas i en dag (eller så länge du ställer in, eller aldrig med -1), så en regelbunden samtalare söks inte upp på varje samtal; nummer som tjänsten inte känner till frågas igen efter en timme. Testa på sökningens sida frågar efter ett nummer på en gång, med inställningarna som sparats.

Kapitel 11

Nödsamtal

Nödnummer går alltid ut, från varje tillägg, även de som inte kan ringa utgående nummer. Detta kapitel handlar om nödsamtal som görs från telefoner som BitVoice kör: ett kontor som ringer 911. Att svara på 911-samtal är 911-profilen (kapitel 77).

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

Vad BitVoice gör på varje nödsamtal

  1. Routar det, alltid: en rutt som namnger numret först; med ingen, varje fungerande trunk i turordning. Begränsningar stoppar aldrig det: ett tillägg som inte tillåts utgående samtal, en värd-organisation som är vid sin samtalgräns eller avstängd, en trunk som är vid sin kanallimit.
  2. Skickar var samtalaren är: med Skicka samtalarens adress på (Inställningar), samtalet bär platsens civic-adress, våning och rum till leverantören som PIDF-LO.
  3. Meddelar personer på platsen (Kari's Law i USA): tilläggen under Meddela får ett meddelande på sina telefoner, varje öppen BitVoice-skärm visar en varning, och adresserna under Skicka också e-post får en e-post med samtalarens namn, tillägg, plats, våning och rum, så att någon kan möta svararna vid dörren.
  4. Låter samtalet gå tillbaka: för en timme efter ett nödsamtal, samtal som kommer in vägras aldrig, så att svarspunkten alltid kan ringa tillbaka.

Konfigurera det

  1. Kontrollera nödnumren i Inställningar (kapitel 14) (inställda per land: 911 och 933 i USA).
  2. Lägg till varje byggnad under Platser (kapitel 12), med dess gatuadress och de nätverk som dess telefoner använder.
  3. Ge varje tillägg dess plats, våning och rum.
  4. Se till att en utgående rutt och trunk tar nödsamtal; Hälsa (kapitel 13) varnar när ingen kan.
  5. Fyll i Meddela och Skicka också e-post.
  6. Ring 933 (i USA) för att höra den adress som din leverantör har.

Fjärrarbetare

En telefon som registrerar sig utanför sin plats nätverk är en fjärrarbetare: deras telefon sida frågar var de är, och den adressen används istället. Varningar säger när den inte bekräftades.

Nödläge

En annan sak: en strömbrytare som skickar alla inkommande samtal till en plats (evakuering, stängning, incident). Ställ in var samtal ska gå, en valfri kod som t.ex. *55 och de tillåtna extensionerna för att ringa det i Inställningar (kapitel 14); aktivera det på Instrumentpanelen (kapitel 1), eller genom att slå koden (stigande toner för på, en låg ton för av). En röd bar visas på varje skärm medan det är aktiverat.

Kapitel 12

Platser och kontors 911

I webbgränssnittet: /sites

En plats är en byggnad: dess gatuadress och de nätverk som dess telefoner använder. Platser är hur ett nödsamtal anger var ringsignalen är, ner till våningen och rummet. I USA kräver Kari's Law och RAY BAUM'S Act exakt detta från företags telefon-system.

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

Lägga till en plats

På Platser (kapitel 12), tryck Lägg till:

FältVad det är
Namnvad människor kallar det: Huvudkontor
Gata, Stad, Stat eller provins, Postnummer, Landden civila adress som svarare skickas till
Nätverkde adressintervall som dess telefoner använder, t.ex. 10.1.0.0/16; en per rad

Sedan på varje anknytning ange dess plats, våning och rum. Hälsa (kapitel 13) listar anknytningar utan en plats.

Hur en telefons plats hittas

  1. En telefon som registrerar sig från ett av en plats nätverk är på den platsen, med dess anknytnings våning och rum.
  2. En hot desk bär dess egen plats, våning och rum, inte den person som är inloggad (Hot desking (kapitel 36)).
  3. En telefon som registrerar sig från utanför alla platsernas nätverk är en distansarbetare. På dess första nödsamtals-kapabla registrering från en ny plats, ombeds dess användare att bekräfta sin adress på sin telefon-sida; nödsamtal bär sedan den adressen.
  4. Om en distansarbetare aldrig bekräftade, går samtalet fortfarande ut, med anknytningens vanliga plats, och varningar säger att adressen inte bekräftades.

Lokala varningar

Med E-post när någon ringer 911 inställt i Inställningar, får de personer som namnges där uppringarens namn, tillägg, plats, våning och rum så snart ett samtal till en nödnummer börjar, så att någon kan möta utryckningspersonalen vid dörren. Meddela tillägg får ett meddelande på sina telefoner, och varje öppen BitVoice-skärm visar en varning. Se Nödsamtal (kapitel 11).

Kapitel 13

Hälsa

I webbgränssnittet: /health

Hälsa anger om systemet är redo för samtal och, om inte, vad man ska göra. Varje rad säger vad som är fel i vanliga ord och länkar till skärmen där det åtgärdas. Kontrollera det efter varje förändring av någon storlek.

Vad den kontrollerar

KontrollVarför det är viktigt
Nödsamtal kan komma uten rutt och en fungerande trunk bär nödnumren
Tillägg utan nödplatsderas 911-samtal skulle inte bära någon våning eller rum
TelefontjänstenSIP lyssnar och på vilken port
Telefoner inte anslutnatillägg som ingen har loggat in som
Trunkarregistrerade eller orsaken till att de inte är det
Menyer utan inspelad promptsamtalare skulle höra tystnad
Tidszonenscheman följer den
Inspelningar och deras förvaringdiskutrymme och hur länge inspelningar sparas
Certifikatnär TLS-certifikatet går ut
Nyckelvalvhemligheter som ett valv inte kan läsa
Andra servrarnär flera delar en databas, om var och en körs

Problem är färgkodade: röd stoppar samtal (ingen nödrutt), gul bör undersökas (en telefon inte ansluten) och grå är för information.

Kapitel 14

Inställningar

I webbgränssnittet: /settings

Inställningar innehåller allt om systemet som helhet. Varje avsnitt sparas för sig, och varje sparande är en revision på Ändringar (kapitel 61).

AvdelningVad som finns där
Systemnamn, land, tidszon, språk, den offentliga adressen som telefoner och leverantörer ser
Nummereko-test, meddelanden och parkeringsnummer, och nödnumren
Kodningarkodningarna telefoner kan använda, bäst först (Kodningar (kapitel 66))
Samtalsinspelningavstängd, varje samtal eller valda tillägg; samtyckesregler; hur länge inspelningar sparas
Ljudrensning för meddelanden och under samtal
Skyddförbud efter misslyckade inloggningar, betrodda nätverk, samtal per tillägg, premiumnummer
Nödsituationskicka ringarens adress, vem som meddelas, vem som e-postas, nödläge
AIAI-tjänsten, modellerna och vilka AI-funktioner som är på (AI (kapitel 28))
Enkel inloggningidentitetsleverantören (Enkel inloggning (kapitel 58))
Asterisk-kompatibilitetAMI och ARI för program skrivna för Asterisk (Asterisk-kompatibilitet (kapitel 70))
AI-assistent (MCP)om AI-assistenterna som Claude eller ChatGPT kan ansluta och om de kan agera (AI-assistent (kapitel 71))
Microsoft 365 och Google Workspacepersoner och delade kontakter i Kontakter, och kalendrar för vem som är borta (Kontakter (kapitel 38), Kalendrar (kapitel 39))
Mobilapparpush-tjänsten som väcker apparna
E-poste-postservern som meddelanden, fax och varningar skickas genom
Nyckelvalvhemligheter som sparas i AWS Secrets Manager eller Azure Key Vault
Konfiguration från Githåll konfigurationen i takt med en fil i ett repository
DatabasSQLite eller PostgreSQL (Databas (kapitel 64))
Certifikatcertifikatet för detta gränssnitt och SIP över TLS: från Let's Encrypt, installerat manuellt eller BitVoices eget

Lösenord och nycklar visas aldrig igen efter att de har sparats; lämna dem tomma för att behålla dem. Visare ser Inställningar med varje hemlighet borttagen.

Certifikatet och Let's Encrypt

BitVoice börjar med ett certifikat det har skapat själv, som webbläsare och telefoner varnar för. För en server med ett offentligt namn, aktivera Let's Encrypt under Certifikat: ange namnen (pbx.example.com), eventuellt en e-postadress, och applicera. BitVoice hämtar ett kostnadsfritt certifikat från Let's Encrypt, använder det omedelbart för webbgränssnittet, SIP över TLS och Teams, och förnyar det cirka 30 dagar innan det upphör (Let's Encrypt-certifikat varar 90 dagar eller mindre). Statusraden anger när det utfärdades, när det förnyas och, om det misslyckades, varför; den försöker igen efter en timme, sedan mindre ofta, inom Let's Encrypts gränser. Kontrollera nu försöker omedelbart.

Let's Encrypt måste nå servern under varje namn från internet för att bevisa att den tillhör dig:

Andra ACME-myndigheter som inte behöver kontobindning (ett företags eget step-ca, Let's Encrypts testtjänst) väljs under Myndighet. Jokernamn behöver DNS-bevis, som BitVoice inte gör: installera dessa certifikat för hand. Varje server i en kluster får sitt eget certifikat.

Kapitel 15

Skärmarna på ditt språk

BitVoices skärmar finns på engelska och tretton andra språk: Tyska, Franska, Spanska, Italienska, Portugisiska, Nederländska, Polska, Svenska, Danska, Norska bokmål, Finska, Japanska och Förenklad kinesiska.

Välja ett

Varje webbläsare har sitt eget språk: välj det under menyn (språklistan bredvid teman), på inloggningssidan eller på installationsguidens första sida. Tills du väljer använder BitVoice webbläsarens eget språk när det är ett av dessa, annars engelska. Valet sparas i den här webbläsaren endast: två personer på en server kan var och en arbeta på sitt eget språk.

Allt på skärmarna är översatt: menyn, rubriker, knappar, tips, meddelanden från servern och de namn som skärmläsare meddelar. Sök (⌘K) hittar en sida efter dess namn på ditt språk eller på engelska. Kvar som de är: vad människor skriver (namn, nummer, anteckningar), adresser, koder, skript i redigerarna och produktnamn och protokoll. Datum och nummer följer webbläsarens egna inställningar.

Hur det översätts och hur bra

Översättningarna görs av en maskin (en stor språkmodell), för varje text som skärmarna visar, cirka 5 000 av dem; ingen har granskats av en person. Vissa meningar som skärmarna bygger från delar (ett nummer och ett ord) kan läsas obehagligt, och en term kan översättas på två sätt på två ställen. Allt som saknar översättning, som en skärm som är nyare än översättningarna, förblir på engelska.

Hjälp håller den här handboken på engelska, som skriven, med en länk i början av varje kapitel till samma kapitel översatt helt (även det av en maskin) på bitvoice.org.

Telefondelen är separat: vad samtalsparter hör (promptmeddelanden, röstbrevlåde-menyn) är på standardspråket för promptmeddelanden (Ljud (kapitel 20)), såvida inte en anknytning eller en kö har ett eget språk.

Del 2

Vart samtal går

Byggstenarna som samtalsägare rör sig genom: grupper och köer, menyer och scheman, skript och den artificiella intelligensreceptionisten, röstbrevlåda och diagrammet som visar allt.

Kapitel 16

Samtalflöde

I webbgränssnittet: /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

Kontrollera varje situation

Kontrollera varje situation, högst upp i Samtalsflöde (kapitel 16), testar hela ditt samtalsplan i varje situation det kan vara i, inte ett urval:

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.

Samma kontroll körs på ändringar innan de görs: ett förslag från Fråga i klartext och Återställ denna tittar på en gammal revision båda listar vad ändringen skulle bryta som fungerar idag.

Testa ett samtal

Ange vem som ringer (en anknytning eller ett externt nummer), vad de slår och när, och tryck på Testa. BitVoice följer samtalet exakt som det skulle för riktiga samtal, utan att ringa något: den inkommande rutten, scheman vid den tidpunkten, routnings-skript (de körs i sin sandlåda), menyer, grupper och köer, och vad som händer om ingen svarar. Den väg som samtalet tar markeras; andra vägar på (en menys tangenter, ett schemas andra sida) kan öppnas. Grön betyder att det fungerar, gul betyder titta på det (en telefon som inte är ansluten, ett skript som backar), röd betyder att samtalet misslyckas där. Bocka i Anta att varje telefon är ansluten för att se planen som den är utformad snarare än som den är just nu; Anländer på väljer trunken för rutter som bara tar en.

Diagrammet

Diagrammet visar var samtal från utsidan går, ruta för ruta: varje inkommande rutt, sedan menyer, grupper, köer, scheman, skript och personer som det leder till.

Klicka på en ruta (eller tryck på Tab och sedan Enter) för att ändra var samtal går från den: en ruttens destination, en anknytnings eller gruppens Om ingen svarar, ett schemas öppna och stängda destinationer, en menys tangenter (lägg till eller ta bort tangenter direkt där), ett skripts fallback eller en receptionists person. Spara kontrollerar ändringen som vilken annan och skapar en revision. Öppna dess fullständiga redigerare går till objektets egen sida. Lägg till inkommande rutt lägger till en rutt utan att lämna diagrammet.

Kapitel 17

Ringgrupper

I webbgränssnittet: /ring-groups

En ringgrupp är ett nummer som ringer flera anknytningar: en säljgrupp, receptionsdisken och dess backup, alla i verkstaden.

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

Ringsstrategier

Medlemmar som är borta (i ett möte i deras kalender, eller med stör ej på) hoppas över; gruppen ringer de andra. Medlemmar med mobilappen väcks av en push och ringer också.

Om ingen svarar

När ingen svarar inom ringtiden, går samtalet till Om ingen svarar: en medlems röstbrevlåda, en kö, en meny, en annan grupp. Med ingenting inställt, ringer det tills uppringaren ger upp.

Grupper, köer eller upphämtning?

AnvändNär
En ringgruppett fåtal personer, vilka som helst kan ta samtalet, och samtalet ska ringa nu
En köuppringare kan behöva vänta på någon ledig, och ska höra sin plats
En upphämtningsgruppvarje person har sina egna samtal, men kollegor kan svara för dem
Kapitel 18

Köer

I webbgränssnittet: /queues

En kö håller uppringare i ordning, med musik, och ringer den nästa lediga agenten. Den är hjärtat i en kontaktcenter, och användbar i vilket kontor som helst där samtal kommer snabbare än människor 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

Hur samtal erbjuds

StrategiVem rings
Längst inaktivden fria agenten som har väntat längst sedan deras senaste samtal
Rullandevarje fri agent i turordning, fortsätter från den föregående
Ring allaalla fria agenter samtidigt
Flest samtalden fria agenten som tog flest samtal idag
I ordning (linjär)alltid från toppen av listan: den första fria agenten
Slumpmässigvalfri fri agent, slumpmässigt
Viktad slumpslumpmässigt, agenter med lägre straff mycket oftare

Skärmen Köer är en live-analys: vem väntar, hur länge, och varje agents tillstånd.

Agenter

Agenter slår *45 för att logga in eller ut från varje kö, och *46 för att pausa (en paus) och återuppta; pausade och utloggade agenter erbjuds inga samtal. Analysen har samma knappar och visar varför en agent pausade.

TillståndBetydelse
tillgängligfri; kommer att erbjudas nästa samtalare
ringererbjuds ett samtal
upptagenpå ett samtal
avslutningprecis avslutat; avslutningstiden löper
pausadpå en paus, med anledningen angiven
bortapå möte eller ledighet, från deras kalender
utloggadtar inte könssamtal alls

Chefer

På Pågående samtal (kapitel 46) ringer Övervaka en chefs telefon; när de svarar kan de lyssna (hörs av ingen), viska (hörs endast av agenten) eller bryta in (hörs av båda), och kan växla mellan dem under samtalet.

Klibbiga kön och VIP

Slå på Klibbig i en kö och en återvändande samtalare (en som besvarats under de senaste 30 dagarna, eller så många som du ställer in) erbjuds först till den agent som besvarade dem senast, om den agenten är fri; om de inte svarar, fortsätter kön som vanligt. VIP-samtalare, i slutet av Köer, går till framsidan av varje kö de ringer, efter eventuella VIP som redan väntar, och markeras som VIP på tavlan.

Kapitel 19

Utgående uppringare

I webbgränssnittet: /dialer

Den utgående uppringare (kapitel 19) ringer listor med kontakter för en kö (kapitel 18) agent: förnyelser, påminnelser om möten, inkassering, undersökningar. Varje kampanj har sin kö, sin lista och sitt sätt att ringa:

LägeHur det ringer
Förhandsgranskningen agent ber om nästa kontakt, ser dess detaljer, sedan ringer den (deras telefon ringer först) eller hoppar över den
Progressivett samtal för varje ledig agent
Kraftett bestämt antal samtal för varje ledig agent (1 till 3)
FörutsägelseBitVoice justerar samtal per agent, lutar sig in medan få samtal överges och backar av när övergivningsfrekvensen närmar sig gränsen
  1. Lägg till kampanj: dess kö, dess samtals-ID (numret kontakter ser), de timmar samtal får göras i en tidszon, hur länge en kontakts telefon ringer, hur många försök och hur långt isär.
  2. Öppna Kontakter och Lägg till en lista: en CSV-fil med en rubrikrad och en kolumn som heter number (eller phone); name och eventuella andra kolumner visas för agenten i förhandsgranskning. Dubblett- och felaktiga nummer hoppas över.
  3. Spela in meddelandet (i kampanjen): vem som ringer och varför, och "tryck 9 om du inte vill ha dessa samtal". Det spelas för en person som svarar när ingen agent är ledig, och, om du väljer, efter en telefonsvarares hälsning.
  4. Starta den. Den ringer endast inom sina timmar och slutar ringa när den är pausad eller ingenting är förfallet.

Personer och maskiner. BitVoice lyssnar på de första sekunderna efter att någon svarat: en lång, oavbruten hälsning är ett svarande meddelande; ett kort "hallå?" och en paus är en person. En maskin kan läggas på (och försökas igen), lämnas ett meddelande eller vidarebefordras till en agent som alla andra. Om det är osäkert, tas svaret för en person.

Övergivna samtal. En person som svarar när ingen agent är ledig inom två sekunder hör meddelandet och räknas som övergivet. Med effektiv och förutsägande uppringning, om andelen övergivna samtal av de senaste hundra svaren går över kampanjens gräns (3% om du inte ändrar det, den amerikanska regeln), ringer kampanjen ett samtal per ledig agent tills det är tillbaka under. Kampanjen visar sin övergivna takt, samtal som ringer och lediga agenter i realtid.

Inte ringa lista. Ingen kampanj ringer ett nummer på inte ringa listan, oavsett vilken lista det kom in på; vem som helst som trycker på 9 under meddelandet läggs till omedelbart. Lägg till nummer för hand eller via API (POST /api/dnc). För den nationella registret (i USA, Federal Trade Commissions nationella inte ringa registret: ladda ner områdesnummer som du ringer som en flat fil), välj filen under Nationellt registret och Importera: varje rad med ett nummer räknas (212,5550100 som FTC skriver dem, eller ett nummer per rad), rubriker och trasiga rader hoppar över och räknas. Med Ersätt den senaste importen på, tas det föregående nedladdningens nummer bort först, så ett nummer som lämnade registret kan ringas igen; nummer som läggs till för hand eller genom att trycka på 9 stannar alltid. Registret måste uppdateras minst var 31 dag (amerikanska regler); sidan räknar listan och hur mycket av den som kom från registret. API:et är POST /api/dnc/import?replace=1 med filen som brödtext.

Kapitel 20

Ljud: prompter, språk och hållmusik

I webbgränssnittet: /sounds

Ljud (kapitel 20) innehåller allt BitVoice säger eller spelar för samtalare, förutom hälsningar och menyprompter, som spelas in där de används.

Prompter, på varje språk

En prompt är en sak BitVoice säger: "Var vänlig och ange din PIN-kod", "Din plats i kön är", siffror som läses upp. Den namngivna katalogen, inringning (DISA), väckningssamtal och kömeddelanden talar med dem. BitVoice har orden för varje prompt på engelska, spanska, franska, tyska, italienska, portugisiska, holländska och polska; siffror läses upp siffra för siffra, som låter likadant på varje språk.

Hållmusik

Hållmusik är grupperad i klasser (Calm, Jazz, Försäljningserbjudanden…), var och en en lista med spår som spelas en efter en, från början eller blandat. Ladda upp spår på upp till femton minuter i valfritt format som webbläsaren läser; MP3- och WAV-filer kan också skickas direkt till API:t (PUT /api/music/{class}/{name}), och BitVoice avkodar MP3 själv (MPEG-1, 2 och 2.5 Layer III, med en avkodare som ger samma prover som minimp3).

Internetradio. En klass kan spela en ström istället för sina spår: ange en MP3-ströms adress (Icecast, Shoutcast, de flesta internetradio) under Internetradio. BitVoice ansluter när den första samtalen läggs på vänteläge med den klassen, spelar en ström till alla som väntar och kopplar bort den en halv minut efter att den sista har lämnat. Medan strömmen inte kan nås, spelas klassens egna spår (eller väntetonen, utan spår) och klassen visar varför.

Vem hör detVilken musik
någon som läggs på väntelägeden musik som valts på den som håller i telefonen, annars standard
en parkerad samtalskopplaremusiken för den som parkerade dem, annars standard
en samtalskopplare som väntar i en kökönens musik, annars standard
en samtalskopplare som väntar på en konferensledarestandard

Standard för alla kan vara väntetonen, så ingenting ändras tills du väljer musik. Att välja väntetonen på en kö eller en telefonlinje behåller tonen där.

Kapitel 22

Namndirectory

I webbgränssnittet: /directories

En namndirectory (kapitel 22) låter samtalskopplare nå någon utan att veta deras nummer: de stavar de första bokstäverna i namnet på tangentbordet (2 för ABC, 3 för DEF, upp till 9 för WXYZ) och kopplas igenom.

  1. Lägg till katalog, ge den ett namn och ett nummer (411, säg) eller lämna numret tomt och använd den som ett menyalternativ.
  2. Välj vad samtalskopplare stavar: efternamn (det vanliga), förnamn eller båda.
  3. Välj vem som är listad, eller ingen för att lista alla med en telefon.

Samtalskopplare hör "Vänligen ange de tre första bokstäverna i personens namn". En match kopplas igenom omedelbart. Flera läses upp, åtta i taget: varje persons namn, sedan "för att ringa denna person, tryck 1", 2 och så vidare, med 9 för fler namn. Inga matchar: "Ingen matchar", och de försöker igen (tre försök).

Talade namn: spela in varje persons namn på deras telefonlinje (Talade namn: spela in i webbläsaren eller ladda upp en fil), och katalogen säger det; tills dess läser den upp telefonnumret. Katalogens egna ord kommer från katalogprompten i Ljud (kapitel 20), på dess språk.

Kapitel 23

Inringning (DISA)

I webbgränssnittet: /dial-in

En inringning (kapitel 23) (DISA, "direct inward system access") låter någon ringa in från utsidan, bevisa vem de är och ringa ut igen genom kontoret: samtalet går ut med kontorets samtals-ID, dess rutter och dess taxor, som om de vore vid sin skrivbord.

  1. Lägg till inringning, och ange ett PIN (4 till 10 siffror), de nummer som tillåts använda det (Endast från dessa nummer), eller båda. En av de två krävs.
  2. Välj den telefonlinje som samtal görs från: dess tillåtelse för utgående samtal, samtals-ID och utgående rutter gäller. Den måste tillåta utgående samtal.
  3. Ge det ett nummer att ringa inom, och skicka ett telefonnummer till det på Samtalsvägning (kapitel 8) (välj inringningen som destinationen).

Samtalskopplare hör "Vänligen ange din PIN, sedan hash", sedan "Vänligen ange numret att ringa, sedan hash", och kopplas igenom. Orden kommer från inringningsprompten i Ljud (kapitel 20).

Kapitel 24

Röstbottar (AudioSocket)

I webbgränssnittet: /voice-bots

En röstbot (kapitel 24) är ett program som du skapat (en AI-agent, en taligenkännande IVR, en inspelare) som tar samtal via AudioSocket, det enkla protokollet som Asterisk använder: BitVoice svarar på samtalet, öppnar en TCP-anslutning till boten och skickar samtalets UUID, sedan anroparens ljud som 20 ms-ramar av 8 kHz 16-bitars linjärt ljud och varje tangent som trycks; vilket ljud som helst som boten skickar tillbaka spelas för anroparen. Bottar och tal-tjänst-anslutningar skrivna för Asterisks AudioSocket fungerar med BitVoice oförändrade.

  1. Lägg till röstbot: dess namn, botens adress (10.0.0.9:9092) och, om så önskas, ett nummer för att ringa det.
  2. Välj var anroparen ska gå om boten inte kan ta samtalet, eller bryter av (en person, en kö, röstbrevlåda): obligatoriskt, så att ingen anropare någonsin läggs på för att en bot är nere.
  3. Skicka samtal till det från Samtalshanterare (kapitel 8), ett menyalternativ, en schemaläggare eller en omkopplare.

När boten skickar en AudioSocket-lägg på, avslutas samtalet; när anroparen lägger på, skickas en till boten. En bot som inte kan nås inom tre sekunder, eller vars anslutning bryts utan en lägg på, överför anroparen till reserven, och felet loggas.

För att ta med ett program i ett samtal som redan pågår (en lyssnande transkriberare, en assistent som viskar till ingen), använd ARI:s externa media: se Asterisk-kompatibilitet (kapitel 70).

Kapitel 25

Dag/natt-omkopplare

I webbgränssnittet: /toggles

En dag/natt-omkopplare (kapitel 25) är en strömbrytare för ett anropsflöde (FreePBX kallar det anropsflödeskontroll). Samtal som skickas till den går till dess normala destination, eller till den andra medan någon har växlat över: kontoret stänger tidigt på grund av en storm, någon ringer *281 på väg ut, och samtal går till röstbrevlåda tills det växlas tillbaka på morgonen. Den förblir som den lämnades, över omstarter.

  1. Lägg till omkopplare, ge det en kod (1 till 3 siffror: rings efter *28) och välj var samtal ska gå normalt och när det är växlat över. Båda sidor kan vara en schemaläggare, så en omkopplare kan sitta framför öppettiderna och åsidosätta dem.
  2. Välj vem som får växla den från en telefon (ingen vald låter alla tillägg).
  3. Skicka samtal till det från Samtalshanterare (kapitel 8), ett menyalternativ eller en schemaläggare, som alla andra destinationer.

Växla den genom att ringa *28 och dess kod (en stigande ton: växlat över; en fallande ton: tillbaka till normalt), med omkopplaren bredvid den på Omkopplarsidan, eller via API (POST /api/toggles/{id}/state). En belysningslampa som övervakar *281 tänds medan den omkopplaren är växlad över, så den som stänger av kan se det från sin skrivbord. Omkopplarkoden i sig är på Funktionsskoder (kapitel 32).

Kapitel 26

Tidtabeller

I webbgränssnittet: /schedules

En tidtabell skickar samtal åt ett håll när du är öppen och ett annat när du är stängd. Pecka en inkommande rutt mot en tidtabell, och tidtabellen mot menyn (öppen) och meddelanden (stängd).

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

Öppettider

Varje rad med tider är en uppsättning dagar och en tid från och till. Flera rader är tillåtna: måndag till fredag 9:00 till 17:00, och lördag 10:00 till 13:00. Tider kan korsa midnatt (22:00 till 06:00) för nattskift.

Helgdagar

Helgdagar räknas som stängda hela dagen, oavsett vad tider säger. Lägg till varje datum med ett namn; namnet visas på Samtalsflöde (kapitel 16) när du försöker ett samtal den dagen.

Tidszon

Tidszonen är den i Inställningar. När klockorna ändras följer tidtabeller den lokala tiden.

Kapitel 27

Skript (JavaScript och Lua)

I webbgränssnittet: /scripts

Ett skript bestämmer vart ett samtal går när menyer, scheman och grupper inte räcker: samtalare från ett område till ett kontor, VIP-nummer raka till en person, ett beslut från er egen data. Eller, ställt till Kör hela samtalet, svarar det på samtalet och kör det, som ett Asterisk-dialplan eller AGI-skript skulle: prompter och tal, tangenter, inspelningar, ringning av personer, vidarebefordran (nedan). Skript skrivs i JavaScript eller Lua på Skript (kapitel 27).

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

Säkert från början

Vad ett skript ser

call har:

FältVad det är
from, fromNamesamtalsställarens nummer och namn
todet nummer som valdes
directioninbound eller internal
trunkden trunk det kom in på
weekday, hour, minuteden aktuella tiden (0 är söndag)
dateYYYY-MM-DD

Vad det returnerar

En destination, {type, target}: typen är extension, ringgroup, queue, menu, schedule, voicemail eller hangup, och målet är dess nummer. Att returnera ingenting använder standardvärdet. log("text") skriver till skriptets körningslista.

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

Använda ett skript

Peka en inkommande rutt, en menytangent eller en schemaläggning mot skriptet, som mot vilken destination som helst. Test kör det med ett samtal du beskriver, utan att placera ett; körningslistan visar varje verkligt körning med dess beslut, tid tagen och eventuellt fel. Samtalflödet (kapitel 16) kör skript när du försöker ett samtal.

Skript som kör hela samtalet

Välj Kör hela samtalet. Skriptet svarar sedan på samtalet och går från topp till botten, varje steg väntar tills det är klart:

StegVad det gör
play(name)spelar en prompt från Ljud (kapitel 20) på samtalsställarens språk (goodbye, digit-5...), digits:1234, eller en ton: beep, confirm, error, off, hold. En prompt som inte är inspelad ännu är en beep.
say(text)talar orden med taletjänsten i Inställningar, AI (en beep utan en)
collect({max, timeout, interDigit, end, say, prompt})samlar in tangenter: som mest max (32), väntar timeout sekunder på den första (5) och interDigit för varje nästa (3), tills end (#). say eller prompt frågar först. Returnerar tangenter, "" när inga.
record({box, seconds, beep})spelar in ett meddelande till en extensions brevlåda, tills # eller tiden; returnerar dess sekunder
wait(seconds)väntar, returnerar en tryckt tangent
dial(destination, ringSeconds)ringer det med samtalsställaren som hör ringning. Svarat: de pratar och skriptet är klart (true). Ej svarat: false, och skriptet fortsätter.
transfer(destination)lämnar över samtalet; skriptet är klart
hangup()avslutar samtalet
log(text)skriver till körningslistan

En destination är ett nummer (en extension, ringgrupp eller kö här, annars ett externt nummer via utgående rutter; aldrig ett nödnummer) eller {type, target} som ovan. En tryckt tangent under en ljudavspelning stoppar den; play och say returnerar den och nästa collect startar med den. Att returnera en destination skickar samtalet 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 samma steg (collect{max = 1}). Ge skriptet ett Nummer att ringa för att ringa det från en extension.

Dess begränsningar håller samtalet säkert: skriptets eget kod kan köras som mest en kvarts sekund mellan två steg; ett samtal tar som mest 1 000 steg; och hela skriptet stoppas efter sin Längsta körning (10 minuter om du inte säger, 60 som mest). När det misslyckas, stoppas eller slutar utan att avsluta eller lämna över samtalet, går samtalet till dess Standardvärdet; en samtalsställare som lägger på stoppar det omedelbart. Försök kör skriptet med de tangenter du säger att samtalsställaren trycker och listar varje steg, utan att något samtal placeras.

Kapitel 28

AI-receptionist, röstbrevlådetrionage och fråga

I webbgränssnittet: /receptionists

AI-funktioner använder AI-tjänsten som anges i Inställningar (kapitel 14): en OpenAI-kompatibel tjänst (OpenRouter som standard) eller en som du kör själv. Vad de behöver skickas dit, så välj en tjänst som du litar på med samtal; för en 911-central räknas dess egen molntjänst som lokal.

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

AI-receptionist

Välj en receptionist som vart samtal ska gå: en väg, ett menyval eller en anknytnings Om ingen svarar. Den säger att den är automatiserad, svarar endast från Godkänd information, tar ett meddelande, bokar en återkoppling (se Återkopplingar (kapitel 30)) eller vidarekopplar till En person är. Att trycka 0 eller fråga efter en person når alltid någon, och så gör också eventuella problem med AI-tjänsten eller taletmodellen: uppringare blir aldrig fast med den.

Modeller

Modell gör textarbetet: sammanfattningar, receptionistens svar och fråga på vanligt språk. Att omvandla tal till text behöver en modell som tar ljud; ställ in den som Tal-till-text-modell (till exempel google/gemini-2.5-flash på OpenRouter) för att använda en textbaserad modell för resten, till exempel meta-llama/llama-3.3-70b-instruct.

Tal till text i byggnaden

Tal kan skrivas ner utan någon språkmodell: en talsökare (whisper) hör ljudet och skriver vad som sades, ingenting mer. Vem skriver ner tal, i AI-inställningarna, har tre val:

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.

Faktan som nämns i samtalet (ingen språkmodell)

Varje transkript läses också av regler, utan språkmodell, för de faktan som en växeltelefonist noterar: vad som hände, var, hur många som skadades (eller att ingen skadades), tillstånd (andning, vaken, blödning ...), faror (brand, rök, gas, vapen, kemikalier, bränsle), fordon, vem som ringer är till den som behöver och ett återuppringningsnummer. Varje faktum visas med meningen det kom från och den sida som sa det, i transkriptets Faktan som nämns i samtalet. Utan modell skrivs sammanfattningen från dessa faktan ensam och säger så.

UppställningFaktan hittadFaktan hittad som ingen förväntade sig
Utbildning (reglerna skrevs från den)41 av 410
Uthållighet, poängsatt kallt, innan någon regel skrevs från den27 av 40 (67%)2
Uthållighet, efter en andra omgång av regler skrivna från dess missar40 av 400
Förseglad, poängsatt kallt (ingen regel skrivs någonsin från den)23 av 43 (53%)3

Den förseglade poängen är den man kan förvänta sig på samtal den inte sett, och de tre uppsättningarna skrevs av samma personer som reglerna, så riktiga samtal kommer troligen att göra sämre. Läs faktan bredvid transkriptet, aldrig istället för det.

Större modeller behöver mer processor: en server som skriver ut många samtal på en gång bör börja med base, eller använda en maskin med en GPU som en tal-till-text-tjänst för byggnaden. På Apple-datorer använder whisper GPU:n.

Röstbrevlådatriage

Med Transkribera och sammanfatta röstbrevlåda på, markeras varje meddelande också som brådskande, normalt eller låg prioritet, med sin typ (försäljning, support, fakturering...). Brådskande meddelanden utlöser en varning på varje administratörs skärm.

Fråga i vanliga ord

På Ändringar (kapitel 61), beskriv en ändring ("skicka försäljningssamtal till röstbrevlåda efter 17:00"). AI föreslår det, BitVoice kontrollerar det som vilken annan ändring som helst och visar exakt vad som skulle ändras. Ingenting ändras förrän du trycker Tillämpa, och det blir en revision du kan återställa. Lösenord skickas aldrig till AI.

Kapitel 29

Meddelandelåda

I webbgränssnittet: /voicemail

Varje extension kan ha en brevlåda. Samtalsställare som inte besvaras hör dess hälsning och lämnar ett meddelande; personen hör det på sin telefon, läser det på skärmen eller får det 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

Aktivera det

På extensionen, aktivera Meddelandelåda. Om ingen svarar är då inställt på brevlådan. Ge den ett PIN (4 till 10 siffror): det öppnar brevlådan från en annan telefon, och loggar in personen på personalportalen och på hot desks.

InställningVad det gör
Längsta meddelande10 till 900 sekunder (180 som standard)
E-post nya meddelandentill extensions e-postadress, med meddelandet bifogat
Hälsninginspelad i webbläsaren, uppladdad eller inspelad från telefonen; utan en, hör samtalsställare en beep

Lyssna

Med AI

Med Transkribera och sammanfatta meddelandelåda på (Inställningar, AI), skrivs varje meddelande ut, sammanfattas i en rad, och markeras brådskande, normal eller låg prioritet med dess typ (försäljning, support, fakturering). Brådskande meddelanden utlöser en varning på varje administratörsskärm. Se AI (kapitel 28).

Ljudrengöring

Ljudrengöring (Inställningar) tar bort jämn bakgrundsbuller och jämnar ut nivåer när meddelanden sparas, så ett meddelande från en bil eller en trafikerad gata är lättare att höra.

Kapitel 30

Återkopplingar

I webbgränssnittet: /callbacks

Personer som begärt att bli uppringda. En AI-receptionist bokar en när en uppringare begär det: den samlar in deras namn, numret att ringa (erbjuder det de ringer från), en bra tid och vad det gäller, läser upp det för dem och bokar det bara när uppringaren samtycker. Den lovar aldrig en exakt tid. Administratörer kan också lägga till återkopplingar manuellt.

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 återkoppling visar en varning på varje öppen skärm och skickas via e-post till ägaren av receptionistens Ta meddelanden för brevlåda när den extensionen har en e-postadress och e-post är inställd i Inställningar.

För att ringa tillbaka, välj din extension och tryck Ring tillbaka: din telefon ringer först, och när du svarar ringer BitVoice numret åt dig, med din normala väg och uppringar-ID. Lägg sedan till en anteckning om du vill och tryck Klar (eller Avbryt). Färdiga återkopplingar sparas under de öppna och kan öppnas igen.

Del 3

Vardagssamtal

Vad människor gör på sina telefoner varje dag och vad de ställer in för sig själva: vidarekoppling, följ-mig, uppkoppling, konferensrum, sändning, varma skrivbord, fax och textmeddelanden.

Kapitel 32

Funktioner, vidarebefordring och snabbval

I webbgränssnittet: /codes

Funktionskoder är vad människor slår in på sina telefoner för att ändra sina egna inställningar och nå funktioner. De fungerar på varje telefon, skrivbordstelefon eller mjukvara, utan att något är inställt på telefonen själv. En stigande ton betyder klart; en fallande ton betyder vägrat.

Koder i överblick

KodVad den gör
*72vidarekoppla varje samtal (sedan numret och #, eller numret direkt efter: *722125550199)
*73sluta vidarekoppla varje samtal
*90 / *91vidarekoppla när man är i ett samtal / sluta
*52 / *53vidarekoppla när inte besvarat / sluta
*78 / *79stör ej på / av
*76växla stör ej (stigande ton: nu på)
*21växla följ-mig på och av
*8svara på ett samtal som ringer i din upphämtningsgrupp
** och en tilläggsvara på samtalet som ringer den tilläggen
*80 och en tilläggintercom: den telefonen svarar på högtalaren
*0 och en koden snabbval
*62väckningssamtal: höra det, boka ett (fyra siffror, såsom 0630) eller avboka det (stjärna)
*68 och en siffrarumstatus, för städning på hotell
*28 och en omkopplarens kodväxla en dag/natt-omkopplare (kapitel 25) över, eller tillbaka
*32blockera den senaste uppringaren: den senaste yttre numret som ringde den här telefonen hamnar på blocklistan (Spamskydd (kapitel 56))
*43eko-testet
*97din röstbrevlåda
70parkera ett samtal (överföra det hit); 71 till 79 hämtar det
*45 / *46köagent: logga in eller ut / pausa eller återuppta
*33 / *34logga in eller ut på en varm skrivbord
*7 / *8 under ett samtalpausa och återuppta inspelningen (kortbetalningar)

Vidarebefordring

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

Vidarebefordring till en annan tillägg använder den tilläggens egna inställningar (dess röstbrevlåda, dess följ-mig), upp till fyra hopp så att två personer som vidarebefordrar till varandra inte kan skapa en loop. Vidarebefordring till ett externt nummer går genom utgående rutter, som om personen slog in det, och behöver tillägget för att tillåtas externt samtal.

Vidarebefordran är en live-egenskap, inte en konfiguration: att ställa in den skapar ingen revision och den behålls över omstarter. Tillägg (kapitel 3) och personalportalen visar och ändrar den också.

Stör ej

*78 på, *79 av, *76 växlar. När stör ej är på, går samtal till meddelanden eller till destinationsnumret för extensionsnummer som inte svarar. Manuellt inställd stör ej har företräde framför kalendern (Kalendrar (kapitel 39)). Nödsamtal ringande ändå.

Följ-mig

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

*21 växlar follow-me på och av, för tillägg som har follow-me nummer inställda (på tillägget, eller i personalportalen). Skrivbordstelefonen ringer först under sin ringtid, sedan follow-me numren, ett efter ett eller alla samtidigt. På ett externt nummer med tryck 1 på, hör personen en ton och trycker 1 för att ta emot samtalet; en röstbrevlåda eller tystnad gör aldrig det, och efter 15 sekunder flyttas samtalet vidare.

Svara på någon annans samtal

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 och ett tillägg ringer upp det med auto-svar: dess telefon svarar på högtalaren, och båda sidor pratar. Yealink, Grandstream och Snom läser BitVoices Call-Info-rubrik, Poly läser Alert-Info; vissa telefoner behöver intercom tillåten i sina egna inställningar. Ett tillägg kan vägra intercom; då ringer samtalet som vanligt. Dörrstationer tar aldrig emot intercom.

Snabbval

*0 och en kod ringer upp ett sparat nummer: *05. Företagets snabbval är på den här sidan; varje person kan ha sina egna på sitt tillägg eller i personalportalen, och deras vinner över företagets med samma kod. Koderna är 1 till 3 siffror.

Ändra koderna

Varje kod kan ändras på Funktioner (kapitel 32), eller stängas av med ordet off. Två funktioner kan inte dela en kod, och ingen kod får vara ett tilläggs eller en grupps nummer: BitVoice säger vilken som krockar. Ekot, röstbrevlådan och parkeringsnumren är i Inställningar (kapitel 14).

Kapitel 33

Personalportalen

Personalportalen låter alla ta hand om sina egna samtal utan en administratör: stör ej, vidarekoppling, följ-mig, snabbval, röstbrevlåda och dess hälsning, deras PIN och en lista över deras egna samtal. Den finns på #/me på den här serverns adress och är länkad från inloggningssidan.

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

Inloggning

Personer loggar in med sin extension och sin röstbrevlåda-PIN: samma PIN som öppnar deras röstbrevlåda från en telefon och loggar in på hot desks. En extension utan PIN kan inte logga in; en administratör ställer in en på extensionen.

Upprepade felaktiga försök från en adress låser den ute i tio minuter. En portalssession når endast personens egna inställningar: aldrig en annan extension, konfiguration eller någons inspelningar.

Vad personer kan göra

FlikVad som finns där
Var samtal gårstör ej; vidarekoppling av varje samtal, när upptaget och när inte svarat; följ-mig-nummer; egna snabbval
Röstbrevlådameddelanden att spela upp och radera, med transkriptioner och sammanfattningar när AI är på; spela in eller ladda upp hälsningen
Dina samtalpersonens egna samtal, nyast först, utan inspelningar
PINändra PIN, ange den aktuella

Vidarekoppling och stör ej som anges här är desamma som de som anges från telefonen med funktionsskod (*97, Funktionsskod (kapitel 32)): den som anges senast gäller. Följ-mig-nummer och snabbval är en del av tilläggets konfiguration, så ändring av dem skapar en revision på Ändringar (kapitel 61), som registreras som personens egen.

Chatt och närvaro

Portalen's Chatt-flik listar kollegor med hur de är just nu: tillgänglig, i ett samtal, ringer, borta (stör ej, ett möte eller ledighet från kalendern, med orsaken) eller offline (ingen telefon ansluten), och den status de skrivit ("På lunch, tillbaka kl 2"). Välj någon för att skicka ett meddelande; meddelanden anländer omedelbart, och ett nummer bredvid ett namn räknar de olästa. Teamrum (Inställningar, Personalchatt) är samtal för en grupp, eller för alla när ett rum listar inga medlemmar.

Meddelanden syns bara för de personer som är i samtalet: administratörer hanterar rummen, men läser dem aldrig. Inställningar, Personalchatt stänger av chatt, och ställer in hur länge meddelanden sparas (0 sparar de senaste tusen i varje samtal).

Kapitel 34

Konferensrum

I webbgränssnittet: /conferences

Ett konferensrum är ett nummer som människor ringer för att alla ska kunna prata tillsammans. Personal ringer det från sina skrivbord; externa samtalare når det genom en inkommande rutt eller ett menyalternativ som pekar på rummet.

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

Konfigurera ett rum

  1. Öppna Konferensrum (kapitel 34) och tryck Lägg till konferensrum.
  2. Ge det ett nummer (valfritt fritt nummer, 500 som standard) och ett namn.
  3. Ange ett PIN om så önskas. Samtalare hör en ton, skriver in PIN och trycker #. Tre felaktiga PIN-försök och samtalet avslutas.
  4. Ange ett ledar-PIN om så önskas, som skiljer sig från PIN. Den som skriver in det ansluter som ledare.
  5. För att låta externa samtalare ansluta, peka en inkommande rutt (eller ett menyalternativ) mot rummet.

Alternativ

AlternativVad det gör
Vänta på ledarenalla andra hör väntetonen tills en ledare ansluter; när den sista ledaren lämnar rummet stängs det och alla kopplas bort. Kräver ett ledar-PIN.
Medlemmar ansluter tystaför briefing och föreläsningar: ledare talar, medlemmar lyssnar. En medlem trycker 1 för att be att få tala, och en ledare avmutar dem.
Spela in rummethela rummet spelas in som en enda inspelning i Samtalslogg (kapitel 47), såvida inspelning inte är avstängd för hela systemet
Toner när människor ansluter och lämnarpå som standard
Flest människor samtidigt50 som standard, upp till 200

Tangenter under ett samtal

Medan ett rum används

Sidorna visar varje rum som används: vem som är i, vem som talar (den gröna lampan), vem som är tyst, vem som har bett att få tala, och vem som fortfarande väntar på ledaren. En administratör kan muta eller avmuta vem som helst, ta bort någon, och låsa eller låsa upp rummet.

Alla i ett rum hör alla andra som inte är tysta, blandat av BitVoice; varje persons telefon kan använda sin egen codec. En inspelning av samtalet sparas för varje persons samtal, och en för rummet i sig med dess längd och inspelning.

HD-ljud

Slå på HD-ljud i ett rum (nya rum har det på) och det blandas i 16 kHz istället för 8: människor på bredbands telefoner (G.722, Opus, webbtelefonen) hör varandra i HD, med skärpan av ett modernt samtal, medan människor på vanliga telefoner (G.711, mobiltelefoner via en leverantör) hör samma rum som vanligt. Den live-vyn markerar rummet och varje medlem som är i HD. HD kräver G.722 bland codecs som telefonerna använder (det är först i systemets lista, Inställningar, Codecs). Inspelningar av rummet stannar i telefonkvalitet.

Videorum

Ställ in Video på ett rum och videotelefoner (och mjukvarutelefoner) som ansluter skickar sin kamera och ser en bild, som växlas när människor talar, som i Asterisks ConfBridge:

BitVoice växlar bilderna utan att avkoda dem, så det kostar nästan ingenting, och det ber varje ny bilds telefon om en fullständig bild (RTCP PLI och FIR, och SIP INFO-bild-snabbuppdatering som de flesta skrivbordstelefoner svarar) så att växlingen visas omedelbart. Varje medlems video använder rummets video-codec (H.264 om inte du väljer VP8); en telefon utan det ansluter med ljud endast. Varje tittare får en stabil ström (en källa, dess egen payload-typ), vem som helst som är på skärmen. Den live-vyn markerar vem som har video och vem som är på skärmen.

En grid skapas på ett annat sätt: BitVoice skickar varje bild till ffmpeg på servern, som avkodar dem, placerar dem i en 1280x720-bild i 15 bilder per sekund och kodar om den en gång för alla. Installera ffmpeg (Inställningar, Videokonvertering, som anger om den hittas); utan den följer ett grid-rum talaren och rummets skärm meddelar det. Varje bild kostar processortid: på en liten server, håll grider till ett fåtal rum åt gången. Endast medlemmar vars kamera skickar visas: någon som ansluter utan video eller vars kamera slutar, lämnar griden (den fryser aldrig på en stillbildskamera), och griden återskapas inom några sekunder när det ändras, med en kort paus i bilden. Den tionde medlemmen och senare hörs men visas inte. Den direkta vyerna markerar gridens storlek och vem som är i griden.

Allas video (webbläsare)

Välj Allas video och rummet får sin egen sida (Konferensrum, Öppna videorummet, eller #/video-room/NUMBER). Varje person där trycker Anslut med min kamera: webbläsaren skickar sin kamera en gång, i tre storlekar (simulcast), och tar emot varje annan kamera i sin egen bild. BitVoice vidarebefordrar bilderna som de kom, utan att avkoda dem (en selektiv vidarebefordringsenhet, SFU), så det kostar lite processortid; webbläsarens uppladdning och varje visnings nedladdning är vad som begränsar ett rum, så det tar upp till 16 kameror.

Dela skärm: tryck Dela min skärm och välj en skärm, ett fönster eller en webbläsartabb i webbläsarens egen väljare. Alla i rummet ser det som den stora bilden, under ditt namn, med text som förblir skarp (bildfrekvensen minskar istället när nätverket är kort). Du behöver inte ansluta med din kamera först. Sluta dela, eller webbläsarens egen Sluta dela-fält, avslutar det.

Kapitel 35

Paging och högtalare

I webbgränssnittet: /paging

Paging talar genom många telefoner samtidigt: slå ett pagernummer, och varje telefon i gruppen svarar på sin högtalare av sig själv. Använd det för tillkännagivanden till en lagerlokal, en skola, en butikslokal.

Konfigurera en sändningsgrupp

  1. På Sändning (kapitel 35) tryck Lägg till sändningsgrupp och ge den ett nummer (800 som standard) och ett namn.
  2. Välj telefonerna. Högtalare som är konfigurerade som tillägg (typ Högtalare) kan också vara medlemmar.
  3. Valfritt, en multicast-adress och port.

Multicast

Multicast skickar också sidan till en multicast-adress och port (239.0.1.10:5000), som G.711 µ-law, som högtalare och många skrivbordstelefoner kan lyssna på utan ett samtal var. En grupp kan endast ha en multicast-adress. Det fungerar på ett nätverk: routrar passerar inte multicast om de inte är konfigurerade för det.

Sändning och intercom

SändningIntercom
Vem höralla i gruppenett tillägg
Prata tillbakanej, enkelriktatja, dubbelriktat
Hurringa gruppens nummer*80 och tillägget

Telefoner som inte svarar på en sändning av sig själva inom några sekunder lämnas utanför, så en telefon utan auto-svar håller aldrig upp en sändning. Vissa telefoner behöver auto-svar (intercom) tillåtet i sina egna inställningar.

Kapitel 36

Hot desking

I webbgränssnittet: /phones

En hot desk är en delad telefon som blir vem som än loggar in på den: för kontor där människor inte har fasta skrivbord. Skapa en genom att aktivera Hot desk i tillägget som telefonen är konfigurerad som (skrivbordets eget tillägg, såsom 900 Skrivbord 3).

In- och utloggning

  1. På telefonen, slå *33 och vänta på signalen.
  2. Ange ditt tillägg och #, och vänta på signalen.
  3. Ange din röstbrevlåda-PIN och #. En stigande ton betyder att du är inloggad; en fallande ton betyder att det nekades.

Därefter ringer samtal till ditt tillägg skrivbordet såväl som dina andra telefoner, och samtal du gör från det visar ditt nummer och namn och räknas som dina på Kostnader. Inloggning på ett annat skrivbord flyttar dig dit. *34 loggar ut. Fem felaktiga försök låser skrivbordet i tio minuter.

Hantering av hot desks

På Telefoner (kapitel 4), Hot desks visar vem som är inloggad var; administratörer kan logga in någon (utan deras PIN) eller ut. Koderna och en tid varje dag när alla är utloggade, finns i Inställningar. Inloggningar behålls över omstart.

Kapitel 37

Hotell och väckningssamtal

I webbgränssnittet: /hotel

Väckningssamtal

Vem som helst kan boka ett väckningssamtal: gäster, nattskift, personer på beredskap. Från sin egen telefon ringer de *62: BitVoice säger den som är inställd (om någon), sedan anger de tiden som fyra siffror (0630), eller trycker på stjärna för att avbryta det. På Hotell (kapitel 37) bokar en administratör ett för valfritt tillägg, en gång eller varje dag.

När det är dags ringer telefonen med systemets namn; besvarad hör den "God morgon. Detta är er väckning." (väckningsprompten i Ljud (kapitel 20), på gästens eller anknytningens språk). Obesvarad försöks den igen (3 försök, 5 minuter isär, båda ställs in under Inställningar på sidan), och efter den sista kan reception-anknytningen ringas. Med flera servrar gör bara en väckningssamtal.

Gästrum

Slå på Gästrum på anknytningen för varje rumstelefon. På Hotel visas varje rum med gäst, väckning och rumstatus, med Incheckning och Utcheckning-knappar.

Hotelsystemet (PMS)

Kapitel 38

Kontakter på varje telefon

I webbgränssnittet: /contacts

Kontakter är företagskatalogen: leverantörer, kunder och andra kontor som människor ringer. Varje telefon listar den bredvid tilläggen, och när ett av dessa nummer ringer in, visar telefoner och uppringarkortet kontaktens namn (när leverantören skickade ingen). Ett nummer matchar oavsett hur det är skrivet: +1 212 555 0100 och 2125550100 är samma 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

Lägga till kontakter

Lägg till kontakt för en i taget, med så många nummer (arbete, mobil, hem, annat) som de har. Import tar en kalkylblad som sparats som CSV vars första rad namnger kolumnerna: namn, företag, arbete (eller telefon), mobil, hem, annat, e-post, anteckningar. BitVoice kontrollerar hela filen först och säger vilka rader som är fel; en kontakt med samma namn som en som redan finns uppdateras snarare än läggs till två gånger, och Ersätt varje kontakt startar listan på nytt. Export laddar ner listan som CSV.

På skrivbords-telefoner

Telefoner som konfigurerats av Telefoner (kapitel 4) (konfiguration) får katalogen med ingen ytterligare konfiguration:

I webb-telefonen

Kontakter under tangentbordet hittar ett namn eller nummer och lägger det redo att ringa.

Från Microsoft 365 eller Google Workspace

BitVoice kan hålla Kontakter i takt med er organisationskatalog: alla i den som har ett telefonnummer, och dess delade kontakter (Exchanges organisationskontakter eller Googles delade domänkontakter). I Inställningar (kapitel 14), Microsoft 365 och Google Workspace, välj tjänsten, ange vad den behöver, och tryck Kontrollera nu: den loggar in, räknar personerna och säger vilka utvidgningar som matchar en person via e-post. Spara, och Kontakter fylls inom en halv minut; sedan varje halvtimme, eller på en gång med Synkronisera kontakter nu.

Microsoft 365 (en appregistrering; du behöver ha möjlighet att ge administratörsmedgivande):

  1. I Entra-administrationscentret, Appregistreringar, Ny registrering: namnge den BitVoice, enkelhyresgäst, ingen omdirigeringsadress.
  2. API-behörigheter, Lägg till en behörighet, Microsoft Graph, Programbehörigheter: User.Read.All, OrgContact.Read.All och Calendars.ReadBasic. Sedan Ge administratörsmedgivande.
  3. Certifikat och hemligheter, Ny klienthemlighet: kopiera dess värde (visas en gång).
  4. I BitVoice: katalogens (hyresgästens) ID, programmet (klientens) ID och hemligheten. En hemlighet upphör att gälla (Microsoft erbjuder upp till två år): när den gör det, säger kortet att hemligheten nekades; skapa en ny och klistra in den.

Google Workspace (en tjänstekonto; du behöver vara en superadministratör):

  1. I Google Cloud, i ett av dina projekt: aktivera People API och Google Calendar API, skapa en tjänstekonto, och lägg till en nyckel (JSON) till den.
  2. I Google Admin-konsolen, Säkerhet, Åtkomst- och datakontroll, API-kontroller, Domänomfattande delegation, Lägg till ny: tjänstekontots klient-ID, med omfattningarna https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy.
  3. I BitVoice: nyckelfilen, och e-postadressen till en administratör för tjänstekontot att agera som.

Vad som kommer in:

Kapitel 39

Kalendrar och stör ej

I webbgränssnittet: /extensions

En anknytning kan följa personens kalender: under möten och ledighet skickas samtal till röstbrevlåda eller vidarebefordras (till en annan anknytning eller en mobil) istället för att ringa en telefon som ingen kommer att svara. Ringsgrupper ringer de andra under tiden, och i köer visas agenten som Borta.

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 anknytningen, Kalender och stör ej, klistra in kalenderns privata adress:

Kontrollera läser den omedelbart och listar de närmaste upptagna tiderna. BitVoice läser varje kalender var femte minut. Ledighet (hela dagens händelser och Outlooks "utanför kontoret") räknas alltid; möten räknas när Möten räknas som upptagna är aktiverat; händelser som är markerade som lediga räknas aldrig, och inte heller avbrutna händelser. Återkommande möten med hopade och flyttade förekomster förstås. Om en kalender inte kan läsas, meddelar Hälsa det.

Stör ej nu stoppar anknytningens ringning tills det stängs av, oavsett vad kalendern säger. Anknytningslistan visar vem som är borta och till när.

Den privata adressen fungerar som ett lösenord: vem som helst med den kan läsa den kalendern, så den sparas med de andra hemligheterna.

Varje kalender på en gång: Microsoft 365 och Google Workspace

I stället för en privat adress per tillägg, kan BitVoice läsa varje persons kalender från Microsoft 365 eller Google Workspace: konfigurera det en gång i Inställningar (kapitel 14), Microsoft 365 och Google Workspace (se Kontakter (kapitel 38) för stegen), med Kalendrar säger vem som är borta på. Varje tillägg matchas till sin person med sin e-post; en med en privat adress av sig själv använder den i stället. Tilläggets inställningar här (Möten räknas som upptagna, Medan upptagen, samtal) gäller som med en privat adress.

Kapitel 40

Mobilappar

BitVoice-apparna för iPhone och Android gör en mobiltelefon till en av tilläggens telefoner. Den ringer som en skrivbords telefon, på telefonens egen anrops skärm, även när appen är stängd.

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

Konfigurera push

En stängd app väcks för samtal via en push-meddelande. I Inställningar (kapitel 14), Mobilappar, välj en:

PushVad du behöver
Push-relayBioDreams relay (med hosting eller support) eller din egen bvpush: dess Relay-adress, Nyckel-ID och Hemlighet
Egna appardina egna byggnader: för Apple, Team-ID, Paket-ID, Nyckel-ID och Nyckel (.p8); för Google, Firebase-tjänstkonto (JSON)

Ställ in Adressen som apparna använder till den här serverns https-adress som den nås från var som helst, inte bara kontoret.

Para en telefon

  1. Öppna tillägget och tryck Lägg till en telefon.
  2. Skanna QR-koden i appen. Koden fungerar en gång, i tio minuter.

När ett samtal kommer in

BitVoice väcker appen; den ansluter, ringer på telefonens egen anrops skärm och svaras som vilken annan telefon som helst för tillägget: ringgrupper och köer ringer den med tilläggets andra telefoner. Tilläggets sida listar dess parade telefoner, om var och en Kan väckas för samtal, när den senast sågs och senast väcktes, och eventuella push-problem. Avpara stoppar en telefon från att ringa omedelbart, för en förlorad telefon.

Under ett samtal

Appen är en fullständig extension, inte bara en uppringare:

De andra flikarna

Live-transkript under ett samtal

Med Skriv ut samtal live på (Inställningar (kapitel 14), AI), skrivs varje sida av ett samtal ut medan det talas och visas på telefonen medan samtalet pågår. Ljudet skickas till tal-till-text-tjänsten (på din egen dator, där det är inställt) eller AI-tjänsten medan samtalet varar. Det är samma skrivande som 911 live-transkript (kapitel 13), för vanliga samtal.

Kapitel 41

Videotal

I webbgränssnittet: /settings

När båda telefonerna i ett samtal skickar video (videodesktelefoner, mjukvarutelefoner, videodörrklockor), passerar bilden mellan dem genom BitVoice. Ingenting att konfigurera: det är på om Inställningar → Videotal inte är avstängt.

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

Omvandling av video

Telefoner och appar som delar en videocodec (de flesta använder H.264) får varandras video som den är. När två parter inte har någon gemensam codec (en skrivbords telefon med endast H.264 och en webbläsare med endast VP8), slå på Konvertera video mellan H.264 och VP8 i Inställningar: BitVoice erbjuder då båda codecarna, svarar varje part på dess eget sätt och konverterar varje väg med ffmpeg, som måste installeras på servern (apt install ffmpeg, brew install ffmpeg; eller ange dess sökväg). Konvertering kostar cirka en processorcore per samtal och lägger till en liten fördröjning, så den är avstängd som standard och används endast när den behövs. Inställningar anger om ffmpeg hittades.

Kapitel 42

Fax: skicka och ta emot, faxmaskiner och analoga telefoner

I webbgränssnittet: /faxes

Faxapparater, analoga telefoner, dörrtelefoner och gamla linjer ansluter via en SIP-gateway (eller en telekort i BitVoice-datorn: se Telefonkort (kapitel 6)): en ATA (Grandstream HT-serien, för en eller två analoga telefoner eller en fax), eller en större gateway (Patton SmartNode, AudioCodes MediaPack och Mediant) för många analoga portar, en ISDN-linje (BRI/PRI) eller gamla analoga linjer (FXO). Varje port registrerar sig till BitVoice som en anknytning, likt 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

Mottagning av fax utan faxmaskin. På Faxar, lägg till ett faxnummer (300, säg), med de e-postadresser som varje fax ska skickas till. Sedan i Samtalshanterare (kapitel 8) skicka ett telefonnummers samtal till det. BitVoice svarar som en faxmaskin, växlar samtalet till T.38 och tar emot faxet; varje fax blir en PDF, som sparas på Faxar (Visa, PDF) och skickas via e-post. Ett fax som bryts av på vägen sparar de sidor som anlände och meddelar det. Varje fax i listan visar den avsändande eller mottagande maskinens egen identitet när den skiljer sig från numret, och den hastighet som sidorna skickades med (14 400 bit/s är den snabbaste; en maskin vars faxar ofta misslyckas med en låg hastighet har vanligtvis en dålig linje). Detta kräver en leverantör som stöder T.38 (de flesta gör det); ett fax som skickas som ljud kan inte tas emot på detta sätt. Testat med T38Fax, en faxoperatör: registrera trunken med dess användarnamn och lösenord till sip.t38fax.com, port 5080 (UDP); tillåt UDP från dess nätverk (8.34.182.0/24 och 8.20.91.0/24) genom eventuell brandvägg framför BitVoice.

Skicka ett fax. På Faxar, Skicka ett fax: välj det faxnummer som det skickas från, skriv det nummer som det skickas till, skriv en anteckning om du vill (den blir den första sidan) och lägg till dokument. Textfiler och bilder (PNG, JPEG, GIF) fungerar överallt. PDF behöver poppler på servern (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument och RTF behöver LibreOffice också. Sidan säger vilka servern kan göra. Varje sida får en sidhuvudrad, som faxmaskiner skriver ut: tiden, faxnumrets namn, dess identitet och sidantalet. Samtalet går ut från identitetens siffror (+1 212 555 0300 ringer från +12125550300), eller från faxnumret själv när identiteten inte är ett nummer. Sidorna är US-brev i Nordamerika och A4 på andra ställen, från landet i Inställningar.

BitVoice ringer numret via dina utgående vägar, som en utvidgning skulle, och skickar i den snabbaste hastigheten som linjen bär (14,400 bit/s, långsammare om linjen är dålig). Fax från ett faxnummer skickas ett i taget. Ett upptaget nummer eller ett som inte svarar försöks igen fem minuter senare, tre gånger totalt. Skickade fax är listade med de mottagna: Skickade, Väntar på att skickas, Misslyckade (med Försök igen), eller Delvis skickade när linjen bröts efter några sidor.

E-post till fax. Under listan, ställ in en brevlåda som BitVoice ska läsa (IMAP över TLS, port 993; för Google- och Microsoft-brevlådor använd en app-lösenord), sedan Test och Spara. Alla som har tillåtelse att skicka skriver till den brevlådan med faxnumret i ämnet (Fax 212 555 0199), eller till en plus-adress (fax+2125550199@example.com) om e-postservern tar dem. Bilagor blir sidorna och e-postens egna ord blir omslagsanteckningen (signatur och citerad post lämnas ut). Den skickas från det faxnummer som listar avsändaren: dess E-post varje fax till-adresser får alltid skicka, och Får också skicka fax via e-post lägger till andra (hela adresser, eller @example.com för ett domän). Avsändaren får ett e-postmeddelande när faxet har skickats, eller varför det inte gick.

E-post är lätt att förfalska, så BitVoice faxar ett meddelande bara när din e-postserver hittade det verkligen kom från avsändarens domän (DKIM, SPF eller DMARC, i Autentiseringsresultatraden den lägger till). Andra meddelanden släpps utan svar. Växla Acceptera e-post som avsändarens domän inte intygar på endast för en brevlåda som ingen yttre e-post kan nå.

Faxapparater på gatewayer. BitVoice överför fax via T.38, faxstandarden för internet: när gatewaysen hör en faxton ställs samtalet in på T.38, BitVoice ber den andra sidan (er leverantör eller en annan gateway) att växla också och passerar faxen mellan dem. Om den andra sidan inte kan hantera T.38, förblir samtalet på G.711 och faxen skickas som ljud, vilket fungerar på ett bra nätverk. Aktiva samtal visar fax (T.38) medan en fax skickas genom.

För tillförlitliga fax:

Kapitel 43

Inkorg: webbchatt, WhatsApp och Messenger

I webbgränssnittet: /inbox

Den Inkorgen (kapitel 43) innehåller varje skriven konversation i en lista: chatrutan på er webbplats, WhatsApp, Facebook Messenger och texter (kapitel 44). Alla som är inloggade på webbgränssnittet kan svara; den första som svarar tar konversationen (alla kan lämna den med Besvarad av), och Stäng lägger den undan tills personen skriver igen. Olästa konversationer räknas, och listan uppdateras automatiskt.

Chatrutan på er webbplats

Under Kanaler, aktivera Webbchatt, välj dess titel, färg och första rad, och lägg till raden som den visas i er webbplats sidor:

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

Den ritade en chatknapp i hörnet av varje sida; besökare skriver (med sitt namn om de vill) och ser era svar allteftersom de kommer. Konversationen stannar i deras webbläsare, så den fortsätter när de rör sig mellan sidor. Lista era webbplatser under Endast på dessa webbplatser så att rutan körs ingen annanstans. Besökare måste nå den här serverns adress från internet, med ett certifikat som webbläsare litar på (Let's Encrypt (kapitel 14)). Tio nya chattar från en adress på tio minuter är det mest BitVoice tar.

WhatsApp

WhatsApp Business-nummer på Metas Cloud API. I Metas utvecklarwebbplats, skapa en app med WhatsApp, lägg till ert nummer och skapa en systemanvändare med en permanent åtkomsttoken. Under Kanaler, aktivera WhatsApp och ange telefonnumrets ID och företagskontots ID (båda från API-konfiguration), åtkomsttoken och appens apphemlighet, sedan spara. I appens WhatsApp-konfiguration, ställ in webbhook: återanropsadressen och verifieringstoken som BitVoice visar, prenumererad på *meddelanden*.

WhatsApp låter er svara fritt i 24 timmar efter kundens senaste meddelande; efter det accepterar den bara meddelandemallar som godkänts i WhatsApp Manager. Svarslådan förvandlas då till en mallväljare: välj en mall (den listar era kontos mallar, med deras språk och typ), fyll i dess värden ({{1}}, {{2}} ...), kontrollera förhandsgranskningen, som är vad kunden kommer att läsa, och Skicka mall. Mallar som inkorgen inte kan fylla i listas gråmarkerade med orsaken: en med en bild-, video- eller dokumentrubrik, en variabel i dess rubrik eller en knapps länk, namngivna parametrar eller en kodknapp; och de som ännu inte har godkänts. Skapa mallar i WhatsApp Manager; Meta granskar var och en, vanligtvis inom några minuter.

Facebook Messenger

För en Facebook-sida: i Meta-appen, lägg till Messenger, anslut sidan och skapa en sidaåtkomsttoken. Under Kanaler, ange sida-ID, sidaåtkomsttoken och apphemlighet; sedan ställ in webbhook (adressen och verifieringstoken som visas), prenumererad på *meddelanden* och *messaging_postbacks*. Svar tillåts i 24 timmar efter personens senaste meddelande. Från då till 7 dagar tar Messenger svar skrivna av en person (skickade med Metas *human agent*-tagg: appen behöver Metas Human Agent-behörighet, begärd i App Review); den automatiska hälsningen skickas aldrig då. Efter 7 dagar tar inkorgen inget svar förrän de skriver igen.

Varje webbhook kontrolleras med apphemligheten (Metas signatur) innan BitVoice tror på den, och ett meddelande som Meta skickar två gånger behålls en gång. Bilder, röstdikter och andra bilagor visas som vad de är ("[bild]"); öppna dem i Metas egna appar.

Automatisk hälsning, när den är inställd, svarar på det första meddelandet i varje ny konversation genast.

Kapitel 44

Företagstextning (SMS)

I webbgränssnittet: /texts

Skicka och ta emot textmeddelanden från era företagsnummer på Textmeddelanden. Textmeddelanden skickas via en textningsleverantör. Inbyggt: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute och VoIP.ms, plus Er egen webbhook för valfri annan tjänst eller en gateway av er egen. Valfritt antal leverantörskonton kan användas samtidigt: varje nummer anger vilken som bär 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

Inställning

  1. I leverantörens portal, hitta kontots API-information. Formuläret frågar efter exakt vad den leverantören kallar dem (Twilio: Kontoidentitet och autentiseringstoken; Telnyx: en API-nyckel; Bandwidth: API-användare, lösenord, kontoid och meddelandeapplikations-ID; SignalWire: också er utrymmesadress) och säger var du hittar dem.
  2. På Textmeddelanden, Textningsinställning, lägg till leverantören med dem och spara. BitVoice visar en adress för mottagna textmeddelanden: ställ in den i leverantören som var mottagna meddelanden skickas till (dess återanrop, webbhook eller meddelande-URL). För VoIP.ms, lägg till ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} i slutet. Leveranskvitton som skickas till samma adress ignoreras. BitVoice måste vara åtkomlig från internet där.
  3. Lägg till varje nummer du textar från (med landskod), leverantören som bär det och de tillägg som ska meddelas via e-post när ett textmeddelande kommer in.

US 10DLC

US-leverantörer blockerar textmeddelanden från vanliga företagsnummer som inte är registrerade. Registrera ditt varumärke och sedan en kampanj med din textleverantör; kontrollistan på Texts spårar var de befinner sig och varnar när ditt exempelmeddelande saknar de avregistreringsord som leverantörerna förväntar sig.

Samtal

Varje samtal visar vem det är (från Kontakter), olästa textmeddelanden och tråden. Skicka skickar; räknaren visar hur många textmeddelanden ett långt meddelande tar. När någon svarar STOPP, kan ingenting mer skickas till dem från det numret tills de svarar START. Mottagna textmeddelanden visas också som ett meddelande i BitVoice.

Kapitel 45

Överföringsinformation

I webbgränssnittet: /settings

Så att en ringsignal aldrig behöver upprepa sig: med Informera den som samtalet överförs till på (Inställningar, AI), när ett samtal överförs, skriver BitVoice en två meningars sammanfattning av samtalet hittills (vem som ringer, vad de vill, allt som redan har lovat) för den person det går till. Den visas på deras webbtelefon med den ringande signalen, på Aktiva samtal (kapitel 46) och som ett textmeddelande på deras skrivbordstelefons skärm (för telefoner som visar SIP-meddelanden).

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 fungerar på samma sätt när AI-receptionisten lämnar över en ringsignal till en person: informationen kommer från vad ringsignalen berättade för assistenten.

Det behöver AI-tjänsten och en tal-till-text-modell (Inställningar, AI), och samtalets ljud hittills (upp till fem minuter) skickas till den tjänsten för att skrivas ut. En sammanfattning tar några sekunder, så den kan visas strax efter att telefonen börjar ringa.

Del 4

Kunder och insikt

Veta vem som ringde och hur det gick: de aktiva samtalen och historiken, kundtidsaxeln, CRM, inspelningar och samtycke, kvalitet, kostnader och samtals-ID-reputation.

Kapitel 46

Pågående samtal

I webbgränssnittet: /calls

Pågående samtal visar varje samtal i gång, uppdaterat som det händer: vem som ringde vem, hur länge det har pågått, dess codec och dess 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

Vad administratörer kan göra

ÅtgärdVad den gör
Lägg påavslutar samtalet för båda parter
Öppna dörrenför ett samtal från en dörrstation
Pausa inspelningför ett kortnummer: den pausade delen är tyst i inspelningen och markerad i historiken (Samtalinspelning (kapitel 51))
Lyssnahöra samtalet tyst
Viskatala med agenten endast; samtalaren hör inte
Bargeansluta till samtalet; alla hör dig

För att lyssna, viska eller barge, tryck på Tillsyn, välj telefonen att använda under Från telefon och tryck på Ring mig: din telefon ringer, och när du svarar går du med i samtalet. Du kan växla mellan att lyssna, viska och barge medan du är i det.

Vad visas mer

När ett samtal avslutas flyttas det till Anropsistoria (kapitel 47).

Kapitel 47

Samtalshistorik

I webbgränssnittet: /history

Varje avslutad samtal: vem ringde vem, när, hur länge och hur den avslutades. Sortera kolumnerna, spela upp inspelningar (en paus för kortnummer är markerad) och ladda ner listan som CSV. Hur länge inspelningarna sparas anges i Inställningar, Samtalsinspelning; en rättslig kvarhållning (kapitel 73) sparar dem längre.

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

Hur den dirigerades

Under varje samtalss resultat, listar Hur den dirigerades i vanliga ord och i ordning, vad som bestämde vart samtalet gick: den inkommande rutten som tog emot det, om en schema var öppen eller stängd och tiden, en omkopplares sida, vad en dirigerings skript valde (eller att dess reserv tog samtalet), tangenterna som trycktes i en meny, vem som var borta, vem som inte hade någon telefon ansluten, vem som inte svarade, den utgående rutten och trunkar som användes (och en trunk som hälsodomaren flyttade bakom de andra), bedrägeris skyddets dom, och, för ett inspelat samtal vars parter omfattas av olika samtyckesregler, vilken regel som tillämpades.

Kvalitet, ljud och kryptering

Kolumnen Kvalitet visar poängen (MOS, av 5) för varje svarad samtal och två märken när de är tillämpliga:

Transkriptioner och sökning

Med AI på och Transkribera inspelade samtal aktiverat (Inställningar, AI), skrivs varje inspelat samtal ut, med en kort sammanfattning och dess åtgärdsobjekt: vad någon kom överens om eller blev ombedd att göra. Varje sida av samtalet skrivs ut separat från inspelningen, så transkriptionen visar vem som sa vad och när. Transkriptionsknappen bredvid en inspelning öppnar den; administratörer kan också transkribera ett enskilt samtal eller transkribera ett igen.

Sök vad som sades hittar samtal med ord från deras transkriptioner, sammanfattningar och åtgärdsobjekt. Endast inspelade samtal transkriberas. En transkription raderas med sin inspelning, och läsning eller sökning av transkriptioner noteras i granskningsloggen, som när man spelar upp en inspelning.

Kapitel 48

Kundtidslinje

I webbgränssnittet: /timeline

Kundtidslinjen visar allt med ett telefonnummer under det senaste året, nyast först, så att vem som helst som svarar känner till hela 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

Vad det visar

ArtikelMed
Samtalvem som tog dem, hur länge och med en transkription, dess sammanfattning, inspelningen och transkriptionen
Röstmeddelandenderas sammanfattningar
Textmeddelandenbåda vägarna
Återuppringningarbegärda och om de är gjorda
Anteckningarteamets egna anteckningar

Ett nummer matchar oavsett hur det skrivs: +1 212 555 0100 och 2125550100 är samma sak.

Öppna den

Från en samtalarkort (Tidslinje), från Kontakter, från ett inkommande samtal i Samtalshistorik, från en textkonversation, eller skriv ett nummer i toppen av Tidslinje (kapitel 48).

Anteckningar

Administratörer kan Lägga till en anteckning för teamet: den visas på tidslinjen för alla, med vem som skrev den och när, och kan tas bort.

Kapitel 49

CRM: uppringarkort och samtalshistorik

I webbgränssnittet: /settings

Anslut ett kundsystem i Inställningar (kapitel 14), CRM. Det fungerar med alla system som har en webbadress, utan kod skriven för varje 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

Uppringarkort

Medan ett samtal från utsidan ringer, visar Aktiva samtal ett kort: vem det är (från din CRM, eller tilläggets namn), hur ofta de har ringt de senaste 90 dagarna, eventuell återuppringning (kapitel 30) de väntar på, och sammanfattningen av deras senaste transkriberade samtal. Webbtelefonen visar ett kortare kort till den som svarar: vem det är, tidigare samtal och väntande återuppringningar, men inte andra personers sammanfattningar av samtal.

För namnet, ange Sökadress: BitVoice frågar den (GET) med uppringarens nummer på plats för {number}, skickar Sökheader med dess värde (en vault-referens fungerar), och förväntar sig JSON med namn, företag, URL och anteckningar; 404 betyder okänt. Svar sparas i fem minuter. Öppna i CRM-länk lägger till en länk till uppringaren på kortet. Använd Sök för att prova ett nummer innan du sparar.

Ett CRMs eget svar

De flesta CRMs svarar på en sökning i sin egen form, vanligtvis en lista med träffar, inte BitVoices {"name": ...}. Öppna Svarsfält och ange var varje del är, som en punkterad sökväg: ett namn stiger in i ett objekt och ett nummer in i en lista, så list.0.name är det första träffens namn. Länk till kontakten kan vara en sökväg till en länk som CRM:en ger, eller en webbadress med sökvägar i klammer, såsom https://crm.example.com/#Contact/view/{list.0.id}. Ett tomt fält läser BitVoices eget namn för det. En sökning som inte hittar någon är samma sak som 404: kortet säger att uppringaren inte är känd. Försök med ett nummer med Sök innan du sparar.

Till exempel EspoCRM (testat mot en riktig EspoCRM): skapa en API-användare (Administration, API-användare, autentisering med API-nyckel) med en roll som kan läsa kontakter och konton, och ange sedan:

EspoCRM lagrar nummer i internationell form (+15405550117), som BitVoice skickar dem. Andra CRMs fungerar på samma sätt med sin egen sökväg och fältnamn; kontrollera formen på deras svar i deras API-dokumentation, eller med Sök, vars meddelande namnger vad den hittade.

Samtalloggning

Ange Samtalloggadress och Signeringshemlighet, och varje samtal skickas dit när det avslutas (händelse call.ended), igen med dess sammanfattning, åtgärdsobjekt och transkription när den transkriberats (call.summarized), och varje bokad återuppringning (callback.new). Varje POST-begäran innehåller X-BitVoice-Event, X-BitVoice-Timestamp och X-BitVoice-Signature: sha256= följt av HMAC-SHA256, med hemligheten, av tidsstämpeln, en punkt och brödtexten. En misslyckad leverans försöks fyra gånger under cirka en minut; om den fortfarande misslyckas, meddelar Health det. Skicka en testhändelse kontrollerar adressen och hemligheten.

Kapitel 50

Samtalinsikt för chefer

I webbgränssnittet: /quality

För kontaktcenter: bevis om hur samtal gick, för en chef att lyssna på, aldrig en automatisk poäng.

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 ett samtals Transkript, Hur det gick visas, mätt från inspelningens ljud ensam: hur mycket varje sida talade, varje sidas längsta sträcka, hur ofta varje sida började tala över den andra, hur länge båda talade samtidigt och tystnaden (en lång tystnad är ofta ett stopp eller död luft).

Med Anteckna hur varje transkriberat samtal gick aktiverat (Inställningar, AI), läser AI också transkriptet och säger hur ringsidan verkade i början och slutet, och listar upp till sex ögonblick: Gick bra, Titta på (talande över ringsidan, ett långt stopp, ett otydligt svar), Besvarades inte (en fråga ringsidan ställde som inte fick något svar) och Löfte (något någon sa att de skulle göra), var och ett med tid och de ord som sades, så att du kan gå direkt till det. En administratör kan begära det på vilket transkriberat samtal som helst med Titta på det här samtalet.

På Samtalskvalitet (kapitel 50), Samtal, efter vem som tog dem summerar de transkriberade samtalen under perioden per person: deras andel av talet, deras längsta sträcka, hur ofta de talade över samtalaren, tyst tid, samtal som slutade med att samtalaren blev upprörd, och de ögonblick som flaggats. Använd det för att välja samtal att lyssna på, inte för att ranka personer.

Träningsanteckningar är dina egna ord om ett samtal, i det ögonblick de handlar om: under Hur det gick, skriv Ögonblick (1:05, eller lämna det tomt för början) och Träningsanteckning, och tryck Lägg till anteckning. Anteckningar listas i samma ordning som samtalet med vem som skrev dem och när; administratörer skriver och tar bort dem, visare läser dem med transkriptet, och att lägga till eller ta bort en anteckning noteras i revisionsloggen. De följer med inspelningen, så dess kvarhållning och rättsliga kvarhållningar omfattar dem också. Träningsanteckningar på Samtalskvalitet räknar dem per person.

Kapitel 51

Samtalinspelning och kortbetalningar

Inspelning är inställd i Inställningar (kapitel 14), Samtalinspelning: av, varje samtal, eller endast de samtal som tillhör extensioner markerade Spela in samtal. Inspelningar spelas från Samtalshistorik (kapitel 47), och med AI på skrivs de ut och sammanfattas.

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

Informera människor

Vissa platser kräver att alla på ett samtal informeras om att det spelas in: Meddela, Pip och regler per region finns i Samtycke till inspelning (kapitel 52).

Kortbetalningar (PCI DSS)

Kortnummer får inte sparas i inspelningar. Innan en uppringare läser upp ett, trycker personen på tillägget *7; *8 återupptar. Pausa inspelning på Aktiva samtal (kapitel 46) gör detsamma. Den pausade delen är tyst i inspelningen och listas i samtalshistoriken, så en revisor kan se var och hur länge.

Konferensrum

Ett rum med Spela in rummet aktiverat sparas som en inspelning av hela rummet (Konferensrum (kapitel 34)).

Hur länge saker sparas

Inställningar anger hur många dagar inspelningar, samtalshistorik och röstbrevlåda sparas; äldre raderas inom en timme. Allt under en rättslig kvarhållning (kapitel 73) sparas oavsett dess ålder. Arkivet (kapitel 72) kan spara kopior på annan plats.

Administratörer och visningsanvändare kan spela upp inspelningar och läsa transkriptioner; endast administratörer kan transkribera ett samtal eller transkribera det igen. Att spela upp en inspelning eller läsa dess transkription noteras i granskningsloggen.

Kapitel 53

Samtalskvalitet

I webbgränssnittet: /quality

Hur samtal lät under de senaste 24 timmarna, veckan, månaden eller 90 dagarna, från ljudet BitVoice själv mottog på varje sida av varje samtal. Telefoner grupperas efter deras webbplats (kapitel 12) (eller "ingen webbplats"), och samtal från utanför efter leverantörens linje de kom in på.

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

Varje plats visar sina samtal, dess genomsnittliga poäng (MOS, av 5: över 4 är bra, under 3,6 låter dåligt), andelen ljudpaket som aldrig anlände och jitter (ojämn fördröjning). Under detta berättar BitVoice vad som är fel i klartext, till exempel "Förlust av paket på huvudkontorets nätverk: 3,2% av ljudet anlände aldrig, främst mellan 14:00 och 16:00", med vad som ska kontrolleras. Stapeldiagrammet visar ljud som förlorats per timme på dygnet.

The diagnosis compares the two halves of the same calls: the sound from the site's phones and the sound from the provider the same calls went through. When the other half arrived clean, the loss is on this place's side, and it says so; when both halves lost sound, the place is not to blame alone and it points at what the calls share, this system's own internet link. If every place loses sound at once, the cause is likewise what they share. How this was worked out lists the reasons, step by step (the call-quality rulebook, see Security (kapitel 60), "How BitVoice decides"). Places with fewer than three calls are not judged. Per-call quality is also in Call history (kapitel 47) (the Quality column) and, while calls are live, on Live calls (kapitel 46).

Ett samtal som anslöt men fick inget ljud alls från en sida räknas separat, under med inget ljud, och placeras först: det är inte dåligt ljud utan ljud som aldrig anlände, nästan alltid en brandvägg eller NAT-router som låter SIP passera och håller media ute. Platsens råd säger vad som ska kontrolleras (för en leverantör, dess mediaadressintervall).

Kapitel 54

Kostnader och budgetar

I webbgränssnittet: /costs

BitVoice prissätter varje samtal från vad din leverantör tar, och visar månadens utgifter per avdelning, person och trunk, med de dyraste samtalen.

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å Trunkar (kapitel 7), öppna en trunk och dess Sampelspriser. Varje pris täcker nummer som börjar med vissa siffror, som numret skickas till leverantören (endast siffror, så 44 för Storbritannien, 1900 för amerikanska premiumnummer); det längsta matchen vinner, och ett pris utan siffror täcker alla andra nummer. Ge priset per minut, eventuell avgift per besvarat samtal, faktureringssteget (60 sekunder för hela minuter, 6 eller 1 för finare) och eventuell minimi. Inkommande samtal per minut är för avgiftsfria nummer som ni betalar för att ta emot. Vad skulle det kosta kontrollerar ett nummer innan någon ringer det. Valutan ställs in på Kostnader.

Ett samtals kostnad är fast när det slutar, med priserna för tiden; att ändra ett pris ändrar inte tidigare samtal. Kostnader säger hur många besvarade utgående samtal hade inget pris.

Avdelningar och budgetar

Ge tillägg en Avdelning (i tillägget). På Kostnader, lägg till en budget för varje samtal eller för en avdelning: en varning visas i BitVoice, och skickas till budgetens adress och varningsadressen, vid 80% och igen vid 100% av månaden.

Larmet

Utgående samtal kostar mer än detta på en timme utlöser ett larm när utgående samtal passerar det beloppet inom en timme. En plötslig serie dyra samtal är det vanliga tecknet på avgiftsbedrägeri (en stulen telefonlösenord): kontrollera Samtalshistorik, sedan inaktivera tillägget eller trunken.

Kapitel 55

Anropar-ID-reputation och varumärkesanrop

I webbgränssnittet: /reputation

Telefonföretag kör spamfilter som kan märka ett företagsnummer "Spam troligt", eller blockera det, och sedan svarar knappt någon. Anropar-ID-reputation övervakar varje nummer du ringer ut från, från dina egna samtal, och säger i klartext hur det fungerar:

Nummer med färre än 20 samtal visas som för få för att bedöma.

Dina utgående nummer ger varje nummer ett namn (skickas som avsändarens namn), ett skäl för samtalet och en logotyp (en https://-bild). På en trunk med Skicka varumärkesidentifierare aktiverat skickas logotypen och skälet som rik samtaldata (RFC 9796 Call-Info); operatörer som stöder varumärkesringning visar dem på den ringda telefonen. De flesta telefoner visar namnet från CNAM-databasen (caller-name) istället, som din leverantör ställer in: fråga dem. Övervaka lägger ett varningsmeddelande på Hälsa när ett övervakat nummer börjar se ut som en etikett.

Sidans instruktioner beskriver vad man ska göra när ett nummer är etiketterat.

Kapitel 56

Spamskydd och STIR/SHAKEN

I webbgränssnittet: /settings

I USA och Kanada undertecknar den leverantör som ett samtal startar sin ringsignal (STIR/SHAKEN): A när den vet att ringsignalen kan använda numret, B när den vet ringsignalen men inte numret, C när den bara har vidarebefordrat samtalet. Din leverantör antingen berättar för BitVoice sitt utlåtande (verstat) eller skickar den undertecknade Identitetshuvudet vidare, som BitVoice sedan kontrollerar själv: signeringen, att den är under en minut gammal och att den namnger numren i det här samtalet. Utlåtandet visas som Verifierad, Delvis verifierad, Ej verifierad eller Inte verifierad på Aktiva samtal och i Samtalslogg.

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 Inställningar, Spamskydd, välj vad som händer när en ringsignals-ID misslyckas med verifiering (ringa, ringa med etikett eller vägra), när den inte är verifierad alls och när numret är dolt. Ett samtal med etikett ringer med Spam? (eller din egen etikett) före ringsignalens namn. Blockerade nummer vägras; en post som slutar med * blockerar ett nummerområde (+1900* är alla amerikanska premiumtalsnummer). Alltid tillåtna nummer vägras eller märks aldrig. I Samtalslogg läggs knappen Blockera bredvid en ringsignal till listan; vägrade samtal listas som Blockerade.

Inom en timme efter ett nödsamtal från något tillägg, vägras inget samtal (blockerade ringer märkta i stället), i fall det är nödtjänsten som ringer tillbaka. Ett 911-samtal (från ESInet eller en CAMA-trunk) vägras aldrig eller stoppas av skärming.

Uppringare som BitVoice inte känner

En uppringare är känd när numret är alltid tillåtet, i kontakterna (kapitel 38), ringdes från här för ett år sedan, eller passerade robottestet för 90 dagar sedan. Nummer matchas oavsett hur de skrivs (med eller utan landskoden, 1, 0 eller +). Under Uppringare som BitVoice inte känner, välj vad som händer med alla andra:

ValVad uppringaren får
Ring som vanligtsamtalet ringer som vilket som helst (standard)
Robottest förstBitVoice svarar och säger "För att bli ansluten, tryck" och en siffra, som ändras varje samtal. Rätt tangent sätter dem i kontakt med var samtalet var på väg; allt annat, eller ingenting (två gånger), och de går till Uppringare som misslyckas med testet går till, eller hör adjö. Robosamtal trycker inte på den
Skicka någon annanstansingenting ringer: de går raka vägen till den valda platsen, en röstbrevlåda säg

Robottestet behöver sina ord: i Ljud (kapitel 20), spela in eller skapa (med en tal-tjänst) skärmnings-prompts och siffrorna 1 till 9 på ringspråket. Tills de är inspelade ringer samtal som vanligt (en ringsignal som inte kan höras kan inte testas), och Hälsa meddelar det. En ringsignal som godkänns räknas som känd i 90 dagar. Testet svarar på samtalet, så ringsignalens operatör börjar debitera från det ögonblicket, som för alla svarade samtal. Anropslogg visar varje samtals resultat (godkänd, underkänd, skickad) och varför-spåret visar vad som hände.

En spammadatabas

BitVoice kan fråga en ryktestjänst om varje okänd ringsignal innan den ringer. Använd Nomorobo via Twilio fyller i Twilio Lookup med Nomorobos spamscore (installera Nomorobo-tillägget i ditt Twilio-konto, sedan ange dess konto-ID och autentiseringstoken); varje annan tjänst som svarar i JSON fungerar också: ange dess adress med {e164} (+12125550142) eller {number} (som operatören skickade det), där dess utlåtande är (Utlåtandefält, en punkterad sökväg), och när det betyder spamsamtal (en poäng på eller över Spam vid poäng, true, eller texten i Eller spamsamtal när texten är, t.ex. BLOCK). Välj vad som händer med en ringsignal som den anser vara spamsamtal: märkt som spamsamtal, robottestet eller vägrat.

Blockera den senaste ringsignalen

Strax efter ett oönskat samtal, slå *32 (Funktioner (kapitel 32)) från telefonen det ringde: den senaste yttre numret som ringde den här utvidgningen under den senaste dagen hamnar på blocklistan, och telefonen läser upp numret. Ett alltid-tillåtet nummer blockeras inte, och telefonen meddelar det. Var och en är i granskningsloggen, med vem som blockerade det.

Föreslås från dina samtal

BitVoice läser de senaste 30 dagarnas samtal från utsidan för nummer som ringer igen och igen och avbryts omedelbart: tre samtal eller fler, nästan alla av dem inom 10 sekunder, eller två robottester misslyckades, och aldrig ett riktigt samtal (någon som talar i 30 sekunder eller mer). Kända nummer lämnas utanför. Var och en kommer med varför; Blockera lägger till det på blocklistan och Inte spamsamtal betyder att det aldrig föreslås igen. Ingenting blockeras förrän en person säger det.

För att kontrollera certifikat mot STI-myndigheterna, klistra in deras certifikat under STI-certifikatmyndigheter; utan dem kontrollerar BitVoice att samtalet undertecknades med det certifikat det namnger men inte vem som utfärdade det certifikatet.

Underskriv dina egna samtal

De flesta leverantörer undertecknar sina kunders samtal själva. Om din leverantör tillåter det (eller du är en leverantör som kör BitVoice), aktivera Underskriv ringsignal på trunken (Trunkar (kapitel 7)) och ange ditt STI-certifikat (från en STI-certifieringsmyndighet, med din tjänsteleverantörskodtoken) och dess privata nyckel (P-256). Varje samtal ut genom trunken bär sedan en undertecknad Identitetshuvud (ES256, som SHAKEN kräver).

Del 5

Köra BitVoice

Att hålla det säkert och igång: administratörer och inloggning, säkerhet, ändringar och uppdateringar, flera servrar, värdorganisationer, kodekar, Teams, import och automatisering samt verktyg för felsökning.

Kapitel 57

Administratörer

I webbgränssnittet: /users

Administratörer är de personer som loggar in på det här webbgränssnittet. Personal som endast tar hand om sina egna samtal använder personalportalen istället och behöver inget konto här (Personalportalen (kapitel 33)).

Roller

RollKan
Administratörändra allt, spela upp inspelningar, se varje hemlig fälts existens (aldrig dess värde)
Visarese allt, ändra inget; hemligheter är dolda

En rolländring eller lösenordsändring loggar ut personen överallt på en gång.

Tvåstegs-inloggning

Varje person aktiverar tvåstegs-inloggning för sig själv: Konfigurera visar en nyckel för en autentiseringsapp; att ange koden den visar aktiverar den. Därefter kräver inloggning en kod samt lösenord. Inaktivering kräver lösenord.

Enkel inloggning

Med enkel inloggning (Inställningar) loggar personer in med organisationens konto (Microsoft Entra, Google, Okta, valfri OpenID Connect-leverantör), och ett konto skapas för dem första gången. Se Enkel inloggning (kapitel 58).

API-nycklar

Program (Terraform, skript) använder API-nycklar istället för lösenord: skapas på den här sidan, visas en gång och återkallas när som helst. Varje nyckel är en administratör eller en visare. En nyckel som skapats med Namnger den person den agerar för (för en CAD) kan skicka X-BitVoice-On-Behalf-Of med personens namn, och inspelningar namnger då den personen bredvid nyckeln (112-samtal (kapitel 77)).

Kapitel 58

Enkel inloggning

Enkel inloggning låter människor logga in på BitVoice med sitt arbetskonto, genom valfri OpenID Connect-leverantör: Microsoft Entra ID, Google, Okta, Keycloak och andra. Att lämna organisationen tar sedan bort deras åtkomst här också.

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

Hur det fungerar

Kapitel 59

Företagskatalog (Active Directory och LDAP)

BitVoice kan läsa din företagskatalog, Active Directory eller en annan LDAP-server (OpenLDAP, Samba, 389 Directory Server, FreeIPA): personer med ett telefonnummer blir tillägg, kataloggrupper fyller ringsgrupper och personer loggar in på webbgränssnittet med sitt kataloglösenord. BitVoice läser endast katalogen; den skriver aldrig till den.

Anslutning

I Inställningar (kapitel 14), Företagskatalog:

  1. Välj Active Directory eller OpenLDAP eller en annan LDAP-server: det ställer in vilka attribut som läses (sAMAccountName eller uid för inloggning, displayName eller cn, mail, telephoneNumber). Ändra någon av dem i dess ruta.
  2. Server: ldaps://dc1.example.com (port 636), eller ldap://... med StartTLS på. Vanlig LDAP avvisas såvida servern inte är denna dator, eftersom lösenord skulle korsa nätverket oekrypterat. När serverns certifikat kommer från din egen certifikatutfärdare, klistra in myndigheten i Företagets certifikatutfärdare.
  3. Läskonto och Dess lösenord: ett konto som har tillåtelse att läsa personer och grupper (reader@example.com på Active Directory). Lösenordet kan vara en hänvisning till en nyckelvalv (Inställningar, Nyckelvalv).
  4. Bas-DN: där personer och grupper är (dc=example,dc=com). Vilka personer begränsar dem med ett LDAP-filter; på Active Directory lämnas inaktiverade konton alltid utanför.
  5. Test loggar in med läskontot och läser alla, utan att ändra något: det visar hur många personer det hittade, hur många som har ett nummer och vilket tillägg var och en skulle få.

Tillägg och ringsgrupper

Inloggning

Med Personer loggar in här med sitt katalognamn och lösenord på, tar inloggningssidan katalognamn och lösenord samt BitVoices egna konton:

Kapitel 60

Säkerhet

I webbgränssnittet: /security

Ett telefonsystem på internet attackeras inom timmar: skannrar försöker lösenord på varje SIP-port, och ett inträngt system kör upp samtal till premiumnummer. BitVoice är byggt för att stå emot det som standard, i lager.

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 lösenordsgissning

Against fraud

Tullbedrägeriskyddet

Aktivera det i Inställningar, Tullbedrägeriskydd. Varje samtal utomlands (med +, 00 eller 011, och de platser som delar +1 med Nordamerika men är andra länder, som t.ex. Jamaica, ett klassiskt tullbedrägerimål) bedöms sedan innan det placeras:

SituationVad det gör
Ett samtal utomlands till ett land som detta tillägg ringde under de senaste 90 dagarnalåter det passera
Ett första samtal till det landet under 90 dagarlåter det passera och rapporterar det
Ett första samtal dit utanför Arbetstid, eller placerat från utanför (en inringning, en vidarekoppling)ber om PIN som begärs (med ingen vald, avvisar det)
Fler än Samtal utomlands under 10 minuter från ett tilläggavvisar det
Ett första samtal utomlands medan någon gissar lösenord (tre misslyckade försök i rad från en adress, eller ett block, under den senaste timmen)avvisar det
Ett nödnummerlåter alltid passera

Länder som alltid tillåts (landsnummer, såsom 44) och Undantag (en tilläxt som undantas till en viss dag, för en resa) tar bort "första samtalet" och "utanför kontorstid"; de ursäktar aldrig många samtal på kort tid eller ett angrepp, eftersom ett stulet lösenord ser ut att vara godkänt också. Om samtalshistoriken inte kan läsas, vet inte säkerhetsfunktionen om ett samtal är ett första, och något som inte mäts tas aldrig för säkert: den begär PIN-koden. Varje bedömning listas på Säkerhet (kapitel 60) med dess orsaker, och finns på samtalets post i Samtalshistorik (kapitel 47).

Hur BitVoice beslutar

BitVoices domare (till exempel avgiftsbedrägeriskyddet, trunkhälsokontrollen, samtalstkvalitetsdiagnosen och 911-anroparens platskontroll) följer var och en en regelbok: fakta som mäts, slutsatser de stöder, undantag som upphäver en slutsats och val. Hur BitVoice beslutar, under Säkerhet (kapitel 60), visar varje regelbok. Reglerna domarna följer:

Kryptering

Vem kan göra vad

Kapitel 61

Ändringar, säkerhetskopior och import

I webbgränssnittet: /changes

Varje sparad ändring är en revision: numrerad, med vem som gjorde den, när och en sammanfattning på en rad. Ingenting i konfigurationen går någonsin förlorat.

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

Jämföra och återställa

Exportera och importera

Ändringar gjorda samtidigt

Två administratörer som redigerar samma sak samtidigt kan inte skriva över varandra: det andra sparandet avvisas med ett meddelande att ladda om, och ingenting går förlorat.

Kapitel 62

Uppdateringar

I webbgränssnittet: /updates

Att uppdatera BitVoice är ett klick, och säkert: den kontrollerar den nya versionen, installerar den bredvid den gamla och återgår till den gamla om den nya inte förblir uppe.

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

Installera en uppdatering

  1. Ladda ner den nya versionen och packa upp den. Bredvid programmet är dess signatur från BioDream: bitvoice.sig, eller bitvoice.exe.sig på Windows.
  2. På Uppdateringar (kapitel 62), ladda upp programmet och dess .sig-fil.
  3. Tryck Installera. Som standard väntar BitVoice tills inga samtal pågår; du kan också installera på en gång.
  4. BitVoice startar om på den nya versionen. Med flera servrar, pågående samtal överförs till en annan server och fortsätter.

Återgå

Den version du lämnade sparas: Återgå återställer den på ett klick. En ny version som misslyckas med att starta två gånger, eller inte förblir uppe i en minut, ersätts av den tidigare versionen av sig själv.

Signaturer

Varje version från v0.1.3 har BioDreams release-nyckel. En sådan byggnad installerar endast program som är signerade med den nyckeln: ett osignerat fil, en signerad av någon annan, eller en som ändrats av en enda byte avvisas med signaturerna matchar inte. Sidan säger om den här byggnaden kontrollerar (Krävs) eller inte.

Du körUppdateringar accepterar
en version, v0.1.3 eller senareendast program signerade av BioDream
v0.1.2 eller tidigare, eller en egen byggnadalla program: utan nyckel, kan en .sig-fil inte kontrolleras och ignoreras
Kapitel 63

Flera servrar som ett telefonisystem

I webbgränssnittet: /servers

Två eller flera BitVoice-servrar som delar en PostgreSQL-databas fungerar 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

*Konfigurera det*

  1. Flytta den första serverns data till PostgreSQL: Inställningar, *Databas*.
  2. Starta varje annan server med samma databas: bitvoice -database postgres://… (eller miljövariabeln BITVOICE_DATABASE). Den ansluter omedelbart; *Servrar* listar den.
  3. På *Servrar*, kontrollera var varje server nås (dess adress och SIP-port på det nätverk servrarna delar), och ge varje en namn. Servrar som var och en nås från internet på en adress som är deras egen (molnservrar med offentliga IP-adresser, ingen delad adress) får *Sin egen offentliga adress* också: leverantörer och telefoner utanför informeras om den, så när en server tar över ett samtal, följer leverantörens ljud med. Om den lämnas tom, använder en server den offentliga adressen i Inställningar.
  4. Informera telefoner om hur de hittar servrarna (nedan).
  5. Leverantörslinjer (nedan).

*Hur telefoner hittar servrarna.* Telefoner som BitVoice konfigurerar (Yealink, Polycom, Grandstream) får en annan igång server som sin reserv av sig själva. För de andra, Snom och telefoner som konfigureras manuellt, använd en av följande på *Servrar*:

*Leverantörslinjer.* I varje trunk, anger *Delas mellan servrar* hur:

*När en server slutar*

Mellan servrar. Servrarna når varandra på deras SIP-port via TCP eller TLS när de har ett certifikat (var och en accepterar endast det certifikat den andra publicerat, och ljudet mellan dem är då krypterat med SRTP), och skickar ljud till varandras media-portar (UDP, intervallet i Inställningar). Samtal mellan servrar är signerade med en hemlighet de delar i databasen, och accepteras endast från en igångsatt medlem på dess egen adress. En brandvägg mellan dem måste släppa igenom dessa portar.

Testa det först: labbet. BitVoice kommer med ett labb som kör två servrar, deras databas och testtelefoner på en dator med Docker, var och en på en adress på egen hand: deploy/lab/run.sh up bygger och startar det och ställer in den delade adressen; run.sh call ringer mellan telefoner på olika servrar; run.sh failover dödar den server som bär ett samtal genom den delade adressen och kontrollerar att samtalet fortsätter (ljudet kommer tillbaka efter cirka fem sekunder); run.sh impaired ringer från en telefon på en dålig länk (försening, jitter och 5% förlust) och kontrollerar samtalens kvalitet som BitVoice rapporterar; run.sh down tar bort det. Servrarnas sidor finns på https://127.0.0.1:18501 och :18502 (användare admin).

Kapitel 64

Där data lagras (SQLite eller PostgreSQL)

I webbgränssnittet: /settings

BitVoice lagrar sina inställningar och deras sparade versioner, användare, kontakter, samtalshistorik, granskningsloggen, texter, anteckningar och transkriptioner i en databas. Inspelningar och röstbrevlåda stannar som ljudfiler 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

Den här serverns egen fil (SQLite, standard): en enda fil, bitvoice.db i data-mappen, med ingenting att installera. Säkerhetskopiera data-mappen och du har allt.

PostgreSQL: för flera BitVoice-servrar som delar en uppsättning data, eller för rapporter i verktyg som Power BI, Grafana eller Metabase. I Inställningar, Databas, Flytta data till PostgreSQL: skapa en tom databas och en användare som äger den, ange dess adress (postgres://användare:lösenord@värd:5432/databas), tryck Test, sedan Kopiera data och starta om på PostgreSQL. Allt kopieras i ett steg (allt eller ingenting) och BitVoice startar om på den; den gamla filen stannar där den var. Att flytta tillbaka till serverns egen fil fungerar på samma sätt. Flyttningar nekas medan samtal pågår.

Servrar som delar en PostgreSQL-databas ser varandras inställningsändringar inom fem sekunder. Var och en svarar fortfarande på sina egna telefoner och samtal; för att en andra server ska ta över en första servers telefoner behöver telefonerna båda adresserna (eller en adress som flyttas).

Databasen kan också namnges när BitVoice startar, med -database postgres://… eller miljövariabeln BITVOICE_DATABASE; den ändras då där, inte i Inställningar.

Äldre installationer: på den första starten av denna version, kopierar BitVoice sina gamla JSON-filer till databasen och flyttar dem till pre-database i data-mappen.

Kapitel 65

Värd för andra organisationer

I webbgränssnittet: /tenants

En BitVoice kan värd för flera organisationer. Var och en är ett eget telefonsystem: eget tillägg, nummer, trunk, rutter, administratörer, röstbrevlåda, inspelningar och anropslogg. Ingen organisation kan se en annans. De delar endast den här serverns SIP-port, IAX2-port och media-porter.

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 man ska använda det

Huvudsystemet är en organisation också: den som den här servern konfigurerades som. Dess administratörer hanterar de andra.

Lägga till en organisation

  1. Öppna Organisationer (kapitel 65) och tryck Lägg till organisation.
  2. Ge dess namn och ett kort namn (gemena bokstäver, siffror och bindestreck). Det korta namnet är en del av dess webbadress, /t/acme/, och av dess telefoners inloggningar, acme.100. Det kan inte ändras senare.
  3. Ge eventuellt dess egen domän, såsom pbx.acme.example, som pekar på den här servern. Telefoner registrerar sig till den domänen, och dess administratörer öppnar den i en webbläsare.
  4. Ställ in dess första administratör: ett användarnamn och ett lösenord på minst 12 tecken, och dess land.
  5. Ställ eventuellt in begränsningar.

Organisationen startar omedelbart med ett tomt telefonsystem, redo för dess administratör att konfigurera som beskrivs i Komma igång (kapitel 1).

Hur samtal hittar rätt organisation

En begärangår till
från en telefon som registrerar sig till pbx.acme.exampleorganisationen med den domänen
från en telefon som loggar in som acme.100Acme, tillägg 100
från en leverantör, för ett nummerorganisationen vars trunk det kommer från och vars inkommande ruta har det numret
allt annathuvudsystemet

Så två organisationer kan båda ha tillägg 100, och flera kan dela en leverantörs konto med olika nummer.

Var dess data är

På SQLite, har varje organisation sin egen mapp under tenants/ i data-mappen, med sin egen databasfil. På PostgreSQL, har varje organisation sitt eget schema i samma databas (tenant_acme). Säkerhetskopior, arkiv och exporter är per organisation.

Begränsningar

BegränsningVad händer vid den
Tilläggatt lägga till ett tillägg mer vägras med ett meddelande
Samtal samtidigtnya samtal vägras (503) tills ett avslutas
Lagringnya inspelningar och röstbrevlåda sparas inte
AI-begäran per dagtranskriptioner, sammanfattningar och AI-receptionisten stoppas tills midnatt UTC

0 är ingen begränsning. Nödsamtal vägras aldrig: en organisation vid sin samtalbegränsning, eller avstängd, kan fortfarande ringa 911 och bli uppringd.

Öppna en organisation

Öppna loggar in till dess webbgränssnitt som leverantören, utan dess eget konto; det visas i dess revisionslogg som leverantören. Dess administratörer loggar in på dess egen adress med sina egna konton. Varje organisation har sin egen inloggningscookie, så att vara inloggad på en aldrig loggar in någon på en annan.

Organisationer ser aldrig den här serverns egna skärmar: uppdateringar, databasen, de andra servrarna, certifikatet, SIP-spåret (som visar alla organisationers meddelanden), anropsgenereringen eller den här listan.

Avbryta och ta bort

Avbruten stoppar inloggningar och varje samtal utom nödsamtal; ingenting raderas. Ta bort stoppar organisationen och flyttar dess mapp åt sidan (tenants/.removed-<name>-<time>), så att ett misstag kan ångras manuellt.

Kapitel 66

Kodningar och ljud

En kodning är hur ljud omvandlas till data i ett samtal. Telefoner, webbläsare och operatörer stöder var och en några; BitVoice omvandlar mellan valfria två av sina kodningar när två parter skiljer sig, så alla kan prata med alla. När båda använder samma kodning passerar ljudet igenom utan att röras.

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

Kodningarna

KodningLjudBandbreddAnvänds av
G.722HD (bredband)64 kbit/sde flesta skrivbordstelefoner: det bästa valet mellan dem
G.711 µ-lawtelefon64 kbit/sNordamerika och Japan; varje operatör
G.711 A-lawtelefon64 kbit/sresten av världen
OpusHD, klarar förlust24 kbit/swebbläsare och mobilappar
G.729telefon, en aning grövre8 kbit/stunna länkar, några operatörer
G.726 (40 kbit/s)telefon; bäst för modemtoner av G.726-takter40 kbit/sgateways, några DECT-system
G.726 (32 kbit/s)nära telefon32 kbit/sDECT-basstationer, äldre gateways
G.726 (24 kbit/s)mellan 32 och 1624 kbit/snågra DECT-system
G.726 (16 kbit/s)grov16 kbit/smycket tunna länkar
AMR-WB (G.722.2)HD6,6 till 23,85 kbit/smobilnätverks HD-röst, VoLTE-interconnects
AMRtelefon, mobil4,75 till 12,2 kbit/smobilnätverk, några operatörer och gateways
iLBCtelefon, klarar förlust13,3 eller 15,2 kbit/säldre mjukvarutelefoner och appar
Speextelefon15 kbit/s (2,15 till 24,6)äldre mjukvarutelefoner, länkar till andra Asterisk-system
GSMgrövre13 kbit/säldre mjukvarutelefoner och gateways
G.723.1grov; omvandlas endast med ffmpeg5,3 eller 6,3 kbit/smycket gamla videotelefoner och gateways
G.722.1 (Siren 7)bredband, oförändrad24 eller 32 kbit/sPolycom-telefoner, video- och konferenstelefoner
G.722.1C (Siren 14)super-bredband, oförändrad24 till 48 kbit/skonferenstelefoner, rumssystem
G.719fullband, oförändrad32 till 128 kbit/stelepresensrumssystem
Codec2mycket låg bandbredd, oförändrad0,7 till 3,2 kbit/sradiolänkar, amatörradiogateways

Inställningar listar kodningarna telefoner kan använda, bäst först; varje trunk kan ha sin egen lista. Analog adapterportar använder alltid G.711, som faxar, modemer och larmpaneler behöver.

G.722.1, G.722.1C, G.719 och Codec2 skickas oförändrade mellan två parter som båda använder dem, med deras bitfrekvens eller läge behålls i erbjudandet (BitVoice omvandlar dem inte, så ett samtal mellan en av dessa och en telefon utan det använder en annan kodning som båda har). Lägg dem i en lista, ovanför G.711, där rumssystem eller konferenstelefoner bör behålla sin ljudomfång när de ringer varandra. Listorna namnger G.722.1 vid 32 kHz G7221C, även om SDP kallar båda G7221.

G.723.1 skickas oförändrad mellan två parter som båda använder den. För att låta en G.723.1-enhet prata med vad som helst annat, aktivera Omvandla G.723.1 med ffmpeg i Inställningar och installera ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice kör sedan ffmpeg som ett separat program för varje riktning som behöver omvandlas (hörs vid vilken hastighet som helst, skickas vid 6,3 kbit/s, den hastighet som ffmpegs kodare skapar), cirka 60 ms senare än andra kodningar, och stoppar det några sekunder efter samtalet. BitVoice har ingen G.723.1-kod som den kan använda: ITU:s referenskod har ingen licens som tillåter att den inkluderas, och ffmpeg installeras och körs på egen hand.

Vad omvandling kostar

Omvandling tar processortid, endast på samtal där de två sidorna skiljer sig. Per samtal, cirka 0,3 ms av en kärna var 20 ms för Opus och 0,12 ms för G.729 (några 60 och 170 omvandlade samtal per kärna); G.726 och GSM kostar mindre än G.729; G.711 och G.722 nästan ingenting. G.729 skickas utan bilaga B (inga tysta ramar).

Ljudrengöring

Ljudrengöring (Inställningar) sänker konstant bakgrundsbuller och jämna ut nivåer, för röstbrevlåda och, om du vill, under samtal.

Kapitel 67

Microsoft Teams (Direct Routing)

I webbgränssnittet: /trunks

BitVoice kan vara session border controller (SBC) för en Microsoft Teams-klient, så Teams-användare ringer BitVoice-utvidgningar och dina telefonlinjer, och BitVoice ringer Teams-användare.

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

Vad du behöver: ett offentligt namn för denna server i ett domän som din Microsoft 365-klient har verifierat (sbc.example.com), port 5061 öppen båda vägarna till Microsofts nätverk 52.112.0.0/14 och 52.120.0.0/14, och ett certifikat för det namnet från en offentlig myndighet. Teams-användare behöver en Phone System-licens.

Steg

  1. Inställningar, Certifikat: installera certifikatet och dess privata nyckel (PEM). Det används omedelbart, för detta gränssnitt och för SIP över TLS, och BitVoice presenterar det för Microsoft.
  2. Trunkar, Lägg till, börja från Microsoft Teams: ange serverns offentliga namn. Skåpet säger om certifikatet täcker det.
  3. Kopiera PowerShell som skåpet visar och kör det som en Teams-administratör: det lägger till SBC (New-CsOnlinePSTNGateway), en röstväg och policy, och en regel för nummerplan så att korta extensionsnummer når BitVoice som uppringt; sedan ger varje Teams-användare policyn och deras nummer.
  4. För att ringa Teams-användare från BitVoice, lägg till en utgående väg för deras nummer via Teams-trunken. Teams hittar bara sina användare med + och landskoden: om människor ringer dem utan, lägg till + och landskoden i vägens Förläng (anropets varför-spår säger så när ett går ut utan).

När en Teams-användare överför ett samtal, ber Microsoft BitVoice att placera det (en REFER som namnger sin egen proxy, med numret eller Teams-användarens ID): BitVoice ringer tillbaka exakt vad Microsoft namngav, med den Referred-By som Microsoft gav, så en överföring till en annan Teams-användare fungerar lika bra som en till ett telefonnummer. BitVoice skickar aldrig en Replaces-rubrik till Teams, som Microsoft vägrar.

BitVoice skickar Microsoft OPTIONS varje minut med SBC-namnet i Contact, som Microsoft kräver, och försöker sip, sip2 och sip3.pstnhub.microsoft.com i turordning. Media är alltid krypterat (SRTP). Hälsa varnar när certifikatet inte täcker namnet, är självsignerat eller slutar snart, och när Microsoft slutar att svara.

Detta följer Microsofts publicerade SBC-krav och testas mot en simulerad Microsoft-proxy; BitVoice är inte på Microsofts lista över certifierade SBC.

Kapitel 68

Importera

I webbgränssnittet: /import

Överför tillägg, ringgrupper, köer och trunkar från FreePBX, Asterisk eller 3CX; och personer, jakt och ringgrupper, SIP-trunkar, inkommande nummer och dialmönster från Cisco, Avaya och Mitel. Ladda upp de exporterade filerna, flera på samma gång (en .zip eller .tar av dem fungerar också); BitVoice visar exakt vad som skulle ändras innan något tillämpas, och importen blir en revision som kan ångras på Ändringar (kapitel 61).

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

Flytta från FreePBX

Den bästa filen är en FreePBX-säkerhetskopia: den innehåller allt, inklusive SIP-lösenord.

  1. I FreePBX: Admin → Säkerhetskopiera och återställa → Lägg till säkerhetskopia. Bocka i minst Core, Ringgrupper, Köer och Röstmeddelanden (alla moduler är okej), spara och Kör.
  2. Ladda ner säkerhetskopian från dess rad (filen heter något i stil med 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. Installera BitVoice på den nya servern och slutför konfigurationen med ett tillägg som FreePBX inte använder (säg 199) och ingen telefonlinje: importen tar med linjerna.
  4. På Importera (kapitel 68), släpp .tar.gz-filen som den är. Läs förhandsgranskningen: varningarna listar allt som inte kan överföras.
  5. Välj Lägg till. Det är en revision på Ändringar (kapitel 61): ångra den där om något ser fel ut, och importera igen.
  6. Flytta telefonerna: peka var och en mot BitVoice (eller konfigurera dem från Telefoner (kapitel 4)), med samma tilläggsnummer och SIP-lösenord de hade.
  7. Testa samtal in och ut, sedan flytta operatörens registrering (eller nummerporteringen) sist.

Testat på ett riktigt system: en FreePBX 17.0.33 (den officiella Debian 12-installationen) med fyra tillägg och röstmeddelanden, en PJSIP-trunk som registrerar, två utgående rutter (en med en dialningsprefix), en ringgrupp, en kö med straff och tre DIDs, säkerhetskopierad med Backup & Restore med alla moduler bockade. Säkerhetskopian är 70 MB, nästan allt av det är ljudfiler och anropslogg: BitVoice läser den som den kommer och behåller endast konfigurationen, så en säkerhetskopia på upp till 512 MB kan laddas upp. Allt ovan kom över: lösenorden, röstmeddelandepinnen och e-post, trunkens registrering och codec, ruterna med deras prefix, ringgruppens röstmeddelande när den inte besvaras, könens straff och DIDs till gruppen, kön och tillägget.

Vad som kommer över:

What does not, and is said in the preview: IVRs, time conditions, announcements, follow-me, custom trunks and contexts, caller-ID matching on routes, and outside numbers in ring groups. Build those on Menus (kapitel 21), Schedules (kapitel 26) and the extension's Follow me. Older backups (FreePBX 13 and before) and a plain mysqldump asterisk of the FreePBX database are read the same way.

Andra system

Varje export är:

Grupper och rutter. Ladda upp dem med personalfilen, så att varje gruppmedlemskap hittas med nummer eller namn:

Trunkar från dessa exporter kommer in som avstängda och utan lösenord, eftersom exporterna inte innehåller dem. Rutter går ut på den importerade trunken med samma namn; en ruta som saknar trunk lämnas utanför och anges. Rotating och längst ledig ringning är mer lik en kö än en ringgrupp: förhandsgranskningen säger till, så att du kan göra den till en.

Dessa exporter (alla utom en FreePBX-säkerhetskopia) innehåller inga SIP-lösenord, så varje tillägg får ett nytt; röstbrevlådor, namn och e-postadresser följer med när exporten har dem. Cisco-, Avaya H.323/DCP- och Mitel-telefoner körs med tillverkarens eget programvara och kan inte konfigureras av BitVoice: importen anger hur många som listades. Cisco-telefoner kan återfläckas med Ciscos multiplattformsprogramvara (SIP); Avaya J100 och Mitel 6800/6900-telefoner kan registrera sig till BitVoice för hand i SIP-läge.

Kapitel 69

Konfiguration som kod

Allt som skärmarna gör går genom BitVoices REST API, så allt kan skriptas, lagras i Git eller hanteras med Terraform. API:t beskrivs för verktyg på /api/openapi.json (/api/openapi.json).

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

API-token

Skapas på Administratörer (kapitel 57): en per program, endast läsning eller möjlighet att ändra allt. Skicka den som Authorization: Bearer bv_.... Den visas en gång; återkalla den när den inte längre behövs. En tokens ändringar visas i Ändringar och revisionsloggen under dess namn.

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

Terraform eller OpenTofu

Repositoryns deploy/terraform visar tillägg, ringgrupper och rutter som hanteras med den generiska REST-leverantören: planen visar vad som skulle ändras, apply gör ändringen. Leverantören kontrollerar BitVoices certifikat; medan BitVoice fortfarande använder sitt eget självsignerade certifikat, antingen hämta ett från Let's Encrypt (Inställningar, Certifikat) eller ange bitvoice_insecure = true på ett nätverk du litar på (på Linux, SSL_CERT_FILE som pekar på BitVoices certifikat fungerar också). Resurser matchas av den ID som BitVoice tilldelar dem, så en andra plan visar inga ändringar tills filen eller skärmarna ändrar något.

Konfiguration från Git

I Inställningar (kapitel 14), Konfiguration från Git, läser BitVoice konfigurationen från en fil i ett repository var få minuter och antingen visar vad som skiljer sig eller gör ändringarna. Börja filen med Exportera för Git, som lämnar ut lösenord; BitVoice behåller sina egna, så hemligheter hamnar aldrig i repositoryt.

Kapitel 70

Asterisk-kompatibilitet (AMI, ARI och AGI)

Verktyg skrivna för Asterisk kan styra BitVoice: CRM, väggpaneler, knappar för att ringa, kontrollanter för inspelare av samtal. Slå på det i Inställningar (kapitel 14), Asterisk-kompatibilitet. Verktyg ser samtal som kanaler med namn 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

Gränssnittet för administratörer på TCP-port 5038 (AMI lyssnar på: den här datorn som standard). Stöds:

TypNamn
ÅtgärderInloggning (vanlig eller MD5-utmaning), Ping, Händelser, Filter, Lista kommandon, CoreShowChannels, Status, CoreStatus, CoreInställningar, PJSIPShowEndpoints, Tillstånd för tillägg, Tillstånd för tillägg (lista), Tillstånd för enhet (lista), Hämta variabel, Initiera, Omdirigera, Blind överföring, Avsluta, Utloggning
KöerKöstatus, Kösammanfattning, Pausa kö, Lägg till i kö och Ta bort från kö (de loggar en agent in på eller av från alla deras köer), Agenter
ÖvrigtParkerade samtal; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; Antal meddelanden i brevlåda, Status för brevlåda; Pausa övervakning, Återuppta övervakning; Användarhändelse; Uppdatera (ingenting att uppdatera: ändringar tillämpas omedelbart)
HändelserNy kanal, Nytt tillstånd, Avsluta, Dial börjar, Dial slutar, Paus, Fortsätt, Peertillstånd, Kontakttillstånd, Meddelandeväntan, ConfbridgeGår med, ConfbridgeLämnar, ConfbridgeSlutar, Användarhändelse

Filter behåller endast de händelser som en reguljär uttryck matchar (Event: Newchannel), eller släpper dem med ! först, som på Asterisk. Det finns ingen Asterisk-kommandorad: Kommando svarar med ett fel.

ARI

På /ari/, med grundläggande autentisering eller ?api_key=user:secret:

BegäranVad den gör
GET /ari/channelspågående samtal
POST /ari/channels?endpoint=PJSIP/100&extension=5551234ringa 100, sedan ringa numret
DELETE /ari/channels/{id}lägga på
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102skicka samtalet till 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefoner, broar, version
/ari/eventsen WebSocket för händelser
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawen kanal som skickar ljud till ett program via RTP (ulaw eller alaw över UDP); dess lokala port är i kanalens UNICASTRTP_LOCAL_PORT
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid>samma sak via AudioSocket
POST /ari/bridges/{call}/addChannel?channel={id}den externa media-kanalen ansluter till ett samtal: den hör båda parter och båda hör den; med role=listener hör ingen den (för live-transkription)
POST /ari/bridges/{call}/removeChannel?channel={id}den lämnar samtalet; de två parterna pratar direkt igen

En extern media-kanal som inte läggs till i ett samtal inom en minut stängs.

ARI-applikationer

En ARI-applikation (Asterisks Stasis()) kör samtal från ditt eget program. Lägg till den under ARI-applikationer i Inställningar, Asterisk-kompatibilitet: ett namn, ett valfritt nummer tillägg som ringer, och en fallback. Sedan skickar du samtal till den som till vilken destination som helst: en inkommande väg, en menytangent, en tidtabell.

Ditt program ansluter till /ari/events?app=NAME (en WebSocket, med inloggningen i ?api_key=user:secret). Varje samtal som når applikationen besvaras och anländer som StasisStart, med kanalen; programmet kör sedan det:

BegäranVad den gör
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42spelar upp ljud från Ljud (sound:), digits:, number:, tone:beep eller en sparad inspelning (recording:); PlaybackStarted och PlaybackFinished följer. DELETE /ari/playbacks/{id} stoppar det.
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23spelar in (wav) till de sparade inspelningarna; RecordingStarted och RecordingFinished. POST /ari/recordings/live/{name}/stop avslutar det, DELETE kastar bort det.
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name}de sparade inspelningarna
POST /ari/channels/{id}/dtmf?dtmf=123skickar tangenter till uppringaren
GET/POST /ari/channels/{id}/variable?variable=X&value=Ykanalens variabler
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEblandningsbryggor: alla i en hör alla andra
POST /ari/channels/{id}/continue?extension=101släpper taget om samtalet: till den utgången, ringsignalen eller kön, annars standard
DELETE /ari/channels/{id}lägger på
POST /ari/channels?endpoint=PJSIP/101&app=NAMEringer 101; besvarat, det går in i applikationen
GET /ari/applicationsapplikationerna, om ett program är anslutet och deras kanaler
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutetystar vad uppringaren säger (in), vad de hör (out) eller båda
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencemusik på håll till uppringaren (ChannelHold, ChannelUnhold), eller tystnad
GET/POST /ari/channels/{id}/variablesflera variabler på en gång (ChannelVarset)
POST /ari/channels/{id}/move?app=otherlämnar över kanalen till en annan applikation (StasisEnd, sedan StasisStart där; ApplicationMoveFailed när inget program kör det)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEen avlyssningskanal i en applikation som hör vad uppringaren säger, för att spela in det (POST /ari/channels/{snoop}/record)
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, sedan POST .../dialen kanal som väntar tills den blir uppringd; Dial-händelser berättar hur ringsignalen går, och det går in i applikationen när det besvaras
GET /ari/channels/{id}/rtp_statisticspaket och byte som skickats och mottagits, förlust och jitter
POST /ari/playbacks/{id}/control?operation=pausepaus, upaus, omstart, bakåt och framåt (tre sekunder)
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId}musik på håll till en bro, inspelning av dess mix, dess variabler
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mutekopierar en inspelning; pausar eller tystar en live
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterprenumerationer (kanal:, bro:, slutpunkt:PJSIP/100, enhetsstatus:) och händelsefilter ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEtelefonernas tillstånd (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) och anpassade som programmen själva upprätthåller (DeviceStateChanged); telefonernas tillstånd anländer också som EndpointStateChange
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0utgångars röstbrevlådor (100@default), och brevlådor som ett program självt upprätthåller
GET /ari/soundsljuden från Ljud, på de språk de är inspelade på, och ljuden som laddats upp för AGI-skript
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hien text till utgång 100:s telefoner
POST /ari/events/user/{name}?application=NAMEen användarhändelse till en applikation (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, globala variabler och BitVoices delar med namn efter de moduler de står för

BitVoice svarar på varje åtgärd i Asterisks publicerade ARI (dess testsvit anropar var och en och kontrollerar att svaret innehåller de fält som Asterisks beskrivning kräver). Några har ingen betydelse här och svarar 501 med orsaken: laddningsbara moduler (BitVoice är ett program), Sorcerys dynamiska konfiguration (BitVoice konfigureras i dess webbgränssnitt), loggningskanaler, broars videokällor (ARI-broar bär ljud), skicka REFER till telefoner och hävda sändningsanrop. En avlyssnare hör bara uppringaren (spy=in), och whisper erbjuds inte: broa en kanal med deras för att tala med dem. Kanalevenemang för varje samtal (ChannelCreated, ChannelStateChange, ChannelDestroyed) skickas till varje program, som med Asterisks subscribeAll=true. ARI-bibliotek som läser gränssnittet från servern (ari-client och andra) hittar det på /ari/api-docs/resources.json. Vilka program som behålls nu, under ARI-applikationer i Inställningar, visar applikationerna, anpassade enhetslägen, brevlådor, globala variabler och broar som programmen har ställt in.

Tangenter som trycks ner anländer som ChannelDtmfReceived; en uppringare som lägger på som StasisEnd. När inget program är anslutet går samtalet till standard; när programmets sista anslutning stängs, går dess samtal dit också efter fem sekunder (tid att återansluta). För samtalslogik utan ett eget program, använd Skript (kapitel 27) som kör hela samtalet; för att lämna över ljudet till ett program, Röstbotar (kapitel 24).

AGI-skript

Ett AGI-skript (Asterisks AGI() och EAGI()) kör ett samtal kommando för kommando, så IVR och integrationer skrivna för Asterisk (phpagi, pyst2, Asterisk-Java, valfri FastAGI-server) fungerar fortfarande. Lägg till det under AGI-skript i Inställningar, Asterisk-kompatibilitet:

FältVad det är
Skriptnamnhur destinationer namnger det
Adressen FastAGI-server, agi://host:4573/script?x=1 (port 4573 när ingen anges), hagi://domain/script för servrarna i domänens _agi._tcp SRV-poster, försökt i prioritetsordning, eller filnamnet på ett program i mappen AGI-program
Argumentskickas som agi_arg_1, agi_arg_2 …
Nummer att ringavalfritt: tillägg ringer det som vilket nummer som helst
Reservvart samtalet går när skriptet slutar utan att välja ett nummer, eller inte kan nås
Längsta körningett skript som körs längre stoppas (standard en timme)
EAGIför ett program: uppringarens ljud (8 kHz, signerat 16-bitars, little-endian) på filbeskrivningsenhet 3. Linux och macOS

Test ansluter till servern (eller kontrollerar att programmet finns och är körbart) utan att skicka ett samtal. Sedan skicka samtal till det som till vilken destination som helst.

BitVoice svarar på samtalet, skickar agi_-variablerna (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) och utför kommandona, svarar som Asterisk 20 gör (testsviten jämför varje svar med en inspelning av Asterisks):

KommandonAnteckningar
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP med endast en kanalnamn avslutar endast skriptets eget samtal
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITflyktiga tangenter, exempeloffset och slutposition som på Asterisk; snabbspolning, backspolning och paus i CONTROL STREAM FILE
SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIMEmed en taltjänst i Inställningar, AI de uttalas; utan, siffrorna uttalas från Ljud
RECORD FILEs=N tystnad, en signal, flyktiga tangenter; filen hamnar i ljudbiblioteket
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … och ${NAME}-uttryck
DATABASE GET, PUT, DEL, DELTREEAsterisks databas (AstDB), som BitVoice hanterar och visar under AGI-databas
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION är vart samtalet går när skriptet slutar
SPEECH CREATE … SPEECH RECOGNIZEanvänder talet-till-text i Inställningar, AI: resultatet är vad uppringaren sa, som text0, för skriptet att jämföra; grammatik accepteras och används inte
EXECSvara, Lägg på, Uppspelning, Bakgrund, Läs, Ställ in, MStäll in, Säg siffror, Säg nummer, Säg alfabetiskt, Vänta, Ring (ringer varje nummer i turordning; DIALSTATUS), Gå till, Röstbrevlåda, Musik på håll, Inspelning, Inget, Verbose, Logg. Andra svarar -2, som Asterisk gör för en saknad applikation

BitVoice har ingen nummerplan: där ett skript skulle fortsätta i Asterisks nummerplan (SET EXTENSION, EXEC Goto), går samtalet till det numret här (ett tillägg, ringgrupp, kö, meny eller ett externt nummer via utgående rutter) när skriptet slutar. Skript ringer aldrig nödnummer. När uppringaren lägger på, får ett FastAGI-skript HANGUP och ett program SIGHUP; endast kommandon som tillåts på en död kanal körs sedan (511 för de andra), och anslutningen stängs 30 sekunder senare om skriptet fortsätter. Varje körning visas under Senaste körningar med dess VERBOSE-rader, och skickas till händelseströmmen som agi.ran.

Ljud för AGI-skript. Skript spelar ljud med de namn de använder på Asterisk: ladda upp dem under Ljud för AGI-skript med en mapp (custom/welcome; es/custom/welcome för uppringare på spanska). WAV, MP3 och Asterisks .gsm, .ulaw, .alaw, .sln och .sln16 accepteras; en sökväg som /var/lib/asterisk/sounds/en/custom/welcome.gsm hittar custom/welcome. Asterisks digits/0–digits/9, beep, silence/N och några andra (vm-goodbye, invalid, please-hold) spelar BitVoices egna prompter och signaler. Vad skript spelar in sparas i samma bibliotek, markerat inspelat av ett skript, för de dagar du väljer (30 som standard). Biblioteket rymmer upp till 1 GB.

Program. Ett program körs på den här servern med BitVoices rättigheter, så det laddas aldrig upp via webben: kopiera det till mappen AGI-program som visas på skärmen (DATA/agi-bin) och gör det körbart. Det får endast PATH och AST_AGI_DIR från miljön, körs i den mappen och vad det skriver till standardfel går till serverloggen. FastAGI skickar kommandon i ren TCP: håll servern på den här datorn eller ett privat nätverk.

Inloggningar

Varje inloggning har ett Användarnamn och Hemlighet. Inloggningar är skrivskyddade såvida de inte är markerade Kan ändra samtal. Håll AMI på den här datorn såvida inte verktyget körs på en annan plats: AMI är ren, oenkrypterad TCP.

Kapitel 71

AI-assistent (MCP)

En AI-assistent som Claude, ChatGPT, Gemini eller Cursor kan använda BitVoice genom Modellkontextprotokollet (MCP), det standardiserade sättet assistenter når andra program. Be det i vanliga ord: vem ringde i morse och om någon ringde tillbaka, vad sa uppringaren från tandläkaren, varför gick 9-tiden-samtalet till röstbrevlådan, är leverantörsledningen nere. Med din tillåtelse kan den också placera ett samtal, skicka ett textmeddelande eller lägga på ett samtal.

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.

Aktivera den

I Inställningar (kapitel 14), AI-assistenter (MCP):

Kortet visar adressen och inställningar som är klara att kopieras för vanliga assistenter och listar alla verktyg.

Vad en assistent kan göra

Läsning (alla token):

Agera (med Låt assistenter agera och en token som kan ändra saker):

Varje verktyg är en av API: s egna rutter, kör som assistenten: den ser och ändrar exakt vad dess token kan, samma kontroller gäller och dess ändringar är i granskningsloggen under dess namn. Ett svar begränsas till cirka 60 000 tecken; assistenten ber att begränsa sin sökning när en är skuren.

Ansluta en assistent

Assistenter som loggar in (Claude.ai och ChatGPT anpassade anslutningar, och andra): lägg till en anslutning med BitVoices adress. Assistenten öppnar BitVoices inloggning i din webbläsare; logga in som vanligt (lösenord, tvåstegsverifiering, enkel inloggning), och sidan säger vilken assistent som ber och vart den återgår till. En administratör kan låta den agera eller Bara låta den läsa; en visningsassistent kan endast läsa. Tillåt inte skickar den iväg med ingenting. Dess åtkomst är sedan på Administratörer (kapitel 57), API-nycklar, som AI-assistent, inloggad: den fungerar på /mcp endast, aldrig för resten av API: et, varar en timme i taget och förnyar sig i upp till 30 dagar utan att användas. Återkalla avslutar den omedelbart. Dessa assistenter når BitVoice från sina egna servrar, så den behöver en adress som kan nås från internet och ett certifikat de litar på (Let's Encrypt, i Certifikat (kapitel 14)).

Assistenter som ges en token (Claude Code, Cursor, VS Code och andra verktyg som tar en adress och en rubrik): skapa en API-nyckel på Administratörer (kapitel 57), endast läs såvida den inte ska agera, och ge den som Authorization: Bearer bv_...:

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

Assistenter som startar ett program (Claude Desktop och andra som tar ett kommando): BitVoices program bär en bro, bitvoice mcp, som skickar varje meddelande till servern via HTTPS. Ge den serverns adress och token:

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

Med BitVoices eget certifikat (inte ett från en myndighet), vägrar bron det och skriver ut dess SHA-256: kontrollera att det är din servers, sedan lägg till "-pin", "THAT-SHA256" till argumenten. Endast det certifikatet accepteras sedan.

Säkert att lämna på

Kapitel 72

Arkiv

I webbgränssnittet: /archive

Arkivet behåller kopior av inspelningar, röstmeddelanden och konfigurationen någon annanstans: en Amazon S3-bucket (eller någon annan S3-kompatibel lagringsenhet) eller en Azure Blob Storage-container. Om den här serverns disk förloras har arkivet fortfarande tillgång till dem.

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

Konfigurera

  1. På Arkiv (kapitel 72), välj Var arkivera: Amazon S3 eller Azure.
  2. För S3: Bucket, Region, ett valfritt Mapp i bucket och Slutpunkt (för S3-kompatibla lagringsenheter), samt Åtkomstnyckel-ID och Hemlig åtkomstnyckel. Kopiera principen ger den enda behörighet BitVoice behöver, för att kopplas till användaren eller rollen.
  3. För Azure: en Container SAS-URL med skrivbehörighet, och ett valfritt Mapp i containern.
  4. Välj vad som ska kopieras utöver konfigurationen: Samtalsinspelningar, Röstmeddelanden, eller båda.

Vad som händer

Var tionde minut kopierar BitVoice nya inspelningar och meddelanden som inte finns i arkivet ännu, och en gång om dagen en daterad kopia av konfigurationen (config/2026-10-13.json). Sidan visar den senaste körningen, den senaste lyckade och eventuella fel.

Att ta bort något här (antingen genom kvarhållning eller manuellt) tar inte bort arkivets kopia: ange bucketens eller containerns egna livscykelregler för hur länge arkivet behåller saker.

Kapitel 73

Rättsliga kvarhållningar

I webbgränssnittet: /holds

En rättslig kvarhållning behåller samtal, inspelningar och röstbrevlåda som en fråga kan behöva, och förhindrar att någon raderar dem, tills den är frigjord. Använd den när en advokat begär att poster ska bevaras.

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

Lägga till en kvarhållning

På Rättsliga kvarhållningar (kapitel 73), tryck Lägg till:

FältVad det är
Namnvad ärendet heter
Anledningvarför, för protokollet
Nummerde extensioner och yttre nummer det omfattar (101, +15551234567), eller Allt
Från, Tillde datum det omfattar; tomt för inga begränsningar

Medan en kvarhållning är aktiv

Frigörande

Frigör gör det som kvarhållningen behöll återigen föremål för kvarhållningsinställningarna: saker som är äldre än kvarhållningen raderas vid nästa rensning. Frigjorda kvarhållningar förblir listade, med när och av vem, och lägga till och frigöra kvarhållningar är i revisionsloggen.

Kapitel 74

Mätvärden: Prometheus, OpenTelemetry, Grafana, SNMP och samtalshistorik

I webbgränssnittet: /settings

Prometheus skrapar /metrics på webbadressen. Skapa en API-nyckel under Administratörer (en visningsnyckel räcker) och ge den till Prometheus som dess bärar-token:

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

Den läser samtal på gång (efter tillstånd), avslutade samtal (efter riktning och resultat), taltid, registrerade telefoner, varje trunkens tillstånd och returresa, väntande uppringare och agenter i varje kö, mottagna och förlorade ljudpaket, en histogram över samtalstillgänglighet (MOS) och bokade återuppringningar. Räknare startar om från noll när BitVoice startas om, som Prometheus förväntar sig.

OpenTelemetry: i Inställningar, Mätvärden, ange en samlarens OTLP/HTTP-adress (och en rubrik som t.ex. Auktorisation, med dess värde) för att skicka samma mätvärden varje minut (eller så ofta du ställer in, från 15 sekunder). Skicka nu kontrollerar de sparade inställningarna.

Grafana-instrumentpanel laddar ner en färdig instrumentpanel: importera den i Grafana och välj din Prometheus-datakälla.

SNMP

För övervakningssystem som talar SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), aktivera SNMP-agenten i Inställningar. Den svarar på SNMPv2c GET, GETNEXT och GETBULK, endast läsning, på UDP-port 161 (eller en annan du väljer: port 161 kräver rätt att öppna låga portar på Linux), och endast från de nätverk du listar. Välj en gemenskap som inte är offentlig eller privat: det är ett lösenord som skickas över nätverket i klartext.

Den serverar den standardiserade systemgruppen (sysDescr, sysUpTime, sysContact, sysName, sysLocation) och BitVoices egna värden under bas-OID: samtal på gång och ringande, registrerade telefoner, trunkar uppe och konfigurerade, väntande uppringare, avslutade samtal, talsekunder, förlorade paket, genomsnittlig samtalstillgänglighet, en trunktabell (namn, uppe eller nere, latency) och en kötabell (väntande, agenter, besvarade, övergivna). Ladda ner BITVOICE-MIB bredvid inställningarna för att din övervakning ska kunna ladda. BioDream LLC har ännu inget företagsnummer, så standard-bas-OID är i Net-SNMPs experimentella utrymme; lägg till ett under ditt eget företagsnummer för att hålla det stabilt.

Fällor (SNMPv2) skickas till varje mottagare du listar när en trunk går ner eller kommer tillbaka, ett nödsamtal görs eller en server i en kluster slutar svara. SNMPv3 stöds ännu inte.

Samtalshistorik på annan plats

Bredvid Samtalshistorik kan varje post skickas, när samtalet slutar, till:

Skicka en testpost testar syslog-servern och databasen med de sparade inställningarna.

Kapitel 75

Samtalsgenerator

I webbgränssnittet: /loadtest

Samtalsgeneratoren placerar riktiga samtal med riktigt ljud i BitVoice från den här datorn: för att se hur många samtal en server hanterar och hur bra, eller för att kontrollera efter en ändring att samtal fortfarande går dit de ska.

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

Kör en test

InställningVad det är
Nummer att ringaett nummer inom BitVoice: en anknytning, en grupp, en kö, ett menyval
Samtal kommer fråndet nummer som visas som uppringare
Svara somen anknytning som generatorn svarar för; eller ingen, när numret svarar av sig själv (ett menyval, eko-testet)
Samtalhur många totalt
Samtidigthur många som pågår samtidigt, upp till 2 000. Varje vidarekopplat samtal tar media-portar från Media från och Media till (Inställningar): standard 10000-20000 rymmer cirka 1 800, så utöka det för fler
Nya per sekundhur snabbt de startar
Varje varar (s)hur länge varje pratar

Läsa resultaten

ResultatVad det säger
Svarat, Misslyckatoch Varför samtal misslyckades, efter orsak
Svarstid, median och 95%hur länge ringare väntade
Ljud förloratandelen ljudpaket som aldrig anlände
Ljudpoängen uppskattning av ljudet (MOS): 4 och över är bra, under 3,6 är dåligt
Jitter, 95% av samtalhur ojämnt ljudet kom tillbaka (RFC 3550 interarrival jitter, genomsnittlig över varje samtal); telefoner jämnar ut upp till cirka 20 ms
Längsta lucka, värsta samtalden längsta väntan mellan två ljudpaket i något samtal; de kommer var 20 ms, så en paus i servern visas här
Minnespauser, längsta paushur ofta, och hur länge som mest, Go-körningen pausade allt för att städa minne under körningen
Samtal pågår över tiden graf över belastningen
Kapitel 76

SIP-spårning

I webbgränssnittet: /trace

SIP-spårningen visar de meddelanden BitVoice skickar och tar emot, live: den första platsen att titta på när en telefon inte kan registrera sig eller ett samtal misslyckas, och vad en leverantörs supportavdelning kommer att be om.

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

Hitta ett meddelande

BitVoice behåller de senaste 2 000 meddelandena i minnet (ingenting skrivs till disk och de försvinner efter en omstart). Skriv in en del av ett nummer, en adress eller ett Call-ID i filtret. Tryck Uppdatera för de senaste.

Välj ett meddelande för att se det i sin helhet och, bredvid det, samtalsflödet: varje meddelande i samma samtal i ordning, mellan telefonen, BitVoice och leverantö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 (kapitel 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 (kapitel 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

Allmän säkerhet: labb-spåret

911-svararprofilen, radiodispatchkonsolen och NG911 Core Services. De är ett labb- och designpartner-spår: byggt och testat mot inspelade fångster, exempeldata och stand-ins, men inte certifierat för live 911 eller radiodispatch och inte heller testat med en live ESInet, P25-system eller CAD. De är utanför menyn tills de aktiveras i Inställningar. Nödsamtal från era egna telefoner (Komma igång) är inte en del av det här spåret: de är en del av varje telefonsystem.

Kapitel 77

911-samtal (911-profilen)

I webbgränssnittet: /psap

BitVoice svarar på 911-samtal som ett PSAP:s samtalshanteringssystem: samtal från nödnummernätverket (ESInet, NENA i3) anländer med uppringarens plats och nätverksdata, och samtalshanteraren ser dem omedelbart, och CAD meddelas när samtalet besvaras.

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

Konfigurera.

  1. På Trunkar (kapitel 7), lägg till trunken från din ESInet-leverantör (eller NG911-kärnans ESRP) och aktivera Från ESInet.
  2. I Samtalsdirigering (kapitel 8), skicka dess samtal till dina call-takers: en kö eller en ringgrupp.
  3. På 911-samtal, ange din myndighets-ID (ett domännamn, som psap.county.example.gov) och vad CAD tar: adressen och porten som dess ALI-lyssnare är på, och dess EIDO-adress.

När ett 911-samtal ringer, visas det på 911-samtal med:

Placeringen kommer i samtalet (genom värde), eller som en referens som BitVoice hämtar med HELD. Ett samtal med en referens har Rebid-placering: BitVoice ber om det igen, för en uppringare som rör sig eller vars första fixering var grov.

När en rebid ändrar placeringen, säger placeringen kontroll vilken som ska visas först, och varför: den nya placeringen som regel; den första när den var en exakt enhetsfixering (GPS, inom 100 m) som var mindre än två minuter gammal och den nya är grovare; och båda när två platser inte överensstämmer mer än deras osäkerhet tillåter, så call-taken frågar uppringaren. Den första placeringen stannar på samtalet på vilket sätt som helst.

När en call-taker svarar, får CAD, var och en för sig så att en CAD som är nere aldrig hindrar samtalet:

ALI-utsläppet i sig är vanligt TCP, eftersom äldre CAD-lyssnare tar emot det, så det kan inte krävas att det ska vara krypterat. När det skickas till en annan dator varnar Hälsa: håll den vägen utanför alla delade nätverk, med en direkt seriekoppling (serial:/dev/…) eller ett VPN eller privat krets till CAD. Ställ in Myndighets-ID också: EIDOR och i3-loggen namnger myndigheten med det, och Hälsa (kapitel 13) varnar medan det är tomt.

Ett 911-samtal avvisas aldrig. Ett röstsamtal från ESInet (eller en CAMA-trunk) vars inkommande väg skulle avvisa det, eftersom vägen hänger upp, ringer en grupp som ingen är i eller inte finns, eller att ingen svarar, ringer varje call-taker istället: varje aktiverad tillägg, och varje telefon som ansluter medan det ringer, tills någon svarar eller uppringaren hänger upp. Ett textmeddelande väntar på den här skärmen på samma sätt. Samtalets Hur det dirigerades säger vad som hände, och Hälsa (kapitel 13) varnar om en sådan väg så att den kan åtgärdas. Endast testringningar (urn:service:test.sos) och samtal som inte är 911-samtal behåller sin vägs avvisning.

Inte heller släppt av en överföring. När en call-taker överför ett 911-samtal och överföringen inte kan ansluta, eftersom tillägget inte har någon telefon ansluten eller ingen svarar på det, går samtalet tillbaka till den call-taken medan de fortfarande är på. Om de redan har lagt på (de flesta skrivbordstelefoner gör det strax efter en blind överföring), ringer varje call-taker istället, tills en svarar. Ett 911-samtal lämnas aldrig över till tilläggets röstbrevlåda eller annan icke-svarandeställe, och dess dirigeringshistorik säger vad som hände. På alla samtal släpper en telefon som hänger upp strax efter att ha begärt en överföring endast sig själv: överföringen fortsätter.

En uppringare som försvann. När ena sidan av ett samtal slutar skicka ljud under en minut (en telefon som förlorade ström eller signal skickar inget upphängningsmeddelande) medan den andra sidan fortfarande skickar, avslutas samtalet med orsaken *uppringarens ljud upphörde* (eller vem det var), i samtalshistoriken och i call.ended-händelsen som CAD hör (cause, endedBy). En sida på håll, faxande, eller som sa att den skickar ingenting (en högtalare för sidoeffekter) avslutas aldrig på det här sättet. Tystnad skickar fortfarande paket, så en uppringare som inte kan tala håller samtalet uppe.

Live transcripts. With Write out 911 calls live on (Settings, AI), each side of an answered 911 call is written out as it is spoken, by the speech-to-text service when one is set (so the audio stays in the building (kapitel 28)), else by the AI service, cut where the speaker pauses, and shown under the call as Live transcript. CAD gets each piece as a call.transcript event: {"call": id, "lines": [{"speaker": "Caller", "side": "caller", "text": "…", "second": 12.4}]}. The calls' audio goes to the AI service while they last, recorded or not. The recording's own transcript still comes when the call ends.

CAD dispatchers by name. A CAD acting through one API token can name the dispatcher behind each request: make the token with Names the person it acts for (Administrators, API tokens) and send X-BitVoice-On-Behalf-Of: <the person's name>. The exposure log, text calls taken, calls ended and the audit log then name that person with the token (*Dana Ruiz via bitdispatcher CAD*). From any other token the header is ignored.

Anroparens video och foton. På ett 911-samtal skapar Skicka anroparen en videolänk en länk som endast öppnas för detta samtal: skickad till anroparen från numret under Skicka länken från, eller uppläst. När det inte kan skickas (inget textnummer är inställt, eller anroparen skickade inget nummer), visar skärmen och API: s problem varför. Anroparen öppnar den i sin telefonwebbläsare (ingen app): Dela livevideo skickar bak-kamerans livevideo (WebRTC, WHIP: RFC 9725), och Skicka foton eller videor skickar det som de redan har tagit, inklusive dashcam- och action-kamerafiler. På samtalet:

Video tas aldrig från samtal: varje livevideo har sina egna portar, den här servern tar emot som mest Livevideor samtidigt av dem (4 om den inte är inställd), var och en som ombeds att hålla sig under Videobitrast, och video som slutar i tio sekunder avslutas. Anroparnas telefoner måste nå den här servern på Länkadress (https) och dess media-portar (UDP). Filer behålls Behåll filer och exponeringsloggen dagar (tom: tills de raderas), förutom för samtal som hålls.

Spela in livevideo. Med Spela in anroparnas livevideo aktiverat sparas anroparens livevideo tillsammans med foton och klipp som en fil per videoavsnitt: samma bilder som telefonen skickade, inte omvandlade, i en IVF-fil (H.264 eller VP8 med varje bilds egen tid), hashad som den skrivs. En bild som skadats av en förlorad paket lämnas ut istället för att sparas skadad, och telefonen ombeds att skicka en fullständig bild för att fortsätta från. Avslöja spelar den (från en kopia i WebM eller MP4 som ffmpeg skapar, samma bilder i en annan container; utan ffmpeg endast den ursprungliga filen laddas ner); Ladda ner originalet ger filen som hashen är av. ffmpeg, VLC och forensiska videoverktyg öppnar originalet.

Till CAD. EIDO (NENA-STA-021) som skickas till CAD namnger varje foto, klipp och inspelning, samt livevideo medan den pågår, som ytterligare data via referens: urlPurpose är caller-photo, caller-video, caller-video-recording eller caller-video-live, och additionalDataByReferenceUrl är filen på /m/{viewToken}/{n} eller livevideo på /whep/{viewToken}. BitVoice skickar CAD EIDO igen när en fil anländer eller livevideo startar eller slutar. Länkarna använder Länkadress (eller den här serverns offentliga adress); utan någon av dem namnger EIDO ingen media. Varje hämtning via dem loggas i exponeringsloggen. Händelseströmmen säger samma sak (GET /api/events: call.media, call.video). BitVoices EIDOs kontrolleras mot NENAs publicerade EIDO-schema.

Länkar som inte finns gissas inte snabbare än inloggningar: en adress som fortsätter att försöka avvisas under en tid. Filer från anropare serveras i en sandbox, aldrig som en sida på den här servern.

Exponering. Varje avslöjande av en livevideo och varje öppnande av ett foto eller klipp räknas under Exponering på 911-samtal: vem, hur ofta, under hur många samtal. Det är för chefer och centrets välbefinnande-program.

Video som en telefon skickar i 911-samtalet själv (SIP-video via ESInet) kan visas på samma sätt: Titta tar den som källa när det inte finns någon länkvideo som sänds.

Samtal med endast ett nummer. Ett 911-samtal som medför ett återuppringningsnummer och ingen plats (från en CAMA-trunk eller ett ESInet-samtal vars plats inte kom) kan sökas: ge Plats-sökning (ALI) adressen till din ALI-databas eller plats-servers HELD-gränssnitt (RFC 5985, begärd av telefonnummer enligt RFC 6155). BitVoice frågar när samtalet anländer, utan att hålla det upp, och platsen visas på samtalet när svaret kommer; samtalet säger när sökningen misslyckades och varför.

Den äldre ALI-länken. Utan en HELD-server kan BitVoice fråga en ALI-kontroller eller ALI-databasens data-länk på det gamla sättet: den skickar en begäran och läser tillbaka posten som text, över nätverket (ALI-länkadress värd:port) eller från en serieport (serial:/dev/ttyUSB0?baud=9600&parity=none, med bits och stop också; en USB-serieadapter fungerar; på Linux och macOS, inte Windows: där använder du en serie-till-nätverkskonverterare och dess adress). Begäran är vad som ska skickas: {ani10} de tio siffrorna i återuppringningsnumret, {ani7} de sista sju, {pos2} positionen,  STX och  ETX ({ani10} när det är tomt). Svaret läses till dess ETX. ALI-layouter skiljer sig mellan leverantörer och stater, så du placerar varje fält: dess rad, dess kolumn och dess längd (0: till slutet av raden), från en utskrift av en ALI-skärm; Gata (hela raden) delar en gatuadress i dess delar, eller placera delarna en efter en. Klistra in ett exempel på posten och Läs exemplet för att se raderna med en kolumneräknare och vad varje fält läser; Fråga frågar länken själv för ett nummer. Postens adress och position blir samtalets plats, dess namn blir anroparens namn, och dess tjänsteklass visas på samtalet. Protokoll som inte är en begäran och ett textsvar (PAM, E2 och andra leverantörers egna) stöds inte: de behöver en gateway.

ALI-överflöde över en serieport. ALI-överflöde till tar också en serieport (serial:/dev/ttyS0?baud=9600), för en CAD som läser överflödet från en seriekabel.

Kartan. Under Karta i 911-inställningarna, ge BitVoice dess kartbilder: en .mbtiles-fil med rasterbilder (PNG, JPEG eller WebP) på den här servern, för en karta som fungerar utan internet (ditt GIS-team, TileMill, gdal2tiles eller en tile-leverantör skapar en för ditt område), eller en tile-server med {z}, {x} och {y} i dess adress (ditt länets, eller en kommersiell: tänk på dess villkor; de offentliga OpenStreetMap-servrarna är inte för detta). På båda sätt hämtar call-takers webbläsare bilder från BitVoice bara: den läser filen eller hämtar från tile-serven och håller de senaste bilderna i minnet. Samma karta visar radio-positioner på radio-konsolen. Vektorbilder stöds inte.

I3-loggen sparar NENA i3-händelserna för varje samtal (samtalsstart, svar, plats, EIDO skickat), en fil per dag. Svarstider visar hur många samtal som besvarades inom ditt mål (NENA: 90% inom 15 sekunder, 95% inom 20), de övergivna, och varje call-takers genomsnitt. En rad per dag (CSV) laddar ner räkningarna som statens 911-kontor vanligtvis ber om (samtal, besvarade, övergivna, inom målet och inom 20 sekunder, genomsnitt och längsta väntetid) för de valda dagarna; En rad per samtal (CSV) listar varje 911-samtal med när det besvarades, av vem, och om det var text. Varje stat har sin egen form: lägg ut din under Rapportlayout. Ett text-samtal som togs på den här skärmen eller genom en CAD räknas under den person som tog det; ett som ingen tog innan anroparen lämnade räknas som övergivet.

Rapportlayout. Ny rapportlayout lägger ut en rapport som din stats eller läns form har det: vad varje rad är (en dag, en vecka, en månad, en timme på dagen, en call-taker, eller en rad för allt), en totalrad, och kolumnerna, i ordning, var och en med sin egen rubrik om formen uttrycker det annorlunda: samtal, besvarade, övergivna (en räkning eller en andel), besvarade inom så många sekunder (en räkning eller en andel; sekunderna är dina, så 10 och 20 för en form och 15 och 40 för en annan), besvarade efter mer än så många sekunder, genomsnitts- och längsta väntetid, den tid inom vilken 90% besvarades, genomsnittlig samtalstid, och text-samtal (TTY, realtids-text, text till 911). En väntetid räknas från samtalets ankomst till en call-takers svar. Välj en layout och datum och Kör den för att läsa den här, Kalkylblad (CSV) för att ladda ner den, eller Sida att skriva ut för en vanlig sida att skriva ut eller spara som PDF. Layouter sparas med inställningarna, så de följer med en säkerhetskopia och in i Git.

TTY-samtal. Döva och hörselskadade anropare kan ringa 911 med en TTY (en texttelefon, Baudot vid 45,45 bit/s). BitVoice lyssnar efter en på varje 911-samtalets röst, från den första stunden: vad anroparen skriver visas på samtalet medan de skriver, under Text, med en paus eller en ny rad som startar en ny rad. Ett tyst samtal kan vara en TTY som väntar på dig: när du svarar, Svara med TTY skickar text även innan någon har kommit. Skriv svaret och tryck Skicka: det skickas till anroparen som TTY-toner (call-takers röst är tyst medan den spelas, eftersom TTY tar varannan tur), i versaler, och TTY-etikett gäller: avsluta varje tur med GA ("gå vidare"), och SK när du skriver under. Tecken som en TTY inte kan visa lämnas ut. Tal, musik och touch-toner tas aldrig för TTY-text: ett tecken räknas bara när varje bit av det är en ren TTY-ton. Samtalet sparas med samtalet i samtalshistoriken och i i3-loggen (en MessageLogEvent per tur). Avmarkera Lyssna efter TTY på 911-samtal i 911-inställningarna för att sluta lyssna.

Vidarekopplingar. Ett 911-samtal som skickas vidare till en annan PSAP behåller sin plats: PIDF-LO följer med samtalet.

Realtidstext (RTT). En telefon som skickar text bredvid sin röst (RFC 4103, som VoLTE-telefoner och NG911-samtal gör) får sin text besvarad av BitVoice själv, eftersom skrivbordstelefoner inte visar någon: varje tecken visas på samtalet när avsändaren skriver det, och ditt svar skickas tillbaka som text. Förlorade paket återställs av den redundans som RTT medför; text som förloras bortom det visas som .

Text till 911. En textkontrollcentral (TCC) skickar texter till PSAP som en session utan röst (MSRP, RFC 4975, över ESInet-trunken). BitVoice besvarar den och den väntar på 911-samtal markerade Text till 911, med de texter som har kommit; ingen telefon ringer. Ta emot denna text gör dig till call-taker (svarstiden räknas då, och CAD får ALI-spillet och EIDO då); svara i rutan under konversationen, och Avsluta konversation när du är klar. TCC som stänger sessionen avslutar den också. Ett SIP-MEDDELANDE som skickas inom ett 911-samtalets dialog tas emot som avsändarens text på samma sätt, och svar skickas tillbaka via SIP-MEDDELANDE. Texter tas emot endast från trunkar markerade Från ESInet.

En TCC som erbjuder sessionen över TLS (TCP/TLS/MSRP, msrps: sökvägar, RFC 4975 avsnitt 14) får den över TLS, med detta servers certifikat (Inställningar › Certifikat; utan ett sådant avslås erbjudandet). TCC:s certifikat måste vara det som dess erbjudande namnger (a=fingerprint, SHA-256); när det inte namnger något, måste det spåras till PSAP Credentialing Agency-roten som anges under Core-tjänster, om någon är inställd. BitVoices svar namnger sitt eget certifikat på samma sätt.

Hela konversationen, oavsett hur den kom, sparas med samtalet i samtalshistoriken och i i3-loggen.

Vad som inte finns här ännu: att skicka en textsession vidare genom NG911-kärnan (ESRP dirigerar röst; en textsession besvaras där den anländer); EIDO-överföringsstandarden eget abonnemang (NENA-STA-024 WebSocket): BitVoice publicerar EIDOs till en adress.

Kapitel 78

Radiodispatchkonsol

I webbgränssnittet: /radio

Dispatchers pratar på radiokanaler från samma hörlur som deras telefonsamtal. BitVoice når radioapparaterna genom radio-över-IP (RoIP)-gatewayer; radionätverket i sig förblir med den som kör 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

Konfiguration. Under Konsolinställningar, välj ett konsolnummer (800, säg) och lägg till varje kanal: dess namn, porten på den här servern som gatewayer skickar kanalens ljud till, och gatewayers adress och port för ljud som skickas ut. På gatewayer: RTP, G.711 µ-law, till den här serverns adress och den porten; aktivera radio på röst (VOX). Varje kanal använder sin port och nästa port, utanför det intervall som telefonsamtal använder.

Ansluta. En dispatcher ringer konsolnumret från sin skrivbords telefon, eller trycker Anslut med webbtelefonen. De hör sedan all kanaltrafik blandad; Lyssna / Tyst på en kanal tar bort den från deras hörlur. Lampan på en kanal lyser medan den tar emot.

Prata. Håll en kanals Håll för att prata-knapp (eller fokusera den och håll ned mellanslagstangenten): din röst skickas till den kanalen, och kanalen visar TX med din tillägg. En dispatcher pratar på en kanal i taget; knappen är grå för de andra medan någon pratar. Ingenting skickas till en kanal medan ingen pratar, så en röstaktiverad radio hålls aldrig på luften.

Koppla. Tryck Koppla på en kanal, sedan Koppla här på en annan: de två hör varandra (en brandkanal och en ömsesidig hjälpkanal, säg) tills du trycker Avkoppla.

P25-talgrupper. En kanal kan också vara en P25-talgrupp, ansluten direkt via ISSI (TIA-102.BACA, gränssnittet mellan P25-under-system; med Skicka CSSI-konsol PTT-ord på, lägger BitVoice till konsol-under-systemets ord till varje begäran). Välj En P25-talgrupp (ISSI), ange talgruppens ID, SIP-adressen och ID för RFSS som är hem för talgruppen, och en port för dess röst. Under Den här konsolen på P25-systemet, ange WACN och system-ID, RFSS-ID som din P25-administratör gav den här konsolen, enhets-ID som dispatchers sänder som, och SIP-porten som ISSI använder här; P25-systemet måste känna till den här servern som en RFSS på den adressen. Kacheln visar P25 medan gruppsamtalet är uppe (P25 ner och orsaken när det inte är det), och enhets-ID för den radio som pratar, i rött med EMERGENCY när det är ett nödsamtal. Håll för att prata ber hem-RFSS om kanalen (Ber om kanalen…); din röst skickas när den beviljar det, och om den vägrar (någon med högre prioritet har det) säger kacheln det. Röst konverteras till och från IMBE, P25-vokodern, i BitVoice.

Krypterade talgrupper. Under Krypteringsnycklar, lägg till varje trafiknyckel som din radiobutik ger dig: ett namn, algoritmen (AES-256, DES-OFB eller trippel DES), nyckel-ID och nyckeln i hex (TIA-102.AAAD). En nyckel visas aldrig igen när den har sparats, inte ens för administratörer, och om fältet lämnas tomt behålls det. Konsolen hör en krypterad överföring när den har nyckeln med samma algoritm och nyckel-ID: panelen visar en lås och algoritmen bredvid den talande enheten. Utan nyckeln är överföringen tyst, spelas aldrig upp som brus och panelen visar Ingen nyckel: tyst. För att sända krypterat på en talgrupp, välj en nyckel under Sänd för den kanalen; panelen visar sedan TX AES-256 (eller den algoritm du valde). En fullständig konfigurationsexport (Inställningar, en administratörs säkerhetskopia) innehåller nycklarna, så håll dessa filer lika säkra som nycklarna.

Privata samtal. Med konsolen på ett P25-system, Ring en radio i din positionsfältet ringer en radio med dess enhets-ID (aktivera Nödsignal för att ringa det som en nödsignal). Samtalet blir en egen panel, Privat samtal: enhet 197, med Håll för att tala som vilken kanal som helst och Lägg på. Radioapparater kan också ringa konsolen, på det enhets-ID som dispatchrar sänder som: samtalet visas som en panel markerad inringd (i rött med NÖDSIGNAL när radioapparaten ringde som en nödsignal), varje dispatchrar hör det och det försvinner när antingen sidan lägger på. Under Privata samtal i konsolens P25-inställningar, ange SIP-adressen och ID för RFSS som är hem för radioapparaterna (tomt använder den första talgruppens hem) och, om privata samtal ska krypteras, nyckeln som ska skickas med.

Varningsljud. Skicka ett varningsljud... på en kanal skickar ett av: Varningsljud 1, en konstant ton på 1000 Hz i 3 sekunder; Varningsljud 2, en varvling mellan 1000 och 1500 Hz; Varningsljud 3, 1000 Hz-pulser; eller ett kort Pip. Ljudet håller kanalen medan det spelas (panelen visar ljud och din tillägg), varje dispatchrar som övervakar kanalen hör det gå ut och på en P25-talgrupp skickas det så snart hem-RFSS beviljar kanalen.

Emergencies. When a radio transmits as an emergency (its emergency button), its tile turns red with EMERGENCY and the unit ID, the server log notes it, and CAD is told at once (below). The emergency stays raised on every console after the radio stops talking, until a dispatcher presses Acknowledge: the tile then says who acknowledged it and when, and CAD gets a radio.emergency.ack event. Acknowledging names the unit shown: if another unit's emergency replaced it a moment before, BitVoice refuses and the tile shows the new one, so a second emergency is never silenced by mistake. CAD acknowledging through the API can do the same: POST /api/radio/channels/{id}/ack with {"unit": "bee07.1d5.00044d"} (or the radio ID, "1101") answers 409 when the channel's emergency is now another unit's; without a body it acknowledges whatever the channel holds.

Simulval. För att säga en sak på flera kanaler samtidigt, markera Välj på varje kanal, sedan håll Tala på N kanaler i fältet ovanför panelerna. Det är antingen allt eller ingenting: om en annan dispatchrar talar på en av dem, är ingen nyckel och du meddelas vilken.

Radiopositioner. Radioapparater rapporterar var de befinner sig över radiosystemets datasida, inte talssidan som konsolen ansluter till: P25-placerings tjänst, Motorolas LRRP eller en leverantörs egen, som samlas in av radioverkstadens data eller AVL-gateway. Se till att gatewayen (eller ett litet skript bredvid den) skickar varje rapport till BitVoice med en API-token: POST /api/radio/locations med {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, eller en lista med upp till 500 (hastighet i km/h, riktning i grader, noggrannhet i meter; alla tre och tiden är valfria). Radiopositioner på konsolen listar sedan varje radios senaste position, med dess namn, och CAD får var och en som en radio.location-händelse. BitVoice avkodar inte LRRP eller P25-placerings tjänsten själv.

Radionamn. Under Radionamn, namnge radioapparater med deras P25-enhets-ID (1205 är "Engine 5", säg): panelen visar namnet bredvid enheten medan den talar, och radio-loggen och CAD-händelserna innehåller det.

Radio-logg och inspelning. Aktivera Spela in varje överföring under Inspelning och CAD: varje överföring på varje kanal, som hörs eller skickas, sparas som en inspelning med en rad i Radio-loggen: när, kanalen, vem (radioapparatens enhet, eller dispatchrarens tillägg), hur länge och om det var en nödsituation, ett varningsljud, krypterat eller ett privat samtal. En mottagen överföring börjar med den första talen och slutar 1,5 sekunder efter det sista ordet. Hitta en enhet, dispatchrar eller kanal med sökrutan och tryck på Spela för att lyssna. Inspelningar sparas så länge som samtalinspelningar (Inställningar, Inspelning).

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.

Inte här än: P25-fas 2 (TDMA)-röst i sin egen halvrate-vokoder. Ett fas 2-system fungerar med konsolen när dess ISSI-samtalgrupper bär fullrate-röst (fas 1) eller dess omkodare konverterar dem, vilket är vanligt: fråga din P25-administratör. En samtalsgrupp vars röst anländer i block som denna konsol inte avkodar (halvrate-röst skickad utan omkodning, troligen) visar Tyst här på dess kakel medan en radio talar, så att ingen tar tystnaden för en tyst kanal. Avkodning behöver två saker som BitVoice inte har: halvrate-vokodern (AMBE+2, patenterad till 2028: en licens från dess ägare eller en licensierad hårdvaruvokoderchip) och ISSI:s halvrate-röstblockformat (TIA-102.BACA-B, sålt av TIA, inte offentligt).

Kapitel 79

NG911 Core-tjänster (ECRF, ESRP, LVF, BCF, LIS, loggning)

I webbgränssnittet: /core

För en statlig eller regional 911-myndighet som kör sin egen NG911-kärna: BitVoice besvarar LoST som ECRF och dirigerar varje 911-samtal som ESRP till PSAP som betjänar avsändaren.

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

Serviceområden. Exportera dina gränser från GIS som GeoJSON-polygoner (PSAP-gränser för urn:service:sos; polis-, brand- eller EMS-områden för urn:service:sos.police och de andra) och ladda upp dem på Core-tjänster. Ett polygons name, uri och number-egenskaper läses; ange en standard-PSAP-URI för de som inte har någon. Redigera ett område för att lägga till städer eller län som det betjänar, för avsändare vars plats är en civic-adress endast. Testa en plats visar vilket område som svarar på en position eller en stad, som en LoST-fråga skulle.

ECRF. Slå på Besvara LoST-frågor och lista de adresser som får fråga (din ESInet): andra element skickar findService till /lost (RFC 5222) och får PSAP:s URI. En specifik tjänst (sos.police) besvaras från dess egna områden först, sedan från sos. En plats som ingen av dina områden täcker kan gå till Skogsguiden (RFC 5582: den nationella katalogen över ECRF): en rekursiv fråga ställs där på den som frågar, och svaret returneras (båda servrarna listas i svarets sökväg), och alla andra frågor dirigeras till den, och en fråga som redan har passerat genom denna ECRF avslås som en loop.

ESRP. Lista PSAP: var och en av dess URI (som områdena namnger den), trunken som når den och dess överflödes-PSAP, och välj standard-PSAP. Skicka sedan ESInets inkommande 911-samtal till ESRP i Samtaldirigering (kapitel 8). Varje samtal går till PSAP för dess plats (från detta servers områden, eller en yttre ECRF via LoST), med dess plats och den tjänst den begärde medförd; när den PSAP inte tar emot det, till dess överflödes-PSAP; utan plats, eller från en plats som ingen områden täcker, till standard-PSAP. Varje beslut är i i3-loggen på 911-samtal (kapitel 77).

Policyregler. När ECRF har valt en PSAP kontrolleras reglerna under Policyregler i ordning, och den första vars villkor alla uppfylls bestämmer: skicka samtalet till en annan PSAP, eller avslå det som upptaget. En regel kan titta på tjänsten (endast brand-samtal, till exempel), PSAP som ECRF valde, en schemaläggning (medan nattskiftets center är stängt), samtal utan plats, samtal som BCF markerat som misstänkta, och trunken som samtalet kom in på. Varje beslut är i i3-loggen som en RouteLogEvent som namnger regeln.

Gränskontroll (BCF). Med Kontrollera samtal från ESInet aktiverat, kontrolleras varje samtal från en ESInet-trunk först: adresser under Alltid vägra avvisas, och så är en adress som startar fler samtal per minut, eller håller fler samtal samtidigt, än du tillåter (en telefoni-nekande-tjänst-attack skickar flöden av samtal från ett fåtal källor). Avvisade samtal får 503 med Retry-After. Aktivera Låt samtalet gå igenom markerat som misstänkt för att skicka sådana samtal vidare och låta en principregel besluta (till en central som granskar dem, eller avvisar); en riktig uppringare i en flod går då inte förlorad. Gränskontroll: senaste listar vad som avvisades eller markerades. Kontrollera STIR/SHAKEN-signaturer kontrollerar den signerade uppringar-ID:n (Identity-huvudet) för varje samtal som bär en, mot de STI-rotar som anges under Anropsskärmning i Inställningar: ett samtal vars signatur misslyckas går igenom markerat som misstänkt, för en principregel att skicka någon annanstans, och listas i BCF-loggen; ett 911-samtal avvisas aldrig för det, och osignerade samtal (de flesta idag) lämnas ensamma. Varje samtal lämnar BitVoice som en ny begäran på egen hand (BitVoice är en ombudsmottagare), som bara bär de rubriker och brödtexter som BitVoice förstår och vidarebefordrar: platsen, Ytterligare data och sessionen. Inspektera media kontrollerar varje RTP-paket i ett ESInet-samtal innan det används eller vidarebefordras: paket från en adress som inte är den som samtalets SDP angav, med en payload-typ som erbjudandet inte namngav, med huvudlängder (CSRC, utvidgning, utfyllnad) som inte passar paketet, större än Största paket (1 500 byte när tomt), eller förbi Paket per sekund (150 när tomt; G.711 vid 20 ms skickar 50) släpps och räknas. Det första av varje slag, sedan det 10:e, 100:e och så vidare, hamnar i Gränskontroll: senaste (som *media släppt*) och samtalets anteckningar. Samtalet avslutas aldrig på grund av dess media: uppringaren behåller de bra paketen. Samtal från CAMA-trunkar kommer från det lokala kortprogrammet och inspekteras inte.

Adressvalidering (LVF). Ladda upp dina 911 GIS-adressdata som GeoJSON, i NENA GIS-datamodellen (NENA-STA-006): vägcentrumlinjer med FromAddr_L, ToAddr_L, Parity_L, IncMuni_L och resten, och plats-/strukturadresspunkter med Add_Number, St_Name, Inc_Muni. En LoST-fråga med validateLocation="true" får sedan adressens giltiga, ogiltiga och okontrollerade delar i svaret (RFC 5222), så att operatörer och platsservrar kan korrigera en adress innan ett 911-samtal använder den. Kontrollera en adress gör samma sak här: en exakt adresspunkt är den bästa matchningen, sedan en gatusegment vars intervall på högersidan av vägen innehåller numret (udda och jämna sidor respekteras); stavningsvarianter som Street och St, North och N behandlas lika.

I3-loggnings tjänst. Slå på Kör en i3-loggnings tjänst: de andra elementen i din kärna (ESRPar, BCFer, PSAPer) skickar sina logghändelser (NENA-STA-010), var och en signerad som en JWS med elementets certifikat i dess x5c-huvud, via POST till /i3log/LogEvents från de tillåtna adresserna. Var och en kommer som en JWS i den platta JSON-formen (signerad, eller osignerad med algoritm none, som en loggnings tjänst kan ta: markerad som inte spårad till PCA), kontrolleras och sparas, och svaret är dess logghändelse-ID. Läs tillbaka med GET /i3log/LogEvents/{logEventId}; lista med GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); hitta ID:n för ett samtal eller en incident med /i3log/LogEventIds, /CallIds, /IncidentIds och /AgencyIds; och läs ett samtals textkonversation med /i3log/Conversations?callId=. GET /i3log/Versions säger vad denna tjänst talar. Mottagna logghändelser listar en dags händelser med vem som signerade var och en. Varje svar kontrolleras mot NENAs publicerade OpenAPI-definition av tjänsten; tjänsten har ännu inte testats med en annan leverantörs element.

PSAP Credentialing Agency. Klistra in PCA:s rotcertifikat under PSAP Credentialing Agency-rotar: ett signerat logghändelse tas då endast när dess signatärs certifikat är kedjat till en av dem (och inte har gått ut), och visas med PCA. Utan dem kontrolleras endast signeringen, och händelsen visas som inte spårad till PCA.

Platsposter (LIS). Aktivera Svara på platsförfrågningar (LIS) och ladda upp en kalkylblad (CSV) med platsposter: en rubrikrad och på varje rad en av en nummer (ALI-data, exporterad), ett nätverk (ett adressintervall som t.ex. 10.20.3.0/24, eller en adress: en byggnad, en våning, ett VLAN, ett Wi-Fi-nätverk) eller en mac-adress (en enhet: en skrivbords telefon, en väggkontakts switch-port), sedan adressen som hno, rd, sts, unit, floor (eller flr), a3 (stad), a1 (stat), pc och land, med lat, lon och radius där det är känt (andra namn, som t.ex. telefon, gata, postnummer, nätverk och ip, förstås också). PSAP:er, äldre nätverksgränssnitt och telefoner frågar sedan /held (HELD, RFC 5985) från de tillåtna adresserna och får en PIDF-LO. En förfrågan namnger sin enhet med telefonnummer, IP-adress eller MAC-adress (RFC 6155); en förfrågan som inte namnger någon besvaras för den adress den kom från, som en LIS på ett kontors- eller campusnätverk. En adress lokaliseras av det smalaste nätverk som innehåller den, så en vånings /24 vinner över campus /16. En enhet utan post får HELD:s locationUnknown; en identitet av annan typ (en NAI, en port) får notLocatable. En BitVoice PSAP pekar sin Platsuppslag (ALI) hit. Sök upp ett nummer, adress eller MAC-adress kontrollerar en post och säger vilket nätverk den kom från. Ett nummer, nätverk eller MAC-adress som listas igen ersätter sin gamla post; Ersätt varje post börjar om från början. Endast de tillåtna adresserna besvaras: en LIS som besvarar för vilken adress den än frågas om måste inte vara öppen för alla.

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:

Testa samtal på en PSAP. En BitVoice PSAP svarar på ett testsamtal från ESInet (urn:service:test.sos, NENA-STA-010.3 avsnitt 9, RFC 6881) på egen hand: dess svar säger PSAP-namn, tjänst och plats som samtalet kom ifrån, de tre första ljudpaketen skickas tillbaka och det kopplar ner. Ett andra test från samma plats inom två minuter avvisas (486), liksom ett femte samtidigt. En ESRP skickar vidare ett testsamtal som ett riktigt samtal, fortfarande märkt som ett test. Stäng av Svara på test-samtal på sidan 911-samtal för att avvisa dem (404).

JWS-algoritmer: NENA-STA-010.3 begär EdDSA med Ed448. Gos standardbibliotek, som BitVoice använder för varje kryptografisk steg, har Ed25519 men inte Ed448, så EdDSA-signaturer kontrolleras med Ed25519-nycklar, och ECDSA- och RSA-signaturer accepteras också; ett Ed448-certifikat avvisas.

Menade du. En ogiltig adress får upp till fem förslag från samma data, bäst först, var och en som säger varför: en gata ett eller två bokstäver bort (ett utbytt par bokstäver räknas som ett), samma gata i nästa stad, eller det närmaste numret gatan har, på samma sida när det är möjligt (jämn nummer förblir jämnt). Använd fyller i ett förslag. En position med adressen. Ge en latitud och longitud (och positionens radie, när den är känd) med adressen: positionen kontrolleras mot adressens egen adresspunkt, med tillåtelse för dess radie och 100 m mer (storleken på en tomt och GIS-fel). Svaret ger avståndet och om de två stämmer överens, och när de inte gör det, den närmaste adresspunkten till positionen. En adress som endast är känd från vägcentrumlinjer har ingen punkt att kontrollera mot, och svaret säger det. LoSTs validateLocation har ingen plats för någon av dem, så operatörer som ber om det via LoST får endast valideringen.