BitVoice handbok
Innehåll
- Del 1. Komma igång
- Del 2. Vart samtal går
- 16. Samtalflöde
- 17. Ringgrupper
- 18. Köer
- 19. Utgående uppringare
- 20. Ljud: prompter, språk och hållmusik
- 21. Menyer (automatisk växel)
- 22. Namndirectory
- 23. Inringning (DISA)
- 24. Röstbottar (AudioSocket)
- 25. Dag/natt-omkopplare
- 26. Tidtabeller
- 27. Skript (JavaScript och Lua)
- 28. AI-receptionist, röstbrevlådetrionage och fråga
- 29. Meddelandelåda
- 30. Återkopplingar
- 31. Samtalslänkar och webbsamtal
- Del 3. Vardagssamtal
- 32. Funktioner, vidarebefordring och snabbval
- 33. Personalportalen
- 34. Konferensrum
- 35. Paging och högtalare
- 36. Hot desking
- 37. Hotell och väckningssamtal
- 38. Kontakter på varje telefon
- 39. Kalendrar och stör ej
- 40. Mobilappar
- 41. Videotal
- 42. Fax: skicka och ta emot, faxmaskiner och analoga telefoner
- 43. Inkorg: webbchatt, WhatsApp och Messenger
- 44. Företagstextning (SMS)
- 45. Överföringsinformation
- Del 4. Kunder och insikt
- 46. Pågående samtal
- 47. Samtalshistorik
- 48. Kundtidslinje
- 49. CRM: uppringarkort och samtalshistorik
- 50. Samtalinsikt för chefer
- 51. Samtalinspelning och kortbetalningar
- 52. Spelainsamtycke
- 53. Samtalskvalitet
- 54. Kostnader och budgetar
- 55. Anropar-ID-reputation och varumärkesanrop
- 56. Spamskydd och STIR/SHAKEN
- Del 5. Köra BitVoice
- 57. Administratörer
- 58. Enkel inloggning
- 59. Företagskatalog (Active Directory och LDAP)
- 60. Säkerhet
- 61. Ändringar, säkerhetskopior och import
- 62. Uppdateringar
- 63. Flera servrar som ett telefonisystem
- 64. Där data lagras (SQLite eller PostgreSQL)
- 65. Värd för andra organisationer
- 66. Kodningar och ljud
- 67. Microsoft Teams (Direct Routing)
- 68. Importera
- 69. Konfiguration som kod
- 70. Asterisk-kompatibilitet (AMI, ARI och AGI)
- 71. AI-assistent (MCP)
- 72. Arkiv
- 73. Rättsliga kvarhållningar
- 74. Mätvärden: Prometheus, OpenTelemetry, Grafana, SNMP och samtalshistorik
- 75. Samtalsgenerator
- 76. SIP-spårning
- Del 6. Allmän säkerhet: labb-spåret
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.
Komma igång
/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.
Vad du behöver
- En dator att köra det på: en liten kontorsserver, en virtuell maskin, en molninstans eller för en första titt din egen bärbara dator. Linux, macOS och Windows fungerar alla. En Raspberry Pi 4 kör en liten kontorsmiljö.
- Telefoner: skrivbordstelefoner från Yealink, Poly, Grandstream eller Snom konfigureras automatiskt; alla andra SIP-telefoner eller mjukvarutelefoner fungerar med sina egna inställningar; och varje webbläsare är en telefon också.
- En trunk (ett konto hos ett telefombolag) för att ringa externa nummer och bli uppringd. Du kan börja utan en: tillägg ringer varandra och eko-testet.
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
- Tillägg: ett per person eller skrivbord. Var och en har ett nummer och ett SIP-lösenord. Öppna Tillägg (kapitel 3)
- Telefoner: anslut en skrivbords telefon, mjukvara eller webbtelefon till varje tillägg. Öppna Telefoner (kapitel 4)
- Trunk: ditt telefonföretags konto, så att du kan ringa ut och bli uppringd. Öppna Trunkar (kapitel 7)
- 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)
- 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:
- Linux:
/usr/local/bin/bitvoice, enbitvoice-systemanvändare, data i/var/lib/bitvoice, systemd-tjänstenbitvoicemed webbgränssnittet på port 443. När ufw eller firewalld är aktiverat, öppnar den port 443, SIP (5060, 5061) och ljudportarna för samtal (10000 till 20000 UDP). Den skriver ut adressen för att öppna och installationskoden som guiden begär från en annan dator. - macOS: BitVoice i din Applikationsmapp (
~/Applications/BitVoice.app), startar när du loggar in, webbgränssnittet på port 8443, data i~/Library/Application Support/BitVoice(tillgänglig endast för dig) och loggar i~/Library/Logs/BitVoice(bitvoice.log, hålls under 10 MB). Öppna BitVoice från Launchpad eller Spotlight för att nå webbgränssnittet; när det var stoppat, startar det igen. Det körs undercaffeinate, så att Macen inte somnar medan BitVoice körs: en sovande Mac svarar inte på samtal, och även dess korta underhållssömn stoppar allt i flera sekunder. Skärmen kan fortfarande stängas av. Kör manuellt, användcaffeinate -i -s ./bitvoiceför samma. För en Mac som svarar på samtal medan ingen är inloggad, installera medsudo(curl -fsSL https://raw.githubusercontent.com/BioDream-LLC/bitvoice/main/deploy/install.sh | sudo sh): då är BitVoice i/Applications, startar med Macen, körs som en dold användare (_bitvoice), serverar webbgränssnittet på port 443, lagrar data i/Library/Application Support/BitVoiceoch loggar i/Library/Logs/BitVoice, och Macens brandvägg, när den är aktiverad, tillåter den att acceptera anslutningar. En av de två per Mac: installatörerna vägrar den andra medan en är där. När Macens brandvägg är aktiverad, frågar en BitVoice installerad för dig om den får acceptera inkommande anslutningar: tillåt det, så att telefoner kan ansluta. Om något annat använder porten, namnger installatörerna det och stoppar (välj en annan medBITVOICE_HTTPS=:8444).sh install.sh --uninstall(medsudoför Macens egen) tar bort den och behåller data;--purgetar bort data och loggar också. Testat på macOS 26 (Apple-silikon), installerad för en person: installerad, signatur kontrollerad med Macens egen ssh-keygen, en andra start på samma data vägrade, tillbaka efter att programmet dödades, startade igen från appen, uppgraderad på plats, ett manipulerat program vägrade, en port i användning vägrade, avinstallerad och behållit data, och rensad med ingenting kvar. Installationen för hela Macen (sudo) är testad på varje ändring på GitHub:s macOS-maskiner (Apple-silikon): kör som_bitvoicepå port 443, en användarinstallation bredvid den vägrade, tillbaka efter att programmet dödades, uppgraderad, rensad med ingenting kvar (den dolda användaren också). Intel Macar är inte testade ännu. - Windows: som administratör,
C:\Program Files\BitVoice, startar med Windows, data iC:\ProgramData\BitVoice, och en brandväggsregel för privata och domännätverk; annars för dig ensam, startar när du loggar in. Det fungerar i Windows PowerShell 5.1 (vad Windows Server har) och i PowerShell 7, och i 5.1 startad från insidan av 7. BitVoice skriver sin logg tillbitvoice.logi datafoldern (hålls under 10 MB, den äldre delen ibitvoice.log.1), och installatörerna skriver ut installationskoden som guiden begär från en annan dator. Windows kallar ett nytt Wi-Fi- eller nätverk Offentligt tills det sägs annat, och brandväggsregeln tillåter ingenting där: för ett hem- eller kontorsnätverk säger installatörerna hur man gör det Privat (Inställningar, Nätverk och internet, nätverkets Egenskaper); för en molntjänst skriver den ut regeln att lägga till (öppna portarna i leverantörens brandvägg också). Installerad som administratör, är datafoldern läsbar endast av administratörer (den innehåller databasen och nycklarna), och Start-menyens BitVoice öppnar webbgränssnittet; installerad för dig, startar Start-menyens BitVoice BitVoice, eller öppnar det när det redan körs. Antingen väg är det i Inställningar, Appar, Installerade appar, som tar bort det och frågar om att ta bort dess data också. Testat på Windows 11 (som administratör och inte) och på Windows Server 2022 på Amazon EC2: installerad, nådd från utsidan, körande igen efter en omstart. - Testat på: Ubuntu 24.04 och 20.04, Debian 12 och Fedora 42 (var och en med systemd): installerad, signatur kontrollerad, en andra start på samma data vägrade, tillbaka efter att programmet dödades, uppgraderad på plats, ett manipulerat program vägrade, avinstallerad och behållit data, och rensad med ingenting kvar.
- Linux på en molntjänst: adressen den skriver ut är maskinens egen, privata; installatörerna säger det. Öppna servern med dess offentliga adress eller namn, med 443, SIP och ljudportarna öppna i leverantörens brandvägg.
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.
| System | Hur man startar det | Var dess data är |
|---|---|---|
| Linux | ./bitvoice (eller systemd-tjänsten i versionen) | ~/.config/BitVoice |
| macOS | ./bitvoice | ~/Library/Application Support/BitVoice |
| Windows | dubbelklicka 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
| Port | Vad för |
|---|---|
| 5060 UDP och TCP | SIP: telefoner och trunkar |
| 5061 TCP | SIP över TLS (krypterad signalering) |
| 4569 UDP | IAX2-trunkar, endast en gång en är konfigurerad |
| 1720 TCP | H.323-trunkar, endast en gång en är konfigurerad |
| 2000 TCP | Skinny (SCCP)-telefoner, endast när de är aktiverade |
| 2727 UDP | MGCP-gatewayer, endast när de är aktiverade |
| 10000–20000 UDP | ljudet i samtal (RTP), inställt i Inställningar |
| 8443 TCP | den 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
- Tryck ⌘K (Ctrl+K) var som helst för att hoppa till en skärm, eller skriv ett tilläggs namn eller nummer för att öppna det.
- På en telefon, finns menyn bakom ☰-knappen uppe till vänster (och sök bredvid den, uppe till höger); att välja en sida stänger den igen.
- Varje skärm har en Hjälp-länk uppe till höger som öppnar dess kapitel i den här handboken.
- Ändringar sparar varje version av konfigurationen: du kan se vad som ändrades och ångra det.
- Tre teman (Midnight, Dark och Light) finns längst ner i menyn.
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åde | Mognad | Vad det vilar på |
|---|---|---|
| SIP-trunkar: registrering, samtal in och ut, anroparens ID, upptagen, tangenter (RFC 4733) | Fälttestad | en 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 SIP | Fälttestad | Asterisk som skrivbordstelefon över internet. Riktiga Yealink-, Poly- eller Grandstream-telefoner har inte testats ännu |
| Webbläsartelefon (WebRTC) | Fälttestad | från utsidan till EC2; Chromium-webbläsartester med ljud båda vägarna |
| Två servrar, en PostgreSQL, redundans | Fälttestad | kill -9 och planerad stopp på EC2: samtalet fortsätter, leverantörsraden flyttas |
| En-kommandos-installation | Fälttestad | Ubuntu 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 |
| Kapacitet | Fälttestad | 2 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älttestad | en riktig FreePBX 17,0,33-säkerhetskopia (70 MB) importerad i sin helhet; andra från FreePBX egna format |
| AI-transkriptioner, sammanfattningar, receptionist | Fälttestad | en riktig modell via OpenRouter |
| Fakta och sammanfattningar utan språkmodell | Programtestad | uppfunna 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 Linux | whisper-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 Manager | Fälttestad | riktig AWS, vår egen SigV4 |
| SNMP-övervakning och fällor | Fälttestad | net-snmps snmpwalk och snmptrapd |
| Let's Encrypt | Fälttestad | utfärdar och förnyar det offentliga demo-certifikatet |
| Maskinbilder (AWS) och konfiguration som kod | Fälttestad | en 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-trunkar | Kontrollerad mot en referens | Asterisk 23 |
| Fullständig ICE bakom NAT (STUN- och TURN-klient) | Kontrollerad mot en referens | Chromes 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 referens | Chrome 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 referens | Asterisk 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 referens | OpenLDAP 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 referens | varje å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ärmvisa | Kontrollerad mot en referens | Tre 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 referens | varje 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 MCP | Kontrollerad mot en referens | det 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) | Programtestad | mot 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åk | Programtestad | varje 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-trunkar | Kontrollerad mot en referens | H323Plus 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 WebSocket | Kontrollerad mot en referens | JsSIP och SIP.js |
| Kodekar: GSM, G,726, iLBC, MP3-hållmusik | Kontrollerad mot en referens | ffmpeg, RFC 3951-referensprogrammet och minimp3, exempel för exempel |
| Kodekar: G,711, G,722, G,729, Opus, Speex | Kontrollerad mot en referens | G,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-WB | Kontrollerad mot en referens, med en känd lucka | AMR-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, Codec2 | Programtestad | egna 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/E1 | Kontrollerad mot en referens | libpri (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&M | Kontrollerad mot en referens | OpenR2; 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 referens | libss7 (Asterisks chan_dahdi-bibliotek), ITU och ANSI. Inget riktigt operatörsnät testat |
| Fax (T,30, T,38) | Fälttestad | en 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, CyberData | Programtestad | leverantörernas dokumenterade format; inte på riktiga telefoner |
| Skinny (SCCP)-telefoner, MGCP-gateways | Kontrollerad mot en referens | Skinny: 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 Routing | Programtestad | mot 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 referens | varje 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, webbchatt | Kontrollerad 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 Vault | Kontrollerad mot en referens | EspoCRM (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örslag | Programtestad | BitVoices 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-appar | Fä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 video | Laboratorietestad | NENAs 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 erbjuden | patenterad till 2028 |
| Ed448-signaturer (NENA) | Ej erbjuden | inte i Golangs standardbibliotek, och BitVoice skriver ingen egen kryptografi; Ed25519 används |
| SS7-signalingöverföring (STP), SCCP och TCAP | Kontrollerad mot en referens | OsmoSTP 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) | Programtestad | varje 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 E2 | Ej erbjuden | PAM ä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 |
Tillägg
/extensionsEtt 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.
Lägga till ett tillägg
- Ö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.
- Ange personens namn (visas på andra telefoner när de ringer) och e-post (för röstbrevlåda via e-post).
- Fyll i 911-platsen: platsen, våningen och rummet. Den skickas med nödsamtal.
- Välj vad som händer Om ingen svarar: röstbrevlåda som standard, eller ett annat tillägg, en grupp eller ett menyval.
- Spara. Tillägget kan logga in omedelbart.
Fälten
| Fält | Vad det gör |
|---|---|
| Nummer | 2 till 8 siffror; inget annat tillägg, grupp, kö eller funktionssignum får ha det |
| SIP-lösenord | vad telefonen loggar in med; minst 12 tecken; Generera skapar ett nytt |
| Ringa i | sekunder innan Om ingen svarar inträffar (25 som standard) |
| Yttre samtals-ID | det nummer som visas på utgående samtal; tomt använder trunkens |
| Kan ringa yttre nummer | avstängt håller telefonen till interna samtal och nödnummer |
| Spela in samtal | när Inställningar spelar in endast valda tillägg |
| Hot desk | en delad telefon som blir vem som loggar in på den |
| Kryptera samtal till den här telefonen | mediekryptering (SRTP); använd det med TLS så att nycklarna förblir privata |
| Avdelning | grupperar 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:
- Följ-mig ringer fler nummer när telefonerna här inte svarar: en mobil, en annan skrivbords telefon. De ringer en efter en, eller alla samtidigt, under sin egen ringsignalstid. Med Yttre nummer tryck 1 för att ta samtalet aktiverat, trycker den som svarar på en mobil först 1, så att mobilens egen röstbrevlåda aldrig tar samtalet. Se Funktioner (kapitel 32).
- Plocka-grupp: vem som helst i samma grupp svarar på detta tilläggs ringsignaler genom att slå
*8. - Tillåt högtalartelefon:
*80och detta nummer svarar på högtalaren av sig själv. Stäng av det för personer som aldrig vill ha det. - Egen snabbval: korta koder för denna person endast, som slås efter
*0.
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
- Telefon: en skrivbords telefon, mjukvara eller app.
- Dörrstation: en intercom vid en dörr. Den som svarar trycker på knappkoden eller Öppna dörr på Live-samtal. Med en dörrkontrolladress anropar BitVoice den adressen (2N, Axis, Akuvox, reläkort); utan en sådan skickas koden till stationen, som öppnar dörren av sig själv.
- Högtalare: samtal till den svaras omedelbart och hörs via högtalaren.
- Analog adapterport: en gammal telefon, fax eller larmpanel på en adapter. Samtal använder endast G.711, som faxar behöver.
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.
Ansluta telefoner
/phonesVilken 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.
Automatisk konfiguration (provisionering)
- 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.
- Välj tillverkaren: Yealink, Poly, Grandstream (inklusive HT-analog adaptrar), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo eller CyberData.
- 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.
- 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.
| Tillverkare | Testade modeller | Vad den får |
|---|---|---|
| Yealink | T3x, T4x, T5x | konto, BLF-knappar, tid, codec |
| Poly | VVX, Edge E | samma, i Polys eget format |
| Grandstream | GRP, GXP, HT802/814 | konto per port på adaptrar |
| Snom | D7xx | konto, 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):
| Tillverkare | Modeller | Filen enheten ber om |
|---|---|---|
| Fanvil | X och V-serien | dess MAC-adress .cfg |
| Cisco | 6800, 7800, 8800 multiplatform (3PCC), SPA-adapter | dess MAC-adress .xml (företagsfirmware behöver multiplatformfirmware först) |
| Mitel (Aastra) | 6800, 6900 SIP | dess MAC-adress .cfg, i versaler |
| Sangoma | S-serien | Fanvil-formatfilen |
| Algo | högtalare för utrop, signaler, adapter | algop och dess MAC-adress .conf |
| CyberData | högtalare, intercom, utropsadapter | dess 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):
- Den erbjuder webbläsarna sina egna adresser, sin offentliga adress som STUN-servrar ser den, och relayer på TURN-servrar den loggar in på (UDP; ett användarnamn och lösenord vardera), och kontrollerar varje adresspar med webbläsaren, som webbläsaren gör.
- Relay varje samtal via TURN skickar all webbläsarmedia via TURN-servrarna, för nätverk som kräver det.
- Hitta mina adresser ber servrarna som ett samtal skulle och listar vad BitVoice kommer att erbjuda: sina egna adresser, den offentliga som ses via STUN (en STUN-server som inte svarar anges som sådan), och dess relayer.
- Det fungerar för webbläsartelefonen, samtalsslänkar, eko-testet och SIP-över-WebSocket-softphones, i vilken roll som helst: BitVoice svarar på en webbläsares erbjudande, och erbjuder en softphone som den ringer. Webbläsare som döljer sina adresser bakom mDNS-namn (
name.local) löses på det lokala nätverket, och webbläsarens adress som webbservern såg den släpps igenom relayer från början. - Avstängt som standard; det lägger till en stund till varje samtal medan servrarna svarar (högst en och en halv sekund). Anroparens video använder ICE-lite oavsett.
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).
Smala telefoner och MGCP-gatewayer
/desk-phonesTelefoner och gatewayer som inte talar SIP kan fortfarande användas. Smala telefoner och MGCP-gatewayer (under Samtal) tar två äldre protokoll:
- Smal (SCCP): Cisco-skrivbords telefoner som kör SCCP-firmware (79xx, 69xx, 89xx). Lägg till varje telefon med dess MAC-adress och välj dess tillägg; aktivera Acceptera smala telefoner och peka på telefonen mot BitVoice (TCP-port 2000) i dess TFTP-inställningsfil eller meny.
- MGCP (RFC 3435): gatewayer vars portar BitVoice driver en efter en, såsom analoga telefontelefoner och linjekort. Lägg till gatewayer med det domännamn den använder i dess slutpunktsnamn (aaln/1@namn), dess adress och tillägget för varje linje; ställ in gatewayerns samtalsagent till BitVoice (UDP-port 2727).
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
- Skinny: registrering, linjen och dess nummer på displayen, uppringningston, uppringning (numret kommer efter en paus eller #, eller på en gång från telefonens nummerknappar när den lyfts efter uppringning), ringning med caller-id, svar och avslutande av samtal med handsets, högtalare eller mjukknappar (NewCall, Redial, Answer, EndCall), upptagna och feltoner.
- MGCP: uppringningston, siffror som samlas in av gatewayen med en sifferskarta, ringning med caller-id (ringas utan det när gatewayen vägrar caller-id), ringning, upptagna och feltoner, och ljudanslutningen (CRCX, DLCX). En gateway som startas om (RSIP) får sina portar konfigurerade igen.
- Ljud är G.711 µ-law på båda; BitVoice konverterar till vad den andra parten använder.
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
- Skinny: två telefoner byggda från en separat Skinny-implementering (den öppen källkods mwicat/sccp-biblioteket) registrerar sig, ringer varandra, svarar och lägger på; en olistad telefon nekas. Wiresharks Skinny-dissekator läser varje meddelande BitVoice skickar utan fel, och meddelandena har de fulla storlekar som Asterisks chan_skinny skickar till Cisco-telefoner.
- MGCP: mot Yates MGCP-gateway (omstart, provisoriska svar, bekräftelser, avslag) och BitVoices egen testgateway för hela samtal. Yate-gateway har inga analoga portar, så inget samtal gjordes genom den.
Telefonikort
/cardsEtt 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
- Installera DAHDI-drivrutinerna och konfigurera portarna som vanligt i /etc/dahdi/system.conf (
fxoks=1-4för portar med telefoner,fxsks=5-8för portar med linjer, och landets toner iloadzoneochdefaultzone), och kör sedandahdi_cfg. - 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.
- 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.
- 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.
- Starta
bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.tokensom 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
- Telefoner: uppringningston, uppringning (siffror hörs av BitVoices egen ton-detektor; numret kommer efter en paus eller #), ringning, upptagna och trängseltoner från kortets tonzon, ringning för inkommande samtal, och tangenter som trycks under ett samtal (skickas också som RFC 4733-händelser).
- Linjer: en ringande linje ringer dess nummer här och besvaras när samtalet är; utgående samtal tar en ledig linje, väntar på telefonväxlens uppringningston och slår numret som toner. Den andra ändans upphängning märks när linjen rapporterar det (loop-ström eller polaritet, beroende på linjen). Analoga linjer säger inte när den andra ändan svarar, så ett utgående samtal räknas som besvarat så snart numret är uppringt.
- Ljud är G.711 till och från kortet; BitVoice konverterar till vad den andra parten använder.
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.
- I /etc/dahdi/system.conf, konfigurera spannet för PRI som vanligt (
span=1,1,0,esf,b8zs,bchan=1-23,hardhdlc=24för en T1;span=1,1,0,ccs,hdb3,crc4,bchan=1-15,17-31,hardhdlc=16för en E1), och kör sedandahdi_cfg. - 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.
- 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.
- BitVoice är PBX (användarsida), punkt-till-punkt: en PBX-linje från telefonbolaget (Tysklands *Anlagenanschluss*): inkommande samtal bär det nummer som ringdes, utgående samtal bär tilläggets nummer.
- Användarsida, multipunkt: en linje delad med andra enheter (*Mehrgeräteanschluss*): BitVoice ber nätverket om sin egen TEI (terminalidentifierare) och besvarar samtal till linjen bredvid andra enheter på den; telefonbolaget skickar det nummer som ringdes (MSN), som inkommande rutter matchar.
- BitVoice är nätverket, multipunkt: ISDN-telefoner ansluter till kortets S-buss som till en telefonbolagslinje. Varje ber BitVoice om en TEI; ett samtal till bussen ringer varje telefon på den, den första som besvarar tar det och de andra slutar ringa. Nummer som ringdes siffra för siffra (som ISDN-telefoner ringer) samlas in tills telefonen säger att det är komplett, # trycks eller ingen siffra kommer under fyra sekunder. Ruttera numren till och från bussen med korttrunk som för vilken linje som helst.
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:
- Startsignal: Wink start (det vanliga: den andra änden blinkar när den är redo för numret, och BitVoice blinkar tillbaka vid ett inkommande samtal), Omedelbar start (numret följer omedelbart efter anslag), Försenad uppringning (den andra änden går ur hook medan den förbereder sig, sedan på hook), eller Feature Group D (wink start med MF-nummer, uppringarens nummer skickas först: KP 00 ANI ST, sedan KP nummer ST; ANI blir uppringar-ID).
- Nummer som skickas som: DTMF eller MF (MF R1, KP nummer ST) som de flesta operatörstrunkar vill ha.
- Nummer när inget skickas: vad ett inkommande samtal når om den andra änden anslår trunken utan att slå numret (en privat linje direkt till receptionen, säg).
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å informationssiffror och alla tio siffror, ST; traditionell CAMA som KP, en nummerplanssiffra och sju siffror, ST. För traditionell CAMA, lista under Riktnummer för NPD 0 till 3 riktnumret som varje nummerplanssiffra 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), Platssökning (ALI)). Informationssiffrorna 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:
- SS7-variant: ANSI (Nordamerika; punktkoder nätverkskluster-medlem, som 245-16-1) eller ITU-T (större delen av världen; punktkoder zon-område-punkt, som 1-10-2, eller ett vanligt nummer).
- Vår punktkod och Angränsande punktkod, Nätverk (nationellt, det vanliga, eller internationellt), signalerings Länkkod (SLC, 0 om inte annat anges), och Första CIC: koden för spannets första talande kanal, de andra följer i ordning. Allt detta kommer från operatören.
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.
Trunkar
/trunksEn 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.
Lägga till en SIP-trunk
- På Trunkar (kapitel 7) tryck Lägg till trunk.
- Ange leverantörens server som din telefonoperatör har gett dig (
sip.provider.com), och porten om den inte är 5060. - 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).
- 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.
- Lägg till en inkommande rutt för ditt nummer och en utgående rutt som använder denna stam (Samtalshanterare (kapitel 8)).
| Fält | Vad det gör |
|---|---|
| Transport | UDP (vanligt), TCP eller TLS för krypterad signalering |
| Register | logga in var få minuter, så leverantören vet var den ska skicka samtal |
| Autentiseringsanvändarnamn | endast när leverantören ger ett separat |
| Från domän | domänen i avsändarens adress, när leverantören begär en |
| Anroparens ID | numret som visas på utgående samtal; en utökning av anroparens eget ID vinner |
| Acceptera också samtal från | leverantö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 samtidigt | gränsen som din plan tillåter; samtal utöver detta går till nästa stam i rutten |
| Kryptera media | SRTP, 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 |
| Kodekar | lämna det på *samma som Inställningar*, eller välj vad denna leverantör stöder, bäst först |
| Taxor | vad 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.
- Serveradress: den andra servern. Lämna den tom när den andra servern registrerar sig till BitVoice istället (en filial med en ändrande adress); då är användarnamnet och lösenordet vad den registrerar med.
- Användarnamn och lösenord: samma på båda sidor. BitVoice svarar och skickar MD5-utmaningar, och hanterar anropstoken.
- Register: logga in till den andra servern, så den kan skicka samtal hit.
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
| Status | Betydelse |
|---|---|
| registered | inloggad; samtal kan komma in |
| ready | registrerar inte, eller IAX2 väntar på samtal |
| unreachable | serverns namn finns inte i DNS, eller ingenting svarar |
| failed | operatören vägrade inloggningen; orsaken visas |
| standby | servrar delar på denna trunk en i taget och en annan håller den |
Samtalsswitchning
/routesSamtalsswitchning 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.
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.
- En rutt för ett nummer vinner över en rutt för något nummer.
- En rutt kan begränsas till en trunk, för nummer som två operatörer båda skickar.
- Med nödläge på (Inställningar), går varje inkommande samtal till en plats istället, oavsett vad ruterna säger: en evakuering, en stängning, en incident.
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.
| Mönster | Matchar |
|---|---|
X | vilken siffra som helst |
Z | 1 till 9 |
N | 2 till 9 |
[1-5] | en av en uppsättning |
. i slutet | ett eller flera ytterligare siffror |
NXXNXXXXXX | ett tiosiffrigt nordamerikanskt nummer |
1NXXNXXXXXX | samma med 1 framför |
011. | ett internationellt samtal från USA |
- Ta bort tar bort siffror från början (en 9 som slås för en yttre linje); Lägg sedan till framför lägger till några (ett landskod).
- Ordningen spelar roll: den första rutten vars mönster matchar används. Dra rutter för att ändra den.
- Premiumnummer (900 och liknande) avvisas om inte en rutt namnger dem.
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.
PIN-samlingar
/pin-setsEn 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.
- Lägg till PIN-uppsättning och lista dess PIN-koder (4 till 10 siffror vardera).
- 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
accounti API:t). - 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.
Samtals-ID-sökning
/lookupsMå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):
- En webbadress: din CRM eller någon tjänst som svarar med namnet. Lägg
{number}där numret ska gå (https://crm.example.com/api/callers?phone={number}). Ett rent textsvar ger namnet på dess första rad; för JSON, ge namnfältet som en punkterad sökväg (data.contact.name; ett nummer går in i en lista, som iresults.0.name). Grundläggande autentisering är valfritt. - OpenCNAM: den nordamerikanska uppringar-namndatabasen, med din konto-SID och autentiseringstoken.
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.
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).
Vad BitVoice gör på varje nödsamtal
- 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.
- 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.
- 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.
- 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
- Kontrollera nödnumren i Inställningar (kapitel 14) (inställda per land: 911 och 933 i USA).
- Lägg till varje byggnad under Platser (kapitel 12), med dess gatuadress och de nätverk som dess telefoner använder.
- Ge varje tillägg dess plats, våning och rum.
- Se till att en utgående rutt och trunk tar nödsamtal; Hälsa (kapitel 13) varnar när ingen kan.
- Fyll i Meddela och Skicka också e-post.
- 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.
Platser och kontors 911
/sitesEn 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.
Lägga till en plats
På Platser (kapitel 12), tryck Lägg till:
| Fält | Vad det är |
|---|---|
| Namn | vad människor kallar det: Huvudkontor |
| Gata, Stad, Stat eller provins, Postnummer, Land | den civila adress som svarare skickas till |
| Nätverk | de 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
- En telefon som registrerar sig från ett av en plats nätverk är på den platsen, med dess anknytnings våning och rum.
- En hot desk bär dess egen plats, våning och rum, inte den person som är inloggad (Hot desking (kapitel 36)).
- 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.
- 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).
Hälsa
/healthHä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
| Kontroll | Varför det är viktigt |
|---|---|
| Nödsamtal kan komma ut | en rutt och en fungerande trunk bär nödnumren |
| Tillägg utan nödplats | deras 911-samtal skulle inte bära någon våning eller rum |
| Telefontjänsten | SIP lyssnar och på vilken port |
| Telefoner inte anslutna | tillägg som ingen har loggat in som |
| Trunkar | registrerade eller orsaken till att de inte är det |
| Menyer utan inspelad prompt | samtalare skulle höra tystnad |
| Tidszonen | scheman följer den |
| Inspelningar och deras förvaring | diskutrymme och hur länge inspelningar sparas |
| Certifikat | när TLS-certifikatet går ut |
| Nyckelvalv | hemligheter som ett valv inte kan läsa |
| Andra servrar | nä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.
Inställningar
/settingsInställningar innehåller allt om systemet som helhet. Varje avsnitt sparas för sig, och varje sparande är en revision på Ändringar (kapitel 61).
| Avdelning | Vad som finns där |
|---|---|
| System | namn, land, tidszon, språk, den offentliga adressen som telefoner och leverantörer ser |
| Nummer | eko-test, meddelanden och parkeringsnummer, och nödnumren |
| Kodningar | kodningarna telefoner kan använda, bäst först (Kodningar (kapitel 66)) |
| Samtalsinspelning | avstängd, varje samtal eller valda tillägg; samtyckesregler; hur länge inspelningar sparas |
| Ljud | rensning för meddelanden och under samtal |
| Skydd | förbud efter misslyckade inloggningar, betrodda nätverk, samtal per tillägg, premiumnummer |
| Nödsituation | skicka ringarens adress, vem som meddelas, vem som e-postas, nödläge |
| AI | AI-tjänsten, modellerna och vilka AI-funktioner som är på (AI (kapitel 28)) |
| Enkel inloggning | identitetsleverantören (Enkel inloggning (kapitel 58)) |
| Asterisk-kompatibilitet | AMI 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 Workspace | personer och delade kontakter i Kontakter, och kalendrar för vem som är borta (Kontakter (kapitel 38), Kalendrar (kapitel 39)) |
| Mobilappar | push-tjänsten som väcker apparna |
| E-post | e-postservern som meddelanden, fax och varningar skickas genom |
| Nyckelvalv | hemligheter som sparas i AWS Secrets Manager eller Azure Key Vault |
| Konfiguration från Git | håll konfigurationen i takt med en fil i ett repository |
| Databas | SQLite eller PostgreSQL (Databas (kapitel 64)) |
| Certifikat | certifikatet 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:
- http-01 (valet såvida inte webbgränssnittet är på port 443): en begäran till port 80. BitVoice svarar på port 80 själv (på Linux behöver den rätt att öppna låga portar, såsom
setcap cap_net_bind_service=+ep bitvoice), eller vidarebefordrar port 80 på routern till webbgränssnittets port, som också svarar. Allt annat som anländer på port 80 skickas vidare till HTTPS, endast för certifikatets namn. När BitVoice inte kan öppna port 80, säger Let's Encrypt-lådan varför i gul färg och vad som tillåter det (den exaktasetcap-raden för detta program, eller systemd'sAmbientCapabilities=CAP_NET_BIND_SERVICE; eller ett annat program redan håller porten). Testa namnen begär sedan varje namn för en testfil över internet, som Let's Encrypt kommer att göra, och säger för varje om det nådde BitVoice, nådde något annat eller inte är i DNS. Vissa routrar loopar inte tillbaka sin egen offentliga adress till insidan (ingen hairpin NAT): där misslyckas testet från insidan, även om Let's Encrypt, från utsidan, lyckas. - tls-alpn-01: en TLS-anslutning till port 443, besvarad på webbgränssnittets egen port: för en server vars webbgränssnitt är på 443.
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.
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.
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.
Samtalflöde
/flowKontrollera 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:
- varje kombination av öppet och stängt som dina scheman verkligen når under det kommande året (varje helgdag inkluderad), hittad i 15-minuterssteg;
- varje kombination av dag/natt-omkopplare (eller, med mer än sex, var och en växlad ensam);
- varje inkommande väg, och varje tangent en uppringare kan trycka i varje meny, varje "om ingen svarar" och varje kötid längs vägen;
- varje utgång som ringer varje nödnummer.
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.
Ringgrupper
/ring-groupsEn ringgrupp är ett nummer som ringer flera anknytningar: en säljgrupp, receptionsdisken och dess backup, alla i verkstaden.
Ringsstrategier
- Alla på en gång: alla medlemmars telefoner ringer samtidigt, och den första som svarar tar samtalet. De andra slutar ringa.
- En efter en: varje medlem ringer under gruppens ringtid, i den ordning de listas. Flytta medlemmar med pilarna, eller Alt+↑ och Alt+↓.
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änd | När |
|---|---|
| En ringgrupp | ett 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ämtningsgrupp | varje person har sina egna samtal, men kollegor kan svara för dem |
Köer
/queuesEn 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.
Hur samtal erbjuds
| Strategi | Vem rings |
|---|---|
| Längst inaktiv | den fria agenten som har väntat längst sedan deras senaste samtal |
| Rullande | varje fri agent i turordning, fortsätter från den föregående |
| Ring alla | alla fria agenter samtidigt |
| Flest samtal | den fria agenten som tog flest samtal idag |
| I ordning (linjär) | alltid från toppen av listan: den första fria agenten |
| Slumpmässig | valfri fri agent, slumpmässigt |
| Viktad slump | slumpmässigt, agenter med lägre straff mycket oftare |
- Ordning: agentlistan är i ordning; flytta dem upp och ner. Ordning och Round robin följer efter.
- Straff rankar agenter (0 till 100, 0 när den är tom): samtal erbjuds de fria agenterna med den lägsta straffet, och en agent med ett högre straff rings endast när ingen med ett lägre straff är ledig. Använd dem för en första linje och en överflödeslinje i en kö.
- Vikt rankar köer som delar agenter: medan en kö med högre vikt har någon som väntar, tar dess agenter hand om dess samtal först.
- Avslutning ger en agent tid efter ett samtal innan nästa.
- Längsta väntan: samtalare som väntar längre skickas till köns tidsgränsdestination. 0 väntar för alltid.
- Hållmusik: samtalare hör köns musik (valfri klass från Ljud (kapitel 20)), systemets musik eller könsignalen.
- Meddela väntande samtalare deras plats i kön och den förväntade väntetiden (den genomsnittliga väntetiden för besvarade samtal idag, i minuter), varje så många sekunder, på köns språk. Orden kommer från köns prompter i Ljud (kapitel 20); tills de är inspelade, sägs ingenting.
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ånd | Betydelse |
|---|---|
| tillgänglig | fri; kommer att erbjudas nästa samtalare |
| ringer | erbjuds ett samtal |
| upptagen | på ett samtal |
| avslutning | precis avslutat; avslutningstiden löper |
| pausad | på en paus, med anledningen angiven |
| borta | på möte eller ledighet, från deras kalender |
| utloggad | tar 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.
Utgående uppringare
/dialerDen 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äge | Hur det ringer |
|---|---|
| Förhandsgranskning | en agent ber om nästa kontakt, ser dess detaljer, sedan ringer den (deras telefon ringer först) eller hoppar över den |
| Progressiv | ett samtal för varje ledig agent |
| Kraft | ett bestämt antal samtal för varje ledig agent (1 till 3) |
| Förutsägelse | BitVoice justerar samtal per agent, lutar sig in medan få samtal överges och backar av när övergivningsfrekvensen närmar sig gränsen |
- 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.
- Öppna Kontakter och Lägg till en lista: en CSV-fil med en rubrikrad och en kolumn som heter
number(ellerphone);nameoch eventuella andra kolumner visas för agenten i förhandsgranskning. Dubblett- och felaktiga nummer hoppas över. - 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.
- 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.
Ljud: prompter, språk och hållmusik
/soundsLjud (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.
- Samtalare hör ställer in språket för alla. En kö, en inringning, en katalog eller en utvidgning kan välja ett annat.
- Varje prompt kan spelas in i webbläsaren, laddas upp (valfri ljudfil; den omvandlas till telefonljud) eller skapas av taletjänsten: med en taletjänstmodell inställd i Inställningar, AI, en knapp skapar varje prompt för ett språk från dess ord. Prompter som redan är inspelade behålls såvida du inte ber att ersätta dem.
- Lägg till ett språk för något annat språk (en kod som t.ex. sv, ja eller pt-BR); dess prompter spelas in eller laddas upp, med de engelska orden som visas som en guide.
- En saknad prompt på ett språk spelas i standard-språket, sedan på engelska; med ingen inspelad alls, hör samtalare en kort ton, så att varje funktion fungerar innan en enda prompt är inspelad.
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 det | Vilken musik |
|---|---|
| någon som läggs på vänteläge | den musik som valts på den som håller i telefonen, annars standard |
| en parkerad samtalskopplare | musiken 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 konferensledare | standard |
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.
Namndirectory
/directoriesEn 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.
- 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.
- Välj vad samtalskopplare stavar: efternamn (det vanliga), förnamn eller båda.
- 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.
Inringning (DISA)
/dial-inEn 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.
- 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.
- 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.
- 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).
Röstbottar (AudioSocket)
/voice-botsEn 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.
- 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. - 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.
- 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).
Dag/natt-omkopplare
/togglesEn 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.
- 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. - Välj vem som får växla den från en telefon (ingen vald låter alla tillägg).
- 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).
Tidtabeller
/schedulesEn 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).
Ö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.
Skript (JavaScript och Lua)
/scriptsEtt 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).
Säkert från början
- Ett routing-skript körs i högst 200 ms. Om det misslyckas eller tar för lång tid går samtalet till skriptets fallback, så ett misstag aldrig förlorar ett samtal. (Samtals-skript har sina egna begränsningar, nedan.)
- Det körs i en sandlåda: det kan inte nå nätverket eller disken. Ett routing-skript väljer bara; ett samtals-skript kan bara göra de steg som listas nedan, till sitt eget samtal.
- Nödsamtal kör aldrig skript.
Vad ett skript ser
call har:
| Fält | Vad det är |
|---|---|
from, fromName | samtalsställarens nummer och namn |
to | det nummer som valdes |
direction | inbound eller internal |
trunk | den trunk det kom in på |
weekday, hour, minute | den aktuella tiden (0 är söndag) |
date | YYYY-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:
| Steg | Vad 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.
AI-receptionist, röstbrevlådetrionage och fråga
/receptionistsAI-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.
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:
- Modellen ovan: ljudet skickas till AI-tjänsten, vars modell måste ta ljud.
- Den här servern: BitVoice kör whisper själv. Välj en Whisper-modell och spara: BitVoice hämtar den en gång från whisper.cpp-projektet (
baseär 60 MB;small,mediumochlarge-v3-turboär mer exakta och långsammare; alla förstår cirka 100 språk), kontrollerar den mot dess publicerade SHA-256 och startar whisper.cpp:swhisper-serverpå 127.0.0.1 bredvid den, och startar om den om den slutar. Uppringarnas ljud lämnar aldrig datorn och ingenting betalas per samtal.whisper-server(MIT-licens) finns i BitVoices nedladdningar bredvid programmet, och installatörerna placerar den bredvid BitVoice; BitVoice hittar också en installerad på egen hand (brew install whisper.cpp). Inställningarna visar var den står (hämtar modellen, startar, körs eller varför den inte körs), och så gör också Hälsa (kapitel 13). Medan den inte körs misslyckas transkriptioner och säger varför: de skickas aldrig till någon annan i stället. - En tal-till-text-tjänst: whisper.cpp:s
whisper-serverpå en annan dator i byggnaden (http://192.168.1.20:8178/inference), för en maskin med GPU som betjänar flera BitVoice-servrar, eller någon OpenAI-kompatibel…/audio/transcriptions(med Dess modell, till exempel whisper-1, och Dess nyckel). Renthttpaccepteras endast till den här datorn eller ett privat nätverksadress; allt annat måste varahttps. För att köra en:whisper-server -m ggml-base-q5_1.bin --host 0.0.0.0 --port 8178 -l auto.
Whichever writes it down, every transcript goes there: voicemail, recorded calls, live 911 calls and receptionists hearing callers. Without the model, the Model may be left empty: transcripts are written, summaries are written from the facts the call said (below), and what needs a language model (action items, voicemail triage, call insight, receptionists' replies, asking in plain words) is left out. Notes a recogniser makes about what it heard, such as [BLANK_AUDIO] or (silence), are dropped, so a quiet stretch never reads as though something was said.
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å.
- Ingenting läggs till som ingen sa. "Ingen är skadad" är ett faktum i sig; en som ringer och förmedlar någon annans ord ("hon säger att han inte andas") markeras rapporterad; "24 Pine Lane. Nej, förlåt, 42" behåller 42; ett naket "nej" svarar på frågan som ställdes strax före det.
- Det är troget, inte komplett: ord det inte känner till missas. På tre uppsättningar av uppfunna 911-samtal (inga riktiga rings ord) hittar det:
| Uppställning | Faktan hittad | Faktan hittad som ingen förväntade sig |
|---|---|---|
| Utbildning (reglerna skrevs från den) | 41 av 41 | 0 |
| Uthållighet, poängsatt kallt, innan någon regel skrevs från den | 27 av 40 (67%) | 2 |
| Uthållighet, efter en andra omgång av regler skrivna från dess missar | 40 av 40 | 0 |
| 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.
Meddelandelåda
/voicemailVarje 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.
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ällning | Vad det gör |
|---|---|
| Längsta meddelande | 10 till 900 sekunder (180 som standard) |
| E-post nya meddelanden | till extensions e-postadress, med meddelandet bifogat |
| Hälsning | inspelad i webbläsaren, uppladdad eller inspelad från telefonen; utan en, hör samtalsställare en beep |
Lyssna
- Från extensions egen telefon, slå
*97: meddelanden spelas upp i nyaste först; tangenter upprepar, tar bort eller behåller varje ett. - Från vilken annan telefon som helst, slå
*97, ange brevlådans nummer och dess PIN. - På Meddelandelåda (kapitel 29) (administratörer) eller i personalportalen (personen): spela, markera hört, ta bort.
- Telefonens meddelandelampa är på medan det finns nya meddelanden.
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.
Återkopplingar
/callbacksPersoner 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.
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.
Samtalslänkar och webbsamtal
/call-linksEn samtalslänk är en webbadress som ringer ditt företag från vilken webbläsare som helst: inget telefonnummer, ingen app. Lägg den i en e-postsignatur, skriv ut dess QR-kod på en broschyr eller en butiksfönster, eller klistra in webbknapplänken i din webbplats.
På Samlingslänkar (kapitel 31), lägg till en länk, välj vart dess samtal ska gå (en utvidgning, en grupp, en kö, en meny, AI-receptionisten, en schema eller röstbrevlåda), och spara: sidan visar dess adress och QR-kod. Samtalaren ser titeln och orden du ställt in, anger sitt namn om du ber om det, tillåter mikrofonen och trycker Ring nu; tangentbordet fungerar för menyer. Den som svarar ser Web: och samtalarens namn.
Stäng av Öppen för att stänga linjen (sidan meddelar det). Samtal samtidigt begränsar hur många personer som kan ringa via en länk (5 om den inte är inställd). Adressen innehåller en lång slumpmässig del så att den inte kan gissas; upprepade felaktiga adresser blockeras som misslyckade inloggningar. Ringsidans mikrofoner behöver sidan för att serveras via HTTPS, så dela ut HTTPS-adressen.
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.
Funktioner, vidarebefordring och snabbval
/codesFunktionskoder ä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
| Kod | Vad den gör |
|---|---|
*72 | vidarekoppla varje samtal (sedan numret och #, eller numret direkt efter: *722125550199) |
*73 | sluta vidarekoppla varje samtal |
*90 / *91 | vidarekoppla när man är i ett samtal / sluta |
*52 / *53 | vidarekoppla när inte besvarat / sluta |
*78 / *79 | stör ej på / av |
*76 | växla stör ej (stigande ton: nu på) |
*21 | växla följ-mig på och av |
*8 | svara på ett samtal som ringer i din upphämtningsgrupp |
** och en tillägg | svara på samtalet som ringer den tilläggen |
*80 och en tillägg | intercom: den telefonen svarar på högtalaren |
*0 och en kod | en snabbval |
*62 | väckningssamtal: höra det, boka ett (fyra siffror, såsom 0630) eller avboka det (stjärna) |
*68 och en siffra | rumstatus, för städning på hotell |
*28 och en omkopplarens kod | växla en dag/natt-omkopplare (kapitel 25) över, eller tillbaka |
*32 | blockera den senaste uppringaren: den senaste yttre numret som ringde den här telefonen hamnar på blocklistan (Spamskydd (kapitel 56)) |
*43 | eko-testet |
*97 | din röstbrevlåda |
70 | parkera ett samtal (överföra det hit); 71 till 79 hämtar det |
*45 / *46 | köagent: logga in eller ut / pausa eller återuppta |
*33 / *34 | logga in eller ut på en varm skrivbord |
*7 / *8 under ett samtal | pausa och återuppta inspelningen (kortbetalningar) |
Vidarebefordring
*72vidarebefordrar varje samtal. Slå in det, höra en ton, sedan slå in numret och #. Eller slå in numret rakt efter koden.*90vidarebefordrar samtal som kommer medan du är upptagen.*52vidarebefordrar samtal som du inte svarar på inom din ringsignalstid.*73,*91och*53avbryter dem.
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
*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
*8svarar på det äldsta samtalet som ringer någon i din plockgrupp (inställd på varje tillägg; namn jämförs utan hänsyn till versaler).**och ett tillägg svarar på ett samtal som ringer det tillägget:**101.
Intercom
*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).
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.
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
| Flik | Vad som finns där |
|---|---|
| Var samtal går | stör ej; vidarekoppling av varje samtal, när upptaget och när inte svarat; följ-mig-nummer; egna snabbval |
| Röstbrevlåda | meddelanden att spela upp och radera, med transkriptioner och sammanfattningar när AI är på; spela in eller ladda upp hälsningen |
| Dina samtal | personens 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).
Konferensrum
/conferencesEtt 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.
Konfigurera ett rum
- Öppna Konferensrum (kapitel 34) och tryck Lägg till konferensrum.
- Ge det ett nummer (valfritt fritt nummer, 500 som standard) och ett namn.
- 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.
- Ange ett ledar-PIN om så önskas, som skiljer sig från PIN. Den som skriver in det ansluter som ledare.
- För att låta externa samtalare ansluta, peka en inkommande rutt (eller ett menyalternativ) mot rummet.
Alternativ
| Alternativ | Vad det gör |
|---|---|
| Vänta på ledaren | alla 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 tysta | fö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 rummet | hela 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ämnar | på som standard |
| Flest människor samtidigt | 50 som standard, upp till 200 |
Tangenter under ett samtal
1mutar och avmutar dig själv (i ett rum där medlemmar är tysta, ber den att tala).2, för en ledare, låser rummet så att ingen ny kan ansluta, och låser upp det.
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:
- Följ talaren: alla ser vem som har talat i en sekund, sedan den som är på skärmen har varit tyst i en sekund; personen på skärmen ser den före.
- Visa ledaren: alla ser ledaren (som ansluter med ledar-PIN); ledaren ser vem som talade sist.
- Rutnät: alla ser alla på en gång, sida vid sida (en bild fyller skärmen, två sida vid sida, sedan 2x2 och 3x3, upp till nio), varje person på sin egen plats i den ordning de anslöt, inklusive sig själv.
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.
- Den stora bilden får full storlek på den kameran, de små bilderna får liten storlek; Gör stor byter dem, och bytet sker vid nästa fullständiga bild av den nya storleken, som BitVoice begär omedelbart (RTCP PLI).
- En webbläsare som har ont om uppladdning slutar skicka sin största storlek; visarna får då den största storlek som fortfarande kommer.
- Ljudet är rummets konferens som alltid: att ansluta till rummet ringer på webbläsarens telefon, och vem som helst som ringer till rummet från en telefon hörs och hör alla. Videotelefoner som ringer in ser vem som talar.
- Ett rum med en PIN begär den på sidan. Sidan behöver en inloggning till BitVoice.
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.
- Ett rum visar en delad skärm i taget: medan någon delar, väntar de andras knapp och visar vem som delar. En delad skärm räknas inte mot de 16 kamerorna.
- Någon annan kan göras till den stora bilden med Gör stor, som med kameror; skärmen stannar i rummet.
- Skärmens bild endast, aldrig dess ljud: rummets ljud förblir dess konferens.
- Telefoner som inte kan dela en skärm (de flesta telefonwebbläsare) visar knappen gråtonad. Skrivbordstelefoner och andra videotelefoner som ringer rummet ser inte delade skärmar; de ser vem som talar.
Paging och högtalare
/pagingPaging 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
- På Sändning (kapitel 35) tryck Lägg till sändningsgrupp och ge den ett nummer (800 som standard) och ett namn.
- Välj telefonerna. Högtalare som är konfigurerade som tillägg (typ Högtalare) kan också vara medlemmar.
- 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ändning | Intercom | |
|---|---|---|
| Vem hör | alla i gruppen | ett tillägg |
| Prata tillbaka | nej, enkelriktat | ja, dubbelriktat |
| Hur | ringa 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.
Hot desking
/phonesEn 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
- På telefonen, slå
*33och vänta på signalen. - Ange ditt tillägg och #, och vänta på signalen.
- 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.
Hotell och väckningssamtal
/hotelVä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.
- Lediga rum: rum utan någon incheckad ringer bara anknytningar och nödnummer. Nödsamtal fungerar alltid.
- Rensa vid utcheckning: tar bort rummets meddelande och avbryter dess väckning, vidarekoppling och stör ej, redo för nästa gäst.
- En gästs språk (från incheckningen) är det språk som rummets prompter sägs på.
- Rumstatus: städhjälp ringer
*68och en siffra från rummets telefon (*683); hotellsystemet bestämmer vad varje siffra betyder.
Hotelsystemet (PMS)
- FIAS: BitVoice ansluter till hotelsystemets FIAS-gränssnitt (Oracle Opera och de många system som talar FIAS) på dess adress och port. Den tar emot incheckningar, rumbyte, utcheckningar och väckningsbokningar, och skickar väckningsresultat, rumstatus och samtalavgifter. Medan länken är nere väntar det som den skulle skicka och skickas när den är tillbaka; sidan visar om den är länkad. Posterna följer Oracles FIAS 2.20.23-specifikation: BitVoice beskriver sig själv som ett telefonisystem (IF PB), samtalavgifter är direkta avgifter (PT C) med beloppet i valutans minsta enhet och de uppringda siffrorna utan + eller mellanslag, och ett väckningsresultat upprepar den bokade tiden till sekunden, så hotelsystemet kan matcha det till sin begäran.
- REST API: hotelsystemet anropar
POST /api/hotel/rooms/<room>/checkin(namn, konto, språk),/checkout, ochPUT /api/wakeups/<room>, med en API-nyckel från Inställningar, Automation. Avgifter skickas som JSON till den adress du anger. - Debitera samtal: besvarade yttre samtal från bebodda rum hamnar på gästens räkning, till trunkens taxor (från Kostnader (kapitel 54)) plus påslag.
Kontakter på varje telefon
/contactsKontakter ä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.
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:
- Yealink: en fjärrtelefonbok med namnet Företag, uppdaterad varje timme.
- Grandstream: telefonboksnedladdning, varje timme.
- Polycom: katalogfilen, läst när telefonen startar.
- Snom: listan skrivs in i telefonens inställningar, så den uppdateras när telefonen nästa gång kontrollerar dem.
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):
- I Entra-administrationscentret, Appregistreringar, Ny registrering: namnge den BitVoice, enkelhyresgäst, ingen omdirigeringsadress.
- API-behörigheter, Lägg till en behörighet, Microsoft Graph, Programbehörigheter:
User.Read.All,OrgContact.Read.AllochCalendars.ReadBasic. Sedan Ge administratörsmedgivande. - Certifikat och hemligheter, Ny klienthemlighet: kopiera dess värde (visas en gång).
- 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):
- 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.
- 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. - I BitVoice: nyckelfilen, och e-postadressen till en administratör för tjänstekontot att agera som.
Vad som kommer in:
- En persons arbetsnummer och mobil, namn, e-post och deras jobbtitel och avdelning som kontaktnoteringar; organisationsnamnet som deras företag. Personer utan nummer lämnas utanför (en kontakt behöver ett); konton som är inaktiverade lämnas utanför.
- Kontakter från tjänsten markeras med dess namn, och ändras där: att ändra eller ta bort en här nekas, eftersom nästa synkronisering skulle återställa det. Kontakter som skapats här, eller importerats från ett kalkylblad, lämnas utanför.
- BitVoice läser endast. Dess åtkomst är de läsbara behörigheterna ovan, och hemligheten eller nyckeln sparas med de andra hemligheterna: visare ser den aldrig, och exporter för Git lämnar den utanför.
Kalendrar och stör ej
/extensionsEn 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.
I anknytningen, Kalender och stör ej, klistra in kalenderns privata adress:
- Outlook: Inställningar, Kalender, Delade kalendrar, Publicera en kalender; välj kalendern och "Kan visa alla detaljer", sedan kopiera ICS-länken.
- Google Kalender: Inställningar, kalendern till vänster, sedan Hemlig adress i iCal-format.
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.
- Microsoft 365 berättar möten från ledig tid: ett möte som är markerat som ledig tid räknas som ledig tid; möten som är markerade som tentativa, och tid som är markerad som ledig eller arbetande på annan plats, stoppar aldrig telefonen från att ringa. Ett privat möte visas som "I ett möte", utan dess titel.
- Google Workspace ger upptagna tider utan att säga varför, så de räknas alltid som möten.
- Kalendrarna läses var femte minut, och omedelbart när inställningarna ändras. Ett tillägg vars e-post tjänsten inte känner till säger så i sin kalendersektion.
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.
Konfigurera push
En stängd app väcks för samtal via en push-meddelande. I Inställningar (kapitel 14), Mobilappar, välj en:
| Push | Vad du behöver |
|---|---|
| Push-relay | BioDreams relay (med hosting eller support) eller din egen bvpush: dess Relay-adress, Nyckel-ID och Hemlighet |
| Egna appar | dina 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
- Öppna tillägget och tryck Lägg till en telefon.
- 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:
- Överför en samtalare till en annan extension eller ett yttre nummer (samtalets egen Överför eller appens knapp). Till parknumret parkerar den samtalet.
- Håll och ta tillbaka, från samtalets skärm eller appen; uppehållna samtalare hör din musik för uppehåll där den är inställd.
- Ett andra samtal: ringa medan det första är på uppehåll, och växla mellan dem.
- Tangentbord toner (DTMF) under samtalet, och Tyst.
De andra flikarna
- Senaste: samtal till och från denna extension, nyast först, tryck för att ringa tillbaka (missade samtal markeras).
- Röstbrevlåda: varje meddelande med dess transkript (kapitel 29) där AI skriver ett, spela upp det, ringa tillbaka eller ta bort.
- Lag: vem som är ledig, på samtal, ringer eller borta (en upptagen lampa), för att ringa dem eller överföra det aktuella samtalet till dem.
- Kontakter: företagskatalogen, för att hitta ett namn och ringa det.
- Chatt: personalchatten (Chatt och närvaro), kollegor med deras närvaro och direkta meddelanden, och lagrum, inuti telefonen. Ett nytt meddelande medan appen är i bakgrunden visas som en notifikation, och att trycka på den öppnar Chatt; när appen är stängd kommer det via samma push som samtal.
- Gå med i en videorum: välj en av videorummen (kapitel 34) (den listar dem, med hur många som är i varje just nu). Den öppnas ovanför telefonen, som fortsätter att köra under, och du går med som din egen extension: ingen administratörinloggning. Första gången frågar telefonen efter kameran. Lämna, eller Tillbaka på Android, återvänder till telefonen; rummets ljud förblir ett samtal på den tills du lägger på. Telefonen visar rummet som ett videosamtal på sin egen samtalsskärm medan du är i det.
- Samtal du gör hamnar på telefonens eget samtalsystem också (CallKit på iPhone, Androids Telecom), så Bluetooth, en bil eller en klocka visar dem, och ett mobiltelefonsamtal som anländer under tiden känner till dem.
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.
Videotal
/settingsNä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.
- BitVoice vidarebefordrar videon som den är, på en egen port för varje telefon, så att telefonerna aldrig lär känna varandras adresser. Med en gemensam codec (nästan varje videotelefon har H.264) avkodar den aldrig videon; utan en, kan den konvertera (nedan). När de numrerar samma codec olika, omnumrerar BitVoice den på vägen.
- Bilden är krypterad (SRTP) till varje telefon som krypterar sin ljud.
- En telefons begäran om en färsk bild (efter förlorade paket) når den andra telefonen, så att bilden återhämtar sig på ett ögonblick.
- En kamera som slås på under ett samtal (en mjukvarutelefonens videoknapp) fungerar också: den andra telefonen tillfrågas först, och bilden startar när den säger ja.
- En telefon utan video eller ett samtal till ett yttre nummer får endast ljud. På hold eller medan den parkeras pausar bilden och kommer tillbaka när samtalet gör. Efter en överföring fortsätter den endast när den nya parten skickar video också.
- Video använder mycket mer av nätverket än ljud (cirka 0,5 till 2 Mbit/s per samtal och väg): tillåt för det på långsamma länkar och i medieportintervallet.
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.
Fax: skicka och ta emot, faxmaskiner och analoga telefoner
/faxesFaxapparater, 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.
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:
- Använd T.38 på gatewaysen och välj en leverantör som stöder det.
- Gör portens tillägg till ett analogt adaptertillägg (Tillägg, Typ): BitVoice erbjuder då endast G.711, som fax som skickas som ljud behöver.
- På gatewaysens faxport: Faxläge T.38, endast PCMU eller PCMA, linjekonnektorer avstängda, samtal väntar avstängt och en fast, hög jitterbuffert.
Inkorg: webbchatt, WhatsApp och Messenger
/inboxDen 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 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.
Företagstextning (SMS)
/textsSkicka 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.
Inställning
- 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.
- 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. - 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.
Överföringsinformation
/settingsSå 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).
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.
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.
Pågående samtal
/callsPå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.
Vad administratörer kan göra
| Åtgärd | Vad den gör |
|---|---|
| Lägg på | avslutar samtalet för båda parter |
| Öppna dörren | för ett samtal från en dörrstation |
| Pausa inspelning | för ett kortnummer: den pausade delen är tyst i inspelningen och markerad i historiken (Samtalinspelning (kapitel 51)) |
| Lyssna | höra samtalet tyst |
| Viska | tala med agenten endast; samtalaren hör inte |
| Barge | ansluta 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
- Ett kort för en uppringare medan ett utgående samtal ringer (från er CRM, eller tidigare samtal; se CRM (kapitel 49)).
- Den skrivna informationen för den person som samtalet överfördes till (Överföringsinformation (kapitel 45)).
- Utgång för identifiering av uppringare: Verifierad, Delvis verifierad eller Overifierad (Spamskydd (kapitel 56)).
- Med flera servrar, samtal på de andra också, skrivskyddat: lägg på eller lyssna på den server som har samtalet.
När ett samtal avslutas flyttas det till Anropsistoria (kapitel 47).
Samtalshistorik
/historyVarje 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.
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:
- Inget ljud från en part: samtalet kopplades men ingenting anlände någonsin från den telefonen eller leverantören (samtal kortare än 5 sekunder, fax, samtal i kö och sidotal lämnas utanför). Se Samtalskvalitet (kapitel 53) för vad du ska kontrollera.
- Ej krypterad: BitVoice begärde kryptering (SRTP) och den parten svarade utan det. Krypterad betyder att ljudet krypterades med varje part som skickade något. För att vägra okrypterade samtal från en leverantör istället, aktivera Kräv kryptering på dess trunk.
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.
Kundtidslinje
/timelineKundtidslinjen visar allt med ett telefonnummer under det senaste året, nyast först, så att vem som helst som svarar känner till hela historien.
Vad det visar
| Artikel | Med |
|---|---|
| Samtal | vem som tog dem, hur länge och med en transkription, dess sammanfattning, inspelningen och transkriptionen |
| Röstmeddelanden | deras sammanfattningar |
| Textmeddelanden | båda vägarna |
| Återuppringningar | begärda och om de är gjorda |
| Anteckningar | teamets 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.
CRM: uppringarkort och samtalshistorik
/settingsAnslut ett kundsystem i Inställningar (kapitel 14), CRM. Det fungerar med alla system som har en webbadress, utan kod skriven för varje produkt.
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:
- Sökväg:
https://crm.example.com/api/v1/Contact?select=name,accountName,description&maxSize=1&where%5B0%5D%5Btype%5D=equals&where%5B0%5D%5Battribute%5D=phoneNumber&where%5B0%5D%5Bvalue%5D={number} - Sökheader:
X-Api-Key, dess värde är API-användarens nyckel - Svarsfält: namn
list.0.name, företaglist.0.accountName, anteckningarlist.0.description, länkhttps://crm.example.com/#Contact/view/{list.0.id}
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.
Samtalinsikt för chefer
/qualityFör kontaktcenter: bevis om hur samtal gick, för en chef att lyssna på, aldrig en automatisk poäng.
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.
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.
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.
Spelainsamtycke
/settingsVissa platser tillåter att ett samtal spelas in när en person på det vet; andra behöver att alla ska meddelas, eller samtycka. I Inställningar, Samtalsinspelning, välj hur personer på ett inspelat samtal meddelas:
- Ingen meddelande.
- Meddela: när samtalet besvaras, hör båda sidor meddelandet (spela in det på samma plats, till exempel "Detta samtal spelas in för utbildning och kvalitet"), och inspelning startar bara efter att det har spelats. Tills ett är inspelat, spelas tre signaler, och Hälsa säger till.
- Signal: en kort ton till båda sidor var 15:e sekund medan samtalet spelas in.
Regler väljer efter det yttre numret (ringsignalen på inkommande samtal, numret som valts på utgående samtal), längsta matchning först: till exempel nummer som börjar med 1415 (Kalifornien) Meddela, 49 (Tyskland) Aldrig spela in, allt annat som ovan. En regels Ingen meddelande spelar in utan ett; Aldrig spela in lämnar dessa samtal utanför inspelningen helt. Samtal mellan tillägg följer huvudinställningen.
Ditt eget nummer räknas också: reglerna matchas mot både det yttre numret och ditt (det nummer som rings in på inkommande samtal, din ID för utgående samtal), och den mest skyddande av dem vinner (Ingen inspelning före Meddelande före Signal före Inget meddelande). Så en kontor i en plats som behöver varje parts samtycke meddelar vem de ringer, var de än är. När parterna omfattas av olika regler, anger samtalets post i Samtalshistorik (kapitel 47) vilken regel som tillämpades och varför.
Inspelning kan också pausas under ett samtal med paus-koden (kortbetalningar). Inget av detta är juridisk rådgivning: kontrollera lagarna där du och dina samtalare är.
Samtalskvalitet
/qualityHur 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å.
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).
Kostnader och budgetar
/costsBitVoice 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.
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.
Anropar-ID-reputation och varumärkesanrop
/reputationTelefonfö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:
- Svarat: andelen svarade samtal, och vad det var perioden före. En minskning med hälften, eller under 20%, är det vanliga tecknet på en ny etikett.
- Hängde upp omedelbart: svarade samtal som avslutades inom 10 sekunder.
- Avvisat som spam: samtal som en växels filter avvisade (SIP 608) eller som personen markerade som oönskat (607). Ett 608 innebär att numret är märkt.
- Tung användning: mer än cirka 150 samtal per dag från ett nummer är vad robokallare gör, och filter märker.
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.
Spamskydd och STIR/SHAKEN
/settingsI 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.
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:
| Val | Vad uppringaren får |
|---|---|
| Ring som vanligt | samtalet ringer som vilket som helst (standard) |
| Robottest först | BitVoice 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 annanstans | ingenting 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.
- Dessa tjänster debiterar per sökning. Kända ringsignaler söks aldrig upp, och varje svar sparas i en dag (Spara svar).
- En långsam eller trasig tjänst håller aldrig upp ett samtal: efter Vänta som mest (1,5 sekunder om du inte ändrar det) ringer samtalet som om svaret vore "inte spamsamtal".
- Test frågar den om ett nummer nu (och debiteras som varje sökning).
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).
- Certifikatadress (x5u) är där den mottagande sidan hämtar certifikatet. Lämna den tom och BitVoice publicerar det på
/stir/<trunk>.pempå sin offentliga adress (Inställningar), som måste vara tillgänglig från internet via HTTPS. - Intyg: automatisk ger A när en tillägg ringer med ett av systemets nummer (ett nummer som dirigerats in, eller en ringsignal som ställts in på trunken eller tillägget), B när en tillägg ringer med något annat nummer, och C för samtal som vidarebefordras från utanför (ett vidarebefordrat ringsignal). Eller fixa det till A, B eller C.
- Samtalsloggen markerar varje undertecknat samtal med undertecknad A, B eller C. Ett samtal stoppas aldrig för att det inte kunde undertecknas; orsaken finns i loggen.
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.
Administratörer
/usersAdministratö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
| Roll | Kan |
|---|---|
| Administratör | ändra allt, spela upp inspelningar, se varje hemlig fälts existens (aldrig dess värde) |
| Visare | se 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)).
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å.
Setting it up
In Settings (kapitel 14), Single sign-on:
- Register an application with the provider, with the Redirect address shown here.
- Fill in for a provider sets the Issuer for the common ones; copy the Client ID and Client secret from the provider.
- Name the provider's Administrator groups and Viewer groups. Groups claim is where the provider puts them (
groupsunless set). - Optionally change the Button text on the sign-in page.
- Switch on Use single sign-on.
Hur det fungerar
- Kontot här skapas vid den första inloggningen; grupperna anger rollen vid varje inloggning, så att flytta någon mellan grupper hos leverantören ändrar deras roll här.
- Någon i ingen av grupperna nekas, och avslaget hamnar i granskningsloggen.
- Med Tillåt även lösenord avstängt fungerar lösenord endast på denna dator, så en leverantörsavbrott aldrig låser dig ute.
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:
- 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.
- Server:
ldaps://dc1.example.com(port 636), ellerldap://...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. - Läskonto och Dess lösenord: ett konto som har tillåtelse att läsa personer och grupper (
reader@example.compå Active Directory). Lösenordet kan vara en hänvisning till en nyckelvalv (Inställningar, Nyckelvalv). - 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. - 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
- Med Skapa och uppdatera tillägg aktiverat, får varje person med ett nummer ett tillägg: de sista siffror som sparas (4 av
+1 212 555 0123är 0123; 0 sparar alla siffror, som då måste vara 2 till 8). Nya tillägg får ett SIP-lösenord och meddelande med en slumpmässig PIN; personens namn och e-postadress hämtas från katalogen. - Katalogen äger ett tillägg som den skapat: dess nummer, namn och e-postadress följer katalogen vid varje synkronisering. Allt annat (enheter, vidarekoppling, meddelandeinställningar) tillhör dig.
- Ett tillägg som du har skapat manuellt tas aldrig över, såvida det inte har samma namn eller e-postadress som personen. Två personer med samma nummer, ett nummer som redan används av ett annat tillägg, eller ett nummer med fel längd listas under Att titta på, och ingenting ändras för dem.
- Med Stäng av tilläggen för personer som har lämnat aktiverat, stängs ett tillägg som katalogen skapat av när personen lämnar, inaktiveras eller förlorar sitt nummer, och återaktiveras när de återvänder.
- Ringsgrupper fyllda från kataloggrupper: varje rad lägger till tilläggen för en gruppmedlems medlemmar i en ringsgrupp (på Active Directory räknas kapslade grupper). En grupp med ingen som har ett tillägg lämnar ringsgruppen som den var.
- Katalogen läses var Läs den var minut (60 som standard), och omedelbart med Synkronisera nu. Varje synkronisering som ändrar något är en revision (kapitel 61) med namnet "Företagskatalogsynkronisering", så att den kan ångras; den senaste synkroniseringens rapport visas under knappen.
Inloggning
Med Personer loggar in här med sitt katalognamn och lösenord på, tar inloggningssidan katalognamn och lösenord samt BitVoices egna konton:
- Medlemmar i Administratörsgrupper loggar in som administratörer, i Visargrupper som visare (utan visargrupper, vem som helst annan i katalogen). Grupper namnges av deras namn (cn) eller DN; på Active Directory räknas kapslade grupper. Någon i ingen sådan grupp nekas.
- Kontot här skapas vid den första inloggningen och dess roll följer grupperna vid varje inloggning. Det tar aldrig över ett BitVoice-konto med samma namn.
- Ett tomt lösenord nekas alltid (LDAP skulle annars ta det som en anonym inloggning), ett inaktiverat konto kan inte logga in och namn är undantagna innan de når katalogen.
- Tvåstegsinloggning kan läggas till dessa konton som till alla andra.
Säkerhet
/securityEtt 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.
Mot lösenordsgissning
- Adresser som fortsätter att misslyckas med att logga in blockeras under en tid (Inställningar, Skydd): som standard blockeras adressen i en timme om det sker tio felaktiga inloggningsförsök på en minut. Blockerade adresser listas på Säkerhet (kapitel 60) och kan avblockeras.
- Betrodda nätverk blockeras aldrig: ditt kontorsnätverk.
- SIP-lösenord genereras, minst 12 tecken, ett per anknytning. En telefon som loggar in som en anknytning kan aldrig registrera en annan.
- En scanner som blockeras får inget svar alls, så den lär sig ingenting.
Against fraud
- Extensions can call outside numbers only when allowed.
- Premium-rate numbers are refused unless a route names them.
- The toll-fraud guard (below) judges every call out of the country before it is placed.
- Costs (kapitel 54) alerts on budgets and on runaway spend: many calls to one country in an hour.
- Each extension may have at most four calls at once (Settings, Protection).
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:
| Situation | Vad det gör |
|---|---|
| Ett samtal utomlands till ett land som detta tillägg ringde under de senaste 90 dagarna | låter det passera |
| Ett första samtal till det landet under 90 dagar | lå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ägg | avvisar 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ödnummer | lå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:
- Varje svar kommer med sina skäl: vad som hölls, vad som argumenterades mot det och vad som upphävde det.
- Något som ingen har mätt är okänt, aldrig "nej". När ett okänt kunde ändra svaret, väljer domaren det försiktiga valet och säger vad den inte kunde mäta.
- "Kan inte fastställa" är ett svar: när reglerna lämnar en situation oavgjord, väljer domaren det försiktiga valet och säger så.
- Varje regelbok kontrolleras i varje kombination av dess fakta innan den används (när BitVoice startar och av dess tester): aldrig två val samtidigt, och varje regel är åtkomlig. Skärmen visar hur många situationer var och en kontrollerades i.
Kryptering
- TLS krypterar signalering (port 5061), så lösenord och nummer inte är läsbara på nätverket.
- SRTP krypterar samtalens ljud; webbtelefonen och apparna använder alltid det.
- Webbgränssnittet har HTTPS på port 8443 med sitt eget certifikat, eller ett som du installerar.
Vem kan göra vad
- Administratörer ändrar allt; visare ser allt men ändrar ingenting; personal använder portalen endast för sina egna samtal.
- Aktivera tvåstegs-inloggning för varje administratör (Administratörer (kapitel 57)): en kod från en autentiseringsapp.
- Enkel inloggning (kapitel 58) loggar in personer via er identitetsleverantör.
- Granskningsloggen sparar varje administrativ åtgärd och vem som utförde den, och kan inte redigeras.
Ändringar, säkerhetskopior och import
/changesVarje 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.
Jämföra och återställa
- Vad som ändrats visar skillnaden mellan en revision och den föregående, fält för fält.
- Återställ visar vad återställning skulle ändra och frågar först. Återställning är i sig en ny revision, så den kan också ångras.
Exportera och importera
- Exportera laddar ner hela konfigurationen som en fil (hemligheter utelämnade om du inte ber om dem).
- Importera visar en förhandsgranskning av en fils ändringar innan de tillämpas.
- Importera (kapitel 68) läser också FreePBX- och Asterisk-konfigurationer, 3CX-användarlistor och CSV-exporter från Cisco Unified CM, Avaya och Mitel.
- Arkiv (kapitel 72) kopierar säkerhetskopior, inspelningar och röstbrevlåda till Amazon S3 eller Azure.
Ä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.
Uppdateringar
/updatesAtt 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.
Installera en uppdatering
- Ladda ner den nya versionen och packa upp den. Bredvid programmet är dess signatur från BioDream:
bitvoice.sig, ellerbitvoice.exe.sigpå Windows. - På Uppdateringar (kapitel 62), ladda upp programmet och dess
.sig-fil. - Tryck Installera. Som standard väntar BitVoice tills inga samtal pågår; du kan också installera på en gång.
- 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ör | Uppdateringar accepterar |
|---|---|
| en version, v0.1.3 eller senare | endast program signerade av BioDream |
| v0.1.2 eller tidigare, eller en egen byggnad | alla program: utan nyckel, kan en .sig-fil inte kontrolleras och ignoreras |
Flera servrar som ett telefonisystem
/serversTvå eller flera BitVoice-servrar som delar en PostgreSQL-databas fungerar som ett telefonisystem:
- Ett samtal når en telefon *oavsett vilken server den är registrerad hos*: ringgrupper, köer, överföringar till en anknytning och samtal från leverantörslinjer ringer alla telefoner på varje server.
- *Inställningar* som ändras på en server gäller på alla inom fem sekunder; användare, kontakter, samtalshistorik, inspelningars transkriptioner och texter delas.
- *Upptagna lampor* (BLF) visar telefoner på varje server som ringer och är upptagna; *parkeringsslots* delas, så ett samtal som parkeras på en server kan hämtas från en telefon på en annan; *samtal till alla* når telefoner på varje server; *texter* når skrivbordstelefoner oavsett var de är registrerade.
- En köagent på ett samtal på en server räknas som upptagen på de andra, och en leverantörs linjes kanallimit räknar samtal på varje server.
- *Pågående samtal* på varje server listar samtal på de andra också (endast läsning: lägg på eller lyssna in på den server som har samtalet).
- Samtalsposten skrivs en gång, av den server som har uppringaren, och ett samtal spelas in där också.
*Konfigurera det*
- Flytta den första serverns data till PostgreSQL: Inställningar, *Databas*.
- Starta varje annan server med samma databas:
bitvoice -database postgres://…(eller miljövariabeln BITVOICE_DATABASE). Den ansluter omedelbart; *Servrar* listar den. - 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.
- Informera telefoner om hur de hittar servrarna (nedan).
- 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*:
- *En DNS-namn för varje server*: ett namn som t.ex. pbx.example.com med SRV-poster (_sip._udp, _sip._tcp, _sips._tcp) som listar varje server. Telefoner som BitVoice konfigurerar får namnet, och Servrar kontrollerar posterna mot de igångvarande servrarna, listar vad som saknas och ger posterna att skapa, redo att kopieras.
- *En delad adress*: en outnyttjad adress på servrarnas nätverk, t.ex. 192.168.1.50/24. En igångvarande server håller den i taget och informerar nätverket omedelbart (gratuitous ARP); om den slutar, tar nästa server över adressen inom några sekunder, fortsätter dess samtal och svarar på dess telefoner på samma adress, utan att de registrerar sig igen. Det kräver Linux och behörigheterna NET_ADMIN och NET_RAW (i en container:
--cap-add NET_ADMIN --cap-add NET_RAW), och servrarna på ett nätverk. Starta om varje server efter att ha konfigurerat den.
*Leverantörslinjer.* I varje trunk, anger *Delas mellan servrar* hur:
- *Varje server använder den*: varje server registrerar sig och placerar sina egna samtal. För leverantörer som tillåter flera registreringar på ett konto, eller ingen.
- *En server i taget*: en server registrerar sig och hanterar linjen; de andra visar den som *Reserv, hålls av* den servern och skickar sina samtal ut genom den. Om den slutar, registrerar sig nästa server inom några sekunder. För leverantörer som tillåter en registrering per konto.
*När en server slutar*
- *Samtal fortsätter.* Varje server håller en anteckning om sina samtal i databasen; när en slutar, tar en igångvarande server över varje samtal inom några sekunder, flyttar ljudet till sig själv och informerar båda ändar (en re-INVITE). Det finns ett gap på några sekunder i ljudet. En planerad stopp (en uppgradering, en omstart) överlämnar samtal omedelbart, utan gap.
- Ett samtal vars telefon är registrerad hos den server som tar över, fortsätter där utan att störa den telefonen: endast den andra parten flyttas.
- Dess telefoner fortsätter genom sin reservserver, DNS-namnet eller den delade adressen.
- En server som bara startar om (en uppgradering, en omstart) känner fortfarande till var dess egna telefoner är registrerade: den håller dem i sin datafolder (
registrations.json), så samtal når dem innan de registrerar sig igen. - Health och *Servrar* visar den som slutad; när den kommer tillbaka, tar den inte tillbaka något från den server som tog över.
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).
Där data lagras (SQLite eller PostgreSQL)
/settingsBitVoice 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.
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.
Värd för andra organisationer
/tenantsEn 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.
När man ska använda det
- En leverantör, eller ett IT-företag, som kör telefonsystem för många små kunder på en server.
- En grupp kontor eller kliniker som vill ha separata system, administrerade separat, på delad hårdvara.
- Flera svarspunkter som delar ett system, var och en behåller sina egna svarspersoner och register.
Huvudsystemet är en organisation också: den som den här servern konfigurerades som. Dess administratörer hanterar de andra.
Lägga till en organisation
- Öppna Organisationer (kapitel 65) och tryck Lägg till organisation.
- 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. - 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. - Ställ in dess första administratör: ett användarnamn och ett lösenord på minst 12 tecken, och dess land.
- 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äran | går till |
|---|---|
från en telefon som registrerar sig till pbx.acme.example | organisationen med den domänen |
från en telefon som loggar in som acme.100 | Acme, tillägg 100 |
| från en leverantör, för ett nummer | organisationen vars trunk det kommer från och vars inkommande ruta har det numret |
| allt annat | huvudsystemet |
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änsning | Vad händer vid den |
|---|---|
| Tillägg | att lägga till ett tillägg mer vägras med ett meddelande |
| Samtal samtidigt | nya samtal vägras (503) tills ett avslutas |
| Lagring | nya inspelningar och röstbrevlåda sparas inte |
| AI-begäran per dag | transkriptioner, 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.
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.
Kodningarna
| Kodning | Ljud | Bandbredd | Används av |
|---|---|---|---|
| G.722 | HD (bredband) | 64 kbit/s | de flesta skrivbordstelefoner: det bästa valet mellan dem |
| G.711 µ-law | telefon | 64 kbit/s | Nordamerika och Japan; varje operatör |
| G.711 A-law | telefon | 64 kbit/s | resten av världen |
| Opus | HD, klarar förlust | 24 kbit/s | webbläsare och mobilappar |
| G.729 | telefon, en aning grövre | 8 kbit/s | tunna länkar, några operatörer |
| G.726 (40 kbit/s) | telefon; bäst för modemtoner av G.726-takter | 40 kbit/s | gateways, några DECT-system |
| G.726 (32 kbit/s) | nära telefon | 32 kbit/s | DECT-basstationer, äldre gateways |
| G.726 (24 kbit/s) | mellan 32 och 16 | 24 kbit/s | några DECT-system |
| G.726 (16 kbit/s) | grov | 16 kbit/s | mycket tunna länkar |
| AMR-WB (G.722.2) | HD | 6,6 till 23,85 kbit/s | mobilnätverks HD-röst, VoLTE-interconnects |
| AMR | telefon, mobil | 4,75 till 12,2 kbit/s | mobilnätverk, några operatörer och gateways |
| iLBC | telefon, klarar förlust | 13,3 eller 15,2 kbit/s | äldre mjukvarutelefoner och appar |
| Speex | telefon | 15 kbit/s (2,15 till 24,6) | äldre mjukvarutelefoner, länkar till andra Asterisk-system |
| GSM | grövre | 13 kbit/s | äldre mjukvarutelefoner och gateways |
| G.723.1 | grov; omvandlas endast med ffmpeg | 5,3 eller 6,3 kbit/s | mycket gamla videotelefoner och gateways |
| G.722.1 (Siren 7) | bredband, oförändrad | 24 eller 32 kbit/s | Polycom-telefoner, video- och konferenstelefoner |
| G.722.1C (Siren 14) | super-bredband, oförändrad | 24 till 48 kbit/s | konferenstelefoner, rumssystem |
| G.719 | fullband, oförändrad | 32 till 128 kbit/s | telepresensrumssystem |
| Codec2 | mycket låg bandbredd, oförändrad | 0,7 till 3,2 kbit/s | radiolä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.
Microsoft Teams (Direct Routing)
/trunksBitVoice 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.
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
- 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.
- Trunkar, Lägg till, börja från Microsoft Teams: ange serverns offentliga namn. Skåpet säger om certifikatet täcker det.
- 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.
- 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.
Importera
/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).
Flytta från FreePBX
Den bästa filen är en FreePBX-säkerhetskopia: den innehåller allt, inklusive SIP-lösenord.
- 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.
- Ladda ner säkerhetskopian från dess rad (filen heter något i stil med
20261001-100000-1790000000-17.0.19-1234567.tar.gz). - 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.
- På Importera (kapitel 68), släpp .tar.gz-filen som den är. Läs förhandsgranskningen: varningarna listar allt som inte kan överföras.
- 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.
- 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.
- 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:
- Tillägg: nummer, namn, utgående anroparens ID, ringsignalstid och SIP-lösenord (BitVoice skapar ett nytt när FreePBX:s är kortare än 12 tecken: ange det igen i den telefonen). Röstmeddelanden med PIN och e-postadress (och om meddelanden skickas som bilagor).
- Trunkar: PJSIP och chan_sip operatörskonton: server, port, användarnamn, lösenord, registrering, från domän, codec, anroparens ID, kanallimit. Avstängda trunkar förblir avstängda. DAHDI-trunkar blir Telefonteknikkortstrunken.
- Utgående rutter, i FreePBX:s ordning: varje mönsters prefix blir siffror som tas bort, dess läggtill-siffror läggs till. En ruta vars mönster tar bort eller lägger till olika siffror blir en BitVoice-ruta för varje.
- Ringgrupper: medlemmar, ringsignalstid, ring-alla eller en-efter-en (jakt, minnesjakt, första tillgängliga), och vart obesvarade samtal går.
- Köer: medlemmar med deras straff, strategi (ring alla, minst nyligen, färre samtal, rundringning, linjär, slumpmässig), ringsignalstid, avslutningstid och längsta väntetid.
- Inkommande rutter: varje DID till dess tillägg, ringgrupp, kö, röstmeddelandelåda eller avsluta.
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:
- FreePBX (endast tillägg): Admin → Bulkhanterare → Exportera → Tillägg (CSV).
- Asterisk: pjsip.conf eller sip.conf.
- 3CX: Användare → Exportera (CSV).
- Cisco Unified CM: Bulkadministration → Telefoner → Exportera telefoner, alla detaljer; eller Användare → Exportera användare. Telefonernas första linje blir tillägget, med linjens varselnamn eller etikett som dess namn.
- Avaya IP Office: Manager → Fil → Import/Export → Exportera, Användare.
- Avaya Communication Manager:
list stationsom sparats som CSV; virtuella stationer och VDN:er lämnas utanför. - Mitel MiVoice Business: Systemdatahantering → Användar- och enhetskonfiguration → Exportera.
Grupper och rutter. Ladda upp dem med personalfilen, så att varje gruppmedlemskap hittas med nummer eller namn:
- Cisco Unified CM: Bulkadministration → Import/Export → Exportera, med Line Group, Hunt List, Hunt Pilot, SIP Trunk och Route Pattern markerat; ladda upp .tar-filen som den kommer. Varje jaktledare blir en ringgrupp med medlemmarna i dess jaktlistas linjegrupper, Top Down och Cirkulär som en efter en, Broadcast som alla på en gång, RNA-återställningstiden som ringtiden. Ruttmodeller blir utgående rutter:
9.[2-9]XXXXXXmed PreDot är modell9[2-9]XXXXXXsom släpper 9;!blir en slutpunkt. Modeller som använder@(den nationella planen) listas för att skrivas för hand. - Avaya IP Office: exportera Jaktgrupp samt Användare (båda är CSV utan rubrikrad). Gruppläge är alla på en gång; Jakt, Rotary och Längst Väntande ringer en efter en.
- Avaya Communication Manager:
list hunt-groupsom sparats som CSV, med medlemmarna i en Medlemmar-kolumn eller en separat medlemsfil. - Mitel MiVoice Business: Ringgrupper och Ringgrupptilldelning (Cascade är en efter en, Ring All alla på en gång), och Jaktgrupper.
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.
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).
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.
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.
AMI
Gränssnittet för administratörer på TCP-port 5038 (AMI lyssnar på: den här datorn som standard). Stöds:
| Typ | Namn |
|---|---|
| Åtgärder | Inloggning (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öer | Kö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 |
| Övrigt | Parkerade 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ändelser | Ny 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äran | Vad den gör |
|---|---|
GET /ari/channels | pågående samtal |
POST /ari/channels?endpoint=PJSIP/100&extension=5551234 | ringa 100, sedan ringa numret |
DELETE /ari/channels/{id} | lägga på |
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102 | skicka samtalet till 102 |
/ari/endpoints, /ari/bridges, /ari/asterisk/info | telefoner, broar, version |
/ari/events | en WebSocket för händelser |
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulaw | en 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äran | Vad den gör |
|---|---|
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42 | spelar 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=%23 | spelar 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=123 | skickar tangenter till uppringaren |
GET/POST /ari/channels/{id}/variable?variable=X&value=Y | kanalens variabler |
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETE | blandningsbryggor: alla i en hör alla andra |
POST /ari/channels/{id}/continue?extension=101 | slä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=NAME | ringer 101; besvarat, det går in i applikationen |
GET /ari/applications | applikationerna, om ett program är anslutet och deras kanaler |
POST /ari/channels/{id}/mute?direction=in, DELETE .../mute | tystar vad uppringaren säger (in), vad de hör (out) eller båda |
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silence | musik på håll till uppringaren (ChannelHold, ChannelUnhold), eller tystnad |
GET/POST /ari/channels/{id}/variables | flera variabler på en gång (ChannelVarset) |
POST /ari/channels/{id}/move?app=other | lä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=NAME | en 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 .../dial | en 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_statistics | paket och byte som skickats och mottagits, förlust och jitter |
POST /ari/playbacks/{id}/control?operation=pause | paus, 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, .../mute | kopierar en inspelning; pausar eller tystar en live |
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilter | prenumerationer (kanal:, bro:, slutpunkt:PJSIP/100, enhetsstatus:) och händelsefilter ({"disallowed": [{"type": "ChannelVarset"}]}) |
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSE | telefonernas 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=0 | utgångars röstbrevlådor (100@default), och brevlådor som ett program självt upprätthåller |
GET /ari/sounds | ljuden 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=Hi | en text till utgång 100:s telefoner |
POST /ari/events/user/{name}?application=NAME | en användarhändelse till en applikation (ChannelUserevent) |
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modules | ping, 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ält | Vad det är |
|---|---|
| Skriptnamn | hur destinationer namnger det |
| Adress | en 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 |
| Argument | skickas som agi_arg_1, agi_arg_2 … |
| Nummer att ringa | valfritt: tillägg ringer det som vilket nummer som helst |
| Reserv | vart samtalet går när skriptet slutar utan att välja ett nummer, eller inte kan nås |
| Längsta körning | ett skript som körs längre stoppas (standard en timme) |
| EAGI | fö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):
| Kommandon | Anteckningar |
|---|---|
| ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSE | HANGUP med endast en kanalnamn avslutar endast skriptets eget samtal |
| STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGIT | flyktiga 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 DATETIME | med en taltjänst i Inställningar, AI de uttalas; utan, siffrorna uttalas från Ljud |
| RECORD FILE | s=N tystnad, en signal, flyktiga tangenter; filen hamnar i ljudbiblioteket |
| SET VARIABLE, GET VARIABLE, GET FULL VARIABLE | CALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … och ${NAME}-uttryck |
| DATABASE GET, PUT, DEL, DELTREE | Asterisks databas (AstDB), som BitVoice hanterar och visar under AGI-databas |
| SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSIC | SET EXTENSION är vart samtalet går när skriptet slutar |
| SPEECH CREATE … SPEECH RECOGNIZE | anvä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 |
| EXEC | Svara, 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.
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):
- Låt AI-assistenter ansluta: avstängd som standard. Av,
/mcpsvarar endast att den är avstängd. - Låt assistenter agera: avstängd som standard. Av, assistenter kan endast läsa, oavsett deras token. På, en assistent vars token kan ändra saker får också verktygen som agerar.
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):
- calls_now: pågående samtal.
- call_history: tidigare samtal, sökta efter nummer eller namn, efter riktning och från en tid, med anledning till varför varje samtal gick dit det gick.
- extensions: namn, nummer, avdelningar, e-post; aldrig en telefons lösenord.
- phones_connected: vilka telefoner som är registrerade, varifrån.
- voicemail, search_transcripts: meddelanden och vad som sades under inspelade samtal.
- queues, trunks, health: köer just nu, leverantörslinjer, BitVoices egna kontroller.
- directory, text_messages: företagets telefonbok och textkonversationer.
Agera (med Låt assistenter agera och en token som kan ändra saker):
- place_call: ringa ett samtal. Den anställdes telefon ringer först; när någon svarar där, ringer BitVoice numret åt dem som om de hade valt det, så deras rutter, caller ID och begränsningar gäller.
- send_text: ett textmeddelande från ett av organisationens textningsnummer.
- hang_up_call: avsluta ett pågående samtal.
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å
- Endast token: en webbläsares inloggning till BitVoice når aldrig
/mcp, och en sida på en annan webbplats nekas (Ursprung), så en webbsida kan inte använda en assistentanslutning. - Assistenter kan ha fel. Ge dem en läs-endast-token såvida de inte behöver agera; allt de gjorde är i granskningsloggen, och att ringa ett samtal ringer alltid en persons telefon först.
- Inloggning via OAuth 2.1 som MCP specificerar: assistenten registrerar sig själv (endast offentliga klienter, med PKCE), återgår endast till de adresser den registrerade (https, eller http till sin egen dator), och en kod är giltig en gång, i en minut.
- En organisation som är värd på en annans BitVoice ger sina assistenter token; inloggning via OAuth där har ännu inte testats.
Arkiv
/archiveArkivet 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.
Konfigurera
- På Arkiv (kapitel 72), välj Var arkivera: Amazon S3 eller Azure.
- 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.
- För Azure: en Container SAS-URL med skrivbehörighet, och ett valfritt Mapp i containern.
- 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.
Rättsliga kvarhållningar
/holdsEn 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.
Lägga till en kvarhållning
På Rättsliga kvarhållningar (kapitel 73), tryck Lägg till:
| Fält | Vad det är |
|---|---|
| Namn | vad ärendet heter |
| Anledning | varför, för protokollet |
| Nummer | de extensioner och yttre nummer det omfattar (101, +15551234567), eller Allt |
| Från, Till | de datum det omfattar; tomt för inga begränsningar |
Medan en kvarhållning är aktiv
- Kvarhållning lämnar det som omfattas i fred, oavsett dess ålder.
- Ingen kan radera ett kvarhållet samtal, inspelning eller röstbrevlåda, inklusive administratörer.
- Kvarhållna samtal visar en lås i Samtalshistorik (kapitel 47).
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.
Mätvärden: Prometheus, OpenTelemetry, Grafana, SNMP och samtalshistorik
/settingsPrometheus 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:
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:
- Syslog (RFC 5424, som JSON) över UDP, TCP eller TLS, för en loggservrar eller en SIEM.
- En CSV-fil per dag, med Asterisks Master.csv-kolumner, så rapport- och faktureringsverktyg gjorda för Asterisk kan läsa den. Ladda ner filerna i foten av Samtalshistorik (kapitel 47). Cell som en kalkylblad skulle köra som en formel skrivs säkert.
- En PostgreSQL-tabell i en annan databas, skapad första gången med Asterisks
cdr-kolumner (calldate, clid, src, dst, duration, billsec, disposition, uniqueid…) plus BitVoices riktning, trunk, kostnad och MOS. Varje samtal skrivs en gång.
Skicka en testpost testar syslog-servern och databasen med de sparade inställningarna.
Samtalsgenerator
/loadtestSamtalsgeneratoren 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.
Kör en test
| Inställning | Vad det är |
|---|---|
| Nummer att ringa | ett nummer inom BitVoice: en anknytning, en grupp, en kö, ett menyval |
| Samtal kommer från | det nummer som visas som uppringare |
| Svara som | en anknytning som generatorn svarar för; eller ingen, när numret svarar av sig själv (ett menyval, eko-testet) |
| Samtal | hur många totalt |
| Samtidigt | hur 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 sekund | hur snabbt de startar |
| Varje varar (s) | hur länge varje pratar |
Läsa resultaten
| Resultat | Vad det säger |
|---|---|
| Svarat, Misslyckat | och Varför samtal misslyckades, efter orsak |
| Svarstid, median och 95% | hur länge ringare väntade |
| Ljud förlorat | andelen ljudpaket som aldrig anlände |
| Ljudpoäng | en uppskattning av ljudet (MOS): 4 och över är bra, under 3,6 är dåligt |
| Jitter, 95% av samtal | hur 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 samtal | den 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 paus | hur 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 tid | en graf över belastningen |
SIP-spårning
/traceSIP-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.
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 see | It usually means |
|---|---|
| REGISTER answered 401, then nothing | the phone does not have the password, or has the wrong one |
| REGISTER answered 403 | the address is banned, or the phone signs in as another extension |
| INVITE answered 404 | no route matches the number dialled (Call routing (kapitel 8)) |
| INVITE answered 403 by the provider | the provider refuses the caller ID or the number |
| 486 | the other side is busy |
| 488 | the two sides have no codec in common (Codecs (kapitel 66)) |
| 200 OK, then BYE after about 30 seconds | the ACK never arrived: a router in between rewrites or drops messages (switch off its "SIP ALG") |
| A call connects but nobody hears anything | the sound is blocked: check the public address in Settings, and the media ports in the firewall |
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.
911-samtal (911-profilen)
/psapBitVoice 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.
Konfigurera.
- På Trunkar (kapitel 7), lägg till trunken från din ESInet-leverantör (eller NG911-kärnans ESRP) och aktivera Från ESInet.
- I Samtalsdirigering (kapitel 8), skicka dess samtal till dina call-takers: en kö eller en ringgrupp.
- 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:
- adressen som nätverket skickade (civilt läge), och positionen med hur säker den är (inom så många meter), ritad på kartan med sin osäkerhetscirkel (när en karta är inställd, nedan), och en länk till OpenStreetMap;
- leverantören, tjänstens typ (trådlös, VoIP, bostad, företag), enheten och abonnenten, när samtalet medförde dem (Ytterligare data, RFC 7852);
- allt som gick fel när det lästes.
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: textblocket som CAD-systemen läser (återuppringningsnummer, tjänsteklass, adress, position och osäkerhet, leverantör), skickat via TCP;
- EIDO, incidentdokumentet enligt NENA-STA-024, via HTTPS-POST (med en bearer-token om den är inställd). EIDO på ett samtal visar det. Adressen måste vara
https, eller vanligthttpendast till en CAD på samma dator (http://127.0.0.1:…): en EIDO innehåller uppringarens placering och token, så den korsar aldrig ett nätverk oenkrypterat, ett privat nätverk inkluderat. Samma sak gäller för Skicka radiohändelser till CAD på. Att spara någon annan vanlighttp-adress nekas; en som sparats av en äldre version stannar, så BitVoice startar fortfarande och andra ändringar sparar fortfarande, men ingenting skickas till den och Hälsa (kapitel 13) visar den i rött tills den ändras.
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:
- livevideo visas LIVE; Titta på anroparens video spelar den suddig, och Avslöja (kan vara störande) visar den; Suddiga igen döljer den;
- varje fil visar dess storlek, när den togs (av kamerans egen klocka), var (från dess GPS, när den har någon), och dess SHA-256, tagen när den anlände, så en kopia kan senare visas för att bevisa att den är samma fil; Avslöja öppnar den; Håll som bevis behåller samtalets filer efter kvarhållningsperioden;
- visningslänken under den (WHEP) låter CAD, en enhets skärm eller en annan position titta på samma livevideo, utan att logga in: behandla den som en nyckel.
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.
Radiodispatchkonsol
/radioDispatchers 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.
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).
NG911 Core-tjänster (ECRF, ESRP, LVF, BCF, LIS, loggning)
/coreFö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.
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:
- Policy Store (
/i3/PolicyStore/v1/Policies,/PolicyEnums): agencies store, update and delete their routing policies (Policy Routing Rules), each a JWS signed by the agency that owns it (the signer's certificate must name the owner, and come from the PCA when its roots are set). A policy is kept byte for byte as it came. The ESRP runs them: the OriginationRoutePolicy for This ESRP's incoming queue first, else the NormalNextHopRoutePolicy of the PSAP the ECRF chose. Of the rules whose conditions hold, the highest priority acts; when its route fails (busy, no answer within its rnaTimer, 20 seconds when it gives none), the next one does; a BusyAction answers 600 Busy Everywhere. Conditions taken: time periods, SIP headers, Additional Data, body types, location (circle or civic), call suspicion, queue state (BitVoice's own PSAPs), LoST service URN and Normal-NextHop, call source, request URI, incoming queue, and the SDP offer's media and languages; service state and security posture are taken as unknown (Unreachable and Green, as the standard says). Body-part, CAP and calling-number-verification conditions are not run: they count as false. Without a stored policy, the Policy rules above decide. The tab lists what is stored and lets you paste one, or sign one with this server's certificate. - Discrepancy reports (
/i3/DiscrepancyReports/v1): other agencies report problems with this server's services; each shows on the tab, where you answer it with a resolution, sent to the reporter. File a report sends one to another agency's DR service; its answer and later resolution show under Reports this server filed. - Bad actors (
/i3/BadActor/v1/BadActors, with the BCF): each call the BCF passes on carries its source's ID (Call-Info: <sip:ID>;purpose=emergency-source); a PSAP that finds that source attacking reports the ID, and the BCF refuses its calls, or raises their suspicion score for the policies, for A report lasts hours. Lift ends a report early. - Geocode and MSAG conversion (
/i3/Gcs/v1,/i3/Mcs/v1): civic address to position and back from the LVF's address points (the nearest within 150 m), and civic address to MSAG address (120 N MARKET STREET, HARRISBURG CITY, PA) and back, from the centerlines'MSAGComm_L/MSAGComm_Rfields. Answers are JSON objects, or XML when the asker asks for it. - Additional Data (
/i3/Adr/v1/AdditionalData?callerUri=): blocks you keep by caller (RFC 7852 XML), served by value, or by reference for an asker that wants JSON. One block per caller is served by value: the first kept. - Locator (
/i3/ServiceAgencyLocator/v1): this agency's own record (its ID from the 911 calls page, with its logging and discrepancy addresses) and the agencies you add. - Dequeue (
/i3/DequeueRegistration/v1/Registrations): positions or PSAPs sign up to take a queue's calls (this ESRP's queue, or a PSAP's URI); the ESRP sends calls for that queue to them, the most preferred first (preference 5 before 1), over the PSAP's trunk. - Test calls: a PSAP asks this core to send it test calls (
/i3/TestCall/v1/SendTestCalls/{agency ID}: every so many minutes, five at least, between two dates, with a location); BitVoice places each tourn:service:test.sosover the PSAP's trunk and keeps what came back. Place one now tries one. - PSAP states (SIP, not REST): Subscribe to each PSAP's queue and service state has the ESRP SUBSCRIBE (RFC 6665) to every PSAP listed, over its trunk, for
emergency-QueueStateandemergency-ServiceState(NENA-STA-010.3 4.2.1.3 and 2.4.2), for an hour at a time, renewed before it ends. What the PSAPs NOTIFY shows under PSAP states and is what the policy rules' queue state, service state and security posture conditions read. A PSAP whose queue says Inactive, Disabled, Full or ResourceExhausted (or holds its most calls), or whose service says Unstaffed, ScheduledMaintenanceDown, Overloaded, GoingDown or Down, is passed over for its overflow, and the call's notes say so; when every PSAP in the chain says it cannot take calls, the call is sent as listed anyway, never left with nowhere to go. A PSAP that does not answer the SUBSCRIBE is Unreachable (as the standard says a subscriber must assume) and is tried again each minute; one that refuses it (489, 603 ...) is tried again in ten minutes. - This server's states: Tell other elements this server's element, service and queue state answers SUBSCRIBEs for
emergency-ElementState,emergency-ServiceStateandemergency-QueueStatefrom the addresses under May ask (others get 603 Decline; a queue that is not this server's incoming queue, 488). The queue's length is the 911 calls not yet answered here, and it says Full at Most calls waiting in the queue (20 when blank); the service says Overloaded at this server's call limit, else Normal. NOTIFYs go out when the state changes, at most one a second, and once a minute regardless (the standard's default rates); their bodies are checked against NENA's notify-body schemas.
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.