BitVoice-Handbuch

Ein Open-Source-Telefonsystem in einem Programm, das vollständig im Webinterface eingerichtet wird: Nebenstellen, Warteschleifen, Konferenzräume, das Mitarbeiterportal, gehostete Organisationen und die öffentliche Sicherheitslab-Spur.
79 Kapitel · 63 Abbildungen · 49 Tausend Wörter · BioDream LLC

Inhaltsverzeichnis

  1. Teil 1. Erste Schritte
    1. 1. Erste Schritte
    2. 2. Wie reif jeder Teil ist
    3. 3. Nebenstellen
    4. 4. Telefonanschluss
    5. 5. Skinny-Telefone und MGCP-Gateways
    6. 6. Telefonkarten
    7. 7. Trunks
    8. 8. Anrufweiterleitung
    9. 9. PIN-Sätze
    10. 10. Anruferkennung
    11. 11. Notrufe
    12. 12. Standorte und Büro-911
    13. 13. Gesundheit
    14. 14. Einstellungen
    15. 15. Die Bildschirme in Ihrer Sprache
  2. Teil 2. Wohin Anrufe gehen
    1. 16. Anrufablauf
    2. 17. Ringgruppen
    3. 18. Warteschleifen
    4. 19. Outbound-Dialer
    5. 20. Klänge: Hinweise, Sprachen und Hintergrundmusik
    6. 21. Menüs (Auto-Ansage)
    7. 22. Wähleintrichtung
    8. 23. Wahleingabe (DISA)
    9. 24. Sprachbots (AudioSocket)
    10. 25. Tag/Nacht-Toggle
    11. 26. Zeitpläne
    12. 27. Skripte (JavaScript und Lua)
    13. 28. AI-Empfang, Voicemail-Triage und Anfragen
    14. 29. Voicemail
    15. 30. Rückrufe
    16. 31. Anruf-Links und Webanrufe
  3. Teil 3. Tägliches Telefonieren
    1. 32. Funktionstasten, Weiterleitung und Schnellwahlen
    2. 33. Das Mitarbeiter-Portal
    3. 34. Konferenzräume
    4. 35. Lautsprecher und Überkopflautsprecher
    5. 36. Hot Desking
    6. 37. Hotel- und Weckanrufe
    7. 38. Kontakte auf jedem Telefon
    8. 39. Kalender und "Nicht stören"
    9. 40. Mobile Apps
    10. 41. Videotelefonate
    11. 42. Fax: Senden und Empfangen, Faxgeräte und analoge Telefone
    12. 43. Posteingang: Web-Chat, WhatsApp und Messenger
    13. 44. Geschäftliche Textnachrichten (SMS)
    14. 45. Übertragung von Informationen
  4. Teil 4. Kunden und Einblicke
    1. 46. Aktive Anrufe
    2. 47. Anrufhistorie
    3. 48. Kundentimeline
    4. 49. CRM: Anruferkarten und Anrufliste
    5. 50. Anruf-Einblick für Vorgesetzte
    6. 51. Anrufaufzeichnung und Kartenzahlungen
    7. 52. Aufzeichnungsrecht
    8. 53. Anrufqualität
    9. 54. Kosten und Budgets
    10. 55. Anrufer-ID-Reputation und markierte Anrufe
    11. 56. Spamschutz und STIR/SHAKEN
  5. Teil 5. BitVoice ausführen
    1. 57. Administratoren
    2. 58. Single-Sign-On
    3. 59. Unternehmensverzeichnis (Active Directory und LDAP)
    4. 60. Sicherheit
    5. 61. Änderungen, Backups und Import
    6. 62. Aktualisierungen
    7. 63. Mehrere Server als ein Telefonnetz
    8. 64. Wo die Daten gespeichert werden (SQLite oder PostgreSQL)
    9. 65. Andere Organisationen hosten
    10. 66. Codecs und Ton
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importieren
    13. 69. Konfiguration als Code
    14. 70. Asterisk-Kompatibilität (AMI, ARI und AGI)
    15. 71. Künstliche Intelligenz-Assistenten (MCP)
    16. 72. Archiv
    17. 73. Rechtliche Aufbewahrungen
    18. 74. Metriken: Prometheus, OpenTelemetry, Grafana, SNMP und Anruflisten
    19. 75. Anrufergenerator
    20. 76. SIP-Spur
  6. Teil 6. Öffentliche Sicherheit: der Labortrack
    1. 77. Notrufe (das 911-Profil)
    2. 78. Funk-Dispatch-Konsole
    3. 79. **NG911-Kern-Dienste (ECRF, ESRP, LVF, BCF, LIS, Protokollierung)**
Teil 1

Erste Schritte

Von einer neuen Installation bis zu einem funktionierenden Telefonsystem: Nebenstellen, Telefone, ein Telefonunternehmen, wohin Anrufe gehen, Notruf aus Ihren Büros und wie man erkennt, ob alles bereit ist.

Kapitel 1

Erste Schritte

Im Webinterface: /

BitVoice ist ein vollständiges TelefonSystem in einem Programm: der Vermittlung, in die Telefone einloggen, die Menüs und Warteschleifen, durch die Anrufer navigieren, die Voicemail, die Aufzeichnung, die Konferenzräume, die Faxübertragung und die Verbindungen zu Telefonanbietern. Alles wird im Browser eingerichtet, auf den Bildschirmen, die diese Anleitung beschreibt. Es gibt keine Konfigurationsdatei, die bearbeitet werden muss, und nichts anderes, das installiert werden muss.

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

Was Sie benötigen

Der erste Start

Starten Sie BitVoice und öffnen Sie die Adresse, die es ausgibt (auf einem Desktop öffnet es den Browser selbst). Die Web-Oberfläche ist nur HTTPS, auch auf diesem Computer. Bis Sie ein eigenes Zertifikat installieren (Einstellungen, Zertifikat), verwendet BitVoice eines, das es selbst erstellt hat, sodass der Browser einmal warnt: wählen Sie, um zur Seite fortzufahren. Der Einrichtungsassistent fragt vier Dinge: den Namen der Organisation und des Landes, das Passwort des ersten Administrators, die ersten Rufnummern und Ihren Telefonanbieter, wenn Sie einen haben. Das Land bestimmt die Notrufnummern, die Töne, die Anrufer hören, und die Art, wie Telefonnummern geschrieben werden.

Die erste Stunde

Extensionsone per person1Phonesconnect each one2Trunkyour carrier3Call routingwhere calls go4Healthwhat is missing5Every step has a page in the menu; Health lists anything still missing, emergency calling first.
Abbildung 2. The first hour: five steps from a new install to a working phone system
  1. Rufnummern: eine pro Person oder Schreibtisch. Jede hat eine Nummer und ein SIP-Passwort. Öffnen Sie Rufnummern (Kapitel 3)
  2. Telefone: verbinden Sie ein Bürotelefon, ein Softphone oder das Browser-Telefon mit jeder Rufnummer. Öffnen Sie Telefone (Kapitel 4)
  3. Trunk: Ihr Konto bei einem Telefonanbieter, damit Sie externe Nummern anrufen und angerufen werden können. Öffnen Sie Trunks (Kapitel 7)
  4. Anrufweiterleitung: wohin Anrufe von außen gehen (eine Person, eine Warteschleife, ein Menü), und welcher Trunk für Anrufe von außen verwendet wird. Öffnen Sie Anrufweiterleitung (Kapitel 8)
  5. Gesundheit teilt Ihnen mit, was noch fehlt, beginnend mit der Notrufweiterleitung. Öffnen Sie Gesundheit (Kapitel 13)

Dann führen Sie einen Testanruf durch: von jedem Telefon wählen Sie *43, den Echotest. Sie hören sich selbst zurück, was beweist, dass der Ton in beide Richtungen funktioniert.

Installation in einem Befehl

Auf einem Linux-Server (Ubuntu, Debian, RHEL, Fedora, Alpine mit systemd) oder einem Mac:

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

Auf Windows, in PowerShell:

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

Es lädt die neueste Version für den Computer herunter, überprüft sie gegen die SHA-256-Prüfsummen und die Release-Signatur von BioDream (mit OpenSSL 3 oder sonst mit OpenSSH's ssh-keygen, das Windows 10 und 11, macOS und Ubuntu 20.04 haben; ssh-keygen überprüft Releases ab v0.1.14), und installiert es als Dienst, der automatisch startet:

Führen Sie den gleichen Befehl erneut aus, um zu aktualisieren (oder verwenden Sie Updates (Kapitel 62)). sh -s -- --version v0.1.5 (nach der Pipe) wählt eine Version; --uninstall entfernt das Programm und den Dienst und behält die Daten, --purge entfernt auch die Daten. Unter Windows speichern Sie das Skript und führen .\install.ps1 -Version v0.1.5, -Uninstall oder -Purge aus, oder entfernen Sie es in Installierte Apps. Für einen Server, der nicht mit dem Internet verbunden ist, kopieren Sie das Release-Archiv und SHA256SUMS in einen Ordner und setzen Sie BITVOICE_FROM darauf.

Wo es läuft

BitVoice läuft auf Linux, macOS und Windows.

SystemWie es startenWo seine Daten sind
Linux./bitvoice (oder der systemd-Dienst in der Version)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
WindowsDoppelklicken auf bitvoice.exe%APPDATA%\BitVoice

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

Die Ports, die es verwendet

PortWofür
5060 UDP und TCPSIP: Telefone und Trunks
5061 TCPSIP über TLS (verschlüsselte Signalisierung)
4569 UDPIAX2-Trunks, nur wenn einer eingerichtet ist
1720 TCPH.323-Trunks, nur wenn einer eingerichtet ist
2000 TCPSkinny (SCCP)-Telefone, nur wenn aktiviert
2727 UDPMGCP-Gateways, nur wenn aktiviert
10000–20000 UDPder Klang von Anrufen (RTP), in den Einstellungen festgelegt
8443 TCPdiese Web-Oberfläche, HTTPS nur (plain HTTP wird an HTTPS weitergeleitet)

Wenn ein anderes Telefoniesystem bereits den Port 5060 verwendet, nimmt BitVoice den nächsten freien Port und der Gesundheitszustand teilt es mit.

Alles in der Web-Oberfläche

Jede Einstellung hat einen Bildschirm, und jeder Bildschirm hat ein Kapitel hier. Nichts benötigt eine Konfigurationsdatei, eine Befehlszeile oder ein zweites Tool. Für die Automatisierung sind die gleichen Bildschirme eine REST-API, und die Konfiguration kann einer Datei in Git (Konfiguration als Code (Kapitel 69)) folgen, aber beides ist nie erforderlich.

Wofür BitVoice ist

BitVoice ist zunächst ein Telefoniesystem für Büros und Kontaktcenter und ein gehosteter Telefonieservice für Anbieter: alles in den ersten fünf Teilen dieses Handbuchs. Das 911-Notrufprofil, die Funkleitkonsole und die NG911-Core-Dienste sind eine separate Lab- und Designpartner-Strecke (Öffentliche Sicherheit (Kapitel 77)): sie sind aus dem Menü ausgeschlossen, bis sie in den Einstellungen aktiviert werden, und nicht für den Live-Einsatz zertifiziert. Notrufe von Ihren eigenen Telefonen sind nicht Teil dieser Strecke; sie funktionieren auf jedem Telefoniesystem ab dem ersten Start.

Ihren Weg finden

Kapitel 2

Wie reif jeder Teil ist

Wie weit jeder Teil nachgewiesen wurde, einfach. Feldestgetestet: gegen reale Systeme über ein reales Netzwerk (Amazon EC2, das Internet, reale Anbieterdienste) durchgeführt. Gegen eine Referenz überprüft: gegen eine unabhängige Implementierung oder die eigenen Daten des Standards getestet. Software-getestet: BitVoices eigene Tests und Browser-Tests nur, noch nicht mit realen Geräten oder Konten. Lab: öffentliche Sicherheits-teile, nicht für den Live-Einsatz zertifiziert.

BereichReifeWas es benötigt
SIP-Trunks: Registrierung, Anrufe ein- und ausgehend, Anruferkennung, Besetzt, Tasten (RFC 4733)Feldgetestetein kommerzieller Anbieter, SIP.US (Demo-Konto, von EC2): Registrierung und Anrufe ausgehend an das öffentliche Telefonnetz über UDP und über TLS mit dem Zertifikat des Anbieters; MOS 4,39, kein Verlust. Anrufe ein vom öffentlichen Telefonnetz: T38Fax (Faxanrufe an seine Nummer, Registrierung über UDP). Asterisk als Anbieter über das Internet auf EC2; MOS 4,4. Kamailio 5.7 (Registrierung mit Digest-Authentifizierung über TLS, Anrufe in beide Richtungen, Tasten) und FreeSWITCH 1.11 (TLS und SRTP, Anrufe in beide Richtungen, G.722 zu G.711) als Gegenstelle; MOS 4,39
Schreibtischtelefone über SIPFeldgetestetAsterisk als Schreibtischtelefon über das Internet. Echte Yealink-, Poly- oder Grandstream-Telefone noch nicht ausprobiert
Browser-Telefon (WebRTC)Feldgetestetvon außerhalb zu EC2; Chromium-Browser-Tests mit Ton in beide Richtungen
Zwei Server, ein PostgreSQL, FailoverFeldgetestetkill -9 und geplanter Stopp auf EC2: der Anruf wird fortgesetzt, die Anbieterleitung wird verschoben
Ein-Befehl-InstallationFeldgetestetUbuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (als Administrator und nicht, in PowerShell 5.1 und 7), Ubuntu 20.04 und Fedora 42 in Containern, macOS 26 auf Apple-Silicon (für eine Person und mit sudo für den gesamten Mac in CI); zurück nach einem Neustart
KapazitätFeldgetestet2.000 Anrufe gleichzeitig, kein Verlust, MOS 4,41, auf einem 16-vCPU-c7i.4xlarge (etwa 10 vCPUs beschäftigt); 200 gleichzeitig auf c7g.large, c7i.large, t4g.small, einem M4 und dem Lightsail-Nano. Bei 2.000: Jitter 4,0 ms für 95% der Anrufe, längste Lücke zwischen Paketen 74 ms, längste Pause bei der Garbage-Collection 4,2 ms
FreePBX-Migration (Import)Feldgetestetein reales FreePBX-17.0.33-Backup (70 MB) vollständig importiert; andere aus FreePBX-eigenen Formaten
KI-Transkripte, Zusammenfassungen, EmpfangsdienstFeldgetestetein reales Modell über OpenRouter
Fakten und Zusammenfassungen ohne SprachmodellSoftware-getesteterfundene 911-Anrufe nur: 23 von 43 Fakten (53%) im abgeschlossenen Satz, 3 Fakten, die niemand erwartet hat; 41/41 Training, Halte 27/40 kalt. Noch nie auf realen Anrufen gemessen.
Sprache-zu-Text auf diesem Server (whisper)Feldgetestet auf macOS und Linuxwhisper-Server 1.9.5 von BitVoice ausgeführt: auf einem Mac und auf Ubuntu auf EC2 (x86-64), wo es die Live-Anruf- und Voicemail-Transkripte im Feldtest der Telefon-App schrieb; Downloads für jede Plattform in CI erstellt und getestet
Archivierung in S3, Geheimnisse aus AWS Secrets ManagerFeldgetestetreales AWS, unser eigenes SigV4
SNMP-Überwachung und FallenFeldgetestetnet-snmp's snmpwalk und snmptrapd
Let's EncryptFeldgetestetgibt das Zertifikat der öffentlichen Demo aus und erneuert es
Maschinenbilder (AWS) und Konfiguration als CodeFeldgetestetein EC2-Image von deploy/cloud/build-images.sh aus Ubuntu 24.04 erstellt: jeder Server von ihm startet neu; deploy/terraform mit OpenTofu 1.13 (erstellen, ändern, kein Drift, zerstören). Azure-Images noch nicht ausprobiert
IAX2-TrunksGegen eine Referenz überprüftAsterisk 23
Vollständiger ICE hinter NAT (STUN- und TURN-Client)Gegen eine Referenz überprüftChromiums ICE-Agent (Host-Kandidaten und Relay nur), JsSIP-Softphones mit BitVoice-Angebot, coturn 4.18 und BitVoices eigener TURN-Server als Relays, mDNS-Host-Namen von Chromium aufgelöst. Noch nicht von einem Server hinter einem realen NAT-Router aus versucht
ICE-Neustart (ein Telefon wechselt das Netzwerk während eines Anrufs)Gegen eine Referenz überprüftChromium startet ICE auf einem Browser-Telefonanruf (BitVoice als ICE-lite und als vollständiger Agent) und SIP.js 0.21 startet durch Re-INVITE über SIP über WebSocket neu: neue Anmeldeinformationen in beide Richtungen, ein neues Kandidatenpaar, Ton alle halbe Sekunde während des Neustarts. Noch nicht auf einem Telefon versucht, das tatsächlich von Wi-Fi zu einem Mobilfunknetz wechselt
SIP-History-Info und Diversion (weitergeleitete Anrufe)Gegen eine Referenz überprüftAsterisk 20's PJSIP in beide Richtungen: seine weitergeleiteten Anrufe von BitVoice gelesen, und BitVoices Weiterleitungen von Asterisk's REDIRECTING() aus History-Info allein und aus Diversion allein gelesen; RFC 7044-Einträge beibehalten und erweitert bei einer Weiterleitung. Noch nicht mit einem Anbieter oder Teams versucht, die sie senden
Firmenverzeichnis (LDAP, Active Directory)Gegen eine Referenz überprüftOpenLDAP 2.4 (StartTLS und LDAPS, 1.203 Personen über Paging gelesen, Gruppen, Anmeldung) und Samba 4's Active Directory (LDAPS, Paging, deaktivierte Konten ausgelassen, verschachtelte Gruppen für Klingelgruppen und Rollen). Noch nicht gegen Microsofts eigenen Windows-Server-Domänencontroller versucht
ARI (Asterisk REST Interface)Gegen eine Referenz überprüftjeder Vorgang von Asterisks veröffentlichtem ARI aufgerufen und seine Antwort mit den erforderlichen Feldern des Modells verglichen; ari-client 2.2.0, Asterisks JavaScript-Bibliothek, liest /ari/api-docs und führt eine Anwendung aus
Jeder-Video-Räume (SFU, Simulcast) und BildschirmfreigabeGegen eine Referenz überprüftdrei Chromium-Browser in einem Raum, jeder sendet drei Größen (VP8-Simulcast) und empfängt die beiden anderen; Größen bei Keyframes gewechselt, wenn Kacheln wachsen und schrumpfen. Kameras und ein gemeinsamer Bildschirm (Chromiums eigene Bildschirmaufnahme) in einem H.264-Raum. Noch nicht mit Firefox oder Safari, über das Internet oder mit mehr als drei Kameras versucht; H.264-Simulcast wählt Schichten nach der Reihenfolge des Browsers aus.
AGI und FastAGI (Asterisk Gateway Interface)Gegen eine Referenz überprüftjede Antwort eines Befehls mit Asterisk 20.6's über FastAGI verglichen; ein FastAGI-Server mit pyst2 geschrieben, der einen Anruf ausführt; EAGI-Audio an ein Programm. Noch nicht mit einem Produktions-IVR versucht
KI-Assistenten über MCPGegen eine Referenz überprüftdas offizielle MCP-TypeScript-SDK (1.32.2) als Client: Tools aufgelistet und mit einem API-Token über Streamable HTTP (Protokoll 2025-11-25) aufgerufen, und seine OAuth-Anmeldung von Ende zu Ende (Entdeckung, Registrierung, PKCE, Token, Aktualisierung); die Zustimmungsseite in Chromium; die stdio-Brücke gegen einen Testserver. Noch nicht mit Claude, ChatGPT oder einem anderen Assistenten selbst versucht, der einen Server benötigt, der von Internet aus erreichbar ist und ein vertrauenswürdiges Zertifikat hat.
Microsoft 365 und Google Workspace (Kontakte und Kalender)Software-getestetgegen Stellvertreter von Microsoft Graph (Benutzer, Organisationen, Kontakte, Kalender getSchedule, Client-Zertifikat-Token) und von Google's People API, Calendar freeBusy und JWT-Bearer-Token, die aus ihren veröffentlichten Referenzen erstellt wurden; die Stellvertreter überprüfen, was BitVoice sendet (die JWT-Signatur und -Ansprüche, Paging, Anforderungskörper). Noch nicht mit einem realen Microsoft 365-Mandanten oder Google-Workspace-Domäne versucht.
Die Bildschirme in 14 SprachenSoftware-getestetjeder Text, den die Bildschirme anzeigen (etwa 5.000, aus dem Code: JSX-Text, Zeichenfolgen und die Nachrichten des Servers), maschinell übersetzt von Llama 3.3 70B in 13 Sprachen, 99% beibehalten durch die Überprüfungen (die gleichen Platzhalter, Adressen und Codes unverändert); Deutsch durch die Browser-Tests (Anmeldung, Menü, Suche, ein Formular, zurück zu Englisch) gezeichnet. Noch nicht von einer Person in irgendeiner Sprache überprüft.
H.323-TrunksGegen eine Referenz überprüftH323Plus 1.28 (sein simph323 spielt und zeichnet WAV-Dateien auf) auf EC2: Anrufe in beide Richtungen mit Fast Connect und G.711, jede Seite hört den Ton der anderen, MOS 4,39; Anrufaufbau auch mit Asterisks chan_ooh323 (dessen eigener Ton in Asterisk 22 defekt ist)
SIP über WebSocketGegen eine Referenz überprüftJsSIP und SIP.js
Codecs: GSM, G.726, iLBC, MP3-HaltungsmusikGegen eine Referenz überprüftffmpeg, das RFC 3951-Referenzprogramm und minimp3, Beispiel für Beispiel
Codecs: G.711, G.722, G.729, Opus, SpeexGegen eine Referenz überprüftG.711 und G.722 Byte für Byte und Beispiel für Beispiel mit spandsp; G.729s Decoder-Beispiel für Beispiel auf allen sieben von ITU's eigenen Annex-A-Testvektoren (bcg729 ist nicht), sein Encoder interworking mit bcg729 bei gleicher Qualität (G.729 erfordert keine übereinstimmenden Encoder); Opus-Pakete von libopus 1.6.1 decodiert und libopus-Pakete wie libopus decodiert; Speex-Pakete und Ton identisch mit libspeex 1.2.1; Opus-Anrufe mit der Android-App
Codecs: AMR-NB, AMR-WBGegen eine Referenz überprüft, mit einer bekannten LückeAMR-WB decodiert wie opencore-amr Beispiel für Beispiel, und auf 3GPP's eigenen TS 26.174-Testsequenzen stimmt es mit 3GPP's Decoder auf 167 von 198 überein und ist nie messbar niedriger (etwa 31 dB von opencore). Beide stammen aus den festgepinnten goamr-Bibliotheken
Codecs, die unverändert übertragen werden: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2Software-getesteteigene Tests: mit ihrer Bitrate oder ihrem Modus angeboten, beantwortet, Pakete in beide Richtungen Byte für Byte; nicht konvertiert (kein freies Referenzcode, den BitVoice mitliefern darf, für G.722.1 und G.719). Noch nicht mit einem realen Polycom- oder Konferenzsystem versucht
ISDN-PRI und BRI, T1/E1Gegen eine Referenz überprüftlibpri (Asterisks), beide Seiten; und auf EC2 durch den realen DAHDI 3.4-Kernel-Treiber (zwei Spannen verkabelt im Kernel, Asterisk 20's chan_dahdi als Telefonanbieter): Anrufe in beide Richtungen mit Nummern und Namen, alle 23 Kanäle gleichzeitig, MOS 4,39. Keine physische Karte oder Leitung noch versucht
MFC-R2, E&MGegen eine Referenz überprüftOpenR2; MF-Töne durch unsere eigenen Tests. Keine reale Karte oder Leitung noch versucht
SS7 (ISUP, MTP, Link-Sätze mit mehreren Links und Umschaltung)Gegen eine Referenz überprüftlibss7 (Asterisks chan_dahdi-Bibliothek), ITU und ANSI. Kein reales Anbieter-Link noch versucht
Fax (T.30, T.38)Feldgetestetein Fax-Anbieter, T38Fax (kostenloses Testkonto, von EC2): BitVoice sendet ein Fax über das öffentliche Telefonnetz an seine eigene Nummer und empfängt es, beides über T.38 (2 Seiten, 14.400 Bit/s, die Seiten kamen unversehrt an; Registrierung mit Benutzername und Passwort); und ein Fax zwischen einem Faxgerät auf einem Gateway (Asterisk mit spandsp, das für eines steht) und T38Fax durch BitVoice, hinaus und zurück, 2 Seiten bei 14.400 Bit/s in beide Richtungen: einmal alles auf G.711 (das Gateway weigert sich, T.38 zu akzeptieren) und einmal auf T.38 auf beiden Seiten umgeschaltet. spandsp (über Asterisk 20) auf EC2: empfängt und sendet über T.38 mit Fehlerkorrektur, und leitet Faxe zwischen zwei anderen Maschinen über T.38 und über G.711. Kein Hardware-Fax-Gateway noch versucht, und T38Fax hat nie T.38 selbst angefordert, so dass ein Anbieter-Wechsel durch das Gateway nicht gesehen wurde
Bereitstellung: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberDataSoftware-getestetdie Formate der Hersteller; nicht auf realen Telefonen
Skinny (SCCP)-Telefone, MGCP-GatewaysGegen eine Referenz überprüftSkinny: Telefone aus der Open-Source-mwicat/sccp-Bibliothek, jede Nachricht von Wiresharks Dissector gelesen, Größen wie Asterisks chan_skinny; MGCP: Yate's MGCP-Gateway (Neustart, vorläufige Antworten, Bestätigungen; es hat keine analogen Anschlüsse, also keinen Anruf). Kein Cisco-Telefon- oder Gateway-Hardware noch versucht
Microsoft Teams Direct RoutingSoftware-getestetgegen ein simuliertes Microsoft-Proxy, das Microsofts veröffentlichte Direct-Routing-SIP-Regeln befolgt (OPTIONS, Contact, user=phone, Client-Zertifikat, Übertragungen, die Teams anfordert, durch REFER mit x-m und x-t); kein Teams-Mandant noch versucht: Microsoft bietet keinen kostenlosen (Teams Phone-Lizenzen)
Hotel (FIAS)Gegen eine Referenz überprüftjeder Datensatz, den BitVoice sendet, überprüft gegen Oracle's veröffentlichte FIAS 2.20.23-Spezifikation (Link-Start, Link-Datensätze, Postings, Weckantworten); eigene Tests. Noch nicht gegen Opera selbst
Textnachrichten, WhatsApp, Messenger, Web-ChatGegen eine Referenz überprüft (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp)Textnachrichten durch Twilio, Telnyx, Bandwidth, Vonage und TextMagic, und WhatsApp-Textnachrichten, Vorlagen und Vorlagenlisten, gegen Mocks erstellt aus den veröffentlichten OpenAPI-Spezifikationen der Anbieter (Stoplight Prism, ablehnt alles, was die Spezifikation nicht erlaubt; TextMagics ist die, aus der sein Client generiert wird). Vonage's zeigte, dass der Schlüssel in HTTP-Basic gehört, nicht mehr im Formular. SignalWire spricht Twilios API; Plivo, Flowroute, VoIP.ms und Messenger veröffentlichen keine Spezifikation und werden gegen Stellvertreter überprüft, die aus ihrer Dokumentation erstellt wurden. Kein Live-Konto noch versucht
CRM-Anruferkarten, Azure Blob, Azure Key VaultGegen eine Referenz überprüftEspoCRM (eine reale Open-Source-CRM, in Docker) für Anruferkarten; Microsofts Azurite-Emulator für Blob-Uploads (Container-SAS, Ablehnungen); Lowkey Vault für Key Vault mit einer verwalteten Identität. Noch nicht gegen Azure selbst oder eine gehostete CRM
Spam-Schutz: Roboter-Test, unbekannte Anrufer, Spam-Datenbank, *32, VorschlägeSoftware-getestetBitVoices eigene Tests: ein Anbieter, der über SIP anruft und Tasten (RFC 4733) drückt, den Roboter-Test, bestanden und nicht bestanden; bekannte, immer erlaubte und Notruf-Anrufer klingeln gleichzeitig; die Spam-Datenbank gegen einen Stellvertreter, der wie Twilio seine Lookup mit dem Nomorobo-Add-on beantwortet (kein Twilio-Konto noch versucht); *32 von einem Schreibtischtelefon; Vorschläge aus Anrufprotokollen; die Einstellungen durch die Browser-Tests. Noch nicht gegen reale Robocalls oder eine bezahlte Datenbank
iPhone- und Android-AppsFeldgetestet (Android)Android: ein Google Pixel 8 (Android 16, Wi-Fi) mit dem signierten Release-Build gegen BitVoice auf EC2 mit einem Let's-Encrypt-Zertifikat: gekoppelt durch Link, klingelte mit Androids Anrufbenachrichtigung, beantwortet von dort, Ton in beide Richtungen, verbunden geblieben, wenn der Bildschirm ausgeschaltet war und im Hintergrund (seine laufende-Anruf-Benachrichtigung, Auflegen); ohne Push klingelt es nicht im Hintergrund. Ein Google Pixel 11 (Android 17) in AWS Device Farm: gekoppelt, klingelte, beantwortet, angerufen; Opus, MOS 4,1. iPhone: die App (SwiftUI, CallKit, PushKit VoIP) baut gegen das aktuelle SDK (Xcode 27) und der Server signiert Apple VoIP-Pushes (APNs, ES256); die gleichen realen Geräte-Fixes wie Android und eine App-Store-Listung (ios/AppStore) sind vorhanden. Beide Apps sind eine vollständige Erweiterung: Übertragung (blind, über REFER), Halten und ein zweiter Anruf, Tastatur und Stummschalten, mit Letzten Anrufen, visueller Voicemail (mit Transkripten), einem Team-Busy-Lamp, Kontakten, dem Mitarbeiter-Chat (Kollegen mit Anwesenheit, direkten Nachrichten und Räumen, mit einer Benachrichtigung im Hintergrund und einem Push, wenn die App geschlossen ist) und einem Live-KI-Transkript auf dem Anruf (AI.LiveCallTranscripts); Übertragung, Halten, das Live-Transkript, der Chat, der einen Kollegen erreicht, die Raumliste, ein Raum, der von einem Telefon beigetreten wird, und der Chat-Push formen sind jeweils von einem Engine-Level-, API- oder Browser-Test abgedeckt. Auf dem Pixel 8 (2026-10-30, Debug-Build, EC2 mit Let's Encrypt): klingelte und beantwortet von der Benachrichtigung, gehalten und wieder aufgenommen (der Android-Anrufzustand folgt), angerufen auf dem Android-Anrufsystem, Opus in beide Richtungen mit MOS 4,38 und kein Verlust; einem Video-Raum beigetreten mit seiner Kamera (abgerufen bei erstem Gebrauch) und sah eine Desktop-Kamera, beide live; eine Chat-Nachricht im Hintergrund benachrichtigte und öffnete Chat. Halten und Übertragung erreichen den nativen Anrufsbildschirm (CallKit, Telecom). Noch nicht auf einem iPhone ausgeführt oder eingereicht: Push, das System-Anrufsbildschirm und die Signierung benötigen unser eigenes Apple-Entwicklerkonto
911-Profil, Funkkonsolen, NG911-Core-Dienste, Anrufer-VideoLaborNENAs Schemata und Beispieldaten, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, ein NIST P25-Capture (seine IMBE-Sprachrahmen entpackt wie mbelib: gleiche Tonhöhe, Obertöne, Stimme und Amplituden); nie auf einem Live-ESInet, P25-System oder PSAP-CAD und nicht zertifiziert
P25-Phase-2-Halbtrate-Sprache (AMBE+2)Nicht angebotenpatentiert bis 2028
Ed448-Signaturen (NENA)Nicht angebotennicht in Go's Standardbibliothek, und BitVoice schreibt keine Kryptographie selbst; Ed25519 wird verwendet
SS7-Signaltransfer (STP), SCCP und TCAPGegen eine Referenz überprüftOsmoSTP 2.3.0 über M3UA/TCP mit libosmo-sigtrans SCCP-Echo-Benutzer dahinter: UDT und XUDT in beide Richtungen, UDTS zurückgegeben, globale Titelübersetzung durch den STP, ein Switch auf einem Link-Set, der den Echo über IP erreicht; TCAP gegen libosmo-asn1-tcap in beide Richtungen. ITU nur; kein SCTP, verbindungsorientierter SCCP oder SCCP-Verwaltung; kein reales Anbieter-Link noch versucht
MFC-R2-China-Variante (China Nr. 1)Software-getestetjeder Signal eines Anrufs überprüft gegen Cisco's veröffentlichte China-Tabellen und Anrufsequenzen (KA, KD, Gruppe B durch den gesendeten KD, C und D-Bits 11). OpenR2's China-Variante stimmt nicht mit sich selbst überein, also kein Programm, um es zu testen; kein reales Leitungs-Test
ALI über PAM oder E2Nicht angebotenPAM ist Intrados eigenes Protokoll mit keiner veröffentlichten Spezifikation; E2 (J-STD-036, NENA 05-001) läuft zwischen einem Mobilfunk-Positionierungszentrum und der ALI-Datenbank, nicht zu einem PSAP. BitVoice spricht die Anfrage- und Text-ALI-Links und HELD statt
Kapitel 3

Nebenstellen

Im Webinterface: /extensions

Eine Nebenstelle ist eine Nummer für eine Person oder einen Schreibtisch. Telefone melden sich mit der Nebenstellennummer und ihrem SIP-Passwort an; Anrufe an diese Nummer lassen alle Telefone, die unter dieser Nummer angemeldet sind, gleichzeitig klingeln.

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

Eine Erweiterung hinzufügen

  1. Öffnen Sie Erweiterungen (Kapitel 3) und drücken Sie Erweiterung hinzufügen. Die nächste freie Nummer und ein starkes SIP-Passwort werden automatisch ausgefüllt.
  2. Geben Sie den Namen der Person ein (Name, der auf anderen Telefonen angezeigt wird, wenn sie anrufen) und die E-Mail-Adresse (für Voicemail per E-Mail).
  3. Füllen Sie den 911-Standort aus: den Standort, die Etage und das Zimmer. Er wird mit Notrufen gesendet.
  4. Wählen Sie, was passiert, wenn niemand antwortet: Voicemail standardmäßig oder eine andere Erweiterung, eine Gruppe oder ein Menü.
  5. Speichern Sie. Die Erweiterung kann sich sofort anmelden.

Die Felder

FeldWas es tut
Nummer2 bis 8 Ziffern; keine andere Nebenstelle, Gruppe, Warteschleife, Raum oder Funktionscode darf diese Nummer haben
SIP-Passwortmit dem sich das Telefon anmeldet; mindestens 12 Zeichen; Generieren erstellt ein neues
Klingeln fürSekunden, bevor Wenn niemand antwortet eintritt (standardmäßig 25)
Außenkennungdie Nummer, die auf ausgehenden Anrufen angezeigt wird; leer verwendet die Kennung des Trunks
Kann externe Nummern anrufendeaktiviert, um das Telefon auf interne Anrufe und Notrufnummern zu beschränken
Anrufe aufzeichnenwenn die Einstellungen nur ausgewählte Nebenstellen aufzeichnen
Hot Deskein gemeinsam genutztes Telefon, das zu dem wird, der sich daran anmeldet
Anrufe an dieses Telefon verschlüsselnMedienverschlüsselung (SRTP); verwenden Sie dies mit TLS, um die Schlüssel privat zu halten
Abteilunggruppiert die Anrufkosten dieser Nebenstelle

Follow-me, Pickup und Intercom

Jede Person hat ihre eigene Anrufbehandlung in ihrem eigenen Bereich auf der Nebenstelle:

Weiterleitung im Moment

Unter den Einstellungen zeigt Weiterleitung im Moment an und ändert, was die Person von ihrem Telefon oder dem Mitarbeiterportal aus eingestellt hat: nicht stören und Weiterleitung aller Anrufe, von Anrufen während der Beschäftigung und von Anrufen, die nicht beantwortet werden. Dies sind Live-Zustände, keine Konfiguration: Änderungen hier haben keine Revision zur Folge.

Was verbunden ist

Verbundene Geräte

Eine geöffnete Nebenstelle zeigt jedes Gerät an, das als diese angemeldet ist: die Marke und das Modell des Telefons, wie es verbunden ist (UDP, TCP, TLS oder Browser) und seit wann. Die Adresse und der Port, den ein Telefon benötigt, werden auch dort angezeigt.

Kapitel 4

Telefonanschluss

Im Webinterface: /phones

Jedes SIP-Telefon oder jede App funktioniert: Richten Sie es auf die Adresse und den Port 5060 dieses Servers aus, mit der Nebenstellennummer als Benutzer und dem SIP-Passwort. Schreibtische von den vier großen Herstellern werden automatisch eingerichtet, sodass niemand ein Passwort in die Tastatur eines Telefons eingeben muss.

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

Automatische Einrichtung (Provisioning)

  1. Auf Telefone (Kapitel 4) drücken Sie Telefon hinzufügen und geben die MAC-Adresse des Telefons ein (auf einem Aufkleber auf der Unterseite) und die Erweiterung, zu der es gehört.
  2. Wählen Sie die Marke: Yealink, Poly, Grandstream (einschließlich der HT-Analog-Adapter), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo oder CyberData.
  3. Informieren Sie das Telefon darüber, wo BitVoice ist: in Ihrem DHCP-Server setzen Sie Option 66 auf die auf dem Bildschirm angezeigte Provisionierungsadresse, damit jedes Telefon im Netzwerk es automatisch findet; oder geben Sie die gleiche Adresse auf der Web-Seite des Telefons unter Auto-Provisionierung ein.
  4. Starten Sie das Telefon neu. Es lädt seine Datei über HTTPS, meldet sich an und seine Leitungstasten zeigen, wer am Telefon ist.

HTTPS oder einfaches HTTP. Telefone laden ihre Datei über HTTPS, wenn sie können. Einige ältere Telefone können HTTPS überhaupt nicht verwenden und viele vertrauen dem Zertifikat, das BitVoice selbst erstellt hat, nicht; für diese zeigt der Bildschirm auch eine einfache http://-Adresse auf demselben Port an. Einfaches HTTP ist nur für diese Dateien: Jede andere Seite geht immer noch zu HTTPS. Über einfaches HTTP überquert das SIP-Passwort des Telefons das Netz unverschlüsselt, also halten Sie es in einem vertrauenswürdigen Büronetz oder installieren Sie ein Zertifikat von einer Behörde und schalten Sie HTTPS nur für Telefone ein.

Die Datei enthält die Nebenstelle, ihr Passwort, die Zeitzone, die Codecs, die Besetzt-Lampen-Tasten und die Adresse dieses Servers. Die Provisionierung ist durch einen Benutzernamen und ein Passwort geschützt, das den Telefonen einmal gegeben wird.

HerstellerGetestete ModelleWas es erhält
YealinkT3x, T4x, T5xKonto, BLF-Tasten, Zeit, Codecs
PolyVVX, Edge Edasselbe, im eigenen Format von Poly
GrandstreamGRP, GXP, HT802/814Konto pro Port auf Adaptern
SnomD7xxKonto, Tasten, Zeit

Diese Hersteller werden auch provisioniert, mit Dateien, die im Format jedes Herstellers erstellt werden, aber noch nicht auf ihren Geräten getestet wurden (der Bildschirm Telefone markiert sie als ungetestet):

HerstellerModelleDatei, die das Gerät anfordert
FanvilX- und V-Serieseine MAC-Adresse .cfg
Cisco6800, 7800, 8800 Multiplatform (3PCC), SPA-Adapterseine MAC-Adresse .xml (Unternehmens-Firmware benötigt zuerst die Multiplatform-Firmware)
Mitel (Aastra)6800, 6900 SIPseine MAC-Adresse .cfg, in Großbuchstaben
SangomaS-Seriedie Fanvil-Format-Datei
AlgoLautsprecher, Warngeräte, Adapteralgop und seine MAC-Adresse .conf
CyberDataLautsprecher, Intercoms, Paging-Adapterseine MAC-Adresse .xml

Jedes erhält sein Konto, den Server (und den Backup-Server, bei mehreren Servern), den Transport und die Verschlüsselung sowie die Voicemail-Nummer, wenn vorhanden. Setzen Sie die Erweiterungen von Algo- und CyberData-Lautsprechern auf Lautsprecher , damit Anrufe sofort beantwortet werden.

Telefone ohne Provisioning

Softphones und andere Marken benötigen die gleichen drei Dinge: Server (die Adresse dieses Computers, Port 5060 oder 5061 mit TLS), Benutzer (die Erweiterungsnummer) und Passwort (das SIP-Passwort). Die Gesundheitsliste zeigt Telefone an, die ein falsches Passwort versucht haben; nach einigen Versuchen wird die Adresse für eine Weile gesperrt (siehe Sicherheit (Kapitel 60)).

Das Browser-Telefon

Das Telefon-Symbol am unteren Rand jedes Bildschirms macht diesen Browser zu einem Telefon für eine Erweiterung, mit Ihrem Mikrofon und Lautsprecher. Es verwendet WebRTC: der Ton ist Ende-zu-Ende verschlüsselt und funktioniert durch die meisten Firewalls ohne jegliche Einstellung.

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.

Das WebSocket benötigt keine eigene Anmeldung: das Softphone meldet sich mit SIP an, und fehlgeschlagene Anmeldungen und zu viele Anfragen werden für seine eigene Adresse gezählt, wie für jedes Telefon. Eine Softphone-Seite, die von einem anderen Standort bereitgestellt wird, muss das Zertifikat dieses Servers vertrauen (verwenden Sie Let's Encrypt), und der aktuelle Chrome fragt den Benutzer, bevor eine öffentliche Web-Seite einen Server im lokalen Netzwerk erreichen kann.

Getestet mit zwei unabhängigen Bibliotheken, JsSIP 3.13 und SIP.js 0.21: zwei Softphones von jedem registrieren, rufen einander an und hören einander durch BitVoice. Andere Softphones (Linphones Web-Client, Zoipers) sprechen das gleiche Protokoll, aber wurden nicht ausprobiert.

TURN, für Netzwerke, die UDP blockieren

Einige Netzwerke (Hotels, Gast-WiFi, strenge Firmen-Feuerwände) lassen kein UDP heraus oder verstecken Computer hinter NATs, die WebRTC nicht durchdringen kann. Für diese schalten Sie den TURN-Server in Einstellungen (Kapitel 14) ein: BitVoice führt dann seinen eigenen TURN-Server (RFC 8656) auf Port 3478 (UDP und TCP) und, mit diesem Server-Zertifikat, auf Port 5349 über TLS aus. Browser-Telefone, das Personal-Telefon und Anruf-Links erhalten kurzlebige Anmeldeinformationen für es und verwenden es, wenn sie die Medien-Ports nicht direkt erreichen können; der Sound ist immer noch verschlüsselt, und BitVoice leitet ihn nur an seine eigenen Adressen weiter, so dass niemand es verwenden kann, um etwas anderes zu erreichen.

Öffnen Sie den TURN-Port, den TLS-Port und die Relay-Ports (49152 bis 49407, es sei denn, Sie ändern sie) in der Firewall. TURN über TLS benötigt ein Zertifikat, das Browser für den Namen, den sie verwenden, vertrauen, wie z. B. eines von Let's Encrypt (Kapitel 14): bis ein solches vorliegt, bietet BitVoice es Browsern nicht an (sie würden es versuchen, fehlschlagen und warten), und bietet es an, sobald das Zertifikat eintrifft; setzen Sie seinen Port auf 443 auf einem Server mit einer freien Adresse, um durch Feuerwände zu gelangen, die nur HTTPS zulassen.

Netzwechsel während eines Anrufs

Ein Telefon, das während eines Anrufs in ein anderes Netz wechselt (z. B. vom Büro-WLAN in ein mobiles Netz oder von einem Laptop von einem WLAN zu einem anderen), erhält eine neue Adresse, und der alte Pfad hört auf, Ton zu übertragen. Browser-Telefone und die BitVoice-Apps erkennen dies automatisch: Wenn der Browser angibt, dass das Netzwerk gewechselt hat, oder der Pfad des Anrufs für zwei Sekunden nicht antwortet, startet das Telefon den ICE-Neustart (RFC 8445 9). Es bietet neue ICE-Anmeldeinformationen für den aktuellen Anruf an, BitVoice antwortet mit neuen eigenen und überprüft den neuen Pfad, und der Anruf wechselt ohne erneutes Wählen auf diesen. Die Verschlüsselung wird mit den gleichen Schlüsseln fortgesetzt. Währenddessen zeigt der Anruf Wiederverbinden… an; auf einem Pfad, der noch funktioniert, gibt es keine Lücke, da der alte Pfad den Anruf bis zum Eintreffen des Tons auf dem neuen Pfad aufrechterhält. SIP-Softphones über WebSocket (JsSIP, SIP.js) funktionieren auf die gleiche Weise durch eine erneute INVITE mit neuen ICE-Anmeldeinformationen. Mit BitVoice als ICE-lite oder hinter NAT muss nichts umgeschaltet werden.

BitVoice hinter NAT

Der oben erwähnte TURN-Server hilft Browsern in strengen Netzwerken, eine BitVoice-Instanz zu erreichen, die eine öffentliche Adresse hat. Wenn BitVoice selbst keine öffentliche Adresse hat (in einem Büro hinter einem Router ohne Portweiterleitung oder in einem Cloud-Netzwerk ohne öffentliche Adresse auf dem Computer), aktivieren Sie Dieser Server ist hinter NAT unter BitVoice hinter NAT in Einstellungen (Kapitel 14). BitVoice nimmt dann vollständig an ICE (RFC 8445) teil, anstatt auf eine Adresse zu antworten (ICE-lite):

Das Mitarbeiter-Telefon

Öffnen Sie #/phone auf jedem Computer oder mobilen Browser: Mitarbeiter melden sich mit ihrer Erweiterung und SIP-Passwort an, ohne ein Administratorkonto zu benötigen. Es ist ein vollständiges Telefon: Wählen, Annehmen, Halten, Weiterleiten und die Tastatur. Für ihre eigene Weiterleitung und Voicemail verwenden sie das Mitarbeiter-Portal unter #/me (siehe Das Mitarbeiter-Portal (Kapitel 33)).

Die mobilen Apps

Die BitVoice-Apps für iPhone und Android werden über die Erweiterungsseite mit einem QR-Code gepairt. Anrufe wecken die App durch die Push-Dienste von Apple und Google, sodass sie auch klingelt, wenn sie geschlossen ist (sobald die Push-Einrichtung abgeschlossen ist; siehe unten).

Kapitel 5

Skinny-Telefone und MGCP-Gateways

Im Webinterface: /desk-phones

Telefone und Gateways, die kein SIP sprechen, können dennoch verwendet werden. Skinny-Telefone und MGCP-Gateways (unter Anrufe) unterstützen zwei ältere Protokolle:

Jedes Skinny-Telefon oder MGCP-Gerät ist ein weiteres Gerät seiner Nebenstelle: es klingelt mit den anderen Telefonen der Nebenstelle, ruft aus als die Nebenstelle und wird in den Geräten der Nebenstelle angezeigt. Die Seite zeigt den Zustand jedes Geräts an.

Was funktioniert

Halten, Übertragen und Konferenz werden derzeit von den anderen Telefonen der Nebenstelle durchgeführt, und eine zweite Leitung eines Skinny-Telefons wird nicht verwendet.

Sicherheit

Kein Protokoll verwendet Passwörter. Skinny-Telefone werden nur aus dem lokalen Netzwerk und nur dann akzeptiert, wenn sie aufgeführt sind; MGCP-Befehle werden nur von der Adresse des Gateways (oder ohne eine, vom lokalen Netzwerk) befolgt. Halten Sie beide Ports vom Internet fern.

Ein Gateway, das noch an einem Befehl arbeitet, antwortet möglicherweise zunächst mit "100 Trying": BitVoice wartet dann länger, bevor es den Befehl erneut sendet und die endgültige Antwort (000) bestätigt, wie es RFC 3435 verlangt. Ein Port, den das Gateway nicht überwacht, zeigt die Ablehnung des Gateways auf der Seite an, wie z.B. das Gateway hat abgelehnt, den Port zu überwachen: 507 Nicht unterstützte Funktionalität von einem Medien-Gateway ohne analoge Ports.

Wie sie getestet werden

Kapitel 6

Telefonkarten

Im Webinterface: /cards

Eine Telefonkarte im BitVoice-Computer (Digium, Sangoma, OpenVox und andere Karten mit Linux-DAHDI-Treibern) kann analoge Telefone und Telefonleitungen tragen. Ein separates Programm, bitvoice-dahdi, steuert die Karte und verbindet ihre Ports mit BitVoice über die Netzwerkverbindung des Computers, sodass BitVoice selbst nie den Kernel-Treiber berührt und ein Kartenproblem das Telefon-System nicht stoppen kann.

Einrichten

  1. Installieren Sie die DAHDI-Treiber und richten Sie die Ports wie üblich in /etc/dahdi/system.conf ein (fxoks=1-4 für Ports mit Telefonen, fxsks=5-8 für Ports mit Leitungen und die Töne des Landes in loadzone und defaultzone), dann führen Sie dahdi_cfg aus.
  2. Unter Telefonkarten (unter Anrufe) schalten Sie Telefonkarten verwenden ein. Ein Token wird erstellt; kopieren Sie es in eine Datei, die nur root lesen kann, wie z.B. /etc/bitvoice/cards.token.
  3. Fügen Sie jeden Port nach seiner DAHDI-Kanalnummer hinzu: ein Telefon-Port (FXS, ein Telefon, Fax oder Tür-Telefon, das angeschlossen ist) mit seiner Nebenstelle, oder ein Leitungs-Port (FXO, eine Telefon-Leitung) mit der Leitungs-Nummer. Wählen Sie A-Gesetz für Europa und den größten Teil der Welt, µ-Gesetz für Nord-Amerika und Japan.
  4. Für Leitungen fügen Sie einen Trunk mit dem Protokoll Telefonkarten-Leitungen auf Trunks hinzu und leiten Zahlen darauf um, wie auf jeden Trunk; eingehende Routen entsprechen jeder Leitungs-Nummer.
  5. Starten Sie bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token als Dienst-Benutzer, der /dev/dahdi öffnen darf. Es befindet sich im Linux-Download neben bitvoice. Die Seite zeigt, ob es läuft und den Zustand jedes Ports; Änderungen erreichen es innerhalb von zehn Sekunden. Ein Kanal, den ein anderes Programm noch hält (oder den dahdi_cfg noch nicht eingerichtet hat), wird alle zwei Sekunden erneut versucht, sodass die Reihenfolge, in der Dinge starten, keine Rolle spielt.

Was funktioniert

Digitale Leitungen: T1 und E1 PRI

Eine T1- (23 Anrufe auf einmal) oder E1-Leitung (30) läuft als primäre ISDN-Rate und wird in eine digitale Karte (Digium/Sangoma TE-Serie, OpenVox D-Serie und ähnliche) gesteckt. BitVoice spricht das PRI selbst (Q.921 auf dem D-Kanal und Q.931-Anrufsteuerung), sodass jeder Anruf mit der gewählten Nummer und der Anrufer-ID hereinkommt, ausgeht mit der Anrufer-ID der Nebenstelle und die Vermittlungsstelle sagt, wenn das fernende Ende antwortet, klingelt oder besetzt ist.

  1. Richten Sie in /etc/dahdi/system.conf den Span für PRI wie üblich ein (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 für eine T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 für eine E1) und führen Sie dahdi_cfg aus.
  2. Unter Digitale Leitungen auf Telefonkarten (Kapitel 6) fügen Sie den Span hinzu: T1 oder E1, seine erste DAHDI-Kanalnummer, ob BitVoice die Nebenstelle auf der Leitung der Vermittlungsstelle ist (normalerweise) oder das Netzwerk (eine andere Nebenstelle verbindet sich mit BitVoice, als ob mit der Vermittlungsstelle), und die Schaltart, die die Vermittlungsstelle Ihnen gegeben hat.
  3. Fügen Sie den Karten-Trunk auf Trunks hinzu, wenn es noch keinen gibt, und eingehende Routen für die Zahlen (DIDs), die die Vermittlungsstelle sendet.

Ausgehende Anrufe nehmen ein PRI zuerst, die analogen Leitungen danach; eine besetzte Nummer, eine falsche Nummer oder kein freier Kanal kommt als besetzt, nicht gefunden oder nicht verfügbar zurück, wie das Netzwerk sagt. Die Seite zeigt, ob der D-Kanal jedes Spans auf ist und wie viele seiner Kanäle in Anrufen sind. T1-Kanäle, die mit robbed-bit-Signalisierung eingerichtet sind (fxsks, fxoks), funktionieren wie die analogen Ports oben.

Namen, Weiterleitungen und Übertragungen. Der Name des Anrufers wird mit dem Anruf übertragen (vom Display-Element oder bei National ISDN-2 vom Namen, den das Netzwerk als Einrichtung sendet) und auf den Telefonen angezeigt; ausgehende Anrufe senden den Namen der Nebenstelle auf die gleiche Weise. Die Nummer, von der ein Anruf weitergeleitet wurde, wird als Umleitungsnummer übertragen (BitVoice leitet sie als SIP-Diversion mit dem Grund weiter: besetzt, keine Antwort, bedingungslos), und wenn eine Nebenstelle eine Weiterleitung sendet, die einen Anruf auf dem PRI zurücksendet, wird die Nummer der Nebenstelle als Umleitungsnummer übertragen, damit die Gegenseite und die Telefonfirma wissen, wessen Anruf es ist. Wenn ein externer Anruf beantwortet wird, teilt BitVoice dem Netzwerk die Nummer mit, die den Anruf beantwortet hat (die verbundene Nummer).

Schalten Sie Weiterleitungen über die Telefonfirma auf einem Span (Benutzerseite, National ISDN-2, 5ESS, DMS-100 oder EuroISDN) ein und wenn jemand einen Anruf auf dieser Leitung an eine andere Nummer auf der gleichen Leitung weiterleitet, bittet BitVoice das Netzwerk, die beiden Anrufe selbst zu verbinden: Zwei B-Kanal-Weiterleitung auf National ISDN-2- und 5ESS-Leitungen, Release-Link-Trunk-Weiterleitung auf einer Nortel-DMS-100, explizite Anrufweiterleitung (der Anrufer wird gehalten und dann verbunden) auf EuroISDN. Ein DMS-100 gibt einen Weiterleitungsidentifikator nur für Anrufe aus, die BitVoice platziert, also muss einer der beiden Anrufe ein ausgehender Anruf sein (der übliche Fall: ein Anrufer, der an eine externe Nummer weitergeleitet oder übertragen wird). Beide Kanäle werden sofort freigegeben, sobald das Netzwerk sie verbunden hat. Die Leitung benötigt den Dienst (anfordern Sie bei der Telefonfirma "Zwei B-Kanal-Weiterleitung" oder "ECT"); wenn das Netzwerk ablehnt, funktioniert die Weiterleitung dennoch über BitVoice, wobei beide Kanäle wie zuvor verwendet werden. Auf einem Span, auf dem BitVoice die Netzseite ist, kann ein anderer PBX BitVoice auffordern, zwei seiner Anrufe zu verbinden; BitVoice lehnt ab (es ist kein Switch), und der PBX behält die Anrufe selbst.

Ausprobieren ohne Karte

DAHDI's eigene dynamische Spans können als Karte dienen: zwei Spans, die innerhalb des Kernels verbunden sind, BitVoice auf einem und ein anderer PBX (Asterisk's chan_dahdi, sagen wir) als die Telefonfirma auf dem anderen. Laden Sie dahdi, dahdi_dynamic und dahdi_dynamic_loc, und in /etc/dahdi/system.conf:

dynamic=loc,1:0,24,0
dynamic=loc,1:1,24,0
bchan=1-23
dchan=24
bchan=25-47
dchan=48

Lassen Sie die letzte Nummer (Zeit) auf 0 auf beiden: DAHDI's eigener Timer treibt sie dann an. Spans, die jeweils die Zeitquelle des anderen sind, ticken nur, wenn der andere sendet, und der D-Kanal kommt und geht. Fügen Sie Span 1 hier als T1 (erster Kanal 1) hinzu und stellen Sie den anderen PBX als Netzseite auf den Kanälen 25 bis 48 ein.

Basisrate-ISDN (BRI)

Ein BRI überträgt zwei Anrufe gleichzeitig (B1 und B2) und ist in Europa für kleine Büros verbreitet; es verbindet auch ISDN-Schreibtischtelefone. BRI-Karten (Digium B410P, die HFC-basierten Karten von OpenVox, Junghanns und anderen) funktionieren über DAHDI wie die PRI-Karten: in /etc/dahdi/system.conf ist der Span span=1,1,0,ccs,ami mit bchan=1-2 und hardhdlc=3. Fügen Sie es unter Digitale Leitungen mit BRI als Leitungstyp hinzu; seine Kanäle sind B1, B2 und dann der D-Kanal.

Namen, Weiterleitungen, Übertragungen auf EuroISDN (explizite Anrufweiterleitung) und Gebührenhinweise funktionieren auf einem BRI wie auf einem PRI.

E&M-Trunks auf einem T1

Ein T1, dessen Kanäle als E&M (gekappte-Bit-Signalisierung: e&m=1-24 in /etc/dahdi/system.conf) eingerichtet sind, bietet 24 Trunks, die jeweils auf ihrem eigenen signalisiert werden: Verbindungsleitungen zu einem anderen PBX, Kanalbanken und Ferngesprächsträger-Feature-Group-D-Trunks. Unter Digitale Leitungen fügen Sie einen T1 hinzu und setzen Signalisierung auf E&M, dann:

Ein Ausgangsruf belegt eine freie Trunk, nimmt sie in Anspruch, wartet auf das Startsignal (kein Wink innerhalb von fünf Sekunden ist "kein Wink" und der Anruf schlägt fehl), sendet die Nummer und wird beantwortet, wenn das entfernte Ende den Hörer abnimmt (Antwortüberwachung). Ein eingehender Anruf wird beantwortet, indem der Hörer abgenommen wird, wenn die Erweiterung antwortet.

CAMA-Trunks (911, Lab-Track). Ein PSAP, das noch von einem 911-Selektivrouten über CAMA-Trunks gespeist wird, setzt Startsignal auf CAMA (911-Trunk). Der Router nimmt die Trunk in Anspruch, BitVoice winkt und der Router sendet die Rufnummer des Anrufers (ANI) in MF: erweitertes CAMA als KP, zwei Informationsziffern und alle zehn Ziffern, ST; traditionelles CAMA als KP, eine Nummernplanziffer und sieben Ziffern, ST. Für traditionelles CAMA listen Sie unter Area-Codes für NPD 0 bis 3 den Area-Code auf, den jede Nummernplanziffer darstellt (die Konfigurationsseite Ihres Routers enthält diese Informationen); eine Ziffer über 3 bedeutet, dass der Router die Leitung nicht identifizieren konnte. Jeder Anruf geht an die Eingangsroute für 911 als 911-Anruf, mit der ANI als Rückrufnummer, und BitVoice sucht die Lage anhand dieser Nummer auf (siehe 911-Anrufe (Kapitel 77), Ortsabfrage (ALI)). Die Informationsziffern werden im Anruf als CAMA (II 00) angezeigt.

MFC-R2 auf einer E1

In Lateinamerika, Teilen Asiens und Afrikas sind E1-Leitungen oft MFC-R2 anstelle von ISDN: 30 Kreise, von denen jeder seine Leitungszeichen auf den A- und B-Bits des Timeslots 16 (ITU-T Q.421) und seine Nummer, die Kategorie des Anrufers und die Nummer des Anrufers in erzwungenen Mehrfrequenztönen (Q.441) austauscht, vorwärts und rückwärts. Richten Sie den Span auf CAS in /etc/dahdi/system.conf ein (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan entfernt), dann fügen Sie unter Digitale Leitungen eine E1 hinzu, setzen Sie Signalisierung auf MFC-R2 und wählen Sie die Ländervariante: ITU-T, Argentinien, Brasilien, China, Kolumbien, Tschechische Republik, Ecuador, Mexiko, Philippinen oder Venezuela. Jedes Land weist einige Signale anders zu (was besetzt bedeutet, wie das Ende der Nummer angezeigt wird, Mexikos zusätzliche Gruppe C); die Variante enthält diese. China Nr. 1 fordert die Klasse des Anrufers (KA) und die Nummer nach der gewählten Nummer an, sendet den Anruftyp (KD: 3, ein lokaler Anruf) zuletzt, liest Besetzt und Inaktiv durch den gesendeten KD und setzt die C- und D-Bits beide auf 1: Dort schreiben Sie cas=1-15:1111 und cas=17-31:1111.

Jeder Kreis überträgt Anrufe in beide Richtungen. Ein eingehender Anruf erreicht die eingehenden Routen mit der gewählten Nummer und der Nummer des Anrufers (unterdrückte Nummern kommen als anonym herein); ein besetztes Telefon oder eine falsche Nummer wird als besetzt oder nicht zugewiesen signalisiert, wie die Variante angibt. Ein ausgehender Anruf sendet die Nummer und die Absenderkennung des Telefons oder das Signal "Nummer unterdrückt", wenn der Anrufer es versteckt.

Die MFC-R2-Signalisierung wird gegen OpenR2 (die R2-Bibliothek, die chan_dahdi von Asterisk verwendet) getestet, in jeder angebotenen Variante und in beiden Richtungen, einschließlich eines abgelehnten Anrufs als busy; E&M gegen BitVoices eigene simulierte Kanäle.

SS7

Ein Carrier kann T1s oder E1s übertragen, die durch SS7 und nicht durch ISDN signalisiert werden: die Sprachkreise führen Anrufe durch, von denen jeder durch einen Kreisidentifikationscode (CIC) benannt wird, und ein Timeslot führt die Signalisierungsverbindung zum Signaltransferpunkt oder Switch des Carriers über, über den ISUP die Anrufe einrichtet. BitVoice ist dann ein Signalisierungspunkt mit einem Punktkode, den der Carrier zuweist. Stellen Sie in /etc/dahdi/system.conf den Span als klare Kanäle mit dem Signalisierungstimeslot als mtp2 oder hardhdlc ein (Timeslot 16 auf einem E1, 24 auf einem T1). Fügen Sie unter Digitale Leitungen den Span hinzu, setzen Sie Signalisierung auf SS7 (ISUP) und geben Sie:

Link-Sätze mit mehreren Links. Spans mit der gleichen Variante, Punktkodes und Netz sind ein Link-Satz (bis zu 16 Links): Jeder Signalisierungslink des Spans ist ein Link, und benötigt seinen eigenen Link-Code, und alle Kreise jedes Spans gehören dazu (ihre CICs dürfen sich nicht überlappen). Der Verkehr wird zwischen den Links, die in Betrieb sind, durch die SLS-Nachrichten geteilt, sodass die Nachrichten eines Anrufs immer auf einem Link bleiben. Wenn ein Link ausfällt (der Link-Test bleibt unbeantwortet oder Nachrichten werden nicht bestätigt), ändert sich der Verkehr auf die anderen Links (Q.704: COO und COA, die Nachrichten, die das entfernte Ende nicht erhalten hat, werden auf einem anderen Link erneut gesendet; oder, wenn innerhalb der Zeit keine Antwort erfolgt, durch Zeit), die Anrufe auf jedem Span bleiben bestehen, und Telefonkarten zeigt, wie viele Links in Betrieb sind und wie dieser Span steht. Wenn der Link wieder verfügbar ist und getestet wurde, ändert sich der Verkehr zurück (CBD und CBA). Nur wenn alle Links ausfallen, ist der Link-Satz aus.

Wenn die Verbindung hergestellt ist, richtet BitVoice sie aus (MTP-Ebene 2, wobei die Notfallprüfungsperiode als einzelne Link-Link-Menge verwendet wird), testet sie mit dem Link-Test (SLTM/SLTA), tauscht den Verkehr neu zu und setzt jeden Kreis (GRS) zurück. Anrufe, die erreicht werden, gelangen zu den eingehenden Routen mit der gewählten Nummer, der Nummer des Anrufers (unterdrückte als anonym), der Nummer, von der der Anruf weitergeleitet wurde, und auf ANSI die Name des Anrufers; ausgehende Anrufe übertragen die Anruferkennung und den Namen der Nebenstelle. Die Sperrung oder Zurücksetzung von Kreisen durch den Träger wird beachtet. Bei doppelter Beschlagnahme behält das Ende mit dem höheren Punktkode die geraden Kreise, wie in Q.764 angegeben, und BitVoice nimmt die Kreise, die es zuerst behält.

SS7 wird gegen libss7 (die SS7-Bibliothek, die Asterisks chan_dahdi verwendet) getestet, ITU und ANSI: Ausrichtung, Link-Test, Verkehrswiederherstellung, Kreisrücksetzung, Anrufe in beide Richtungen mit Nummern und Namen, Freigabe, Besetzt und Sperrung; und BitVoice gegen sich selbst mit verlorenen Frames auf dem Link (durch MTP2-Fehlerkorrektur erneut gesendet) und einer doppelten Beschlagnahme. Signalübertragung (als STP für andere) und SCCP/TCAP (Nummernportabilitätsabfragen, gebührenfreie Übersetzung) werden nicht angeboten: Ein PBX ist ein Endpunkt, und diese sind die des Trägers.

Signalübertragungspunkt (STP). bitvoice-dahdi kann auch ein STP für seine ITU-SS7-Link-Sätze sein: Schalten Sie Signalübertragungspunkt (SS7) unter den digitalen Leitungen ein. Sein STP-Punktcode ist der eigene der Spans. Mit Nachrichten für andere Punktcodes weiterleiten wird eine Nachricht von einem Link-Satz für den benachbarten Punkt eines anderen an diesen Link-Satz gesendet, und eine für jeden anderen Punktcode wird an den IP-STP (M3UA) gesendet: Ein IP-STP oder Signalisierungs-Gateway bei Host:Port, das über M3UA (RFC 4666) über TCP erreicht wird, dessen Nachrichten für die Punktcodes der Link-Sätze auf dem gleichen Weg zurückkommen (BitVoice registriert seinen Punktcode und die dahinter liegenden, sofern kein Routing-Kontext angegeben ist). Global-Titel-Übersetzung sendet SCCP-Nachrichten, die an den STP durch Global-Titel adressiert sind, an den Punktcode und das Subsystem des längsten übereinstimmenden Präfixes, wie ein SCCP-Relay es tut. Eine Nachricht, die nicht zugestellt werden kann, kommt als UDTS oder XUDTS zurück, wenn sie dies angefordert hat: Keine Übersetzung, keine Route (MTP-Fehler), kein Subsystem hier oder sein Hop-Zähler ist abgelaufen. Der Status des STP zeigt den M3UA-Link und wie viele Nachrichten er weitergeleitet, übersetzt und zurückgegeben hat. Seine SCCP (UDT, XUDT, UDTS, XUDTS) und TCAP (Beginn, Fortsetzung, Ende, Abbruch, Dialoge und Komponenten) werden gegen Osmocom überprüft: OsmoSTP über M3UA, libosmo-sigtran's SCCP-Echo-Benutzer dahinter und libosmo-asn1-tcap's eigener TCAP-Coder in beide Richtungen. SCTP wird nicht angeboten (Go hat keines): M3UA läuft über TCP, was OsmoSTP und viele IP-STPs akzeptieren. Verbindungsbasiertes SCCP, ANSI-Link-Sätze und SCCP-Verwaltung (SST, SSA) werden nicht angeboten.

Kostenhinweis. Auf einer EuroISDN-Leitung schaltet man Kostenhinweis ein und BitVoice fragt das Telefonunternehmen bei jedem ausgehenden Anruf, was es kostet: während des Anrufs (AOC-D) und am Ende des Anrufs (AOC-E), in Geld oder in Abrechnungseinheiten. Der letzte Betrag wird auf dem Anrufszettel (1,50 EUR berechnet in der Historie und neben dem Anruf auf Kosten) aufgeführt; wenn er in der eigenen Währung (auf Kosten eingestellt) ist, ist es die Kosten des Anrufs, anstelle des Betrags aus den Tarifen des Trunking. Das Telefonunternehmen muss den Dienst auf der Leitung anbieten. SIP-Trunking kann denselben Hinweis senden, als 3GPP-AOC-XML in einem INFO- oder BYE, und BitVoice behält es auf dieselbe Weise.

Der PRI-Code wird gegen libpri (die ISDN-Bibliothek, die Asterisk verwendet) getestet, sowohl als Benutzerseite als auch als Netzseite, für National-ISDN-2- und EuroISDN-Anrufe, Namen, Umleitungen und verbundene Nummern, explizite Anrufweiterleitung, den Two-B-Channel-Transfer und DMS-100-Release-Link-Trunk-Anfragen Byte für Byte (mit libpri's PBX, die von BitVoice als DMS-100 verbunden ist) und Kostenhinweis in beide Richtungen; und auf BRI, Punkt-zu-Punkt und Mehrpunkt, als Terminal und als Netz (TEI-Zuweisung, Anrufe, die an den Bus gesendet werden, Zahlen, die Ziffer für Ziffer gewählt werden).

Noch nicht: Anruferkennung, die auf analogen Telefone angezeigt wird oder von analogen Leitungen gelesen wird, Klingelton und Echo-Unterdrückung über das, was die Karte selbst tut, hinaus.

Kapitel 7

Trunks

Im Webinterface: /trunks

Ein Trunk ist Ihr Konto bei einem Telefonanbieter. Er trägt Anrufe zu und von externen Nummern. Die meisten sind SIP-Trunks; ein Asterisk- oder FreePBX-Server oder ein IAX2-Anbieter kann mit IAX2 anstelle von SIP erreicht werden.

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

Eine SIP-Trunk hinzufügen

  1. Auf Trunks (Kapitel 7) drücken Sie Trunk hinzufügen.
  2. Geben Sie den Provider-Server ein, den Ihr Telefonanbieter Ihnen gegeben hat (sip.provider.com), und den Port, wenn er nicht 5060 ist.
  3. Geben Sie den Benutzernamen und das Passwort ein und schalten Sie Registrieren ein, wenn der Provider es sagt (die meisten tun dies).
  4. Speichern Sie. Innerhalb weniger Sekunden zeigt der Trunk registriert an; wenn nicht, wird der Grund neben ihm angezeigt.

Der Trunk-Gesundheits-Richter

Mit zwei oder mehr Trunks auf einer ausgehenden Route urteilt BitVoice alle 15 Sekunden, ob jeder Trunk an seinem Platz verwendet wird oder nach den anderen Trunks. Ein Trunk rückt hinter die anderen, wenn sein Provider die Keep-Alive-Abfragen nicht mehr beantwortet oder wenn seine letzten Anrufe aus auf der Provider-Seite fehlgeschlagen sind (Fehlanrufe in Folge innerhalb von Innerhalb (Minuten), Einstellungen, Trunk-Gesundheits-Richter), und ein anderer Trunk funktioniert. Er wird nicht verschoben, wenn nur die Keep-Alive-Abfrage fehlschlägt, während Anrufe durch ihn noch durchgehen; und wenn alle Trunks gleichzeitig fehlschlagen, ist die wahrscheinliche Ursache dieser Systems eigene Internet-Verbindung, so dass nichts verschoben wird. Eine Änderung benötigt zwei Urteile in Folge (30 Sekunden), so dass ein Trunk nie flattert. Ein Trunk wird nie vollständig entfernt: er wird immer noch versucht, wenn die anderen fehlschlagen, so dass ein Notruf immer jeden Weg nach außen hat. Die Trunk-Seite zeigt das Urteil und seine Gründe an; ein Anruf, der auf einem anderen Weg gegangen ist, sagt dies in seinem Protokoll an.

  1. Fügen Sie eine eingehende Route für Ihre Nummer und eine ausgehende Route hinzu, die diesen Trunk verwendet (Anruf-Weiterleitung (Kapitel 8)).
FieldWhat it does
TransportUDP (usual), TCP, or TLS for encrypted signalling
Registersign in every few minutes, so the provider knows where to send calls
Authentication usernameonly when the provider gives a separate one
From domainthe domain in the caller's address, when the provider asks for one
Caller IDthe number shown on calls out; an extension's own caller ID wins
Also accept calls fromthe provider's other addresses or networks that send calls in. Calls from this computer by phones registered here, and the built-in call generator's, are never taken as the trunk's, even when it allows 127.0.0.1
Calls at oncethe limit your plan allows; calls beyond it go to the next trunk in the route
Encrypt mediaSRTP, for providers that support it. A provider that answers without it still gets the call, unencrypted, and Call history marks the call Not encrypted
Require encryption(with Encrypt media) refuse what the provider will not encrypt: a call out it answers without SRTP is hung up, and a call in it sends without SRTP is refused; Call history says why
Codecsleave it on *same as Settings*, or choose what this provider supports, best first
Rateswhat calls cost by number prefix, for Costs (Kapitel 54)

Cloud-Anbieter

Starten von füllt Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector oder Azure Communication Services aus, mit einer Notiz darüber, was auf deren Seite einzurichten ist. Teams wird in seinem eigenen Kapitel beschrieben (Microsoft Teams (Kapitel 67)).

IAX2-Trunks zu Asterisk und FreePBX

Wählen Sie IAX2 als Protokoll, um einen anderen Asterisk- oder FreePBX-Server oder einen IAX2-Anbieter zu verbinden. IAX2 überträgt Signalisierung und Sound auf einem UDP-Port, 4569, was es einfach durch Firewalls macht.

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

Auf der Asterisk-Seite reicht ein Peer wie dieser aus:

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

Der IAX2-Port 4569 wird nur geöffnet, wenn der erste IAX2-Trunk hinzugefügt wird, sodass ein auf demselben Computer laufender Asterisk-Server bis dahin wartet.

H.323-Trunks

Wählen Sie H.323 als Protokoll für ältere Gateways, PBX-Systeme und Videokonferenzsysteme, die H.323, aber nicht SIP sprechen. Geben Sie die Gateway-Adresse ein (Port 1720); Anrufe werden nur von diesem akzeptiert. Anrufe werden mit Fast Connect und G.711 (µ-law oder A-law; die Codec-Liste des Trunks kann es auf eines einschränken) aufgebaut, und der Sound geht direkt zwischen dem Gateway und den Medien-Ports von BitVoice. BitVoice wandelt es in das um, was die andere Partei verwendet.

H.323 hier ist absichtlich klein: kein Gatekeeper (RAS), kein H.245 (also erhält ein Gateway, das Fast Connect nicht verwenden wird, keinen Anruf und wird entsprechend informiert), kein Video, keine H.235-Sicherheit. Die Anruferkennung kommt aus der Q.931-Rufnummer oder dem Alias der gewählten Ziffern, der Name aus der Anzeige oder seiner H.323-ID. Die H.225.0- und H.245-Codierung von BitVoice wurde gegen einen unabhängigen ASN.1-Encoder überprüft, aber noch nicht gegen Gateway-Hardware.

Weitergeleitete Anrufe

Wenn ein Anruf bereits weitergeleitet wurde (jemandes Nummer an Ihre weitergeleitet oder ein Teams-Benutzer), teilt der Anbieter dies mit History-Info (RFC 7044) oder Diversion (RFC 5806) mit. BitVoice liest beides: Anrufliste (Kapitel 47) zeigt weitergeleitet von die Nummer an, die es weitergeleitet hat, mit der ursprünglich gewählten Nummer und dem Grund im Tooltip, der Anrufverlauf sagt es in Worten und der Anrufdatensatz speichert es (forwardedFrom, original, forwardReason). Wenn der Anbieter die Privatsphäre der Anrufhistorie verlangt, werden die Nummern nicht gespeichert.

Wenn eine Erweiterung einen Anruf über einen Trunk weiterleitet (alle Anrufe, wenn besetzt, wenn niemand antwortet), wird dem Anbieter mitgeteilt, welche Erweiterung den Anruf weitergeleitet hat und warum, damit er Ihre Nummer anzeigen und die richtige Rechnung stellen kann: standardmäßig mit beiden Headern und mit der Anrufhistorie, die beibehalten und der Weiterleitung hinzugefügt wird. Ein Anbieter, der von einem der Header verwirrt ist, kann unter Erweitert, Weitergeleitete Anrufe zeigen, wem sie gehören auf den anderen umgestellt werden. Bei einer T1/E1-Telefonkarte wird jeder Header zur Umleitungsnummer des Netzwerks.

Was der Status bedeutet

StatusBedeutung
registriertangemeldet; Anrufe können eintreffen
bereitmeldet sich nicht an oder IAX2 wartet auf Anrufe
nicht erreichbarder Servername ist nicht im DNS oder nichts antwortet
fehlgeschlagender Anbieter hat die Anmeldung abgelehnt; der Grund wird angezeigt
BereitschaftServer teilen sich diesen Trunk abwechselnd und ein anderer hält ihn
Kapitel 8

Anrufweiterleitung

Im Webinterface: /routes

Die Anrufweiterleitung entscheidet über zwei Dinge: wohin Anrufe von außen gehen, basierend auf der gewählten Nummer, und welchen Trunk Anrufe zu externen Nummern verwenden.

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

Eingehende Routen

Jede eingehende Route entspricht der gewählten Nummer (oder jeder Nummer) und leitet den Anruf an ein Ziel weiter: eine Erweiterung, eine Ringgruppe, eine Warteschleife, ein Menü, einen Zeitplan, ein Skript, einen Konferenzraum, einen AI-Empfang oder eine Voicemail. Nummern entsprechen in jeder Form: +1 212 555 0100, 2125550100 und 12125550100 sind gleich.

Ausgehende Routen

Ausgehende Routen entsprechen dem, was die Leute wählen, basierend auf einem Muster, und leiten es an Trunks in der Reihenfolge weiter: wenn der erste down oder voll ist, wird der nächste versucht.

Dialled2125550199Emergency 911Long distance 1NXXNXXXXXXLocal NXXNXXXXXXInternational 011.matchTrunk AfirstTrunk Bif A failsN is 2–9, X is any digit, . is anything more; emergency numbers never fail for want of a pattern.
Abbildung 8. Outgoing routes: the first pattern that matches, its trunks in order
MusterEntsprechung
Xjede Ziffer
Z1 bis 9
N2 bis 9
[1-5]eine von mehreren
. am Endeeine oder mehrere weitere Ziffern
NXXNXXXXXXeine zehnstellige nordamerikanische Nummer
1NXXNXXXXXXdieselbe mit 1 davor
011.ein internationaler Anruf aus den USA

Notrufnummern

Notrufnummern funktionieren immer. Eine Route, die die Nummer genau nennt, wird zuerst verwendet; wenn keine vorhanden ist, wird jeder aktive Trunk nacheinander versucht. Ein Anruf bei ihnen wird nie abgelehnt, weil eine Erweiterung begrenzt ist, eine gehostete Organisation begrenzt ist oder eine Route fehlt. Der Gesundheitszustand warnt, wenn kein Trunk sie übertragen kann.

Kapitel 9

PIN-Sätze

Im Webinterface: /pin-sets

Ein PIN-Satz (Kapitel 9) ist eine Liste von PINs, die eine ausgehende Route vor dem Anrufen abfragt: um internationale oder Ferngespräche an Personen mit einem PIN zu beschränken oder Anrufe an Kunden und Projekte nach ihrem Code abzurechnen.

  1. PIN-Satz hinzufügen und die PINs auflisten (4 bis 10 Ziffern jede).
  2. Schalten Sie PIN im Anrufprotokoll speichern ein, um die verwendete PIN in jedes Anrufprotokoll als Kontokennzahl (die accountcode-Spalte der CSV-, Syslog- und PostgreSQL-Anrufprotokoll-Ausgaben und account in der API) zu schreiben.
  3. Auf Anrufweiterleitung (Kapitel 8) einen ausgehenden Pfad öffnen und den Satz unter PIN abfragen auswählen.

Anrufer, die eine Nummer wählen, die dieser Pfad annimmt, hören „Bitte geben Sie Ihre PIN ein und drücken Sie die Raute“, geben sie ein und der Anruf wird durchgestellt. Drei falsche PINs beenden den Anruf und der Versuch wird als Sicherheitsereignis protokolliert. Notrufnummern fragen nie nach einer PIN, egal welchen Pfad sie nehmen, und weitergeleitete Anrufe und Follow-me-Nummern werden nicht gefragt: nur Personen, die von einem Telefon aus wählen.

Kapitel 10

Anruferkennung

Im Webinterface: /lookups

Viele Telefonanbieter senden die Nummer des Anrufers, aber keinen Namen. BitVoice sucht zunächst in den Unternehmenskontakten (Kapitel 38); danach kann ein eingehender Pfad eine Anruferkennung (Kapitel 10) abfragen:

Wählen Sie die Abfrage auf einem eingehenden Pfad auf Anrufweiterleitung (Kapitel 8) (Anruferkennung). Telefone zeigen den Namen während des Klingelns an und er wird in das Anrufprotokoll aufgenommen.

Eine Abfrage hält einen Anruf nie auf: BitVoice wartet höchstens 1,5 Sekunden (sofern nicht geändert, maximal 5) und klingelt dann ohne Namen. Antworten werden für einen Tag (oder so lange, wie Sie einstellen, oder nie mit -1) gespeichert, sodass ein regelmäßiger Anrufer nicht bei jedem Anruf abgefragt wird; Nummern, die der Dienst nicht kennt, werden nach einer Stunde erneut abgefragt. Testen auf der Abfrage-Seite fragt sofort nach einer Nummer, mit den gespeicherten Einstellungen.

Kapitel 11

Notrufe

Notrufnummern werden immer durchgestellt, von jedem Anschluss, auch von solchen, die keine externen Nummern anrufen können. Dieses Kapitel behandelt Notrufe, die von den Telefonen getätigt werden, die von BitVoice gesteuert werden: ein Büro, das 911 anruft. Das Beantworten von 911-Anrufen ist das 911-Profil (Kapitel 77).

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

Was BitVoice bei jedem Notruf tut

  1. Leitet ihn weiter, immer: ein Pfad, der die Nummer zuerst nennt; wenn keiner vorhanden ist, jeder funktionierende Trunk nacheinander. Beschränkungen hindern dies nie: ein Anschluss, der keine externen Anrufe tätigen darf, eine gehostete Organisation, die ihre Anrufgrenze erreicht oder ausgesetzt hat, ein Trunk, der seine Kanalgrenze erreicht hat.
  2. Sendet den Standort des Anrufers: mit Senden des Anruferstandorts aktiviert (Einstellungen), überträgt der Anruf die zivile Adresse des Standorts, die Etage und den Raum an den Anbieter als PIDF-LO.
  3. Informiert Personen vor Ort (Kari's Law in den USA): die Anschlüsse unter Benachrichtigen erhalten eine Nachricht auf ihren Telefonen, jeder offene BitVoice-Bildschirm zeigt eine Warnung an und die Adressen unter E-Mail auch erhalten eine E-Mail mit dem Namen des Anrufers, dem Anschluss, dem Standort, der Etage und dem Raum, sodass jemand den Rettern an der Tür begegnen kann.
  4. Lässt den Rückruf zu: für eine Stunde nach einem Notruf werden eingehende Anrufe nie abgelehnt, sodass der Notrufpunkt immer zurückrufen kann.

Einrichten

  1. Überprüfen Sie die Notrufnummern in Einstellungen (Kapitel 14) (nach Ländern festgelegt: 911 und 933 in den USA).
  2. Fügen Sie jedes Gebäude unter Standorte (Kapitel 12) hinzu, mit seiner Straßenadresse und den Netzwerken, die seine Telefone verwenden.
  3. Geben Sie jedem Anschluss seinen Standort, seine Etage und seinen Raum.
  4. Stellen Sie sicher, dass ein ausgehender Pfad und ein Trunk Notrufe übertragen; Gesundheit (Kapitel 13) warnt, wenn keiner verfügbar ist.
  5. Füllen Sie Benachrichtigen und E-Mail auch aus.
  6. Wählen Sie 933 (in den USA), um die Adresse zu hören, die Ihr Anbieter hat.

Remote-Arbeiter

Ein Telefon, das sich von außerhalb der Netzwerke seines Standorts anmeldet, ist ein Remote-Arbeiter: seine Telefonseite fragt nach seinem Standort und diese Adresse wird stattdessen verwendet. Warnungen sagen, wenn sie nicht bestätigt wurde.

Notfallmodus

Eine andere Sache: ein Schalter, der jeden eingehenden Anruf an einen Ort sendet (Evakuierung, Schließung, Vorfall). Legen Sie fest, wohin Anrufe gehen, einen optionalen Code wie *55 und die erlaubten Erweiterungen, um ihn in Einstellungen (Kapitel 14) zu wählen; schalten Sie es auf dem Dashboard (Kapitel 1), oder indem Sie den Code wählen (steigende Töne für Ein, ein tiefer Ton für Aus). Eine rote Leiste erscheint auf jedem Bildschirm, solange es eingeschaltet ist.

Kapitel 12

Standorte und Büro-911

Im Webinterface: /sites

Ein Standort ist ein Gebäude: seine Straßenadresse und die Netzwerke, die seine Telefone verwenden. Standorte sind die Art und Weise, wie ein Notruf angibt, wo der Anrufer ist, bis hin zum Stockwerk und Raum. In den USA verlangen Kari's Law und RAY BAUM'S Act genau dies von Geschäftstelefonanlagen.

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

Hinzufügen eines Standorts

Auf Standorte (Kapitel 12) drücken Sie Hinzufügen:

FeldWas es ist
Namewie es von den Menschen genannt wird: Hauptbüro
Straße, Stadt, Bundesland oder Provinz, Postleitzahl, Landdie zivile Adresse, an die die Rettungskräfte geschickt werden
Netzwerkedie Adressbereiche, die seine Telefone verwenden, wie z. B. 10.1.0.0/16; eine pro Zeile

Dann geben Sie für jede Nebenstelle ihren Standort, Stockwerk und Raum an. Gesundheit (Kapitel 13) listet Nebenstellen ohne Standort auf.

Wie der Standort eines Telefons gefunden wird

  1. Ein Telefon, das sich von einem der Netzwerke eines Standorts anmeldet, befindet sich an diesem Standort, mit dem Stockwerk und Raum der Nebenstelle.
  2. Ein Hot Desk trägt den eigenen Standort, Stockwerk und Raum des Schreibtisches, nicht die Person, die angemeldet ist (Hot Desking (Kapitel 36)).
  3. Ein Telefon, das sich von außerhalb jedes Netzwerks eines Standorts anmeldet, ist ein Remote-Arbeiter. Bei der ersten Notruf-fähigen Anmeldung von einem neuen Ort wird der Benutzer aufgefordert, seine Adresse auf seiner Telefonseite zu bestätigen; Notrufe übermitteln dann diese Adresse.
  4. Wenn ein Remote-Arbeiter nie bestätigt hat, wird der Anruf dennoch getätigt, mit dem üblichen Standort der Nebenstelle, und Warnungen sagen, dass die Adresse nicht bestätigt wurde.

Standortwarnungen

Mit E-Mail, wenn jemand 911 anruft in den Einstellungen, erhalten die genannten Personen den Namen des Anrufers, die Nebenstelle, den Standort, das Stockwerk und den Raum, sobald ein Anruf bei einer Notrufnummer beginnt, damit jemand den Rettungskräften an der Tür begegnen kann. Benachrichtigen-Nebenstellen erhalten eine Nachricht auf ihren Telefonen, und jeder offene BitVoice-Bildschirm zeigt eine Warnung. Siehe Notrufe (Kapitel 11).

Kapitel 13

Gesundheit

Im Webinterface: /health

Gesundheit sagt aus, ob das System für Anrufe bereit ist und wenn nicht, was zu tun ist. Jede Zeile sagt, was falsch ist, in einfachen Worten und verlinkt auf den Bildschirm, auf dem es behoben wird. Überprüfen Sie es nach jeder Änderung von einer bestimmten Größe.

Was es überprüft

ÜberprüfungWarum es wichtig ist
Notrufe können ausgeheneine Route und ein funktionierender Trunk tragen die Notrufnummern
Extensions ohne Notrufortihre 911-Anrufe würden keinen Stock oder Raum übertragen
Der TelefondienstSIP hört zu und auf welchem Port
Telefone nicht verbundenExtensions, bei denen niemand angemeldet ist
Trunksregistriert oder der Grund, warum sie nicht registriert sind
Menüs ohne aufgezeichnete AnsageAnrufer würden Stille hören
Die ZeitzoneZeitpläne folgen ihr
Aufzeichnungen und ihre AufbewahrungFestplattenspeicher und wie lange Aufzeichnungen aufbewahrt werden
Zertifikatewenn das TLS-Zertifikat abläuft
SchlüsselspeicherGeheimnisse, die ein Speicher nicht lesen kann
Andere Serverwenn mehrere einen Datenbestand teilen, ob jeder läuft

Probleme sind farblich gekennzeichnet: Rot stoppt Anrufe (keine Notruf-Route), Gelb sollte überprüft werden (ein Telefon ist nicht verbunden) und Grau ist für Informationen.

Kapitel 14

Einstellungen

Im Webinterface: /settings

Einstellungen enthält alles über das System als Ganzes. Jeder Abschnitt wird separat gespeichert und jeder Speichervorgang ist eine Revision auf Änderungen (Kapitel 61).

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

Passwörter und Schlüssel werden nie wieder angezeigt, nachdem sie gespeichert wurden; lassen Sie sie leer, um sie beizubehalten. Viewer sehen Einstellungen mit allen Geheimnissen entfernt.

Das Zertifikat und Let's Encrypt

BitVoice startet mit einem Zertifikat, das es selbst erstellt hat, worüber Browser und Telefone warnen. Für einen Server mit einem öffentlichen Namen schalten Sie Let's Encrypt unter Zertifikat ein: Geben Sie die Namen (pbx.example.com) ein, optional eine E-Mail-Adresse, und wenden Sie sie an. BitVoice erhält ein kostenloses Zertifikat von Let's Encrypt, verwendet es sofort für die Web-Oberfläche, SIP über TLS und Teams und verlängert es etwa 30 Tage vor Ablauf (Let's-Encrypt-Zertifikate sind 90 Tage oder weniger gültig). Die Statuszeile sagt, wann es ausgestellt wurde, wann es verlängert wird und, wenn es fehlgeschlagen ist, warum; es versucht es nach einer Stunde erneut, dann weniger oft, innerhalb der Let's-Encrypt-Grenzen. Jetzt prüfen versucht es sofort.

Let's Encrypt muss den Server unter jedem Namen aus dem Internet erreichen, um zu beweisen, dass er Ihnen gehört:

Andere ACME-Behörden, die keine Kontobindung benötigen (eine eigene step-ca eines Unternehmens, Let's Encrypts Staging-Dienst für Tests), werden unter Behörde ausgewählt. Wildcard-Namen benötigen DNS-Beweise, die BitVoice nicht durchführt: installieren Sie diese Zertifikate manuell. Jeder Server eines Clusters erhält sein eigenes Zertifikat.

Kapitel 15

Die Bildschirme in Ihrer Sprache

Die Bildschirme von BitVoice sind in Englisch und in dreizehn anderen Sprachen verfügbar: Deutsch, Französisch, Spanisch, Italienisch, Portugiesisch, Niederländisch, Polnisch, Schwedisch, Dänisch, Norwegisch (Bokmål), Finnisch, Japanisch und Vereinfachtes Chinesisch.

Auswahl

Jeder Browser hat seine eigene Sprache: Wählen Sie diese im Menü (die Sprachliste neben den Designs), auf der Anmeldeseite oder auf der ersten Seite des Einrichtungsassistenten. Bis Sie eine Auswahl treffen, verwendet BitVoice die Sprache des Browsers, wenn diese eine der verfügbaren Sprachen ist, ansonsten Englisch. Die Auswahl wird nur in diesem Browser gespeichert: Zwei Personen auf einem Server können jeweils in ihrer eigenen Sprache arbeiten.

Alles auf den Bildschirmen ist übersetzt: das Menü, Überschriften, Schaltflächen, Hinweise, Nachrichten vom Server und die Namen, die Screen-Reader ansagen. Die Suche (⌘K) findet eine Seite nach ihrem Namen in Ihrer Sprache oder in Englisch. Unverändert bleiben: Was Benutzer eingeben (Namen, Zahlen, Notizen), Adressen, Codes, Skripte in den Editoren und die Namen von Produkten und Protokollen. Datum und Zahlen folgen den eigenen Einstellungen des Browsers.

Wie es übersetzt wird und wie gut

Die Übersetzungen werden von einer Maschine erstellt (einem großen Sprachmodell), für jeden Text, den die Bildschirme anzeigen, etwa 5.000 davon; keine davon wurde von einer Person überprüft. Einige Sätze, die die Bildschirme aus Teilen erstellen (eine Zahl und ein Wort), können unangenehm klingen, und ein Begriff kann auf zwei Arten in zwei Orten übersetzt werden. Alles, was keine Übersetzung hat, wie z.B. ein Bildschirm, der neuer ist als die Übersetzungen, bleibt Englisch.

Hilfe hält diese Anleitung in Englisch, wie geschrieben, mit einem Link am Anfang jedes Kapitels zu demselben Kapitel, das als Ganzes übersetzt wurde (auch von einer Maschine) auf bitvoice.org.

Die Telefonseite ist getrennt: Was Anrufer hören (Anweisungen, die Voicemail-Menü), ist in der Standard-Prompt-Sprache (Klänge (Kapitel 20)), sofern eine Nebenstelle oder eine Warteschleife ihre eigene Sprache hat.

Teil 2

Wohin Anrufe gehen

Die Bausteine, durch die Anrufer navigieren: Gruppen und Warteschleifen, Menüs und Zeitpläne, Skripte und der KI-Empfang, Voicemail und das Diagramm, das alles zeigt.

Kapitel 16

Anrufablauf

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

Überprüfen Sie jede Situation

Überprüfen Sie jede Situation, oben in Anrufablauf (Kapitel 16), versucht Ihren gesamten Anrufplan in jeder Situation, in der er sein kann, nicht nur eine Probe:

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.

Der gleiche Test läuft auf Änderungen, bevor sie vorgenommen werden: ein Vorschlag von Fragen in einfachen Worten und der Wiederherstellen dieser Revision listen auf, was die Änderung brechen würde, was heute funktioniert.

Testen Sie einen Anruf

Geben Sie ein, wer anruft (eine Nebenstelle oder eine externe Nummer), was gewählt wird und wann, und drücken Sie Testen. BitVoice verfolgt den Anruf genau so, wie es für echte Anrufe der Fall wäre, ohne etwas zu klingeln: die eingehende Route, die Schedules zu diesem Zeitpunkt, Routing-Skripte (sie werden ausgeführt, in ihrem Sandbox), Menüs, Gruppen und Warteschleifen und was passiert, wenn niemand antwortet. Der Pfad, den dieser Anruf nimmt, wird markiert; andere Wege (eine Menütaste, die andere Seite eines Schedules) können geöffnet werden. Grün bedeutet, dass es funktioniert, Bernstein bedeutet, dass man es überprüfen sollte (ein nicht verbundenes Telefon, ein Skript, das auf einen Standardwert zurückfällt), Rot bedeutet, dass der Anruf an dieser Stelle fehlschlägt. Aktivieren Sie Nehmen Sie an, jedes Telefon ist verbunden, um den Plan wie geplant und nicht wie er gerade ist zu sehen; Ankommen auf wählt die Trunk für Routen, die nur einen nehmen.

Das Diagramm

Das Diagramm zeigt, wohin Anrufe von außen gehen, Kasten für Kasten: jede eingehende Route, dann die Menüs, Gruppen, Warteschleifen, Schedules, Skripte und Personen, zu denen sie führen.

Klicken Sie auf einen Kasten (oder navigieren Sie mit Tab und drücken Enter), um zu ändern, wohin Anrufe von dort gehen: das Ziel einer Route, das Wenn niemand antwortet einer Nebenstelle oder Gruppe, die offenen und geschlossenen Ziele eines Schedules, die Tasten eines Menüs (hinzufügen oder entfernen Sie Tasten direkt), das Fallback eines Skripts oder die Person eines Empfangs. Das Speichern überprüft die Änderung wie jede andere und erstellt eine Revision. Öffnen Sie den vollständigen Editor geht zur eigenen Seite des Elements. Hinzufügen einer eingehenden Route fügt eine Route hinzu, ohne das Diagramm zu verlassen.

Kapitel 17

Ringgruppen

Im Webinterface: /ring-groups

Eine Ringgruppe ist eine Nummer, die mehrere Erweiterungen klingelt: ein Vertriebsteam, die Rezeption und deren Ersatz, jeder im Workshop.

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

Klingelstrategien

Mitglieder, die abwesend sind (in einem Meeting auf ihrem Kalender oder mit der Funktion 'Störung' aktiviert), werden übersprungen; die Gruppe klingelt die anderen. Mitglieder mit der mobilen App werden durch eine Push-Benachrichtigung geweckt und klingeln auch.

Wenn niemand antwortet

Wenn niemand innerhalb der Klingelzeit antwortet, geht der Anruf an Wenn niemand antwortet: die Voicemail eines Mitglieds, eine Warteschleife, ein Menü, eine andere Gruppe. Wenn nichts eingestellt ist, klingelt es, bis der Anrufer aufgibt.

Gruppen, Warteschleifen oder Abholen?

VerwendungWenn
Eine Ringgruppeeinige Personen, von denen jede den Anruf annehmen kann, und der Anruf sollte jetzt klingeln
Eine WarteschleifeAnrufer müssen möglicherweise warten, bis jemand frei ist, und sollten ihren Platz hören
Eine Abholgruppejeder hat seine eigenen Anrufe, aber Kollegen können für sie antworten
Kapitel 18

Warteschleifen

Im Webinterface: /queues

Eine Warteschleife hält Anrufer in der Reihenfolge, mit Musik, und klingelt den nächsten freien Agenten. Sie ist das Herzstück eines Kontaktzentrums und nützlich in jedem Büro, in dem Anrufe schneller eintreffen, als Menschen sie annehmen können.

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

Wie Anrufe angeboten werden

StrategieWer geläutet wird
Längste Pauseder freie Agent, der am längsten seit seinem letzten Anruf gewartet hat
Ringverfahrenjeder freie Agent abwechselnd, beginnend mit dem letzten
Alle läutenjeder freie Agent gleichzeitig
Wenigste Anrufeder freie Agent, der heute die wenigsten Anrufe entgegengenommen hat
In Reihenfolge (linear)immer von oben in der Liste: der erste freie Agent
Zufälligein beliebiger freier Agent, per Zufall
Gewichteter Zufallper Zufall, Agenten mit einer niedrigeren Strafe viel häufiger

Der Warteschleifen-Bildschirm ist eine Live-Tafel: Wer wartet, wie lange und der Zustand jedes Agenten.

Agenten

Agenten wählen *45, um sich in alle Warteschleifen einzuloggen oder auszuloggen, und *46, um eine Pause (eine Pause) zu machen und fortzufahren; pausierte und ausgeloggte Agenten werden keine Anrufe angeboten. Die Tafel hat die gleichen Schaltflächen und zeigt, warum ein Agent pausierte.

ZustandBedeutung
verfügbarfrei; wird dem nächsten Anrufer angeboten
läutendwird einem Anruf angeboten
beschäftigtin einem Anruf
Nachbearbeitunggerade beendet; die Nachbearbeitungszeit läuft
pausiertin einer Pause, mit dem Grund angegeben
abwesendin einer Besprechung oder im Urlaub, aus ihrem Kalender
ausgeloggtnimmt keine Warteschleifenanrufe entgegen

Vorgesetzte

Auf Aktuelle Anrufe (Kapitel 46) läutet Überwachen das Telefon eines Vorgesetzten; wenn er antwortet, kann er zuhören (von niemandem gehört), flüstern (nur vom Agenten gehört) oder eindringen (von beiden gehört) und kann zwischen ihnen während des Anrufs wechseln.

Haftende Warteschleifen und VIPs

Schalten Sie Haften in einer Warteschleife ein und ein wiederkehrender Anrufer (ein in den letzten 30 Tagen beantworteter Anrufer, oder so viele, wie Sie einstellen) wird zuerst dem Agenten angeboten, der ihn zuletzt beantwortet hat, wenn dieser Agent frei ist; wenn er nicht antwortet, geht die Warteschleife wie üblich weiter. VIP-Anrufer, am Fuß der Warteschleifen, gehen an die Spitze jeder Warteschleife, die sie anrufen, nach jedem bereits wartenden VIP, und sind auf der Tafel als VIP markiert.

Kapitel 19

Outbound-Dialer

Im Webinterface: /dialer

Der Outbound-Dialer (Kapitel 19) ruft Listen von Kontakten für die Agenten einer Warteschleife (Kapitel 18) an: Verlängerungen, Erinnerungen an Termine, Inkassos, Umfragen. Jede Kampagne hat ihre Warteschleife, ihre Liste und ihre Art der Anrufe:

ModusWie es anruft
Vorschauein Agent fragt nach dem nächsten Kontakt, sieht dessen Details und ruft dann an (sein Telefon klingelt zuerst) oder überspringt es
Progressivein Anruf für jeden freien Agenten
Powereine feste Anzahl von Anrufen für jeden freien Agenten (1 bis 3)
VorhersageBitVoice passt die Anrufe pro Agent an, indem es sich vorbeugt, wenn wenige Anrufe abgebrochen werden, und zurückhält, wenn die Abbruchrate nahe der Grenze liegt
  1. Kampagne hinzufügen: ihre Warteschleife, ihre Anruferkennung (die Nummer, die die Kontakte sehen), die Stunden, in denen Anrufe in einer Zeitzone gemacht werden dürfen, wie lange das Telefon eines Kontakts klingelt, wie viele Versuche und wie weit auseinander.
  2. Öffnen Sie Kontakte und Liste hinzufügen: eine CSV-Datei mit einer Headerzeile und einer Spalte namens number (oder phone); name und andere Spalten werden dem Agenten in der Vorschau angezeigt. Doppelte und fehlerhafte Nummern werden übersprungen.
  3. Aufnehmen Sie die Nachricht (in der Kampagne): wer anruft und warum, und "drücken Sie 9, wenn Sie diese Anrufe nicht erhalten möchten". Sie wird abgespielt, wenn eine Person beantwortet, wenn kein Agent frei ist, und, wenn Sie es wählen, nach dem Gruß einer Anrufbeantwortung.
  4. Starten Sie sie. Sie ruft nur innerhalb ihrer Stunden an und hört auf, anzurufen, wenn sie pausiert oder nichts mehr ansteht.

Menschen und Maschinen. BitVoice hört die ersten Sekunden nach der Aufnahme: Ein langer, ununterbrochener Gruß ist ein Anrufbeantworter; ein kurzes "Hallo?" und eine Pause ist eine Person. Ein Anrufbeantworter kann aufgelegt werden (und erneut versucht werden), eine Nachricht hinterlassen oder an einen Agenten wie jeden anderen weitergeleitet werden. Wenn man unsicher ist, nimmt man die Aufnahme für eine Person.

Aufgegebene Anrufe. Eine Person, die antwortet, wenn kein Agent in zwei Sekunden verfügbar ist, hört die Nachricht und wird als aufgegeben gezählt. Mit Power- und Predictive-Dialing wird, wenn der Anteil der aufgegebenen Anrufe an den letzten hundert Antworten die Kampagnen-Grenze (3%, sofern nicht geändert, die US-Regel) überschreitet, die Kampagne einen Anruf pro freiem Agenten tätigen, bis sie wieder unter dieser Grenze liegt. Die Kampagne zeigt ihre Aufgabequote, Anrufe im Klingelzustand und freie Agenten live.

Nicht-anrufen. Keine Kampagne ruft eine Nummer auf der Nicht-anrufen-Liste an, egal auf welcher Liste sie erschienen ist; jeder, der während der Nachricht die 9 drückt, wird sofort hinzugefügt. Fügen Sie Nummern manuell hinzu oder über die API (POST /api/dnc). Für das nationale Register (in den USA das National Do Not Call Registry der FTC: Laden Sie die Vorwahlen herunter, die Sie anrufen, als Flat-Datei), wählen Sie die Datei unter Nationales Register und Importieren: Jede Zeile mit einer Nummer zählt (212,5550100 wie die FTC sie schreibt, oder eine Nummer pro Zeile), Überschriften und fehlerhafte Zeilen werden übersprungen und gezählt. Mit Letzten Import ersetzen aktiviert, werden die Zahlen des vorherigen Imports zuerst entfernt, sodass eine Nummer, die das Register verlassen hat, wieder anrufbar ist; Nummern, die manuell oder durch Drücken der 9 hinzugefügt wurden, bleiben immer bestehen. Das Register muss mindestens alle 31 Tage aktualisiert werden (US-Regeln); die Seite zählt die Liste und wie viel davon aus dem Register stammt. Die API ist POST /api/dnc/import?replace=1 mit der Datei als Body.

Kapitel 20

Klänge: Hinweise, Sprachen und Hintergrundmusik

Im Webinterface: /sounds

Klänge (Kapitel 20) enthält alles, was BitVoice zu Anrufern sagt oder abspielt, außer Begrüßungen und Menühinweisen, die dort aufgenommen werden, wo sie verwendet werden.

Hinweise, in jeder Sprache

Ein Hinweis ist eine Sache, die BitVoice sagt: "Bitte geben Sie Ihre PIN ein", "Ihr Platz in der Warteschleife ist", die Ziffern, die er vorliest. Das Namensverzeichnis, die Einwahlnummer, Weckrufe und Warteschleifenansagen sprechen mit ihnen. BitVoice hat die Wörter jedes Hinweises in Englisch, Spanisch, Französisch, Deutsch, Italienisch, Portugiesisch, Niederländisch und Polnisch; Zahlen werden Ziffer für Ziffer vorgelesen, was auf die gleiche Weise klingt.

Hintergrundmusik

Hintergrundmusik ist in Klassen (Ruhig, Jazz, Verkaufsangebote…) gruppiert, jede eine Liste von Tracks, die nacheinander abgespielt werden, von Anfang an oder zufällig. Laden Sie Tracks von bis zu 15 Minuten in jedem Format, das der Browser liest; MP3- und WAV-Dateien können auch direkt an die API gesendet werden (PUT /api/music/{class}/{name}), und BitVoice decodiert MP3 selbst (MPEG-1, 2 und 2.5 Layer III, mit einem Decoder, der die gleichen Samples wie minimp3 liefert).

Internetradio. Eine Klasse kann anstelle ihrer Tracks einen Stream abspielen: Geben Sie die Adresse eines MP3-Streams (Icecast, Shoutcast, die meisten Internetradios) unter Internetradio ein. BitVoice verbindet sich, wenn der erste Anrufer in dieser Klasse in die Warteschleife gesetzt wird, spielt den Stream für alle Wartenden ab und trennt sich eine halbe Minute nach dem Verlassen des letzten Anrufers. Solange der Stream nicht erreichbar ist, spielen die Tracks der Klasse (oder der Warteton, wenn keine Tracks vorhanden sind) und die Klasse zeigt den Grund an.

Wer hört esWelche Musik
jemand, der in die Warteschleife gesetzt wurdedie Musik, die auf der Nebenstelle der Person, die den Anrufer in die Warteschleife gesetzt hat, ausgewählt wurde, ansonsten die Standardmusik
ein geparkter Anruferdie Musik der Person, die den Anrufer geparkt hat, ansonsten die Standardmusik
ein Anrufer, der in einer Warteschleife wartetdie Musik der Warteschleife, ansonsten die Standardmusik
ein Anrufer, der auf den Leiter einer Konferenz wartetdie Standardmusik

Standard für alle kann der Warteton sein, sodass sich nichts ändert, bis Sie Musik auswählen. Das Auswählen des Wartetons auf einer Warteschleife oder Nebenstelle behält den Ton dort bei.

Kapitel 22

Wähleintrichtung

Im Webinterface: /directories

Ein Wähleintrichtung (Kapitel 22) ermöglicht es Anrufern, jemanden zu erreichen, ohne dessen Nummer zu kennen: Sie geben die ersten Buchstaben des Namens auf der Tastatur ein (2 für ABC, 3 für DEF, bis 9 für WXYZ) und werden durchgestellt.

  1. Verzeichnis hinzufügen, benennen Sie es und geben Sie eine Nummer ein (z.B. 411) oder lassen Sie die Nummer leer und verwenden Sie es als Menüoption.
  2. Wählen Sie, was Anrufer eintippen: den Nachnamen (üblich), den Vornamen oder beides.
  3. Wählen Sie, wer aufgeführt ist, oder niemanden, um jeden mit einem Telefon aufzulisten.

Anrufer hören "Bitte geben Sie die ersten drei Buchstaben des Namens der Person ein". Ein Treffer wird sofort durchgestellt. Mehrere Treffer werden aufgeführt, jeweils acht auf einmal: der Name jeder Person, dann "um diese Person anzurufen, drücken Sie 1", 2 usw., mit 9 für weitere Namen. Kein Treffer: "Niemand entspricht", und sie versuchen es erneut (drei Versuche).

Ausgesprochene Namen: Aufnehmen Sie den Namen jeder Person auf ihrer Nebenstelle (Ausgesprochener Name: Aufnahme im Browser oder Hochladen einer Datei), und das Verzeichnis sagt ihn aus; bis dahin liest es die Nebenstellennummer aus. Die eigenen Wörter des Verzeichnisses stammen aus den Verzeichnisprompts in Klangen (Kapitel 20), in dessen Sprache.

Kapitel 23

Wahleingabe (DISA)

Im Webinterface: /dial-in

Ein Wahleingabe (Kapitel 23) (DISA, "direct inward system access") ermöglicht es jemandem, von außen anzurufen, sich zu identifizieren und erneut durch das Büro anzurufen: Der Anruf wird mit der Anruferkennung des Büros, seinen Routen und seinen Tarifen durchgestellt, als ob er am Schreibtisch wäre.

  1. Wahleingabe hinzufügen und ein PIN (4 bis 10 Ziffern) festlegen, die zulässigen Nummern (Nur von diesen Nummern) oder beides. Eines von beiden ist erforderlich.
  2. Wählen Sie die Nebenstelle, von der die Anrufe getätigt werden: Die Berechtigung für Ausgangsanrufe, die Anruferkennung und die Ausgangsrouten gelten. Sie muss Ausgangsanrufe zulassen.
  3. Geben Sie eine Nummer ein, die innerhalb des Büros gewählt werden kann, und senden Sie eine Telefonnummer an Anrufweiterleitung (Kapitel 8) (wählen Sie die Wahleingabe als Ziel).

Anrufer hören "Bitte geben Sie Ihren PIN ein, dann die Raute", dann "Bitte geben Sie die Nummer ein, die Sie anrufen möchten, dann die Raute" und werden durchgestellt. Die Wörter stammen aus den Wahleingabeprompts in Klangen (Kapitel 20).

Kapitel 24

Sprachbots (AudioSocket)

Im Webinterface: /voice-bots

Ein Sprachbot (Kapitel 24) ist ein eigenes Programm (ein AI-Agent, ein Spracherkennungs-IVR, ein Aufnahmegerät), das Anrufe über AudioSocket, das einfache Protokoll, das Asterisk verwendet, annimmt: BitVoice nimmt den Anruf an, öffnet eine TCP-Verbindung zum Bot und sendet die UUID des Anrufs, dann den Sound des Anrufers als 20 ms-Rahmen von 8 kHz 16-Bit-Linearaudio und jede gedrückte Taste; jeder Sound, den der Bot zurücksendet, wird dem Anrufer abgespielt. Bots und Sprachdienst-Connector, die für Asterisks AudioSocket geschrieben wurden, funktionieren mit BitVoice unverändert.

  1. Sprachbot hinzufügen: seinen Namen, die Adresse des Bots (10.0.0.9:9092) und optional eine Nummer, um ihn zu wählen.
  2. Wählen Sie, wohin der Anrufer geht, wenn der Bot den Anruf nicht annehmen kann oder abbricht (eine Person, eine Warteschleife, Voicemail): erforderlich, damit kein Anrufer jemals abgelegt wird, weil ein Bot down ist.
  3. Senden Sie Anrufe an ihn von Anruf-Weiterleitung (Kapitel 8), einer Menüoption, einem Zeitplan oder einem Toggle.

Wenn der Bot ein AudioSocket-Auflegen sendet, endet der Anruf; wenn der Anrufer auflegt, wird dem Bot ein Auflegen gesendet. Ein Bot, der innerhalb von drei Sekunden nicht erreicht werden kann oder dessen Verbindung ohne Auflegen abbricht, übergibt den Anrufer an den Fallback und der Fehler wird protokolliert.

Um ein Programm in einen bereits laufenden Anruf einzubringen (einen Transkriptions-Listener, einen Assistenten, der niemandem zuflüstert), verwenden Sie ARI's externes Medium: Siehe Asterisk-Kompatibilität (Kapitel 70).

Kapitel 25

Tag/Nacht-Toggle

Im Webinterface: /toggles

Ein Tag/Nacht-Toggle (Kapitel 25) ist ein Schalter für einen Anruf-Fluss (FreePBX nennt es Call-Flow-Control). Anrufe, die an ihn gesendet werden, gehen zu seinem normalen Ziel oder zum anderen, während jemand umschaltet: Das Büro schließt früh wegen eines Sturms, jemand wählt *281 auf dem Weg nach draußen und Anrufe gehen an die Voicemail, bis es am Morgen wieder umgeschaltet wird. Es bleibt so, wie es gelassen wurde, auch über Neustarts hinweg.

  1. Toggle hinzufügen, geben Sie einen Code ein (1 bis 3 Ziffern: gewählt nach *28) und wählen Sie, wohin Anrufe normalerweise und wenn umgeschaltet gehen. Jede Seite kann ein Zeitplan sein, sodass ein Toggle vor den Öffnungszeiten sitzen und sie außer Kraft setzen kann.
  2. Wählen Sie, wer es von einem Telefon aus umschalten kann (niemand ausgewählt lässt jeden Anschluss zu).
  3. Senden Sie Anrufe an ihn von Anruf-Weiterleitung (Kapitel 8), einer Menüoption oder einem Zeitplan, wie jedes andere Ziel.

Schalten Sie es um, indem Sie *28 und seinen Code wählen (ein ansteigendes Signal: umgeschaltet; ein abfallendes Signal: zurück zum Normalzustand), mit dem Schalter neben ihm auf der Toggle-Seite oder über die API (POST /api/toggles/{id}/state). Ein Busy-Lamp-Key, der *281 beobachtet, leuchtet, während dieser Toggle umgeschaltet ist, sodass die Person, die das Büro schließt, es von ihrem Schreibtisch aus sehen kann. Der Toggle-Code selbst befindet sich auf Feature-Codes (Kapitel 32).

Kapitel 26

Zeitpläne

Im Webinterface: /schedules

Ein Zeitplan leitet Anrufe auf eine Weise, wenn Sie geöffnet sind, und auf eine andere Weise, wenn Sie geschlossen sind. Richten Sie eine eingehende Route auf einen Zeitplan aus und den Zeitplan auf das Menü (geöffnet) und die Voicemail (geschlossen).

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

Öffnungszeiten

Jede Zeile der Öffnungszeiten ist ein Satz von Tagen und einer Zeit von und bis. Mehrere Zeilen sind erlaubt: Montag bis Freitag 9:00 bis 17:00 und Samstag 10:00 bis 13:00. Öffnungszeiten können Mitternacht überschreiten (22:00 bis 06:00) für Nachtschichten.

Feiertage

Feiertage zählen als geschlossen den ganzen Tag, unabhängig von den Öffnungszeiten. Fügen Sie jedes Datum mit einem Namen hinzu; der Name wird auf Anrufablauf (Kapitel 16) angezeigt, wenn Sie einen Anruf an diesem Tag versuchen.

Zeitzone

Die Zeitzone ist die in Einstellungen. Wenn die Uhren sich ändern, folgen die Zeitpläne der lokalen Zeit.

Kapitel 27

Skripte (JavaScript und Lua)

Im Webinterface: /scripts

Ein Skript entscheidet, wohin ein Anruf geht, wenn Menüs, Zeitpläne und Gruppen nicht ausreichen: Anrufer aus einem Bereich zu einem Büro, VIP-Nummern direkt zu einer Person, eine Entscheidung aus Ihren eigenen Daten. Oder, wenn es auf Den ganzen Anruf ausführen gesetzt ist, beantwortet es den Anruf und führt ihn aus, wie ein Asterisk-Dialplan oder ein AGI-Skript: Prompts und Sprache, Tasten, Aufnahmen, Klingeln von Personen, Weiterleiten (unten). Skripte werden in JavaScript oder Lua auf Skripte (Kapitel 27) geschrieben.

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

Sicher durch Konstruktion

Was ein Skript sieht

call hat:

FeldWas es ist
from, fromNamedie Rufnummer und der Name des Anrufers
todie gewählte Nummer
directioninbound oder internal
trunkder Trunk, über den der Anruf hereingekommen ist
weekday, hour, minutedie aktuelle Zeit (0 ist Sonntag)
dateYYYY-MM-DD

Was es zurückgibt

Ein Ziel, {type, target}: Typ ist extension, ringgroup, queue, menu, schedule, voicemail oder hangup, und Ziel ist seine Nummer. Wenn nichts zurückgegeben wird, wird der Fallback verwendet. log("text") schreibt in die Ausführungsliste des Skripts.

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

Ein Skript verwenden

Weisen Sie eine eingehende Route, einen Menüschlüssel oder einen Zeitplan dem Skript zu, wie bei jedem Ziel. Test führt es mit einem Anruf aus, den Sie beschreiben, ohne einen Anruf zu tätigen; die Ausführungsliste zeigt jeden tatsächlichen Lauf mit seiner Entscheidung, der benötigten Zeit und möglichen Fehlern. Der Anrufablauf (Kapitel 16) führt Skripte auch aus, wenn Sie einen Anruf versuchen.

Skripte, die den gesamten Anruf ausführen

Wählen Sie Führt den gesamten Anruf aus. Das Skript beantwortet dann den Anruf und geht von oben nach unten, wobei jeder Schritt wartet, bis er abgeschlossen ist:

SchrittWas es tut
play(name)spielt eine Prompt aus Sounds (Kapitel 20) in der Sprache des Anrufers (goodbye, digit-5...), digits:1234 oder einen Ton: beep, confirm, error, off, hold. Eine Prompt, die noch nicht aufgenommen wurde, ist ein Piepton.
say(text)spricht die Wörter mit dem Sprachdienst in den Einstellungen, KI (ein Piepton ohne einen)
collect({max, timeout, interDigit, end, say, prompt})sammelt Tasten: höchstens max (32), wartet timeout Sekunden auf die erste (5) und interDigit für jede weitere (3), bis end (#). say oder prompt fragt zuerst. Gibt die Tasten zurück, "" wenn keine.
record({box, seconds, beep})nimmt eine Nachricht in das Postfach einer Erweiterung auf, bis # oder die Zeit; gibt die Sekunden zurück
wait(seconds)wartet, gibt eine gedrückte Taste zurück
dial(destination, ringSeconds)läutet es mit dem Anrufbeantworter des Anrufers. Beantwortet: Sie sprechen miteinander und das Skript ist fertig (true). Nicht beantwortet: false, und das Skript wird fortgesetzt.
transfer(destination)gibt den Anruf weiter; das Skript ist fertig
hangup()beendet den Anruf
log(text)schreibt in die Ausführungsliste

Ein Ziel ist eine Nummer (eine Erweiterung, eine Ringgruppe oder eine Warteschlange hier, ansonsten eine externe Nummer über die ausgehenden Routen; niemals eine Notrufnummer) oder {type, target} wie oben. Eine während eines Tons gedrückte Taste stoppt ihn; play und say geben sie zurück und der nächste collect beginnt mit ihr. Die Rückgabe eines Ziels sendet den Anruf dorthin.

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 hat die gleichen Schritte (collect{max = 1}). Geben Sie dem Skript eine Nummer zum Wählen, um es von einer Erweiterung aus anzurufen.

Seine Grenzen halten den Anruf sicher: Der eigene Code des Skripts darf höchstens ein Viertel einer Sekunde zwischen zwei Schritten laufen; ein Anruf nimmt höchstens 1.000 Schritte; und das gesamte Skript stoppt nach seinem Längsten Lauf (10 Minuten, sofern nicht anders angegeben, 60 maximal). Wenn es fehlschlägt, gestoppt wird oder ohne Auflegen oder Weiterleiten des Anrufs endet, geht der Anruf an seinen Fallback; ein Anrufer, der auflegt, stoppt es sofort. Ausprobieren führt das Skript mit den Tasten aus, die der Anrufer drückt, und listet jeden Schritt auf, ohne einen Anruf zu tätigen.

Kapitel 28

AI-Empfang, Voicemail-Triage und Anfragen

Im Webinterface: /receptionists

AI-Funktionen verwenden den AI-Service, der in Einstellungen (Kapitel 14) festgelegt ist: einen OpenAI-kompatiblen Service (OpenRouter standardmäßig) oder einen, den Sie selbst betreiben. Was sie benötigen, wird dorthin gesendet, sodass Sie einen Service auswählen sollten, dem Sie vertrauen, um Anrufe zu bearbeiten; für ein 911-Zentrum zählt sein eigener Regierungs-Cloud-Service als lokaler Service.

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

AI-Empfang

Wählen Sie einen Empfang als Ziel für Anrufe: eine Route, eine Menüoption oder eine Nebenstelle mit Wenn niemand antwortet. Es gibt an, dass es automatisiert ist, beantwortet nur von Genehmigte Informationen, nimmt eine Nachricht entgegen, bucht einen Rückruf (siehe Rückrufe (Kapitel 30)) oder leitet an Eine Person ist weiter. Das Drücken von 0 oder das Anfordern einer Person erreicht immer jemanden, und das gilt auch für Probleme mit dem AI-Service oder dem Sprachmodell: Anrufer stecken nie mit ihm fest.

Modelle

Modell erledigt die Textarbeit: Zusammenfassungen, die Antworten des Empfangs und das Anfragen in einfachen Worten. Die Umwandlung von Sprache in Text benötigt ein Modell, das Audio verarbeitet; setzen Sie es als Sprach-zu-Text-Modell (z. B. google/gemini-2.5-flash auf OpenRouter), um ein textbasiertes Modell für den Rest zu verwenden, wie meta-llama/llama-3.3-70b-instruct.

Spracherkennung im Gebäude

Sprache kann ohne Sprachmodell aufgeschrieben werden: ein Spracherkenner (whisper) hört das Audio und schreibt auf, was gesagt wurde, nichts mehr. Wer schreibt Sprache auf, in den AI-Einstellungen, hat drei Auswahlmöglichkeiten:

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.

Fakten, die während des Anrufs besprochen wurden (kein Sprachmodell)

Jede Transkription wird auch von Regeln gelesen, ohne ein Sprachmodell, für die Fakten, die ein Anrufannahme-Operator notiert: was passiert ist, wo, wie viele verletzt sind (oder dass niemand verletzt ist), Zustände (Atmung, wach, blutend...), Gefahren (Feuer, Rauch, Gas, Waffen, Chemikalien, Treibstoff), Fahrzeuge, wer der Anrufer zum Bedürftigen ist und eine Rückrufnummer. Jede Tatsache wird mit dem Satz angezeigt, aus dem sie stammt, und der Seite, die sie gesagt hat, in der Transkription Fakten, die während des Anrufs besprochen wurden. Ohne ein Modell wird die Zusammenfassung nur aus diesen Fakten erstellt und sagt dies an.

SatzGefundene FaktenGefundene Fakten, die niemand erwartet hat
Training (die Regeln wurden daraus erstellt)41 von 410
Hold-out, kalt bewertet, bevor eine Regel daraus erstellt wurde27 von 40 (67%)2
Hold-out, nach einer zweiten Runde von Regeln, die aus seinen Fehlern erstellt wurden40 von 400
Versiegelt, kalt bewertet (keine Regel wird jemals daraus erstellt)23 von 43 (53%)3

Die versiegelte Punktzahl ist die, die auf Anrufe zu erwarten ist, die es nicht gesehen hat, und die drei Sätze wurden von denselben Personen erstellt, die die Regeln erstellten, sodass reale Anrufe wahrscheinlich schlechter abschneiden. Lesen Sie die Fakten neben der Transkription, nie anstelle davon.

Größere Modelle benötigen mehr Prozessor: ein Server, der viele Anrufe gleichzeitig transkribiert, sollte mit base beginnen oder einen Computer mit einer GPU als Sprach-zu-Text-Service für das Gebäude verwenden. Auf Apple-Computern verwendet whisper die GPU.

Voicemail-Triage

Mit Transkribieren und zusammenfassen von Voicemail aktiviert, wird jede Nachricht auch als dringend, normal oder niedrig priorisiert, mit ihrer Art (Verkauf, Support, Abrechnung...). Dringende Nachrichten lösen eine Warnung auf jedem Administratoren-Bildschirm aus.

Fragen in einfachen Worten

Auf Änderungen (Kapitel 61), beschreiben Sie eine Änderung ("Verkaufs-Anrufe nach 17 Uhr an die Voicemail weiterleiten"). Der KI-Algorithmus schlägt sie vor, BitVoice überprüft sie wie jede andere Änderung und zeigt genau an, was sich ändern würde. Nichts ändert sich, bis Sie Anwenden drücken, und es wird zu einer Revision, die Sie wiederherstellen können. Passwörter werden niemals an den KI-Algorithmus gesendet.

Kapitel 29

Voicemail

Im Webinterface: /voicemail

Jede Erweiterung kann ein Postfach haben. Anrufer, die nicht beantwortet werden, hören die Begrüßung und hinterlassen eine Nachricht; die Person hört sie auf ihrem Telefon, liest sie auf dem Bildschirm oder erhält sie per E-Mail.

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

Aktivieren

Auf der Erweiterung Voicemail aktivieren. Wenn niemand antwortet wird dann auf das Postfach gesetzt. Geben Sie ihm eine PIN (4 bis 10 Ziffern): Sie öffnet das Postfach von einem anderen Telefon aus und meldet die Person im Mitarbeiterportal und an Hotdesks an.

EinstellungWas es tut
Längste Nachricht10 bis 900 Sekunden (180 standardmäßig)
Neue Nachrichten per E-Mail sendenan die E-Mail-Adresse der Erweiterung, mit der Nachricht angehängt
Begrüßungim Browser aufgenommen, hochgeladen oder vom Telefon aufgenommen; ohne eine hören Anrufer einen Piepton

Hören

With AI

With Transcribe and summarise voicemail on (Settings, AI), each message is written out, summarised in a line, and marked urgent, normal or low priority with its kind (sales, support, billing). Urgent messages raise an alert on every administrator's screen. See AI (Kapitel 28).

Reinigung von Tönen

Tonreinigung (Einstellungen) entfernt konstanten Hintergrundlärm und gleicht Pegel aus, wenn Nachrichten gespeichert werden, sodass eine Nachricht aus einem Auto oder einer belebten Straße besser zu hören ist.

Kapitel 30

Rückrufe

Im Webinterface: /callbacks

Personen, die um einen Rückruf gebeten haben. Ein AI-Empfangsbereich bucht einen, wenn ein Anrufer darum bittet: es sammelt den Namen, die Nummer, die angerufen werden soll (und bietet die Nummer an, von der aus der Anrufer anruft), einen geeigneten Zeitpunkt und worum es geht, liest sie vor und bucht sie nur, wenn der Anrufer zustimmt. Es verspricht nie einen genauen Zeitpunkt. Administratoren können auch Rückrufe manuell hinzufügen.

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

Ein neuer Rückruf zeigt eine Warnung auf jedem offenen Bildschirm an und wird an den Besitzer des Nachrichten für-Postfachs des Empfangsbereichs per E-Mail gesendet, wenn diese Erweiterung eine E-Mail-Adresse hat und E-Mail in den Einstellungen eingerichtet ist.

Um zurückzurufen, wählen Sie Ihre Erweiterung und drücken Rückruf: Ihr Telefon klingelt zuerst, und wenn Sie abheben, ruft BitVoice die Nummer für Sie an, mit Ihren normalen Routen und Anrufer-ID. Dann fügen Sie eine Notiz hinzu, wenn Sie möchten, und drücken Fertig (oder Abbrechen). Abgeschlossene Rückrufe werden unter den offenen aufbewahrt und können erneut geöffnet werden.

Teil 3

Tägliches Telefonieren

Was Menschen täglich auf ihren Telefonen tun und was sie für sich einstellen: Weiterleitung, Follow-me, Aufnahme, Konferenzräume, Durchsagen, Hotdesks, Faxe und Textnachrichten.

Kapitel 32

Funktionstasten, Weiterleitung und Schnellwahlen

Im Webinterface: /codes

Funktionstasten sind die Tasten, die Menschen auf ihren Telefonen drücken, um ihre eigenen Einstellungen zu ändern und Funktionen zu erreichen. Sie funktionieren auf jedem Telefon, Festnetztelefon oder Softphone, ohne dass auf dem Telefon selbst etwas eingerichtet werden muss. Ein ansteigendes Signalton bedeutet, dass die Aktion abgeschlossen ist; ein abfallendes Signalton bedeutet, dass die Aktion abgelehnt wurde.

Die Codes auf einen Blick

CodeWas es tut
*72jede Anruf weiterleiten (dann die Nummer und #, oder die Nummer direkt danach: *722125550199)
*73Weiterleitung jeder Anruf beenden
*90 / *91Weiterleitung wenn man in einem Anruf ist / beenden
*52 / *53Weiterleitung wenn nicht beantwortet / beenden
*78 / *79Nicht stören ein / aus
*76Nicht stören umschalten (aufsteigendes Signal: jetzt ein)
*21Follow-me ein- und ausschalten
*8Anruf in Ihrer Abholgruppe beantworten
** und eine ErweiterungAnruf beantworten, der an dieser Erweiterung klingelt
*80 und eine ErweiterungIntercom: das Telefon beantwortet auf seinem Lautsprecher
*0 und ein Codeeine Schnellwahltaste
*62Weckruf: hören, buchen oder stornieren (vier Ziffern, z.B. 0630)
*68 und eine ZifferRaumstatus, für die Zimmerreinigung in Hotels
*28 und ein Toggles-Codeeinen Tag/Nacht-Toggle (Kapitel 25) umschalten oder zurücksetzen
*32den letzten Anrufer blockieren: die letzte externe Nummer, die dieses Telefon angerufen hat, wird auf die Blockierungsliste gesetzt (Spamschutz (Kapitel 56))
*43den Echotest
*97Ihre Voicemail
70einen Anruf parken (weiterleiten); 71 bis 79 abholen
*45 / *46Warteschlangen-Agenten: anmelden oder abmelden / pausieren oder fortsetzen
*33 / *34sich an einem Heißarbeitsplatz anmelden oder abmelden
*7 / *8 während eines AnrufsAufzeichnung pausieren und fortsetzen (Kartenzahlungen)

Weiterleitung

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

Die Weiterleitung an eine andere Erweiterung verwendet die eigenen Einstellungen dieser Erweiterung (ihre Voicemail, ihre follow-me), bis zu vier Sprünge, sodass zwei Personen, die sich gegenseitig weiterleiten, nicht in einer Schleife landen können. Die Weiterleitung an eine externe Nummer erfolgt über die ausgehenden Routen, als ob die Person die Nummer direkt gewählt hätte, und benötigt, dass die Erweiterung für ausgehende Anrufe freigegeben ist.

Die Weiterleitung ist ein Live-Zustand, keine Konfiguration: das Festlegen macht keine Revision und wird über Neustarts hinweg beibehalten. Erweiterungen (Kapitel 3) und das Mitarbeiter-Portal zeigen und ändern sie auch.

Nicht stören

*78 ein, *79 aus, *76 umschalten. Mit nicht stören eingeschaltet, gehen Anrufe an die Voicemail oder an das Ziel für nicht beantwortete Anrufe der Erweiterung. Manuell gesetztes nicht stören hat Vorrang vor dem Kalender (Kalender (Kapitel 39)). Notruf-Rückrufe klingeln dennoch.

Follow-me

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

*21 schaltet Follow-me ein und aus, für Extensions, die Follow-me-Nummern gesetzt haben (auf der Extension oder im Mitarbeiterportal). Das Desk-Telefon klingelt zuerst für seine Klingelzeit, dann die Follow-me-Nummern, eine nach der anderen oder alle zusammen. Bei einer externen Nummer mit Drücken Sie 1 hört die Person ein Signal und drückt 1, um den Anruf anzunehmen; eine Voicemail oder Stille tut dies nie, und nach 15 Sekunden wird der Anruf weitergeleitet.

Anruf von jemand anderem beantworten

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

Intercom

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

*80 und eine Extension ruft sie mit Auto-Antwort: ihr Telefon antwortet über den Lautsprecher, und beide Seiten sprechen miteinander. Yealink, Grandstream und Snom lesen BitVoices Call-Info-Header, Poly liest Alert-Info; einige Telefone benötigen Intercom in ihren eigenen Einstellungen. Eine Extension kann Intercom ablehnen; dann klingelt der Anruf wie üblich. Türstationen nehmen nie Intercom an.

Schnellwahlen

*0 und ein Code wählt eine gespeicherte Nummer: *05. Die Schnellwahlen des Unternehmens sind auf dieser Seite; jeder Mitarbeiter kann seine eigenen auf seiner Extension oder im Mitarbeiterportal haben, und seine Schnellwahlen haben Vorrang vor denen des Unternehmens mit dem gleichen Code. Codes sind 1 bis 3 Ziffern.

Ändern der Codes

Jeder Code kann auf Funktionencodes (Kapitel 32) geändert oder mit dem Wort off deaktiviert werden. Zwei Funktionen können nicht den gleichen Code verwenden, und kein Code darf die Nummer einer Extension oder einer Gruppe sein: BitVoice zeigt an, welcher Code in Konflikt steht. Die Echo-, Voicemail- und Parknummern sind in Einstellungen (Kapitel 14).

Kapitel 33

Das Mitarbeiter-Portal

Das Mitarbeiter-Portal ermöglicht es jedem, seine eigenen Anrufe ohne Administrator zu verwalten: nicht stören, Weiterleiten, Folgen, Schnellwahlen, Voicemail und dessen Begrüßung, sein PIN, und eine Liste seiner eigenen Anrufe. Es ist unter #/me auf der Adresse dieses Servers zu finden und vom Anmeldebildschirm verlinkt.

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

Anmelden

Personen melden sich mit ihrer Erweiterungsnummer und ihrem Voicemail-PIN an: demselben PIN, der ihre Voicemail vom Telefon aus und ihre Anmeldung an Hotdesks öffnet. Eine Erweiterung ohne PIN kann sich nicht anmelden; ein Administrator legt einen PIN für die Erweiterung fest.

Wiederholte falsche Versuche von einer Adresse aus sperren diese für zehn Minuten. Eine Portal-Sitzung erreicht nur die Einstellungen der Person: nie eine andere Erweiterung, die Konfiguration oder die Aufzeichnungen einer anderen Person.

Was Personen tun können

RegisterkarteWas sich dort befindet
Wohin Anrufe gehennicht stören; Weiterleiten jedes Anrufs, wenn beschäftigt und wenn nicht beantwortet; Folgen-Nummern; eigene Schnellwahlen
VoicemailNachrichten zum Abspielen und Löschen, mit Transkripten und Zusammenfassungen, wenn AI aktiviert ist; Begrüßung aufzeichnen oder hochladen
Ihre Anrufedie eigenen Anrufe der Person, neueste zuerst, ohne Aufzeichnungen
PINPIN ändern, unter Angabe des aktuellen PIN

Weiterleiten und nicht stören, die hier eingestellt werden, sind dieselben wie die, die vom Telefon aus mit Funktionscodes (Funktionscodes (Kapitel 32)) eingestellt werden: die zuletzt eingestellte Einstellung gilt. Folgen-Nummern und Schnellwahlen sind Teil der Konfiguration der Erweiterung, daher erstellt eine Änderung eine Revision auf Änderungen (Kapitel 61), die als Änderung der Person aufgezeichnet wird.

Weiterleiten an eine externe Nummer funktioniert nur für Erweiterungen, die berechtigt sind, externe Nummern anzurufen. Das Portal teilt dies mit, anstatt eine Weiterleitung zu speichern, die nie klingeln könnte.

Chat und Anwesenheit

Das Portal zeigt im Reiter Chat Kollegen mit ihrem aktuellen Status an: verfügbar, in einem Gespräch, klingelt, abwesend (nicht stören, ein Meeting oder Abwesenheit aus dem Kalender, mit Grund) oder offline (kein Telefon verbunden), und den Status, den sie eingegeben haben ("Bei der Mittagspause, zurück um 14 Uhr"). Wählen Sie jemanden, um ihm eine Nachricht zu senden; Nachrichten werden sofort zugestellt, und eine Zahl neben einem Namen zeigt die ungelesenen Nachrichten an. Teamräume (Einstellungen, Mitarbeiter-Chat) sind Konversationen für eine Gruppe oder für alle, wenn ein Raum keine Mitglieder auflistet.

Nachrichten sind nur für die Personen in der Konversation sichtbar: Administratoren verwalten die Räume, lesen sie jedoch nie. Einstellungen, Mitarbeiter-Chat schaltet den Chat aus und legt fest, wie lange Nachrichten aufbewahrt werden (0 bewahrt die neuesten Tausend jeder Konversation).

Kapitel 34

Konferenzräume

Im Webinterface: /conferences

Ein Konferenzraum ist eine Nummer, die Menschen wählen, um alle zusammen zu sprechen. Mitarbeiter wählen sie von ihren Schreibtischen; externe Anrufer erreichen sie über eine eingehende Route oder eine Menüoption, die auf den Raum verweist.

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

Einrichten eines Raums

  1. Öffnen Sie Konferenzräume (Kapitel 34) und drücken Sie Konferenzraum hinzufügen.
  2. Geben Sie ihm eine Nummer (jede freie Nummer, standardmäßig 500) und einen Namen.
  3. Legen Sie optional ein PIN fest. Anrufer hören ein Signal, geben das PIN ein und drücken #. Drei falsche PINs und das Gespräch endet.
  4. Legen Sie optional ein Leiter-PIN fest, das sich von dem PIN unterscheidet. Wer es eingibt, tritt als Leiter bei.
  5. Um externe Anrufer zuzulassen, verweisen Sie eine eingehende Route (oder eine Menüschlüssel) auf den Raum.

Auswahlmöglichkeiten

AuswahlWas es tut
Warten auf den Leiteralle anderen hören den Warteton, bis ein Leiter beitritt; wenn der letzte Leiter den Raum verlässt, schließt sich der Raum und alle werden aufgelegt. Benötigt ein Leiter-PIN.
Mitglieder beitreten stummfür Briefings und Vorträge: Leiter sprechen, Mitglieder hören zu. Ein Mitglied drückt 1, um um das Wort zu bitten, und ein Leiter schaltet es frei.
Raum aufzeichnender gesamte Raum wird als eine Aufzeichnung in Anrufliste (Kapitel 47) aufbewahrt, sofern die Aufzeichnung nicht für das gesamte System deaktiviert ist
Signaltöne, wenn Personen beitreten und verlassenstandardmäßig aktiviert
Meiste Personen auf einmalstandardmäßig 50, bis zu 200

Tasten während eines Anrufs

Während ein Raum genutzt wird

Die Seite zeigt jeden genutzten Raum an: wer drin ist, wer spricht (das grüne Licht), wer stummgeschaltet ist, wer um das Wort gebeten hat und wer noch auf den Leiter wartet. Ein Administrator kann jeden stumm- oder freischalten, jemanden entfernen und den Raum sperren oder entsperren.

Jeder in einem Raum hört jeden anderen, der nicht stummgeschaltet ist, gemischt von BitVoice; jedes Telefon kann seinen eigenen Codec verwenden. Eine Anrufliste wird für jeden Anruf aufbewahrt, und eine für den Raum selbst mit seiner Dauer und Aufzeichnung.

HD-Audio

Schalten Sie HD-Audio in einem Raum ein (neue Räume haben es standardmäßig eingeschaltet) und es wird mit 16 kHz anstelle von 8 kHz gemischt: Personen mit Breitbandtelefonen (G.722, Opus, Browser-Telefon) hören sich gegenseitig in HD, mit der Klarheit eines modernen Anrufs, während Personen mit herkömmlichen Telefonen (G.711, Mobiltelefone über einen Anbieter) den gleichen Raum wie gewohnt hören. Die Live-Ansicht markiert den Raum und jedes Mitglied, das in HD ist. HD benötigt G.722 unter den Codecs, die die Telefone verwenden (es ist an erster Stelle in der Systemliste, Einstellungen, Codecs). Aufzeichnungen des Raums bleiben in Telefonqualität.

Videoräume

Setzen Sie Video auf einem Raum und Videotelefone (und Softphones), die beitreten, senden ihre Kamera und sehen ein Bild, das umgeschaltet wird, wenn Personen sprechen, wie in Asterisks ConfBridge:

BitVoice schaltet die Bilder ohne Dekodierung, sodass es fast nichts kostet, und es bittet jedes neue Bild-Telefon um ein vollständiges Bild (RTCP PLI und FIR und das SIP INFO picture-fast-update, das die meisten Schreibtischtelefone beantworten), sodass der Wechsel sofort sichtbar ist. Jedes Mitglied-Video verwendet den Video-Codec des Raums (H.264, sofern nicht VP8 gewählt wird); ein Telefon ohne diesen Codec tritt mit Ton bei. Jeder Zuschauer erhält einen stabilen Stream (eine Quelle, seinen eigenen Payload-Typ), wer auch immer auf dem Bildschirm ist. Die Live-Ansicht markiert, wer Video hat und wer auf dem Bildschirm ist.

Ein Raster wird anders erstellt: BitVoice gibt jedes Bild an ffmpeg auf dem Server, das es decodiert, in ein 1280 x 720 Bild mit 15 Bildern pro Sekunde einfügt und es einmal für alle codiert. Installieren Sie ffmpeg (Einstellungen, Video-Umwandlung, es wird angezeigt, ob es gefunden wurde); ohne es folgt ein Raster-Raum dem Sprecher und der Raum-Bildschirm sagt es. Jedes Bild kostet Prozessorzeit: auf einem kleinen Server sollten Sie Raster auf einige Räume gleichzeitig beschränken. Nur Mitglieder, deren Kamera sendet, werden angezeigt: jemand, der ohne Video beitritt oder dessen Kamera stoppt, verlässt das Raster (es friert nie auf einem stillen Bild ein), und das Raster wird innerhalb von ein paar Sekunden neu erstellt, wenn sich das ändert, mit einer kurzen Pause im Bild. Die zehnte Person und später werden gehört, aber nicht angezeigt. Die Live-Ansicht markiert die Größe des Rasters und wer im Raster ist.

Jedes Video aller (Browser)

Wählen Sie Jedes Video aller und der Raum erhält seine eigene Seite (Konferenzräume, Video-Raum öffnen, oder #/video-room/NUMBER). Jede Person dort drückt Mit meiner Kamera beitreten: der Browser sendet seine Kamera einmal, in drei Größen (Simulcast), und erhält jedes andere Bild in seinem eigenen Bild. BitVoice leitet die Bilder weiter, wie sie hereinkommen, ohne sie jemals zu decodieren (eine selektive Weiterleitungseinheit, SFU), sodass es wenig Prozessorzeit kostet; der Upload jedes Browsers und der Download jedes Betrachters sind es, was einen Raum begrenzt, sodass bis zu 16 Kameras möglich sind.

Bildschirm teilen: Drücken Sie Mein Bildschirm teilen und wählen Sie einen Bildschirm, ein Fenster oder einen Browser-Tab im Browser-eigenen Picker. Jeder im Raum sieht es als großes Bild unter Ihrem Namen mit scharfem Text (die Bildrate verringert sich stattdessen, wenn das Netzwerk knapp ist). Sie müssen sich nicht zuerst mit Ihrer Kamera verbinden. Teilen beenden oder die Browser-eigene Teilen beenden-Leiste beendet es.

Kapitel 35

Lautsprecher und Überkopflautsprecher

Im Webinterface: /paging

Lautsprecher sprechen durch viele Telefone auf einmal: wählen Sie eine Lautsprecher-Nummer, und jedes Telefon in der Gruppe antwortet automatisch über den Lautsprecher. Verwenden Sie es für Ankündigungen in einem Lager, einer Schule, einem Shop-Floor.

Einrichten einer Lautsprechergruppe

  1. Auf Lautsprecher (Kapitel 35) drücken Sie Lautsprechergruppe hinzufügen und geben ihr eine Nummer (standardmäßig 800) und einen Namen.
  2. Wählen Sie die Telefone aus. Lautsprecher, die als Anschlüsse (Typ Lautsprecher) eingerichtet sind, können auch Mitglieder sein.
  3. Optional können eine Multicast-Adresse und ein Port angegeben werden.

Multicast

Multicast sendet die Durchsage auch an eine Multicast-Adresse und einen Port (239.0.1.10:5000), im G.711-µ-law-Format, das von Lautsprechern und vielen Telefonen ohne separate Anrufe empfangen werden kann. Eine Gruppe kann nur eine Multicast-Adresse haben. Es funktioniert nur in einem Netzwerk: Router leiten Multicast nicht weiter, es sei denn, sie sind dafür konfiguriert.

Lautsprecher- und Intercom-Funktion

LautsprecherIntercom
Wer hört zujeder in der Gruppeein Anschluss
Rückmeldungnein, einwegja, zweigleisig
WieWählen der Gruppennummer*80 und der Anschluss

Telefone, die nicht innerhalb weniger Sekunden auf eine Durchsage antworten, werden ausgelassen, sodass ein Telefon ohne Auto-Antwort nie eine Durchsage blockiert. Einige Telefone benötigen die Erlaubnis zur Auto-Antwort (Intercom) in ihren eigenen Einstellungen.

Kapitel 36

Hot Desking

Im Webinterface: /phones

Ein Hot Desk ist ein geteilter Telefonanschluss, der zu dem wird, der sich daran anmeldet: für Büros, in denen die Menschen keine festen Schreibtische haben. Erstellen Sie einen, indem Sie Hot Desk in der Erweiterung aktivieren, die das Telefon verwendet (die eigene Erweiterung des Schreibtisches, wie z. B. 900 Schreibtisch 3).

Anmelden und Abmelden

  1. Wählen Sie am Telefon *33 und warten Sie auf den Ton.
  2. Geben Sie Ihre Erweiterung und # ein und warten Sie auf den Ton.
  3. Geben Sie Ihre Voicemail-PIN und # ein. Ein ansteigender Ton bedeutet, dass Sie angemeldet sind; ein abfallender Ton bedeutet, dass die Anmeldung abgelehnt wurde.

Von diesem Zeitpunkt an klingeln Anrufe an Ihrer Erweiterung an diesem Schreibtisch sowie an Ihren anderen Telefonen, und Anrufe, die Sie von hier aus tätigen, zeigen Ihre Nummer und Ihren Namen und werden auf Kosten als Ihre Anrufe gezählt. Die Anmeldung an einem anderen Schreibtisch versetzt Sie dorthin. *34 meldet Sie ab. Fünf falsche Versuche sperren den Schreibtisch für zehn Minuten.

Verwaltung von Hot Desks

Auf Telefonen (Kapitel 4) zeigt Hot Desks, wer wo angemeldet ist; Administratoren können jemanden anmelden (ohne PIN) oder abmelden. Die Codes und eine Zeit jeden Tages, an der jeder abgemeldet ist, befinden sich in den Einstellungen. Anmeldungen werden über Neustarts hinweg beibehalten.

Kapitel 37

Hotel- und Weckanrufe

Im Webinterface: /hotel

Weckanrufe

Jeder kann einen Weckanruf buchen: Gäste, Nachtschichten, Personen im Dienst. Von ihrem eigenen Telefon aus wählen sie *62: BitVoice sagt die eingestellte Zeit an (wenn vorhanden), dann geben sie die Zeit als vier Ziffern ein (0630) oder drücken die Stern-Taste, um abzubestellen. Auf Hotel (Kapitel 37) kann ein Administrator einen Weckanruf für jeden Anschluss buchen, einmalig oder jeden Tag.

Zu diesem Zeitpunkt klingelt das Telefon mit dem Namen des Systems; wenn es beantwortet wird, hört man "Guten Morgen. Dies ist Ihr Weckruf." (den Weckruf-Prompt in Klänge (Kapitel 20), in der Sprache des Gastes oder der Nebenstelle). Wenn es nicht beantwortet wird, wird es erneut versucht (3 Versuche, 5 Minuten auseinander, beide unter Einstellungen auf der Seite), und nach dem letzten kann die Rezeption-Nebenstelle angerufen werden. Mit mehreren Servern macht nur einer Weckrufe.

Gästezimmer

Schalten Sie Gästezimmer auf der Nebenstelle jedes Zimmertelefons ein. Im Hotel zeigt jedes Zimmer seinen Gast, Weckruf und Zimmstatus mit Einchecken- und Auschecken-Schaltflächen.

Das Hotelsystem (PMS)

Kapitel 38

Kontakte auf jedem Telefon

Im Webinterface: /contacts

Kontakte ist das Firmenverzeichnis: die Lieferanten, Kunden und anderen Büros, die die Leute anrufen. Jedes Telefon listet es neben den Erweiterungen auf, und wenn eine dieser Nummern hereinkommt, zeigen die Telefone und die Anruferkarte den Kontaktnamen (wenn der Anbieter keinen gesendet hat). Eine Nummer wird unabhängig von der Schreibweise erkannt: +1 212 555 0100 und 2125550100 sind dieselbe Leitung.

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

Hinzufügen von Kontakten

Kontakt hinzufügen für einen nach dem anderen, mit so vielen Nummern (Arbeit, Mobil, Zuhause, andere), wie sie haben. Importieren übernimmt eine Tabelle, die als CSV gespeichert wurde, deren erste Zeile die Spaltennamen enthält: Name, Firma, Arbeit (oder Telefon), Mobil, Zuhause, andere, E-Mail, Notizen. BitVoice überprüft die gesamte Datei zuerst und sagt, welche Zeilen falsch sind; ein Kontakt mit demselben Namen wie einer, der bereits vorhanden ist, wird aktualisiert, anstatt zweimal hinzugefügt zu werden, und Ersetzen Sie jeden Kontakt beginnt die Liste von vorne.

Auf Schreibtischtelefonen

Telefone, die von Telefonen (Kapitel 4) (Bereitstellung) eingerichtet werden, erhalten das Verzeichnis ohne weitere Einrichtung:

Im Browser-Telefon

Kontakte unter der Tastatur findet einen Namen oder eine Nummer und bereitet ihn zum Anrufen vor.

Von Microsoft 365 oder Google Workspace

BitVoice kann Kontakte mit Ihrem Unternehmensverzeichnis synchronisieren: alle Personen darin, die eine Telefonnummer haben, und die gemeinsamen Kontakte (Exchanges Organisationenkontakte oder Google Shared Domain-Kontakte). In Einstellungen (Kapitel 14), Microsoft 365 und Google Workspace, wählen Sie den Dienst aus, geben Sie die erforderlichen Informationen ein und drücken Sie Jetzt überprüfen: Es meldet sich an, zählt die Personen und sagt, welche Extensions einer Person per E-Mail entsprechen. Speichern und Kontakte füllen sich innerhalb von 30 Sekunden; dann alle 30 Minuten oder sofort mit Kontakte jetzt synchronisieren.

Microsoft 365 (eine App-Registrierung; Sie müssen admin-Zustimmung erteilen können):

  1. Im Entra-Admin-Center, App-Registrierungen, Neue Registrierung: Benennen Sie es BitVoice, Single-Tenant, keine Umleitungs-Adresse.
  2. API-Berechtigungen, Berechtigung hinzufügen, Microsoft Graph, Anwendungsberechtigungen: User.Read.All, OrgContact.Read.All und Calendars.ReadBasic. Dann Admin-Zustimmung erteilen.
  3. Zertifikate & Geheimnisse, Neues Client-Geheimnis: Kopieren Sie den Wert (wird nur einmal angezeigt).
  4. In BitVoice: Die Verzeichnis-(Mandanten-)ID, die Anwendungs-(Client-)ID und das Geheimnis. Ein Geheimnis läuft ab (Microsoft bietet bis zu zwei Jahre): Wenn es abläuft, sagt die Karte, dass das Geheimnis abgelehnt wurde; erstellen Sie ein neues und fügen Sie es ein.

Google Workspace (ein Dienstkonto; Sie müssen Super-Administrator sein):

  1. In Google Cloud, in einem Ihrer Projekte: Aktivieren Sie die People API und die Google Calendar API, erstellen Sie ein Dienstkonto und fügen Sie einen Schlüssel (JSON) hinzu.
  2. In der Google Admin-Konsole, Sicherheit, Zugriff und Datenkontrolle, API-Steuerung, Domain-weite Delegation, Neu hinzufügen: Die Client-ID des Dienstkontos mit den Bereichen https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy.
  3. In BitVoice: Die Schlüsseldatei und die E-Mail-Adresse eines Administrators, als den das Dienstkonto agieren soll.

Was hereinkommt:

Kapitel 39

Kalender und "Nicht stören"

Im Webinterface: /extensions

Eine Erweiterung kann dem Kalender einer Person folgen: während Meetings und Auszeiten werden die Anrufe an die Voicemail weitergeleitet oder an eine andere Erweiterung oder ein Mobiltelefon weitergeleitet, anstatt ein Telefon anzuklingeln, das niemand beantworten wird. Ringgruppen klingeln in der Zwischenzeit und in Warteschleifen wird der Agent als Abwesend angezeigt.

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

In der Erweiterung Kalender und "Nicht stören" fügen Sie die private Adresse des Kalenders ein:

Überprüfen liest es sofort aus und listet die nächsten besetzten Zeiten auf. BitVoice liest jedes Kalender alle fünf Minuten. Auszeiten (ganztägige Ereignisse und Outlooks "Außerhalb des Büros") werden immer gezählt; Meetings werden gezählt, wenn Meetings als besetzt zählen** aktiviert ist; Ereignisse, die als frei markiert sind, werden nie gezählt, noch abgesagte. Wiederkehrende Meetings mit übersprungenen und verschobenen Vorkommen werden verstanden. Wenn ein Kalender nicht gelesen werden kann, sagt die Gesundheitsseite es.

Nicht stören jetzt stoppt das Klingeln der Erweiterung, bis es deaktiviert wird, unabhängig von dem, was der Kalender sagt. Die Erweiterungsliste zeigt an, wer abwesend ist und bis wann.

Die private Adresse funktioniert wie ein Passwort: jeder, der sie hat, kann diesen Kalender lesen, also wird sie mit den anderen Geheimnissen aufbewahrt.

Jeder Kalender auf einmal: Microsoft 365 und Google Workspace

Anstatt einer privaten Adresse pro Anschluss kann BitVoice den Kalender jeder Person aus Microsoft 365 oder Google Workspace lesen: Konfigurieren Sie es einmal in Einstellungen (Kapitel 14), Microsoft 365 und Google Workspace (siehe Kontakte (Kapitel 38) für die Schritte), mit Kalender zeigen, wer abwesend ist aktiviert. Jeder Anschluss wird seinem Benutzer zugeordnet, indem seine E-Mail-Adresse verwendet wird; ein Anschluss mit einer privaten Adresse verwendet diese stattdessen. Die Einstellungen des Anschlusses hier (Besprechungen zählen als beschäftigt, Während der Beschäftigung, Anrufe) gelten wie bei einer privaten Adresse.

Kapitel 40

Mobile Apps

Die BitVoice-Apps für iPhone und Android machen ein mobiles Telefon zu einem der Telefone einer Erweiterung. Es klingelt wie ein Büro-Telefon, auf dem eigenen Anrufbildschirm des Telefons, auch wenn die App geschlossen ist.

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

Push einrichten

Eine geschlossene App wird durch eine Push-Nachricht für Anrufe geweckt. In Einstellungen (Kapitel 14), Mobile Apps, wählen Sie eines:

PushWas Sie benötigen
Push-RelayBioDreams Relay (mit Hosting oder Support) oder Ihr eigenes bvpush: seine Relay-Adresse, Schlüssel-ID und Geheimnis
Eigene AppsIhre eigenen Builds: für Apple, die Team-ID, Bundle-ID, Schlüssel-ID und Schlüssel (.p8); für Google, das Firebase-Dienstkonto (JSON)

Setzen Sie Adresse, die die Apps verwenden auf die https-Adresse dieses Servers, wie sie von überall aus erreichbar ist, nicht nur vom Büro aus.

Ein Telefon pairen

  1. Öffnen Sie die Erweiterung und drücken Sie Ein Telefon hinzufügen.
  2. Scannen Sie den QR-Code in der App. Der Code ist einmalig und gültig für zehn Minuten.

Wenn ein Anruf eingeht

BitVoice weckt die App; sie verbindet sich, klingelt auf dem eigenen Anrufbildschirm des Telefons und wird wie jedes andere Telefon der Erweiterung beantwortet: Ringgruppen und Warteschleifen klingeln es mit den anderen Telefonen der Erweiterung. Die Erweiterungsseite listet die gepaarten Telefone auf, ob jedes Für Anrufe geweckt werden kann, wann es zuletzt gesehen und zuletzt geweckt wurde und ob ein Push-Problem vorliegt. Entpairen stoppt ein Telefon sofort, für ein verlorenes Telefon.

Während eines Anrufs

Die App ist eine vollständige Erweiterung, nicht nur ein Wähler:

Die anderen Registerkarten

Live-Transkript während eines Anrufs

Mit Anrufe live aufschreiben ein (in den Einstellungen (Kapitel 14), KI), wird jede Seite eines Anrufs während des Sprechens aufgeschrieben und auf dem Telefon während des Anrufs angezeigt. Der Audio geht an den Sprach-in-Text-Dienst (auf Ihrem eigenen Computer, wo dies eingestellt ist) oder den KI-Dienst, solange der Anruf andauert. Es ist die gleiche Aufschreibung wie 911-Live-Transkripte (Kapitel 13), für normale Anrufe.

Kapitel 41

Videotelefonate

Im Webinterface: /settings

Wenn beide Telefone in einem Anruf Video senden (Videotelefone, Softphones, Video-Türsprechanlagen), wird das Bild zwischen ihnen durch BitVoice weitergeleitet. Nichts zu konfigurieren: es ist aktiv, es sei denn, Einstellungen → Videotelefonate ist deaktiviert.

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

Umwandlung von Video

Telefone und Apps, die einen gemeinsamen Video-Codec teilen (die meisten verwenden H.264), erhalten das Video des anderen wie es ist. Wenn zwei Parteien keinen gemeinsamen Codec haben (ein Videotelefon mit nur H.264 und ein Browser mit nur VP8), aktivieren Sie Video zwischen H.264 und VP8 umwandeln in den Einstellungen: BitVoice bietet dann beide Codecs an, antwortet jeder Partei in ihrem eigenen und konvertiert jede Richtung mit ffmpeg, das auf dem Server installiert sein muss (apt install ffmpeg, brew install ffmpeg; oder geben Sie den Pfad an). Die Umwandlung kostet etwa einen Prozessor-Kern pro Anruf und fügt eine kleine Verzögerung hinzu, sodass sie standardmäßig deaktiviert ist und nur verwendet wird, wenn sie benötigt wird. Die Einstellungen sagen, ob ffmpeg gefunden wurde.

Kapitel 42

Fax: Senden und Empfangen, Faxgeräte und analoge Telefone

Im Webinterface: /faxes

Faxgeräte, analoge Telefone, Türsprechanlagen und alte Leitungen verbinden sich über ein SIP-Gateway (oder eine Telefoniekarte im BitVoice-Computer: siehe Telefoniekarten (Kapitel 6)): ein ATA (Grandstream HT-Serie, für ein oder zwei analoge Telefone oder ein Fax), oder ein größeres Gateway (Patton SmartNode, AudioCodes MediaPack und Mediant) für viele analoge Ports, eine ISDN-Leitung (BRI/PRI) oder alte analoge Leitungen (FXO). Jeder Port registriert sich bei BitVoice als Erweiterung, wie ein Telefon.

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

Empfangen von Faxes ohne Faxgerät. Auf Faxes fügen Sie eine Faxnummer hinzu (z.B. 300), mit den E-Mail-Adressen, an die jedes Fax gesendet wird. Dann leiten Sie in Anrufweiterleitung (Kapitel 8) die Anrufe einer Telefonnummer an diese weiter. BitVoice antwortet wie ein Faxgerät, schaltet auf T.38 um und empfängt das Fax; jedes Fax wird zu einem PDF, das auf Faxes (Anzeigen, PDF) gespeichert und per E-Mail gesendet wird. Ein Fax, das unterbrochen wird, behält die erhaltenen Seiten und zeigt dies an. Jedes Fax in der Liste zeigt die Identität des sendenden oder empfangenden Geräts an, wenn diese von der Nummer abweicht, sowie die Geschwindigkeit, mit der die Seiten übertragen wurden (14.400 Bit/s ist die höchste; ein Gerät, dessen Faxes häufig bei einer niedrigen Geschwindigkeit fehlschlagen, hat in der Regel eine schlechte Leitung). Dazu benötigen Sie einen Anbieter, der T.38 unterstützt (die meisten tun dies); ein als Ton gesendetes Fax kann nicht auf diese Weise empfangen werden. Getestet mit T38Fax, einem Fax-Anbieter: Registrieren Sie den Trunk mit Benutzername und Passwort bei sip.t38fax.com, Port 5080 (UDP); erlauben Sie UDP von dessen Netzwerken (8.34.182.0/24 und 8.20.91.0/24) durch jede Firewall vor BitVoice.

Ein Fax senden. Auf Faxen, Ein Fax senden: wählen Sie die Faxnummer, von der es gesendet wird, geben Sie die Nummer ein, an die es gesendet werden soll, schreiben Sie eine Notiz, wenn Sie möchten (sie wird zur ersten Seite), und fügen Sie Dokumente hinzu. Textdateien und Bilder (PNG, JPEG, GIF) funktionieren überall. PDF benötigt poppler auf dem Server (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument und RTF benötigen LibreOffice ebenfalls. Die Seite sagt, was der Server kann. Jede Seite erhält eine Kopfzeile, wie Faxgeräte sie drucken: die Zeit, den Namen der Faxnummer, ihre Identität und die Seitenzahl. Der Anruf wird von der Identität der Ziffern aus (+1 212 555 0300 ruft von +12125550300) oder von der Faxnummer selbst, wenn die Identität keine Nummer ist. Seiten sind US-Letter in Nordamerika und A4 anderswo, abhängig vom Land in den Einstellungen.

BitVoice ruft die Nummer über Ihre ausgehenden Routen an, wie eine Erweiterung es auch tun würde, und sendet mit der schnellsten Rate, die die Leitung trägt (14.400 Bit/s, langsamer, wenn die Leitung schlecht ist). Faxen von einer Faxnummer werden nacheinander gesendet. Eine besetzte Nummer oder eine, die nicht antwortet, wird fünf Minuten später noch einmal versucht, insgesamt dreimal. Gesendete Faxen werden mit den empfangenen Faxen aufgelistet: Gesendet, Warten auf Senden, Fehlgeschlagen (mit Noch einmal versuchen), oder Teilweise gesendet, wenn die Leitung nach einigen Seiten unterbrochen wurde.

E-Mail zu Fax. Unten in der Liste können Sie ein Postfach einrichten, das BitVoice lesen kann (IMAP über TLS, Port 993; für Google- und Microsoft-Postfächer verwenden Sie ein App-Passwort), dann Testen und Speichern. Jeder, der berechtigt ist, Faxen zu senden, schreibt an dieses Postfach mit der Faxnummer im Betreff (Fax 212 555 0199), oder an eine Plus-Adresse (fax+2125550199@example.com), wenn der Mail-Server diese akzeptiert. Anlagen werden zu den Seiten, und die eigenen Wörter der E-Mail werden zur Umschlagseite (die Signatur und zitierte E-Mails werden weggelassen). Es wird von der Faxnummer gesendet, die den Absender auflistet: ihre E-Mail-Adresse für jedes Fax kann immer senden, und Kann auch Faxen per E-Mail senden fügt weitere hinzu (ganze Adressen oder @example.com für eine Domäne). Der Absender erhält eine E-Mail, wenn das Fax gesendet wurde, oder warum es nicht gesendet werden konnte.

E-Mail ist leicht zu fälschen, daher sendet BitVoice ein Fax nur, wenn Ihr Mail-Server festgestellt hat, dass es wirklich vom Absender-Domain stammt (DKIM, SPF oder DMARC, in der Authentication-Results-Zeile, die es hinzufügt). Andere Nachrichten werden ohne Antwort abgelehnt. Schalten Sie E-Mails akzeptieren, die die Absender-Domäne nicht bestätigt hat nur für ein Postfach, das keine externe E-Mail erreichen kann.

Faxgeräte auf Gateways. BitVoice überträgt Fax über T.38, dem Faxstandard für das Internet: Wenn das Gateway ein Fax-Signal hört, schaltet es den Anruf auf T.38 um, BitVoice bittet die andere Seite (Ihren Anbieter oder ein anderes Gateway) um Umschaltung und leitet das Fax zwischen ihnen weiter. Wenn die andere Seite T.38 nicht unterstützt, bleibt der Anruf auf G.711 und das Fax wird als Ton übertragen, was in einem guten Netzwerk funktioniert. Aktive Anrufe zeigen Fax (T.38), während ein Fax übertragen wird.

Für zuverlässige Faxe:

Kapitel 43

Posteingang: Web-Chat, WhatsApp und Messenger

Im Webinterface: /inbox

Der Posteingang (Kapitel 43) enthält jede geschriebene Konversation in einer Liste: die Chat-Box auf Ihrer Website, WhatsApp, Facebook Messenger und Textnachrichten (Kapitel 44). Jeder, der bei der Web-Oberfläche angemeldet ist, kann antworten; der Erste, der antwortet, übernimmt die Konversation (jeder kann sie mit Beantwortet von weitergeben), und Schließen legt sie weg, bis die Person wieder schreibt. Ungelesene Konversationen werden gezählt und die Liste aktualisiert sich automatisch.

Die Chat-Box auf Ihrer Website

Unter Kanäle, aktivieren Sie Web-Chat, wählen Sie dessen Titel, Farbe und erste Zeile und setzen Sie die Zeile, die es auf den Seiten Ihrer Website anzeigen soll:

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

Es zeichnet eine Chat-Schaltfläche in die Ecke jeder Seite; Besucher schreiben (mit ihrem Namen, wenn sie möchten) und sehen Ihre Antworten, sobald sie eintreffen. Die Konversation bleibt im Browser des Besuchers, sodass sie weitergeht, wenn er zwischen Seiten wechselt. Listen Sie Ihre Websites unter Nur auf diesen Seiten auf, damit die Box nirgendwo anders läuft. Besucher müssen diese Server-Adresse aus dem Internet erreichen, mit einem Zertifikat, das Browser vertrauen (Let's Encrypt (Kapitel 14)). Zehn neue Chats von einer Adresse in zehn Minuten sind das Maximum, das BitVoice akzeptiert.

WhatsApp

WhatsApp-Geschäftsnummern auf Metas Cloud-API. Erstellen Sie auf der Entwickler-Website von Meta eine App mit WhatsApp, fügen Sie Ihre Nummer hinzu und erstellen Sie einen Systembenutzer mit einem dauerhaften Zugriffstoken. Aktivieren Sie unter Kanäle WhatsApp und geben Sie die Telefonnummer-ID und die Geschäfts-Kontoid (beide aus der API-Konfiguration), das Zugriffstoken und das App-Geheimnis der App ein, dann speichern. Konfigurieren Sie in der WhatsApp-Konfiguration der App den Webhook: die Callback-Adresse und den Überprüfungstoken, den BitVoice zeigt, abonniert für *Nachrichten*.

WhatsApp ermöglicht es Ihnen, innerhalb von 24 Stunden nach der letzten Nachricht des Kunden frei zu antworten; danach akzeptiert es nur Nachrichtenvorlagen, die in WhatsApp Manager genehmigt wurden. Das Antwortfeld wird dann zu einem Vorlagen-Auswahlfeld: Wählen Sie eine Vorlage (es listet die Vorlagen Ihres Kontos auf, mit ihrer Sprache und Art), füllen Sie ihre Werte aus ({{1}}, {{2}} ...), überprüfen Sie die Vorschau, die der Kunde lesen wird, und Vorlage senden. Vorlagen, die der Posteingang nicht ausfüllen kann, werden grau aufgeführt mit dem Grund: Eine mit Bild-, Video- oder Dokumentkopfzeile, einer Variable in der Kopfzeile oder einem Link eines Schaltflächen, benannte Parameter oder ein Code-Schaltflächen; und solche, die noch nicht genehmigt sind. Erstellen Sie Vorlagen in WhatsApp Manager; Meta überprüft jede innerhalb von Minuten.

Facebook Messenger

Für eine Facebook-Seite: Fügen Sie in der Meta-App Messenger hinzu, verbinden Sie die Seite und erstellen Sie einen Seiten-Zugriffstoken. Geben Sie unter Kanäle die Seiten-ID, den Seiten-Zugriffstoken und das App-Geheimnis ein; dann konfigurieren Sie den Webhook (die Adresse und den Überprüfungstoken, den BitVoice zeigt), abonniert für *Nachrichten* und *messaging_postbacks*. Antworten sind innerhalb von 24 Stunden nach der letzten Nachricht der Person erlaubt. Von da an bis zu 7 Tagen akzeptiert Messenger Antworten, die von einer Person geschrieben werden (gesendet mit Metas *human agent*-Tag: Die App benötigt Metas Human Agent-Berechtigung, die im App-Review angefordert wird); die automatische Begrüßung wird dann nicht gesendet. Nach 7 Tagen akzeptiert der Posteingang keine Antwort, bis die Person wieder schreibt.

Jeder Webhook wird mit dem App-Geheimnis (Metas Signatur) überprüft, bevor BitVoice ihm glaubt, und eine Nachricht, die Meta zweimal sendet, wird einmal gespeichert. Bilder, Sprachnachrichten und andere Anhänge werden als solche angezeigt ("[Bild]"); öffnen Sie sie in Metas eigenen Apps.

Automatische Begrüßung, wenn eingerichtet, beantwortet die erste Nachricht jeder neuen Konversation sofort.

Kapitel 44

Geschäftliche Textnachrichten (SMS)

Im Webinterface: /texts

Senden und Empfangen von Textnachrichten von Ihren Geschäftsnummern auf Textnachrichten. Textnachrichten werden über einen Textnachrichten-Anbieter gesendet. Vorhanden: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute und VoIP.ms, plus Ihr eigener Webhook für jeden anderen Dienst oder ein eigenes Gateway. Es können beliebig viele Anbieterkonten gleichzeitig verwendet werden: Jede Nummer gibt an, welcher Anbieter sie trägt.

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

Einrichten

  1. Finden Sie im Portal des Anbieters die API-Details des Kontos. Das Formular fragt nach genau dem, was der Anbieter damit bezeichnet (Twilio: Account-SID und Authentifizierungstoken; Telnyx: ein API-Schlüssel; Bandwidth: API-Benutzer, Passwort, Konto-ID und Messaging-Anwendungs-ID; SignalWire: auch Ihre Raum-Adresse) und sagt, wo Sie sie finden.
  2. Auf Textnachrichten, Textnachrichten-Einrichtung, fügen Sie den Anbieter mit ihnen hinzu und speichern. BitVoice zeigt eine Adresse für empfangene Textnachrichten an: Stellen Sie sie im Anbieter als die Adresse ein, an die empfangene Nachrichten gesendet werden (sein Callback, Webhook oder Nachrichten-URL). Für VoIP.ms fügen Sie ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} ans Ende hinzu. Lieferbestätigungen, die an dieselbe Adresse gesendet werden, werden ignoriert. BitVoice muss von dort aus über das Internet erreichbar sein.
  3. Fügen Sie jede Nummer hinzu, von der aus Sie Textnachrichten senden (mit ihrer Ländervorwahl), den Anbieter, der sie trägt, und die Erweiterungen, um per E-Mail zu benachrichtigen, wenn eine Textnachricht eingeht.

US 10DLC

US-Anbieter blockieren Texte von gewöhnlichen Geschäftsnummern, die nicht registriert sind. Registrieren Sie Ihre Marke und dann eine Kampagne bei Ihrem Textanbieter; die Checkliste bei Texts verfolgt, wo sie stehen, und warnt, wenn Ihre Beispielmitteilung die Abbestellwörter fehlt, die die Anbieter erwarten.

Gespräche

Jedes Gespräch zeigt, wer es ist (aus Kontakten), ungelesene Texte und den Thread. Eingabe sendet; der Zähler zeigt, wie viele Texte eine lange Nachricht enthält. Wenn jemand STOP antwortet, kann nichts mehr an diese Nummer gesendet werden, bis sie START antworten. Erhaltene Texte erscheinen auch als Benachrichtigung in BitVoice.

Kapitel 45

Übertragung von Informationen

Im Webinterface: /settings

Damit ein Anrufer sich nie wiederholen muss: Wenn Jeden briefen, an den ein Anruf weitergeleitet wird in den Einstellungen (Einstellungen, KI) aktiviert ist, schreibt BitVoice eine zweisätzige Zusammenfassung des Anrufs bislang (wer anruft, was er will, was bereits zugesagt wurde) für die Person, an die er weitergeleitet wird. Sie erscheint auf ihrem Browser-Telefon mit dem klingelnden Anruf, auf Aktuelle Anrufe (Kapitel 46) und als Text auf dem Bildschirm ihres Schreibtischtelefons (für Telefone, die SIP-Nachrichten anzeigen).

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

Es funktioniert gleich, wenn der KI-Rezeptionist einen Anrufer an eine Person übergibt: Die Information stammt von dem, was der Anrufer dem Assistenten gesagt hat.

Es benötigt den KI-Service und ein Sprach-zu-Text-Modell (Einstellungen, KI), und die Audio des Anrufs bislang (bis zu fünf Minuten) wird an diesen Service gesendet, um ausgeschrieben zu werden. Eine Zusammenfassung dauert einige Sekunden, daher kann sie erst nach dem Klingeln des Telefons erscheinen.

Teil 4

Kunden und Einblicke

Wissen, wer angerufen hat und wie es gelaufen ist: die aktuellen Anrufe und die Historie, die Kundenzeitachse, CRMs, Aufzeichnungen und Zustimmung, Qualität, Kosten und Rufnummern-Ruf.

Kapitel 46

Aktive Anrufe

Im Webinterface: /calls

Aktive Anrufe zeigt jeden laufenden Anruf an, aktualisiert, wie es passiert: wer wen angerufen hat, wie lange es schon läuft, seine Codecs und seine Qualität.

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

Was Administratoren tun können

AktionWas es tut
Auflegenbeendet den Anruf für beide Seiten
Tür öffnenfür einen Anruf von einem Türstation
Aufzeichnung pausierenfür eine Kartennummer: der pausierte Teil ist stumm in der Aufzeichnung und markiert in der Historie (Anrufaufzeichnung (Kapitel 51))
Zuhörenhören Sie den Anruf still
Flüsternsprechen Sie mit dem Agenten; der Anrufer hört nicht
Eindringentreten Sie dem Anruf bei; jeder hört Sie

Um zuzuhören, zu flüstern oder einzudringen, drücken Sie Beaufsichtigen, wählen Sie das Telefon unter Von Telefon und drücken Sie Klingeln: Ihr Telefon klingelt, und wenn Sie antworten, treten Sie dem Anruf bei. Sie können zwischen Zuhören, Flüstern und Eindringen wechseln, während Sie im Anruf sind.

Was noch angezeigt wird

Wenn ein Anruf endet, wird er zu Anrufhistorie (Kapitel 47) verschoben.

Kapitel 47

Anrufhistorie

Im Webinterface: /history

Jeder abgeschlossene Anruf: wer wen angerufen hat, wann, wie lange und wie er endete. Sortieren Sie die Spalten, spielen Sie Aufzeichnungen ab (eine Pause für Kartennummern ist markiert) und laden Sie die Liste als CSV herunter. Wie lange die Aufzeichnungen aufbewahrt werden, wird in den Einstellungen, Anrufaufzeichnung, festgelegt; ein Rechtsanspruch (Kapitel 73) bewahrt sie länger.

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

Wie es geroutet wurde

Unter jedem Anrufsergebnis listet Wie es geroutet wurde in einfachen Worten und in der Reihenfolge auf, was entschied, wohin der Anruf ging: die eingehende Route, die ihn annahm, ob ein Zeitplan geöffnet oder geschlossen und die Uhrzeit war, eine Umschalterseite, was ein Routing-Skript ausgewählt hat (oder dass sein Fallback den Anruf annahm), die in einem Menü gedrückten Tasten, wer abwesend war, wer kein Telefon verbunden hatte, wer nicht geantwortet hat, die ausgehende Route und die verwendeten Trunks (und einen Trunk, den der Gesundheitsrichter hinter die anderen verschob) und das Urteil des Betrugs-Schutzes, und, für einen aufgezeichneten Anruf, dessen Parteien unter verschiedenen Zustimmungsregeln stehen, welche Regel angewendet wurde.

Qualität, Klang und Verschlüsselung

Die Qualität-Spalte zeigt den Score (MOS, von 1 bis 5) jedes angenommenen Anrufs und zwei Markierungen, wenn sie zutreffen:

Transkripte und Suche

Mit aktiviertem KI und Aufgezeichnete Anrufe transkribieren (Einstellungen, KI) wird jeder aufgezeichnete Anruf mit einer kurzen Zusammenfassung und seinen Aufgaben transkribiert: was jemand vereinbart oder aufgefordert wurde zu tun. Jede Seite des Anrufs wird getrennt von der Aufzeichnung transkribiert, sodass das Transkript zeigt, wer was gesagt hat und wann. Der Transkript-Button neben einer Aufzeichnung öffnet es; Administratoren können auch einen einzelnen Anruf transkribieren oder einen erneut transkribieren.

Suche nach gesagten Worten findet Anrufe durch Wörter aus ihren Transkripten, Zusammenfassungen und Aufgaben. Nur aufgezeichnete Anrufe werden transkribiert. Ein Transkript wird mit seiner Aufzeichnung gelöscht und das Lesen oder Suchen von Transkripten wird im Überwachungsprotokoll vermerkt, wie das Abspielen einer Aufzeichnung.

Kapitel 48

Kundentimeline

Im Webinterface: /timeline

Die Kundentimeline zeigt alles mit einer Telefonnummer über das letzte Jahr an, von neu bis alt, damit derjenige, der abnimmt, die ganze Geschichte kennt.

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

Was es zeigt

ElementMit
Anrufewer sie angenommen hat, wie lange sie gedauert haben und mit einer Transkript, einer Zusammenfassung, der Aufzeichnung und der Transkript
Voicemailsihre Zusammenfassungen
Textnachrichtenin beide Richtungen
Rückrufeangefordert und ob durchgeführt
Notizendie eigenen Notizen des Teams

Eine Nummer passt unabhängig von der Schreibweise: +1 212 555 0100 und 2125550100 sind dieselbe.

Öffnen

Von einer Anruferkarte (Zeitachse), von Kontakten, von einem eingehenden Anruf in der Anrufliste, von einer Textkonversation oder indem Sie eine Nummer oben in der Zeitachse (Kapitel 48) eingeben.

Notizen

Administratoren können Eine Notiz für das Team hinzufügen: Sie wird auf der Zeitachse für jeden angezeigt, mit Angabe, wer sie geschrieben hat und wann, und kann entfernt werden.

Kapitel 49

CRM: Anruferkarten und Anrufliste

Im Webinterface: /settings

Verbinden Sie ein Kunden-System in Einstellungen (Kapitel 14), CRM. Es funktioniert mit jedem System, das eine Web-Adresse hat, ohne dass Code für jedes Produkt geschrieben werden muss.

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

Anruferkarten

Während ein Anruf von außerhalb klingelt, zeigt Live-Anrufe eine Karte an: Wer es ist (aus Ihrem CRM oder dem Namen der Nebenstelle), wie oft sie in den letzten 90 Tagen angerufen haben, auf welche Rückrufe (Kapitel 30) sie warten, und die Zusammenfassung ihres letzten transkribierten Anrufs. Das Browser-Telefon zeigt eine kürzere Karte an die Person, die den Anruf annimmt: Wer es ist, vorherige Anrufe und wartende Rückrufe, aber nicht die Zusammenfassungen von Anrufen anderer Personen.

Für den Namen legen Sie Adress-Suche fest: BitVoice fragt es (GET) mit der Rufnummer des Anrufers anstelle von {number}, sendet Such-Header mit seinem Wert (ein Verweis auf ein Vault-Wert funktioniert) und erwartet JSON mit Name, Unternehmen, URL und Notizen; 404 bedeutet unbekannt. Antworten werden fünf Minuten lang gespeichert. Öffnen im CRM-Link fügt einen Link zum Anrufer auf der Karte hinzu. Verwenden Sie Nachschlagen, um eine Nummer zu testen, bevor Sie sie speichern.

Eine CRM-eigene Antwort

Die meisten CRMs beantworten eine Suche in ihrer eigenen Form, normalerweise eine Liste von Übereinstimmungen, nicht BitVoices {"name": ...}. Öffnen Sie Antwortfelder und sagen Sie, wo jedes Teil ist, als gepunkteter Pfad: ein Name tritt in ein Objekt ein und eine Zahl in eine Liste, also ist list.0.name der Name des ersten Treffers. Verknüpfung mit dem Kontakt kann ein Pfad zu einem Link sein, den die CRM bereitstellt, oder eine Web-Adresse mit Pfaden in Klammern, wie z.B. https://crm.example.com/#Contact/view/{list.0.id}. Ein leeres Feld liest BitVoices eigenen Namen dafür. Eine Suche, die niemanden findet, ist dasselbe wie 404: die Karte sagt, dass der Anrufer nicht bekannt ist. Versuchen Sie, eine Nummer mit Nachschlagen zu überprüfen, bevor Sie speichern.

Zum Beispiel EspoCRM (getestet gegen ein reales EspoCRM): erstellen Sie einen API-Benutzer (Verwaltung, API-Benutzer, Authentifizierung durch API-Schlüssel) mit einer Rolle, die Kontakte und Konten lesen darf, und setzen Sie dann:

EspoCRM speichert Nummern in internationaler Form (+15405550117), wie BitVoice sie übermittelt. Andere CRMs funktionieren auf die gleiche Weise mit ihrer eigenen Suchadresse und Feldnamen; überprüfen Sie die Form ihrer Antwort in ihrer API-Dokumentation oder mit Nachschlagen, deren Nachricht benennt, was sie gefunden hat.

Anruf-Protokollierung

Setzen Sie Anruf-Protokoll-Adresse und Signierungsgeheimnis, und jeder Anruf wird dorthin gesendet, wenn er beendet ist (Ereignis call.ended), erneut mit seiner Zusammenfassung, Aktionselementen und Transkript, sobald es transkribiert wurde (call.summarized), und jeder gebuchte Rückruf (callback.new). Jeder POST enthält X-BitVoice-Ereignis, X-BitVoice-Timestamp und X-BitVoice-Signatur: sha256= gefolgt von der HMAC-SHA256, mit dem Geheimnis, des Zeitstempels, eines Punktes und des Textkörpers. Eine fehlgeschlagene Lieferung wird viermal über etwa eine Minute hinweg versucht; wenn sie immer noch fehlschlägt, teilt Health dies mit. Ein Testereignis senden überprüft die Adresse und das Geheimnis.

Kapitel 50

Anruf-Einblick für Vorgesetzte

Im Webinterface: /quality

Für Kontaktcenter: Beweise darüber, wie Anrufe verlaufen sind, für einen Vorgesetzten, der zuhören kann, nie eine automatische Bewertung.

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

Im Transkript eines Anrufs zeigt Wie es lief an, gemessen allein anhand des Klanges der Aufzeichnung: wie viel jede Seite gesprochen hat, die längste Redezeit jeder Seite, wie oft jede Seite über die andere gesprochen hat, wie lange beide gleichzeitig gesprochen haben und die Stille (eine lange Stille ist oft ein Halten oder tote Luft).

Mit Notieren, wie jedes transkribierte Gespräch lief aktiviert (Einstellungen, KI), liest die KI auch das Transkript und sagt, wie der Anrufer am Anfang und am Ende erschien und listet bis zu sechs Momente auf: Lief gut, Ansehen (über den Anrufer sprechen, ein langes Halten, eine unklare Antwort) und Versprochen (etwas, das jemand sagte, er würde tun), jedes mit der Zeit und den gesprochenen Worten, damit Sie direkt dazu gehen können. Ein Administrator kann es für jeden transkribierten Anruf mit Ansehen dieses Anrufs anfordern.

Bei Anrufqualität (Kapitel 50) summiert Gespräche, nachdem sie angenommen wurden die transkribierten Anrufe des Zeitraums pro Person: ihren Anteil am Sprechen, ihre längste Rede, wie oft sie über den Anrufer hinweggesprochen haben, stille Zeit, Anrufe, die damit endeten, dass der Anrufer verärgert war, und die markierten Momente. Verwenden Sie es, um Anrufe zum Anhören auszuwählen, nicht um Menschen zu bewerten.

Coaching-Notizen sind Ihre eigenen Worte zu einem Anruf, im Moment, an dem sie relevant sind: unter Wie es lief, schreiben Sie das Moment (1:05, oder lassen Sie es leer für den Anfang) und die Coaching-Notiz, und drücken Sie Notiz hinzufügen. Notizen werden in der Reihenfolge des Anrufs mit dem, der sie geschrieben hat, und wann, aufgelistet; Administratoren schreiben und entfernen sie, Zuschauer lesen sie mit dem Transkript, und das Hinzufügen oder Entfernen einer Notiz wird im Überwachungsprotokoll vermerkt. Sie gehen mit der Aufzeichnung, also decken sie auch die Aufbewahrung und rechtlichen Haltefristen ab. Coaching-Notizen auf Anrufqualität zählen sie pro Person.

Kapitel 51

Anrufaufzeichnung und Kartenzahlungen

Die Aufzeichnung ist in Einstellungen (Kapitel 14), Anrufaufzeichnung aktiviert: aus, jeder Anruf oder nur die Anrufe von Erweiterungen, die mit Anrufe aufzeichnen markiert sind. Aufzeichnungen können von Anrufliste (Kapitel 47) abgespielt werden, und mit aktivierter KI werden sie aufgeschrieben und zusammengefasst.

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

Informieren der Teilnehmer

An einigen Orten muss allen Teilnehmern einer Konferenz mitgeteilt werden, dass die Konferenz aufgezeichnet wird: Ansage, Piepton und regionale Vorschriften finden Sie unter Aufzeichnungsrecht (Kapitel 52).

Kartenzahlungen (PCI DSS)

Kartennummern dürfen nicht in Aufzeichnungen gespeichert werden. Bevor ein Anrufer eine Nummer vorliest, drückt die Person auf der Nebenstelle *7; *8 setzt die Aufzeichnung fort. Aufzeichnung pausieren unter Aktive Anrufe (Kapitel 46) funktioniert genauso. Der pausierte Teil ist in der Aufzeichnung stumm und in der Anrufliste aufgeführt, sodass ein Auditor sehen kann, wo und wie lange die Aufzeichnung pausiert wurde.

Konferenzräume

Ein Raum mit aktivierter Raumaufzeichnung wird als eine einzige Aufzeichnung des gesamten Raums gespeichert (Konferenzräume (Kapitel 34)).

Aufbewahrungsfrist

In den Einstellungen wird festgelegt, wie viele Tage Aufzeichnungen, Anruflisten und Voicemails gespeichert werden; ältere werden innerhalb einer Stunde gelöscht. Alles unter einer rechtlichen Sperrung (Kapitel 73) wird unabhängig von seinem Alter gespeichert. Das Archiv (Kapitel 72) kann Kopien an anderer Stelle speichern.

Administratoren und Betrachter können Aufzeichnungen abspielen und Transkripte lesen; nur Administratoren können einen Anruf transkribieren oder erneut transkribieren. Das Abspielen einer Aufzeichnung oder das Lesen ihres Transkripts wird im Überwachungsprotokoll vermerkt.

Kapitel 53

Anrufqualität

Im Webinterface: /quality

Wie die Anrufe im Laufe des letzten Tages, der Woche, des Monats oder 90 Tage geklungen haben, basierend auf dem Klang, den BitVoice selbst auf jeder Seite jedes Anrufs empfangen hat. Telefone werden nach ihrem Standort (Kapitel 12) (oder "kein Standort") gruppiert, und Anrufe von außerhalb nach der Leitung des Anbieters, auf der sie hereingekommen sind.

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

Jeder Standort zeigt seine Anrufe, seine durchschnittliche Bewertung (MOS, von 1 bis 5: über 4 ist gut, unter 3,6 klingt schlecht), den Anteil der Sound-Pakete, die nie angekommen sind, und Jitter (unevene Verzögerung). Darunter sagt BitVoice in einfachen Worten, was falsch ist, zum Beispiel „Paketverlust im Netzwerk des Hauptbüros: 3,2% des Sounds sind nie angekommen, meistens zwischen 14:00 und 16:00“, mit Hinweisen darauf, was zu überprüfen ist. Das Balkendiagramm zeigt den verlorenen Sound pro Stunde des Tages.

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

Ein Anruf, der verbunden wurde, aber überhaupt keinen Sound von einer Seite erhalten hat, wird separat unter ohne Sound gezählt und zuerst angezeigt: es handelt sich nicht um schlechten Sound, sondern um Sound, der nie angekommen ist, fast immer ein Firewall- oder NAT-Router, der SIP durchlässt und die Medien blockiert. Die Empfehlung des Standorts sagt, was zu überprüfen ist (für einen Anbieter, seine Medien-Adressbereiche).

Kapitel 54

Kosten und Budgets

Im Webinterface: /costs

BitVoice berechnet den Preis jedes Anrufs basierend auf dem, was Ihr Anbieter berechnet, und zeigt den monatlichen Aufwand nach Abteilung, Person und Trunk, mit den teuersten Anrufen.

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

Preise

Auf Trunks (Kapitel 7) öffnen Sie einen Trunk und dessen Anrufpreise. Jeder Preis deckt Nummern ab, die mit einigen Ziffern beginnen, wie die Nummer an den Anbieter gesendet wird (nur Ziffern, also 44 für Großbritannien, 1900 für US-Vorrang); der längste Treffer gewinnt, und ein Preis ohne Ziffern deckt jede andere Nummer ab. Geben Sie den Preis pro Minute, eventuelle Gebühren pro angenommenem Anruf, den Abrechnungsschritt (60 Sekunden für ganze Minuten, 6 oder 1 für feinere) und eventuelle Mindestbeträge an. Anrufe herein, pro Minute ist für kostenlose Nummern, die Sie für den Empfang bezahlen. Was würde es kosten überprüft eine Nummer, bevor jemand sie wählt. Die Währung wird auf Kosten festgelegt.

Die Kosten eines Anrufs sind festgelegt, wenn er endet, mit den Preisen der Zeit; die Änderung eines Preises ändert nicht die vorherigen Anrufe. Kosten sagt, wie viele angenommene Anrufe ausgegangen sind, ohne dass ein Preis vorhanden war.

Abteilungen und Budgets

Geben Sie den Erweiterungen eine Abteilung (in der Erweiterung). Auf Kosten fügen Sie ein Budget für jeden Anruf oder für eine Abteilung hinzu: eine Warnung erscheint in BitVoice und wird an die Budget-Adresse und die Warnungsadresse per E-Mail gesendet, bei 80 % und erneut bei 100 % des Monats.

Der Alarm

Anrufe ausgehen kosten mehr als dies in einer Stunde löst einen Alarm aus, wenn ausgehende Anrufe diesen Betrag innerhalb einer Stunde überschreiten. Ein plötzlicher Anstieg teurer Anrufe ist das übliche Zeichen für Abrechnungsbetrug (ein gestohlenes Telefonkennwort): überprüfen Sie den Anrufverlauf, dann deaktivieren Sie die Erweiterung oder den Trunk.

Kapitel 55

Anrufer-ID-Reputation und markierte Anrufe

Im Webinterface: /reputation

Telefonunternehmen betreiben Spam-Filter, die eine Geschäftsnummer als "Spam wahrscheinlich" kennzeichnen oder blockieren können, und dann antwortet fast niemand. Anrufer-ID-Reputation überwacht jede Nummer, von der aus Sie anrufen, aus Ihren eigenen Anrufen, und sagt in einfachen Worten, wie es läuft:

Nummern mit weniger als 20 Anrufen werden als zu wenige zum Beurteilen angezeigt.

Ihre ausgehenden Rufnummern geben jeder Nummer einen Namen (wird als Anrufername gesendet), einen Anrufgrund und ein Logo (ein https://-Bild). Auf einer Trunk-Verbindung mit Senden von markiertem Anrufer-ID aktiviert, werden das Logo und der Anrufgrund als reiche Anrufdaten (RFC 9796 Call-Info) gesendet; Anbieter, die markiertes Anrufen unterstützen, zeigen sie auf dem angerufenen Telefon an. Die meisten Telefone zeigen den Namen aus der Caller-Name-(CNAM)-Datenbank an, die Ihr Anbieter festlegt: fragen Sie ihn. Beobachten setzt eine Warnung auf der Gesundheitsseite, wenn eine beobachtete Nummer anfängt, markiert zu werden.

Die Seite sagt auch, was zu tun ist, wenn eine Nummer markiert wird.

Kapitel 56

Spamschutz und STIR/SHAKEN

Im Webinterface: /settings

In den USA und Kanada signiert der Anbieter, mit dem ein Anruf beginnt, seine Anruferkennung (STIR/SHAKEN): A, wenn er weiß, dass der Anrufer die Nummer nutzen darf, B, wenn er den Anrufer kennt, aber nicht die Nummer, C, wenn er den Anruf nur weitergeleitet hat. Ihr Anbieter teilt BitVoice entweder sein Urteil (Verstat) mit oder übermittelt den signierten Identity-Header, den BitVoice dann selbst überprüft: die Signatur, dass sie nicht älter als eine Minute ist und dass sie die Nummern dieses Anrufs nennt. Das Urteil wird als Verifiziert, Teilweise verifiziert, Nicht verifiziert oder Nicht überprüft auf Aktuelle Anrufe und im Anrufverlauf angezeigt.

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

In den Einstellungen unter Spamschutz können Sie wählen, was passiert, wenn eine Anruferkennung die Verifizierung nicht besteht (klingeln, gekennzeichnetes Klingeln oder Ablehnen), wenn sie nicht verifiziert ist und wenn die Nummer unterdrückt wird. Ein gekennzeichneter Anruf klingelt mit Spam? (oder Ihrem eigenen Label) vor dem Namen des Anrufers. Blockierte Nummern werden abgelehnt; ein Eintrag, der mit * endet, blockiert einen Bereich (+1900* ist jede US-Premiumrate-Nummer). Immer erlaubte Nummern werden nie abgelehnt oder gekennzeichnet. Im Anrufverlauf fügt der Blockierungsbutton neben einem Anrufer ihn zur Liste hinzu; abgelehnte Anrufe werden als Blockiert aufgeführt.

Innerhalb einer Stunde nach einem Notruf von jedem Anschluss wird kein Anruf abgelehnt (blockierte Anrufe klingeln stattdessen mit Kennzeichnung), falls es sich um den Rückruf des Notrufdienstes handelt. Ein 911-Anruf (vom ESInet oder einem CAMA-Trunk) wird niemals abgelehnt oder verzögert.

Anrufer, die BitVoice nicht kennt

Ein Anrufer gilt als bekannt, wenn die Nummer immer erlaubt ist, in den Kontakten (Kapitel 38) steht, von hier aus in den letzten 12 Monaten angerufen wurde oder den Roboter-Test in den letzten 90 Tagen bestanden hat. Nummern werden unabhängig von ihrer Schreibweise (mit oder ohne Ländercode, 1, 0 oder +) abgeglichen. Unter Anrufer, die BitVoice nicht kennt, wählen Sie, was mit allen anderen passiert:

AuswahlWas der Anrufer erhält
Wie üblich klingelnder Anruf klingelt wie jeder andere (Standard)
Roboter-Test zuerstBitVoice nimmt den Anruf an und sagt „Um verbunden zu werden, drücken Sie bitte“ und eine Ziffer, die sich bei jedem Anruf ändert. Die richtige Taste leitet den Anruf an den ursprünglich bestimmten Ort weiter; jede andere Taste oder keine Taste (zweimal) leitet den Anruf an den Ort weiter, der unter Anrufer, die den Test nicht bestehen, gehen zu gewählt wurde, oder der Anrufer hört eine Absage. Robocaller drücken die Taste nicht
An einen anderen Ort weiterleitennichts klingelt: der Anruf wird direkt an den gewählten Ort weitergeleitet, z. B. an eine Voicemail-Box

Der Roboter-Test benötigt seine Wörter: In Klangdateien (Kapitel 20) aufnehmen oder erstellen (mit einem Sprachdienst) die Screening-Prompts und die Zahlen 1 bis 9 in der Sprache der Anrufer. Bis diese aufgenommen sind, klingeln solche Anrufe wie üblich (ein Anrufer kann einen Test, den er nicht hören kann, nicht bestehen), und der Health-Bereich zeigt dies an. Ein Anrufer, der den Test besteht, gilt für 90 Tage als bekannt. Der Test nimmt den Anruf an, sodass der Anbieter des Anrufers ab diesem Moment Gebühren berechnet, wie bei jedem angenommenen Anruf. Die Anrufliste zeigt das Ergebnis jedes Anrufs (bestanden, nicht bestanden, weitergeleitet) und der Warum-Pfad zeigt, was passiert ist.

Eine Spam-Datenbank

BitVoice kann vor dem Klingeln eines Anrufs einen Rufzeichen-Dienst über jeden unbekannten Anrufer befragen. Nomorobo über Twilio verwenden füllt Twilio Lookup mit dem Nomorobo-Spam-Score aus (installieren Sie das Nomorobo-Add-on in Ihrem Twilio-Konto und geben Sie dann dessen Konto-SID und Authentifizierungstoken ein); jeder andere Dienst, der in JSON antwortet, funktioniert auch: Geben Sie seine Adresse mit {e164} (+12125550142) oder {number} (wie der Anbieter sie gesendet hat) an, wo sein Urteil ist (Urteilsfeld, ein punktierter Pfad), und wenn es Spam bedeutet (ein Score von oder über Spam bei Score, true oder der Text in Oder Spam, wenn der Text, wie z. B. BLOCK). Wählen Sie, was mit einem Anrufer passiert, den es als Spam einstuft: klingeln mit Kennzeichnung, Roboter-Test oder ablehnen.

Den letzten Anrufer blockieren

Direkt nach einem unerwünschten Anruf wählen Sie *32* (Funktionstasten (Kapitel 32)) auf dem Telefon, das geklingelt hat: Die letzte externe Nummer, die in den letzten 24 Stunden bei diesem Anschluss geklingelt hat, wird auf die Blockierungsliste gesetzt, und das Telefon gibt die Nummer zurück. Eine immer erlaubte Nummer wird nicht blockiert, und das Telefon sagt dies an. Jede Blockierung ist im Audit-Log mit Angabe, wer sie blockiert hat.

Vorgeschlagen aus Ihren Anrufen

BitVoice liest die letzten 30 Tage der Anrufe von außerhalb, um Nummern zu finden, die immer wieder anrufen und sofort beendet werden: drei Anrufe oder mehr, fast alle innerhalb von 10 Sekunden beendet, oder zwei Roboter-Tests nicht bestanden, und nie ein echtes Gespräch (jemand spricht 30 Sekunden oder länger). Bekannte Nummern werden ausgelassen. Jede kommt mit einer Begründung; Blockieren setzt sie auf die Blockierungsliste, und Kein Spam bedeutet, dass sie nie wieder vorgeschlagen wird. Nichts wird blockiert, bis eine Person dies bestätigt.

Um Zertifikate gegen die STI-Behörden zu überprüfen, fügen Sie ihre Zertifikate unter STI-Zertifizierungsbehörden hinzu; ohne sie überprüft BitVoice, dass der Anruf mit dem Zertifikat signiert wurde, das er nennt, aber nicht, wer dieses Zertifikat ausgestellt hat.

Signieren Ihrer eigenen Anrufe

Die meisten Anbieter signieren die Anrufe ihrer Kunden selbst. Wenn Ihr Anbieter das Signieren erlaubt (oder Sie ein Anbieter sind, der BitVoice ausführt), schalten Sie Anruferkennung signieren auf dem Trunk (Trunks (Kapitel 7)) ein und geben Sie Ihr STI-Zertifikat (von einer STI-Zertifizierungsbehörde mit Ihrem Dienstleister-Code-Token) und den privaten Schlüssel (P-256) ein. Jeder Anruf, der über den Trunk ausgeht, enthält dann einen signierten Identity-Header (ES256, wie SHAKEN erfordert).

Teil 5

BitVoice ausführen

Sicherheit und Betrieb: Administratoren und Anmeldung, Sicherheit, Änderungen und Updates, mehrere Server, gehostete Organisationen, Codecs, Teams, Import und Automatisierung sowie Werkzeuge für die Fehlersuche.

Kapitel 57

Administratoren

Im Webinterface: /users

Administratoren sind die Personen, die sich in dieser Web-Oberfläche anmelden. Mitarbeiter, die nur ihre eigenen Anrufe betreuen, verwenden das Mitarbeiter-Portal und benötigen kein Konto hier (Das Mitarbeiter-Portal (Kapitel 33)).

Rollen

RolleKann
Administratoralles ändern, Aufzeichnungen abspielen, jede geheime Feld-Existenz sehen (nie den Wert)
Vieweralles sehen, nichts ändern; Geheimnisse sind versteckt

Eine Änderung der Rolle oder des Passworts meldet die Person überall gleichzeitig ab.

Zwei-Schritt-Anmeldung

Jede Person aktiviert die Zwei-Schritt-Anmeldung für sich selbst: Einrichten zeigt einen Schlüssel für eine Authentifizierungs-App an; die Eingabe des Codes, den sie anzeigt, aktiviert sie. Ab dann fordert die Anmeldung einen Code zusätzlich zum Passwort. Die Deaktivierung benötigt das Passwort.

Single-Sign-On

Mit Single-Sign-On (Einstellungen) melden sich Personen mit dem Konto der Organisation an (Microsoft Entra, Google, Okta, jeder OpenID-Connect-Anbieter) und ein Konto wird für sie das erste Mal erstellt. Siehe Single-Sign-On (Kapitel 58).

API-Tokens

Programme (Terraform, Skripte) verwenden API-Tokens anstelle eines Passworts: Erstellt auf dieser Seite, einmalig angezeigt und jederzeit widerrufen. Jedes Token ist ein Administrator oder ein Viewer. Ein Token, das mit Benennt die Person, für die es handelt (für ein CAD) erstellt wurde, kann X-BitVoice-On-Behalf-Of mit dem Namen der Person senden und die Aufzeichnungen benennen dann diese Person neben dem Token (Notrufe (Kapitel 77)).

Kapitel 58

Single-Sign-On

Single-Sign-On ermöglicht es Personen, sich mit ihrem Arbeitskonto bei BitVoice anzumelden, durch jeden OpenID Connect-Anbieter: Microsoft Entra ID, Google, Okta, Keycloak und andere. Wenn eine Person die Organisation verlässt, wird auch der Zugriff hier entfernt.

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

Einrichten

In Einstellungen (Kapitel 14), Single-Sign-On:

  1. Registrieren Sie eine Anwendung beim Anbieter mit der hier angezeigten Umleitungsadresse.
  2. Anbieter ausfüllen setzt den Issuer für die gängigsten Anbieter; kopieren Sie die Client-ID und das Client-Geheimnis vom Anbieter.
  3. Benennen Sie die Administratorgruppen und Betrachtergruppen des Anbieters. Gruppenanspruch ist der Ort, an dem der Anbieter sie platziert (groups, sofern nicht anders angegeben).
  4. Ändern Sie optional den Button-Text auf der Anmeldeseite.
  5. Aktivieren Sie Single-Sign-On verwenden.

Funktionsweise

Kapitel 59

Unternehmensverzeichnis (Active Directory und LDAP)

BitVoice kann Ihr Unternehmensverzeichnis lesen, Active Directory oder einen anderen LDAP-Server (OpenLDAP, Samba, 389 Directory Server, FreeIPA): Personen mit einer Telefonnummer werden zu Erweiterungen, Verzeichnisgruppen füllen Rufgruppen und Personen melden sich mit ihrem Verzeichnispasswort bei der Web-Oberfläche an. BitVoice liest nur das Verzeichnis; es schreibt nie darin.

Verbindung herstellen

In Einstellungen (Kapitel 14), Unternehmensverzeichnis:

  1. Wählen Sie Active Directory oder OpenLDAP oder einen anderen LDAP-Server: Es legt fest, welche Attribute gelesen werden (sAMAccountName oder uid für den Anmeldenamen, displayName oder cn, mail, telephoneNumber). Ändern Sie diese in ihrem Feld.
  2. Server: ldaps://dc1.example.com (Port 636) oder ldap://... mit StartTLS aktiviert. Plain LDAP wird abgelehnt, sofern der Server nicht dieser Computer ist, da Passwörter dann unverschlüsselt über das Netzwerk übertragen würden. Wenn das Zertifikat des Servers von Ihrer eigenen Zertifizierungsstelle stammt, fügen Sie die Zertifizierungsstelle in Unternehmenszertifizierungsstelle ein.
  3. Lesekonto und Passwort: Ein Konto, das zum Lesen von Personen und Gruppen berechtigt ist (reader@example.com bei Active Directory). Das Passwort kann ein Verweis auf einen Schlüsseltresor sein (Einstellungen, Schlüsseltresore).
  4. Basis-DN: Wo sich Personen und Gruppen befinden (dc=example,dc=com). Welche Personen begrenzt sie mit einem LDAP-Filter; bei Active Directory werden deaktivierte Konten immer ausgeschlossen.
  5. Test meldet sich mit dem Lesekonto an und liest jeden, ohne etwas zu ändern: Es zeigt an, wie viele Personen es gefunden hat, wie viele eine Nummer haben und welche Erweiterung jede erhalten würde.

Erweiterungen und Rufgruppen

Anmelden

Wenn Personen melden sich hier mit ihrem Verzeichnisnamen und Passwort an aktiviert ist, akzeptiert die Anmeldeseite Verzeichnisnamen und Passwörter sowie die eigenen Konten von BitVoice:

Kapitel 60

Sicherheit

Im Webinterface: /security

Ein TelefonSystem im Internet wird innerhalb weniger Stunden angegriffen: Scanner versuchen Passwörter auf jedem SIP-Port und ein gehacktes System verursacht Anrufe zu Premium-Nummern. BitVoice ist standardmäßig so konzipiert, dass es diesen Angriffen standhält, in mehreren Schichten.

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

Gegen Passworterraten

Gegen Betrug

Der Schutz vor Abrechnungsbetrug

Schalten Sie es in den Einstellungen ein, Schutz vor Abrechnungsbetrug. Jeder Anruf ins Ausland (durch +, 00 oder 011 und die Orte, die +1 mit Nordamerika teilen, aber andere Länder sind, wie z.B. Jamaika, ein klassisches Ziel für Abrechnungsbetrug) wird dann beurteilt, bevor er durchgestellt wird:

SituationWas es tut
Ein Anruf ins Ausland in ein Land, das diese Erweiterung in den letzten 90 Tagen angerufen hatlässt es durch
Ein erster Anruf in dieses Land in 90 Tagenlässt es durch und meldet es
Ein erster Anruf dorthin außerhalb der Geschäftszeiten, oder von außerhalb (ein Dial-in, eine Weiterleitung)fordert den PIN (ohne einen gewählten PIN lehnt es ab)
Mehr als Anrufe ins Ausland in 10 Minuten von einer Erweiterunglehnt es ab
Ein erster Anruf ins Ausland, während jemand Passwörter errät (drei Fehlversuche in Folge von einer Adresse oder eine Sperre in der letzten Stunde)lehnt es ab
Eine Notrufnummerlässt es immer durch

Länder, die immer erlaubt sind (Wählcodes, wie z.B. 44) und Ausnahmen (eine Erweiterung, die für eine Reise entschuldigt wird, bis zu einem Tag) nehmen "erster Anruf" und "außerhalb der Geschäftszeiten" weg; sie entschuldigen niemals viele Anrufe in kurzer Zeit oder einen Angriff, da ein gestohlenes Passwort als genehmigt erscheint. Wenn die Anrufliste nicht gelesen werden kann, weiß der Schutz nicht, ob ein Anruf der erste ist, und etwas, das nicht gemessen wird, wird niemals als sicher angesehen: es fordert den PIN. Jede Beurteilung wird auf Sicherheit (Kapitel 60) mit ihren Gründen aufgeführt und ist im Anrufverlauf in Anrufhistorie (Kapitel 47) zu finden.

Wie BitVoice entscheidet

BitVoices Richter (der Schutz vor Abrechnungsbetrug, der Trunk-Gesundheitsrichter, die Anrufqualitätsdiagnose und der 911-Anruferstandortprüfer) folgen jeweils einem Regelbuch: Fakten, die gemessen werden, Schlussfolgerungen, die sie unterstützen, die Ausnahmen, die eine Schlussfolgerung aufheben, und die Auswahlmöglichkeiten. Wie BitVoice entscheidet, auf Sicherheit (Kapitel 60), zeigt jedes Regelbuch. Die Regeln, die die Richter einhalten:

Verschlüsselung

Wer was tun kann

Kapitel 61

Änderungen, Backups und Import

Im Webinterface: /changes

Jede gespeicherte Änderung ist eine Revision: nummeriert, mit Angabe, wer sie vorgenommen hat, wann und einer kurzen Zusammenfassung. Nichts in der Konfiguration geht jemals verloren.

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

Vergleichen und Wiederherstellen

Export und Import

Änderungen, die gleichzeitig vorgenommen werden

Zwei Administratoren können nicht gleichzeitig dieselbe Sache bearbeiten, ohne sich gegenseitig zu überschreiben: das zweite Speichern wird mit einer Meldung abgelehnt, die zum Neuladen auffordert, und nichts geht verloren.

Kapitel 62

Aktualisierungen

Im Webinterface: /updates

Das Aktualisieren von BitVoice ist ein Klick und sicher: Es überprüft die neue Version, installiert sie neben der alten und kehrt auf seine eigene Initiative zurück, wenn die neue Version nicht aktiv bleibt.

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

Installation einer Aktualisierung

  1. Laden Sie die neue Version herunter und entpacken Sie sie. Neben dem Programm befindet sich seine Signatur von BioDream: bitvoice.sig oder bitvoice.exe.sig unter Windows.
  2. Auf Aktualisierungen (Kapitel 62) laden Sie das Programm und seine .sig-Datei hoch.
  3. Drücken Sie Installieren. Standardmäßig wartet BitVoice, bis keine Anrufe im Gange sind; Sie können es auch sofort installieren.
  4. BitVoice startet mit der neuen Version. Bei mehreren Servern werden Anrufe, die im Gange sind, an einen anderen Server übergeben und fortgesetzt.

Zurückgehen

Die Version, die Sie verlassen haben, wird beibehalten: Zurückgehen kehrt in einem Klick zurück. Eine neue Version, die zweimal nicht startet oder nicht für eine Minute aktiv bleibt, wird durch die vorherige Version ersetzt.

Signaturen

Jede Version ab v0.1.3 enthält den Release-Schlüssel von BioDream. Ein solcher Build installiert nur Programme, die mit diesem Schlüssel signiert sind: Ein nicht signiertes Programm, eines, das von jemand anderem signiert wurde, oder eines, das durch einen einzelnen Byte geändert wurde, wird mit die Signatur stimmt nicht überein abgelehnt. Die Seite sagt, ob dieser Build überprüft (Erforderlich) oder nicht.

Sie führenUpdates akzeptiert
eine Veröffentlichung, v0.1.3 oder späternur Programme, die von BioDream signiert sind
v0.1.2 oder früher, oder einen eigenen Buildjedes Programm: ohne Schlüssel kann eine .sig-Datei nicht überprüft werden und wird ignoriert
Kapitel 63

Mehrere Server als ein Telefonnetz

Im Webinterface: /servers

Zwei oder mehr BitVoice-Server, die eine PostgreSQL-Datenbank gemeinsam nutzen, arbeiten als ein Telefonnetz:

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

Einrichten

  1. Verschieben Sie die Daten des ersten Servers in die PostgreSQL-Datenbank: Einstellungen, Datenbank.
  2. Starten Sie jeden anderen Server mit der gleichen Datenbank: bitvoice -database postgres://… (oder die Umgebungsvariable BITVOICE_DATABASE). Er schließt sich sofort an; Server listet ihn auf.
  3. Überprüfen Sie auf Server, wo jeder Server erreicht wird (seine Adresse und SIP-Port auf dem Netzwerk, das die Server gemeinsam nutzen), und geben Sie jedem einen Namen. Server, die jeweils aus dem Internet an einer eigenen Adresse erreicht werden (Cloud-Server mit öffentlichen IPs, keine gemeinsame Adresse), erhalten auch eine eigene öffentliche Adresse: Anbieter und Telefone außerhalb werden darüber informiert, sodass wenn ein Server einen Anruf übernimmt, der Anbieter den Ton folgt. Wenn leer gelassen, verwendet ein Server die öffentliche Adresse in den Einstellungen.
  4. Informieren Sie die Telefone, wie sie die Server finden (unten).
  5. Anbieterleitungen (unten).

Wie Telefone die Server finden. Telefone, die BitVoice einrichtet (Yealink, Polycom, Grandstream), erhalten automatisch einen anderen laufenden Server als Backup. Für die anderen, Snom und von Hand eingerichtete Telefone, verwenden Sie eines der folgenden auf Server:

Anbieterleitungen. In jeder Trunk-Konfiguration gibt Zwischen Servern gemeinsam genutzt an, wie:

Wenn ein Server stoppt

Zwischen Servern. Die Server erreichen sich gegenseitig an ihrem SIP-Port über TCP oder TLS, wenn sie ein Zertifikat haben (jeder akzeptiert nur das Zertifikat, das der andere veröffentlicht hat, und der Ton zwischen ihnen ist dann mit SRTP verschlüsselt), und senden Ton an die Medien-Ports des jeweils anderen (UDP, der Bereich in Einstellungen). Anrufe zwischen Servern sind mit einem geheimen Schlüssel signiert, den sie in der Datenbank teilen, und werden nur von einem laufenden Mitglied an seiner eigenen Adresse akzeptiert. Eine Firewall zwischen ihnen muss diese Ports durchlassen.

Probieren Sie es zunächst aus: das Labor. BitVoice kommt mit einem Labor, das zwei Server, ihre Datenbank und Test-Telefone auf einem Computer mit Docker ausführt, jeweils mit einer eigenen Adresse: deploy/lab/run.sh up baut und startet es und setzt die gemeinsame Adresse; run.sh call ruft zwischen Telefone auf verschiedenen Servern an; run.sh failover tötet den Server, der einen Anruf über die gemeinsame Adresse durchführt, und überprüft, ob der Anruf fortgesetzt wird (der Ton kommt in etwa fünf Sekunden zurück); run.sh impaired ruft von einem Telefon mit einer schlechten Verbindung (Verzögerung, Jitter und 5% Verlust) an und überprüft die Anrufqualität, die BitVoice meldet; run.sh down entfernt es. Die Serverseiten sind unter https://127.0.0.1:18501 und :18502 (Benutzer admin) zu finden.

Kapitel 64

Wo die Daten gespeichert werden (SQLite oder PostgreSQL)

Im Webinterface: /settings

BitVoice speichert seine Einstellungen und ihre gespeicherten Versionen, Benutzer, Kontakte, Anrufprotokolle, das Audit-Log, Texte, Notizen und Transkripte in einer Datenbank. Aufnahmen und Voicemail bleiben als Tondateien im Datenordner.

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

Diese Serverdatei (SQLite, Standard): eine einzelne Datei, bitvoice.db im Datenordner, ohne Installation. Sichern Sie den Datenordner, und Sie haben alles.

PostgreSQL: für mehrere BitVoice-Server, die eine gemeinsame Datenmenge teilen, oder für Berichte in Tools wie Power BI, Grafana oder Metabase. In Einstellungen, Datenbank, Daten in PostgreSQL verschieben: erstellen Sie eine leere Datenbank und einen Benutzer, der sie besitzt, geben Sie ihre Adresse ein (postgres://Benutzer:Passwort@Host:5432/Datenbank), drücken Sie Testen, dann Daten kopieren und neu starten auf PostgreSQL. Alles wird in einem Schritt kopiert (alles oder nichts), und BitVoice startet neu auf ihm; die alte Datei bleibt, wo sie war. Das Verschieben zurück in die Serverdatei funktioniert genauso. Verschiebungen werden abgelehnt, während Anrufe im Gange sind.

Server, die eine gemeinsame PostgreSQL-Datenbank teilen, sehen Änderungen an den Einstellungen innerhalb von fünf Sekunden. Jeder beantwortet immer noch seine eigenen Telefone und Anrufe; damit ein zweiter Server die Telefone eines ersten Servers übernehmen kann, benötigen die Telefone beide Adressen (oder eine Adresse, die sich ändert).

Die Datenbank kann auch beim Start von BitVoice benannt werden, mit -database postgres://… oder der Umgebungsvariable BITVOICE_DATABASE; sie wird dann dort geändert, nicht in Einstellungen.

Ältere Installationen: beim ersten Start dieser Version kopiert BitVoice seine alten JSON-Dateien in die Datenbank und verschiebt sie in pre-database im Datenordner.

Kapitel 65

Andere Organisationen hosten

Im Webinterface: /tenants

Ein BitVoice kann mehrere Organisationen hosten. Jede Organisation ist ein eigenes Telefonnetz: ihre eigenen Extensions, Nummern, Trunks, Routen, Administratoren, Voicemail, Aufnahmen und Anrufhistorie. Keine Organisation kann die Daten einer anderen sehen. Sie teilen nur den SIP-Port, IAX2-Port und die Medienports dieses Servers.

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

Wann es verwenden

Das Hauptsystem ist auch eine Organisation: die, für die dieser Server eingerichtet wurde. Ihre Administratoren verwalten die anderen Organisationen.

Eine Organisation hinzufügen

  1. Öffnen Sie Organisationen (Kapitel 65) und drücken Sie Organisation hinzufügen.
  2. Geben Sie ihren Namen und einen Kurznamen (kleine Buchstaben, Ziffern und Bindestriche) ein. Der Kurzname ist Teil ihrer Webadresse, /t/acme/, und ihres Telefonanmeldecodes, acme.100. Er kann später nicht geändert werden.
  3. Geben Sie optional ihre eigene Domäne ein, wie z.B. pbx.acme.example, die auf diesen Server verweist. Telefone melden sich bei dieser Domäne an, und ihre Administratoren öffnen sie in einem Browser.
  4. Legen Sie ihren ersten Administrator fest: einen Benutzernamen und ein Passwort mit mindestens 12 Zeichen, sowie ihr Land.
  5. Legen Sie optional Einschränkungen fest.

Die Organisation beginnt sofort mit einem leeren Telefonnetz, das bereit ist, von ihrem Administrator wie in Erste Schritte (Kapitel 1) beschrieben eingerichtet zu werden.

Wie Anrufe die richtige Organisation finden

Eine Anfragegeht zu
von einem Telefon, das sich bei pbx.acme.example anmeldetder Organisation mit dieser Domäne
von einem Telefon, das sich als acme.100 anmeldetAcme, Extension 100
von einem Anbieter, für eine Nummerder Organisation, deren Trunk es ist und deren Eingangsroute diese Nummer hat
alles anderedem Hauptsystem

So können zwei Organisationen beide die Extension 100 haben, und mehrere können ein gemeinsames Anbieterkonto mit verschiedenen Nummern teilen.

Wo ihre Daten sind

Bei SQLite hat jede Organisation ihren eigenen Ordner unter tenants/ im Datenordner, mit ihrer eigenen Datenbankdatei. Bei PostgreSQL hat jede Organisation ihr eigenes Schema in der gleichen Datenbank (tenant_acme). Backups, Archive und Exporte sind pro Organisation.

Einschränkungen

EinschränkungWas passiert, wenn sie erreicht wird
Extensionsdas Hinzufügen einer weiteren Extension wird mit einer Meldung abgelehnt
Anrufe gleichzeitigneue Anrufe werden abgelehnt (503), bis einer endet
Speicherneue Aufnahmen und Voicemail werden nicht gespeichert
AI-Anfragen pro TagTranskripte, Zusammenfassungen und der AI-Rezeptionist stoppen, bis Mitternacht UTC

0 ist keine Einschränkung. Notrufe werden nie abgelehnt: eine Organisation, die ihre Anrufbegrenzung erreicht hat oder suspendiert ist, kann immer noch 911 anrufen und zurückgerufen werden.

Eine Organisation öffnen

Öffnen meldet Sie als Anbieter in ihrer Web-Oberfläche an, ohne ein eigenes Konto zu benötigen; es wird in ihrem Audit-Log als Anbieter angezeigt. Ihre Administratoren melden sich bei ihrer eigenen Adresse mit ihren eigenen Konten an. Jede Organisation hat ihr eigenes Anmelde-Cookie, so dass die Anmeldung bei einer Organisation niemals jemanden bei einer anderen anmeldet.

Organisationen sehen nie die eigenen Bildschirme dieses Servers: Updates, die Datenbank, die anderen Server, das Zertifikat, die SIP-Spur (die alle Nachrichten jeder Organisation zeigt), den Anrufgenerator oder diese Liste.

Suspendieren und entfernen

Suspendiert stoppt Anmeldungen und jeden Anruf, außer Notrufen; nichts wird gelöscht. Entfernen stoppt die Organisation und verschiebt ihren Ordner zur Seite (tenants/.removed-<name>-<time>), so dass ein Fehler manuell korrigiert werden kann.

Kapitel 66

Codecs und Ton

Ein Codec ist die Art und Weise, wie Ton in Daten auf einem Anruf umgewandelt wird. Telefone, Browser und Carrier unterstützen jeweils einige; BitVoice wandelt zwischen zwei beliebigen Codecs um, wenn zwei Parteien unterschiedlich sind, damit jeder mit jedem sprechen kann. Wenn beide dieselben Codecs verwenden, wird der Ton unverändert weitergeleitet.

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

Die Codecs

CodecTonBandbreiteVerwendet von
G.722HD (Breitband)64 kbit/sdie meisten Tischtelefone: die beste Wahl zwischen ihnen
G.711 µ-lawTelefon64 kbit/sNordamerika und Japan; jeder Carrier
G.711 A-lawTelefon64 kbit/sder Rest der Welt
OpusHD, verträgt Verlust24 kbit/sBrowser und mobile Apps
G.729Telefon, ein bisschen rauher8 kbit/sdünne Verbindungen, einige Carrier
G.726 (40 kbit/s)Telefon; überträgt Modem-Töne am besten der G.726-Raten40 kbit/sGateways, einige DECT-Systeme
G.726 (32 kbit/s)nahe Telefon32 kbit/sDECT-Basen, ältere Gateways
G.726 (24 kbit/s)zwischen 32 und 1624 kbit/seinige DECT-Systeme
G.726 (16 kbit/s)rau16 kbit/ssehr dünne Verbindungen
AMR-WB (G.722.2)HD6,6 bis 23,85 kbit/smobile Netzwerke, HD-Stimme, VoLTE-Verbindungen
AMRTelefon, mobil4,75 bis 12,2 kbit/smobile Netzwerke, einige Carrier und Gateways
iLBCTelefon, verträgt Verlust13,3 oder 15,2 kbit/sältere Softphones und Apps
SpeexTelefon15 kbit/s (2,15 bis 24,6)ältere Softphones, Verbindungen zu anderen Asterisk-Systemen
GSMrauher13 kbit/sältere Softphones und Gateways
G.723.1rau; nur mit ffmpeg umgewandelt5,3 oder 6,3 kbit/ssehr alte Videotelefone und Gateways
G.722.1 (Siren 7)Breitband, unverändert übertragen24 oder 32 kbit/sPolycom-Telefone, Videotelefone und Konferenztelefone
G.722.1C (Siren 14)Super-Breitband, unverändert übertragen24 bis 48 kbit/sKonferenztelefone, Raumsysteme
G.719Vollband, unverändert übertragen32 bis 128 kbit/sTelepräsenz-Raumsysteme
Codec2sehr geringe Bandbreite, unverändert übertragen0,7 bis 3,2 kbit/sFunkverbindungen, Amateurfunk-Gateways

Einstellungen listen die Codecs auf, die Telefone verwenden dürfen, am besten zuerst; jeder Trunk kann seine eigene Liste haben. Analog-Adapter-Ports verwenden immer G.711, das Faxe, Modems und Alarm-Panel benötigen.

G.722.1, G.722.1C, G.719 und Codec2 werden unverändert zwischen zwei Parteien übertragen, die sie beide verwenden, mit ihrer Bitrate oder ihrem Modus, der im Angebot beibehalten wird (BitVoice wandelt sie nicht um, daher verwendet ein Anruf zwischen einem dieser Codecs und einem Telefon ohne ihn einen anderen Codec, den beide haben). Setzen Sie sie in eine Liste, über G.711, wo Raumsysteme oder Konferenztelefone ihren Tonbereich beibehalten sollten, wenn sie einander anrufen.

G.723.1 wird unverändert zwischen zwei Parteien übertragen, die es beide verwenden. Um ein G.723.1-geräte mit jedem anderen Gerät sprechen zu lassen, schalten Sie G.723.1 mit ffmpeg umwandeln in den Einstellungen ein und installieren Sie ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice führt dann ffmpeg als separates Programm für jede Richtung aus, die umgewandelt werden muss (entweder Rate gehört, 6,3 kbit/s gesendet, die Rate, die der ffmpeg-Encoder erzeugt), etwa 60 ms später als andere Codecs, und stoppt es einige Sekunden nach dem Anruf. BitVoice enthält keinen G.723.1-Code: der ITU-Referenzcode hat keine Lizenz, die es erlaubt, ihn einzuschließen, und ffmpeg wird separat installiert und ausgeführt.

Was die Umwandlung kostet

Die Umwandlung benötigt Prozessorzeit, nur bei Anrufen, bei denen sich die beiden Seiten unterscheiden. Pro Anruf etwa 0,3 ms eines Kerns alle 20 ms für Opus und 0,12 ms für G.729 (etwa 60 und 170 umgewandelte Anrufe pro Kern); G.726 und GSM kosten weniger als G.729; G.711 und G.722 fast nichts. G.729 wird ohne Anhang B (keine Stilleframes) gesendet.

Reinigung des Klangs

Reinigung des Klangs (Einstellungen) dämpft ständiges Hintergrundrauschen und gleicht Pegel aus, für Voicemail und, wenn Sie möchten, während Anrufen.

Kapitel 67

Microsoft Teams (Direct Routing)

Im Webinterface: /trunks

BitVoice kann der Sitzungs-Edge-Controller (SBC) für einen Microsoft Teams-Mandanten sein, sodass Teams-Benutzer BitVoice-Extensionen und Ihre Telefonleitungen anrufen und BitVoice Teams-Benutzer klingelt.

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

Was Sie benötigen: einen öffentlichen Namen für diesen Server in einer Domäne, die Ihr Microsoft 365-Mandant verifiziert hat (sbc.example.com), Port 5061, der in beide Richtungen zu Microsofts Netzwerken 52.112.0.0/14 und 52.120.0.0/14 geöffnet ist, und ein Zertifikat für diesen Namen von einer öffentlichen Behörde. Teams-Benutzer benötigen eine Phone System-Lizenz.

Schritte

  1. Einstellungen, Zertifikat: installieren Sie das Zertifikat und seinen privaten Schlüssel (PEM). Es wird sofort verwendet, für diese Schnittstelle und für SIP über TLS, und BitVoice präsentiert es Microsoft.
  2. Trunks, Hinzufügen, starten Sie mit Microsoft Teams: geben Sie den öffentlichen Namen des Servers ein. Die Schublade sagt, ob das Zertifikat ihn abdeckt.
  3. Kopieren Sie die PowerShell-Befehle, die die Schublade anzeigt, und führen Sie sie als Teams-Administrator aus: es fügt die SBC (New-CsOnlinePSTNGateway) hinzu, eine Sprachroute und Richtlinie und eine Wähleinstellungsregel, damit kurze Nebenstellennummern BitVoice wie gewählt erreichen; dann geben Sie jedem Teams-Benutzer die Richtlinie und seine Nummer.
  4. Um Teams-Benutzer von BitVoice aus anzurufen, fügen Sie eine ausgehende Route für ihre Nummern über den Teams-Trunk hinzu. Teams findet seine Benutzer nur durch Nummern mit + und der Ländervorwahl: wenn die Leute sie ohne + und Ländervorwahl wählen, setzen Sie + und die Ländervorwahl in die Vorwahlen der Route (die Spur des Anrufs sagt so, wenn einer ausgeht, ohne).

Wenn ein Teams-Benutzer einen Anruf weiterleitet, bittet Microsoft BitVoice, den Anruf zu tätigen (ein REFER mit seinem eigenen Proxy, mit der Nummer oder der ID des Teams-Benutzers): BitVoice ruft genau zurück, was Microsoft genannt hat, mit dem Referred-By, den Microsoft gegeben hat, sodass eine Weiterleitung an einen anderen Teams-Benutzer genauso funktioniert wie eine an eine Telefonnummer. BitVoice sendet Teams niemals einen Replaces-Header, den Microsoft ablehnt.

BitVoice sendet Microsoft alle Minuten OPTIONS mit dem SBC-Namen in Contact, wie Microsoft es erfordert, und versucht sip, sip2 und sip3.pstnhub.microsoft.com nacheinander. Medien sind immer verschlüsselt (SRTP). Health warnt, wenn das Zertifikat den Namen nicht abdeckt, selbstsigniert ist oder bald abläuft, und wenn Microsoft aufhört zu antworten.

Dies entspricht Microsofts veröffentlichten SBC-Anforderungen und wird gegen einen simulierten Microsoft-Proxy getestet; BitVoice ist nicht in Microsofts Liste der zertifizierten SBCs.

Kapitel 68

Importieren

Im Webinterface: /import

Überträgt Erweiterungen, Ringgruppen, Warteschleifen und Trunks von FreePBX, Asterisk oder 3CX; sowie Personen, Jagd- und Ringgruppen, SIP-Trunks, eingehende Nummern und Wählmuster von Cisco, Avaya und Mitel. Laden Sie die exportierten Dateien hoch, mehrere auf einmal (auch ein .zip- oder .tar-Archiv davon); BitVoice zeigt genau an, was geändert werden würde, bevor etwas angewendet wird, und der Import wird zu einer Revision, die Sie auf Änderungen (Kapitel 61) rückgängig machen können.

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

Umzug von FreePBX

Die beste Datei ist ein FreePBX-Backup: es enthält alles, einschließlich SIP-Passwörter.

  1. In FreePBX: Admin → Backup & Restore → Add Backup. Aktivieren Sie mindestens Core, Ring Groups, Queues und Voicemail (alle Module sind in Ordnung), speichern und Ausführen.
  2. Laden Sie das Backup von seiner Zeile herunter (die Datei heißt z. B. 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. Installieren Sie BitVoice auf dem neuen Server und beenden Sie die Einrichtung mit einer Erweiterung, die FreePBX nicht verwendet (z. B. 199), und ohne Telefonleitung: der Import bringt die Leitungen mit.
  4. Auf Import (Kapitel 68) die .tar.gz-Datei wie sie ist ablegen. Lesen Sie die Vorschau: die Warnungen listen alles auf, was nicht übernommen werden kann.
  5. Wählen Sie Hinzufügen. Es ist eine Revision auf Änderungen (Kapitel 61): machen Sie es dort rückgängig, wenn etwas falsch aussieht, und importieren Sie erneut.
  6. Verschieben Sie die Telefone: zeigen Sie jedes auf BitVoice (oder konfigurieren Sie es von Telefonen (Kapitel 4)) mit der gleichen Erweiterungsnummer und dem gleichen SIP-Passwort, das es hatte.
  7. Testen Sie Anrufe ein- und ausgehend, dann verschieben Sie die Registrierung des Carriers (oder die Nummernportierung) zuletzt.

Auf einem echten System getestet: ein FreePBX 17.0.33 (die offizielle Debian 12-Installation) mit vier Erweiterungen und Voicemail, einem PJSIP-Trunk, der registriert, zwei ausgehenden Routen (eine mit einem Wählprefix), einer Ringgruppe, einer Warteschleife mit Strafen und drei DIDs, die mit Backup & Restore gesichert wurden, wobei jedes Modul aktiviert war. Das Backup ist 70 MB groß, fast alles davon sind Sounddateien und Anrufliste: BitVoice liest es, wie es kommt, und behält nur die Konfiguration, sodass ein Backup von bis zu 512 MB hochgeladen werden kann. Alles oben genannte wurde übernommen: die Passwörter, die Voicemail-PINs und -E-Mail, die Registrierung und Codecs des Trunks, die Routen mit ihren Prefixen, die Ringgruppe mit Voicemail bei nicht beantworteten Anrufen, die Warteschleife mit Strafen und die DIDs zur Gruppe, zur Warteschleife und zur Erweiterung.

Was übernommen wird:

Was nicht übernommen wird und im Vorschau-Text genannt wird: IVRs, Zeitbedingungen, Ankündigungen, Follow-me, benutzerdefinierte Trunks und Kontexte, Anruferkennung auf Routen und externe Nummern in Ringgruppen. Bauen Sie diese auf Menüs (Kapitel 21), Zeitpläne (Kapitel 26) und der Erweiterung Follow me. Ältere Backups (FreePBX 13 und früher) und ein einfaches mysqldump asterisk der FreePBX-Datenbank werden auf die gleiche Weise gelesen.

Andere Systeme

Wo jeder Export wie folgt ist:

Gruppen und Routen. Laden Sie sie mit der Personen-Datei hoch, damit jedes Gruppenmitglied nach Nummer oder Name gefunden werden kann:

Trunks aus diesen Exporten kommen deaktiviert und ohne Passwörter, da die Exporte sie nicht enthalten. Routen gehen auf dem importierten Trunk mit dem gleichen Namen aus; eine Route, deren Trunk nicht hier ist, wird ausgelassen und angezeigt. Rotierendes und längstes Leerlauf-Klingeln ist eher einer Warteschleife als einer Ringgruppe ähnlich: die Vorschau sagt es, damit Sie es in eine Warteschleife umwandeln können.

Diese Exporte (alle außer einer FreePBX-Sicherung) enthalten keine SIP-Passwörter, sodass jede Erweiterung ein neues Passwort erhält; Voicemail-PINs, Namen und E-Mail-Adressen werden übernommen, wenn der Export sie enthält. Cisco-, Avaya-H.323/DCP- und Mitel-Telefone verwenden die Software ihres Herstellers und können nicht von BitVoice konfiguriert werden: der Import sagt, wie viele aufgelistet wurden. Cisco-Telefone können mit Ciscos Multi-Plattform-(SIP)-Firmware neu geflasht werden; Avaya-J100- und Mitel-6800/6900-Telefone können sich in SIP-Modus manuell bei BitVoice registrieren.

Kapitel 69

Konfiguration als Code

Alles, was die Bildschirme tun, geht durch die REST-API von BitVoice, sodass alles skriptgesteuert, in Git gespeichert oder mit Terraform verwaltet werden kann. Die API wird für Tools unter /api/openapi.json (/api/openapi.json) beschrieben.

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

API-Tokens

Erstellt auf Administratoren (Kapitel 57): eines pro Programm, nur lesbar oder in der Lage, alles zu ändern. Senden Sie es als Authorization: Bearer bv_.... Es wird einmal angezeigt; widerrufen Sie es, wenn es nicht mehr benötigt wird. Die Änderungen eines Tokens werden in Änderungen und im Überwachungsprotokoll unter seinem Namen angezeigt.

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

Terraform oder OpenTofu

Das Repository deploy/terraform zeigt Erweiterungen, Ringgruppen und Routen, die mit dem generischen REST-Provider verwaltet werden: Plan zeigt, was geändert werden würde, Anwenden führt die Änderung durch. Der Provider überprüft das Zertifikat von BitVoice; solange BitVoice noch sein eigenes selbstsigniertes Zertifikat verwendet, können Sie entweder eines von Let's Encrypt (Einstellungen, Zertifikate) erhalten oder bitvoice_insecure = true auf einem Netzwerk setzen, dem Sie vertrauen (unter Linux funktioniert auch SSL_CERT_FILE, das auf das Zertifikat von BitVoice zeigt). Ressourcen werden durch die ID identifiziert, die BitVoice ihnen zuweist, sodass ein zweiter Plan keine Änderungen zeigt, bis die Datei oder die Bildschirme etwas ändern.

Konfiguration aus Git

In Einstellungen (Kapitel 14), Konfiguration aus Git, liest BitVoice die Konfiguration aus einer Datei in einem Repository alle paar Minuten und zeigt entweder, was sich unterscheidet, oder führt die Änderungen durch. Beginnen Sie die Datei mit Export für Git, die Passwörter auslässt; BitVoice behält seine eigenen, sodass Geheimnisse nie in das Repository gelangen.

Kapitel 70

Asterisk-Kompatibilität (AMI, ARI und AGI)

Tools, die für Asterisk geschrieben wurden, können BitVoice steuern: CRM-Systeme, Wallboards, Click-to-Dial-Schaltflächen, Call-Recorder-Controller. Aktivieren Sie es in Einstellungen (Kapitel 14), Asterisk-Kompatibilität. Tools sehen Anrufe als Kanäle an, die wie PJSIP/100-... benannt sind, wie bei Asterisk.

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

AMI

Das Manager-Interface auf TCP-Port 5038 (AMI hört auf: standardmäßig nur auf diesem Computer). Unterstützt:

ArtNamen
AktionenLogin (plain oder MD5-Challenge), Ping, Events, Filter, ListCommands, CoreShowChannels, Status, CoreStatus, CoreSettings, PJSIPShowEndpoints, ExtensionState, ExtensionStateList, DeviceStateList, Getvar, Originate, Redirect, BlindTransfer, Hangup, Logoff
WarteschleifenQueueStatus, QueueSummary, QueuePause, QueueAdd und QueueRemove (diese melden einen Agenten in allen Warteschleifen an oder ab), Agents
AndereParkedCalls; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; MailboxCount, MailboxStatus; PauseMonitor, UnpauseMonitor; UserEvent; Reload (es gibt nichts zum Neuladen: Änderungen werden sofort angewendet)
EreignisseNewchannel, Newstate, Hangup, DialBegin, DialEnd, Hold, Unhold, PeerStatus, ContactStatus, MessageWaiting, ConfbridgeJoin, ConfbridgeLeave, ConfbridgeEnd, UserEvent

Filter behält nur die Ereignisse, die einem regulären Ausdruck entsprechen (Event: Newchannel), oder verwerfen sie mit ! am Anfang, wie bei Asterisk. Es gibt keine Asterisk-Kommandozeile: Command antwortet mit einem Fehler.

ARI

Bei /ari/, mit Basis-Authentifizierung oder ?api_key=user:secret:

AnfrageWas es tut
GET /ari/channelsdie laufenden Anrufe
POST /ari/channels?endpoint=PJSIP/100&extension=5551234100 klingeln, dann die Nummer anrufen
DELETE /ari/channels/{id}Anruf beenden
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102Anruf an 102 weiterleiten
/ari/endpoints, /ari/bridges, /ari/asterisk/infoTelefone, Bridges, Version
/ari/eventsein WebSocket von Ereignissen
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawein Kanal, der Ton an ein Programm über RTP (ulaw oder alaw über UDP) sendet; der lokale Port ist im Kanal's UNICASTRTP_LOCAL_PORT
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid>dasselbe über AudioSocket
POST /ari/bridges/{call}/addChannel?channel={id}der externe Medienkanal tritt einem Anruf bei: er hört beide Parteien und beide hören ihn; mit role=listener hört ihn niemand (für Live-Transkription)
POST /ari/bridges/{call}/removeChannel?channel={id}er verlässt den Anruf; die beiden Parteien sprechen direkt miteinander

Ein externer Medienkanal, der nicht innerhalb einer Minute einem Anruf hinzugefügt wird, wird geschlossen.

ARI-Anwendungen

Eine ARI-Anwendung (Asterisk's Stasis()) führt Anrufe von Ihrem eigenen Programm aus. Fügen Sie es unter ARI-Anwendungen in den Einstellungen, Asterisk-Kompatibilität, hinzu: ein Name, eine optionale Nummer Erweiterungen, die gewählt werden, und ein Fallback. Dann senden Sie Anrufe an es wie an jedes andere Ziel: eine eingehende Route, eine Menütaste, einen Zeitplan.

Ihr Programm verbindet sich mit /ari/events?app=NAME (einem WebSocket, mit dem Login in ?api_key=user:secret). Jeder Anruf, der die Anwendung erreicht, wird beantwortet und als StasisStart mit dem Kanal angekommen; das Programm führt es dann aus:

AnfrageWas es tut
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42spielt Prompts von Sounds (sound:), digits:, number:, tone:beep oder eine gespeicherte Aufnahme (recording:); PlaybackStarted und PlaybackFinished folgen. DELETE /ari/playbacks/{id} stoppt es.
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23zeichnet (wav) in die gespeicherten Aufnahmen auf; RecordingStarted und RecordingFinished. POST /ari/recordings/live/{name}/stop beendet es, DELETE verwerfen es.
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name}die gespeicherten Aufnahmen
POST /ari/channels/{id}/dtmf?dtmf=123sendet Tasten an den Anrufer
GET/POST /ari/channels/{id}/variable?variable=X&value=Ydie Variablen des Kanals
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEMischbrücken: jeder in einem hört jeden anderen
POST /ari/channels/{id}/continue?extension=101gibt den Anruf frei: an diese Erweiterung, Klingelgruppe oder Warteschleife, sonst den Fallback
DELETE /ari/channels/{id}legt auf
POST /ari/channels?endpoint=PJSIP/101&app=NAMEruft 101 an; beantwortet, tritt es der Anwendung bei
GET /ari/applicationsdie Anwendungen, ob ein Programm verbunden ist, und ihre Kanäle
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutestummschaltet, was der Anrufer sagt (in), was er hört (out) oder beides
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silenceWartemusik für den Anrufer (ChannelHold, ChannelUnhold), oder Stille
GET/POST /ari/channels/{id}/variablesmehrere Variablen auf einmal (ChannelVarset)
POST /ari/channels/{id}/move?app=otherübergibt den Kanal an eine andere Anwendung (StasisEnd, dann StasisStart dort; ApplicationMoveFailed wenn kein Programm es ausführt)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEein Snoop-Kanal in einer Anwendung, der hört, was der Anrufer sagt, um es aufzuzeichnen (POST /ari/channels/{snoop}/record)
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, dann POST .../dialein Kanal, der wartet, bis er gewählt wird; Dial-Ereignisse berichten, wie das Klingeln verläuft, und er tritt der Anwendung bei, wenn beantwortet
GET /ari/channels/{id}/rtp_statisticsPakete und Bytes, die gesendet und empfangen werden, Verlust und Jitter
POST /ari/playbacks/{id}/control?operation=pausepausiert, unpausiert, startet neu, zurück und vorwärts (drei Sekunden)
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId}Wartemusik für eine Brücke, Aufnahme ihrer Mischung, ihre Variablen
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mutekopiert eine Aufnahme; pausiert oder stummschaltet eine Live-Aufnahme
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFilterAbonnements (channel:, bridge:, endpoint:PJSIP/100, deviceState:) und Ereignisfilter ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEZustände der Telefone (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) und benutzerdefinierte Zustände, die Programme beibehalten (DeviceStateChanged); Telefonzustand kommt auch als EndpointStateChange
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0Anzahl der Voicemails der Erweiterungen (100@default), und Mailboxen, die ein Programm selbst beibehält
GET /ari/soundsdie Prompts von Sounds, in den Sprachen, in denen sie aufgezeichnet sind, und die Sounds, die für AGI-Skripte hochgeladen werden
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hiein Text auf dem Telefon der Erweiterung 100
POST /ari/events/user/{name}?application=NAMEein Benutzerereignis an eine Anwendung (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, globale Variablen und BitVoice-Teile, benannt nach den Modulen, für die sie stehen

BitVoice beantwortet jeden Vorgang von Asterisks veröffentlichter ARI (sein Testsuite ruft jeden davon auf und überprüft, ob das Zurückgegebene die Felder enthält, die Asterisks Beschreibung erfordert). Einige haben hier nichts zu tun und beantworten 501 mit dem Grund: ladbare Module (BitVoice ist ein Programm), Sorcerys dynamische Konfiguration (BitVoice wird im Webinterface eingerichtet), Logkanäle, Videquellen von Brücken (ARI-Brücken übertragen Ton), das Senden von REFER an Telefone und das Anfordern von Rundfunkanrufen. Ein Lauscher hört nur den Anrufer (spy=in) und Flüstern wird nicht angeboten: Brücke einen Kanal mit ihrem, um mit ihnen zu sprechen. Kanalereignisse für jeden Anruf (ChannelCreated, ChannelStateChange, ChannelDestroyed) gehen an jedes Programm, wie bei Asterisks subscribeAll=true. ARI-Bibliotheken, die die Schnittstelle vom Server lesen (ari-client und andere), finden sie unter /ari/api-docs/resources.json. Welche Programme jetzt beibehalten, unter ARI-Anwendungen in Einstellungen, zeigt die Anwendungen, benutzerdefinierten Gerätestatus, Mailboxen, globale Variablen und Brücken, die Programme eingerichtet haben.

Gedrückte Tasten werden als ChannelDtmfReceived übertragen; ein Anrufer, der auflegt, wird als StasisEnd gekennzeichnet. Wenn kein Programm verbunden ist, geht der Anruf an die Fallback-Route; wenn die letzte Verbindung eines Programms geschlossen wird, gehen dessen Anrufe auch dorthin, nach fünf Sekunden (Zeit zum erneuten Verbinden). Für die Anruflogik ohne eigenes Programm verwenden Sie Skripte (Kapitel 27), die den gesamten Anruf ausführen; um den Audio-Stream an ein Programm zu übergeben, Sprachbots (Kapitel 24).

AGI-Skripte

Ein AGI-Skript (Asterisks AGI() und EAGI()) führt einen Anruf Befehl für Befehl aus, sodass IVRs und Integrationen, die für Asterisk geschrieben wurden (phpagi, pyst2, Asterisk-Java, jeder FastAGI-Server), weiterhin funktionieren. Fügen Sie es unter AGI-Skripte in den Einstellungen, Asterisk-Kompatibilität, hinzu:

FeldWas es ist
Skriptnamewie Ziele es nennen
Adresseein FastAGI-Server, agi://host:4573/script?x=1 (Port 4573, wenn keiner angegeben ist), hagi://domain/script für die Server in den SRV-Einträgen _agi._tcp der Domäne, die in Prioritätsreihenfolge versucht werden, oder der Dateiname eines Programms im Ordner AGI-Programme
Argumenteals agi_arg_1, agi_arg_2 … übergeben
Nummer zum Wählenoptional: Erweiterungen wählen es wie jede andere Nummer
Fallbackwohin der Anruf geht, wenn das Skript ohne Auswahl einer Nummer endet oder nicht erreicht werden kann
Längste Ausführungein Skript, das länger läuft, wird beendet (Standardmäßig eine Stunde)
EAGIfür ein Programm: der Audiostream des Anrufers (8 kHz, signiertes 16-Bit, little-endian) auf Dateideskriptor 3. Linux und macOS

Test verbindet sich mit dem Server (oder überprüft, ob das Programm vorhanden und ausführbar ist), ohne einen Anruf zu senden. Senden Sie dann Anrufe an es wie an jedes andere Ziel.

BitVoice beantwortet den Anruf, sendet die agi_-Variablen (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) und führt die Befehle aus, wie Asterisk 20 es tut (die Testsuite vergleicht jede Antwort mit einer Aufnahme von Asterisks):

BefehleHinweise
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP mit einem Kanalnamen beendet nur den Anruf des Skripts
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITEscape-Tasten, Stichproben-Offsets und Endpositionen wie bei Asterisk; Fast-Forward, Rewind und Pause in CONTROL STREAM FILE
SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIMEmit einem Sprachdienst in Einstellungen, KI, werden sie gesprochen; ohne, werden die Ziffern aus Sounds gesagt
RECORD FILEs=N Stille, ein Piepton, Escape-Tasten; die Datei landet in der Sound-Bibliothek
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … und ${NAME}-Ausdrücke
DATABASE GET, PUT, DEL, DELTREEAsterisks Datenbank (AstDB), die von BitVoice beibehalten wird und unter AGI-Datenbank angezeigt wird
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION ist, wohin der Anruf geht, wenn das Skript endet
SPEECH CREATE … SPEECH RECOGNIZEverwendet die Sprache-zu-Text-Funktion von Einstellungen, KI: das Ergebnis ist, was der Anrufer gesagt hat, als text0, für das Skript zum Vergleichen; Grammatiken werden akzeptiert und nicht verwendet
EXECAnswer, Hangup, Playback, Background, Set, MSet, SayDigits, SayNumber, SayAlpha, Wait, Dial (klingelt jede Nummer nacheinander; DIALSTATUS), Goto, VoiceMail, Queue, MusicOnHold, Record, NoOp, Verbose, Log. Andere beantworten -2, wie Asterisk es für eine fehlende Anwendung tut

BitVoice hat keine Wähldatenbank: wohin ein Skript in Asterisks Wähldatenbank weitergehen würde (SET EXTENSION, EXEC Goto), geht der Anruf an diese Nummer hier (eine Erweiterung, eine Rufgruppe, eine Warteschleife, ein Menü oder eine externe Nummer über die ausgehenden Routen), wenn das Skript endet. Skripte rufen nie Notrufnummern an. Wenn der Anrufer auflegt, erhält ein FastAGI-Skript HANGUP und ein Programm SIGHUP; nur Befehle, die auf einem toten Kanal zulässig sind, können dann ausgeführt werden (511 für die anderen), und die Verbindung wird 30 Sekunden später geschlossen, wenn das Skript weiterläuft. Jede Ausführung wird unter Letzte Ausführungen mit ihren VERBOSE-Zeilen angezeigt und geht in den Ereignisstrom als agi.ran.

Sounds für AGI-Skripte. Skripte spielen Sounds ab, indem sie die Namen verwenden, die sie bei Asterisk verwenden: Laden Sie sie unter Sounds für AGI-Skripte mit einem Ordner (custom/welcome; es/custom/welcome für Anrufer in spanischer Sprache) hoch. WAV, MP3 und Asterisks .gsm, .ulaw, .alaw, .sln und .sln16 werden akzeptiert; ein Pfad wie /var/lib/asterisk/sounds/en/custom/welcome.gsm findet custom/welcome. Asterisks digits/0–digits/9, beep, silence/N und einige andere (vm-goodbye, invalid, please-hold) spielen BitVoices eigene Prompts und Töne ab. Was Skripte aufzeichnen, wird in der gleichen Bibliothek aufbewahrt, markiert als von einem Skript aufgezeichnet, für die Anzahl der Tage, die Sie wählen (30 Standard). Die Bibliothek kann bis zu 1 GB fassen.

Programme. Ein Programm läuft auf diesem Server mit den Rechten von BitVoice, es wird also nie über das Web hochgeladen: Kopieren Sie es in den Ordner AGI-Programme (auf dem Bildschirm angezeigt: DATA/agi-bin) und machen Sie es ausführbar. Es erhält nur PATH und AST_AGI_DIR aus der Umgebung, läuft in diesem Ordner und was es in die Standardfehlerausgabe schreibt, geht an das Server-Log. FastAGI sendet Befehle in plain TCP: Halten Sie den Server auf diesem Computer oder einem privaten Netzwerk.

Anmeldungen

Jede Anmeldung hat einen Benutzernamen und ein Geheimnis. Anmeldungen sind nur lesbar, es sei denn, sie sind als Anrufe ändern markiert. Halten Sie AMI auf diesem Computer, es sei denn, das Tool läuft woanders: AMI ist plain, unverschlüsseltes TCP.

Kapitel 71

Künstliche Intelligenz-Assistenten (MCP)

Ein künstlicher Intelligenz-Assistent wie Claude, ChatGPT, Gemini oder Cursor kann BitVoice über das Model-Context-Protokoll (MCP) verwenden, den Standardweg, den Assistenten andere Programme erreichen. Fragen Sie es in einfachen Worten: Wer hat heute Morgen angerufen und hat jemand zurückgerufen, was hat der Anrufer von der Zahnarztpraxis gesagt, warum ist der 9-Uhr-Anruf auf die Voicemail gegangen, ist die Anbieterlinie down. Mit Ihrer Erlaubnis kann es auch einen Anruf tätigen, eine Textnachricht senden oder einen Anruf beenden.

BitVoice ist der MCP-Server, unter https://YOUR-SERVER/mcp (Streamable HTTP; die Adresse wird in den Einstellungen angezeigt). Keine Informationen werden an einen KI-Dienst weitergegeben, es sei denn, ein von Ihnen verbundener Assistent fragt danach, und dann nur die Informationen, die er angefordert hat.

Aktivierung

In Einstellungen (Kapitel 14), Künstliche Intelligenz-Assistenten (MCP):

Die Karte zeigt die Adresse und die bereiten Einstellungen für die gängigen Assistenten an und listet jedes Werkzeug auf.

Was ein Assistent tun kann

Lesen (jeder Token):

Handeln (mit Assistenten handeln lassen und einem Token, der Dinge ändern darf):

Jedes Werkzeug ist eine der eigenen Routen der API, die als Assistent ausgeführt wird: es sieht und ändert genau das, was sein Token darf, die gleichen Überprüfungen gelten, und seine Änderungen werden im Überwachungsprotokoll unter seinem Namen aufgezeichnet. Eine Antwort wird auf etwa 60.000 Zeichen begrenzt; der Assistent wird aufgefordert, seine Suche zu verfeinern, wenn eine Antwort abgeschnitten wird.

Verbindung eines Assistenten

Assistenten, die sich anmelden (Claude.ai und ChatGPT benutzerdefinierte Konnektoren und andere): Fügen Sie einen Konnektor mit der Adresse von BitVoice hinzu. Der Assistent öffnet die Anmeldeseite von BitVoice in Ihrem Browser; melden Sie sich wie gewohnt an (Passwort, Zwei-Faktor-Authentifizierung, Single-Sign-On), und die Seite sagt, welcher Assistent fragt und wohin er zurückkehrt. Ein Administrator kann es entweder zulassen oder Nur lesen lassen; der Assistent eines Betrachters kann nur lesen. Nicht zulassen sendet es mit nichts weg. Sein Zugriff ist dann auf Administratoren (Kapitel 57) auf, API-Tokens, als KI-Assistent, angemeldet: Es funktioniert nur unter /mcp und nie für den Rest der API, dauert eine Stunde und erneuert sich für bis zu 30 Tage, wenn es nicht verwendet wird. Widerrufen beendet es sofort. Diese Assistenten erreichen BitVoice von ihren eigenen Servern, daher benötigt es eine Adresse, die von Internet aus erreichbar ist, und ein Zertifikat, dem sie vertrauen (Let's Encrypt, in Zertifikat (Kapitel 14)).

Assistenten, die ein Token erhalten (Claude Code, Cursor, VS Code und andere Tools, die eine Adresse und einen Header akzeptieren): Erstellen Sie ein API-Token auf Administratoren (Kapitel 57), nur lesen, es sei denn, es sollte handeln, und geben Sie es als Authorization: Bearer bv_...:

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

Assistenten, die ein Programm starten (Claude Desktop und andere, die einen Befehl akzeptieren): Das BitVoice-Programm enthält eine Brücke, bitvoice mcp, die jede Nachricht an den Server über HTTPS weiterleitet. Geben Sie ihm die Serveradresse und das Token:

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

Mit dem eigenen Zertifikat von BitVoice (nicht von einer Autorität), weigert sich die Brücke und gibt den SHA-256 aus: Überprüfen Sie, ob es sich um das Zertifikat Ihres Servers handelt, und fügen Sie dann "-pin", "THAT-SHA256" zu den Argumenten hinzu. Nur dieses Zertifikat wird dann akzeptiert.

Sicher, um es aktiv zu lassen

Kapitel 72

Archiv

Im Webinterface: /archive

Das Archiv speichert Kopien von Aufzeichnungen, Voicemails und der Konfiguration an einem anderen Ort: einem Amazon S3-Bucket (oder einem kompatiblen Speicher) oder einem Azure Blob Storage-Container. Wenn die Festplatte dieses Servers verloren geht, hat das Archiv sie immer noch.

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

Einrichten

  1. Wählen Sie auf Archiv (Kapitel 72) Wohin archivieren: Amazon S3 oder Azure.
  2. Für S3: den Bucket, seine Region, einen optionalen Ordner im Bucket und Endpoint (für S3-kompatible Speicher), sowie eine Zugriffsschlüssel-ID und Geheimschlüssel. Richtlinie kopieren gibt die erforderliche Berechtigung, um sie dem Benutzer oder der Rolle zuzuordnen.
  3. Für Azure: eine Container-SAS-URL mit Schreibberechtigung und einen optionalen Ordner im Container.
  4. Wählen Sie aus, was neben der Konfiguration kopiert werden soll: Anrufaufzeichnungen, Voicemail oder beides.

Was passiert

Alle zehn Minuten kopiert BitVoice neue Aufzeichnungen und Nachrichten, die noch nicht im Archiv sind, und einmal täglich eine datierte Kopie der Konfiguration (config/2026-10-13.json). Die Seite zeigt den letzten Lauf, den letzten Erfolg und etwaige Fehler.

Das Löschen von etwas hier (durch Aufbewahrungsfrist oder manuell) löscht nicht die Kopie im Archiv: Legen Sie die eigenen Lebenszyklusregeln für den Bucket oder den Container fest, um zu bestimmen, wie lange das Archiv die Elemente aufbewahrt.

Kapitel 73

Rechtliche Aufbewahrungen

Im Webinterface: /holds

Eine rechtliche Aufbewahrung bewahrt Anrufprotokolle, Aufzeichnungen und Voicemails auf, die für eine Angelegenheit relevant sein können, und verhindert, dass jemand sie löscht, bis sie freigegeben wird. Verwenden Sie sie, wenn ein Anwalt um Aufbewahrung von Protokollen bittet.

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

Hinzufügen einer Aufbewahrung

Auf Rechtliche Aufbewahrungen (Kapitel 73) Hinzufügen drücken:

FeldWas es ist
Namewas die Angelegenheit heißt
Grundwarum, für die Akte
Nummerndie Erweiterungen und externen Nummern, die sie abdeckt (101, +15551234567), oder Alles
Von, Bisdie Daten, die sie abdeckt; leer für keine Begrenzung

Während eine Aufbewahrung aktiv ist

Freigeben

Freigeben macht das, was die Aufbewahrung aufbewahrt hat, wieder den Aufbewahrungs-Einstellungen unterworfen: Dinge, die älter sind als die Aufbewahrung, werden beim nächsten Reinigungslauf gelöscht. Freigegebene Aufbewahrungen bleiben aufgelistet, mit Datum und Uhrzeit, und das Hinzufügen und Freigeben von Aufbewahrungen wird im Audit-Log aufgezeichnet.

Kapitel 74

Metriken: Prometheus, OpenTelemetry, Grafana, SNMP und Anruflisten

Im Webinterface: /settings

Prometheus liest /metrics auf der Web-Adresse. Erstellen Sie ein API-Token unter Administratoren (ein Betrachter-Token reicht aus) und geben Sie es Prometheus als Trägertoken:

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

Es liest Anrufe im Gang (nach Status), beendete Anrufe (nach Richtung und Ergebnis), Sprechzeit, registrierte Telefone, den Status und die Round-Trip-Zeit jedes Trunks, wartende Anrufer und Agenten in jeder Warteschleife, empfangene und verlorene Audio-Pakete, ein Histogramm der Anrufqualitätswerte (MOS) und gebuchte Rückrufe. Zähler beginnen wieder von Null, wenn BitVoice neu startet, wie Prometheus es erwartet.

OpenTelemetry: Geben Sie in den Einstellungen, Metriken, die OTLP/HTTP-Adresse eines Collectors ein (und einen Header wie Autorisierung mit seinem Wert), um die gleichen Messungen alle Minute (oder so oft, wie Sie es einstellen, ab 15 Sekunden) zu übertragen. Jetzt pushen überprüft die gespeicherten Einstellungen.

Grafana-Dashboard lädt ein fertiges Dashboard herunter: Importieren Sie es in Grafana und wählen Sie Ihre Prometheus-Datenquelle.

SNMP

Für Überwachungssysteme, die SNMP sprechen (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), schalten Sie den SNMP-Agent in den Einstellungen ein. Er antwortet auf SNMPv2c-GET-, GETNEXT- und GETBULK-Anfragen, nur lesbar, auf UDP-Port 161 (oder einem anderen, den Sie wählen: Port 161 benötigt die Berechtigung, niedrige Ports auf Linux zu öffnen) und nur von den Netzwerken, die Sie auflisten. Wählen Sie eine Community, die nicht öffentlich oder privat ist: Es ist ein Passwort, das im Klartext über das Netzwerk übertragen wird.

Er dient der Standard-System-Gruppe (sysDescr, sysUpTime, sysContact, sysName, sysLocation) und den eigenen Werten von BitVoice unter der Basis-OID: Anrufe im Gang und klingelnd, registrierte Telefone, Trunks hoch und eingerichtet, wartende Anrufer, beendete Anrufe, Sprechsekunden, verlorene Pakete, durchschnittliche Anrufqualität, eine Trunk-Tabelle (Name, hoch oder runter, Latenz) und eine Warteschleifen-Tabelle (wartend, Agenten, beantwortet, aufgegeben). Laden Sie BITVOICE-MIB neben den Einstellungen für Ihre Überwachung herunter, um es zu laden. BioDream LLC hat noch keine Unternehmensnummer, daher ist die Standard-Basis-OID im experimentellen Raum von Net-SNMP; legen Sie eine unter Ihrer eigenen Unternehmensnummer, um sie stabil zu halten.

Fallen (SNMPv2) gehen an jeden Empfänger, den Sie auflisten, wenn ein Trunk herunterfällt oder wieder hochkommt, ein Notruf gemacht wird oder ein Server eines Clusters aufhört zu antworten. SNMPv3 wird noch nicht unterstützt.

Anruflisten an anderer Stelle

Neben der Anrufliste kann jeder Eintrag, wenn der Anruf endet, an folgende Orte gesendet werden:

Testeintrag senden testet den Syslog-Server und die Datenbank mit den gespeicherten Einstellungen.

Kapitel 75

Anrufergenerator

Im Webinterface: /loadtest

Der Anrufergenerator platziert echte Anrufe mit echtem Audio in BitVoice von diesem Computer aus: Um zu sehen, wie viele Anrufe ein Server bewältigt und wie gut, oder um nach einer Änderung zu überprüfen, ob Anrufe noch dorthin gelangen, wo sie sollen.

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

Testlauf

EinstellungWas es ist
Zu wählende Nummereine Nummer innerhalb von BitVoice: eine Nebenstelle, eine Gruppe, eine Warteschleife, ein Menü
Anrufe kommen vondie Anrufernummer, die die Anrufe anzeigen
Als beantworteneine Nebenstelle, die der Generator selbst beantwortet; oder niemand, wenn die Nummer selbst beantwortet wird (ein Menü, der Echo-Test)
Anrufewie viele insgesamt
Gleichzeitigdie meisten gleichzeitig im Gange, bis zu 2.000. Jeder weitergeleitete Anruf benötigt Medienports von Medien von und Medien zu (Einstellungen): der Standard 10000-20000 fasst etwa 1.800, also erweitern Sie es für mehr
Neue pro Sekundewie schnell sie starten
Jeder dauert (s)wie lange jeder spricht

Lesen der Ergebnisse

ErgebnisWas es sagt
Beantwortet, Fehlgeschlagenund Warum Anrufe fehlgeschlagen sind, nach Grund
Anrufzeit, Median und 95%wie lange Anrufer gewartet haben
Audioverlustder Anteil der Audiopaketes, die nie angekommen sind
Audio-Bewertungeine Schätzung der Tonqualität (MOS): 4 und höher ist gut, unter 3,6 ist schlecht
Jitter, 95% der Anrufewie ungleichmäßig der Ton zurückkam (RFC 3550 Interarrival-Jitter, gemittelt über jeden Anruf); Telefone glätten bis zu etwa 20 ms
Längste Lücke, schlechtester Anrufdie längste Wartezeit zwischen zwei Audiopaketes in einem Anruf; sie kommen alle 20 ms, also zeigt sich hier eine Blockierung des Servers
Speicherpausen, längste Pausewie oft und wie lange die Go-Laufzeit alles angehalten hat, um den Speicher während des Laufs aufzuräumen
Anrufe in Bearbeitung im Zeitverlaufein Diagramm der Last
Kapitel 76

SIP-Spur

Im Webinterface: /trace

Die SIP-Spur zeigt die Nachrichten an, die BitVoice sendet und empfängt, live: der erste Ort, an dem zu suchen ist, wenn ein Telefon sich nicht anmelden lässt oder ein Anruf fehlschlägt, und was ein Support-Team eines Anbieters anfordern wird.

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

Eine Nachricht finden

BitVoice speichert die letzten 2.000 Nachrichten im Speicher (nichts wird auf die Festplatte geschrieben und sie sind nach einem Neustart verschwunden). Geben Sie einen Teil einer Nummer, einer Adresse oder einer Call-ID in den Filter ein. Drücken Sie Aktualisieren für die neuesten.

Wählen Sie eine Nachricht, um sie vollständig zu sehen und, neben ihr, den Anruf-Fluss: jede Nachricht desselben Anrufs in der Reihenfolge, zwischen dem Telefon, BitVoice und dem Anbieter, wie in der Abbildung.

Lesen einer Spur

Sie sehenEs bedeutet normalerweise
REGISTER antwortet 401, dann nichtsdas Telefon hat kein Passwort oder ein falsches Passwort
REGISTER antwortet 403die Adresse ist gesperrt oder das Telefon meldet sich als eine andere Erweiterung an
INVITE antwortet 404keine Route entspricht der gewählten Nummer (Anrufweiterleitung (Kapitel 8))
INVITE antwortet 403 durch den Anbieterder Anbieter lehnt die Anruferkennung oder die Nummer ab
486die andere Seite ist beschäftigt
488die beiden Seiten haben keinen gemeinsamen Codec (Codecs (Kapitel 66))
200 OK, dann BYE nach etwa 30 Sekundendas ACK ist nie angekommen: ein Router dazwischen ändert oder löscht Nachrichten (schalten Sie seine "SIP ALG" aus)
Ein Anruf wird hergestellt, aber niemand hört etwasder Klang wird blockiert: überprüfen Sie die öffentliche Adresse in den Einstellungen und die Medien-Ports in der Firewall
Teil 6

Öffentliche Sicherheit: der Labortrack

Das 911-Notrufprofil, die Funkleitkonsole und die NG911-Core-Dienste. Sie sind ein Labortrack und Design-Partner: erstellt und getestet mit aufgezeichneten Aufnahmen, Beispiel-Daten und Platzhaltern, aber nicht zertifiziert für den Live-Notruf oder die Funkleitkonsole und noch nicht mit einem Live-ESInet, P25-System oder CAD getestet. Sie sind aus dem Menü ausgeschlossen, bis sie in den Einstellungen aktiviert werden. Notrufe von Ihren eigenen Telefonen (Erste Schritte) sind nicht Teil dieses Tracks: sie sind Teil jedes TelefonSystems.

Kapitel 77

Notrufe (das 911-Profil)

Im Webinterface: /psap

BitVoice beantwortet Notrufe als das Anruf-Handhabungssystem einer PSAP: Anrufe aus dem Notruf-Netzwerk (dem ESInet, NENA i3) kommen mit dem Standort des Anrufers und den Netzwerk-Daten an, der Anruf-Entgegner sieht sie sofort, und CAD wird informiert, wenn der Anruf beantwortet wird.

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

Einrichten.

  1. Unter Trunks (Kapitel 7) den Trunk von Ihrem ESInet-Anbieter (oder dem NG911-Kern-ESRP) hinzufügen und Von ESInet aktivieren.
  2. In Anrufweiterleitung (Kapitel 8) die Anrufe an Ihre Call-Taker weiterleiten: eine Warteschleife oder eine Rufgruppe.
  3. Unter 911-Anrufe Ihre Agentur-ID (eine Domäne, wie psap.county.example.gov) und die CAD-Informationen eingeben: die Adresse und den Port des ALI-Listeners und die EIDO-Adresse.

Wenn ein 911-Anruf eintrifft, wird er auf 911-Anrufe mit angezeigt:

Die Lage wird im Anruf (als Wert) oder als Referenz übermittelt, die BitVoice mit HELD abruft. Ein Anruf mit einer Referenz hat Rebid-Lage: BitVoice fragt erneut an, für einen Anrufer, der sich bewegt oder dessen erste Fixierung ungenau war.

Wenn ein Rebid die Lage ändert, sagt die Lage-Überprüfung aus, welche Lage zuerst angezeigt werden soll und warum: die neue Lage als Regel; die erste Lage, wenn sie eine genaue Geräte-Fixierung (GPS, innerhalb von 100 m) war, die weniger als zwei Minuten alt ist und die neue Lage ungenauer ist; und beide, wenn zwei Lagen um mehr als ihre Unsicherheit voneinander abweichen, so dass der Call-Taker den Anrufer fragt. Die erste Lage bleibt auf dem Anruf, egal was passiert.

Wenn ein Call-Taker den Anruf annimmt, erhält CAD, jedes auf eigene Faust, damit ein CAD, das down ist, den Anruf nicht behindert:

Der ALI-Spill selbst ist einfaches TCP, da herkömmliche CAD-Listener es akzeptieren, also kann es nicht erforderlich sein, dass es verschlüsselt wird. Wenn er an einen anderen Computer gesendet wird, warnt Gesundheit: halten Sie diesen Pfad von jedem gemeinsam genutzten Netzwerk fern, mit einer direkten Seriell-Verbindung (serial:/dev/…) oder einem VPN oder einem privaten Kreis zu CAD. Legen Sie auch Agentur-ID fest: EIDOs und der i3-Log nennen die Agentur danach, und Gesundheit (Kapitel 13) warnt, solange sie leer ist.

Ein 911-Anruf wird nie abgelehnt. Ein Sprachanruf vom ESInet (oder einem CAMA-Trunk), dessen eingehender Pfad ihn ablehnen würde, weil der Pfad auflegt, eine Gruppe mit niemandem darin anruft oder nicht existiert, oder dass niemand antwortet, ruft stattdessen jeden Call-Taker an: jede aktivierte Erweiterung und jedes Telefon, das während des Anrufens verbunden ist, bis jemand antwortet oder der Anrufer auflegt. Ein Textanruf wartet auf diesem Bildschirm auf die gleiche Weise. Der Anruf zeigt Wie er geroutet wurde an, was passiert ist, und Gesundheit (Kapitel 13) warnt vor einem solchen Pfad, damit er korrigiert werden kann. Nur Testanrufe (urn:service:test.sos) und Anrufe, die keine 911-Anrufe sind, behalten ihre Ablehnung bei.

Nicht durch eine Weiterleitung abgebrochen. Wenn ein Call-Taker einen 911-Anruf weiterleitet und die Weiterleitung nicht verbinden kann, weil die Erweiterung kein Telefon hat oder niemand antwortet, geht der Anruf zurück an den Call-Taker, solange er noch online ist. Wenn er bereits aufgelegt hat (die meisten Tischtelefone tun dies sofort nach einer blinden Weiterleitung), ruft stattdessen jeder Call-Taker an, bis einer antwortet. Ein 911-Anruf wird nie an die Voicemail oder ein anderes Ziel ohne Antwort weitergeleitet, und seine Routing-Spur zeigt an, was passiert ist. Bei jedem Anruf gibt ein Telefon, das sofort nach einer Weiterleitungsanfrage auflegt, nur sich selbst frei: die Weiterleitung geht weiter.

Ein verschwundener Anrufer. Wenn eine Seite eines Anrufs aufhört, Ton zu senden, während die andere Seite immer noch sendet (ein Telefon, das den Strom oder das Signal verloren hat, sendet kein Auflegen), wird der Anruf mit dem Grund *der Anrufers Ton hat aufgehört* (oder wessen es war) beendet, im Anrufverlauf und im call.ended-Ereignis, das CAD hört (cause, endedBy). Eine Seite auf Halten, Faxen oder die gesagt hat, dass sie nichts sendet (ein Lautsprecher für die Ansage), wird nie auf diese Weise beendet. Stille sendet immer noch Pakete, also hält ein Anrufer, der nicht sprechen kann, den Anruf auf.

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.

Anrufer-Video und -Fotos. Bei einem 911-Anruf erstellt Sende dem Anrufer einen Video-Link einen Link, der nur für diesen Anruf geöffnet wird: per Text an den Anrufer von der unter Texten Sie den Link von angegebenen Nummer oder vorgetragen. Wenn dies nicht möglich ist (keine Textnummer ist angegeben oder der Anrufer hat keine Nummer angegeben), teilt die Anzeige und die API's problem mit, warum. Der Anrufer öffnet den Link im Browser seines Telefons (keine App): Teilen Sie Live-Video sendet die Live-Aufnahme der Rückkamera (WebRTC, WHIP: RFC 9725) und Sende Fotos oder Videos sendet bereits aufgenommene Dateien, einschließlich Dashcam- und Action-Cam-Dateien. Während des Anrufs:

Video wird nie von den Anrufen genommen: Jedes Live-Video hat seine eigenen Ports, dieser Server nimmt höchstens Live-Videos gleichzeitig davon (4, sofern nicht angegeben), jedes wird aufgefordert, unter Video-Bitrate zu bleiben, und Video, das für zehn Sekunden unterbrochen wird, wird beendet. Die Telefone der Anrufer müssen diesen Server unter Link-Adresse (https) und dessen Medien-Ports (UDP) erreichen. Dateien werden Dateien und Expositionsprotokoll aufbewahren Tage (leer: bis zur Löschung) aufbewahrt, abgesehen von festgehaltenen Anrufen.

Aufzeichnen des Live-Videos. Mit Aufzeichnen des Live-Videos der Anrufer aktiviert, wird das Live-Video des Anrufers zusammen mit den Fotos und Clips als eine Datei pro Videoabschnitt aufgezeichnet: dieselben Bilder, die das Telefon gesendet hat, nicht konvertiert, in einer IVF-Datei (H.264 oder VP8 mit der eigenen Zeit jedes Bildes), gehasht, wie es geschrieben wird. Ein durch einen verlorenen Paket beschädigtes Bild wird weggelassen, anstatt es fehlerhaft zu speichern, und das Telefon wird aufgefordert, ein vollständiges Bild zu senden, um fortzufahren. Enthüllen spielt es ab (aus einer Kopie in WebM oder MP4, die ffmpeg erstellt, dieselben Bilder in einem anderen Container; ohne ffmpeg nur die ursprüngliche Datei herunterladen); Ursprüngliche Datei herunterladen gibt die Datei aus, die der Hash ist.

In CAD. Die an CAD gesendete EIDO (NENA-STA-021) benennt jedes Foto, jeden Clip und jede Aufzeichnung sowie das Live-Video, solange es läuft, als zusätzliche Daten per Verweis: urlPurpose ist caller-photo, caller-video, caller-video-recording oder caller-video-live und additionalDataByReferenceUrl ist die Datei unter /m/{viewToken}/{n} oder das Live-Video unter /whep/{viewToken}. BitVoice sendet CAD die EIDO erneut, wenn eine Datei ankommt oder Live-Video startet oder stoppt. Die Links verwenden Link-Adresse (oder die öffentliche Adresse dieses Servers); ohne eine davon benennt die EIDO keine Medien. Jeder Abruf über sie wird im Expositionsprotokoll aufgezeichnet. Der Ereignisstrom sagt dasselbe (GET /api/events: call.media, call.video). Die EIDOs von BitVoice werden gegen das veröffentlichte EIDO-Schema von NENA überprüft.

Links, die nicht existieren, werden nicht schneller als Anmeldungen geraten: Eine Adresse, die weiterhin versucht, wird für eine Weile abgewiesen. Dateien von Anrufern werden in einer Sandbox bereitgestellt, niemals als Seite dieses Servers.

Exposition. Jede Anzeige eines Live-Videos und jede Öffnung eines Fotos oder Clips wird unter Exposition bei 911-Anrufen gezählt: Wer, wie oft, über wie viele Anrufe. Es dient Supervisoren und dem Wellness-Programm des Zentrums.

Video, das ein Telefon in dem 911-Anruf selbst sendet (SIP-Video über das ESInet), kann auf die gleiche Weise angesehen werden: Ansehen nimmt es als Quelle, wenn kein Link-Video live ist.

Anrufe mit nur einer Nummer. Ein 911-Anruf, der eine Rückrufnummer und keinen Standort (von einem CAMA-Trunk oder einem ESInet-Anruf, dessen Standort nicht übermittelt wurde) bringt, kann abgefragt werden: Geben Sie Standortabfrage (ALI) die Adresse der HELD-Schnittstelle Ihres ALI-Datenbestands oder Standortservers (RFC 5985, wie in RFC 6155 angegeben) an. BitVoice fragt ohne den Anruf zu behindern ab, und der Standort erscheint im Anruf, wenn die Antwort eintrifft; der Anruf teilt mit, wenn die Abfrage fehlgeschlagen ist und warum.

Der legacy-ALI-Link. Ohne einen HELD-Server kann BitVoice einen ALI-Controller oder den Datenlink der ALI-Datenbank auf die alte Weise ansprechen: Es sendet eine Anfrage und liest die Antwort als Text über das Netzwerk (ALI-Link-Adresse Host:Port) oder aus einer Seriellen Schnittstelle (serial:/dev/ttyUSB0?baud=9600&parity=none, mit bits und stop auch; ein USB-Seriell-Adapter funktioniert; unter Linux und macOS, nicht jedoch unter Windows: dort verwenden Sie einen Seriell-zu-Netzwerk-Konverter und dessen Adresse). Anfrage ist das zu sendende: {ani10} die zehnstellige Rückrufnummer, {ani7} die letzten sieben, {pos2} die Position,  STX und  ETX ({ani10} wenn leer). Die Antwort wird bis zum ETX gelesen. ALI-Layouts unterscheiden sich zwischen Anbietern und Bundesstaaten, daher platzieren Sie jedes Feld: seine Zeile, seine Spalte und seine Länge (0: bis zum Ende der Zeile), aus einer Ausgabe eines ALI-Bildschirms; Straße (ganze Zeile) teilt eine Straßenzeile in ihre Teile auf, oder platzieren Sie die Teile einzeln. Fügen Sie eine Beispiel-Aufzeichnung hinzu und Lesen Sie die Beispiel-Aufzeichnung, um die Zeilen mit einem Spaltenraster und was jedes Feld liest, zu sehen; Anfragen fragt den Link selbst nach einer Nummer. Die Adresse und Position der Aufzeichnung werden zur Standortangabe des Anrufs, der Name zur Anrufername und die Klasse des Dienstes wird im Anruf angezeigt. Protokolle, die kein Anfrage- und Text-Antwort-Protokoll sind (PAM, E2 und andere Hersteller-eigene), werden nicht unterstützt: sie benötigen ein Gateway.

ALI-Überlauf über eine Serielle Schnittstelle. ALI-Überlauf zu nimmt auch eine Serielle Schnittstelle (serial:/dev/ttyS0?baud=9600), für ein CAD, das den Überlauf aus einem Seriellen Kabel liest.

Die Karte. Unter Karte in den 911-Einstellungen geben Sie BitVoice seine Kartenkacheln: eine .mbtiles-Datei von Rasterkacheln (PNG, JPEG oder WebP) auf diesem Server, für eine Karte, die ohne Internet funktioniert (Ihr GIS-Team, TileMill, gdal2tiles oder ein Kachelanbieter erstellt eine für Ihr Gebiet), oder einen Kachelservice mit {z}, {x} und {y} in seiner Adresse (Ihrer Grafschaft oder ein kommerzieller: beachten Sie dessen Bedingungen; die öffentlichen OpenStreetMap-Server sind nicht für diesen Zweck gedacht). Auf jeden Fall holen die Browser der Anrufer die Kacheln von BitVoice: es liest die Datei oder holt von dem Kachelservice und behält die letzten Kacheln im Speicher. Die gleiche Karte zeigt Radiopositionen auf der Radiokonsole an. Vektor-Kacheln werden nicht unterstützt.

Das i3-Log speichert die NENA-i3-Ereignisse jedes Anrufs (Anrufbeginn, Antwort, Standort, EIDO gesendet), eine Datei pro Tag. Antwortzeiten zeigt, wie viele Anrufe innerhalb Ihres Ziels beantwortet wurden (NENA: 90% innerhalb von 15 Sekunden, 95% innerhalb von 20), die aufgegebenen Anrufe und den Durchschnittswert jedes Anrufnehmers. Eine Zeile pro Tag (CSV) lädt die Zählungen herunter, die staatliche 911-Büros normalerweise anfordern (Anrufe, beantwortet, aufgegeben, innerhalb des Ziels und innerhalb von 20 Sekunden, Durchschnitt und längste Wartezeit) für die ausgewählten Tage; Eine Zeile pro Anruf (CSV) listet jeden 911-Anruf mit dem Zeitpunkt, an dem er beantwortet wurde, von wem und ob es ein Textanruf war. Jeder Staat hat sein eigenes Formular: legen Sie Ihres unter Berichts-Layouts aus. Ein Textanruf, der auf diesem Bildschirm oder durch ein CAD entgegengenommen wird, zählt unter der Person, die ihn entgegengenommen hat; ein Anruf, den niemand vor dem Anrufer aufgegeben hat, zählt als aufgegeben.

Berichts-Layouts. Neues Berichts-Layout legt einen Bericht so aus, wie Ihr Staat oder Ihre Grafschaft es hat: was jede Zeile ist (ein Tag, eine Woche, ein Monat, eine Stunde des Tages, ein Anrufnehmer oder eine Zeile für alle), eine Gesamtzeile und die Spalten, in der Reihenfolge, jede mit ihrem eigenen Kopf, wenn das Formular es anders bezeichnet: Anrufe, beantwortet, aufgegeben (eine Zählung oder ein Anteil), beantwortet innerhalb von so vielen Sekunden (eine Zählung oder ein Anteil; die Sekunden sind Ihre, also 10 und 20 für ein Formular und 15 und 40 für ein anderes), beantwortet nach mehr als so vielen Sekunden, die durchschnittliche und längste Wartezeit, die Zeit, innerhalb derer 90% beantwortet wurden, die durchschnittliche Anrufdauer und Textanrufe (TTY, Echtzeit-Text, Text an 911). Eine Wartezeit zählt von der Ankunft des Anrufs bis zur Antwort eines Anrufnehmers. Wählen Sie ein Layout und ein Datum und Führen Sie es aus, um es hier zu lesen, Tabellenblatt (CSV), um es herunterzuladen, oder Seite zum Drucken für eine einfache Seite zum Drucken oder Speichern als PDF. Layouts werden mit den Einstellungen gespeichert, daher gehen sie mit einer Sicherung und in Git.

TTY-Anrufe. Gehörlose und schwerhörige Anrufer können 911 mit einem TTY (einem Texttelefon, Baudot mit 45,45 Bit/s) anrufen. BitVoice hört auf jedem 911-Anruf auf ein TTY, vom ersten Moment an: was der Anrufer tippt, erscheint auf dem Anruf, während er tippt, unter Text, mit einer Pause oder einer neuen Zeile, die eine neue Zeile beginnt. Ein stummer Anruf kann ein TTY sein, das auf Sie wartet: sobald Sie antworten, sendet TTY-Antwort Text, auch bevor irgendetwas hereingekommen ist. Tippen Sie die Antwort und drücken Sie Senden: sie geht an den Anrufer als TTY-Töne (die Stimme des Anrufnehmers wird stummgeschaltet, während sie abgespielt wird, da TTYs abwechselnd senden), in Großbuchstaben, und TTY-Etikette gilt: beenden Sie jede Runde mit GA ("weiter"), und SK beim Abschließen. Zeichen, die ein TTY nicht anzeigen kann, werden weggelassen. Sprache, Musik und Touch-Töne werden nie als TTY-Text erkannt: ein Zeichen zählt nur, wenn jedes Bit davon ein sauberes TTY-Signal ist. Das Gespräch wird mit dem Anruf in der Anrufhistorie und im i3-Log (ein MessageLogEvent pro Runde) gespeichert. Entfernen Sie das Häkchen bei TTYs auf 911-Anrufen hören in den 911-Einstellungen, um das Hören zu stoppen.

Weiterleitungen. Ein 911-Anruf, der an eine andere PSAP weitergeleitet wird, behält seine Position: die PIDF-LO geht mit dem Anruf.

Echtzeit-Text (RTT). Ein Telefon, das Text neben seiner Stimme sendet (RFC 4103, wie VoLTE-Telefone und NG911-Anrufe), erhält seine Textantwort von BitVoice selbst, da Desktop-Telefone keinen Text anzeigen: Jedes Zeichen erscheint auf dem Anruf, während der Anrufer tippt, und Ihre Antwort wird als Text zurückgesendet. Verlorene Pakete werden durch die Redundanz von RTT wiederhergestellt; verlorener Text, der über diese Redundanz hinausgeht, wird als angezeigt.

Text an 911. Ein Text-Kontrollzentrum (TCC) sendet Texte an die PSAP als eine Sitzung ohne Stimme (MSRP, RFC 4975, über den ESInet-Stamm). BitVoice antwortet darauf und wartet auf 911-Anrufe, die als Text an 911 markiert sind, mit den Texten, die eingegangen sind; kein Telefon klingelt. Diese Text übernehmen macht Sie zum Anrufannahmezentrum (die Antwortzeit wird dann gezählt und CAD erhält die ALI-Spills und die EIDO dann); antworten Sie im Feld unter dem Gespräch und Gespräch beenden, wenn Sie fertig sind. Das Schließen der Sitzung durch das TCC beendet es auch. Ein SIP-MESSAGE, der innerhalb eines 911-Anrufs gesendet wird, wird auf die gleiche Weise als Text des Anrufers behandelt und Antworten werden per SIP-MESSAGE gesendet. Texte werden nur von Stämmen akzeptiert, die als Vom ESInet markiert sind.

Ein TCC, das die Sitzung über TLS anbietet (TCP/TLS/MSRP, msrps: Pfade, RFC 4975 Abschnitt 14), erhält es über TLS, mit dem Zertifikat dieses Servers (Einstellungen › Zertifikate; ohne ein solches Zertifikat wird das Angebot abgelehnt). Das Zertifikat des TCC muss das sein, das sein Angebot nennt (a=fingerprint, SHA-256); wenn es keines nennt, muss es den PSAP-Credentialing-Agency-Wurzeln zugeordnet werden, die unter Core-Diensten festgelegt sind, wenn solche festgelegt sind. Die Antwort von BitVoice nennt sein eigenes Zertifikat auf die gleiche Weise.

Das gesamte Gespräch, egal wie es hereinkam, wird mit dem Anruf in der Anrufhistorie und im i3-Log aufbewahrt.

Was hier noch nicht vorhanden ist: das Weiterleiten einer Textsitzung durch den NG911-Kern (der ESRP leitet die Stimme weiter; eine Textsitzung wird dort beantwortet, wo sie ankommt); die eigenen Abonnements des EIDO-Übertragungsstandards (NENA-STA-024 WebSocket): BitVoice sendet EIDOs an eine Adresse.

Kapitel 78

Funk-Dispatch-Konsole

Im Webinterface: /radio

Dispatchers sprechen über Funkkanäle von demselben Headset wie ihre Telefonanrufe. BitVoice erreicht die Funkgeräte über Funk-über-IP-(RoIP)-Gateways; das Funknetz selbst bleibt bei dem, der es betreibt.

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

Einrichten. Wählen Sie unter Konsole einrichten eine Konsolenummer (800, sagen wir) und fügen Sie jeden Kanal hinzu: seinen Namen, den Port auf diesem Server, an den das Gateway den Kanalton sendet, und die Adresse und den Port des Gateways für den ausgehenden Ton. Auf dem Gateway: RTP, G.711 µ-law, an die Adresse und den Port dieses Servers; schalten Sie das Funkgerät auf Sprache (VOX). Jeder Kanal verwendet seinen Port und den nächsten, außerhalb des Bereichs, den Telefonanrufe verwenden.

Beitreten. Ein Dispatcher wählt die Konsolenummer von seinem Schreibtischtelefon oder drückt Beitreten mit dem Browser-Telefon. Er hört dann den gesamten Kanalverkehr gemischt; Hören / Stumm auf einem Kanal nimmt ihn aus seinem Headset. Die Lampe auf einem Kanal leuchtet, während er empfängt.

Sprechen. Halten Sie die Halten, um zu sprechen-Taste eines Kanals (oder fokussieren Sie ihn und halten die Leertaste): Ihre Stimme geht nur an diesen Kanal, und der Kanal zeigt TX mit Ihrer Erweiterung an. Ein Dispatcher spricht auf einem Kanal gleichzeitig; die Taste ist für die anderen grau, während jemand spricht. Nichts wird an einen Kanal gesendet, während niemand spricht, daher wird ein sprachgesteuertes Funkgerät nie auf Senden gehalten.

Verbinden. Drücken Sie Verbinden auf einem Kanal, dann Hier verbinden auf einem anderen: Die beiden hören einander (ein Feuerkanal und ein gegenseitiger-Hilfe-Kanal, sagen wir) bis Sie Trennen drücken.

P25-Sprechgruppen. Ein Kanal kann auch eine P25-Sprechgruppe sein, die direkt über das ISSI (TIA-102.BACA, die Schnittstelle zwischen P25-Subsystemen; mit Senden des CSSI-Konsole-PTT-Worts aktiviert, fügt BitVoice dem Konsolesubsystem das Wort zu jedem Antrag hinzu) beitreten wird. Wählen Sie Eine P25-Sprechgruppe (ISSI), geben Sie die Sprechgruppen-ID, die SIP-Adresse und die ID des RFSS, das die Sprechgruppe beheimatet, und einen Port für seine Stimme an. Unter Diese Konsole im P25-System, geben Sie die WACN und die System-ID, die RFSS-ID, die Ihrem P25-Administrator diese Konsole gegeben hat, die Geräte-ID, die Dispatchers übertragen, und den SIP-Port, den das ISSI hier verwendet; das P25-System muss diesen Server als RFSS mit dieser Adresse kennen. Das Kacheln zeigt P25 an, während der Gruppenanruf aktiv ist (P25 nicht verfügbar und der Grund, wenn er nicht aktiv ist), und die Geräte-ID des Funkgeräts, das spricht, in rot mit NOTFALL, wenn es ein Notfallanruf ist. Halten, um zu sprechen fragt das Heim-RFSS nach dem Kanal (Kanal anfordern...); Ihre Stimme geht, sobald es den Kanal gewährt, und wenn es ablehnt (jemand mit höherer Priorität hat ihn), sagt das Kacheln das an. Die Stimme wird in BitVoice in und aus IMBE, dem P25-Vocoder, umgewandelt.

Verschlüsselte Funkgruppen. Unter Verschlüsselungsschlüssel fügen Sie jeden Verkehrsschlüssel hinzu, den Ihr Funkgeschäft Ihnen gibt: einen Namen, den Algorithmus (AES-256, DES-OFB oder dreifach DES), die Schlüssel-ID und den Schlüssel selbst in Hex (TIA-102.AAAD). Ein Schlüssel wird nie wieder angezeigt, nachdem er gespeichert wurde, nicht einmal für Administratoren, und das Leerlassen des Feldes bewahrt ihn. Die Konsole hört eine verschlüsselte Übertragung, wenn sie den Schlüssel mit dem Algorithmus und der Schlüssel-ID hat: die Kachel zeigt ein Schloss und den Algorithmus neben der sprechenden Einheit. Ohne den Schlüssel wird die Übertragung stummgeschaltet, wird nie als Rauschen abgespielt und die Kachel sagt kein Schlüssel: stummgeschaltet. Um verschlüsselt auf einer Funkgruppe zu senden, wählen Sie einen Schlüssel unter Senden für diesen Kanal; die Kachel zeigt dann TX AES-256 (oder den Algorithmus, den Sie gewählt haben). Eine vollständige Konfigurationsexportierung (Einstellungen, Sicherung eines Administrators) enthält die Schlüssel, daher sollten Sie diese Dateien so sicher aufbewahren wie die Schlüssel.

Private Anrufe. Mit der Konsole in einem P25-System ruft Ein Funkgerät anrufen in Ihrer Positionsleiste ein Funkgerät über seine Geräte-ID an (schalten Sie Notfall ein, um es als Notfall anzurufen). Der Anruf wird zu einer eigenen Kachel, Privater Anruf: Gerät 197, mit Halten, um zu sprechen wie bei jedem Kanal und Auflegen. Funkgeräte können die Konsole auch anrufen, unter der Geräte-ID, mit der die Dispatchers senden: der Anruf erscheint als Kachel mit angefangen (in Rot mit NOTFALL, wenn das Funkgerät als Notfall angerufen wurde), jeder Dispatcher hört es und es endet, wenn eine der beiden Seiten auflegt. Unter Private Anrufe in den P25-Einstellungen der Konsole geben Sie die SIP-Adresse und die ID des RFSS ein, der die Heimat der Funkgeräte ist (leer verwendet die Heimat der ersten Funkgruppe), und, wenn private Anrufe verschlüsselt werden sollen, den Schlüssel, mit dem sie gesendet werden sollen.

Alarmtöne. Einen Alarmton senden... auf einem Kanal sendet einen von: Alarm 1, einen konstanten Ton von 1000 Hz für 3 Sekunden; Alarm 2, ein Warble zwischen 1000 und 1500 Hz; Alarm 3, 1000-Hz-Impulse; oder ein kurzes Piepsen. Der Ton hält den Kanal, während er abgespielt wird (die Kachel zeigt Ton und Ihre Erweiterung), jeder Dispatcher, der den Kanal überwacht, hört ihn, und auf einer P25-Funkgruppe wird er einmal gesendet, nachdem die Heimat-RFSS den Kanal freigegeben hat.

Notfälle. Wenn ein Funkgerät als Notfall sendet (seine Notfalltaste), wird seine Kachel rot mit NOTFALL und der Geräte-ID, der Server-Log vermerkt es und CAD wird sofort informiert (siehe unten). Der Notfall bleibt auf jeder Konsole nach dem Senden des Funkgeräts bestehen, bis ein Dispatcher Bestätigen drückt: die Kachel sagt dann, wer ihn bestätigt hat und wann, und CAD erhält ein radio.emergency.ack-Ereignis. Das Bestätigen benennt die angezeigte Einheit: wenn ein anderer Einheitsnotfall einen Moment vorher ersetzt wurde, lehnt BitVoice ab und die Kachel zeigt die neue, sodass ein zweiter Notfall nie versehentlich stillgelegt wird. CAD kann durch die API dasselbe tun: POST /api/radio/channels/{id}/ack mit {"unit": "bee07.1d5.00044d"} (oder der Funkgeräte-ID, "1101") antwortet 409, wenn der Notfall des Kanals jetzt einer anderen Einheit ist; ohne einen Textkörper bestätigt es die aktuelle Einheit.

Simulselect. Um auf mehreren Kanälen gleichzeitig etwas zu sagen, aktivieren Sie Auswählen auf jedem Kanal, dann halten Sie Sprechen auf N Kanälen in der Leiste über den Kacheln. Es ist alles oder nichts: wenn ein anderer Dispatcher auf einem von ihnen spricht, wird keiner aktiviert und Sie werden informiert, welcher.

Funkgerätepositionen. Funkgeräte melden ihre Position über die Daten-Seite des Funknetzwerks, nicht über die Sprach-Seite, der die Konsole beitritt: P25-Ortungsdienst, Motorola-LRRP oder einen eigenen Dienst eines Anbieters, der von dem Daten- oder AVL-Gateway des Funkgeschäfts gesammelt wird. Konfigurieren Sie das Gateway (oder ein kleines Skript daneben), um jeden Bericht an BitVoice mit einem API-Token zu senden: POST /api/radio/locations mit {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, oder eine Liste von bis zu 500 (Geschwindigkeit in km/h, Richtung in Grad, Genauigkeit in Metern; alle drei und die Zeit sind optional). Funkgerätepositionen auf der Konsole listen dann jede letzte Position eines Funkgeräts mit seinem Namen auf, und CAD erhält jede Position als radio.location-Ereignis. BitVoice decodiert LRRP oder den P25-Ortungsdienst selbst nicht.

Funkgerätenamen. Unter Funkgerätenamen benennen Sie Funkgeräte nach ihrer P25-Geräte-ID (1205 ist "Engine 5", sagen wir): die Kachel zeigt den Namen neben der Geräte-ID, während es spricht, und der Funkgeräte-Log und die Ereignisse von CAD enthalten es.

Funkgeräte-Log und Aufzeichnung. Aktivieren Sie Jede Übertragung aufzeichnen unter Aufzeichnung und CAD: jede Übertragung auf jedem Kanal, gehört oder gesendet, wird als Aufzeichnung mit einer Zeile im Funkgeräte-Log gespeichert: wann, der Kanal, wer (die Geräte-ID des Funkgeräts oder die Erweiterung des Dispatchers), wie lange und ob es ein Notfall, ein Alarmton, verschlüsselt oder ein privater Anruf war. Eine gehörte Übertragung beginnt mit dem ersten Wort und endet 1,5 Sekunden nach dem letzten Wort. Suchen Sie ein Gerät, einen Dispatcher oder einen Kanal mit der Suchleiste und drücken Sie Wiedergabe, um zu hören. Aufzeichnungen werden so lange aufbewahrt, wie Anrufaufzeichnungen (Einstellungen, Aufzeichnung).

Funkdaten an CAD. Geben Sie die Adresse von CAD unter Funkereignisse an CAD senden ein (und ein gemeinsames Geheimnis, wenn CAD eines wünscht; es wird als Bearer-Token gesendet und nicht mehr angezeigt). BitVoice sendet dann jedes Ereignis (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission und radio.location) als JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit wenn ein Funkgerät auf einem Kanal zu sprechen beginnt (seine Unit-ID, WACN, System, den Kanal, Notfall, Verschlüsselung), radio.emergency für einen Notfall (dreimal versucht, wenn CAD nicht antwortet) und radio.transmission für jede abgeschlossene Übertragung, wie sie im Funklog erscheint. CAD kann auch das Log selbst mit GET /api/radio/log lesen (Filter: channel, q, since, until). Ein CAD, das down ist, behindert die Konsole nie.

Noch nicht hier: P25-Phase-2-(TDMA)-Sprachübertragung in ihrem eigenen Halbratenvocoder. Ein Phase-2-System funktioniert mit der Konsole, wenn seine ISSI-Sprechgruppen volle Rate (Phase 1) übertragen oder sein Transcoder sie umwandelt, was häufig vorkommt: fragen Sie Ihren P25-Administrator. Eine Sprechgruppe, deren Sprache in Blöcken ankommt, die diese Konsole nicht decodiert (Halbratensprache, die uncodiert gesendet wird, wahrscheinlich), zeigt Stumm hier auf ihrer Kachel, während ein Funkgerät spricht, damit niemand die Stille für einen stillen Kanal hält. Die Decodierung benötigt zwei Dinge, die BitVoice nicht hat: den Halbratenvocoder (AMBE+2, patentiert bis 2028: eine Lizenz vom Eigentümer oder ein lizenzierter Hardwarevocoder-Chip) und das ISSI-Halbraten-Sprachblockformat (TIA-102.BACA-B, verkauft von TIA, nicht öffentlich).

Kapitel 79

**NG911-Kern-Dienste (ECRF, ESRP, LVF, BCF, LIS, Protokollierung)**

Im Webinterface: /core

Für eine staatliche oder regionale 911-Behörde, die ihren eigenen NG911-Kern betreibt: BitVoice antwortet als ECRF auf LoST und leitet jeden 911-Anruf als ESRP an die PSAP weiter, die dem Anrufer dient.

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

Dienstbereiche. Exportieren Sie Ihre Grenzen aus GIS als GeoJSON-Polygone (PSAP-Grenzen für urn:service:sos; Polizei-, Feuer- oder Rettungsbereiche für urn:service:sos.police und die anderen) und laden Sie sie auf Core-Dienste hoch. Die Eigenschaften name, uri und number eines Polygons werden gelesen; geben Sie eine Standard-PSAP-URI für diejenigen ohne eine solche an. Bearbeiten Sie einen Bereich, um die Städte oder Grafschaften hinzuzufügen, die er bedient, für Anrufer, deren Standort eine zivile Adresse ist. Testen Sie einen Ort zeigt, welcher Bereich einen Standort oder eine Stadt beantwortet, wie eine LoST-Abfrage.

Der ECRF. Schalten Sie LoST-Abfragen beantworten ein und listen Sie die Adressen auf, die fragen dürfen (Ihr ESInet): andere Elemente senden findService an /lost (RFC 5222) und erhalten die PSAP-URI. Ein bestimmter Dienst (sos.police) wird aus seinen eigenen Bereichen zuerst und dann aus sos beantwortet. Ein Ort, den keiner Ihrer Bereiche abdeckt, kann zum Wald-Führer (RFC 5582: das nationale Verzeichnis von ECRFs) gehen: eine rekursive Abfrage wird auf behalf des Fragenden gestellt und die Antwort zurückgegeben (beide Server in der Antwortpfad aufgelistet), jede andere Abfrage wird zu ihm umgeleitet und eine Abfrage, die bereits durch diesen ECRF gegangen ist, wird als Schleife abgelehnt.

Der ESRP. Listen Sie die PSAPs auf: Jede mit ihrer URI (wie sie von den Gebieten genannt wird), dem Trunk, der sie erreicht, und ihrem Überlauf-PSAP, und wählen Sie den Standard-PSAP. Senden Sie dann die eingehenden Notrufe des ESInet an ESRP in Anrufweiterleitung (Kapitel 8). Jeder Anruf geht zum PSAP für seinen Standort (von diesem Server aus, oder einem externen ECRF via LoST), mit seinem Standort und dem Dienst, den er angefordert hat, weitergeleitet; wenn das PSAP den Anruf nicht annimmt, an sein Überlauf-PSAP; ohne Standort, oder von einem Ort, den kein Gebiet abdeckt, an den Standard. Jede Entscheidung ist im i3-Log auf Notrufe (Kapitel 77) zu finden.

Richtlinien-Regeln. Sobald der ECRF eine PSAP ausgewählt hat, werden die Regeln unter Richtlinien-Regeln in der Reihenfolge überprüft und die erste Regel, deren Bedingungen alle erfüllt sind, entscheidet: senden Sie den Anruf an eine andere PSAP oder lehnen Sie ihn als beschäftigt ab. Eine Regel kann den Dienst (nur Feueranrufe, sagen wir), die PSAP, die der ECRF ausgewählt hat, einen Zeitplan (während das Nacht-Schicht-Zentrum geschlossen ist), Anrufe ohne Standort, Anrufe, die der BCF als verdächtig markiert hat, und den Stamm, über den der Anruf hereinkam, überprüfen. Jede Entscheidung ist im i3-Log als RouteLogEvent aufgeführt, der die Regel nennt.

Grenzkontrolle (BCF). Mit Überprüfe Anrufe aus dem ESInet aktiviert, wird jeder Anruf von einem ESInet-Trunk überprüft: Adressen unter Immer ablehnen werden abgelehnt, und auch eine Adresse, die mehr Anrufe pro Minute startet oder gleichzeitig hält, als erlaubt (ein Telefondienst-Verweigerungsangriff sendet Fluten von Anrufen von wenigen Quellen). Abgelehnte Anrufe erhalten 503 mit Retry-After. Aktivieren Sie Lassen Sie den Anruf mit dem Verdacht durch , um solche Anrufe stattdessen zu senden und eine Richtlinienregel entscheiden zu lassen (an ein Zentrum, das sie filtert, oder abgelehnt); ein echter Anrufer in einem Flut ist dann nicht verloren. Grenzkontrolle: Letzte listet ab, was abgelehnt oder markiert wurde. Überprüfe STIR/SHAKEN-Signaturen überprüft die signierte Anruferkennung (den Identity-Header) jedes Anrufs, der eine solche enthält, gegen die STI-Wurzeln, die unter Anruferfilterung in Einstellungen festgelegt sind: Ein Anruf, dessen Signatur fehlschlägt, wird markiert und als verdächtig gekennzeichnet, für eine Richtlinienregel, um ihn woanders hinzusenden, und wird in der BCF-Protokollliste aufgeführt; ein 911-Anruf wird niemals abgelehnt, und unsignierte Anrufe (die meisten heute) werden ignoriert. Jeder Anruf verlässt BitVoice als neue Anfrage seiner eigenen (BitVoice ist ein Back-to-Back-Agent), die nur die Header und Körper enthält, die BitVoice versteht und weiterleitet: den Standort, die zusätzlichen Daten und die Sitzung. Überprüfe Medien überprüft jedes RTP-Paket eines ESInet-Anrufs, bevor es verwendet oder weitergeleitet wird: Pakete von einer Adresse, die nicht derjenigen entspricht, die der Anrufsdienst-SDP angegeben hat, mit einem Payload-Typ, der nicht im Angebot genannt wurde, mit Headerlängen (CSRCs, Erweiterung, Padding), die nicht zum Paket passen, größer als Größtes Paket (1.500 Byte, wenn leer) oder nach Pakete pro Sekunde (150, wenn leer; G.711 bei 20 ms sendet 50) werden abgelehnt und gezählt. Das erste von jedem Typ, dann das 10., 100. und so weiter, wird in Grenzkontrolle: Letzte (als *Medien abgelehnt*) und in den Anmerkungen des Anrufs aufgeführt. Der Anruf wird niemals beendet, weil sein Medium nicht verfügbar ist: Der Anrufer behält die guten Pakete. Anrufe von CAMA-Trunks kommen vom lokalen Kartenprogramm und werden nicht überprüft.

Adressvalidierung (LVF). Laden Sie Ihre 911-GIS-Adressendaten im GeoJSON-Format hoch, im NENA-GIS-Datenmodell (NENA-STA-006): Straßenmitte-Linien mit FromAddr_L, ToAddr_L, Parity_L, IncMuni_L und dem Rest, und Standort-/Adresspunkte mit Add_Number, St_Name, Inc_Muni. Eine LoST-Abfrage mit validateLocation="true" erhält dann die gültigen, ungültigen und nicht überprüften Teile der Adresse in ihrer Antwort (RFC 5222), sodass Träger und Standortserver eine Adresse vor einem 911-Anruf korrigieren können. Überprüfe eine Adresse macht dasselbe hier: Ein exakter Adresspunkt ist die beste Übereinstimmung, dann ein Straßenabschnitt, dessen Bereich auf der rechten Straßenseite die Nummer enthält (ungleiche und gerade Seiten werden respektiert); Schreibweisen wie Street und St, North und N werden gleichbehandelt.

Der i3-Protokollservice. Schalten Sie Führe einen i3-Protokollservice aus: Die anderen Elemente Ihres Kerns (ESRPs, BCFs, PSAPs) senden ihre Protokollereignisse (NENA-STA-010), jedes signiert als JWS mit dem Zertifikat des Elements in seinem x5c-Header, per POST an /i3log/LogEvents von den zugelassenen Adressen. Jedes kommt als JWS im flachen JSON-Format (signiert oder unsigniert mit dem Algorithmus none, den ein Protokollservice akzeptieren kann: als nicht nachverfolgt zum PCA markiert); es wird überprüft und gespeichert, und die Antwort ist die ID des Protokollereignisses. Lesen Sie es mit GET /i3log/LogEvents/{logEventId}; listen Sie mit GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); finden Sie die IDs eines Anrufs oder eines Vorfalls mit /i3log/LogEventIds, /CallIds, /IncidentIds und /AgencyIds; und lesen Sie das Textgespräch eines Anrufs mit /i3log/Conversations?callId=. GET /i3log/Versions sagt, was dieser Dienst spricht. Empfangene Protokollereignisse listet die Ereignisse eines Tages mit dem Unterzeichner jedes auf. Jede Antwort wird gegen die veröffentlichte OpenAPI-Definition des Dienstes von NENA überprüft; der Dienst wurde noch nicht mit Elementen eines anderen Herstellers getestet.

PSAP-Zertifizierungsagentur. Fügen Sie die Root-Zertifikate der PCA unter PSAP-Zertifizierungsagentur-Roots hinzu: Ein signiertes Protokollereignis wird dann nur akzeptiert, wenn das Zertifikat des Unterzeichners zu einem davon kettenartig verknüpft ist (und nicht abgelaufen ist) und als PCA angezeigt wird. Ohne sie wird nur die Signatur überprüft, und das Ereignis wird als nicht zum PCA nachverfolgt angezeigt.

Ortssuche (LIS). Aktivieren Sie Ortssuche-Anfragen beantworten (LIS) und laden Sie eine Tabelle (CSV) mit Ortssuchen-Datensätzen hoch: eine Kopfzeile und in jeder Zeile entweder eine Nummer (die ALI-Daten, exportiert), ein Netzwerk (einen Adressbereich wie 10.20.3.0/24 oder eine einzelne Adresse: ein Gebäude, ein Stockwerk, ein VLAN, ein Wi-Fi-Netzwerk) oder eine MAC-Adresse (ein Gerät: ein Tischtelefon, ein Wandsteckdosen-Schalter), dann die Adresse als Hausnummer, Straße, Ort, Einheit, Stockwerk (oder Etage), Stadt, Bundesland, PLZ und Land, mit Breite, Länge und Radius, wenn bekannt (andere Namen, wie Telefon, Straße, PLZ, Subnetz und IP, werden auch verstanden). PSAPs, Legacy-Netzwerkgateways und Telefone fragen dann /held (HELD, RFC 5985) von den erlaubten Adressen an und erhalten ein PIDF-LO. Eine Anfrage benennt ihr Gerät durch die Telefonnummer, IP-Adresse oder MAC-Adresse (RFC 6155); eine Anfrage, die keine Angabe macht, wird für die Adresse beantwortet, von der sie stammt, wie ein LIS in einem Büro- oder Campusnetzwerk. Eine Adresse wird durch das engste Netzwerk gefunden, das sie enthält, also gewinnt ein Stockwerks-/24 über ein Campus-/16. Ein Gerät ohne Datensatz erhält HELD's locationUnknown; eine Identität einer anderen Art (eine NAI, ein Port) erhält notLocatable. Ein BitVoice-PSAP zeigt seine Ortssuche (ALI) hier hin. Suchen Sie eine Nummer, Adresse oder MAC-Adresse überprüft einen Datensatz und sagt, welches Netzwerk sie stammt. Eine erneut aufgeführte Nummer, Netzwerk oder MAC-Adresse ersetzt ihren alten Datensatz; Ersetzen Sie jeden Datensatz beginnt von vorne. Nur die erlaubten Adressen werden beantwortet: ein LIS, das für jede Adresse antwortet, die es gefragt wird, darf nicht für jeden zugänglich sein.

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:

Testanrufe bei einem PSAP. Ein BitVoice-PSAP beantwortet einen Testanruf vom ESInet (urn:service:test.sos, NENA-STA-010.3 Abschnitt 9, RFC 6881) selbst: Die Antwort gibt den Namen des PSAP, den Dienst und den Ort des Anrufs an, die ersten drei Pakete mit Ton werden zurückgesendet und dann aufgelegt. Ein zweiter Test von demselben Ort innerhalb von zwei Minuten wird abgelehnt (486), ebenso wie ein fünfter auf einmal. Ein ESRP leitet einen Testanruf wie einen echten Anruf weiter, immer noch als Test gekennzeichnet. Schalten Sie Testanrufe beantworten auf der 911-Anrufseite aus, um sie abzulehnen (404).

JWS-Algorithmen: NENA-STA-010.3 fordert EdDSA mit Ed448. Die Standardbibliothek von Go, die BitVoice für jeden kryptografischen Schritt verwendet, hat Ed25519, aber nicht Ed448, daher werden EdDSA-Signaturen mit Ed25519-Schlüsseln überprüft und ECDSA- und RSA-Signaturen werden auch akzeptiert; ein Ed448-Zertifikat wird abgelehnt.

Haben Sie gemeint. Eine Adresse, die nicht gültig ist, erhält bis zu fünf Vorschläge aus denselben Daten, jeweils mit der Angabe, warum: Eine Straße, die ein oder zwei Buchstaben entfernt ist (ein vertauschtes Buchstabenzahl wird als eines gezählt), dieselbe Straße in der nächsten Stadt oder die nächste Nummer, die die Straße hat, auf derselben Seite, wenn möglich (gerade Zahlen bleiben gerade). Verwenden füllt einen Vorschlag aus. Eine Position mit der Adresse. Geben Sie eine Breite und Länge (und den Radius der Position, wenn bekannt) mit der Adresse an: Die Position wird gegen den eigenen Adressenpunkt der Adresse überprüft, unter Berücksichtigung seines Radius und 100 m mehr (die Größe eines Grundstücks und GIS-Fehler). Die Antwort gibt den Abstand und ob die beiden übereinstimmen an, und wenn sie nicht übereinstimmen, den nächsten Adressenpunkt zur Position. Eine Adresse, die nur aus Straßenmittelpunkten bekannt ist, hat keinen Punkt, gegen den sie überprüft werden kann, und die Antwort sagt das an. LoSTs validateLocation hat keinen Platz für beides, daher erhalten Anbieter, die über LoST anfragen, nur die Überprüfung.