Podręcznik BitVoice

Otwarty system telefoniczny w jednym programie, konfigurowany całkowicie w interfejsie sieciowym: numery wewnętrzne, kolejki, sale konferencyjne, portal pracowników, organizacje hostingowe oraz ścieżka laboratoryjna bezpieczeństwa publicznego.
79 rozdziały · 63 rysunki · 46 tysiąc słów · BioDream LLC

Spis treści

  1. Część 1. Rozpoczęcie pracy
    1. 1. Rozpoczęcie pracy
    2. 2. Dojrzałość każdej części
    3. 3. Numery wewnętrzne
    4. 4. Łączenie telefonów
    5. 5. Telefony Skinny i bramy MGCP
    6. 6. Karty telefoniczne
    7. 7. Trunki
    8. 8. Trasowanie połączeń
    9. 9. Zestawy PIN
    10. 10. Wyszukiwanie ID dzwoniącego
    11. 11. Połączenia alarmowe
    12. 12. Miejsca i biurowy 911
    13. 13. Stan
    14. 14. Ustawienia
    15. 15. Ekran w Twoim języku
  2. Część 2. Gdzie trafiają połączenia
    1. 16. Przepływ połączeń
    2. 17. Grupy dzwonienia
    3. 18. Kolejki
    4. 19. Wydzwonienie wychodzące
    5. 20. Dźwięki: nagrania, języki i muzyka w trakcie oczekiwania
    6. 21. Menu (automatyczny sekretarz)
    7. 22. Katalog wybierania według nazwy
    8. 23. Wydzwonienie (DISA)
    9. 24. Boty głosowe (AudioSocket)
    10. 25. Przełączniki dziennie/nocą
    11. 26. Harmonogramy
    12. 27. Skrypty (JavaScript i Lua)
    13. 28. Recepcjonista AI, triage poczty głosowej i pytania
    14. 29. Poczta głosowa
    15. 30. Callbacki
    16. 31. Linki połączeń i połączenia ze strony internetowej
  3. Część 3. Codzienne połączenia
    1. 32. Kody funkcji, przekazywanie i szybkie numery
    2. 33. Portal pracowniczy
    3. 34. Pokoje konferencyjne
    4. 35. Pagowanie i głośniki nadawcze
    5. 36. Hot desking
    6. 37. Hotel i połączenia budzące
    7. 38. Kontakty na każdym telefonie
    8. 39. Kalendarze i tryb nie przeszkadzać
    9. 40. Aplikacje mobilne
    10. 41. Połączenia wideo
    11. 42. Faks: wysyłanie i odbieranie, maszyny faksowe i telefony analogowe
    12. 43. Skrzynka odbiorcza: czat internetowy, WhatsApp i Messenger
    13. 44. Biznesowy tekst (SMS)
    14. 45. Przekazywanie informacji
  4. Część 4. Klienci i wgląd
    1. 46. Aktywne połączenia
    2. 47. Historia połączeń
    3. 48. Osobista historia dzwoniącego
    4. 49. CRM: karty rozmówców i rejestrowanie połączeń
    5. 50. Wgląd w połączenie dla nadzorujących
    6. 51. Nagrywanie połączeń i płatności kartą
    7. 52. Zgoda na nagrywanie
    8. 53. Jakość połączenia
    9. 54. Koszty i budżety
    10. 55. Reputacja ID wywołującego i połączenia z marką
    11. 56. Ochrona przed spamem i STIR/SHAKEN
  5. Część 5. Uruchamianie BitVoice
    1. 57. Administratorzy
    2. 58. Logowanie jednokrotne
    3. 59. Katalog firmowy (Active Directory i LDAP)
    4. 60. Bezpieczeństwo
    5. 61. Zmiany, kopie zapasowe i import
    6. 62. Aktualizacje
    7. 63. Kilka serwerów jako jeden system telefoniczny
    8. 64. Gdzie przechowywane są dane (SQLite lub PostgreSQL)
    9. 65. Hostowanie innych organizacji
    10. 66. Kodeki i dźwięk
    11. 67. Microsoft Teams (Direct Routing)
    12. 68. Importuj
    13. 69. Konfiguracja jako kod
    14. 70. Zgodność z Asterisk (AMI, ARI i AGI)
    15. 71. Asystenci AI (MCP)
    16. 72. Archwium
    17. 73. Prawne zatrzymania
    18. 74. Metriki: Prometheus, OpenTelemetry, Grafana, SNMP i rekordy połączeń
    19. 75. Generator połączeń
    20. 76. Ślad SIP
  6. Część 6. Bezpieczeństwo publiczne: ścieżka laboratoryjna
    1. 77. Połączenia 911 (profil 911)
    2. 78. Konsola radiowa dyspozytorska
    3. 79. Usługi rdzenia NG911 (ECRF, ESRP, LVF, BCF, LIS, logowanie)
Część 1

Rozpoczęcie pracy

Od nowej instalacji do działającego systemu telefonicznego: numery wewnętrzne, telefony, firma telefoniczna, gdzie trafiają połączenia, połączenia awaryjne z Twoich biur, oraz jak sprawdzić, czy wszystko jest gotowe.

Rozdział 1

Rozpoczęcie pracy

W interfejsie sieciowym: /

BitVoice to kompletny system telefoniczny w jednym programie: centrala, do której telefony się logują, menu i kolejki, przez które przechodzą dzwoniący, poczta głosowa, nagrywanie, sale konferencyjne, faksy i połączenia z firmami telekomunikacyjnymi. Wszystko jest ustawione w przeglądarce, na ekranach opisanych w tej instrukcji. Nie ma pliku konfiguracyjnego do edycji i niczego więcej do zainstalowania.

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

Co potrzebne

Pierwsze uruchomienie

Uruchom BitVoice i otwórz adres, który wydrukuje (na pulpicie otworzy się przeglądarka). Interfejs sieciowy jest tylko HTTPS, również na tym komputerze. Dopóki nie zainstalujesz własnego certyfikatu (Ustawienia, Certyfikat), BitVoice używa tego, który sam wygenerował, więc przeglądarka ostrzega raz: wybierz kontynuowanie na stronie. Kreator ustawień pyta o cztery rzeczy: nazwę organizacji i kraj, hasło pierwszego administratora, pierwsze rozszerzenia i Twoją firmę telekomunikacyjną, jeśli ją masz. Kraj ustawia numery awaryjne, dźwięki, które dzwoniący słyszą, i sposób zapisu numerów telefonów.

Pierwsza godzina

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.
Rysunek 2. The first hour: five steps from a new install to a working phone system
  1. Rozszerzenia: jedno na osobę lub biurko. Każde ma numer i hasło SIP. Otwórz Rozszerzenia (rozdział 3)
  2. Telefony: podłącz telefon biurkowy, softphone lub telefon przeglądarki do każdego rozszerzenia. Otwórz Telefony (rozdział 4)
  3. Trunk: Twoje konto z firmą telekomunikacyjną, aby móc wykonywać połączenia na zewnętrzne numery i odbierać połączenia. Otwórz Trunki (rozdział 7)
  4. Routing połączeń: gdzie idą połączenia z zewnątrz (osoba, grupa dzwonienia, menu), i który trunk zewnętrzne połączenia używają. Otwórz Routing połączeń (rozdział 8)
  5. Stan mówi Ci, co jeszcze brakuje, połączenia awaryjne najpierw. Otwórz Stan (rozdział 13)

Następnie wykonaj testowe połączenie: z dowolnego telefonu wybierz *43, test echo. Słyszysz siebie, co dowodzi, że dźwięk działa w obie strony.

Instalowanie w jednej komendzie

Na serwerze Linux (Ubuntu, Debian, RHEL, Fedora, Alpine z systemd) lub Macu:

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

W systemie Windows, w PowerShell:

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

Pobiera najnowsze wydanie dla komputera, sprawdza je pod kątem sum SHA-256 wydania i podpisu BioDream (z OpenSSL 3, lub w przeciwnym razie z ssh-keygen OpenSSH, który mają Windows 10 i 11, macOS oraz Ubuntu 20.04; ssh-keygen sprawdza wydania od wersji v0.1.14), i instaluje go jako usługę, która uruchamia się sama:

Uruchom tę samą komendę ponownie, aby uaktualnić (lub użyj Aktualizacje (rozdział 62)). sh -s -- --version v0.1.5 (po rurze) wybiera wydanie; --uninstall usuwa program i usługę i zachowuje dane, --purge usuwa dane również. W systemie Windows zapisz skrypt i uruchom .\install.ps1 -Version v0.1.5, -Uninstall lub -Purge, lub usuń go w Zainstalowanych aplikacjach. Dla serwera, który jest trzymany poza internetem, skopiuj archiwum wydania i SHA256SUMS do folderu i ustaw BITVOICE_FROM na niego.

Gdzie działa

BitVoice działa na systemach Linux, macOS i Windows.

SystemJak go uruchomićGdzie są jego dane
Linux./bitvoice (lub usługa systemd w wersji)~/.config/BitVoice
macOS./bitvoice~/Library/Application Support/BitVoice
Windowskliknij dwukrotnie bitvoice.exe%APPDATA%\BitVoice

W systemie Windows, pozostaw okno otwarte podczas korzystania z BitVoice (zamknięcie go zatrzymuje BitVoice), a gdy system Windows pyta o pozwolenie na korzystanie z sieci, zezwól na sieci prywatne, aby telefony mogły się łączyć. -data umieszcza dane w dowolnym innym miejscu; -https i -sip wybierają adresy i porty; -log FILE zapisuje również wszystko, co jest drukowane, do pliku, na komputerze, na którym nikt nie obserwuje jego okna.

Porty, których używa

PortDo czego służy
5060 UDP i TCPSIP: telefony i trunki
5061 TCPSIP przez TLS (szyfrowane sygnały)
4569 UDPtrunki IAX2, tylko po ustawieniu
1720 TCPtrunki H.323, tylko po ustawieniu
2000 TCPtelefony Skinny (SCCP), tylko po włączeniu
2727 UDPbramy MGCP, tylko po włączeniu
10000–20000 UDPdźwięk połączeń (RTP), ustawiane w Ustawieniach
8443 TCPten interfejs webowy, tylko HTTPS (zwykły HTTP do niego jest przekazywany do HTTPS)

Jeśli inny system telefoniczny już używa portu 5060, BitVoice przyjmuje następny wolny port, a Health informuje o tym.

Wszystko w interfejsie webowym

Każde ustawienie ma ekran, a każdy ekran ma rozdział tutaj. Nic nie wymaga pliku konfiguracyjnego, linii komend lub innego narzędzia. Do automatyzacji te same ekrany są interfejsem API REST, a konfiguracja może być przechowywana w pliku Git (Konfiguracja jako kod (rozdział 69)), ale nigdy nie jest wymagana.

Do czego służy BitVoice

BitVoice jest przede wszystkim systemem telefonicznym dla biur i centrów kontaktowych, oraz usługą hostowaną dla dostawców: wszystko w pierwszych pięciu częściach tego podręcznika. Profil punktu odpowiedzi 911, konsola radiowa i usługi NG911 Core są oddzielnym ścieżką laboratoryjną i partnerską (Bezpieczeństwo publiczne (rozdział 77)): są wyłączone z menu, dopóki nie zostaną włączone w Ustawieniach, i nie są certyfikowane do użycia na żywo. Połączenia awaryjne z własnych telefonów nie są częścią tej ścieżki; działają na każdym systemie telefonicznym od pierwszego uruchomienia.

Znajdowanie drogi

Rozdział 2

Dojrzałość każdej części

Jak daleko każda część została udowodniona, otwarcie. Przetestowane w terenie: uruchomione przeciwko rzeczywistym systemom przez rzeczywistą sieć (Amazon EC2, internet, usługi dostawców). Sprawdzono względem odniesienia: przetestowane względem niezależnej implementacji lub danych standardu. Przetestowane oprogramowaniem: własne testy BitVoice i testy przeglądarki, ale jeszcze nie z rzeczywistym sprzętem lub kontami. Laboratorium: części związane z bezpieczeństwem publicznym, niecertyfikowane.

ObszarDojrzałośćCo na nim polega
Trunki SIP: rejestracja, połączenia przychodzące i wychodzące, identyfikacja dzwoniącego, zajętość, klawisze (RFC 4733)Przetestowane w terenieoperator komercyjny, SIP.US (konto demo, z EC2): rejestracja i połączenia wychodzące do publicznej sieci telefonicznej przez UDP i przez TLS z certyfikatem operatora; MOS 4,39, bez strat. Połączenia przychodzące z publicznej sieci telefonicznej: T38Fax (połączenia faksowe na jego numer, rejestracja przez UDP). Asterisk jako operator przez internet na EC2; MOS 4,4. Kamailio 5.7 (rejestracja z podpisem digest przez TLS, połączenia w obie strony, klawisze) i FreeSWITCH 1.11 (TLS i SRTP, połączenia w obie strony, G.722 do G.711) jako drugi koniec; MOS 4,39
Telefony biurkowe przez SIPPrzetestowane w terenieAsterisk jako telefon biurkowy przez internet. Rzeczywiste słuchawki Yealink, Poly lub Grandstream nie były jeszcze wypróbowane
Telefon przeglądarki (WebRTC)Przetestowane w tereniez zewnątrz do EC2; testy przeglądarki Chromium z dźwiękiem w obie strony
Dwa serwery, jeden PostgreSQL, tryb failoverPrzetestowane w tereniekill -9 i planowane zatrzymanie na EC2: połączenie jest kontynuowane, linia dostawcy się przenosi
Instalacja jednym poleceniemPrzetestowane w terenieUbuntu 24.04 (x86, Arm), Debian 12, Amazon Linux 2023, Windows Server 2022, Windows 11 (jako administrator i nie, w PowerShell 5.1 i 7), Ubuntu 20.04 i Fedora 42 w kontenerach, macOS 26 na Apple Silicon (dla jednej osoby i z sudo dla całego Maca w CI); powrót po ponownym uruchomieniu
PojemnośćPrzetestowane w terenie2 000 połączeń jednocześnie, bez strat, MOS 4,41, na 16-vCPU c7i.4xlarge (około 10 vCPUs zajętych); 200 jednocześnie na c7g.large, c7i.large, t4g.small, M4 i Lightsail nano. Przy 2 000: jitter 4,0 ms dla 95% połączeń, najdłuższa przerwa między pakietami 74 ms, najdłuższa pauza zbierania śmieci 4,2 ms
Migracja FreePBX (Import)Przetestowane w terenierzeczywista kopia zapasowa FreePBX 17.0.33 (70 MB) zaimportowana w całości; inne z formatów FreePBX
Transkrypcje AI, podsumowania, recepcjonistaPrzetestowane w terenierzeczywisty model przez OpenRouter
Fakty i podsumowania bez modelu językowegoPrzetestowane oprogramowaniemwymyślone połączenia 911 tylko: 23 z 43 faktów (53%) w zestawie zamkniętym, 3 fakty, których nikt nie oczekiwał; 41/41 szkoleniowe, hold-out 27/40 zimne. Nigdy nie mierzone na rzeczywistych połączeniach.
Rozmowa na ten serwer (whisper)Przetestowane w terenie na macOS i Linuxwhisper-server 1.9.5 uruchomiony przez BitVoice: na Macu i na Ubuntu na EC2 (x86-64), gdzie napisał transkrypcje połączeń na żywo i poczty głosowej w teście pola telefonu; pobieranie dla każdej platformy zbudowane i wypróbowane w CI
Archiwizacja do S3, sekrety z AWS Secrets ManagerPrzetestowane w terenierzeczywisty AWS, nasz własny SigV4
Monitorowanie SNMP i pułapkiPrzetestowane w terenienet-snmp's snmpwalk i snmptrapd
Let's EncryptPrzetestowane w tereniewystawia i odnawia certyfikat publicznej demo
Obrazy maszyn (AWS) i konfiguracja jako kodPrzetestowane w terenieobraz EC2 zbudowany przez deploy/cloud/build-images.sh z Ubuntu 24.04: każdy serwer z niego zaczyna się od nowa; deploy/terraform z OpenTofu 1.13 (utwórz, zmień, nie dryfuj, zniszcz). Obrazy Azure nie były jeszcze wypróbowane
Trunki IAX2Sprawdzone z odniesieniemAsterisk 23
Pełne ICE za NAT (klient STUN i TURN)Sprawdzone z odniesieniemagent ICE Chromium (kandydaci hosta i przekazujący), softfony JsSIP z ofertą BitVoice, coturn 4.18 i własny serwer TURN BitVoice jako przekazujący, nazwy hostów mDNS Chromium rozwiązane. Nie próbowano jeszcze z serwera za rzeczywistym routerem NAT
Ponowne uruchomienie ICE (zmiana sieci telefonu w trakcie połączenia)Sprawdzone z odniesieniemChromium ponownie uruchamiające ICE w połączeniu telefonu przeglądarki (BitVoice jako ICE-lite i jako pełny agent) i SIP.js 0.21 ponownie uruchamiające przez re-INVITE przez SIP przez WebSocket: nowe poświadczenia w obie strony, nowa para kandydatów, dźwięk co pół sekundy przez ponowne uruchomienie. Nie próbowano jeszcze na telefonie, który naprawdę przechodzi z Wi-Fi do sieci komórkowej
Historia SIP i Diversion (przekierowane połączenia)Sprawdzone z odniesieniemAsterisk 20's PJSIP w obie strony: przekierowane połączenia Asterisk odczytywane przez BitVoice, a przekierowania BitVoice odczytywane przez REDIRECTING() Asterisk z samej Historii-Info i z Diversion; wpisy RFC 7044 zachowane i rozszerzone o przekierowanie. Nie próbowano jeszcze z operatorem lub Teams wysyłającymi je
Katalog firmowy (LDAP, Active Directory)Sprawdzone z odniesieniemOpenLDAP 2.4 (StartTLS i LDAPS, 1 203 osób odczytanych przez paging ponad jego limit 1 000, grupy, logowanie) i Samba 4's Active Directory (LDAPS, paging ponad 1 000, konta wyłączone pominięte, grupy zagnieżdżone dla grup dzwonienia i ról). Nie próbowano jeszcze przeciwko kontrolerowi domeny Windows Server firmy Microsoft
ARI (Asterisk REST Interface)Sprawdzone z odniesieniemkażda operacja ARI Asterisk wywołana i jej odpowiedź sprawdzona z wymaganymi polami modelu; ari-client 2.2.0, biblioteka JavaScript Asterisk, odczyt /ari/api-docs i uruchomienie aplikacji
Wszystkie pokoje wideo (SFU, simulcast) i udostępnianie ekranuSprawdzone z odniesieniemTrzy przeglądarki Chromium w jednym pokoju, każda wysyłająca trzy rozmiary (VP8 simulcast) i odbierająca dwa pozostałe; rozmiary przełączane w kluczowych klatkach, gdy pływaki rosną i maleją. Kamery i udostępniony ekran (własne przechwytywanie ekranu Chromium) w pokoju H.264. Nie próbowano jeszcze z Firefoxem lub Safari, przez internet lub z więcej niż trzema kamerami; H.264 simulcast wybiera warstwy według kolejności przeglądarki tylko.
AGI i FastAGI (Asterisk Gateway Interface)Sprawdzone z odniesieniemkażda odpowiedź polecenia porównana z Asterisk 20.6 przez FastAGI; serwer FastAGI napisany z pyst2 uruchamiający połączenie; audio EAGI do programu. Nie próbowano jeszcze z produkcyjnym IVR
Asystenci AI przez MCPSprawdzone z odniesieniemoficjalny SDK MCP TypeScript (1.32.2) jako klient: narzędzia wymienione i wywołane z tokenem API przez Streamable HTTP (protokół 2025-11-25), a także punkt końcowy OAuth logowania się od końca do końca (odkrycie, rejestracja, PKCE, token, odświeżenie); strona wyrażania zgody w Chromium; mostek stdio przeciwko testowemu serwerowi. Nie próbowano jeszcze z Claude, ChatGPT lub innym asystentem, który potrzebuje serwera dostępnego z internetu z zaufanym certyfikatem.
Microsoft 365 i Google Workspace (kontakty i kalendarze)Przetestowane oprogramowaniemprzeciwko stand-inom Microsoft Graph (użytkownicy, kontakty organizacji, kalendarz getSchedule, token client-credentials) i Google's People API, Calendar freeBusy i JWT-bearer token, napisane z ich opublikowanych odniesień; stand-iny sprawdzają, co BitVoice wysyła (sygnatura JWT i oświadczenia, paging, treści żądań). Nie próbowano jeszcze z rzeczywistym najemcą Microsoft 365 ani domeną Google Workspace.
Ekran w 14 językachPrzetestowane oprogramowaniemkażdy kawałek tekstu, który ekran wyświetla (około 5 000, z kodu: tekst JSX, ciągi i wiadomości serwera) przetłumaczony maszynowo przez Llama 3.3 70B na 13 języków, 99% zachowanych przez kontrole (te same placeholder, adresy i kody niezmienione); niemiecki narysowany przez testy przeglądarki (logowanie, menu, wyszukiwanie, formularz, powrót do angielskiego). Nie sprawdzono przez osobę w żadnym języku.
Trunki H.323Sprawdzone z odniesieniemH323Plus 1.28 (jego simph323 odtwarzający i nagrywający pliki WAV) na EC2: połączenia w obie strony z Fast Connect i G.711, każdy koniec słyszący ton drugiego, MOS 4,39; ustawienie połączenia również z chan_ooh323 Asterisk (którego własny dźwięk jest uszkodzony w Asterisk 22)
SIP przez WebSocketSprawdzone z odniesieniemJsSIP i SIP.js
Kodeki: GSM, G.726, iLBC, MP3 hold musicSprawdzone z odniesieniemffmpeg, program referencyjny RFC 3951 i minimp3, próbka za próbką
Kodeki: G.711, G.722, G.729, Opus, SpeexSprawdzone z odniesieniemG.711 i G.722 bajt za bajtem i próbka za próbką z spandsp; dekoder G.729 próbka za próbką na wszystkich siedmiu wektorach testowych ITU (bcg729 nie jest), jego enkoder współpracujący z bcg729 przy tym samym jakości (G.729 nie wymaga, aby enkodery pasowały); pakiety Opus odkodowane przez libopus 1.6.1 i pakiety libopus odkodowane tak, jak to robi libopus; pakiety Speex i dźwięk identyczne z libspeex 1.2.1; połączenia Opus z aplikacją Android
Kodeki: AMR-NB, AMR-WBSprawdzone z odniesieniem, z znaną lukąAMR-WB odtwarza jak opencore-amr próbka za próbką, a na sekwencjach testowych TS 26.174 3GPP pasuje dokładnie do dekodera 3GPP na 167 z 198 i nigdy nie jest mierzalnie poniżej niego; enkoder AMR-NB klatka za klatką z opencore-amr, ale jego dekoder jest bliski, nie dokładny (około 31 dB od opencore). Oba pochodzą z przypiętych bibliotek goamr
Kodeki przenoszone nietknięte: G.722.1 (Siren 7), G.722.1C (Siren 14), G.719, Codec2Przetestowane oprogramowaniemwłasne testy: oferowane z ich szybkością transmisji lub trybem, odpowiedzi, pakiety w obie strony bajt za bajtem; nie przekonwertowane (nie ma bezpłatnego kodu referencyjnego, który BitVoice może dostarczyć dla G.722.1 i G.719). Nie próbowano jeszcze z rzeczywistym Polycomem lub systemem pokoju.
ISDN PRI i BRI, T1/E1Sprawdzone z odniesieniemlibpri (Asterisk's), obie strony; i na EC2 przez prawdziwy sterownik jądra DAHDI 3.4 (dwa spany połączone w jądrze, chan_dahdi Asterisk 20 jako telefon komutowany): połączenia w obie strony z numerami i nazwami, wszystkie 23 kanały jednocześnie, MOS 4,39. Nie ma jeszcze fizycznej karty ani linii
MFC-R2, E&MSprawdzone z odniesieniemOpenR2; tony MF przez własne testy. Nie próbowano jeszcze z rzeczywistą kartą ani linią
SS7 (ISUP, MTP, zestawy łączności z kilkoma łączami z przełączaniem)Sprawdzone z odniesieniemlibss7 (biblioteka chan_dahdi Asterisk), ITU i ANSI. Nie próbowano jeszcze z rzeczywistym połączeniem operatora
Faks (T.30, T.38)Przetestowane w terenieoperator faksu, T38Fax (bezpłatna wersja próbna, z EC2): BitVoice wysyłający faks przez publiczną sieć telefoniczną na swój numer i odbierający go, oba przez T.38 (2 strony, 14 400 bit/s, strony dotarły nietknięte; rejestracja z nazwą użytkownika i hasłem); i przechodzący faks między faksowaniem na bramie (Asterisk z spandsp, zastępującym jeden) i T38Fax, na zewnątrz i z powrotem, 2 strony przy 14 400 bit/s w obie strony: raz wszystko na G.711 (bramka odmawiająca T.38) i raz przełączona na T.38 na obu stronach. spandsp (przez Asterisk 20) na EC2: odbieranie i wysyłanie przez T.38 z korekcją błędów, a także przechodzący faksy między dwiema innymi maszynami przez T.38 i G.711. Nie próbowano jeszcze z bramką faksową sprzętową, a T38Fax nigdy nie prosił o T.38 sam, więc przełącznik odmówił przez bramkę
Konfigurowanie: Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel, Sangoma, Algo, CyberDataPrzetestowane oprogramowaniemformaty udokumentowane przez dostawców; nie na rzeczywistych słuchawkach
Telefony Skinny (SCCP), bramki MGCPSprawdzone z odniesieniemSkinny: telefony z biblioteki open-source mwicat/sccp, każda wiadomość odczytana przez dissektor Wireshark, rozmiary takie same jak chan_skinny Asterisk; MGCP: bramka MGCP Yate (ponowne uruchomienie, odpowiedzi warunkowe, potwierdzenia; nie ma portów analogowych, więc nie ma połączenia). Nie próbowano jeszcze z telefonem lub bramką Cisco
Microsoft Teams Direct RoutingPrzetestowane oprogramowaniemprzeciwko symulowanemu serwerowi Microsoft zgodnie z opublikowanymi zasadami SIP Direct Routing (OPTIONS, Contact, user=phone, certyfikat klienta, transfery, o które Teams prosi przez REFER z x-m i x-t); nie próbowano jeszcze z najemcą Teams: Microsoft nie oferuje go bezpłatnie (licencje Teams Phone)
Hotel (FIAS)Sprawdzone z odniesieniemkażdy rekord wysyłany przez BitVoice sprawdzony z opublikowaną specyfikacją FIAS 2.20.23 Oracle (rozpoczęcie łącza, rekordy łącza, posty, odpowiedzi na pobudki); własne testy. Nie próbowano jeszcze przeciwko samemu Opera
Tekstowanie, WhatsApp, Messenger, czat internetowySprawdzone z odniesieniem (Twilio, Telnyx, Bandwidth, Vonage, TextMagic, WhatsApp)teksty przez Twilio, Telnyx, Bandwidth, Vonage i TextMagic, a także teksty WhatsApp, szablony i listy szablonów, przeciwko mockom zbudowanym z opublikowanych specyfikacji OpenAPI dostawców (Stoplight Prism, odmawiając wszystkiego, czego specyfikacja nie pozwala; specyfikacja TextMagic jest taka, z której generowany jest jej klient). Vonage pokazał, że klucz należy umieścić w HTTP Basic, a nie w formularzu. SignalWire mówi API Twilio; Plivo, Flowroute, VoIP.ms i Messenger publikują nie specyfikację i są sprawdzane przeciwko stand-inom napisanym z ich dokumentacji. Nie próbowano jeszcze z żywym kontem
Karty dzwoniącego CRM, Azure Blob, Azure Key VaultSprawdzone z odniesieniemEspoCRM (rzeczywisty CRM open-source, w Docker) do kart dzwoniącego; emulator Azurite Microsoft dla uploadów Blob (SAS kontenera, odmowy); Lowkey Vault dla Key Vault z tożsamością zarządzaną. Nie próbowano jeszcze przeciwko samemu Azure ani CRM hostowanemu
Ochrona przed spamem: test robota, nieznani dzwoniący, baza spamu, *32, sugestiePrzetestowane oprogramowaniemwłasne testy BitVoice: operator dzwoniący przez SIP i naciskający klawisze (RFC 4733) w teście robota, przechodzący i nieprzechodzący go; znani, zawsze dozwolone i awaryjne dzwoniący dzwoniący jednocześnie; baza spamu przeciwko stand-inowi, który odpowiada tak, jak Twilio dokumentuje swoje Lookup z dodatkiem Nomorobo (nie próbowano jeszcze z kontem Twilio); *32 z telefonu biurkowego; sugestie z rekordów połączeń; ustawienia przez testy przeglądarki. Nie próbowano jeszcze przeciwko prawdziwym połączeniom roboczym lub płatnej bazie danych
Aplikacje iPhone i AndroidPrzetestowane w terenie (Android)Android: Google Pixel 8 (Android 16, Wi-Fi) z podpisaniem kompilacji wydania przeciwko BitVoice na EC2 z certyfikatem Let's Encrypt: sparowany przez link, dzwonił z powiadomieniem o połączeniu Android, odpowiedział z niego, audio w obie strony, połączenie utrzymane z wyłączonym ekranem i w tle (jego powiadomienie o połączeniu w toku, Hang up); bez push nie dzwoni w tle. Google Pixel 11 (Android 17) w AWS Device Farm: sparowany, dzwonił, odpowiedział, wywołał; Opus, MOS 4,1. iPhone: aplikacja (SwiftUI, CallKit, PushKit VoIP) kompiluje się z bieżącym SDK (Xcode 27) i serwer podpisał push VoIP Apple (APNs, ES256); te same naprawy urządzenia, co Android, oraz wpis w App Store (ios/AppStore) są w nim. Obie aplikacje są pełnym rozszerzeniem: transfer (niejawny, przez REFER), pauza i drugie połączenie, klawiatura i wyciszenie, z Recents, wizualną pocztą głosową (z transkrypcjami), lampą zajętości zespołu, Kontaktami, czatem personelu (koledzy z obecnością, wiadomościami bezpośrednimi i pokojami, z powiadomieniem w tle i push, gdy aplikacja jest zamknięta), wyborem pokoju wideo (listy pokoi SFU z kim jest w każdym, dołącza jako rozszerzenie, wyświetlane jako połączenie wideo na ekranie połączenia) i transkrypcją AI na żywo (AI.LiveCallTranscripts); transfer, pauza, transkrypcja na żywo, czat, który osiąga kolegę, lista pokoi, pokój dołączony przez telefon i push czatu kształtują się w teście silnikowym, API lub przeglądarkowym. Na Pixelu 8 (2026-10-30, kompilacja debugowania, EC2 z Let's Encrypt): dzwonił i odpowiedział z powiadomienia, wstrzymane i wznowione (stan połączenia Android jest śledzony), wywołał na systemie połączeń Android, Opus w obie strony z MOS 4,38 i bez strat; dołączył do pokoju wideo z jego kamerą (poproszony o pierwsze użycie) i zobaczył kamerę biurka, oba na żywo; wiadomość czatu w tle powiadomiła i otworzyła Chat. Pauza i transfer osiągają rodzime ekran połączenia (CallKit, Telecom). Nie uruchomiono jeszcze na iPhone'ie ani nie złożono: push, ekran systemowego połączenia i podpisywanie wymagają własnego konta deweloperskiego Apple
Profil 911, konsola radiowa, usługi rdzenia NG911, wideo dzwoniącegoLaboratoriumschematy NENA i dane przykładowe, Wireshark, spandsp, OpenSSL, ExifTool, ffmpeg, przechwytywanie P25 NIST (jego ramki głosowe IMBE rozpakowane tak, jak je rozpakowuje mbelib: ten sam pitch, harmoniczne, voicing i amplitudy); nigdy nie na żywej ESInet, systemie P25 ani PSAP CAD, i nie certyfikowane
Półprzewodnik fazy 2 (AMBE+2)Nie oferowanepatentowane do 2028
Podpisy Ed448 (NENA)Nie oferowanenie w standardowej bibliotece Go, a BitVoice nie pisze własnej kryptografii; używany jest Ed25519
Przenoszenie sygnału SS7 (STP), SCCP i TCAPSprawdzone z odniesieniemOsmoSTP 2.3.0 przez M3UA/TCP z użytkownikiem SCCP echo za nim: UDT i XUDT w obie strony, UDTS zwrócone, tłumaczenie tytułu globalnego przez STP, przełącznik na zestawie łączności sięgający echa przez IP; TCAP w obie strony przeciwko libosmo-asn1-tcap. Tylko ITU; nie ma SCTP, połączonego SCCP ani zarządzania SCCP; nie próbowano jeszcze z rzeczywistym operatorem
Wariant MFC-R2 Chin (Chiny Nr 1)Przetestowane oprogramowaniemkażdy sygnał połączenia sprawdzony z opublikowanymi tabelami i sekwencjami połączeń Cisco (KA, KD, Grupa B według KD wysłanego, C i D bity 11). Wariant Chin OpenR2 nie zgadza się sam ze sobą, więc nie ma programu do testowania; nie próbowano jeszcze z rzeczywistą linią
ALI przez PAM lub E2Nie oferowanePAM jest własnym protokołem Intrado z nieopublikowaną specyfikacją; E2 (J-STD-036, NENA 05-001) działa między centrum lokalizacji komórkowej a bazą danych ALI, a nie do PSAP. BitVoice mówi linki ALI żądania i tekstu oraz HELD zamiast tego
Rozdział 3

Numery wewnętrzne

W interfejsie sieciowym: /extensions

Numer wewnętrzny to numer przypisany do osoby lub stanowiska. Telefony logują się przy użyciu numeru wewnętrznego i jego hasła SIP; połączenia na ten numer sygnalizują wszystkie telefony zalogowane jako ten numer, jednocześnie.

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

Dodawanie numeru wewnętrznego

  1. Otwórz Numery wewnętrzne (rozdział 3) i naciśnij Dodaj numer wewnętrzny. Następny wolny numer i silne hasło SIP są wypełnione.
  2. Wprowadź nazwę osoby (wyświetlaną na innych telefonach podczas połączeń) i adres e-mail (do poczty głosowej).
  3. Wypełnij lokalizację 911: miejsce, piętro i pokój. Zostanie ono wysłane z połączeniami awaryjnymi.
  4. Wybierz, co się stanie, gdy nikt nie odpowie: poczta głosowa domyślnie lub inny numer wewnętrzny, grupa lub menu.
  5. Zapisz. Numer wewnętrzny może się zalogować od razu.

Pola

PoleCo robi
Numer2 do 8 cyfr; nie może być taki sam jak inny numer wewnętrzny, grupa, kolejka, pokój lub kod funkcji
Hasło SIPto, z czym telefon się loguje; co najmniej 12 znaków; Wygeneruj tworzy nowe
Sygnalizuj przezsekund przed tym, co się stanie, gdy nikt nie odpowie (25 sekund domyślnie)
Identyfikator połączeń przychodzącychnumer wyświetlany na połączeniach wychodzących; pusty używa tego z trasy
Może wykonywać połączenia na numery zewnętrznewyłączone utrzymuje telefon w połączeniach wewnętrznych i numerach awaryjnych
Nagrywaj połączeniagdy Ustawienia nagrywają tylko wybrane numery wewnętrzne
Gorące biurkowspółdzielony telefon, który staje się tym, kto się loguje
Szyfruj połączenia do tego telefonuszyfrowanie multimediów (SRTP); używaj go z TLS, aby klucze pozostały prywatne
Działgrupuje koszty połączeń tego numeru wewnętrznego

Follow-me, odbiór i interkom

Każda osoba ma własne ustawienia połączeń w swojej własnej skrzynce na numerze wewnętrznym:

Przekierowanie w tym momencie

Poniżej ustawień, Przekierowanie w tym momencie pokazuje i zmienia to, co osoba ustawia z telefonu lub portalu personelu: nie przeszkadzać i przekierowanie każdego połączenia, połączeń podczas zajętości i połączeń nieodebranych. Są to stan live, a nie konfiguracja: zmiana ich nie tworzy rewizji.

Co jest podłączone

Urządzenia podłączone

Numer wewnętrzny, który jest otwarty, pokazuje każde urządzenie zalogowane jako ono: marka i model telefonu, sposób połączenia (UDP, TCP, TLS lub przeglądarka) i od kiedy. Adres i port do podania telefonowi są również wyświetlane.

Rozdział 4

Łączenie telefonów

W interfejsie sieciowym: /phones

Dowolny telefon lub aplikacja SIP działa: skieruj ją na adres serwera i port 5060, z numerem rozszerzenia jako użytkownika i hasłem SIP. Telefony biurkowe od czterech głównych producentów są automatycznie konfigurowane, więc nikt nie wpisuje hasła do klawiatury telefonu.

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

Automatyczna konfiguracja (provisioning)

  1. Na Telefony (rozdział 4) naciśnij Dodaj telefon i wprowadź adres MAC telefonu (na naklejce pod spodem) i numer wewnętrzny, do którego należy.
  2. Wybierz markę: Yealink, Poly, Grandstream (w tym adaptery analogowe HT), Snom, Fanvil, Cisco, Mitel, Sangoma, Algo lub CyberData.
  3. Poinformuj telefon, gdzie znajduje się BitVoice: w swoim serwerze DHCP ustaw opcję 66 na adres konfiguracji wyświetlany na ekranie, aby każdy telefon w sieci mógł go znaleźć samodzielnie; lub wprowadź ten sam adres na stronie internetowej telefonu, w sekcji auto-konfiguracji.
  4. Zrestartuj telefon. Pobiera on swój plik przez HTTPS, loguje się i klawisze linii wyświetlają, kto jest na telefonie.

HTTPS lub zwykły HTTP. Telefony pobierają swój plik przez HTTPS, gdy mogą. Niektóre starsze telefony nie mogą używać HTTPS w ogóle, a wiele z nich nie ufa certyfikatowi wygenerowanemu przez BitVoice; dla nich ekran wyświetla również adres http:// na tym samym porcie. Zwykły HTTP jest tylko dla tych plików: każda inna strona nadal przechodzi do HTTPS. Przez zwykły HTTP hasło SIP telefonu przechodzi przez sieć niezaszyfrowane, więc ograniczaj to do zaufanej sieci biurowej lub zainstaluj certyfikat z autoryzowanego urzędu i włącz Tylko HTTPS dla telefonów.

Plik zawiera rozszerzenie, hasło, strefę czasową, kodeki, klawisze lamp sygnalizacyjnych i adres tego serwera. Dostarczanie jest chronione nazwą użytkownika i hasłem, które telefony otrzymują raz.

MarkaModele przetestowaneCo otrzymuje
YealinkT3x, T4x, T5xkonto, klawisze BLF, czas, kodeki
PolyVVX, Edge Eto samo, w formacie Poly
GrandstreamGRP, GXP, HT802/814konto na porcie adapterów
SnomD7xxkonto, klawisze, czas

Te marki są również dostarczane, z plikami napisanymi w formacie udokumentowanym przez każdego producenta, ale nie zostały jeszcze przetestowane na ich urządzeniach (ekran Telefonów oznacza je jako nieprzetestowane):

ProducentModelePlik, o który pyta urządzenie
FanvilSeria X i Vjego adres MAC .cfg
Cisco6800, 7800, 8800 multiplatform (3PCC), adaptery SPAjego adres MAC .xml (firmware dla przedsiębiorstw wymaga najpierw firmware multiplatform)
Mitel (Aastra)6800, 6900 SIPjego adres MAC .cfg, wielkimi literami
SangomaSeria Splik w formacie Fanvil
Algogłośniki nagłaśniające, sygnalizatory, adapteryalgop i jego adres MAC .conf
CyberDatagłośniki, wideodomofony, adaptery nagłaśniającejego adres MAC .xml

Każde z nich otrzymuje konto, serwer (i serwer zapasowy, przy kilku serwerach), transport i szyfrowanie, oraz numer poczty głosowej, jeśli jest przypisany. Ustaw rozszerzenia głośników Algo i CyberData na Głośnik nagłaśniający, aby połączenia do nich były odbierane natychmiast.

Telefony bez konfiguracji

Softfony i inne marki wymagają trzech rzeczy: serwer (adres tego komputera, port 5060 lub 5061 z TLS), użytkownik (numer wewnętrzny) i hasło (hasło SIP). Lista Health wyświetla telefony, które próbowały złe hasło; po kilku próbach adres jest zablokowany na jakiś czas (patrz Bezpieczeństwo (rozdział 60)).

Telefon przeglądarki

Ikona telefonu u dołu każdego ekranu czyni tę przeglądarkę telefonem dla rozszerzenia, z Twoim mikrofonem i głośnikami. Używa WebRTC: dźwięk jest szyfrowany od końca do końca, i działa przez większość zapór sieciowych bez żadnych ustawień.

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 (rozdział 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.

WebSocket nie wymaga logowania własnego: softfon loguje się za pomocą SIP, a nieudane logowania i zbyt wiele żądań są liczone dla jego własnego adresu, jak dla każdego telefonu. Strona softfonu obsługiwana z innego serwisu musi ufać certyfikatowi tego serwera (użyj Let's Encrypt), a bieżący Chrome pyta użytkownika, zanim strona internetowa może dotrzeć do serwera w sieci lokalnej.

Przetestowane z dwiema niezależnymi bibliotekami, JsSIP 3.13 i SIP.js 0.21: dwa softfony każdej rejestrują, wywołują się nawzajem i słyszą się nawzajem przez BitVoice. Inne softfony (klient internetowy Linphone, Zoiper) mówią ten sam protokół, ale nie zostały wypróbowane.

TURN, dla sieci, które blokują UDP

Niektóre sieci (hotele, gościnne Wi-Fi, ścisłe firewalle firmowe) nie pozwalają na żadne UDP lub ukrywają komputery za NAT-ami, przez które WebRTC nie może się dostać. Dla nich włącz serwer TURN w Ustawieniach (rozdział 14): BitVoice uruchamia wtedy swój własny serwer TURN (RFC 8656) na porcie 3478 (UDP i TCP) i, z certyfikatem tego serwera, na porcie 5349 przez TLS. Telefony przeglądarkowe, telefon personelu i linki połączeń otrzymują krótkotrwałe poświadczenia dla niego i używają go, gdy nie mogą się połączyć bezpośrednio z portami multimedialnymi; dźwięk jest nadal szyfrowany od końca do końca, a BitVoice przekazuje go tylko do własnych adresów, więc nikt nie może go użyć, aby dotrzeć do czegoś innego.

Otwórz port TURN, port TLS i porty przekazywania (49152 do 49407, chyba że je zmienisz) w zaporze sieciowej. TURN przez TLS wymaga certyfikatu, który przeglądarki uznają za nazwę, którą używają, takiego jak ten z Let's Encrypt (rozdział 14): do czasu, aż taki certyfikat zostanie uzyskany, BitVoice nie oferuje go przeglądarkom (próbują, nie udaje się i czekają), i oferuje go, jak tylko certyfikat przyjdzie; ustaw jego port na 443 na serwerze z wolnym adresem, aby dostać się przez firewalle, które pozwalają tylko na HTTPS.

Zmiana sieci podczas połączenia

Telefon, który przechodzi do innej sieci podczas połączenia (z sieci Wi-Fi biura na sieć komórkową lub laptopa z jednej sieci Wi-Fi na inną), otrzymuje nowy adres, a stary ścieżka przestaje przenosić dźwięk. Telefony przeglądarkowe i aplikacje BitVoice samoczynnie wykrywają tę zmianę: gdy przeglądarka sygnalizuje zmianę sieci lub ścieżka połączenia przestaje odpowiadać przez 2 sekundy, telefon ponownie uruchamia ICE (RFC 8445 9). Oferta nowych poświadczeń ICE dla bieżącego połączenia, BitVoice odpowiada nowymi poświadczeniami i sprawdza nową ścieżkę, a połączenie przechodzi na nią bez potrzeby ponownego wybierania. Szyfrowanie kontynuuje się z tymi samymi kluczami. Podczas tej operacji połączenie wyświetla się jako Ponowne łączenie…; na ścieżce, która nadal działa, nie ma przerwy, ponieważ stara ścieżka utrzymuje połączenie aż do momentu, gdy dźwięk pojawi się na nowej ścieżce. Telefony SIP z obsługą WebSocket (JsSIP, SIP.js) wykonują tę samą operację za pomocą re-INVITE z nowymi poświadczeniami ICE. Nie ma potrzeby włączania niczego, ponieważ BitVoice działa jako ICE-lite lub za NAT.

BitVoice za NAT

Serwer TURN powyżej pomaga przeglądarkom w sieciach ze ścisłymi zasadami dotarcia do BitVoice, który ma publiczny adres. Gdy BitVoice nie ma publicznego adresu (w biurze za routerem bez przekierowania portów lub w chmurze bez publicznego adresu na maszynie), włącz Ten serwer jest za NAT w BitVoice za NAT w Ustawieniach (rozdział 14). BitVoice bierze wtedy pełny udział w ICE (RFC 8445) zamiast odpowiadać na jeden adres (ICE-lite):

Telefon dla personelu

Otwórz #/phone na dowolnym komputerze lub przeglądarce mobilnej: ludzie logują się za pomocą swojego numeru wewnętrznego i hasła SIP, bez konta administratora. To pełny telefon: wybieranie, odbieranie, pauzowanie i transfer oraz klawiatura. Do przekierowania i poczty głosowej używają portalu personelu w #/me (zobacz Portal personelu (rozdział 33)).

Aplikacje mobilne

Aplikacje BitVoice dla iPhone i Android są parowane ze stroną rozszerzenia za pomocą kodu QR. Połączenia budzą aplikację za pomocą usług push Apple i Google, więc dzwoni nawet, gdy jest zamknięta (po skonfigurowaniu powiadomień push; patrz poniżej).

Rozdział 5

Telefony Skinny i bramy MGCP

W interfejsie sieciowym: /desk-phones

Telefony i bramy, które nie obsługują SIP, mogą być nadal używane. Telefony Skinny i bramy MGCP (pod Połączeniami) obsługują dwa starsze protokoły:

Każdy telefon Skinny lub linia MGCP to jeden dodatkowy urządzenie swojego numeru wewnętrznego: sygnalizuje z innymi telefonami tego numeru wewnętrznego, wykonywa połączenia wychodzące jako ten numer wewnętrzny i jest wyświetlany w urządzeniach tego numeru wewnętrznego. Strona pokazuje stan każdego z nich.

Co działa

Poczekalnia, transfer i konferencja są wykonywane z innych telefonów rozszerzenia na razie, a druga linia telefonu Skinny nie jest używana.

Bezpieczeństwo

Żaden z protokołów nie ma haseł. Telefony Skinny są akceptowane tylko z sieci lokalnej i tylko wtedy, gdy są wymienione; polecenia MGCP są wykonywane tylko z adresu bramki (lub, bez niego, z sieci lokalnej). Zachowaj oba porty poza internetem.

Brama, która nadal pracuje nad poleceniem, może najpierw odpowiedzieć "100 Trying": BitVoice następnie dłużej czeka, zanim ponownie wyśle polecenie i potwierdzi ostateczną odpowiedź (000), zgodnie z RFC 3435. Port, którego brama nie będzie obserwować, wyświetla własną odmowę bramy na stronie, taką jak brama odmówiła obserwowania portu: 507 Nieobsługiwana funkcjonalność z bramy multimedialnej bez portów analogowych.

Jak są testowane

Rozdział 6

Karty telefoniczne

W interfejsie sieciowym: /cards

Karta telefoniczna w komputerze BitVoice (Digium, Sangoma, OpenVox i inne karty z sterownikami DAHDI dla Linuksa) może obsługiwać telefony analogowe i linie telefoniczne. Oddzielny program, bitvoice-dahdi, steruje kartą i łączy jej porty z BitVoice przez własne połączenie sieciowe komputera, więc sam BitVoice nigdy nie dotyka sterownika jądra i problem z kartą nie może zatrzymać systemu telefonicznego.

Konfiguracja

  1. Zainstaluj sterowniki DAHDI i skonfiguruj porty w /etc/dahdi/system.conf (fxoks=1-4 dla portów z telefonami, fxsks=5-8 dla portów z liniami, oraz tony kraju w loadzone i defaultzone), a następnie uruchom dahdi_cfg.
  2. W Kartach telefonicznych (pod Połączeniami) włącz Użyj kart telefonicznych. Zostanie wygenerowany token; skopiuj go do pliku, który może odczytać tylko root, takiego jak /etc/bitvoice/cards.token.
  3. Dodaj każdy port według jego numeru kanału DAHDI: telefon (FXS, telefon, faks lub telefon drzwiowy podłączony) z jego rozszerzeniem, lub linia (FXO, linia telefoniczna) z numerem linii. Wybierz A-law dla Europy i większości świata, µ-law dla Ameryki Północnej i Japonii.
  4. Dla linii, dodaj trunk z protokołem Linie kart telefonicznych w Trunkach i skieruj numery do niego, tak jak do jakiegokolwiek trunku; trasy przychodzące odpowiadają każdemu numerowi linii.
  5. Uruchom bitvoice-dahdi -server https://127.0.0.1:8443 -token-file /etc/bitvoice/cards.token jako użytkownik usługi, który może otworzyć /dev/dahdi. Jest on w pobraniu Linuksa obok bitvoice. Strona pokazuje, czy jest uruchomiony i stan każdego portu; zmiany są przekazywane do niego w ciągu dziesięciu sekund. Kanał, który jest nadal trzymany przez inny program (lub jeden, który dahdi_cfg jeszcze nie skonfigurował), jest ponawiany co dwie sekundy, więc kolejność, w jakiej rzeczy są uruchamiane, nie ma znaczenia.

Co działa

Linie cyfrowe: T1 i E1 PRI

Linia T1 (23 połączenia na raz) lub E1 (30) jako linia podstawowej stawki ISDN jest podłączona do cyfrowej karty (Digium/Sangoma TE-series, OpenVox D-series i tym podobne). BitVoice obsługuje sam PRI (Q.921 na kanale D, oraz kontrola połączeń Q.931), więc każde połączenie przychodzi z wybranym numerem i identyfikatorem wywołującego, wychodzi z identyfikatorem wywołującego rozszerzenia, oraz centrala mówi, kiedy druga strona odbiera, dzwoni lub jest zajęta.

  1. W /etc/dahdi/system.conf, ustaw span dla PRI, jak zwykle (span=1,1,0,esf,b8zs, bchan=1-23, hardhdlc=24 dla T1; span=1,1,0,ccs,hdb3,crc4, bchan=1-15,17-31, hardhdlc=16 dla E1), i uruchom dahdi_cfg.
  2. Pod Linie cyfrowe w Kartach telefonicznych (rozdział 6), dodaj span: T1 lub E1, jego pierwszy numer kanału DAHDI, czy BitVoice jest centralą na linii telefonicznej (zwykle) czy siecią (inna centrala łączy się z BitVoice, jak z centralą), oraz typ przełącznika, jaki podała centrala.
  3. Dodaj trunk karty na Trunkach, jeśli jeszcze go nie ma, oraz trasy przychodzące dla numerów (DIDs), które centrala wysyła.

Połączenia wychodzące zajmują PRI jako pierwsze, a linie analogowe później; zajęty numer, błędny numer lub brak wolnego kanału powoduje, że połączenie jest zwracane jako zajęte, nie znalezione lub niedostępne, tak jak mówi sieć. Strona pokazuje, czy kanał D każdego spanu jest w górę i ile kanałów jest w połączeniach. Kanały T1 ustawione z sygnalizacją robbed-bit (fxsks, fxoks) działają jak porty analogowe powyżej.

Nazwy, przekierowania i transferowanie. Nazwa wywołującego przychodzi wraz z połączeniem (z elementu Display lub w przypadku National ISDN-2 z nazwy, którą sieć wysyła jako udogodnienie) i jest wyświetlana na telefonach; połączenia wychodzące wysyłają nazwę rozszerzenia w ten sam sposób. Numer, z którego połączenie zostało przekierowane, przychodzi jako jego numer przekierowania (BitVoice przekazuje go jako SIP's Diversion, z powodem: zajęty, brak odpowiedzi, bezwarunkowy), a gdy przekierowanie rozszerzenia wysyła połączenie z powrotem na PRI, numer rozszerzenia jest wysyłany wraz z nim jako numer przekierowania, aby drugi koniec i firma telefoniczna wiedziały, do kogo należy połączenie. Gdy połączenie zewnętrzne zostanie odebrane, BitVoice informuje sieć o numerze, który odebrał połączenie (połączony numer).

Włącz Przekierowania przez firmę telefoniczną na spanie (strona użytkownika, National ISDN-2, 5ESS, DMS-100 lub EuroISDN) i gdy ktoś przekieruje połączenie na tym kanale do innego numeru na tym samym kanale, BitVoice prosi sieć o połączenie dwóch połączeń: Two B-Channel Transfer na liniach National ISDN-2 i 5ESS, Release Link Trunk transfer na Nortel DMS-100, jawne przekierowanie połączenia (połączenie w trybie hold, a następnie połączenie) na EuroISDN. DMS-100 daje identyfikator przekierowania tylko połączeniom umieszczonym przez BitVoice, więc tam jedno z dwóch połączeń musi być połączeniem wychodzącym (zwykły przypadek: połączenie przekierowane lub przeniesione do zewnętrznego numeru). Obie kanady są zwalniane natychmiast po tym, jak sieć je połączy. Linia potrzebuje tej usługi (poproś firmę telefoniczną o "two B-channel transfer" lub "ECT"); jeśli sieć odmówi, przekierowanie nadal działa, przez BitVoice, używając obu kanałów jak wcześniej. Na spanie, na którym BitVoice jest stroną sieci, inny PBX może poprosić BitVoice o połączenie dwóch swoich połączeń; BitVoice odmawia (nie jest przełącznikiem), a PBX utrzymuje połączenia sam.

Wypróbowanie bez karty

Własne dynamiczne spany DAHDI mogą zastąpić kartę: dwa spany połączone wewnątrz jądra, BitVoice na jednym i inny PBX (Asterisk's chan_dahdi, na przykład) jako firma telefoniczna na drugim. Wczytaj dahdi, dahdi_dynamic i dahdi_dynamic_loc, a w /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

Pozostaw ostatni numer (częstotliwość) na 0 na obu: wewnętrzny timer DAHDI napędza je wtedy. Spany, które są źródłem czasu dla siebie nawzajem, tykają tylko wtedy, gdy inny wysyła, a kanał D pojawia się i znika. Dodaj span 1 tutaj jako T1 (pierwszy kanał 1), a ustaw inny PBX jako stronę sieci na kanałach 25 do 48.

Podstawowa stawka ISDN (BRI)

BRI przenosi dwa połączenia na raz (B1 i B2) i jest powszechny w Europie dla małych biur; łączy również telefony biurkowe ISDN. Karty BRI (Digium B410P, karty oparte na HFC od OpenVox, Junghanns i innych) działają przez DAHDI, tak jak karty PRI: w /etc/dahdi/system.conf span jest span=1,1,0,ccs,ami z bchan=1-2 i hardhdlc=3. Dodaj go pod Linie cyfrowe z BRI jako typ linii; jego kanały to B1, B2, a następnie kanał D.

Nazwy, przekierowania, transferowanie na EuroISDN (jawne przekierowanie połączenia) i porady dotyczące opłat działają na BRI tak jak na PRI.

Trunki E&M na T1

T1, którego kanały są ustawione jako E&M (sygnalizacja robbed-bit: e&m=1-24 w /etc/dahdi/system.conf) daje 24 trunki, z których każdy jest sygnalizowany oddzielnie: linie łączące z inną centralą, banki kanałów i trunks Feature Group D operatorów dalekobieżnych. Pod Linie cyfrowe, dodaj T1 i ustaw Sygnalizację na E&M, a następnie:

Wychodzące połączenie zajmuje wolny trunk, zajmuje go, czeka na sygnał startowy (brak mrugnięcia w ciągu pięciu sekund oznacza "brak mrugnięcia" i połączenie kończy się niepowodzeniem), wysyła numer i jest odebrane, gdy drugi koniec odłącza się (nadzór odpowiedzi). Połączenie przychodzące jest odebrane przez odłączenie się, gdy extension odpowiada.

Trunki CAMA (911, ścieżka laboratoryjna). PSAP nadal zasilany przez router 911 wybrany przez trunki CAMA ustawia Sygnał startowy na CAMA (trunk 911). Router zajmuje, BitVoice mruga, a router wysyła numer dzwoniącego (ANI) w postaci MF: ulepszony CAMA jako KP, dwa cyfry informacyjne i wszystkie dziesięć cyfr, ST; tradycyjny CAMA jako KP, jeden cyfra planu numeracji i siedem cyfr, ST. Dla tradycyjnego CAMA, wyświetl pod Kody obszaru dla NPD 0 do 3 kod obszaru, który każda cyfra planu numeracji reprezentuje (arkusz ustawień routera ma je); cyfra powyżej 3 oznacza, że router nie mógł zidentyfikować linii. Każde połączenie jest kierowane do trasy przychodzącej dla 911 jako połączenie 911, z ANI jako jego numer callback, a BitVoice wyszukuje jego lokalizację według tego numeru (patrz połączenia 911 (rozdział 77), Wyszukiwanie lokalizacji (ALI)). Cyfry informacyjne są wyświetlane na połączeniu jako CAMA (II 00).

MFC-R2 na E1

W Ameryce Łacińskiej, częściach Azji i Afryki linie E1 są często MFC-R2, a nie ISDN: 30 obwodów, z których każdy ma sygnały linii na bitach A i B timeslotu 16 (ITU-T Q.421) i numer, kategorię wywołującego i numer wywołującego wymieniane w tonach multifrequency (Q.441), do przodu i do tyłu. Skonfiguruj span jako CAS w /etc/dahdi/system.conf (span=1,1,0,cas,hdb3, cas=1-15:1101, cas=17-31:1101, dchan usunięty), a następnie pod Linie cyfrowe dodaj E1, ustaw Sygnalizację na MFC-R2 i wybierz Wariant kraju: ITU-T, Argentyna, Brazylia, Chiny, Kolumbia, Czechy, Ekwador, Meksyk, Filipiny lub Wenezuela. Każdy kraj przypisuje niektóre sygnały inaczej (co oznacza zajętość, jak kończy się numer, dodatkowa grupa C w Meksyku); wariant zawiera te informacje. Chiny nr 1 żądają klasy wywołującego (KA) i numeru po wybranym numerze, wysyłają typ połączenia (KD: 3, połączenie lokalne) na końcu, odczytują zajętość i niezajętość według wysłanego KD i ustawiają bity C i D na 1: tam, wpisz cas=1-15:1111 i cas=17-31:1111.

Każdy obwód przenosi połączenia w obie strony. Połączenie przychodzące dociera do tras wychodzących z wybranym numerem i numerem wywołującego (numerem ukrytym jako anonimowy); zajęta centrala lub niewłaściwy numer są sygnalizowane z powrotem jako zajęty lub nieprzydzielony, zgodnie z wariantem. Połączenie wychodzące wysyła numer i numer ID wywołującego centrali lub sygnał "numer ukryty", gdy wywołujący ukrywa go.

Sygnalizacja MFC-R2 jest testowana w stosunku do OpenR2 (biblioteki R2 używanej przez chan_dahdi Asterisk), we wszystkich oferowanych wariantach i w obie strony, w tym odmówione połączenie jako zajęte; E&M w stosunku do własnych kanałów symulowanych przez BitVoice.

SS7

Operator może przekazywać T1 lub E1 sygnalizowane przez SS7 zamiast ISDN: obwody głosowe przenoszą połączenia, z których każde jest nazwane kodem identyfikacji obwodu (CIC), a jeden timeslot przenosi łącze sygnalizacyjne do punktu transferu sygnałów operatora lub przełącznicy, za pomocą którego ISUP ustawia połączenia. BitVoice jest wtedy punktem sygnalizacyjnym, z kodem punktu przypisanym przez operatora. W /etc/dahdi/system.conf ustaw span jako kanały czyste z timeslotem sygnalizacyjnym jako mtp2 lub hardhdlc (timeslot 16 na E1, 24 na T1). Pod Linie cyfrowe dodaj span, ustaw Sygnalizację na SS7 (ISUP) i podaj:

Zestawy łączy składające się z kilku łączy. Spany z tym samym wariantem, kodami punktów i siecią tworzą jeden zestaw łączy (do 16 łączy): każde łącze sygnalizacyjne spanu jest jednym z jego łączy i potrzebuje własnego Kodu łącza, a wszystkie obwody spanu należą do niego (ich CIC nie mogą się nakładać). Ruch jest dzielony między łączami w trybie usługi za pomocą wiadomości SLS, więc wiadomości jednego połączenia pozostają na jednym łączu. Gdy łącze ulega awarii (test łącza nie jest odpowiedzi, lub wiadomości nie są potwierdzane), jego ruch jest przenoszony na inne (Q.704: COO i COA, wiadomości, które drugi koniec nie otrzymał, wysyłane ponownie na innym łączu; lub, bez odpowiedzi w czasie, czasowo), połączenia na każdym spanie trwają, a Karty telefoniczne pokazują, ile łączy jest w trybie usługi i jak stoi to łącze. Gdy łącze wraca i jest testowane, jego ruch jest przenoszony z powrotem (CBD i CBA). Tylko wtedy, gdy wszystkie łącza są wyłączone, zestaw łączy jest wyłączony. Przetestowane z biblioteką libss7 z dwoma łączami, z których jedno zostało przerwane w trakcie połączenia: libss7 akceptuje tylko wiadomości zarządzania siecią na łączu, którego SLS je nazwał, więc wiadomość przełączająca o przerwanym łączu (wysłana na innym, zgodnie z Q.704) jest odrzucana, a oba końce przełączają się czasowo, co działa; między dwoma końcami BitVoice przełącza się za pomocą COO i COA.

Po połączeniu się łącza, BitVoice go wyrównuje (poziom MTP 2, z okresem awaryjnym jako zestaw połączeń jednego łącza), testuje je za pomocą testu łącza (SLTM/SLTA), wymienia dane o wznowieniu ruchu, zezwala na wznowienie i resetuje każdy obwód (GRS). Połączenia przychodzące docierają do tras wychodzących z numerem wybranym, numerem nadawanym (z ukrytymi jako anonimowe), numerem, z którego połączenie zostało przekierowane, oraz na ANSI, nazwą nadawanego; połączenia wychodzące przenoszą identyfikator nadawanego i nazwę. BitVoice przestrzega zablokowania lub resetowania obwodów przez operatora. W przypadku podwójnego zajęcia, koniec z wyższym kodem punktu zachowuje parzyste obwody, zgodnie z zaleceniami Q.764, a BitVoice przyjmuje obwody, które zachowuje jako pierwsze.

SS7 jest testowany w stosunku do libss7 (biblioteki SS7 używanej przez Asterisk chan_dahdi), ITU i ANSI: wyrównanie, test łącza, wznowienie ruchu, reset obwodu, połączenia w obie strony z numerami i nazwami, zwolnienie, zajętość i blokowanie; oraz BitVoice w stosunku do samego siebie z utraconymi ramkami na łączu (wysłanymi ponownie przez korekcję błędów MTP2) i podwójnym zajęciem. Przenoszenie sygnałów (jako STP dla innych) i SCCP/TCAP (wyszukiwanie numerów przeniesionych, tłumaczenie bezpłatne) nie są oferowane: PBX jest punktem końcowym, a te są właściwościami operatora.

Punkt transferu sygnału (STP). bitvoice-dahdi może być również STP dla swoich zestawów połączeń ITU SS7: włącz Punkt transferu sygnału (SS7) poniżej linii cyfrowych. Jego Kod punktu STP jest własnym kodem spanów. Z Przekazuj wiadomości dla innych kodów punktów, wiadomość z jednego zestawu połączeń dla sąsiedniego punktu innego zestawu połączeń jest wysyłana do tego zestawu połączeń, a wiadomość dla dowolnego innego kodu punktu jest wysyłana do IP STP (M3UA): IP STP lub bramy sygnałowej w host:port, dostępnego przez M3UA (RFC 4666) przez TCP, którego wiadomości dla zestawów połączeń są zwracane w ten sam sposób (BitVoice rejestruje swój kod punktu i te za nim, chyba że podano Kontekst routingu). Tłumaczenie tytułu globalnego wysyła wiadomości SCCP adresowane do STP według tytułu globalnego do kodu punktu i podsystemu najdłuższego pasującego prefiksu, jak SCCP relay. Wiadomość, która nie może być dostarczona, jest zwracana do nadawcy jako UDTS lub XUDTS, gdy o to poproszono: brak tłumaczenia, brak trasy (awaria MTP), brak podsystemu tutaj lub wyczerpanie licznika skoków. Stan STP wyświetla połączenie M3UA i liczbę przekazanych, przetłumaczonych i zwróconych wiadomości. Jego SCCP (UDT, XUDT, UDTS, XUDTS) i TCAP (Rozpocznij, Kontynuuj, Zakończ, Przerwij, dialogi i składniki) są sprawdzane w stosunku do Osmocom: OsmoSTP przez M3UA, libosmo-sigtran's SCCP echo user za nim, oraz libosmo-asn1-tcap's własny TCAP kod w obie strony. SCTP nie jest oferowany (Go nie ma): M3UA działa przez TCP, który OsmoSTP i wiele IP STP akceptuje. Połączone SCCP, zestawy połączeń ANSI i zarządzanie SCCP (SST, SSA) nie są oferowane.

Porada dotycząca opłat. Na linii EuroISDN, włącz Poradę dotyczącą opłat i BitVoice poprosi firmę telefoniczną, przy każdym połączeniu wychodzącym, o podanie kosztu: podczas połączenia (AOC-D) i na jego końcu (AOC-E), w pieniądzu lub w jednostkach rozliczeniowych. Ostatnia kwota jest umieszczana w rekordzie połączenia (naliczono 1,50 EUR w Historii i obok połączenia w Kosztach); gdy jest to twoja waluta (ustawiona w Kosztach), jest to koszt połączenia, zamiast kwoty z taryf łącza. Firma telefoniczna musi oferować tę usługę na linii. Łącza SIP mogą wysyłać tę samą poradę, jako XML AOC 3GPP w INFO lub BYE, a BitVoice zachowuje ją w ten sam sposób.

Kod PRI jest testowany w stosunku do libpri (biblioteki ISDN używanej przez Asterisk), zarówno jako strona użytkownika, jak i jako strona sieciowa, dla połączeń National ISDN-2 i EuroISDN, nazw, przekierowań i połączonych numerów, jawnej transmisji połączeń i żądań transferu kanału B, oraz porady dotyczącej opłat w obie strony; oraz na BRI, punkt-punkt i wielopunkt, jako terminal i jako sieć (przypisanie TEI, połączenia nadawane do autobusu, numery wybierane cyfra po cyfrze).

Nie jeszcze: wyświetlanie identyfikatora nadawanego na telefonach analogowych lub odczytywanie z linii analogowych, miganie hooka i anulowanie echa poza tym, co robi sama karta.

Rozdział 7

Trunki

W interfejsie sieciowym: /trunks

Trunk to Twoje konto z firmą telefoniczną. Przenosi połączenia do i z zewnętrznych numerów. Większość z nich to trunki SIP; serwer Asterisk lub FreePBX, lub dostawca IAX2, może być osiągalny za pomocą IAX2 zamiast.

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

Dodawanie trunku SIP

  1. Na Trunkach (rozdział 7) naciśnij Dodaj trunk.
  2. Wprowadź serwer dostawcy podany przez Twoją firmę telefoniczną (sip.provider.com), oraz port, jeśli nie jest to 5060.
  3. Wprowadź nazwę użytkownika i hasło, oraz włącz Rejestrację, jeśli dostawca mówi, aby to zrobić (większość robi).
  4. Zapisz. W ciągu kilku sekund trunk pokazuje zarejestrowany; jeśli nie, powód jest wyświetlany obok niego.

Sędzia zdrowia trunku

Z dwoma lub więcej trunkami na trasie wychodzącej, BitVoice co 15 sekund ocenia, czy każdy z nich jest używany na swoim miejscu, czy próbowany po innych trunkach. Trunk przesuwa się za innymi, gdy jego dostawca przestaje odpowiadać na kontrole keep-alive, lub gdy jego ostatnie połączenia wychodzące nie powiodły się jeden po drugim po stronie dostawcy (Nieudane połączenia z rzędu w W ciągu (minut), Ustawienia, Sędzia zdrowia trunku), a inny trunk działa. Nie jest przenoszony przy jednej nieudanej kontroli keep-alive, podczas gdy połączenia przez niego nadal przechodzą; i gdy wszystkie trunky nie powiodą się jednocześnie, bardziej prawdopodobną przyczyną jest własne połączenie internetowe systemu, więc nic nie jest przenoszone. Zmiana wymaga dwóch ocen z rzędu (30 sekund), więc trunk nigdy nie migocze. Trunk nigdy nie jest całkowicie wyłączany: jest nadal próbowany, gdy inne trunky nie powiodą się, więc nagłe połączenie zawsze ma wszystkie możliwości. Strona trunku wyświetla ocenę i jej powody; połączenie, które wyszło inną drogą, mówi o tym w swoim rekordzie.

  1. Dodaj trasę przychodzącą dla swojego numeru i trasę wychodzącą, która używa tego trunku (Trasy połączeń (rozdział 8)).
PoleCo robi
TransportUDP (zwykle), TCP lub TLS do szyfrowania sygnałów
Rejestracjalogowanie co kilka minut, aby dostawca wiedział, gdzie wysłać połączenia
Nazwa użytkownika uwierzytelnianiatylko wtedy, gdy dostawca podaje oddzielną
Domena nadawcydomena w adresie nadawcy, gdy dostawca o to prosi
ID nadawcynumer wyświetlany na wychodzących połączeniach; własne ID nadawcy rozszerzenia ma pierwszeństwo
Akceptuj również połączenia zinnych adresów lub sieci dostawcy, które wysyłają połączenia. Połączenia z tego komputera od telefonów zarejestrowanych tutaj oraz wbudowanego generatora połączeń nigdy nie są traktowane jako połączenia z trunku, nawet jeśli zezwala na 127.0.0.1
Połączenia jednocześnielimit Twojego planu; połączenia poza limitem są kierowane do następnego trunku w trasie
Szyfruj mediaSRTP, dla dostawców, którzy go obsługują. Dostawca, który odpowiada bez niego, nadal otrzymuje połączenie, niezaszyfrowane, a historia połączeń oznacza je jako Niezaszyfrowane
Wymagaj szyfrowania(z Szyfruj media) odmów połączenia, które dostawca nie chce szyfrować: wychodzące połączenie, które dostawca odpowiada bez SRTP, jest odrzucone, a połączenie przychodzące, które dostawca wysyła bez SRTP, jest odrzucone; historia połączeń podaje powód
Kodekipozostaw to na *takie same jak Ustawienia*, lub wybierz to, co ten dostawca obsługuje, najlepsze jako pierwsze
Stawkikoszt połączeń według prefiksu numeru, dla Kosztów (rozdział 54)

Dostawcy chmury

Rozpocznij od wypełnia Microsoft Teams Direct Routing, Amazon Chime SDK Voice Connector lub Azure Communication Services, z notatką na temat ustawień po ich stronie. Teams są opisane w swoim własnym rozdziale (Microsoft Teams (rozdział 67)).

Trunki IAX2 do Asterisk i FreePBX

Wybierz IAX2 jako protokół, aby dołączyć do innego serwera Asterisk lub FreePBX, lub dostawcy IAX2. IAX2 przenosi sygnały i dźwięk na jednym porcie UDP, 4569, co ułatwia przechodzenie przez zapory sieciowe.

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

Po stronie Asterisk, taki peer jest wszystkim, czego potrzeba:

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

Port IAX2 4569 otwiera się tylko wtedy, gdy dodany jest pierwszy trunk IAX2, więc Asterisk uruchomiony na tym samym komputerze utrzymuje go do tego czasu.

Trunki H.323

Wybierz H.323 jako protokół dla starszych bramek, central telefonicznych i systemów wideokonferencyjnych, które mówią H.323, ale nie SIP. Podaj adres bramki (port 1720); połączenia są akceptowane tylko z niej. Połączenia są ustawiane z Szybkim Połączeniem i G.711 (µ-law lub A-law; lista kodeków trunka może ją zawęzić do jednej), a dźwięk idzie prosto między bramką a portami mediów BitVoice. BitVoice konwertuje na to, co używa inna strona.

H.323 tutaj jest celowo mały: brak gatekeepera (RAS), brak H.245 (więc bramka, która nie użyje Szybkiego Połączenia, nie otrzyma połączenia i zostanie poinformowana), brak wideo, brak zabezpieczeń H.235. ID nadawcy pochodzi z numeru wywoławczego Q.931 lub aliasu cyfrowanego nadawcy, a nazwa pochodzi z wyświetlacza lub jego identyfikatora H.323. Kodowanie H.225.0 i H.245 BitVoice zostało sprawdzone przeciwko niezależnemu kodowaniu ASN.1, ale jeszcze nie przeciwko sprzętowi bramki.

Przekierowane połączenia

Gdy połączenie dociera do Ciebie już przekierowane (ktoś przekierował swoją numer na Twój, lub użytkownik Teams), dostawca informuje o tym za pomocą History-Info (RFC 7044) lub Diversion (RFC 5806). BitVoice odczytuje oba: Historia połączenia (rozdział 47) pokazuje przekierowane przez numer, który je przekierował, wraz z numerem, który był najpierw wybrany i powodem w swojej podpowiedzi, ślad połączenia mówi o tym słowami, a rekord połączenia przechowuje je (forwardedFrom, original, forwardReason). Gdy dostawca prosi o utrzymanie historii w prywatności, numery nie są przechowywane.

Gdy rozszerzenie przekierowuje połączenie na zewnątrz przez trunk (przekieruj wszystko, gdy zajęty, gdy nikt nie odpowiada), dostawca jest informowany, które rozszerzenie przekierowało je i dlaczego, aby mógł wyświetlić Twój numer i rozliczyć odpowiednie konto: domyślnie z obu nagłówków, a z historią, z którą połączenie przyszło, zachowaną i dodaną. Dostawca, który jest zdezorientowany jednym z nich, może być ustawiony na inny w Zaawansowane, Przekierowane połączenia mówią, do kogo należą. Na karcie telefonicznej T1/E1 jeden z nagłówków staje się numerem redirectingowym sieci.

Co oznacza status

StatusZnaczenie
zarejestrowanyzalogowany; połączenia mogą przychodzić
gotowynie rejestruje, lub IAX2 oczekuje na połączenia
niedostępnynazwa serwera nie jest w DNS, lub nic nie odpowiada
niepowodzeniedostawca odmówił zalogowania; powód jest wyświetlany
w trybie czuwaniaserwery dzielą ten trunk na raz, a inny trzyma go
Rozdział 8

Trasowanie połączeń

W interfejsie sieciowym: /routes

Trasowanie połączeń decyduje o dwóch rzeczach: gdzie idą połączenia z zewnątrz, według numeru, który został wybrany, i którym trunkiem używają połączenia do numerów zewnętrznych.

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

Trasy przychodzące

Każda trasa przychodząca dopasowuje numer, który został wybrany (lub dowolny numer), i wysyła połączenie do miejsca przeznaczenia: rozszerzenia, grupy dzwonienia, kolejki, menu, harmonogramu, skryptu, pokoju konferencyjnego, recepcjonisty AI lub poczty głosowej. Numery są dopasowane w dowolnej formie: +1 212 555 0100, 2125550100 i 12125550100 są takie same.

Trasy wychodzące

Trasy wychodzące dopasowują to, co ludzie wybierają, według wzorca, i wysyłają je do trunków w kolejności: jeśli pierwszy jest nieaktywny lub pełny, próbuje następnego.

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.
Rysunek 8. Outgoing routes: the first pattern that matches, its trunks in order
WzorzecDopasowuje
Xdowolna cyfra
Z1 do 9
N2 do 9
[1-5]jeden z zestawu
. na końcujeden lub więcej dalszych cyfr
NXXNXXXXXXdziesięcio-cyfrowy numer północnoamerykański
1NXXNXXXXXXten sam z 1 na przedzie
011.międzynarodowe połączenie z USA

Numery awaryjne

Numery awaryjne zawsze działają. Trasa, która nazywa numer dokładnie, jest używana najpierw; bez niej, każdy pracujący trunk jest próbowany z kolei. Połączenie do nich nigdy nie jest odrzucane z powodu limitów rozszerzenia, limitów organizacji hostowanej lub braku trasy. Zdrowie ostrzega, gdy żaden trunk nie może ich przenosić.

Rozdział 9

Zestawy PIN

W interfejsie sieciowym: /pin-sets

Zestaw kodów PIN (rozdział 9) to lista kodów PIN, o które prosi trasę wychodzącą przed wykonaniem połączenia: w celu ograniczenia międzynarodowych lub międzystrefowych połączeń do osób z kodem PIN lub do rozliczania połączeń z klientami i projektami według ich kodu.

  1. Dodaj zestaw PIN i wymień jego kody PIN (po 4 do 10 cyfr każdy).
  2. Włącz Zapisz PIN w rekordzie połączenia, aby zapisać użyty kod PIN w każdym rekordzie połączenia jako kod konta (kolumna accountcode w danych wyjściowych CSV, syslog i PostgreSQL, oraz account w API).
  3. Na Trasowanie połączeń (rozdział 8), otwórz trasę wychodzącą i wybierz zestaw pod Poproś o PIN.

Dzwoniący, którzy wybierają numer, który ta trasa obsługuje, słyszą "Proszę wprowadzić kod PIN, a następnie nacisnąć klawisz hash", wprowadzają go, a połączenie wychodzi. Trzy błędne kody PIN kończą połączenie, a próba jest rejestrowana jako zdarzenie bezpieczeństwa. Numery alarmowe nigdy nie pytają o kod PIN, niezależnie od trasy, którą podejmują, a przekierowane połączenia i numery follow-me również nie są pytane: tylko osoby dzwoniące z telefonu.

Rozdział 10

Wyszukiwanie ID dzwoniącego

W interfejsie sieciowym: /lookups

Wiele firm telefonicznych wysyła numer dzwoniącego, ale nie nazwę. BitVoice najpierw szuka w kontaktach firmy (rozdział 38); po tym, trasa przychodząca może poprosić o wyszukiwanie ID dzwoniącego (rozdział 10):

Wybierz wyszukiwanie na trasie przychodzącej na Trasowanie połączeń (rozdział 8) (Wyszukiwanie ID dzwoniącego). Telefony wyświetlają nazwę podczas dzwonienia, a ona jest zapisywana w rekordzie połączenia.

Wyszukiwanie nigdy nie opóźnia połączenia: BitVoice czeka najwyżej czas oczekiwania (1,5 sekundy, chyba że zmienisz to, maksymalnie 5) i następnie dzwoni bez nazwy. Odpowiedzi są przechowywane przez dzień (lub tak długo, jak ustawisz, lub nigdy z -1), więc regularny dzwoniący nie jest wyszukiwany przy każdym połączeniu; numery, których usługa nie zna, są pytane ponownie po godzinie. Sprawdź na stronie wyszukiwania prosi o numer od razu, z ustawieniami zapisanymi.

Rozdział 11

Połączenia alarmowe

Numery alarmowe zawsze są kierowane, z każdego numeru wewnętrznego, nawet tych, które nie mogą wykonywać połączeń na zewnątrz. Ten rozdział dotyczy połączeń alarmowych wykonanych z telefonów obsługiwanych przez BitVoice: biura dzwoniące pod numer 911. Odpowiadanie na połączenia 911 jest profilem 911 (rozdział 77).

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

Co BitVoice robi przy każdym połączeniu alarmowym

  1. Kieruje je, zawsze: trasę, która najpierw nazywa numer; bez niej, każdy działający trunk po kolei. Ograniczenia nigdy nie zatrzymują go: numer wewnętrzny, który nie może wykonywać połączeń na zewnątrz, organizacja hostowana, która osiągnęła limit połączeń lub jest zawieszona, trunk, który osiągnął limit kanałów.
  2. Wysyła, gdzie jest dzwoniący: z Wyślij adres dzwoniącego włączonym (Ustawienia), połączenie zawiera adres cywilny, piętro i pokój do dostawcy jako PIDF-LO.
  3. Informuje ludzi na miejscu (Prawo Kari w USA): numery wewnętrzne pod Powiadom otrzymują wiadomość na swoich telefonach, każdy otwarty ekran BitVoice wyświetla alert, a adresy pod Również e-mail otrzymują e-mail z nazwą dzwoniącego, numerem wewnętrznym, miejscem, piętrem i pokojem, aby ktoś mógł spotkać się z odpowiedzialnymi przy drzwiach.
  4. Pozwala na powrotny połączenie: przez godzinę po połączeniu alarmowym, połączenia przychodzące nigdy nie są odrzucane, aby punkt odpowiedzi mógł zawsze odebrać połączenie.

Konfiguracja

  1. Sprawdź numery alarmowe w Ustawieniach (rozdział 14) (ustawione według kraju: 911 i 933 w USA).
  2. Dodaj każdy budynek pod Miejsca (rozdział 12), z jego adresem ulicznym i sieciami, których używają jego telefony.
  3. Nadaj każdemu numerowi wewnętrznemu jego miejsce, piętro i pokój.
  4. Upewnij się, że trasa wychodząca i trunk obsługują połączenia alarmowe; Stan (rozdział 13) ostrzega, gdy żaden z nich nie jest w stanie to zrobić.
  5. Wypełnij Powiadom i Również e-mail.
  6. Wybierz 933 (w USA), aby usłyszeć adres, który Twój dostawca ma.

Pracownicy zdalni

Telefon, który rejestruje się spoza sieci swojego miejsca, jest pracownikiem zdalnym: jego strona prosi o podanie miejsca, a to miejsce jest używane zamiast. Alerty mówią, kiedy nie było potwierdzone.

Tryb awaryjny

Inna rzecz: jeden przełącznik, który kieruje każde przychodzące połączenie do jednego miejsca (ewakuacja, zamknięcie, zdarzenie). Ustaw, gdzie mają być kierowane połączenia, opcjonalny kod, taki jak *55 i rozszerzenia dozwolone do wybrania go w Ustawienia (rozdział 14); włącz go na Pulpicie (rozdział 1), lub wybierając kod (rosnące tony dla włączenia, niski ton dla wyłączenia). Czerwona belka jest wyświetlana na każdym ekranie, gdy jest włączona.

Rozdział 12

Miejsca i biurowy 911

W interfejsie sieciowym: /sites

Miejsce to budynek: jego adres ulicy i sieci, których używają jego telefony. Miejsca są tym, jak połączenie awaryjne mówi, gdzie jest dzwoniący, aż do piętra i pokoju. W Stanach Zjednoczonych Kari's Law i RAY BAUM'S Act wymagają dokładnie tego od systemów telefonicznych dla firm.

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

Dodawanie miejsca

Na Miejscach (rozdział 12), naciśnij Dodaj:

PoleCo to jest
Nazwato, jak ludzie je nazywają: Centrala
Ulica, Miasto, Województwo lub prowincja, Kod pocztowy, Krajadres miejsca, do którego są wysyłani odpowiedziacy
Siecizakresy adresowe używane przez jego telefony, takie jak 10.1.0.0/16; jeden na linii

Następnie dla każdego numeru wewnętrznego podaj jego lokalizację, piętro i pokój. Health (rozdział 13) wyświetla numery wewnętrzne bez podanej lokalizacji.

Jak znaleźć miejsce telefonu

  1. Telefon rejestrujący się z jednej z sieci witryny znajduje się w tej witrynie, z numerem rozszerzenia piętra i pokoju.
  2. Gorący biurko przenosi własną witrynę, piętro i pokój biurka, a nie osobę zalogowaną (Hot desking (rozdział 36)).
  3. Telefon rejestrujący się spoza sieci każdej witryny jest pracownikiem zdalnym. Podczas pierwszej rejestracji z możliwością awaryjnego połączenia z nowego miejsca, użytkownik jest proszony o potwierdzenie swojego adresu na stronie telefonu; połączenia awaryjne są następnie przekazywane z tym adresem.
  4. Jeśli pracownik zdalny nigdy nie potwierdził, połączenie wciąż jest nawiązane, z zwykłą witryną rozszerzenia, a alerty mówią, że adres nie został potwierdzony.

Lokalne alerty

Z ustawieniem E-mail, gdy ktoś wybiera 911 w ustawieniach, osoby tam wymienione otrzymują nazwę osoby dzwoniącej, numer wewnętrzny, lokalizację, piętro i pokój, tak szybko, jak tylko rozpocznie się połączenie na numer alarmowy, aby ktoś mógł spotkać się z osobami udzielającymi pomocy przy drzwiach. Ekstensje Powiadom otrzymują wiadomość na swoich telefonach, a każdy otwarty ekran BitVoice wyświetla alert. Zobacz Połączenia alarmowe (rozdział 11).

Rozdział 13

Stan

W interfejsie sieciowym: /health

Stan mówi, czy system jest gotowy do połączeń i jeśli nie, co zrobić. Każda linia mówi, co jest nie tak w zwykłych słowach i łączy się z ekranem, na którym można to naprawić. Sprawdź to po każdej zmianie o dowolnym rozmiarze.

Co sprawdza

SprawdźDlaczego to ma znaczenie
Połączenia awaryjne mogą wyjśćtrasa i działająca trasa przenoszą numery awaryjne
Rozszerzenia bez lokalizacji awaryjnejich połączenia 911 nie przeniosłyby piętra ani pokoju
Usługa telefonicznaSIP nasłuchuje i na którym porcie
Telefony niepołączonerozszerzenia, do których nikt nie zalogował się
Trasyzarejestrowane lub powód, dla którego nie są
Menu bez nagranego komunikatudzwoniący usłyszeliby ciszę
Strefa czasowaharmonogramy są jej podporządkowane
Nagrania i ich przechowywaniemiejsce na dysku i jak długo nagrania są przechowywane
Certyfikatykiedy certyfikat TLS wygasa
Skarbnice kluczysekrety, których skarbnica nie może odczytać
Inne serwerykiedy kilka serwerów dzieli bazę danych, czy każdy z nich działa

Problemy są pokolorowane: czerwony zatrzymuje połączenia (brak trasy awaryjnej), amber powinien być sprawdzony (telefon niepołączony), a szary jest dla informacji.

Rozdział 14

Ustawienia

W interfejsie sieciowym: /settings

Ustawienia zawierają wszystko o systemie jako całości. Każda sekcja zapisuje się osobno, a każde zapisywanie jest rewizją na Zmiany (rozdział 61).

SekcjaCo się tam znajduje
Systemnazwa, kraj, strefa czasowa, język, publiczny adres telefonów i dostawców
Numerytest echa, numery poczty głosowej i parkowania, oraz numery awaryjne
Kodekikodeki, które telefony mogą używać, najlepsze jako pierwsze (Kodeki (rozdział 66))
Nagrywanie połączeńwyłączone, każde połączenie, lub wybrane rozszerzenia; reguły zgody; jak długo nagrania są przechowywane
Dźwiękczyszczenie dla poczty głosowej i podczas połączeń
Ochronazakazy po nieudanych logowaniach, zaufane sieci, połączenia na rozszerzenie, numery premium
Awaryjnewysłanie adresu dzwoniącego, kto jest powiadamiany, kto jest wysyłany e-mailem, tryb awaryjny
Sztuczna inteligencjausługa sztucznej inteligencji, modele i które funkcje sztucznej inteligencji są włączone (Sztuczna inteligencja (rozdział 28))
Logowanie jednokrotnedostawca tożsamości (Logowanie jednokrotne (rozdział 58))
Kompatybilność z AsteriskAMI i ARI dla programów napisanych dla Asterisk (Kompatybilność z Asterisk (rozdział 70))
Asystenci sztucznej inteligencji (MCP)czy asystenci sztucznej inteligencji, tacy jak Claude lub ChatGPT, mogą się łączyć, i czy mogą działać (Asystenci sztucznej inteligencji (rozdział 71))
Microsoft 365 i Google Workspaceludzie i współdzielone kontakty do Kontaktów, oraz kalendarze dla osób, które są nieobecne (Kontakty (rozdział 38), Kalendarze (rozdział 39))
Aplikacje mobilneusługa push, która budzi aplikacje
E-mailserwer pocztowy, przez który przechodzą poczta głosowa, faksy i alerty
Skarbnice kluczytajemnice przechowywane w AWS Secrets Manager lub Azure Key Vault
Konfiguracja z Gitutrzymanie konfiguracji w zgodzie z plikiem w repozytorium
Baza danychSQLite lub PostgreSQL (Baza danych (rozdział 64))
Certyfikatcertyfikat dla tego interfejsu i SIP przez TLS: z Let's Encrypt, zainstalowany ręcznie, lub własny certyfikat BitVoice

Hasła i klucze nie są już wyświetlane po zapisaniu; pozostaw je puste, aby je zachować. Widzowie widzą Ustawienia z usuniętymi wszystkimi tajemnicami.

Certyfikat i Let's Encrypt

BitVoice zaczyna się od certyfikatu, który sam wygenerował, o którym przeglądarki i telefony ostrzegają. Dla serwera z publiczną nazwą, włącz Let's Encrypt pod Certyfikat: wprowadź nazwy (pbx.example.com), opcjonalnie adres e-mail, i zastosuj. BitVoice pobiera bezpłatny certyfikat z Let's Encrypt, używa go natychmiast dla interfejsu sieciowego, SIP przez TLS i Teams, oraz odnawia go około 30 dni przed jego zakończeniem (certyfikaty Let's Encrypt trwają 90 dni lub mniej). Wiersz stanu mówi, kiedy został wydany, kiedy odnawia się i, jeśli nie powiódł się, dlaczego; ponawia próbę po godzinie, potem rzadziej, w ramach limitów Let's Encrypt. Sprawdź teraz próbuje od razu.

Let's Encrypt musi mieć dostęp do serwera pod każdą nazwą z internetu, aby udowodnić, że jest ona Twoja:

Inne władze ACME, które nie wymagają powiązania konta (własny step-ca firmy, usługa testowa Let's Encrypt), są wybierane pod Władzą. Nazwy wildcard wymagają dowodów DNS, których BitVoice nie wykonuje: zainstaluj te certyfikaty ręcznie. Każdy serwer klastra otrzymuje swój własny certyfikat.

Rozdział 15

Ekran w Twoim języku

Ekran BitVoice jest dostępny w języku angielskim i w trzynastu innych językach: niemieckim, francuskim, hiszpańskim, włoskim, portugalskim, niderlandzkim, polskim, szwedzkim, duńskim, norweskim bokmål, fińskim, japońskim i chińskim uproszczonym.

Wybór jednego

Każda przeglądarka ma swój język: wybierz go w menu (lista języków obok motywów), na stronie logowania lub na pierwszej stronie kreatora instalacji. Do momentu wyboru BitVoice używa języka przeglądarki, jeśli jest to jeden z nich, w przeciwnym razie angielski. Wybór jest przechowywany tylko w tej przeglądarce: dwie osoby przy jednym serwerze mogą pracować każda w swoim języku.

Wszystko na ekranach jest przetłumaczone: menu, nagłówki, przyciski, podpowiedzi, wiadomości z serwera i nazwy ogłaszane przez czytniki ekranu. Wyszukiwanie (⌘K) znajduje stronę według jej nazwy w Twoim języku lub w języku angielskim. Pozostawione bez zmian: to, co ludzie wpisują (nazwy, numery, notatki), adresy, kody, skrypty w edytorach i nazwy produktów i protokołów. Daty i numery są zgodne z ustawieniami przeglądarki.

Jak to jest tłumaczone i jak dobrze

Tłumaczenia są wykonywane przez maszynę (duży model językowy), dla każdego kawałka tekstu, który wyświetlają ekran, około 5 000 z nich; żaden z nich nie został sprawdzony przez osobę. Niektóre zdania, które ekran buduje z części (liczba i słowo), mogą brzmieć niezręcznie, a termin może być tłumaczony na dwa sposoby w dwóch miejscach. Cokolwiek nie ma tłumaczenia, takie jak ekran nowszy niż tłumaczenia, pozostaje w języku angielskim.

Pomoc zachowuje tę instrukcję w języku angielskim, tak jak została napisana, z linkiem na górze każdego rozdziału do tego samego rozdziału przetłumaczonego całościowo (również przez maszynę) na bitvoice.org.

Strona telefonu jest oddzielna: to, co słyszą dzwoniący (polecenia, menu poczty głosowej), jest w domyślnym języku poleceń (Dźwięki (rozdział 20)), chyba że rozszerzenie lub kolejka mają swój własny język.

Część 2

Gdzie trafiają połączenia

Podstawowe elementy, przez które przechodzą dzwoniący: grupy i kolejki, menu i harmonogramy, skrypty i sztuczny recepcjonista, poczta głosowa, oraz diagram, który to wszystko pokazuje.

Rozdział 16

Przepływ połączeń

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

Sprawdź każdą sytuację

Sprawdź każdą sytuację, u góry Przepływ połączeń (rozdział 16), próbuje całego planu połączeń w każdej sytuacji, w której może się znajdować, a nie w próbce:

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.

Ten sam test jest uruchamiany na zmianach przed ich wprowadzeniem: propozycja z Zapytaj w prostych słowach i Przywróć tę rewizję starej wersji również wyświetlają, co ta zmiana złamie, co dzisiaj działa.

Wypróbuj połączenie

Wprowadź, kto dzwoni (rozszerzenie lub numer zewnętrzny), co wprowadza i kiedy, a następnie naciśnij Wypróbuj. BitVoice śledzi połączenie dokładnie tak, jakby to było prawdziwe, bez dzwonienia: trasę przychodzącą, harmonogramy w tym czasie, skrypty routingu (wykonują się w swojej piaskownicy), menu, grupy i kolejki, oraz co się dzieje, jeśli nikt nie odpowie. Ścieżka, którą przejmuje to połączenie, jest oznaczona; inne drogi (klawisze menu, inna strona harmonogramu) mogą być otwarte. Zielony kolor oznacza, że działa, amber oznacza, że należy to sprawdzić (niepodłączony telefon, skrypt, który wycofuje się), czerwony kolor oznacza, że połączenie kończy się tam. Zaznacz Załóż, że każdy telefon jest podłączony, aby zobaczyć plan tak, jak został zaprojektowany, a nie tak, jak jest teraz; Przylega na wybiera trunk dla tras, które przyjmują tylko jeden.

Diagram

Diagram pokazuje, gdzie połączenia z zewnątrz idą, pudełko po pudełku: każda trasa przychodząca, a następnie menu, grupy, kolejki, harmonogramy, skrypty i ludzie, do których prowadzi.

Kliknij pudełko (lub przejdź do niego za pomocą klawisza Tab i naciśnij Enter), aby zmienić, dokąd połączenia idą z niego: destynację trasy, rozszerzenie lub grupę Jeśli nikt nie odpowie, otwarte i zamknięte destynacje harmonogramu, klawisze menu (dodaj lub usuń klawisze tam), skrypt lub osobę recepcjonistki. Zapisywanie sprawdza zmianę, tak jak każdą inną, i tworzy rewizję. Otwórz pełny edytor przechodzi do strony elementu. Dodaj trasę przychodzącą dodaje trasę bez opuszczania diagramu.

Rozdział 17

Grupy dzwonienia

W interfejsie sieciowym: /ring-groups

Grupa dzwonienia to jeden numer, który dzwoni do kilku rozszerzeń: zespół sprzedaży, biurko i jego zapas, każdy w warsztacie.

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

Strategie dzwonienia

Członkowie, którzy są nieobecni (w spotkaniu w kalendarzu lub z trybem nie przeszkadzać), są pomijani; grupa dzwoni do innych. Członkowie z aplikacją mobilną są budzeni przez powiadomienie i dzwonieniem również.

Jeśli nikt nie odpowie

Gdy nikt nie odpowie w czasie dzwonienia, połączenie idzie do Jeśli nikt nie odpowie: poczty głosowej członka, kolejki, menu, innego zespołu. Bez ustawienia, dzwoni, aż dzwoniący się poddaje.

Grupy, kolejki czy odbiór?

UżycieKiedy
Grupa dzwonieniakilku ludzi, z których każdy może wziąć połączenie, i połączenie powinno dzwonić teraz
Kolejkadzwoniący mogą musieć czekać na kogoś wolnego, i powinni słyszeć swoje miejsce
Grupa odbiorukażda osoba ma swoje połączenia, ale koledzy mogą odpowiedzieć za nich
Rozdział 18

Kolejki

W interfejsie sieciowym: /queues

Kolejka trzyma dzwoniących w kolejności, z muzyką, i dzwoni do następnego wolnego agenta. Jest sercem centrum kontaktowego i przydatna w każdym biurze, gdzie połączenia przychodzą szybciej, niż ludzie mogą je odebrać.

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

Jak są oferowane połączenia

StrategiaKto jest wybierany
Najdłużej bezczynnywolny agent, który najdłużej czekał od swojego ostatniego połączenia
Kolankokażdy wolny agent z kolei, kontynuując od ostatniego
Dzwonienie wszystkimkażdy wolny agent jednocześnie
Najmniej połączeńagent, który odebrał najmniej połączeń dzisiaj
W kolejności (liniowej)zawsze z samej góry listy: pierwszy wolny agent
Losowodowolny wolny agent, przez przypadek
Losowo ważoneprzez przypadek, agenci z niższą karą są wybierani znacznie częściej

Ekran Kolejki jest żywą tablicą: kto czeka, jak długo i stan każdego agenta.

Agenci

Agenci wybierają *45, aby zalogować się lub wylogować z każdej kolejki, i *46, aby wstrzymać (przerwę) i wznowić; wstrzymani i wylogowani agenci nie są oferowani połączenia. Tablica ma te same przyciski i pokazuje, dlaczego agent wstrzymał.

StanZnaczenie
dostępnywolny; zostanie oferowany następnemu połączeniu
dzwoniącyjest oferowany połączenie
zajętyw trakcie połączenia
czas oczekiwaniawłaśnie skończył; czas oczekiwania jest uruchomiony
wstrzymanyna przerwie, z podanym powodem
nieobecnyna spotkaniu lub urlopie, z jego kalendarza
wylogowanynie przyjmuje połączeń kolejki w ogóle

Nadzorcy

Na Połączenia na żywo (rozdział 46), Nadzoruj dzwoni do telefonu nadzorcy; kiedy odpowie, może słuchać (słyszany przez nikogo), szepnąć (słyszany tylko przez agenta) lub wtrącić się (słyszany przez obu), i może przełączać się między nimi w trakcie połączenia.

Kolejki przyklejone i VIP

Włącz Przyklejone w kolejce i powracający połączenie (jedno odebrane w ciągu ostatnich 30 dni, lub tyle, ile ustawisz) jest oferowane najpierw agentowi, który odebrał je ostatnim razem, jeśli ten agent jest wolny; jeśli nie odpowie, kolejka kontynuuje normalnie. VIP połączenia, u dołu Kolejek, idą na przód każdej kolejki, którą wybierają, po każdym VIP już oczekującym, i są oznaczone jako VIP na tablicy.

Rozdział 19

Wydzwonienie wychodzące

W interfejsie sieciowym: /dialer

Wydzwonienie wychodzące (rozdział 19) wyzwala listy kontaktów dla agentów kolejki (rozdział 18): odnowienia, przypomnienia o spotkaniach, windykacje, ankiety. Każda kampania ma swoją kolejkę, listę i sposób wyzwania:

TrybJak wyzwala
Podglądagent prosi o następny kontakt, widzi jego szczegóły, a następnie wyzwala go (ich telefon dzwoni najpierw) lub pomija
Postępowyjedno połączenie dla każdego wolnego agenta
Mocustalona liczba połączeń dla każdego wolnego agenta (1 do 3)
PrzewidywanyBitVoice dostosowuje połączenia na agenta, nachylając się, gdy niewiele połączeń jest porzucanych i cofając się, gdy wskaźnik porzucania zbliża się do limitu
  1. Dodaj kampanię: jej kolejkę, identyfikator wywołującego (numer, który kontakty widzą), godziny, w których połączenia mogą być wykonywane w strefie czasowej, jak długo dzwoni telefon kontaktu, ile prób i jak często.
  2. Otwórz Kontakty i Dodaj listę: plik CSV z nagłówkiem i kolumną o nazwie number (lub phone); name i inne kolumny są wyświetlane agentowi w podglądzie. Duplikaty i uszkodzone numery są pomijane.
  3. Nagrywaj wiadomość (w kampanii): kto dzwoni i dlaczego, oraz "naciśnij 9, jeśli nie chcesz tych połączeń". Odtwarza się ją osobie, która odbiera, gdy nie ma wolnego agenta, i, jeśli wybierzesz, po powitaniu przez automatyczny sekretarz.
  4. Uruchom ją. Wykonuje połączenia tylko w ramach swoich godzin i przestaje dzwonić, gdy jest wstrzymana lub nic nie jest należne.

Ludzie i maszyny. BitVoice nasłuchuje pierwszych sekund po odpowiedzi: długi, nieprzerwany pozdrowienie to automatyczna sekretarka; krótkie "hello?" i pauza to osoba. Maszynę można odłożyć (i spróbować ponownie), zostawić wiadomość lub przekazać do agenta jak każdemu innemu. W razie wątpliwości, przyjmuje odpowiedź za osobę.

Porzucone połączenia. Osoba, która odpowiedziała, gdy nie ma wolnego agenta w ciągu dwóch sekund, słyszy wiadomość i jest liczona jako porzucona. Z mocą i predykcyjnym wybieraniem, jeśli udział porzuconych połączeń w ciągu ostatnich stu odpowiedzi przekracza limit kampanii (3%, chyba że go zmienisz, zasada USA), kampania wybiera jeden wybór na wolnego agenta, aż wróci poniżej. Kampania wyświetla swoje tempo porzucania, połączenia i wolnych agentów na żywo.

Nie wybieraj. Żadna kampania nie wybiera numeru na liście nie wybieraj, niezależnie od listy, z której pochodzi; każdy, kto naciśnie 9 podczas wiadomości, jest dodawany natychmiast. Dodaj numery ręcznie lub za pomocą interfejsu API (POST /api/dnc). Dla krajowego rejestru (w USA, National Do Not Call Registry FTC: pobierz kod obszaru, który wybierasz, jako plik płaski), wybierz plik pod Krajowy rejestr i Importuj: każda linia z numerem jest liczona (212,5550100 jak FTC je zapisuje, lub jeden numer w linii), nagłówki i uszkodzone linie są pomijane i liczona. Z Zastąp ostatni import włączonym, poprzedni pobrany numer jest usuwany najpierw, więc numer, który opuścił rejestr, może być ponownie wybierany; numery dodane ręcznie lub przez naciśnięcie 9 zawsze pozostają. Rejestr musi być odświeżany co najmniej raz na 31 dni (zasady USA); strona liczy listę i ile z niej pochodzi z rejestru. Interfejs API to POST /api/dnc/import?replace=1 z plikiem jako treścią.

Rozdział 20

Dźwięki: nagrania, języki i muzyka w trakcie oczekiwania

W interfejsie sieciowym: /sounds

Dźwięki (rozdział 20) zawiera wszystko, co BitVoice mówi lub odtwarza osobom dzwoniącym, poza powitaniem i nagraniami menu, które są nagrywane tam, gdzie są używane.

Nagrania, w każdym języku

Nagranie to jedna rzecz, którą BitVoice mówi: "Proszę wprowadź swój PIN", "Twoja pozycja w kolejce to", cyfry, które są odczytywane. Katalog nazwisk, DISA, budzenie i ogłoszenia kolejek mówią nimi. BitVoice ma słowa każdego nagrania w języku angielskim, hiszpańskim, francuskim, niemieckim, włoskim, portugalskim, holenderskim i polskim; numery są odczytywane cyfra po cyfrze, co brzmi tak samo w każdym języku.

Muzyka w trakcie oczekiwania

Muzyka w trakcie oczekiwania jest grupowana w klasy (Spokojna, Jazz, Oferty sprzedaży…), każda lista utworów odtwarzanych jeden po drugim, od początku lub losowo. Prześlij utwory o długości do piętnastu minut w dowolnym formacie, który może odczytać przeglądarka; pliki MP3 i WAV mogą być również wysłane bezpośrednio do API (PUT /api/music/{class}/{name}), a BitVoice dekoduje MP3 samodzielnie (MPEG-1, 2 i 2.5 Warstwa III, z dekodorem, który daje te same próbki co minimp3).

Radio internetowa. Klasa może odtwarzać strumień zamiast swoich utworów: wprowadź adres strumienia MP3 (Icecast, Shoutcast, większość stacji radiowych internetowych) w Radio internetowym. BitVoice łączy się, gdy pierwszy rozmówca jest umieszczony w trybie oczekiwania z tą klasą, odtwarza jeden strumień dla wszystkich oczekujących i rozłącza się pół minuty po opuszczeniu przez ostatniego. Gdy strumień nie może być osiągnięty, odtwarzane są utwory klasy (lub ton oczekiwania, bez utworów), a klasa wyświetla powód.

Kto to słyszyJaką muzykę
ktoś umieszczony w trybie oczekiwaniamuzyka wybraną na numerze wewnętrznym osoby trzymającej, w przeciwnym razie domyślną
rozmówca zaparkowanymuzyka osoby, która go zaparkowała, w przeciwnym razie domyślną
rozmówca oczekujący w kolejcemuzyka kolejki, w przeciwnym razie domyślną
rozmówca oczekujący na lidera konferencjidomyślną

Domyślna dla wszystkich może być tonem oczekiwania, więc nic się nie zmienia, dopóki nie wybierzesz muzyki. Wybranie tonu oczekiwania w kolejce lub na numerze wewnętrznym zachowuje ton tam.

Rozdział 22

Katalog wybierania według nazwy

W interfejsie sieciowym: /directories

Katalog wybierania według nazwy (rozdział 22) pozwala rozmówcom na połączenie z kimś bez znajomości ich numeru: wpisują pierwsze litery nazwy na klawiaturze (2 dla ABC, 3 dla DEF, aż do 9 dla WXYZ) i są łączeni.

  1. Dodaj katalog, nazwij go i podaj numer (411, na przykład) lub pozostaw pusty i użyj go jako opcji menu.
  2. Wybierz, co rozmówcy wpisują: nazwisko (zwykle), imię, lub oba.
  3. Wybierz, kto jest wymieniony, lub nikt, aby wymienić wszystkich z telefonem.

Rozmówcy słyszą "Proszę wpisać pierwsze trzy litery nazwy osoby". Jeden pasujący wynik jest łączony od razu. Kilka pasujących wyników jest odczytywanych, po osiem na raz: nazwa każdej osoby, a następnie "aby połączyć się z tą osobą, naciśnij 1", 2 itd., z 9 dla więcej nazw. Brak pasującego wyniku: "Nie ma pasującego", a oni próbują ponownie (trzy próby).

Wymawiane nazwy: nagrywaj nazwę każdej osoby na ich numerze wewnętrznym (Wymawiana nazwa: nagrywaj w przeglądarce lub przesyłaj plik), a katalog ją wymawia; do czasu, gdy odczytuje numer wewnętrzny. Własne słowa katalogu pochodzą z nagrań katalogu w Dźwiękach (rozdział 20), w jego języku.

Rozdział 23

Wydzwonienie (DISA)

W interfejsie sieciowym: /dial-in

Wydzwonienie wewnątrz (rozdział 23) (DISA, "bezpośredni dostęp do systemu wewnętrznego") pozwala komuś na połączenie z zewnątrz, udowodnienie, kim są, i ponowne połączenie się przez biuro: połączenie wychodzące ma identyfikator biura, jego trasy i stawki, jakby byli przy swoim biurku.

  1. Dodaj wydzwonienie, i ustaw PIN (4 do 10 cyfr), numery dozwolone do korzystania z niego (Tylko z tych numerów), lub oba. Jeden z nich jest wymagany.
  2. Wybierz numer wewnętrzny, z którego połączenia są wykonywane: jego pozwolenie na połączenia zewnętrzne, identyfikator i trasy wychodzące mają zastosowanie. Musi on być dozwolony do połączeń zewnętrznych.
  3. Przypisz mu numer do wybrania wewnątrz i prześlij numer telefonu do niego na Trasach połączeń (rozdział 8) (wybierz wydzwonienie jako miejsce przeznaczenia).

Rozmówcy słyszą "Proszę wpisać swój PIN, a następnie naciśnij kratkę", a następnie "Proszę wpisać numer do połączenia, a następnie naciśnij kratkę", i są łączeni. Słowa pochodzą z nagrań wydzwonienia w Dźwiękach (rozdział 20).

Rozdział 24

Boty głosowe (AudioSocket)

W interfejsie sieciowym: /voice-bots

Bota głosowego voice bot (rozdział 24) jest programem własnym (agentem AI, IVR rozpoznającym mowę, nagrywarką), który przyjmuje połączenia za pomocą AudioSocket, prostego protokołu używanego przez Asterisk: BitVoice odpowiada na połączenie, otwiera połączenie TCP z botem i wysyła identyfikator UUID połączenia, a następnie dźwięk wybierającego jako 20 ms ramki 8 kHz 16-bitowego liniowego dźwięku i każde naciśnięte klawisze; dowolny dźwięk, jaki bot wysyła z powrotem, jest odtwarzany wybierającemu. Boty i łączniki usług mowy napisane dla AudioSocket Asterisk działają z BitVoice bez zmian.

  1. Dodaj bota głosowego: jego nazwę, adres bota (10.0.0.9:9092) i, opcjonalnie, numer do wybierania go.
  2. Wybierz, gdzie wybierający trafia jeśli bot nie może przyjąć połączenia lub je przerwie (osoba, kolejka, poczta głosowa): wymagane, aby żaden wybierający nie został kiedykolwiek upuszczony, ponieważ bot jest wyłączony.
  3. Wysyłaj połączenia do niego z Call routing (rozdział 8), opcji menu, harmonogramu lub przełącznika.

Gdy bot wysyła zakończenie AudioSocket, połączenie kończy się; gdy wybierający kończy połączenie, bot otrzymuje jeden. Bot, do którego nie można dotrzeć w ciągu trzech sekund lub którego połączenie zostaje przerwane bez zakończenia, przekazuje wybierającego do awaryjnego, a awaria jest rejestrowana.

Aby wprowadzić program do połączenia już w trakcie (nasłuchujący transkrybent, asystent, który szepce do nikogo), użyj zewnętrznych multimediów ARI: zobacz Asterisk compatibility (rozdział 70).

Rozdział 25

Przełączniki dziennie/nocą

W interfejsie sieciowym: /toggles

Przełącznik day/night toggle (rozdział 25) jest przełącznikiem dla przepływu połączeń (FreePBX nazywa to kontrolą przepływu połączeń). Połączenia wysłane do niego trafiają do jego normalnego miejsca przeznaczenia lub do innego, gdy ktoś przełączył go: biuro zamyka się wcześnie z powodu burzy, ktoś wybiera *281 w drodze na zewnątrz, a połączenia trafiają do poczty głosowej, aż do przełączenia z powrotem rano. Pozostaje tak, jak zostało pozostawione, przez ponowne uruchomienia.

  1. Dodaj przełącznik, nadaj mu kod (1 do 3 cyfr: wybierany po *28) i wybierz, gdzie połączenia trafiają normalnie i gdy są przełączone. Każda strona może być harmonogramem, więc przełącznik może znajdować się przed godzinami otwarcia i zastępować je.
  2. Wybierz, kto może przełączyć go z telefonu (nikt nie wybrany pozwala na każde rozszerzenie).
  3. Wysyłaj połączenia do niego z Call routing (rozdział 8), opcji menu lub harmonogramu, jak każde inne miejsce przeznaczenia.

Przełącz go, wybierając *28 i jego kod (ton rosnący: przełączony; ton malejący: z powrotem do normalnego), z przełącznikiem obok na stronie Przełączniki, lub za pomocą interfejsu API (POST /api/toggles/{id}/state). Klucz lampy zajętej obserwujący *281 jest włączony, gdy ten przełącznik jest przełączony, więc osoba, która zamyka, może go zobaczyć ze swojego biurka. Kod przełącznika sam jest na Kody funkcji (rozdział 32).

Rozdział 26

Harmonogramy

W interfejsie sieciowym: /schedules

Harmonogram wysyła połączenia w jednym kierunku, gdy jesteś otwarty, i w innym, gdy jesteś zamknięty. Wskaż trasę przychodzącą na harmonogram, a harmonogram na menu (otwarte) i pocztę głosową (zamkniętą).

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

Godziny otwarcia

Każda linia godzin to zestaw dni i czas od i do. Dozwolone są wiele linii: od poniedziałku do piątku 9:00 do 17:00, i sobota 10:00 do 13:00. Godziny mogą przekraczać północ (22:00 do 06:00) dla nocnych zmian.

Święta

Święta liczą się jako zamknięte cały dzień, niezależnie od godzin. Dodaj każdą datę z nazwą; nazwa jest wyświetlana na Przepływ połączeń (rozdział 16), gdy próbujesz połączenia w tym dniu.

Strefa czasowa

Strefa czasowa to ta z Ustawień. Gdy zegary się zmieniają, harmonogramy podążają za czasem lokalnym.

Rozdział 27

Skrypty (JavaScript i Lua)

W interfejsie sieciowym: /scripts

Skrypt decyduje, gdzie połączenie idzie, gdy menu, harmonogramy i grupy nie są wystarczające: dzwoniący z jednej okolicy do jednego biura, numery VIP prosto do osoby, decyzja z Twoich własnych danych. Lub, ustawiony na Uruchamia całe połączenie, odpowiada na połączenie i prowadzi je, jak plan połączeń Asterisk lub skrypt AGI: nagrania i mowa, klawisze, nagrania, dzwonienie do ludzi, przekazywanie (poniżej). Skrypty są pisane w JavaScript lub Lua na Skrypty (rozdział 27).

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

Bezpieczne przez projekt

Co widzi skrypt

call ma:

PoleCo to jest
from, fromNamenumer i nazwa osoby dzwoniącej
tonumer wybierany
directioninbound lub internal
trunkłącze, na którym przyjdzie połączenie
weekday, hour, minuteaktualny czas (0 to niedziela)
dateYYYY-MM-DD

Co zwraca

Destynacja, {type, target}: type to extension, ringgroup, queue, menu, schedule, voicemail lub hangup, a target to jego numer. Brak zwróconej wartości używa domyślnego przejęcia. log("text") zapisuje do listy uruchomienia skryptu.

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

Używanie skryptu

Wskazać trasę przychodzącą, klawisz menu lub harmonogram na skrypt, jak na każde miejsce docelowe. Test uruchamia go z połączeniem, które opisujesz, bez umieszczania połączenia; lista uruchomień pokazuje każde prawdziwe uruchomienie ze swoją decyzją, czasem trwania i ewentualnym błędem. Przepływ połączenia (rozdział 16) również uruchamia skrypty podczas próby połączenia.

Skrypty, które uruchamiają całe połączenie

Wybierz Uruchamia całe połączenie. Skrypt następnie odbiera połączenie i przechodzi od góry do dołu, każdy krok czekając, aż zostanie wykonany:

KrokCo robi
play(name)odtwarza komunikat z Dźwięki (rozdział 20) w języku rozmówcy (goodbye, digit-5...), digits:1234, lub dźwięk: beep, confirm, error, off, hold. Komunikat, który jeszcze nie został nagrany, to sygnał dźwiękowy.
say(text)wypowiada słowa za pomocą usługi mowy w Ustawieniach, AI (sygnał dźwiękowy bez niej)
collect({max, timeout, interDigit, end, say, prompt})gromadzi klawisze: maksymalnie max (32), czekając timeout sekund na pierwszy (5) i interDigit na każdy następny (3), aż do end (#). say lub prompt pyta najpierw. Zwraca klawisze, "" gdy nie ma żadnych.
record({box, seconds, beep})nagrywa wiadomość do skrzynki pocztowej rozszerzenia, aż do # lub czasu; zwraca sekundy
wait(seconds)czeka, zwracając wciśnięty klawisz
dial(destination, ringSeconds)dzwoni z sygnałem dzwonienia słyszanym przez rozmówcę. Odpowiedziane: rozmawiają i skrypt jest zakończony (true). Nieodpowiedziane: false, a skrypt kontynuuje.
transfer(destination)przekazuje połączenie; skrypt jest zakończony
hangup()kończy połączenie
log(text)zapisuje do listy uruchomień

Miejsce docelowe to numer (rozszerzenie, grupa dzwonienia lub kolejka tutaj, w przeciwnym razie zewnętrzny numer przez trasę wychodzącą; nigdy numer alarmowy) lub {type, target} jak wyżej. Wciśnięty klawisz podczas dźwięku zatrzymuje go; play i say zwracają go i następny collect zaczyna się od niego. Zwrócenie miejsca docelowego wysyła połączenie tam.

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 ma takie same kroki (collect{max = 1}). Nadaj skryptowi Numer, aby go wywołać z rozszerzenia.

Jego limity utrzymują połączenie w bezpieczeństwie: własny kod skryptu może być uruchomiony maksymalnie przez kwadrans sekundy między dwoma krokami; połączenie może mieć maksymalnie 1 000 kroków; a cały skrypt zatrzymuje się po swoim Najdłuższym uruchomieniu (10 minut, chyba że powiesz inaczej, 60 maksymalnie). Gdy awaryjnie zatrzymuje się, jest zatrzymywany lub kończy się bez zakończenia połączenia lub przekazania go dalej, połączenie idzie do swojego Domyślnego miejsca; dzwoniący, który kończy połączenie, zatrzymuje je natychmiast. Spróbuj uruchamia skrypt z klawiszami, które mówisz, że dzwoniący naciska, i wyświetla każdy krok, bez umieszczenia połączenia.

Rozdział 28

Recepcjonista AI, triage poczty głosowej i pytania

W interfejsie sieciowym: /receptionists

Funkcje AI wykorzystują usługę AI ustawioną w Ustawieniach (rozdział 14): usługę zgodną z OpenAI (OpenRouter domyślnie) lub taką, którą uruchamiasz samodzielnie. To, czego potrzebują, jest wysyłane tam, więc wybierz usługę, której ufasz z połączeniami; dla centrum 911, jego własne chmura rządowa jest uważana za lokalną.

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

Recepcjonista AI

Wybierz recepcjonistę jako miejsce, do którego trafiają połączenia: trasę, opcję menu lub Jeśli nikt nie odpowie rozszerzenia. Mówi, że jest zautomatyzowany, odpowiada tylko z Zatwierdzonej informacji, przyjmuje wiadomość, rezerwuje callback (zobacz Callbacks (rozdział 30)), lub przekazuje do Osoby jest. Naciśnięcie 0 lub poproszenie o osobę zawsze sięga do kogoś, i tak samo jest w przypadku problemu z usługą AI lub modelem mowy: nadawcy nigdy nie są zablokowani z nią.

Modele

Model wykonuje pracę z tekstem: streszczenia, odpowiedzi recepcjonisty i pytania w zwykłych słowach. Konwersja mowy na tekst wymaga modelu, który przyjmuje audio; ustaw go jako Model mowy na tekst (np. google/gemini-2.5-flash na OpenRouter), aby użyć modelu tylko do tekstu dla reszty, takiego jak meta-llama/llama-3.3-70b-instruct.

Rozpoznawanie mowy w budynku

Mowę można spisać bez żadnego modelu językowego: rozpoznawacz mowy (whisper) słucha audio i zapisuje to, co zostało powiedziane, nic więcej. Kto zapisuje mowę, w ustawieniach AI, ma trzy opcje:

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.

Fakty podane podczas rozmowy (bez modelu językowego)

Każdy transkrypt jest również czytany przez reguły, bez modelu językowego, dla faktów, które notuje operator: co się stało, gdzie, ile osób jest rannych (lub że nikt nie jest), stan (oddech, przytomność, krwawienie ...), zagrożenia (pożar, dym, gaz, broń, chemikalia, paliwo), pojazdy, jaki jest stosunek osoby dzwoniącej do osoby potrzebującej pomocy, oraz numer telefonu do kontaktu. Każdy fakt jest wyświetlany z zdaniem, z którego pochodzi, i stroną, która to powiedziała, w Faktach podanych podczas rozmowy transkryptu. Bez modelu, streszczenie jest tworzone tylko na podstawie tych faktów, i o tym informuje.

ZestawFakty znalezioneFakty znalezione, których nikt nie oczekiwał
Szkoleniowy (reguły zostały napisane na jego podstawie)41 z 410
Hold-out, oceniany na zimno, przed napisaniem jakiejkolwiek reguły z niego27 z 40 (67%)2
Hold-out, po drugiej rundzie reguł napisanych z jego błędów40 z 400
Zapieczętowany, oceniany na zimno (żadna reguła nie jest nigdy napisana z niego)23 z 43 (53%)3

Wynik zapieczętowany jest tym, którego można oczekiwać w przypadku połączeń, których nie widział, a trzy zestawy zostały napisane przez tych samych ludzi, co reguły, więc prawdziwe połączenia będą prawdopodobnie gorzej radzić sobie. Przeczytaj fakty obok transkryptu, nigdy zamiast niego.

Większe modele wymagają więcej procesora: serwer, który zapisuje wiele połączeń na raz, powinien zacząć od base, lub użyć jednej maszyny z GPU jako usługi rozpoznawania mowy dla budynku. Na komputerach Apple whisper używa GPU.

Triage poczty głosowej

Z włączoną opcją Transkrybuj i podsumuj pocztę głosową, każda wiadomość jest również oznaczona jako pilna, normalna lub niska priorytet, z jej rodzajem (sprzedaż, wsparcie, rozliczenia...). Pilne wiadomości wywołują alert na ekranie każdego administratora.

Zapytaj w prostych słowach

Na Zmiany (rozdział 61), opisz zmianę ("wyślij połączenia sprzedażowe na pocztę głosową po 17:00"). AI proponuje ją, BitVoice sprawdza ją jak każdą inną zmianę i pokazuje dokładnie, co się zmieni. Nic nie zmienia się, dopóki nie naciśniesz Zastosuj, i staje się rewizją, którą możesz przywrócić. Hasła są nigdy nie są wysyłane do AI.

Rozdział 29

Poczta głosowa

W interfejsie sieciowym: /voicemail

Każde rozszerzenie może mieć skrzynkę pocztową. Dzwoniący, którzy nie są odpowiedziani, słyszą jej powitanie i zostawiają wiadomość; osoba słyszy ją na swoim telefonie, czyta ją na ekranie lub otrzymuje ją mailem.

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.
Rysunek 18. Voicemail: from a missed call to a message you can read

Włączanie

W rozszerzeniu włącz Pocztę głosową. Jeśli nikt nie odpowiedział jest następnie ustawiony na skrzynkę pocztową. Nadaj jej PIN (4 do 10 cyfr): otwiera skrzynkę pocztową z innego telefonu i loguje osobę w portalu pracowników i na stanowiskach pracy.

UstawienieCo robi
Najdłuższa wiadomość10 do 900 sekund (180 domyślnie)
Email nowych wiadomościna adres e-mail rozszerzenia, z załączoną wiadomością
Powitanienagrane w przeglądarce, przesłane lub nagrane z telefonu; bez niego dzwoniący słyszą sygnał dźwiękowy

Słuchanie

Z AI

Z Transkrypcją i podsumowaniem poczty głosowej włączonym (Ustawienia, AI), każda wiadomość jest wypisana, podsumowana w linii i oznaczona jako pilna, normalna lub niska z jej rodzajem (sprzedaż, wsparcie, rozliczenia). Pilne wiadomości podnoszą alert na ekranie każdego administratora. Zobacz AI (rozdział 28).

Czyszczenie dźwięku

Czyszczenie dźwięku (Ustawienia) usuwa stały szum tła i wyrównuje poziomy, gdy wiadomości są zapisywane, więc wiadomość z samochodu lub z zatłoczonej ulicy jest łatwiejsza do usłyszenia.

Rozdział 30

Callbacki

W interfejsie sieciowym: /callbacks

Ludzie, którzy poprosili o oddzwonienie. AI recepcjonista rezerwuje jeden, gdy dzwoniący poprosi: zbiera ich imię, numer do wywołania (oferując numer, z którego dzwoni), dogodny czas i o co chodzi, odczytuje im to, i rezerwuje tylko wtedy, gdy dzwoniący zgadza się. Nigdy nie obiecuje dokładnego czasu. Administratorzy mogą również dodawać callbacki ręcznie.

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

Nowy callback wyświetla alert na każdym otwartym ekranie i jest wysyłany do właściciela skrzynki odbiorczej Odbierz wiadomości dla recepcjonisty, gdy ta rozszerzenie ma adres e-mail i e-mail jest skonfigurowany w Ustawieniach.

Aby oddzwonić, wybierz swoje rozszerzenie i naciśnij Oddzwonić: twoje telefon dzwoni najpierw, a gdy odbierzesz, BitVoice wywołuje numer dla ciebie, z twoimi normalnymi trasami i identyfikatorem dzwoniącego. Następnie dodaj notatkę, jeśli chcesz, i naciśnij Gotowe (lub Anuluj). Zakończone callbacki są przechowywane poniżej otwartych i mogą być ponownie otwarte.

Część 3

Codzienne połączenia

Co ludzie robią na swoich telefonach każdego dnia, oraz co ustawiają dla siebie: przekierowania, follow-me, odbiór, sale konferencyjne, paging, hot deski, faksy i wiadomości tekstowe.

Rozdział 32

Kody funkcji, przekazywanie i szybkie numery

W interfejsie sieciowym: /codes

Kody funkcji to to, co ludzie wybierają na swoich telefonach, aby zmienić swoje własne ustawienia i uzyskać dostęp do funkcji. Działają one na każdym telefonie, telefonie biurkowym lub softfonie, bez konieczności konfigurowania czegokolwiek na samym telefonie. Rosnący ton oznacza wykonanie; malejący ton oznacza odmowę.

Kody w skrócie

KodCo robi
*72przekieruj każde połączenie (następnie numer i #, lub numer bezpośrednio po: *722125550199)
*73zatrzymaj przekierowanie każdego połączenia
*90 / *91przekieruj podczas połączenia / zatrzymaj
*52 / *53przekieruj, gdy nie odpowiedziano / zatrzymaj
*78 / *79nie przeszkadzaj włączony / wyłączony
*76przełącz nie przeszkadzaj (rosnący ton: teraz włączony)
*21przełącz follow-me włączony i wyłączony
*8odpowiedz na połączenie dzwoniące w Twojej grupie odbioru
** i rozszerzenieodpowiedz na połączenie dzwoniące na tym rozszerzeniu
*80 i rozszerzenieinterkom: ten telefon odpowiada na swoim głośniku
*0 i kodszybki wybór
*62wezwanie do pracy: usłysz je, zarezerwuj je (cztery cyfry, takie jak 0630) lub anuluj je (gwiazdka)
*68 i cyfrastatus pokoju, do obsługi hotelowej
*28 i kod przełącznikaprzełącz przełącznik dzień/noc (rozdział 25) lub wróć
*32zablokuj ostatniego dzwoniącego: ostatni zewnętrzny numer, który dzwonił na ten telefon, trafia na listę blokowania (Ochrona przed spamem (rozdział 56))
*43test echa
*97Twoja skrzynka pocztowa
70zaparkuj połączenie (przenieś je tutaj); 71 do 79 odbiera je
*45 / *46agenci kolejki: zaloguj się lub wyloguj / wstrzymaj lub wznowij
*33 / *34zaloguj się / wyloguj na gorącym biurku
*7 / *8 podczas połączeniawstrzymaj i wznowij nagrywanie (płatności kartą)

Przekazywanie

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

Przekazywanie do innego rozszerzenia używa własnych ustawień tego rozszerzenia (jego skrzynki pocztowej, jego follow-me), do czterech skoków, aby dwie osoby przekazujące do siebie nie utworzyły pętli. Przekazywanie do zewnętrznego numeru przechodzi przez trasę wychodzącą, jakby osoba wybrała go, i wymaga, aby rozszerzenie było dozwolone do połączeń zewnętrznych.

Przekazywanie jest stanem na żywo, a nie konfiguracją: ustawienie go nie tworzy żadnej rewizji, a jest zachowywane podczas ponownych uruchomień. Rozszerzenia (rozdział 3) i portal personelu pokazują i zmieniają je również.

Nie przeszkadzać

*78 włączone, *79 wyłączone, *76 przełącza. Z nie przeszkadzaj włączone, połączenia są kierowane do skrzynki pocztowej lub do miejsca docelowego nieodebranej odpowiedzi. Nie przeszkadzaj ustawione ręcznie wygrywa z kalendarzem (Kalendarze (rozdział 39)). Nadal dzwonią połączenia awaryjne.

Follow-me

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

*21 przełącza tryb follow-me włączony i wyłączony, dla rozszerzeń, które mają ustawione numery follow-me (na rozszerzeniu lub w portalu pracowników). Piersiście dzwoni telefon komutowany, a następnie numery follow-me, jeden po drugim lub wszystkie naraz. Na numerze zewnętrznym z naciśnij 1 osoba słyszy sygnał i naciska 1, aby odebrać połączenie; voicemail lub cisza nigdy nie robi, a po 15 sekundach połączenie przechodzi dalej.

Odbieranie połączenia kogoś innego

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

Interkom

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

*80 i rozszerzenie wywołuje je z auto-odpowiedzią: jego telefon odpowiada na głośniku, a obie strony rozmawiają. Yealink, Grandstream i Snom czytają nagłówek Call-Info BitVoice, Poly czyta Alert-Info; niektóre telefony wymagają zezwolenia na interkom w swoich własnych ustawieniach. Rozszerzenie może odmówić interkomu; wtedy połączenie dzwoni normalnie. Bramy wejściowe nigdy nie przyjmują interkomu.

Szybkie numery

*0 i kod wybiera zapisany numer: *05. Szybkie numery firmy są na tej stronie; każda osoba może mieć swoje własne na swoim rozszerzeniu lub w portalu pracowników, a ich numery mają pierwszeństwo przed firmowymi o tym samym kodzie. Kody są od 1 do 3 cyfr.

Zmiana kodów

Każdy kod może być zmieniony na Kody funkcji (rozdział 32), lub wyłączony słowem off. Dwie funkcje nie mogą dzielić tego samego kodu, a żaden kod nie może być numerem rozszerzenia lub grupy: BitVoice wskazuje, który z nich koliduje. Numery echa, voicemail i parkowania są w Ustawieniach (rozdział 14).

Rozdział 33

Portal pracowniczy

Portal pracowniczy pozwala każdemu zająć się własnymi połączeniami bez administratora: nie przeszkadzać, przekierowywać, śledzić, numery szybkiego wybierania, pocztę głosową i jej powitanie, ich PIN, oraz listę własnych połączeń. Jest on dostępny pod adresem #/me na adresie serwera i jest połączony z stroną logowania.

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

Logowanie

Ludzie logują się za pomocą swojego numeru rozszerzenia i PIN-u poczty głosowej: tego samego PIN-u, który otwiera ich pocztę głosową z telefonu i loguje się na stanowiskach pracy. Rozszerzenie bez PIN-u nie może się zalogować; administrator ustawia jeden na rozszerzeniu.

Powtarzające się nieudane próby logowania z jednego adresu zamykają go na 10 minut. Sesja portalu sięga tylko do ustawień osoby: nigdy do innego rozszerzenia, konfiguracji lub nagrania kogoś innego.

Co ludzie mogą robić

ZakładkaCo jest tam
Gdzie idą połączenianie przeszkadzać; przekierowywanie każdego połączenia, gdy zajęty i gdy nie odpowiedziano; numery śledzące; własne numery szybkiego wybierania
Poczta głosowawiadomości do odtworzenia i usunięcia, z transkrypcjami i podsumowaniami, gdy włączone jest AI; nagrywać lub przesyłać powitanie
Twoje połączeniawłasne połączenia osoby, najnowsze jako pierwsze, bez nagrań
PINzmienić PIN, podając bieżący

Przekierowywanie i nie przeszkadzać ustawione tutaj są takie same, jak te ustawione z telefonu za pomocą kodów funkcji (Kody funkcji (rozdział 32)): którejkolwiek z nich było ustawione jako ostatnie, obowiązuje. Numery śledzące i numery szybkiego wybierania są częścią konfiguracji rozszerzenia, więc ich zmiana tworzy rewizję na Zmiany (rozdział 61), zarejestrowaną jako własna osoba.

Czat i obecność

Zakładka Czat na portalu wyświetla listę współpracowników wraz z ich aktualnym stanem: dostępny, w trakcie połączenia, czeka na połączenie, nie dostępny (nie przeszkadzać, spotkanie lub urlop z kalendarza, z podaniem powodu) lub offline (brak połączenia z telefonem), oraz status wprowadzony przez użytkownika ("Przerwa na lunch, powrót o 14"). Wybierz osobę, aby wysłać jej wiadomość; wiadomości są dostarczane natychmiast, a liczba obok nazwy wskazuje nieprzeczytane wiadomości. Pokoje zespołowe (Ustawienia, Czat pracowników) to rozmowy grupowe lub dla wszystkich, gdy pokój nie zawiera listy członków.

Wiadomości są widoczne tylko dla osób biorących udział w rozmowie: administratorzy zarządzają pokojami, ale nie mają dostępu do ich zawartości. Ustawienia, Czat pracowników umożliwiają wyłączenie czatu oraz ustalenie czasu przechowywania wiadomości (0 oznacza przechowywanie najnowszych 1000 wiadomości w każdej rozmowie).

Rozdział 34

Pokoje konferencyjne

W interfejsie sieciowym: /conferences

Pokój konferencyjny to numer, który ludzie wybierają, aby rozmawiać ze sobą. Pracownicy łączą się z nim z własnych stanowisk; osoby spoza firmy łączą się za pomocą tras przychodzących lub opcji menu, które wskazują na pokój.

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

Konfigurowanie pokoju

  1. Otwórz Pokoje konferencyjne (rozdział 34) i kliknij Dodaj pokój konferencyjny.
  2. Nadaj mu numer (dowolny wolny numer, domyślnie 500) i nazwę.
  3. Opcjonalnie ustaw PIN. Dzwoniący słyszą sygnał, wprowadzają PIN i naciskają #. Trzy nieprawidłowe PIN-y i połączenie kończy się.
  4. Opcjonalnie ustaw PIN lidera, inny niż PIN. Osoba, która go wprowadzi, dołącza jako lider.
  5. Aby umożliwić osobom spoza firmy dołączenie, wskąż trasę przychodzącą (lub klucz menu) na pokój.

Opcje

OpcjaCo robi
Czekaj na liderawszyscy inni słyszą sygnał oczekiwania, aż lider dołączy; gdy ostatni lider opuści pokój, pokój zostaje zamknięty i wszyscy są rozłączeni. Wymaga PIN-u lidera.
Członkowie dołączają z wyciszeniemna briefingi i wykłady: liderzy mówią, członkowie słuchają. Członek naciska 1, aby poprosić o możliwość mówienia, a lider odcisza go.
Nagrywaj pokójcały pokój jest nagrywany jako jeden nagranie w Historii połączeń (rozdział 47), chyba że nagrywanie jest wyłączone dla całego systemu
Sygnały, gdy ludzie dołączają i opuszczająwłączone domyślnie
Najwięcej osób na raz50 domyślnie, do 200

Klucze podczas połączenia

Podczas używania pokoju

Strona wyświetla każdy używany pokój: kto jest w środku, kto mówi (zielone światło), kto jest wyciszony, kto poprosił o możliwość mówienia, i kto wciąż czeka na lidera. Administrator może wyciszyć lub odciszyć każdego, usunąć kogoś, i zablokować lub odblokować pokój.

Wszyscy w pokoju słyszą wszystkich innych, którzy nie są wyciszeni, mieszanych przez BitVoice; każdy telefon może używać własnego kodeka. Nagranie połączenia jest przechowywane dla każdej osoby, oraz jedno dla samego pokoju z jego długością i nagraniem.

Dźwięk HD

Włącz Dźwięk HD w pokoju (nowe pokoje mają go włączone) i jest on mieszany z częstotliwością 16 kHz zamiast 8: osoby z telefonami szerokopasmowymi (G.722, Opus, telefon przeglądarki) słyszą się nawzajem w jakości HD, z wyrazistością nowoczesnego połączenia, podczas gdy osoby z zwykłymi telefonami (G.711, komórki przez dostawcę) słyszą ten sam pokój, jak zwykle. Widok na żywo oznacza pokój i każdego członka, który jest w HD. Dźwięk HD wymaga G.722 wśród kodeków używanych przez telefony (jest pierwszy na liście systemu, Ustawienia, Kodeki). Nagrania pokoju pozostają w jakości telefonicznej.

Pokoje wideo

Ustaw Wideo w pokoju i telefony wideo (oraz softfony) dołączające do niego wysyłają obraz z kamery i widzą jeden obraz, przełączany, gdy ludzie mówią, jak w Asterisk's ConfBridge:

BitVoice przełącza obrazy bez dekodowania ich, więc kosztuje to prawie nic, i prosi każdy nowy telefon o pełny kadr (RTCP PLI i FIR, oraz SIP INFO picture-fast-update, na które większość telefonów biurkowych odpowiada) tak, aby przełączenie było widoczne natychmiast. Każdy członek wideo używa kodeka wideo pokoju (H.264, chyba że wybierzesz VP8); telefon bez niego dołącza z dźwiękiem tylko. Każdy widz otrzymuje jeden stabilny strumień (jeden źródło, jego własny typ ładunku), niezależnie od tego, kto jest na ekranie. Widok na żywo oznacza, kto ma wideo i kto jest na ekranie.

Siatkę tworzy się inaczej: BitVoice wysyła każde zdjęcie do ffmpeg na serwerze, który je odszyfrowuje, umieszcza w zdjęciu o rozdzielczości 1280 na 720 punktów, przy 15 klatkach na sekundę, a następnie koduje je jeden raz dla wszystkich. Zainstaluj ffmpeg (Ustawienia, Konwersja wideo, wskazuje, czy został znaleziony); bez niego sala siatkowa podąża za mówcą, a ekran sali sygnalizuje to. Każde zdjęcie kosztuje czas procesora: na małym serwerze ograniczaj siatki do kilku sal na raz. Wyświetlane są tylko członkowie, którzy wysyłają sygnał wideo: ktoś, kto dołącza bez wideo lub kogo kamera przestaje działać, opuszcza siatkę (nigdy nie zastyga na nieruchomej kamerze), a siatka jest odtwarzana w ciągu kilku sekund, gdy się to zmienia, z krótką przerwą w obrazie. Dziesiąty i kolejny członek są słyszani, ale nie widziani. Widok na żywo oznacza rozmiar siatki i kto jest w siatce.

Wideo wszystkich (przeglądarki)

Wybierz Wideo wszystkich i sala otrzymuje własną stronę (Sale konferencyjne, Otwórz salę wideo, lub #/video-room/NUMBER). Każda osoba tam naciska Dołącz z moją kamerą: przeglądarka wysyła swoją kamerę raz, w trzech rozmiarach (simulcast), i otrzymuje każdą inną kamerę w swoim własnym zdjęciu. BitVoice przekazuje obrazy tak, jak zostały odebrane, nigdy nie odszyfrowując ich (wybiórcza jednostka przekazywania, SFU), więc zużywa niewiele czasu procesora; upload każdej przeglądarki i download każdego widza to to, co ogranicza salę, więc może pomieścić do 16 kamer.

Udostępnianie ekranu: naciśnij Udostępnij mój ekran i wybierz ekran, okno lub kartę przeglądarki w wyborze przeglądarki. Każdy w pokoju widzi go jako duże zdjęcie, pod Twoim imieniem, z zachowanym tekstem (szybkość zdjęcia maleje zamiast tego, gdy sieć jest krótka). Nie musisz dołączać kamery wcześniej. Przestań udostępniać, lub pasek Przestań udostępniać przeglądarki, kończy to.

Rozdział 35

Pagowanie i głośniki nadawcze

W interfejsie sieciowym: /paging

Pagowanie mówi przez wiele telefonów na raz: wybierz numer pagowania, a każdy telefon w grupie odpowie na głośniku samodzielnie. Używaj go do ogłoszeń do magazynu, szkoły, parkietu sklepu.

Konfiguracja grupy paginacyjnej

  1. Na Paginacja (rozdział 35) naciśnij Dodaj grupę paginacyjną i nadaj jej numer (domyślnie 800) i nazwę.
  2. Wybierz telefony. Głośniki sufitowe skonfigurowane jako numery wewnętrzne (typ Głośnik sufitowy) również mogą być członkami.
  3. Opcjonalnie, adres i port multicast.

Multicast

Multicast wysyła również stronę do adresu i portu multicast (239.0.1.10:5000), jako G.711 µ-law, który głośniki sufitowe i wiele telefonów biurkowych mogą odsłuchać bez połączenia. Grupa może mieć tylko adres multicast. Działa na jednej sieci: routery nie przechodzą multicast, chyba że są odpowiednio skonfigurowane.

Paginacja i interkom

PaginacjaInterkom
Kto słyszywszyscy w grupiejeden numer wewnętrzny
Odpowiedźnie, jeden kierunektak, w obie strony
Jakwybierz numer grupy*80 i numer wewnętrzny

Telefony, które nie odpowiedzą na paginację samodzielnie w ciągu kilku sekund, są pomijane, więc jeden telefon bez auto-odpowiedzi nigdy nie zatrzymuje paginacji. Niektóre telefony wymagają auto-odpowiedzi (interkom) włączonej w swoich własnych ustawieniach.

Rozdział 36

Hot desking

W interfejsie sieciowym: /phones

Gorący biurko to współdzielone urządzenie telefoniczne, które staje się kimś, kto się do niego zaloguje: dla biur, w których ludzie nie mają stałych biurek. Utwórz je, włączając Gorące biurko w rozszerzeniu, w którym telefon jest skonfigurowany (własne rozszerzenie biurka, takie jak 900 Biurko 3).

Logowanie i wylogowywanie

  1. Na telefonie, wybierz *33 i poczekaj na sygnał.
  2. Wprowadź swoje rozszerzenie i #, a następnie poczekaj na sygnał.
  3. Wprowadź swój kod PIN do skrzynki głosowej i #. Rosnący sygnał oznacza, że jesteś zalogowany; malejący sygnał oznacza, że zostało to odrzucone.

Od tego momentu połączenia do Twojego rozszerzenia dzwonią na tym biurku, a także na Twoich innych telefonach, a połączenia, które wykonujesz z niego, wyświetlają Twój numer i nazwę i są liczony jako Twoje w Kosztach. Zalogowanie się na innym biurku przenosi Cię tam. *34 wylogowuje. Pięć nieudanych prób blokuje biurko na dziesięć minut.

Zarządzanie gorącymi biurkami

Na Telefonach (rozdział 4), Gorące biurka pokazują, kto jest zalogowany gdzie; administratorzy mogą zalogować kogoś (bez jego kodu PIN) lub wylogować. Kody, a także godzina każdego dnia, kiedy wszyscy są wylogowani, znajdują się w Ustawieniach. Logowania są przechowywane po ponownym uruchomieniu.

Rozdział 37

Hotel i połączenia budzące

W interfejsie sieciowym: /hotel

Połączenia budzące

Każdy może zarezerwować połączenie budzące: goście, nocne zmiany, osoby na dyżurze. Z własnego telefonu wybierają *62: BitVoice mówi ustawiony (jeśli jest), a następnie wprowadzają czas jako cztery cyfry (0630), lub naciskają gwiazdkę, aby anulować. Na Hotel (rozdział 37) administrator rezerwuje połączenie budzące dla dowolnego rozszerzenia, raz lub każdego dnia.

W czasie, telefon dzwoni z nazwą systemu; odpowiedziany, słyszy "Dzień dobry. To jest twój budzik." (nagranie budzika w Dźwięki (rozdział 20), w języku gościa lub rozszerzenia). Nieodpowiedziany, jest wypróbowany ponownie (3 próby, 5 minut od siebie, oba ustawiane w Ustawieniach na stronie), a po ostatniej może być wywołany numer recepcji. Z kilkoma serwerami, tylko jeden wykonuje połączenia budzika.

Pokoje gościnne

Włącz Pokoje gościnne na numerze telefonu każdego pokoju. W Hotelu każdy pokój wyświetla gościa, budzik i status pokoju, z przyciskami Zamelduj i Wymelduj.

System hotelowy (PMS)

Rozdział 38

Kontakty na każdym telefonie

W interfejsie sieciowym: /contacts

Kontakty to katalog firmowy: dostawcy, klienci i inne biura, z którymi ludzie się kontaktują. Każdy telefon wyświetla go obok rozszerzeń, a gdy któryś z tych numerów dzwoni, telefony i karta wywołującego wyświetlają nazwę kontaktu (gdy dostawca nie wysłał żadnej). Numer pasuje niezależnie od tego, jak jest napisany: +1 212 555 0100 i 2125550100 to ten sam numer.

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

Dodawanie kontaktów

Dodaj kontakt dla jednego na raz, z takimi numerami (praca, komórka, dom, inny), jakie posiada. Import pobiera arkusz kalkulacyjny zapisany jako CSV, którego pierwszy wiersz nazwuje kolumny: nazwa, firma, praca (lub telefon), komórka, dom, inny, e-mail, notatki. BitVoice sprawdza cały plik najpierw i mówi, które wiersze są błędne; kontakt z tą samą nazwą, co jeden z nich, jest aktualizowany, a nie dodawany ponownie, a Zastąp każdy kontakt rozpoczyna listę od nowa. Eksport pobiera listę jako CSV.

Na telefonach biurkowych

Telefony skonfigurowane przez Telefony (rozdział 4) (konfiguracja) otrzymują katalog bez dodatkowej konfiguracji:

W telefonie przeglądarce

Kontakty pod klawiaturą znajdują nazwę lub numer i przygotowują ją do połączenia.

Z Microsoft 365 lub Google Workspace

BitVoice może utrzymywać Kontakt w zgodzie z katalogiem Twojej organizacji: każdy, kto ma numer telefonu, i jego współdzielone kontakty (kontakty organizacji Exchange lub współdzielone kontakty domeny Google). W Ustawieniach (rozdział 14), Microsoft 365 i Google Workspace, wybierz usługę, podaj, czego potrzebuje, i naciśnij Sprawdź teraz: loguje się, liczy ludzi i mówi, które rozszerzenia odpowiadają osobie po adresie e-mail. Zapisz, a Kontakty wypełnią się w ciągu pół minuty; potem co pół godziny lub od razu z Synchronizuj kontakty teraz.

Microsoft 365 (rejestracja aplikacji; musisz mieć możliwość udzielenia zgody administratora):

  1. W centrum administracyjnym Entra, Rejestracje aplikacji, Nowa rejestracja: nazwij ją BitVoice, jeden najemca, bez adresu przekierowania.
  2. Uprawnienia API, Dodaj uprawnienie, Microsoft Graph, Uprawnienia aplikacji: User.Read.All, OrgContact.Read.All i Calendars.ReadBasic. Następnie Udziel zgody administratora.
  3. Certyfikaty i sekrety, Nowy sekret klienta: skopiuj jego wartość (wyświetlaną raz).
  4. W BitVoice: ID katalogu (najemcy), ID aplikacji (klienta) i sekret. Sekret wygasa (Microsoft oferuje do dwóch lat): kiedy to nastąpi, karta mówi, że sekret został odrzucony; utwórz nowy i wklej go.

Google Workspace (konto usługi; musisz być superadministratorem):

  1. W Google Cloud, w jednym z Twoich projektów: włącz People API i Google Calendar API, utwórz konto usługi, i dodaj do niego klucz (JSON).
  2. W konsoli administracyjnej Google, Zabezpieczenia, Kontrola dostępu i danych, Kontrola API, Delegacja na poziomie domeny, Dodaj nowy: ID klienta konta usługi, z zakresami https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/calendar.freebusy.
  3. W BitVoice: plik klucza i adres e-mail administratora dla konta usługi do działania.

Co jest pobierane:

Rozdział 39

Kalendarze i tryb nie przeszkadzać

W interfejsie sieciowym: /extensions

Rozszerzenie może podążać za kalendarzem osoby: podczas spotkań i czasu wolnego połączenia są kierowane do poczty głosowej lub przekierowane (do innego rozszerzenia lub telefonu komórkowego), zamiast dzwonić do telefonu, który nikt nie odejmie. Grupy dzwoniące dzwonią do innych w międzyczasie, a w kolejkach agent wyświetla się jako Nieobecny.

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

W rozszerzeniu, Kalendarz i tryb nie przeszkadzać, wklej prywatny adres kalendarza:

Sprawdź odczytuje go natychmiast i wyświetla następne zajęte czasy. BitVoice odczytuje każdy kalendarz co pięć minut. Czas wolny (cało-dniowe wydarzenia i "poza biurem" w Outlook) zawsze jest brany pod uwagę; spotkania są brane pod uwagę, gdy Spotkania są traktowane jako zajęte jest włączone; wydarzenia oznaczone jako wolne nigdy nie są brane pod uwagę, podobnie jak anulowane. Powtarzające się spotkania, ze pominiętymi i przeniesionymi wystąpieniami, są rozumiane. Jeśli kalendarz nie może być odczytany, Zdrowie informuje o tym.

Tryb nie przeszkadzać teraz zatrzymuje dzwonienie rozszerzenia, aż do wyłączenia, niezależnie od tego, co mówi kalendarz. Lista rozszerzeń wyświetla, kto jest nieobecny i do kiedy.

Prywatny adres działa jak hasło: każdy, kto go posiada, może odczytać ten kalendarz, więc jest przechowywany z innymi tajnościami.

Każdy kalendarz na raz: Microsoft 365 i Google Workspace

Zamiast prywatnego adresu na rozszerzenie, BitVoice może odczytać kalendarz każdej osoby z Microsoft 365 lub Google Workspace: ustaw to raz w Ustawieniach (rozdział 14), Microsoft 365 i Google Workspace (zobacz Kontakty (rozdział 38) dla kroków), z Kalendarze mówią, kto jest nieobecny włączone. Każde rozszerzenie jest dopasowane do osoby przez swojego adres e-mail; jeden z prywatnym adresem używa go zamiast. Ustawienia rozszerzenia tutaj (Spotkania liczą się jako zajęte, Podczas zajętości, połączenia) mają zastosowanie tak, jak w przypadku prywatnego adresu.

Rozdział 40

Aplikacje mobilne

Aplikacje BitVoice dla iPhone i Android czynią telefon komórkowy jednym z telefonów numeru wewnętrznego. Dzwoni jak telefon biurkowy, na własnym ekranie połączeń telefonu, nawet gdy aplikacja jest zamknięta.

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

Konfigurowanie push

Zamknięta aplikacja jest budzona dla połączeń za pomocą wiadomości push. W Ustawieniach (rozdział 14), Aplikacje mobilne, wybierz jedną:

PushCo potrzebujesz
Przekaz pushPrzekaz BioDream (z hostowaniem lub wsparciem) lub własny bvpush: jego Adres przekazu, ID klucza i Sekret
Własne aplikacjewłasne kompilacje: dla Apple, ID zespołu, ID pakietu, ID klucza i Klucz (.p8); dla Google, Konto usługi Firebase (JSON)

Ustaw Adres, który używają aplikacje na adres https tego serwera, tak jak jest on dostępny z dowolnego miejsca, a nie tylko z biura.

Paryowanie telefonu

  1. Otwórz numer wewnętrzny i naciśnij Dodaj telefon.
  2. Zeskanuj kod QR w aplikacji. Kod działa jeden raz, przez dziesięć minut.

Gdy przychodzi połączenie

BitVoice budzi aplikację; łączy się, dzwoni na własnym ekranie połączeń telefonu i jest odbierane jak każdy inny telefon numeru wewnętrznego: grupy dzwonienia i kolejki dzwonienia dzwonią na niego z innymi telefonami numeru wewnętrznego. Strona numeru wewnętrznego wyświetla sparowane telefony, czy każdy Może być obudzony dla połączeń, kiedy był ostatnio widziany i kiedy był ostatnio obudzony, oraz jakikolwiek problem z push. Rozłącz powoduje natychmiastowe przestanie dzwonienia telefonu, w przypadku zagubionego telefonu.

Podczas połączenia

Aplikacja jest pełnym rozszerzeniem, a nie tylko dzwoniącym:

Pozostałe karty

Transkrypcja na żywo podczas połączenia

Z Zapisz rozmowę na żywo włączone (Ustawienia (rozdział 14), AI), każda strona połączenia jest zapisywana jako mówi i wyświetlana na telefonie podczas trwania połączenia. Dźwięk jest wysyłany do usługi rozpoznawania mowy (na twoim własnym komputerze, gdzie jest to ustawione) lub do usługi AI podczas trwania połączenia. Jest to ta sama transkrypcja, co transkrypcje 911 na żywo (rozdział 13), dla zwykłych połączeń.

Rozdział 41

Połączenia wideo

W interfejsie sieciowym: /settings

Gdy oba telefony w połączeniu wysyłają wideo (telefony biurkowe z wideo, aplikacje na telefon, domofony z wideo), obraz jest przekazywany między nimi przez BitVoice. Nic nie trzeba ustawić: jest włączone, chyba że Ustawienia → Połączenia wideo są wyłączone.

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

Konwertowanie wideo

Telefony i aplikacje, które mają wspólny kodek wideo (większość używa H.264), otrzymują nawzajem wideo tak, jak jest. Gdy dwie strony nie mają wspólnego kodeka (telefon biurkowy z tylko H.264 i przeglądarka z tylko VP8), włącz Konwertuj wideo między H.264 i VP8 w Ustawieniach: BitVoice wtedy oferuje oba kodeki, odpowiada każdej stronie w jej własnym kodeku i konwertuje w każdą stronę za pomocą ffmpeg, które musi być zainstalowane na serwerze (apt install ffmpeg, brew install ffmpeg; lub podaj ścieżkę). Konwersja kosztuje około jednego rdzenia procesora na połączenie i dodaje niewielką zwłokę, więc jest wyłączona domyślnie i używana tylko wtedy, gdy jest potrzebna. Ustawienia mówią, czy ffmpeg zostało znalezione.

Rozdział 42

Faks: wysyłanie i odbieranie, maszyny faksowe i telefony analogowe

W interfejsie sieciowym: /faxes

Maszyny faksowe, telefony analogowe, domofony i stare linie łączą się za pomocą bramki SIP (lub karty telefonicznej w komputerze BitVoice: zobacz Karty telefoniczne (rozdział 6)): ATA (Grandstream HT series, dla jednego lub dwóch telefonów analogowych lub maszyny faksowej), lub większej bramki (Patton SmartNode, AudioCodes MediaPack i Mediant) dla wielu portów analogowych, linii ISDN (BRI/PRI) lub starych linii analogowych (FXO). Każdy port rejestruje się w BitVoice jako rozszerzenie, jak 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.
Rysunek 31. Fax: machines, email and PDFs

Odbieranie faksów bez maszyny faksowej. W Faksach dodaj numer faksu (300, na przykład), z adresami e-mail, na które każdy faks jest wysyłany. Następnie w Trasach połączeń (rozdział 8) wysyłaj połączenia numeru telefonu do niego. BitVoice odpowiada jako maszyna faksowa, przełącza połączenie na T.38 i odbiera faks; każdy faks staje się plikiem PDF, przechowywanym w Faksach (Wyświetl, PDF) i wysyłanym e-mailem. Faks, który się rozłącza w połowie, zachowuje strony, które dotarły, i informuje o tym. Każdy faks na liście wyświetla tożsamość wysyłającej lub odbierającej maszyny, gdy różni się od numeru, oraz prędkość, z jaką strony zostały wysłane (14 400 bitów na sekundę jest największa; maszyna, której faksy często się rozłączają na niskiej prędkości, zwykle ma słabą linię). To wymaga dostawcy, który obsługuje T.38 (większość z nich); faks wysłany jako dźwięk nie może być odebrany w ten sposób. Wypróbowane z T38Fax, dostawcą faksów: zarejestruj trunk z nazwą użytkownika i hasłem na sip.t38fax.com, port 5080 (UDP); zezwól na UDP z jego sieci (8.34.182.0/24 i 8.20.91.0/24) przez każdą zaporę sieciową przed BitVoice.

Wysyłanie faksu. W Faksach, Wyślij faks: wybierz numer faksu, z którego ma być wysłany, wpisz numer, do którego ma być wysłany, dodaj notatkę, jeśli chcesz (staje się pierwszą stroną) i dołącz dokumenty. Pliki tekstowe i obrazy (PNG, JPEG, GIF) działają wszędzie. PDF wymaga popplera na serwerze (apt install poppler-utils, apk add poppler-utils, brew install poppler); Word, Excel, OpenDocument i RTF wymagają również LibreOffice. Strona informuje, które z nich serwer może obsłużyć. Każda strona otrzymuje nagłówek, tak jak drukują go faksy: godzinę, nazwę numeru faksu, jego identyfikator i numer strony. Połączenie wychodzi z identyfikatora cyfrowego (+1 212 555 0300 dzwoni z +12125550300), lub z samego numeru faksu, gdy identyfikator nie jest numerem. Strony są w formacie US letter w Ameryce Północnej i A4 gdzie indziej, z kraju ustawionego w Ustawieniach.

BitVoice wywołuje numer przez Twoje trasowanie wychodzące, jak rozszerzenie, i wysyła z najwyższą prędkością, jaką linia może przenieść (14 400 bit/s, wolniej, jeśli linia jest słaba). Faksy z jednego numeru faksu są wysyłane jeden po drugim. Zajęty numer lub taki, który nie odpowiada, jest próbowany ponownie pięć minut później, łącznie trzy razy. Wysłane faksy są wyświetlane z odebranymi: Wysłane, Czekające na wysłanie, Nieudane (z Spróbuj ponownie), lub Częściowo wysłane, gdy linia przerwała się po kilku stronach.

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

E-mail jest łatwy do sfałszowania, więc BitVoice faksuje wiadomość tylko wtedy, gdy Twój serwer pocztowy stwierdził, że pochodzi ona rzeczywiście z domeny nadawcy (DKIM, SPF lub DMARC, w linii Authentication-Results, którą dodaje). Inne wiadomości są odrzucane bez odpowiedzi. Przełącz Akceptuj pocztę, za którą domena nadawcy nie odpowiada tylko dla skrzynki pocztowej, do której nie może dotrzeć żadna zewnętrzna poczta.

Urządzenia faksowe na bramkach. BitVoice obsługuje faksy za pomocą T.38, standardu faksów w internecie: gdy bramka usłyszy ton faksu, przełącza połączenie na T.38, BitVoice prosi drugą stronę (dostawcę lub inną bramkę) o przełączenie również i przenosi faks pomiędzy nimi. Jeśli druga strona nie obsługuje T.38, połączenie pozostaje na G.711, a faks jest przesyłany jako dźwięk, co działa na dobrej sieci. Aktywne połączenia wyświetlają faks (T.38) podczas trwania faksu.

Aby zapewnić niezawodne faksy:

Rozdział 43

Skrzynka odbiorcza: czat internetowy, WhatsApp i Messenger

W interfejsie sieciowym: /inbox

Skrzynka odbiorcza Inbox (rozdział 43) zawiera każdą napisaną konwersację na jednej liście: chatboks na stronie internetowej, WhatsApp, Facebook Messenger i wiadomości tekstowe (rozdział 44). Każdy, kto jest zalogowany do interfejsu sieciowego, może odpowiedzieć; pierwszy, który odpowie, przejmie konwersację (każdy może ją przekazać za pomocą Odpowiedzi od), a Zamknij odłoży ją, aż osoba napisze ponownie. Niekonsekwentne konwersacje są liczone, a lista jest automatycznie odświeżana.

Okienko czatu na Twojej stronie internetowej

W Kanałach włącz Czat internetowy, wybierz jego tytuł, kolor i pierwszą linię, a następnie umieść linię, którą wyświetla na stronach Twojej strony:

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

Rysuje przycisk czatu w rogu każdej strony; odwiedzający mogą pisać (z własnym imieniem, jeśli chcą) i widzieć Twoje odpowiedzi, gdy tylko są wysyłane. Rozmowa pozostaje w ich przeglądarce, więc kontynuuje się, gdy przechodzą między stronami. Wylistuj swoje strony w Tylko na tych stronach, aby pudełko działało tylko tam. Odwiedzający muszą dotrzeć do adresu tego serwera z Internetu, z certyfikatem, który przeglądarki uznają za zaufany (Let's Encrypt (rozdział 14)). Dziesięć nowych czatów z jednego adresu w ciągu dziesięciu minut to maksimum, które BitVoice akceptuje.

WhatsApp

Numery WhatsApp Business w Meta Cloud API. Na stronie deweloperskiej Meta utwórz aplikację z WhatsApp, dodaj swój numer, a następnie utwórz użytkownika systemu z tokenem dostępu na stałe. W Kanałach włącz WhatsApp i podaj identyfikator numeru telefonu i identyfikator konta firmowego (oba z konfiguracji API), token dostępu i klucz aplikacji, a następnie zapisz. W konfiguracji WhatsApp aplikacji ustaw webhook: adres zwrotny i token weryfikacyjny, który BitVoice wyświetla, subskrybowany do *wiadomości*.

WhatsApp pozwala odpowiedzieć swobodnie przez 24 godziny po ostatniej wiadomości klienta; po tym czasie akceptuje tylko szablony wiadomości zatwierdzone w WhatsApp Manager. Pole odpowiedzi zmienia się wtedy w wybór szablonu: wybierz szablon (wyświetla szablony Twojego konta, wraz z ich językiem i rodzajem), wypełnij jego wartości ({{1}}, {{2}} ...), sprawdź podgląd, który to, co klient przeczyta, i Wyślij szablon. Szablony, których skrzynka odbiorcza nie może wypełnić, są wyświetlane na szaro z powodem: jeden ze zdjęciem, filmem lub nagłówkiem dokumentu, zmienną w nagłówku lub łączem przycisku; oraz te, które jeszcze nie zostały zatwierdzone. Utwórz szablony w WhatsApp Manager; Meta przegląda każdy z nich, zwykle w ciągu kilku minut.

Facebook Messenger

Dla strony na Facebooku: w aplikacji Meta dodaj Messenger, połącz stronę i utwórz token dostępu do strony. W Kanałach podaj identyfikator strony, token dostępu do strony i klucz aplikacji; następnie ustaw webhook (adres i token weryfikacyjny, który BitVoice wyświetla), subskrybowany do *wiadomości* i *messaging_postbacks*. Odpowiedzi są dozwolone przez 24 godziny po ostatniej wiadomości osoby. Od tego czasu do 7 dni Messenger akceptuje odpowiedzi napisane przez osobę (wysłane z tagiem *human agent* Meta: aplikacja potrzebuje uprawnienia Human Agent Meta, o które wnioskuje się w App Review); automatyczne powitanie nigdy nie jest wtedy wysyłane. Po upływie 7 dni skrzynka odbiorcza nie przyjmuje odpowiedzi, dopóki osoba nie napisze ponownie.

Każdy webhook jest sprawdzany za pomocą klucza aplikacji (sygnatury Meta) przed tym, jak BitVoice mu uwierzy, a wiadomość, którą Meta wysyła dwukrotnie, jest przechowywana jeden raz. Zdjęcia, notatki głosowe i inne załączniki są wyświetlane jako to, czym są ("[obraz]"); otwórz je w aplikacjach Meta.

Automatyczne powitanie, gdy jest ustawione, odpowiada na pierwszą wiadomość każdej nowej rozmowy natychmiast.

Rozdział 44

Biznesowy tekst (SMS)

W interfejsie sieciowym: /texts

Wysyłaj i odbieraj wiadomości tekstowe ze swoich numerów firmowych na Wiadomości tekstowe. Wiadomości tekstowe są przekazywane przez dostawcę wiadomości tekstowych. Wbudowany: TextMagic, Twilio, SignalWire, Telnyx, Bandwidth, Vonage, Plivo, Flowroute i VoIP.ms, plus Własny webhook dla każdej innej usługi lub bramy własnej. Dowolna liczba kont dostawcy może być używana jednocześnie: każdy numer wskazuje, który z nich go przenosi.

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

Konfiguracja

  1. W portalu dostawcy znajdź szczegóły API konta. Formularz pyta o dokładnie to, co ten dostawca nazywa nimi (Twilio: Account SID i token uwierzytelniania; Telnyx: klucz API; Bandwidth: użytkownik API, hasło, ID konta i ID aplikacji wiadomości; SignalWire: również adres Twojej przestrzeni) i mówi, gdzie je znaleźć.
  2. Na Wiadomościach tekstowych, Konfiguracja wiadomości tekstowych, dodaj dostawcę z nimi i zapisz. BitVoice pokazuje adres dla otrzymanych wiadomości tekstowych: ustaw go w dostawcy jako miejsce, w którym są wysyłane otrzymane wiadomości (jego adres zwrotny, webhook lub adres URL wiadomości). Dla VoIP.ms dodaj ?from={FROM}&to={TO}&message={MESSAGE}&id={ID} na koniec. Potwierdzenia dostarczenia wysyłane do tego samego adresu są ignorowane. BitVoice musi być dostępny z Internetu w tym miejscu.
  3. Dodaj każdy numer, z którego wysyłasz wiadomości tekstowe (z jego kodem kraju), dostawcę, który go obsługuje, i rozszerzenia, które mają być informowane o przychodzących wiadomościach tekstowych za pomocą poczty e-mail.

US 10DLC

Amerykańscy przewoźnicy blokują wiadomości tekstowe z zwykłych numerów firmowych, które nie są zarejestrowane. Zarejestruj swoją markę, a następnie kampanię u swojego dostawcy usług SMS; lista kontrolna w Texts śledzi, jak się mają, i ostrzega, gdy Twoja próbna wiadomość nie zawiera słów odrzucenia, których oczekują przewoźnicy.

Rozmowy

Każda rozmowa pokazuje, kto to jest (z Kontaktów), nieprzeczytane wiadomości tekstowe i wątek. Wprowadź wysyła; licznik pokazuje, ile wiadomości potrzeba do wysłania długiej wiadomości. Gdy ktoś odpowie STOP, nie można już wysyłać niczego do niego z tego numeru, dopóki nie odpowie START. Otrzymane wiadomości tekstowe pojawiają się również jako powiadomienie w BitVoice.

Rozdział 45

Przekazywanie informacji

W interfejsie sieciowym: /settings

Żeby dzwoniący nie musiał się powtarzać: z Przekaż informację komuś, do kogo jest przekierowany włączone (Ustawienia, AI), gdy połączenie jest przekierowane, BitVoice pisze dwuzdaniowy podsumowanie dotychczasowej rozmowy (kto dzwoni, czego chce, co już zostało obiecane) dla osoby, do której jest przekierowane. Pojawia się na jej przeglądarce z dzwoniącym połączeniem, na Połączenia na żywo (rozdział 46) i jako wiadomość tekstowa na ekranie jej telefonu biurowego (dla telefonów, które wyświetlają wiadomości SIP).

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

Działa to samo, gdy asystent AI przekazuje dzwoniącego do osoby: informacje pochodzą z tego, co powiedział dzwoniący asystentowi.

Wymaga to usługi AI i modelu rozpoznawania mowy (Ustawienia, AI), a dźwięk połączenia dotąd (do pięciu minut) jest wysyłany do tej usługi, aby został spisany. Podsumowanie zajmuje kilka sekund, więc może pojawić się zaraz po rozpoczęciu dzwonienia.

Część 4

Klienci i wgląd

Wiedza o tym, kto dzwonił i jak się to odbyło: aktywne połączenia i historia, czasowy wykres klienta, systemy CRM, nagrania i zgody, jakość, koszty i reputacja identyfikatora dzwoniącego.

Rozdział 46

Aktywne połączenia

W interfejsie sieciowym: /calls

Aktywne połączenia wyświetla każde połączenie w toku, aktualizowane w czasie rzeczywistym: kto wywołał kogo, jak długo trwa, jego kodeki i jakość.

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

Co mogą zrobić administratorzy

AkcjaCo robi
Rozłączkończy połączenie dla obu stron
Otwórz drzwidla połączenia z bramki wejściowej
Pauzuj nagrywaniedla numeru karty: pauzowana część jest cicha w nagraniu i oznaczona w historii (Nagrywanie połączeń (rozdział 51))
Słuchajsłyszeć połączenie bezgłośnie
Szepczmów do agenta tylko; dzwoniący nie słyszy
Dołączdołącz do połączenia; wszyscy słyszą ciebie

Aby słuchać, szepnąć lub dołączyć, naciśnij Nadzoruj, wybierz telefon do użycia pod Z telefonu i naciśnij Zadzwoń do mnie: twój telefon dzwoni, a gdy odpowiedzisz, dołączasz do połączenia. Możesz przełączać się między słuchaniem, szepnięciem i dołączaniem, podczas gdy jesteś w nim.

Co jeszcze jest wyświetlane

Po zakończeniu połączenia przechodzi do historii połączeń (rozdział 47)

Rozdział 47

Historia połączeń

W interfejsie sieciowym: /history

Każde zakończone połączenie: kto dzwonił do kogo, kiedy, przez jaki czas i w jaki sposób się zakończyło. Sortuj kolumny, odtwórz nagrania (przerwa na numery kart jest oznaczona) i pobierz listę jako CSV. Czas przechowywania nagrań jest ustawiony w Ustawieniach, *Nagrywanie połączeń*; zamrożenie prawne (rozdział 73) przedłuża ich przechowywanie.

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

Jak było trasowane

Pod wynikiem każdego połączenia, Jak było trasowane wyświetla w zwykłych słowach i w kolejności, co decydowało o tym, gdzie poszło połączenie: przychodząca trasa, która je przyjęła, czy harmonogram był otwarty lub zamknięty i jaki był czas, strona przełącznika, co wybrał skrypt trasowania (lub że jego zapas przyjął połączenie), klawisze wciśnięte w menu, kto był niedostępny, kto nie miał podłączonego telefonu, kto nie odpowiedział, trasę wychodzącą i trasy użyte (i trasy, które sędzia kondycji przeniósł za inne), osąd sądu oszustw związanych z opłatami, i, w przypadku nagranego połączenia, którego strony podlegają różnym zasadom zgody, jaka zasada została zastosowana.

Jakość, dźwięk i szyfrowanie

Kolumna Jakość wyświetla wynik (MOS, na 5) każdego odebranego połączenia oraz dwie oznaczenia, gdy mają zastosowanie:

Transkrypcje i wyszukiwanie

Z włączonym AI i przełącznikiem Transkrybuj nagrane połączenia (Ustawienia, AI), każde nagrane połączenie jest zapisywane, z krótkim podsumowaniem i jego elementami do wykonania: co ktoś zgodził się zrobić lub o co został poproszony. Każda strona połączenia jest zapisywana oddzielnie z nagrania, więc transkrypcja pokazuje, kto co powiedział i kiedy. Przycisk transkrypcji obok nagrania otwiera je; administratorzy mogą również transkrybować pojedyncze połączenie lub transkrybować je ponownie.

Wyszukaj to, co zostało powiedziane znajduje połączenia według słów z ich transkrypcji, podsumowań i elementów do wykonania. Tylko nagrane połączenia są transkrybowane. Transkrypcja jest kasowana wraz z nagraniem, a odczyt lub wyszukiwanie transkrypcji jest odnotowane w dzienniku inspekcji, podobnie jak odtwarzanie nagrania.

Rozdział 48

Osobista historia dzwoniącego

W interfejsie sieciowym: /timeline

Osobista historia dzwoniącego wyświetla wszystko z jednym numerem telefonu w ciągu ostatniego roku, najnowsze najpierw, aby osoba, która odbiera, wiedziała całą historię.

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

To, co się wyświetla

ElementZ
Połączeniakto je odebrał, jak długo trwały, oraz z transkrypcją, podsumowaniem, nagraniem i transkrypcją
Wiadomości głosoweich podsumowania
Wiadomości tekstowew obie strony
Przełączanie połączeńo które zostały poproszone i czy zostały wykonane
Notatkinotatki zespołu

Numer jest dopasowany niezależnie od tego, jak jest napisany: +1 212 555 0100 i 2125550100 są takie same.

Otwieranie

Z karty dzwoniącego (Wykres czasowy), z Kontaktów, z nadchodzącego połączenia w Historii połączeń, z rozmowy tekstowej lub wpisz numer u góry Wykresu czasowego (rozdział 48).

Notatki

Administratorzy mogą dodać notatkę dla zespołu: jest wyświetlana na wykresie czasowym dla wszystkich, z informacją o tym, kto ją napisał i kiedy, oraz może być usunięta.

Rozdział 49

CRM: karty rozmówców i rejestrowanie połączeń

W interfejsie sieciowym: /settings

Połącz system klienta w Ustawieniach (rozdział 14), CRM. Działa z każdym systemem, który ma adres internetowy, bez konieczności pisania kodu dla każdego produktu.

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

Karty rozmówców

Podczas gdy połączenie z zewnątrz dzwoni, Aktualne połączenia wyświetla kartę: kim jest (z Twojego CRM lub nazwy rozszerzenia), jak często dzwonił w ciągu 90 dni, jakiś powiadomienie (rozdział 30), na które czeka, i podsumowanie jego ostatniej transkrybowanej rozmowy. Przeglądarkowy telefon wyświetla krótszą kartę osobie odpowiadającej: kim jest, poprzednie połączenia i oczekujące powiadomienia, ale nie podsumowania innych rozmów.

Dla nazwy, ustaw Adres wyszukiwania: BitVoice pyta o niego (GET) z numerem rozmówcy zamiast {number}, wysyłając Nagłówek wyszukiwania z jego wartością (odniesienie do skarbcu działa), i oczekuje JSON z nazwą, firmą, adresem URL i notatkami; 404 oznacza nieznany. Odpowiedzi są przechowywane przez pięć minut. Otwórz w CRM link umieszcza link do rozmówcy na karcie. Użyj Wyszukaj , aby spróbować numeru przed zapisaniem.

Własna odpowiedź CRM

Większość CRM odpowiada na wyszukiwanie w swojej własnej formie, zwykle jako lista dopasowań, a nie {"name": ...} BitVoice. Otwórz Pola odpowiedzi i określ, gdzie znajduje się każda część, jako ścieżka kropkowa: nazwa wchodzi w obiekt, a liczba w listę, więc list.0.name to nazwa pierwszego dopasowania. Link do kontaktu może być ścieżką do linku udostępnionego przez CRM lub adresem internetowym ze ścieżkami w nawiasach klamrowych, takim jak https://crm.example.com/#Contact/view/{list.0.id}. Puste pole odczytuje własną nazwę BitVoice. Wyszukiwanie, które nie znajduje nikogo, jest takie same jak 404: karta mówi, że rozmówca nie jest znany. Przed zapisaniem spróbuj numeru z Sprawdź.

Na przykład, EspoCRM (przetestowany z prawdziwym EspoCRM): utwórz użytkownika API (Administracja, Użytkownicy API, uwierzytelnianie za pomocą klucza API) z rolą, która może odczytywać kontakty i konta, a następnie ustaw:

EspoCRM przechowuje numery w formie międzynarodowej (+15405550117), tak jak BitVoice je przekazuje. Inne CRM działają w ten sam sposób ze swoim własnym adresem wyszukiwania i nazwami pól; sprawdź kształt ich odpowiedzi w dokumentacji API lub za pomocą Sprawdź, którego komunikat nazywa to, co znaleziono.

Rejestracja połączeń

Ustaw Adres rejestru połączeń i Klucz podpisywania, a każde połączenie jest wysyłane tam po jego zakończeniu (zdarzenie call.ended), ponownie z jego podsumowaniem, zadaniami i transkrypcją po transkrypcji (call.summarized), oraz każde nowe powiadomienie o połączeniu (callback.new). Każde wysłanie zawiera X-BitVoice-Event, X-BitVoice-Timestamp i X-BitVoice-Signature: sha256= po którym następuje HMAC-SHA256, z sekretem, z timestampem, kropką i treścią. Nieudana dostawa jest próbowana cztery razy w ciągu około minuty; jeśli nadal nie powiedzie się, Health sygnalizuje to. Wyślij testowe zdarzenie sprawdza adres i sekret.

Rozdział 50

Wgląd w połączenie dla nadzorujących

W interfejsie sieciowym: /quality

Dla centrów kontaktowych: dowody dotyczące przebiegu połączeń, które nadzorujący może odsłuchać, nigdy nie jest to automatyczny wynik.

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.
Rysunek 38. Call insight: evidence for a supervisor, never a score

W Transkrypcji połączenia Jak się to odbyło jest wyświetlone, zmierzone na podstawie samych dźwięków nagrania: jak długo każda strona mówiła, najdłuższy okres, w którym każda strona zaczęła mówić jednocześnie, jak długo obie strony mówiły jednocześnie, oraz cisza (długa cisza jest często trzymana lub martwa cisza).

Z Zapisz, jak poszło włączonym (Ustawienia, AI), AI również czyta transkrypcję i mówi, jak wydawał się dzwoniący na początku i na końcu, oraz wyświetla do sześciu momentów: Poszło dobrze, Spójrz (mówienie przez dzwoniącego, długa pauza, niejasna odpowiedź) i Obiecano (coś, co ktoś powiedział, że zrobi), każdy z czasem i słowami, abyś mógł przejść prosto do niego. Administrator może poprosić o to w dowolnym transkrybowanym połączeniu z Spójrz na to połączenie.

W Jakość połączenia (rozdział 50), Rozmowy, według osoby, która je odebrała sumuje transkrybowane połączenia z okresu na osobę: ich udział w rozmowie, najdłuższy ciąg, jak często przerywali osobie dzwoniącej, czas ciszy, połączenia, które zakończyły się niezadowoleniem osoby dzwoniącej, oraz chwile oznaczone jako istotne. Użyj jej do wyboru połączeń do odsłuchania, a nie do rankingu osób.

Notatki szkoleniowe to Twoje słowa o połączeniu, w momencie, gdy są one o nich: pod Jak się to odbyło, wpisz Moment (1:05, lub pozostaw puste dla początku) i Notatkę szkoleniową, a następnie naciśnij Dodaj notatkę. Notatki są wyświetlane w kolejności połączenia z tym, kto je napisał i kiedy; administratorzy piszą i usuwają je, widzowie czytają je z transkrypcją, a dodanie lub usunięcie notatki jest odnotowane w rejestrze inspekcji. Idą one z nagraniem, więc jego przechowywanie i prawne zatrzymania je również obejmują. Notatki szkoleniowe na Jakość połączenia liczą je na osobę.

Rozdział 51

Nagrywanie połączeń i płatności kartą

Nagrywanie jest ustawione w Ustawieniach (rozdział 14), Nagrywanie połączeń: wyłączone, każde połączenie lub tylko połączenia rozszerzeń oznaczonych Nagrywaj połączenia. Nagrania są odtwarzane z Historii połączeń (rozdział 47), a z włączoną AI są wypisywane i podsumowywane.

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

Informowanie osób

Niektóre miejsca wymagają, aby wszystkie osoby w rozmowie zostały poinformowane o jej nagrywaniu: Ogłoszenie, Sygnał dźwiękowy i reguły dotyczące regionu znajdują się w Zgoda na nagrywanie (rozdział 52).

Płatności kartą (PCI DSS)

Numer karty nie może być zapisywany w nagraniach. Przed odczytaniem numeru karty przez rozmówcę, osoba na rozszerzeniu naciska *7; *8 wznawia nagrywanie. Pauza nagrywania w Aktualne połączenia (rozdział 46) działa w ten sam sposób. Zatrzymana część jest cicha w nagraniu i widoczna w historii połączeń, aby auditor mógł zobaczyć, gdzie i jak długo.

Sali konferencyjne

Pokój z włączoną opcją Nagrywanie pokoju jest przechowywany jako jedno nagranie całego pokoju (Sali konferencyjne (rozdział 34)).

Jak długo przechowujemy rzeczy

Ustawienia określają, ile dni przechowujemy nagrania, historię połączeń i pocztę głosową; starsze są usuwane w ciągu godziny. Wszystko podlegające prawnej retencji (rozdział 73) jest przechowywane niezależnie od wieku. Archiwum (rozdział 72) może przechowywać kopie w innym miejscu.

Administratorzy i widzowie mogą odtwarzać nagrania i czytać transkrypcje; tylko administratorzy mogą transkrybować połączenie lub transkrybować je ponownie. Odtwarzanie nagrania lub czytanie jego transkrypcji jest odnotowane w dzienniku inspekcji.

Rozdział 53

Jakość połączenia

W interfejsie sieciowym: /quality

Jak połączenia brzmiały w ciągu ostatniego dnia, tygodnia, miesiąca lub 90 dni, od dźwięku, jaki BitVoice otrzymał na każdej stronie każdego połączenia. Telefony są grupowane według ich lokalizacji (rozdział 12) (lub "brak lokalizacji"), a połączenia z zewnątrz według linii dostawcy, na której przychodzą.

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

Każde miejsce wyświetla swoje połączenia, średnią ocenę (MOS, na 5: powyżej 4 jest dobre, poniżej 3,6 brzmi słabo), udział pakietów dźwięku, które nigdy nie dotarły, oraz jitter (nierównomierny opóźnienie). Poniżej, BitVoice wyjaśnia, co jest nie tak w prostych słowach, na przykład „Utrata pakietów w sieci biura głównego: 3,2% dźwięku nigdy nie dotarło, głównie między 14:00 a 16:00”, wraz z tym, co należy sprawdzić. Wykres słupkowy pokazuje utracony dźwięk według godziny dnia.

Diagnoza porównuje dwie połowy tych samych połączeń: dźwięk z telefonów na miejscu i dźwięk z dostawcy, przez którego przeszły te same połączenia. Gdy druga połowa przychodzi czysta, straty są po stronie tego miejsca i tak się stwierdza; gdy obie połowy tracą dźwięk, miejsce nie ponosi wyłącznej winy i wskazuje na to, co te połączenia mają wspólnego, własne połączenie internetowe systemu. Jeśli wszystkie miejsca tracą dźwięk jednocześnie, przyczyna jest podobna, to, co mają wspólnego. Jak to zostało ustalone wymienia powody krok po kroku (książka reguł jakości połączeń, patrz Bezpieczeństwo (rozdział 60), "Jak BitVoice decyduje"). Miejsca z mniej niż trzema połączeniami nie są oceniane. Jakość połączenia na połączenie jest również w Historia połączeń (rozdział 47) (kolumna Jakość) i, podczas gdy połączenia są aktywne, na Połączenia na żywo (rozdział 46).

Połączenie, które nawiązało połączenie, ale nie otrzymało żadnego dźwięku z jednej strony, jest liczone oddzielnie, w kategorii bez dźwięku, i umieszczane jest na pierwszym miejscu: nie jest to słaby dźwięk, ale dźwięk, który nigdy nie dotarł, prawie zawsze jest to firewall lub router NAT, który przepuszcza SIP i blokuje media. Porada miejsca wskazuje, co należy sprawdzić (dla dostawcy, jego zakresy adresów mediów).

Rozdział 54

Koszty i budżety

W interfejsie sieciowym: /costs

BitVoice wycenia każde połączenie na podstawie tego, co Twój dostawca za niego pobiera, i wyświetla wydatki miesiąca według departamentu, osoby i łącza, z najdroższymi połączeniami.

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

Ceny

Na Łączach (rozdział 7), otwórz łącze i jego Ceny połączeń. Każda cena obejmuje numery, które zaczynają się od pewnych cyfr, tak jak numer jest wysyłany do dostawcy (tylko cyfry, więc 44 dla Wielkiej Brytanii, 1900 dla amerykańskich numerów premium); najdłuższe dopasowanie wygrywa, a cena bez cyfr obejmuje każdy inny numer. Podaj cenę za minutę, jakąkolwiek opłatę za odebrane połączenie, krok rozliczeniowy (60 sekund dla pełnych minut, 6 lub 1 dla drobniejszych) i jakąkolwiek minimalną. Połączenia przychodzące, za minutę dotyczy numerów bezpłatnych, za które płacisz, aby je otrzymać. Ile to kosztuje sprawdza numer przed wybraniem go. Waluta jest ustawiona w Kosztach.

Koszt połączenia jest ustalony, gdy się kończy, z cenami z tego czasu; zmiana ceny nie zmienia poprzednich połączeń. Koszty mówią, ile odebranych połączeń wychodzących nie miało ceny.

Departamenty i budżety

Przypisz rozszerzeniom Departament (w rozszerzeniu). Na Kosztach dodaj budżet dla każdego połączenia lub dla jednego departamentu: pojawia się alert w BitVoice, a także jest wysyłany na adres budżetu i adres alertu, na 80% i ponownie na 100% miesiąca.

Alarm

Połączenia wychodzące kosztują więcej niż to w godzinie wywołuje alarm, gdy połączenia wychodzące przekroczą tę kwotę w dowolnej godzinie. Nagły szereg drogich połączeń to zwykle znak oszustwa związanego z opłatami (skradziony hasło telefonu): sprawdź Historię połączeń, a następnie wyłącz rozszerzenie lub łącze.

Rozdział 55

Reputacja ID wywołującego i połączenia z marką

W interfejsie sieciowym: /reputation

Firmy telefoniczne prowadzą filtry spamu, które mogą oznaczyć numer firmy jako "Spam prawdopodobny", lub zablokować go, a wtedy prawie nikt nie odbiera. Reputacja ID wywołującego obserwuje każdy numer, z którego wywołujesz, z Twoich własnych połączeń, i mówi w prostych słowach, jak się ma:

Numery z mniej niż 20 połączeniami są wyświetlane jako zbyt mało, aby je ocenić.

Twoje numery wychodzące nadają każdemu numerowi nazwę (wysyłaną jako nazwa osoby dzwoniącej), powód połączenia oraz logo (obraz https://). Na trasie z włączoną opcją Wyślij nazwę osoby dzwoniącej logo i powód są wysyłane jako bogate dane połączenia (RFC 9796 Call-Info); operatorzy, którzy obsługują nazwę osoby dzwoniącej, wyświetlają je na telefonie osoby dzwoniącej. Większość telefonów wyświetla nazwę z bazy danych caller-name (CNAM), którą ustawia operator: poproś o to operatora. Obserwuj umieszcza ostrzeżenie w sekcji Zdrowie, gdy obserwowany numer zaczyna wyglądać na oznaczony.

Strona również informuje, co zrobić, gdy numer jest oznaczony.

Rozdział 56

Ochrona przed spamem i STIR/SHAKEN

W interfejsie sieciowym: /settings

W Stanach Zjednoczonych i Kanadzie dostawca, z którego pochodzi połączenie, potwierdza jego ID dzwoniącego (STIR/SHAKEN): A, gdy wie, że dzwoniący może używać tego numeru, B, gdy wie, kto dzwoni, ale nie zna numeru, C, gdy tylko przekazuje połączenie. Twój dostawca albo informuje BitVoice o swoim werdykcie (verstat) albo przekazuje podpisaną nagłówek Identity, który BitVoice sprawdza sam: podpis, że jest młodszy niż minute, i że wymienia numery tego połączenia. Werdykt jest wyświetlany jako Weryfikowane, Częściowo weryfikowane, Nieweryfikowane lub Niezweryfikowane na Połączeniach na żywo i w Historii połączeń.

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

W Ustawieniach, Ochrona przed spamem, wybierz, co się dzieje, gdy ID dzwoniącego nie przejdzie weryfikacji (dzwoni, dzwoni z etykietą lub odrzuć), gdy nie jest weryfikowane w ogóle, a gdy numer jest ukryty. Połączenie z etykietą dzwoni z Spam? (lub Twoją własną etykietą) przed nazwą dzwoniącego. Zablokowane numery są odrzucane; wpis kończący się * blokuje zakres (+1900* to każdy amerykański numer premium). Zawsze dozwolone numery nigdy nie są odrzucane ani oznaczone. W Historii połączeń przycisk blokady obok dzwoniącego dodaje go do listy; odrzucane połączenia są wyświetlane jako Zablokowane.

W ciągu godziny od połączenia alarmowego z dowolnego rozszerzenia, żadne połączenie nie jest odrzucane (zablokowane dzwonią z etykietą), na wypadek, gdy jest to połączenie powrotne od służby alarmowej. Połączenie 911 (z ESInet lub trunku CAMA) nigdy nie jest odrzucane ani opóźniane przez ekranowanie.

Callers BitVoice does not know

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

WybórCo dzwoniący otrzymuje
Dzwoni normalniepołączenie dzwoni jak każde inne (domyślnie)
Test robota najpierwBitVoice odpowiada i mówi "Aby zostać połączonym, proszę nacisnąć" i cyfrę, która zmienia się przy każdym połączeniu. Prawidłowy klawisz łączy ich z miejscem, do którego było przeznaczone połączenie; wszystko inne lub nic (dwa razy), i idą do Dzwoniących, którzy nie zdali testu, lub słyszą pożegnanie. Roboklienci nie naciskają go
Wyślij w inne miejscenic nie dzwoni: idą prosto do wybranego miejsca, skrzynki pocztowej na przykład

Test robota wymaga nagranych słów: w Dźwięki (rozdział 20), nagraj lub utwórz (za pomocą usługi mowy) komunikaty przesiewowe i cyfry od 1 do 9 w języku osób dzwoniących. Dopóki nie zostaną nagrane, połączenia będą dzwonić normalnie (osoba dzwoniąca nie może przejść testu, którego nie może usłyszeć), a Health o tym informuje. Osoba dzwoniąca, która przejdzie test, jest uznawana za znaną przez 90 dni. Test odpowiada na połączenie, więc dostawca osoby dzwoniącej zaczyna obciążać ją opłatami od tego momentu, tak jak w przypadku każdego odebranego połączenia. Historia połączeń wyświetla wynik każdego połączenia (zaliczone, niezaliczone, wysłane) i ślad powodu wyjaśnia, co się stało.

Baza spamu

BitVoice może zapytać usługę reputacji o każdego nieznanego dzwoniącego przed odebraniem połączenia. Użyj Nomorobo przez Twilio wypełnia Twilio Lookup z wynikiem spamu Nomorobo (zainstaluj dodatek Nomorobo w swoim koncie Twilio, a następnie wprowadź jego ID konta i token uwierzytelniania); każda inna usługa, która odpowiada w JSON, również działa: podaj jej adres z {e164} (+12125550142) lub {number} (tak jak dostawca go wysłał), gdzie jest jej werdykt (Pole werdyktu, ścieżka kropkowa), i kiedy oznacza spam (wynik na poziomie lub powyżej Spam na wyniku, prawda lub tekst w Lub spam, gdy tekst jest, np. BLOCK). Wybierz, co się dzieje z dzwoniącym, którego uważa za spam: dzwoni z etykietą, test robota lub odrzucony.

Zablokuj ostatniego dzwoniącego

Natychmiast po niepożądanym połączeniu, wybierz *32* (Kody funkcji (rozdział 32)) z telefonu, który dzwonił: ostatni zewnętrzny numer, który dzwonił na tej linii w ciągu ostatniego dnia, trafia na listę blokowanych, a telefon odczytuje numer. Numer zawsze dozwolony nie jest blokowany, a telefon o tym informuje. Każde zdarzenie jest rejestrowane w dzienniku inspekcji, wraz z informacją, kto je zablokował.

Sugerowane z Twoich połączeń

BitVoice czyta ostatnie 30 dni połączeń z zewnątrz w poszukiwaniu numerów, które dzwonią raz za razem i są odrzucane od razu: trzy połączenia lub więcej, prawie wszystkie z nich trwają krócej niż 10 sekund, lub dwa testy robota nie powiodły się, i nigdy nie było prawdziwej rozmowy (ktoś mówił przez 30 sekund lub dłużej). Znani numery są pomijani. Każdy przychodzi z powodem; Zablokuj umieszcza go na liście blokowanych, a Nie spam oznacza, że nigdy nie będzie sugerowany. Nic nie jest blokowane, dopóki osoba nie powie tak.

Aby sprawdzić certyfikaty względem władz STI, wklej ich certyfikaty pod Władze certyfikacji STI; bez nich BitVoice sprawdza, czy połączenie zostało podpisane certyfikatem, który wymienia, ale nie kto wydał ten certyfikat.

Podpisywanie własnych połączeń

Większość dostawców podpisywała połączenia swoich klientów samodzielnie. Jeśli Twój dostawca pozwala na podpisywanie (lub jesteś dostawcą korzystającym z BitVoice), włącz Podpisz ID dzwoniącego na łączu (Łącza (rozdział 7)) i podaj swój certyfikat STI (z władzy certyfikacji STI, z tokenem kodu dostawcy) i jego klucz prywatny (P-256). Każde połączenie wychodzące przez to łącze będzie zawierało podpisaną nagłówek Identity (ES256, jak wymaga SHAKEN).

Część 5

Uruchamianie BitVoice

Zachowanie bezpieczeństwa i ciągłości działania: administratorzy i logowanie, zabezpieczenia, zmiany i aktualizacje, wiele serwerów, organizacje hostowane, kodeki, zespoły, importowanie, automatyzacja i narzędzia do rozwiązywania problemów.

Rozdział 57

Administratorzy

W interfejsie sieciowym: /users

Administratorzy to osoby, które logują się do tego interfejsu sieciowego. Pracownicy, którzy tylko opiekują się własnymi połączeniami, używają portalu pracowniczego zamiast i nie potrzebują konta tutaj (Portal pracowniczy (rozdział 33)).

Role

RolaMoże
Administratorzmieniać wszystko, odtwarzać nagrania, widzieć istnienie każdego pola tajnego (nigdy jego wartości)
Widzwidzieć wszystko, zmieniać nic; tajemnice są ukryte

Zmiana roli lub hasła powoduje wylogowanie osoby ze wszystkich miejsc jednocześnie.

Logowanie dwuetapowe

Każda osoba włącza logowanie dwuetapowe dla siebie: Konfiguracja wyświetla klucz dla aplikacji uwierzytelniającej; wprowadzenie kodu, który wyświetla, włącza ją. Od tego momentu logowanie wymaga kodu oraz hasła. Wyłączenie go wymaga hasła.

Logowanie jednokrotne

Z logowaniem jednokrotnym (Ustawienia), osoby logują się za pomocą konta organizacji (Microsoft Entra, Google, Okta, dowolny dostawca OpenID Connect), a konto jest tworzone dla nich po raz pierwszy. Zobacz Logowanie jednokrotne (rozdział 58).

Tokeny API

Programy (Terraform, skrypty) używają tokenów API zamiast hasła: tworzone na tej stronie, wyświetlane raz i odwoływane w dowolnym momencie. Każdy token jest administratorem lub widzem. Token utworzony z Nazwa osoby, której działa (dla CAD) może wysyłać X-BitVoice-On-Behalf-Of z nazwą osoby, a nagrania wtedy nazywają tę osobę obok tokenu (połączenia 911 (rozdział 77)).

Rozdział 58

Logowanie jednokrotne

Logowanie jednokrotne pozwala ludziom logować się do BitVoice za pomocą swojego konta służbowego, przez dowolnego dostawcę OpenID Connect: Microsoft Entra ID, Google, Okta, Keycloak i innych. Opuszczanie organizacji następnie usuwa ich dostęp tutaj.

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

Konfiguracja

W Ustawieniach (rozdział 14), Logowanie jednokrotne:

  1. Zarejestruj aplikację u dostawcy, z adresem Przekierowania wyświetlanym tutaj.
  2. Wypełnij dla dostawcy ustawia Wystawcę dla wspólnych; skopiuj ID klienta i Klucz tajny od dostawcy.
  3. Nazwij Grupy administratorów i Grupy widzów dostawcy. Oświadczenie grup to miejsce, w którym dostawca umieszcza je (groups, chyba że zostanie ustawione).
  4. Opcjonalnie zmień Tekst przycisku na stronie logowania.
  5. Włącz Użyj logowania jednokrotnego.

Jak to działa

Rozdział 59

Katalog firmowy (Active Directory i LDAP)

BitVoice może odczytywać Twój katalog firmowy, Active Directory lub inny serwer LDAP (OpenLDAP, Samba, 389 Directory Server, FreeIPA): osoby z numerem telefonu stają się extensionami, grupy katalogu wypełniają grupy dzwonienia, a osoby logują się do interfejsu sieciowego przy użyciu hasła katalogu. BitVoice tylko czyta katalog; nigdy nie zapisuje do niego.

Łączenie

W Ustawieniach (rozdział 14), Katalog firmowy:

  1. Wybierz Active Directory lub Inny serwer LDAP: ustawia, które atrybuty są odczytywane (sAMAccountName lub uid dla nazwy logowania, displayName lub cn, mail, telephoneNumber). Zmień dowolne z nich w jego polu.
  2. Serwer: ldaps://dc1.example.com (port 636) lub ldap://... z StartTLS włączone. Zwykły LDAP jest odrzucany, chyba że serwer jest tym komputerem, ponieważ hasła przekroczyłyby sieć niezaszyfrowane. Gdy certyfikat serwera pochodzi z Twojej własnej władzy certyfikacji, wklej władzę w Władzę certyfikacji firmy.
  3. Konto odczytu i Jego hasło: konto dozwolone do odczytywania osób i grup (reader@example.com w Active Directory). Hasło może być odniesieniem do skarbca kluczy (Ustawienia, Skarbnice kluczy).
  4. Baza DN: gdzie znajdują się osoby i grupy (dc=example,dc=com). Które osoby zawęża je za pomocą filtru LDAP; w Active Directory konta wyłączone są zawsze pomijane.
  5. Test loguje się za pomocą konta odczytu i odczytuje wszystkich, nie zmieniając nic: pokazuje, ile osób znalazł, ile ma numer, i jaki extension każdy otrzymałby.

Extensiony i grupy dzwonienia

Logowanie

Z Osoby logują się tutaj z nazwą katalogu i hasłem włączone, strona logowania akceptuje nazwy katalogu i hasła, a także konta BitVoice:

Rozdział 60

Bezpieczeństwo

W interfejsie sieciowym: /security

System telefoniczny w Internecie jest atakowany w ciągu kilku godzin: skanery próbują hasła na każdym porcie SIP, a włamany system generuje połączenia do numerów premium. BitVoice jest zaprojektowany, aby oprzeć się temu domyślnie, warstwowo.

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

Przeciwko zgadywaniu haseł

Przeciwko oszustwom

Strażnik przed oszustwami

Włącz go w Ustawieniach, Strażnik przed oszustwami. Każde połączenie za granicą (przez +, 00 lub 011, a także miejsca, które dzielą +1 z Ameryką Północną, ale są innymi krajami, takimi jak Jamajka, klasycznym celem oszustw) jest wtedy oceniane przed jego wykonaniem:

SytuacjaCo robi
Połączenie za granicą do kraju, z którym to rozszerzenie łączyło się w ciągu ostatnich 90 dnipozwala na to
Pierwsze połączenie do tego kraju w 90 dnipozwala na to i zgłasza
Pierwsze połączenie tam poza godzinami pracy, lub zainicjowane z zewnątrz (połączenie przychodzące, przekierowanie)prosi o wprowadzenie kodu (bez wybranego kodu, odmawia)
Więcej niż Połączenia za granicą w 10 minut z jednego rozszerzeniaodmawia
Pierwsze połączenie za granicą, gdy ktoś zgaduje hasła (trzy nieudane próby z rzędu z jednego adresu, lub zablokowanie, w ciągu ostatniej godziny)odmawia
Numer alarmowyzawsze pozwala na to

Kraje zawsze dozwolone (kody wywoławcze, takie jak 44) i Wyjątki (rozszerzenie zwolnione do dnia, na podróż) usuwają "pierwsze połączenie" i "poza godzinami pracy"; nigdy nie usprawiedliwiają wielu połączeń w krótkim czasie lub ataku, ponieważ skradzione hasło wygląda na zatwierdzone. Jeśli historia połączeń nie może być odczytana, strażnik nie wie, czy połączenie jest pierwsze, i coś, co nie jest mierzone, nigdy nie jest uważane za bezpieczne: prosi o kod. Każda ocena jest wyświetlana na Bezpieczeństwo (rozdział 60) z powodami, i jest w rekordzie połączenia w Historia połączeń (rozdział 47).

Jak BitVoice decyduje

Sędziowie BitVoice (strażnik przed oszustwami, sędzia zdrowia łączy, diagnoza jakości połączenia i sprawdzanie lokalizacji połączenia 911) każdy postępuje zgodnie z księgą zasad: fakty, które są mierzone, wnioski, które je wspierają, wyjątki, które anulują wniosek, i wybory. Jak BitVoice decyduje, na Bezpieczeństwo (rozdział 60), pokazuje każdą księgę zasad. Zasady, które sędziowie przestrzegają:

Szyfrowanie

Kto może co robić

Rozdział 61

Zmiany, kopie zapasowe i import

W interfejsie sieciowym: /changes

Każda zapisana zmiana jest rewizją: ponumerowana, z informacją o tym, kto ją wykonał, kiedy i krótkim podsumowaniem. Nic w konfiguracji nigdy nie ginie.

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

Porównywanie i przywracanie

Eksport i import

Zmiany wprowadzane w tym samym czasie

Dwóch administratorów edytujących to samo jednocześnie nie może nadpisać siebie nawzajem: drugie zapisywanie jest odrzucane z komunikatem do ponownego załadowania, i nic nie ginie.

Rozdział 62

Aktualizacje

W interfejsie sieciowym: /updates

Aktualizowanie BitVoice jest proste i bezpieczne: sprawdza nową wersję, instaluje ją obok starej i wraca do poprzedniej wersji, jeśli nowa nie utrzymuje połączenia.

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

Instalowanie aktualizacji

  1. Pobierz nową wersję i rozpakuj ją. Obok programu znajduje się jego sygnatura od BioDream: bitvoice.sig lub bitvoice.exe.sig w systemie Windows.
  2. Na Aktualizacje (rozdział 62) przesłanie programu i jego pliku .sig.
  3. Naciśnij Zainstaluj. Domyślnie BitVoice czeka, aż nie będą trwać połączenia; możesz również zainstalować od razu.
  4. BitVoice restartuje się w nowej wersji. W przypadku kilku serwerów połączenia w trakcie są przekazywane do innego serwera i kontynuowane.

Powrót

Poprzednia wersja jest zachowywana: Powróć powraca do niej w jednym kliknięciu. Nowa wersja, która nie uruchamia się dwa razy lub nie utrzymuje połączenia przez minutę, jest zastąpiona przez poprzednią wersję automatycznie.

Sygnatury

Każda wersja od v0.1.3 zawiera klucz wydawniczy BioDream. Taki build instaluje tylko programy podpisanymi tym kluczem: plik niepodpisany, podpisywany przez kogoś innego lub zmieniony o jeden bajt jest odrzucany z sygnatura nie pasuje. Strona mówi, czy ten build sprawdza (Wymagane) czy nie.

UruchamiaszAkceptuje aktualizacje
wersję, v0.1.3 lub nowszątylko programy podpisane przez BioDream
v0.1.2 lub starszą, lub własną kompilacjędowolny program: bez klucza, plik .sig nie może być sprawdzony i jest ignorowany
Rozdział 63

Kilka serwerów jako jeden system telefoniczny

W interfejsie sieciowym: /servers

Dwa lub więcej serwerów BitVoice, które udostępniają jedną bazę danych PostgreSQL, działają jako jeden system telefoniczny:

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

Konfiguracja

  1. Przenieś dane pierwszego serwera do PostgreSQL: Ustawienia, Baza danych.
  2. Uruchom każdy inny serwer z tą samą bazą danych: bitvoice -database postgres://… (lub zmienną środowiskową BITVOICE_DATABASE). Dołącza od razu; Serwery wyświetla go.
  3. Na Serwery, sprawdź, gdzie każdy serwer jest dostępny (jego adres i port SIP w sieci, którą serwery udostępniają), i nadaj każdemu nazwę. Serwery, które są dostępne z Internetu pod adresem publicznym (serwery chmurowe z publicznymi IP, bez współdzielonego adresu), otrzymują również Własny publiczny adres: dostawcy i telefony na zewnątrz są informowane o tym, więc gdy serwer przejmuje połączenie, dźwięk dostawcy go śledzi. Pozostawione puste, serwer używa publicznego adresu w Ustawieniach.
  4. Powiedz telefonom, jak znaleźć serwery (poniżej).
  5. Linie dostawców (poniżej).

Jak telefony znajdują serwery. Telefony ustawione przez BitVoice (Yealink, Polycom, Grandstream) są automatycznie przypisane do innego uruchomionego serwera jako ich serwer zapasowy. Dla innych, Snom i telefonów ustawionych ręcznie, użyj jednego z poniższych na Serwery:

Linie dostawców. W każdej linii, Udostępnione między serwerami określa, jak:

Gdy serwer przestaje działać

Pomiędzy serwerami. Serwery łączą się ze sobą przez port SIP za pomocą TCP lub TLS, jeśli posiadają certyfikat (każdy akceptuje tylko certyfikat opublikowany przez drugiego, a dźwięk między nimi jest wtedy szyfrowany za pomocą SRTP), oraz wysyłają dźwięk do portów multimedialnych drugiego serwera (UDP, zakres w Ustawieniach). Połączenia między serwerami są podpisywane tajnym kluczem, który dzielą w bazie danych, i są akceptowane tylko z uruchomionego członka pod jego własnym adresem. Zaporę sieciową między nimi należy otworzyć dla tych portów.

Przetestuj najpierw: laboratorium. BitVoice jest wyposażony w laboratorium, które uruchamia dwa serwery, ich bazę danych i testowe telefony na jednym komputerze z Docker, każdy pod własnym adresem: deploy/lab/run.sh up buduje i uruchamia je oraz ustawia wspólny adres; run.sh call wykonywać połączenia między telefonami na różnych serwerach; run.sh failover zabija serwer, który przenosi połączenie przez wspólny adres i sprawdza, czy połączenie jest kontynuowane (dźwięk powraca w ciągu około pięciu sekund); run.sh impaired wykonywać połączenia z telefonu na złym połączeniu (opóźnienie, jitter i 5% strat) i sprawdza jakość połączenia, którą raportuje BitVoice; run.sh down usuwa je. Strony serwerów są dostępne pod adresem https://127.0.0.1:18501 i :18502 (użytkownik admin).

Rozdział 64

Gdzie przechowywane są dane (SQLite lub PostgreSQL)

W interfejsie sieciowym: /settings

BitVoice przechowuje swoje ustawienia i ich zapisane wersje, użytkowników, kontakty, rekordy połączeń, logi inspekcji, teksty, notatki i transkrypcje w bazie danych. Nagrania i poczta głosowa pozostają jako pliki dźwiękowe w folderze danych.

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

Własny plik serwera (SQLite, domyślnie): jeden plik, bitvoice.db w folderze danych, bez niczego do zainstalowania. Wykonaj kopię zapasową folderu danych, a będziesz miał wszystko.

PostgreSQL: dla kilku serwerów BitVoice, które dzielą jeden zestaw danych, lub dla raportów w narzędziach takich jak Power BI, Grafana lub Metabase. W Ustawieniach, Baza danych, Przenieś dane do PostgreSQL: utwórz pusty zestaw danych i użytkownika, który go włada, wprowadź jego adres (postgres://użytkownik:hasło@host:5432/baza_danych), naciśnij Test, a następnie Kopiuj dane i zrestartuj na PostgreSQL. Wszystko jest kopiowane jednorazowo (wszystko lub nic) i BitVoice restartuje się na nim; stary plik pozostaje tam, gdzie był. Przenoszenie z powrotem do własnego pliku serwera działa w ten sam sposób. Przenoszenia są odrzucane podczas trwania połączeń.

Serwery, które dzielą bazę danych PostgreSQL, widzą zmiany ustawień nawzajem w ciągu pięciu sekund. Każdy nadal odpowiada na swoje telefony i połączenia; aby drugi serwer przejął telefony pierwszego serwera, telefony potrzebują obu adresów (lub jednego adresu, który się porusza).

Bazę danych można również nazwać podczas uruchamiania BitVoice, z -database postgres://… lub zmienną środowiskową BITVOICE_DATABASE; jest wtedy zmieniana tam, a nie w Ustawieniach.

Starsze instalacje: podczas pierwszego uruchomienia tej wersji, BitVoice kopiuję swoje stare pliki JSON do bazy danych i przenosi je do pre-database w folderze danych.

Rozdział 65

Hostowanie innych organizacji

W interfejsie sieciowym: /tenants

Jeden BitVoice może hostować wiele organizacji. Każda z nich jest własnym systemem telefonicznym: własnymi rozszerzeniami, numerami, łączami, trasami, administratorami, voicemail, nagraniami i historią połączeń. Żadna organizacja nie może zobaczyć innej. Udostępniają tylko port SIP, port IAX2 i porty multimedialne tego serwera.

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

Kiedy go używać

Główny system jest również organizacją: tą, którą serwer został ustawiony jako. Jego administratorzy zarządzają innymi.

Dodawanie organizacji

  1. Otwórz Organizacje (rozdział 65) i naciśnij Dodaj organizację.
  2. Podaj jej nazwę i krótką nazwę (małe litery, cyfry i myślniki). Krótka nazwa jest częścią jej adresu internetowego, /t/acme/, i częścią logowania telefonów, acme.100. Nie można jej później zmienić.
  3. Opcjonalnie podaj jej własną domenę, taką jak pbx.acme.example, wskazującą na ten serwer. Telefony rejestrują się w tej domenie, a jej administratorzy otwierają ją w przeglądarce.
  4. Ustaw jej pierwszego administratora: nazwę użytkownika i hasło o długości co najmniej 12 znaków, oraz jej kraj.
  5. Opcjonalnie ustaw limity.

Organizacja zaczyna działać natychmiast z pustym systemem telefonicznym, gotowym do ustawienia przez jej administratora, jak opisano w Rozpoczęcie (rozdział 1).

Jak połączenia znajdują odpowiednią organizację

Żądanieidzie do
z telefonu rejestrującego się do pbx.acme.exampleorganizacji z tą domeną
z telefonu logującego się jako acme.100Acme, rozszerzenie 100
od dostawcy, dla numeruorganizacji, z której pochodzi łącze i której trasa przychodząca ma ten numer
wszystko innegłównego systemu

Więc dwie organizacje mogą mieć rozszerzenie 100, a kilka może dzielić jeden dostawcę z różnymi numerami.

Gdzie są jej dane

Na SQLite, każda organizacja ma swój własny folder pod tenants/ w folderze danych, ze swoim własnym plikiem bazy danych. Na PostgreSQL, każda ma swój własny schemat w tej samej bazie danych (tenant_acme). Kopie zapasowe, archiwa i eksporty są na organizację.

Limity

LimitCo się dzieje przy nim
Rozszerzeniadodanie jednego więcej jest odrzucone z wiadomością
Połączenia na raznowe połączenia są odrzucone (503) do momentu zakończenia jednego
Przechowywanienowe nagrania i voicemail nie są przechowywane
Żądania AI dziennietranskrypcje, podsumowania i recepcjonista AI przestają działać do północy UTC

0 to brak limitu. Połączenia awaryjne nigdy nie są odrzucone: organizacja, która osiągnęła limit połączeń lub jest zawieszona, może nadal wywoływać 911 i być wywoływana.

Otwieranie organizacji

Otwórz loguje się do jej interfejsu internetowego jako dostawca, bez własnego konta; pojawia się w jej rejestrze audytu jako dostawca. Jej administratorzy logują się pod jej własnym adresem z własnymi kontami. Każda organizacja ma swój własny ciasteczko logowania, więc bycie zalogowanym do jednej nigdy nie loguje nikogo do innej.

Organizacje nigdy nie widzą ekranów samego serwera: aktualizacji, bazy danych, innych serwerów, certyfikatu, śledzenia SIP (które pokazuje wszystkie wiadomości organizacji), generatora połączeń ani tej listy.

Wstrzymywanie i usuwanie

Wstrzymane zatrzymuje logowania i każde połączenie, z wyjątkiem połączeń awaryjnych; nic nie jest usuwane. Usuń zatrzymuje organizację i przenosi jej folder na bok (tenants/.removed-<name>-<time>), aby błąd mógł być naprawiony ręcznie.

Rozdział 66

Kodeki i dźwięk

Kodek to sposób, w jaki dźwięk jest przekształcany w dane podczas połączenia. Telefony, przeglądarki i operatorzy obsługują niektóre z nich; BitVoice konwertuje między dowolnymi dwoma kodekami, gdy dwie strony się różnią, aby każdy mógł rozmawiać z każdym. Gdy obie strony używają tego samego kodeka, dźwięk jest przenoszony niezmieniony.

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

Kodeki

KodekDźwiękPrzepustowośćUżywany przez
G.722HD (szerokopasmowy)64 kbit/swiększość telefonów biurkowych: najlepszy wybór między nimi
G.711 µ-lawtelefoniczny64 kbit/sAmeryka Północna i Japonia; każdy operator
G.711 A-lawtelefoniczny64 kbit/sreszta świata
OpusHD, radzi sobie z utratą24 kbit/sprzeglądarki i aplikacje mobilne
G.729telefoniczny, nieco szorstki8 kbit/scienkie połączenia, niektórzy operatorzy
G.726 (40 kbit/s)telefoniczny; najlepiej przenosi tony modemowe spośród wszystkich szybkości G.72640 kbit/sbramy, niektóre systemy DECT
G.726 (32 kbit/s)bliski telefonicznemu32 kbit/sbazy DECT, starsze bramy
G.726 (24 kbit/s)pomiędzy 32 a 1624 kbit/sniektóre systemy DECT
G.726 (16 kbit/s)szorstki16 kbit/sbardzo cienkie połączenia
AMR-WB (G.722.2)HD6,6 do 23,85 kbit/ssieci komórkowe HD voice, połączenia VoLTE
AMRtelefoniczny, komórkowy4,75 do 12,2 kbit/ssieci komórkowe, niektórzy operatorzy i bramy
iLBCtelefoniczny, radzi sobie z utratą13,3 lub 15,2 kbit/sstarsze softfony i aplikacje
Speextelefoniczny15 kbit/s (2,15 do 24,6)starsze softfony, połączenia z innymi systemami Asterisk
GSMszorstki13 kbit/sstarsze softfony i bramy
G.723.1szorstki; konwertowany tylko z ffmpeg5,3 lub 6,3 kbit/sbardzo stare telefony wideo i bramy
G.722.1 (Siren 7)szerokopasmowy, przenoszony niezmieniony24 lub 32 kbit/stelefony Polycom, telefony wideo i konferencyjne
G.722.1C (Siren 14)super-szerokopasmowy, przenoszony niezmieniony24 do 48 kbit/stelefony konferencyjne, systemy pokojowe
G.719pełnopasmowy, przenoszony niezmieniony32 do 128 kbit/ssystemy pokojowe telepresencyjne
Codec2bardzo niskiej przepustowości, przenoszony niezmieniony0,7 do 3,2 kbit/społączenia radiowe, bramy radiowe amatorskie

Ustawienia wyświetlają listę kodeków, które mogą być używane przez telefony, najlepsze jako pierwsze; każda linia może mieć własną listę. Porty adapterów analogowych zawsze używają G.711, który jest wymagany przez faksy, modemy i panele alarmowe.

G.722.1, G.722.1C, G.719 i Codec2 są przenoszone niezmienione między dwiema stronami, które je używają, z zachowaniem ich szybkości bądź trybu w ofercie (BitVoice nie konwertuje ich, więc połączenie między jednym z nich a telefonem bez niego używa innego kodeka, który obie strony mają). Umieść je na liście, powyżej G.711, tam gdzie systemy pokojowe lub konferencyjne powinny zachować swój zakres dźwięku podczas połączeń ze sobą. Listy nazywają G.722.1 przy 32 kHz G7221C, chociaż SDP nazywa oba G7221.

G.723.1 jest przenoszony niezmieniony między dwiema stronami, które go używają. Aby umożliwić urządzeniu z tylko G.723.1 rozmowę z dowolnym innym, włącz Konwertuj G.723.1 z ffmpeg w Ustawieniach i zainstaluj ffmpeg (apt install ffmpeg, brew install ffmpeg): BitVoice uruchamia wtedy ffmpeg jako oddzielny program dla każdego kierunku, który wymaga konwersji (słyszany przy dowolnej szybkości, wysyłany przy 6,3 kbit/s, szybkości, którą ffmpeg koduje), około 60 ms później niż w przypadku innych kodeków, i zatrzymuje go kilka sekund po zakończeniu połączenia. BitVoice nie zawiera własnego kodu G.723.1: referencyjny kod ITU nie ma licencji, która pozwala na jego dołączenie, a ffmpeg jest instalowany i uruchamiany oddzielnie.

Koszt konwersji

Konwersja wymaga czasu procesora, tylko w przypadku połączeń, w których strony różnią się. Na połączenie, około 0,3 ms jednego rdzenia co 20 ms dla Opus i 0,12 ms dla G.729 (około 60 i 170 przekonwertowanych połączeń na rdzeń); G.726 i GSM kosztują mniej niż G.729; G.711 i G.722 prawie nic. G.729 jest wysyłany bez załącznika B (bez ramkek ciszy).

Czystość dźwięku

Czystość dźwięku (Ustawienia) obniża stały hałas tła i wyrównuje poziomy, dla poczty głosowej i, jeśli chcesz, podczas połączeń.

Rozdział 67

Microsoft Teams (Direct Routing)

W interfejsie sieciowym: /trunks

BitVoice może być kontrolerem granicznym sesji (SBC) dla dzierżawy Microsoft Teams, aby użytkownicy Teams mogli wykonywać połączenia do rozszerzeń BitVoice i linii telefonicznych, a BitVoice dzwoni do użytkowników Teams.

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

Co potrzebujesz: publiczna nazwa dla tego serwera w domenie, którą dzierżawca Microsoft 365 zweryfikował (sbc.example.com), port 5061 otwarty w obie strony do sieci Microsoft 52.112.0.0/14 i 52.120.0.0/14, oraz certyfikat dla tej nazwy z publicznej władzy. Użytkownicy Teams potrzebują licencji Phone System.

Kroki

  1. Ustawienia, Certyfikat: zainstaluj certyfikat i jego klucz prywatny (PEM). Jest on używany od razu, dla tego interfejsu i dla SIP przez TLS, i BitVoice przedstawia go firmie Microsoft.
  2. Trunki, Dodaj, zacznij od Microsoft Teams: wprowadź publiczną nazwę serwera. Szczegóły mówią, czy certyfikat go obejmuje.
  3. Skopiuj PowerShell wyświetlany w szczegółach i uruchom go jako administrator Teams: dodaje SBC (New-CsOnlinePSTNGateway), trasę głosową i politykę, oraz regułę planu wybierania, aby krótkie numery rozszerzeń dotarły do BitVoice tak, jak zostały wybrane; następnie przydziel każdemu użytkownikowi Teams politykę i jego numer.
  4. Aby dzwonić do użytkowników Teams z BitVoice, dodaj trasę wychodzącą dla ich numerów przez trunk Teams. Teams znajduje swoich użytkowników tylko według numerów z + i kodem kraju: jeśli ludzie dzwonią do nich bez, dodaj + i kod kraju w Prepend trasy (ślad połączenia mówi o tym, gdy wyjdzie bez niego).

Gdy użytkownik Teams przenosi połączenie, Microsoft prosi BitVoice o umieszczenie go (REFER nazwujący własny serwer proxy, z numerem lub ID użytkownika Teams): BitVoice wywołuje dokładnie to, co Microsoft nazwał, z Referred-By, które Microsoft podał, więc przeniesienie do innego użytkownika Teams działa tak samo jak do numeru telefonu. BitVoice nigdy nie wysyła Teams nagłówka Replaces, który Microsoft odrzuca.

BitVoice wysyła firmie Microsoft OPTIONS co minutę z nazwą SBC w Contact, jak wymaga Microsoft, i próbuje sip, sip2 i sip3.pstnhub.microsoft.com po kolei. Multimedia są zawsze szyfrowane (SRTP). Ostrzeżenie o stanie zdrowia, gdy certyfikat nie obejmuje nazwy, jest samopodpisany lub kończy się wkrótce, oraz gdy Microsoft przestaje odpowiadać.

To postępuje zgodnie z opublikowanymi wymaganiami SBC firmy Microsoft i jest testowane przeciwko symulowanemu serwerowi proxy Microsoft; BitVoice nie jest na liście certyfikowanych SBC firmy Microsoft.

Rozdział 68

Importuj

W interfejsie sieciowym: /import

Przenosi rozszerzenia, grupy dzwonienia, kolejki i trunki z FreePBX, Asterisk lub 3CX; oraz ludzi, polowania i grupy dzwonienia, trunki SIP, przychodzące numery i wzorce numerów z Cisco, Avaya i Mitel. Prześlij wyeksportowane pliki, kilka na raz (plik .zip lub .tar z nimi również działa); BitVoice pokazuje dokładnie, co się zmieni, zanim cokolwiek zostanie zastosowane, a import staje się rewizją, którą można cofnąć w Zmiany (rozdział 61).

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

Przenoszenie z FreePBX

Najlepszym plikiem jest backup FreePBX: zawiera wszystko, w tym hasła SIP.

  1. W FreePBX: Admin → Backup & Restore → Dodaj backup. Zaznacz co najmniej Core, Grupy dzwonienia, Kolejki i Poczta głosowa (wszystkie moduły są w porządku), zapisz i Uruchom.
  2. Pobierz backup z jego wiersza (plik nazywa się jak 20261001-100000-1790000000-17.0.19-1234567.tar.gz).
  3. Zainstaluj BitVoice na nowym serwerze i ukończ konfigurację z jednym rozszerzeniem, którego FreePBX nie używa (np. 199) i bez linii telefonicznej: import przywozi linie.
  4. W Importuj (rozdział 68), upuść .tar.gz, jak jest. Przeczytaj podgląd: ostrzeżenia wymieniają wszystko, co nie może zostać przeniesione.
  5. Wybierz Dodaj. To jest jedna rewizja w Zmiany (rozdział 61): cofnij ją tam, jeśli coś wygląda nie tak, i importuj ponownie.
  6. Przenieś telefony: każdy z nich wskazuje na BitVoice (lub zainstaluj je z Telefony (rozdział 4)), z tym samym numerem rozszerzenia i hasłem SIP, które miały.
  7. Przetestuj połączenia wewnątrz i na zewnątrz, a następnie przenieś rejestrację operatora (lub przeniesienie numeru) jako ostatnie.

Wypróbowane na prawdziwym systemie: FreePBX 17.0.33 (oficjalna instalacja Debian 12) z czterema rozszerzeniami i pocztą głosową, trunkiem PJSIP, który rejestruje, dwiema trasami wychodzącymi (jedną z prefiksem wybierania), grupą dzwonienia, kolejką z karami i trzema numerami DID, zabezpieczoną przez Backup & Restore z każdym modulem zaznaczonym. Backup ma 70 MB, prawie wszystko to pliki dźwiękowe i historia połączeń: BitVoice czyta je, jak przychodzi, i zachowuje tylko konfigurację, więc backup o rozmiarze do 512 MB jest przesyłany. Wszystko powyżej przeszło: hasła, PIN-y poczty głosowej i adresy e-mail, rejestracja trunku i kodeki, trasy z prefiksami, grupa dzwonienia z pocztą głosową, gdy nie jest odpowiedziana, kolejka z karami i numery DID do grupy, kolejki i rozszerzenia.

Co jest przenoszone:

Co nie jest przenoszone i jest powiedziane w podglądzie: IVR, warunki czasowe, ogłoszenia, follow-me, niestandardowe trunki i konteksty, dopasowanie ID wyświetlanego na trasach, oraz numery zewnętrzne w grupach dzwonienia. Zbuduj je w Menu (rozdział 21), Harmonogramy (rozdział 26) i Follow me rozszerzenia. Starsze backupy (FreePBX 13 i wcześniejsze) i zwykły mysqldump asterisk bazy danych FreePBX są czytane w ten sam sposób.

Inne systemy

Gdzie każdy eksport jest:

Grupy i trasy. Prześlij je z plikiem osób, aby każda grupa była znaleziona przez numer lub nazwę:

Trunki z tych eksportów przychodzą wyłączone i bez haseł, ponieważ eksporty nie zawierają ich. Trasy wychodzą na zaimportowanym trunku o tej samej nazwie; trasa, której trunk nie jest tutaj, jest pomijana i zgłaszana. Obracający się i najdłużej bezczynny sygnał dzwonienia jest bliższy kolejce niż grupie dzwonienia: podgląd mówi o tym, więc możesz go uczynić jednym.

Te eksporty (wszystkie, poza kopią zapasową FreePBX) nie zawierają haseł SIP, więc każde rozszerzenie otrzymuje nowe hasło; hasła skrzynki pocztowej, nazwy i adresy e-mail są przenoszone, gdy eksport je zawiera. Telefony Cisco, Avaya H.323/DCP i Mitel uruchamiają oprogramowanie swojego producenta i nie mogą być konfigurowane przez BitVoice: import mówi, ile z nich zostało wymienionych. Telefony Cisco mogą być ponownie przepalane oprogramowaniem Cisco multiplatform (SIP); telefony Avaya J100 i Mitel 6800/6900 mogą rejestrować się w BitVoice ręcznie w trybie SIP.

Rozdział 69

Konfiguracja jako kod

Wszystko, co robią ekran, przechodzi przez interfejs API REST BitVoice, więc wszystko można przepisać, przechowywać w Git lub zarządzać za pomocą Terraform. API jest opisane dla narzędzi w /api/openapi.json (/api/openapi.json).

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

Tokeny API

Utworzone w Administratorzy (rozdział 57): jeden na program, tylko do odczytu lub z możliwością zmiany wszystkiego. Wyślij go jako Authorization: Bearer bv_.... Jest wyświetlany raz; odwołaj go, gdy nie jest już potrzebny. Zmiany tokenu są wyświetlane w zmianach i w rejestrze inspekcji pod jego nazwą.

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

Terraform lub OpenTofu

Repozytorium deploy/terraform pokazuje rozszerzenia, grupy dzwonienia i trasy zarządzane za pomocą dostawcy REST: plan pokazuje, co się zmieni, zastosuj wprowadza zmiany. Dostawca sprawdza certyfikat BitVoice; podczas gdy BitVoice nadal używa własnego certyfikatu samopodpisanego, pobierz go z Let's Encrypt (Ustawienia, Certyfikaty) lub ustaw bitvoice_insecure = true w sieci, której ufasz (w systemie Linux, SSL_CERT_FILE wskazujący na certyfikat BitVoice również działa). Zasoby są dopasowane przez identyfikator, który nadał im BitVoice, więc drugi plan nie pokazuje zmian, dopóki plik lub ekran nie zmieni czegoś.

Konfiguracja z Git

W Ustawienia (rozdział 14), Konfiguracja z Git, BitVoice odczytuje konfigurację z pliku w repozytorium co kilka minut i albo pokazuje, co różni się, albo wprowadza zmiany. Rozpocznij plik od Eksportuj dla Git, który pomija hasła; BitVoice przechowuje własne, więc tajemnice nigdy nie trafiają do repozytorium.

Rozdział 70

Zgodność z Asterisk (AMI, ARI i AGI)

Narzędzia napisane dla Asterisk mogą kontrolować BitVoice: CRM, tablice, przyciski klik-nie-dzwoni, kontrolery rejestratorów połączeń. Włącz je w Ustawieniach (rozdział 14), Zgodność z Asterisk. Narzędzia widzą połączenia jako kanały o nazwach takich jak PJSIP/100-..., jak w Asterisk.

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

AMI

Interfejs menedżera na porcie TCP 5038 (AMI nasłuchuje: domyślnie tylko na tym komputerze). Obsługiwane:

RodzajNazwy
AkcjeLogowanie (zwykłe lub wyzwanie MD5), Ping, Zdarzenia, Filtrowanie, Lista poleceń, CoreShowChannels, Status, CoreStatus, CoreSettings, PJSIPShowEndpoints, ExtensionState, ExtensionStateList, DeviceStateList, Getvar, Originate, Redirect, BlindTransfer, Hangup, Logoff
KolejkiQueueStatus, QueueSummary, QueuePause, QueueAdd i QueueRemove (zapisują agenta w wszystkich kolejkach lub go z nich usuwają), Agenci
InneParkedCalls; ConfbridgeListRooms, ConfbridgeList, ConfbridgeKick, ConfbridgeMute, ConfbridgeUnmute, ConfbridgeLock, ConfbridgeUnlock; MailboxCount, MailboxStatus; PauseMonitor, UnpauseMonitor; UserEvent; Reload (nie ma nic do przeładowania: zmiany są stosowane natychmiast)
ZdarzeniaNewchannel, Newstate, Hangup, DialBegin, DialEnd, Hold, Unhold, PeerStatus, ContactStatus, MessageWaiting, ConfbridgeJoin, ConfbridgeLeave, ConfbridgeEnd, UserEvent

Filtrowanie zachowuje tylko zdarzenia, które pasują do wyrażenia regularnego (Event: Newchannel), lub je odrzuca z ! na początku, jak w Asterisk. Nie ma linii poleceń Asterisk: Polecenie odpowiada błędem.

ARI

W /ari/, z uwierzytelnianiem podstawowym lub ?api_key=user:secret:

ŻądanieCo robi
GET /ari/channelspołączenia w toku
POST /ari/channels?endpoint=PJSIP/100&extension=5551234dzwoni na 100, a następnie wybiera numer
DELETE /ari/channels/{id}kończy połączenie
POST /ari/channels/{id}/redirect?endpoint=PJSIP/102przekazuje połączenie do 102
/ari/endpoints, /ari/bridges, /ari/asterisk/infotelefony, mosty, wersja
/ari/eventsWebSocket zdarzeń
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=rtp&format=ulawkanał wysyłający dźwięk do programu za pomocą RTP (ulaw lub alaw przez UDP); jego lokalny port jest w UNICASTRTP_LOCAL_PORT kanału
POST /ari/channels/externalMedia?external_host=host:port&encapsulation=audiosocket&transport=tcp&format=slin&data=<uuid>to samo za pomocą AudioSocket
POST /ari/bridges/{call}/addChannel?channel={id}kanał multimedialny dołącza do połączenia: słyszy obie strony i obie słyszą go; z role=listener nikt go nie słyszy (do transkrypcji na żywo)
POST /ari/bridges/{call}/removeChannel?channel={id}opuszcza połączenie; dwie strony rozmawiają bezpośrednio ponownie

Kanał zewnętrznej transmisji multimedialnej, który nie zostanie dodany do połączenia w ciągu minuty, zostanie zamknięty.

Aplikacje ARI

Aplikacja ARI (Asterisk's Stasis()) uruchamia połączenia z własnego programu. Dodaj ją w Aplikacjach ARI w Ustawieniach, zgodności z Asterisk: nazwa, opcjonalny numer rozszerzeń do wybrania, i domyślny. Następnie wyślij połączenia do niej jak do każdego innego miejsca przeznaczenia: trasę przychodzącą, klawisz menu, harmonogram.

Twój program łączy się z /ari/events?app=NAME (WebSocket, z logowaniem w ?api_key=user:secret). Każde połączenie, które dociera do aplikacji, jest odbierane i przychodzi jako StasisStart, z kanałem; program następnie go uruchamia:

ŻądanieCo robi
POST /ari/channels/{id}/play?media=sound:goodbye,digits:42odtwarza komunikaty z Sounds (sound:), digits:, number:, tone:beep lub nagrany dźwięk (recording:); PlaybackStarted i PlaybackFinished następują. DELETE /ari/playbacks/{id} zatrzymuje go.
POST /ari/channels/{id}/record?name=msg1&maxDurationSeconds=60&maxSilenceSeconds=5&beep=true&terminateOn=%23nagrywa (wav) do przechowywanych nagrań; RecordingStarted i RecordingFinished. POST /ari/recordings/live/{name}/stop kończy je, DELETE odrzuca.
GET /ari/recordings/stored, .../{name}, .../{name}/file, DELETE .../{name}przechowywane nagrania
POST /ari/channels/{id}/dtmf?dtmf=123wysyła klawisze do dzwoniącego
GET/POST /ari/channels/{id}/variable?variable=X&value=Yzmienne kanału
POST /ari/bridges?bridgeId=room1, .../addChannel?channel=a,b, .../removeChannel, .../play, DELETEmosty mieszające: każdy w jednym słyszy wszystkich innych
POST /ari/channels/{id}/continue?extension=101puszcza połączenie: do tego rozszerzenia, grupy dzwonienia lub kolejki, w przeciwnym razie domyślny
DELETE /ari/channels/{id}kończy połączenie
POST /ari/channels?endpoint=PJSIP/101&app=NAMEdzwoni na 101; po odebraniu wchodzi do aplikacji
GET /ari/applicationsaplikacje, czy program jest połączony, i ich kanały
POST /ari/channels/{id}/mute?direction=in, DELETE .../mutewycisza to, co mówi dzwoniący (in), to, co słyszy (out) lub obie
POST/DELETE /ari/channels/{id}/hold, .../moh, POST .../silencemuzyka na czas przetrzymania połączenia do dzwoniącego (ChannelHold, ChannelUnhold), lub cisza
GET/POST /ari/channels/{id}/variableskilka zmiennych na raz (ChannelVarset)
POST /ari/channels/{id}/move?app=otherprzekazuje kanał do innej aplikacji (StasisEnd, a następnie StasisStart tam; ApplicationMoveFailed gdy nie ma programu, który ją uruchamia)
POST /ari/channels/{id}/snoop?spy=in&app=NAMEkanał podsłuchujący w aplikacji, który słyszy to, co mówi dzwoniący, aby go nagrać (POST /ari/channels/{snoop}/record)
POST /ari/channels/create?endpoint=PJSIP/101&app=NAME, a następnie POST .../dialkanał, który czeka, aż zostanie wybrany; zdarzenia Dial mówią, jak idzie dzwonienie, i wchodzi do aplikacji po odebraniu
GET /ari/channels/{id}/rtp_statisticspakiety i bajty wysłane i otrzymane, straty i jitter
POST /ari/playbacks/{id}/control?operation=pausepauzuje, wznawia, restartuje, cofa i przewija (trzy sekundy)
POST /ari/bridges/{id}/moh, .../record, .../variable, .../play/{playbackId}muzyka na czas przetrzymania połączenia do mostu, nagrywanie jego miksu, jego zmienne
POST /ari/recordings/stored/{name}/copy, POST/DELETE /ari/recordings/live/{name}/pause, .../mutekopiowanie nagrania; pauzuje lub wycisza nagranie na żywo
POST /ari/applications/{app}/subscription?eventSource=deviceState:Custom:lamp, PUT .../eventFiltersubskrypcje (kanał:, most:, endpoint:PJSIP/100, deviceState:) i filtry zdarzeń ({"disallowed": [{"type": "ChannelVarset"}]})
GET /ari/deviceStates, PUT /ari/deviceStates/Custom:lamp?deviceState=INUSEstany telefonów (PJSIP/100: NOT_INUSE, INUSE, RINGING, UNAVAILABLE) i niestandardowe stany, które programy utrzymują (DeviceStateChanged); stan telefonu przychodzi również jako EndpointStateChange
GET /ari/mailboxes, PUT /ari/mailboxes/{name}?newMessages=1&oldMessages=0liczniki poczty głosowej rozszerzeń (100@default), i skrzynki pocztowe, które programy same utrzymują
GET /ari/soundskomunikaty dźwiękowe Sounds, w językach, w których zostały nagrane, i dźwięki przesłane do skryptów AGI
PUT /ari/endpoints/sendMessage?to=pjsip:100&body=Hitekst na telefonie rozszerzenia 100
POST /ari/events/user/{name}?application=NAMEzdarzenie użytkownika do aplikacji (ChannelUserevent)
GET /ari/asterisk/ping, GET/POST /ari/asterisk/variable, GET /ari/asterisk/modulesping, zmienne globalne, i części BitVoice nazwane jako moduły, które reprezentują

BitVoice odpowiada na każdą operację opublikowanego przez Asterisk ARI (jego zestaw testowy wywołuje każdą z nich i sprawdza, czy odpowiedź zawiera pola wymagane przez opis Asterisk). Niektóre z nich nie mają tu znaczenia i zwracają 501 z powodem: moduły do ładowania (BitVoice jest jednym programem), dynamiczna konfiguracja Sorcery (BitVoice jest ustawiana w swoim interfejsie sieciowym), kanały logowania, źródła wideo mostków (mostki ARI przenoszą dźwięk), wysyłanie REFER do telefonów i oświadczenie o połączeniach nadawczych. Podsłuch słyszy tylko połączającego (spy=in), a szepot nie jest oferowany: mostek kanału z ich kanałem, aby z nimi rozmawiać. Zdarzenia kanałowe dla każdego połączenia (ChannelCreated, ChannelStateChange, ChannelDestroyed) są wysyłane do każdego programu, tak jak w przypadku subscribeAll=true Asterisk. Biblioteki ARI, które czytają interfejs z serwera (ari-client i inne), znajdują go w /ari/api-docs/resources.json. Jakie programy teraz przechowują, w aplikacjach ARI w Ustawieniach, wyświetla aplikacje, niestandardowe stany urządzeń, skrzynki pocztowe, zmienne globalne i mostki ustawione przez programy.

Naciśnięte klawisze przychodzą jako ChannelDtmfReceived; rozmówca kończący połączenie jako StasisEnd. Gdy nie ma podłączonego programu, połączenie jest kierowane do programu zastępczego; gdy ostatnie połączenie programu zostaje zamknięte, jego połączenia są kierowane tam również po pięciu sekundach (czasie potrzebnym do ponownego połączenia). Dla logiki połączeń bez własnego programu użyj Skryptów (rozdział 27), które uruchamiają całe połączenie; aby przekazać audio do programu, Boty głosowe (rozdział 24).

Skrypty AGI

Skrypt AGI (Asterisk AGI() i EAGI()) uruchamia polecenie połączenia, więc IVR i integracje napisane dla Asterisk (phpagi, pyst2, Asterisk-Java, dowolny serwer FastAGI) nadal działają. Dodaj go w Skryptach AGI w Ustawieniach, zgodność z Asterisk:

PoleCo to jest
Nazwa skryptujak miejsca docelowe go nazywają
Adresserwer FastAGI, agi://host:4573/script?x=1 (port 4573, gdy nie podano), hagi://domain/script dla serwerów w rekordach SRV _agi._tcp domeny, próbowanych w kolejności priorytetu, lub nazwa pliku programu w folderze Programy AGI
Argumentyprzekazywane jako agi_arg_1, agi_arg_2 …
Numer do wywołaniaopcjonalnie: numery wewnętrzne wywołują go jak każdy inny numer
Program zastępczygdzie połączenie jest kierowane, gdy skrypt kończy się bez wyboru numeru lub nie może być osiągnięty
Najdłuższe uruchomienieskrypt, który działa dłużej, jest zatrzymywany (domyślnie godzina)
EAGIdla programu: audio rozmówcy (8 kHz, podpisane 16-bit, little-endian) na deskryptorze pliku 3. Linux i macOS

Test łączy się z serwerem (lub sprawdza, czy program jest tam i wykonywalny) bez wysyłania połączenia. Następnie wysyłaj połączenia do niego jak do każdego innego miejsca docelowego.

BitVoice odpowiada na połączenie, wysyła zmienne agi_ (agi_network_script, agi_callerid, agi_dnid, agi_extension, agi_language …) i wykonuje polecenia, odpowiadając jak Asterisk 20 (zestaw testowy porównuje każdą odpowiedź z nagraniem Asterisk):

PoleceniaUwagi
ANSWER, HANGUP, CHANNEL STATUS, NOOP, VERBOSEHANGUP z nazwą kanału tylko kończy połączenie skryptu
STREAM FILE, CONTROL STREAM FILE, GET OPTION, GET DATA, WAIT FOR DIGITklawisze escape, przesunięcia próbek i endpos jak w Asterisk; przewijanie do przodu, cofanie i pauza w CONTROL STREAM FILE
SAY DIGITS, SAY NUMBER, SAY ALPHA, SAY PHONETIC, SAY DATE, SAY TIME, SAY DATETIMEz usługą mowy w Ustawieniach, AI są one wypowiadane; bez, cyfry są wypowiadane z dźwięków
RECORD FILEs=N cisza, sygnał dźwiękowy, klawisze escape; plik ląduje w bibliotece dźwięków
SET VARIABLE, GET VARIABLE, GET FULL VARIABLECALLERID(num), CALLERID(name), EXTEN, UNIQUEID, CHANNEL … i wyrażenia ${NAME}
DATABASE GET, PUT, DEL, DELTREEbaza danych Asterisk (AstDB), przechowywana przez BitVoice i wyświetlana w Bazie danych AGI
SET CALLERID, SET EXTENSION, SET CONTEXT, SET PRIORITY, SET AUTOHANGUP, SET MUSICSET EXTENSION jest miejscem, gdzie połączenie jest kierowane, gdy skrypt kończy się
SPEECH CREATE … SPEECH RECOGNIZEużywa rozpoznawania mowy z Ustawień, AI: wynik jest tym, co rozmówca powiedział, jako text0, do porównania przez skrypt; gramatyki są akceptowane i nie są używane
EXECOdpowiedź, Rozłączenie, Odtwarzanie, Tło, Odczyt, Ustawienie, MSet, SayDigits, SayNumber, SayAlpha, Czekaj, Wywołaj (wybiera każdy numer z kolei; DIALSTATUS), Przejdź, Poczta głosowa, Muzyka w trakcie postoju, Nagrywanie, Brak, Verbose, Log. Inne odpowiedzi -2, jak Asterisk dla brakującej aplikacji

BitVoice nie ma planu wybierania: tam, gdzie skrypt mógłby iść dalej w planie wybierania Asterisk (SET EXTENSION, EXEC Goto), połączenie jest kierowane do tego numeru tutaj (numer wewnętrzny, grupa dzwonienia, kolejka, menu lub numer zewnętrzny przez trasy wychodzące) po zakończeniu skryptu. Skrypty nigdy nie wywołują numerów awaryjnych. Gdy rozmówca kończy połączenie, skrypt FastAGI otrzymuje HANGUP, a program SIGHUP; tylko polecenia dozwolone na martwym kanale są wykonywane wtedy (511 dla innych), a połączenie jest zamykane 30 sekund później, jeśli skrypt kontynuuje. Każde uruchomienie jest wyświetlane w Ostatnich uruchomieniach z liniami VERBOSE i jest wysyłane do strumienia zdarzeń jako agi.ran.

Dźwięki dla skryptów AGI. Skrypty odtwarzają dźwięki według nazw, których używają w Asterisk: przesyłaj je w Dźwięki dla skryptów AGI z folderem (custom/welcome; es/custom/welcome dla rozmówców po hiszpańsku). WAV, MP3 i .gsm, .ulaw, .alaw, .sln i .sln16 Asterisk są akceptowane; ścieżka jak /var/lib/asterisk/sounds/en/custom/welcome.gsm znajduje custom/welcome. Własne nagłówki i tony Asterisk (digits/0–digits/9, beep, silence/N i kilka innych, vm-goodbye, invalid, please-hold) grają nagłówki i tony BitVoice. To, co skrypty nagrywają, jest przechowywane w tej samej bibliotece, oznaczone jako nagrane przez skrypt, przez dni, które wybierzesz (30 domyślnie). Biblioteka przechowuje do 1 GB.

Programy. Program uruchamia się na tym serwerze z prawami BitVoice, więc nigdy nie jest przesyłany przez sieć: skopiuj go do folderu Programy AGI wyświetlanego na ekranie (DATA/agi-bin) i nadaj mu prawa do wykonywania. Otrzymuje tylko PATH i AST_AGI_DIR ze środowiska, uruchamia się w tym folderze, a to, co zapisuje do standardowego strumienia błędów, trafia do dziennika serwera. FastAGI wysyła polecenia w postaci zwykłego TCP: zachowaj serwer na tym komputerze lub w sieci prywatnej.

Logowania

Każde logowanie ma Nazwę użytkownika i Hasło. Logowania są tylko do odczytu, chyba że są oznaczone jako Może zmieniać połączenia. Zachowaj AMI na tym komputerze, chyba że narzędzie działa gdzie indziej: AMI jest zwykłym, niezaszyfrowanym TCP.

Rozdział 71

Asystenci AI (MCP)

Asystent AI, taki jak Claude, ChatGPT, Gemini lub Cursor, może korzystać z BitVoice za pomocą Model Context Protocol (MCP), standardowego sposobu, w jaki asystenci docierają do innych programów. Zapytaj go w prostych słowach: kto dzwonił rano i czy ktoś oddzwonił, co powiedział dzwoniący z gabinetu dentystycznego, dlaczego połączenie o godz. 9 trafiło na pocztę głosową, czy linia dostawcy jest wyłączona. Z Twojej zgody może również umieścić połączenie, wysłać wiadomość tekstową lub rozłączyć połączenie.

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

Włączanie

W Ustawieniach (rozdział 14), Asystenci AI (MCP):

Karta wyświetla adres i gotowe do skopiowania ustawienia dla wspólnych asystentów i wyświetla listę wszystkich narzędzi.

Co może zrobić asystent

Czytanie (dowolnego tokenu):

Działanie (z Pozwól asystentom działać, i tokenem, który może zmieniać rzeczy):

Każdy narzędzie jest jedną z tras API, uruchamianą jako asystent: widzi i zmienia dokładnie to, na co pozwala jego token, te same kontrole mają zastosowanie, a jego zmiany są rejestrowane w dzienniku inspekcji pod jego nazwą. Odpowiedź jest ograniczona do około 60 000 znaków; asystent jest proszony o zawężenie wyszukiwania, gdy jest ono cięte.

Podłączanie asystenta

Asystenci, którzy się logują (Claude.ai i ChatGPT niestandardowi łącznicy, i inni): dodaj łącznik z adresem BitVoice. Asystent otwiera stronę logowania BitVoice w Twojej przeglądarce; zaloguj się normalnie (hasło, dwuetapowe, logowanie jednokrotne), a strona powie, jaki asystent prosi i gdzie wraca. Administrator może pozwolić mu działać lub Tylko pozwolić na odczyt; asystent widza może tylko czytać. Nie zezwalaj wysyła go z niczym. Jego dostęp jest następnie w Administratorzy (rozdział 57), tokeny API, jako Asystent AI, zalogowany: działa na /mcp tylko, nigdy dla reszty API, trwa godzinę na raz i odnawia się przez maksymalnie 30 dni nieaktywności. Cofnij kończy go natychmiast. Ci asystenci docierają do BitVoice ze swoich własnych serwerów, więc potrzebuje adresu dostępnego z Internetu i certyfikatu, którym ufają (Let's Encrypt, w Certyfikat (rozdział 14)).

Asystenci, którym podaje się token (Claude Code, Cursor, VS Code i inne narzędzia, które przyjmują adres i nagłówek): utwórz token API w Administratorzy (rozdział 57), tylko odczyt, chyba że powinien działać, i podaj go jako Authorization: Bearer bv_...:

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

Asystenci, którzy uruchamiają program (Claude Desktop, i inne, które przyjmują polecenie): program BitVoice zawiera mostek, bitvoice mcp, który przekazuje każdą wiadomość do serwera przez HTTPS. Podaj mu adres serwera i token:

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

With BitVoice's own certificate (not one from an authority), the bridge refuses it and prints its SHA-256: check it is your server's, then add "-pin", "THAT-SHA256" to the arguments. Only that certificate is then accepted.

Bezpieczne pozostawienie włączonego

Rozdział 72

Archwium

W interfejsie sieciowym: /archive

Archiwum przechowuje kopie nagrań, poczty głosowej i konfiguracji w innym miejscu: wiadrach Amazon S3 (lub dowolnym magazynie zgodnym z S3) lub kontenerze Azure Blob Storage. Jeśli dysk tego serwera zostanie utracony, archiwum nadal je posiada.

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

Konfiguracja

  1. W Archiwum (rozdział 72), wybierz Gdzie archiwizować: Amazon S3 lub Azure.
  2. Dla S3: Wiadro, jego Region, opcjonalny Folder w wiadrze i Punkt końcowy (dla magazynów zgodnych z S3), oraz ID klucza dostępu i Klucz dostępu tajnego. Kopiuj zasady daje jedynie uprawnienia, których potrzebuje BitVoice, aby dołączyć do użytkownika lub roli.
  3. Dla Azure: Adres URL kontenera SAS z uprawnieniami do zapisu, oraz opcjonalny Folder w kontenerze.
  4. Wybierz, co skopiować oprócz konfiguracji: Nagrania połączeń, Poczta głosowa, lub oba.

Co się dzieje

Co dziesięć minut BitVoice kopiuj nowe nagrania i wiadomości, które jeszcze nie są w archiwum, oraz raz dziennie datowaną kopię konfiguracji (config/2026-10-13.json). Strona pokazuje ostatni przebieg, ostatni sukces i ewentualne błędy.

Usuwanie czegoś tutaj (przez retencję lub ręcznie) nie powoduje usunięcia kopii archiwum: ustaw własne reguły cyklu życia wiadra lub kontenera, aby określić, jak długo archiwum przechowuje elementy.

Rozdział 73

Prawne zatrzymania

W interfejsie sieciowym: /holds

Prawne zatrzymanie zachowuje rekordy połączeń, nagrania i pocztę głosową, które mogą być potrzebne w danej sprawie, i uniemożliwia ich usunięcie, aż do momentu ich zwolnienia. Używaj go, gdy prawnik poprosi o zachowanie rekordów.

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

Dodawanie zatrzymania

Na Prawnych zatrzymaniach (rozdział 73), naciśnij Dodaj:

PoleCo to jest
Nazwaco jest nazwą sprawy
Powóddlaczego, dla zapisu
Numeryrozszerzenia i numery zewnętrzne, które obejmuje (101, +15551234567), lub Wszystko
Od, Dodaty, które obejmuje; puste dla braku ograniczenia

Podczas zatrzymania

Zwolnienie

Zwolnienie sprawia, że to, co zatrzymanie zachowało, jest ponownie poddane ustawieniom przechowywania: rzeczy starsze niż przechowywanie są usuwane podczas następnej czyszczenia. Zwolnione zatrzymania pozostają na liście, wraz z datą i osobą, która je zwolniła, a dodawanie i zwalnianie zatrzymań jest rejestrowane w dzienniku inspekcji.

Rozdział 74

Metriki: Prometheus, OpenTelemetry, Grafana, SNMP i rekordy połączeń

W interfejsie sieciowym: /settings

Prometheus pobiera /metrics z adresu internetowego. Utwórz token API w sekcji Administratorzy (wystarczy token widza) i podaj go Prometheus jako token nośnikowy:

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

Czyta połączenia w trakcie (po stanie), zakończone połączenia (po kierunku i wyniku), czas rozmowy, zarejestrowane telefony, stan każdego traktu i czas podróży, rozmówców oczekujących i agentów w każdej kolejce, otrzymane i utracone pakiety dźwięku, histogram ocen jakości połączenia (MOS) oraz zaplanowane powiadomienia. Liczniki zaczynają się od zera po ponownym uruchomieniu BitVoice, tak jak oczekuje Prometheus.

OpenTelemetry: w Ustawieniach, Metriki, wprowadź adres kolektora OTLP/HTTP (i nagłówek, taki jak Autoryzacja, z jego wartością), aby wysyłać te same pomiary co minutę (lub tak często, jak ustawisz, od 15 sekund). Wysłanie teraz sprawdza zapisane ustawienia.

Pulpit nawigacyjny Grafana pobiera gotowy pulpit nawigacyjny: importuj go w Grafana i wybierz źródło danych Prometheus.

SNMP

Dla systemów monitorowania, które obsługują SNMP (Zabbix, PRTG, LibreNMS, Nagios, SolarWinds), włącz agent SNMP w Ustawieniach. Odpowiada na SNMPv2c GET, GETNEXT i GETBULK, tylko do odczytu, na porcie UDP 161 (lub innym, który wybierzesz: port 161 wymaga uprawnienia do otwierania portów niskich w systemie Linux), i tylko z sieci, które wymieniasz. Wybierz społeczność, która nie jest publiczna ani prywatna: jest to hasło, które przechodzi przez sieć w postaci jawnej.

Dostarcza standardową grupę systemu (sysDescr, sysUpTime, sysContact, sysName, sysLocation) i własne wartości BitVoice pod bazowym OID: połączenia w trakcie i dzwoniące, zarejestrowane telefony, trakty w górę i ustawione, rozmówcy oczekujący, zakończone połączenia, sekundy rozmowy, utracone pakiety, średnia jakość połączenia, tabela traktów (nazwa, w górę lub w dół, opóźnienie) i tabela kolejek (oczekujący, agenci, odpowiedzi, porzuceni). Pobierz BITVOICE-MIB obok ustawień dla Twojego systemu monitorowania. BioDream LLC nie ma jeszcze numeru przedsiębiorstwa, więc domyślne bazowe OID znajduje się w przestrzeni eksperymentalnej Net-SNMP; umieść je pod własnym numerem przedsiębiorstwa, aby zachować stabilność.

Pułapki (SNMPv2) są wysyłane do każdego odbiorcy, którego wymieniasz, gdy trakt zostaje wyłączony lub włączony, gdy wykonano połączenie awaryjne lub gdy serwer klastra przestał odpowiadać. SNMPv3 nie jest jeszcze obsługiwany.

Rekordy połączeń w innym miejscu

Obok Historii połączeń, każdy rekord może być wysłany, po zakończeniu połączenia, do:

Wyślij rekord testowy próbuje serwer syslog i bazę danych z zapisanymi ustawieniami.

Rozdział 75

Generator połączeń

W interfejsie sieciowym: /loadtest

Generator połączeń umieszcza prawdziwe połączenia z prawdziwym dźwiękiem do BitVoice z tego komputera: aby zobaczyć, ile połączeń obsługuje serwer i jak dobrze, lub aby sprawdzić po zmianie, czy połączenia nadal trafiają tam, gdzie powinny.

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

Uruchamianie testu

UstawienieCo to jest
Numer do wywołanianumer wewnątrz BitVoice: rozszerzenie, grupa, kolejka, menu
Połączenia pochodzą znumer nadawcy, który jest wyświetlany
Odpowiedź jakorozszerzenie, dla którego generator odpowiada samodzielnie; lub nikt, gdy numer odpowiada samodzielnie (menu, test echa)
Połączeniaile w sumie
Narazile może być w trakcie jednocześnie, do 2 000. Każde przekierowane połączenie zajmuje porty multimedialne z Multimedia od i Multimedia do (Ustawienia): domyślnie 10 000-20 000 mieści około 1 800, więc rozszerzaj je dla większej ilości
Nowe na sekundęjak szybko one zaczynają się
Każde trwa (s)jak długo każde trwa

Czytanie wyników

WynikCo mówi
Odpowiedziane, Nieudanei Dlaczego połączenia nie powiodły się, z powodu
Czas odpowiedzi, mediana i 95%jak długo czekali dzwoniący
Utracone audioudział pakietów dźwięku, które nigdy nie dotarły
Ocena audioszacowana jakość dźwięku (MOS): 4 i więcej jest dobre, poniżej 3,6 jest słaba
Jitter, 95% połączeńjak nierównomiernie dźwięk wracał (RFC 3550 jitter między przyjściem, średnio dla każdego połączenia); telefony wyrównują do około 20 ms
Najdłuższa przerwa, najgorsze połączenienajdłuższa przerwa między dwoma pakietami dźwięku w dowolnym połączeniu; przychodzą co 20 ms, więc zatrzymanie serwera jest widoczne tutaj
Pauzy pamięci, najdłuższa pauzajak często i przez jaki czas w trakcie uruchomienia Go runtime wstrzymywał wszystko, aby uporządkować pamięć
Połączenia w trakcie na przestrzeni czasuwykres obciążenia
Rozdział 76

Ślad SIP

W interfejsie sieciowym: /trace

Ślad SIP wyświetla wiadomości, które BitVoice wysyła i otrzymuje, na żywo: pierwsze miejsce, w którym należy szukać, gdy telefon nie może się zarejestrować lub połączenie awaryjne nie powiedzie się, i to, o co poprosi dział wsparcia dostawcy.

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

Znajdowanie wiadomości

BitVoice przechowuje ostatnie 2 000 wiadomości w pamięci (nic nie jest zapisywane na dysku, a są one usuwane po ponownym uruchomieniu). Wpisz część numeru, adresu lub Call-ID w filtrze. Naciśnij Odśwież, aby uzyskać najnowsze.

Wybierz wiadomość, aby ją zobaczyć w pełni i, obok niej, przepływ połączenia: każdą wiadomość tego samego połączenia w kolejności, między telefonem, BitVoice i dostawcą, jak na rysunku.

Odczytywanie śladu

WidziszZwykle oznacza
REGISTER odpowiedź 401, potem nictelefon nie ma hasła lub ma nieprawidłowe hasło
REGISTER odpowiedź 403adres jest zablokowany lub telefon loguje się jako inna rozszerzenie
INVITE odpowiedź 404nie ma dopasowania trasy dla wybranego numeru (Trasy połączeń (rozdział 8))
INVITE odpowiedź 403 od dostawcydostawca odrzuca ID wywołującego lub numer
486druga strona jest zajęta
488obie strony nie mają wspólnego kodeka (Kodeki (rozdział 66))
200 OK, potem BYE po około 30 sekundachACK nigdy nie dotarł: router pośredni modyfikuje lub usuwa wiadomości (wyłącz jego "SIP ALG")
Połączenie łączy się, ale nikt nic nie słyszydźwięk jest zablokowany: sprawdź publiczny adres w Ustawieniach i porty multimedialne w zaporze sieciowej
Część 6

Bezpieczeństwo publiczne: ścieżka laboratoryjna

Profil punktu przyjmowania połączeń 911, konsola radiowa i usługi rdzenia NG911. Są to ścieżka laboratoryjna i projektowa: zbudowana i przetestowana z wykorzystaniem nagranych danych, danych próbnych i zastępczych, ale nie certyfikowana do obsługi żywych połączeń 911 lub radiowych i nie jeszcze wypróbowana z żywym systemem ESInet, P25 lub CAD. Są one wyłączone z menu, dopóki nie zostaną włączone w Ustawieniach. Połączenia awaryjne z własnych telefonów (Rozpoczęcie pracy) nie są częścią tej ścieżki: są częścią każdego systemu telefonicznego.

Rozdział 77

Połączenia 911 (profil 911)

W interfejsie sieciowym: /psap

BitVoice odpowiada na połączenia 911 jako system obsługi połączeń PSAP: połączenia z sieci usług awaryjnych (ESInet, NENA i3) przychodzą z lokalizacją osoby dzwoniącej i danymi sieci, operator widzi je od razu, a CAD jest powiadamiany, gdy połączenie jest odebrane.

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

Konfiguracja.

  1. W Trunkach (rozdział 7) dodaj trunk od dostawcy ESInet (lub jądro ESRP NG911) i włącz Z ESInet.
  2. W Routeingu połączeń (rozdział 8), przekieruj połączenia do twoich dyspozytorów: kolejki lub grupy dzwonienia.
  3. W połączeniach 911, wprowadź swój identyfikator agencji (domenę, np. psap.county.example.gov) i informacje o CAD, które przyjmuje: adres i port, na którym nasłuchuje ALI, oraz adres EIDO.

Gdy połączenie 911 dzwoni, wyświetla się na połączeniach 911 z:

Lokalizacja jest przesyłana w połączeniu (jako wartość), lub jako referencja, którą BitVoice pobiera za pomocą HELD. Połączenie z referencją ma ponowne żądanie lokalizacji: BitVoice pyta ponownie, dla osoby, która się porusza lub której pierwsze ustalenie było niedokładne.

Gdy ponowne żądanie zmienia lokalizację, sprawdzenie lokalizacji określa, którą wyświetlić jako pierwszą i dlaczego: nową lokalizację jako regułę; pierwszą, gdy była to precyzyjna lokalizacja urządzenia (GPS, w promieniu 100 m) mniej niż dwie minuty temu i nowa jest mniej precyzyjna; oraz obie, gdy dwie lokalizacje różnią się bardziej niż na ich niepewność pozwala, więc dyspozytor pyta osobę, która dzwoni. Pierwsza lokalizacja pozostaje w połączeniu w każdym przypadku.

Gdy dyspozytor odbiera połączenie, CAD otrzymuje, każde oddzielnie, aby CAD, który jest niedostępny, nie blokował połączenia:

ALI spill sam w sobie jest zwykłym TCP, ponieważ starsze słuchacze CAD przyjmują go, więc nie może wymagać szyfrowania. Gdy jest wysyłany do innego komputera, Stan ostrzega: trzymaj tę ścieżkę poza każdą siecią współdzieloną, z bezpośrednim połączeniem szeregowym (serial:/dev/…) lub VPN lub obwodem prywatnym do CAD. Ustaw również Identyfikator agencji: EIDOs i nazwa loga i3 identyfikują agencję za pomocą niego, a Stan (rozdział 13) ostrzega, dopóki nie jest pusty.

Połączenie 911 nigdy nie jest odrzucane. Połączenie głosowe z ESInet (lub trunku CAMA), którego trasa przychodząca odrzuciłoby je, ponieważ trasa kończy się, dzwoni grupie bez nikogo w niej lub nie istnieje, lub nikt nie odbiera, dzwoni każdemu dyspozytorowi zamiast tego: każdej włączonej rozszerzeniu i każdemu telefonowi, który łączy się, podczas gdy dzwoni, aż ktoś odbierze lub osoba, która dzwoni, kończy połączenie. Połączenie tekstowe czeka na tym ekranie w ten sam sposób. Jak było trasowane mówi, co się stało, a Stan (rozdział 13) ostrzega o takiej trasie, aby mogła być poprawiona. Tylko połączenia testowe (urn:service:test.sos) i połączenia, które nie są połączeniami 911, zachowują swoją trasę odmowy.

Ani upuszczone przez transfer. Gdy dyspozytor przekazuje połączenie 911 i transfer nie może się połączyć, ponieważ rozszerzenie nie ma podłączonego telefonu lub nikt nie odbiera go, połączenie wraca do tego dyspozytora, podczas gdy nadal jest on na połączeniu. Jeśli już rozłączył się (większość telefonów biurkowych robi to zaraz po przełączeniu), każdy dyspozytor dzwoni zamiast tego, aż ktoś odbierze. Połączenie 911 nigdy nie jest przekazywane do poczty głosowej rozszerzenia lub innego celu braku odpowiedzi, a ślad trasowania mówi, co się stało. W każdym połączeniu telefon, który rozłącza się zaraz po poproszeniu o transfer, uwalnia tylko siebie: transfer kontynuuje się.

Osoba, która zniknęła. Gdy jeden koniec połączenia przestaje wysyłać dźwięk na minutę (telefon, który stracił zasilanie lub sygnał, nie wysyła sygnału rozłączenia), podczas gdy drugi koniec nadal wysyła, połączenie jest kończone z powodem *dźwięk osoby, która dzwoni, przestał* (lub kto to zrobił), w rekordzie połączenia i w zdarzeniu call.ended, które CAD słyszy (cause, endedBy). Koniec na czacie, faksowaniu lub który powiedział, że nic nie wysyła (głośnik do ogłoszeń), nigdy nie kończy się w ten sposób. Cisza nadal wysyła pakiety, więc osoba, która nie może mówić, utrzymuje połączenie.

Transkrypcje na żywo. Z Pisząc 911 połączenia na żywo włączone (Ustawienia, AI), każda strona odebranej odpowiedzi 911 jest zapisywana jako mówi, przez usługę rozpoznawania mowy, gdy jest ustawiona (tak, aby audio pozostało w budynku (rozdział 28)), w przeciwnym razie przez usługę AI, przecinane tam, gdzie mówca pauzuje, i wyświetlane pod połączeniem jako Transkrypcja na żywo. CAD otrzymuje każdy kawałek jako zdarzenie call.transcript: {"call": id, "lines": [{"speaker": "Caller", "side": "caller", "text": "…", "second": 12.4}]}. Dźwięk połączeń jest wysyłany do usługi AI, podczas gdy trwają, nagrywany lub nie. Własna transkrypcja nagrania nadal przychodzi, gdy połączenie się kończy.

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.

Wideo i zdjęcia nadawcy. Podczas połączenia 911, Wyślij nadawcy link wideo tworzy link, który otwiera tylko to połączenie: wysłany do nadawcy z numeru pod Wyślij link z, lub odczytany. Gdy nie można go wysłać (nie ustawiono numeru tekstowego lub nadawca nie wysłał numeru), ekran i API problem mówią, dlaczego. Nadawca otwiera go w przeglądarce telefonu (bez aplikacji): Udostępnij wideo na żywo wysyła wideo z tylniej kamery na żywo (WebRTC, WHIP: RFC 9725), a Wyślij zdjęcia lub wideo wysyła to, co zostało już sfotografowane, w tym pliki z kamer samochodowych i akcji. Podczas połączenia:

Wideo nigdy nie jest pobierane z połączeń: każde wideo na żywo ma własne porty, ten serwer przyjmuje maksymalnie Wideo na żywo jednocześnie z nich (4, chyba że ustawiono), każde prosi o pozostanie poniżej Przepływność wideo, a wideo, które zatrzymuje się na dziesięć sekund, jest kończone. Telefony nadawców muszą dotrzeć do tego serwera w Adresie linku (https) i jego portach multimedialnych (UDP). Pliki są przechowywane Przechowuj pliki i rejestr ekspozycji dni (pusty: do usunięcia), z wyjątkiem połączeń wstrzymanych.

Nagrywanie wideo na żywo. Z włączonym Nagrywaj wideo na żywo nadawców, wideo na żywo nadawcy jest przechowywane z zdjęciami i klipami jako jeden plik na każdy odcinek wideo: te same obrazy, które telefon wysłał, nieprzetworzone, w pliku IVF (H.264 lub VP8 z własnym czasem dla każdego obrazu), zahashowane, gdy jest zapisywane. Uszkodzony obraz spowodowany utratą pakietu jest pomijany, a telefon jest proszony o pełny obraz, aby kontynuować. Pokaż odtwarza go (z kopii w WebM lub MP4, którą tworzy ffmpeg, te same obrazy w innym kontenerze; bez ffmpeg tylko oryginał jest pobierany); Pobierz oryginał daje plik, którego hash jest.

Do CAD. EIDO (NENA-STA-021) wysłane do CAD nazywa każde zdjęcie, klip i nagranie oraz wideo na żywo, tak długo, jak trwa, jako dodatkowe dane za pomocą odniesienia: urlPurpose to caller-photo, caller-video, caller-video-recording lub caller-video-live, a additionalDataByReferenceUrl to plik w /m/{viewToken}/{n} lub wideo na żywo w /whep/{viewToken}. BitVoice wysyła CAD EIDO ponownie, gdy plik przychodzi lub wideo na żywo zaczyna się lub kończy. Linki używają Adresu linku (lub publicznego adresu tego serwera); bez nich EIDO nie nazywa nośników. Każde pobranie za pomocą nich jest w rejestrze ekspozycji. Strumień zdarzeń mówi to samo (GET /api/events: call.media, call.video). EIDO BitVoice są sprawdzane przeciwko opublikowanemu schematowi EIDO NENA.

Linki, które nie istnieją, są odgadywane nie szybciej niż logowania: adres, który stale próbuje, jest odrzucany na jakiś czas. Pliki od nadawców są obsługiwane w piaskownicy, nigdy jako strona tego serwera.

Ekspozycja. Każde ujawnienie wideo na żywo i każde otwarcie zdjęcia lub klipu jest liczone pod Ekspozycją w połączeniach 911: kto, jak często, przez ile połączeń. Jest to dla nadzorców i programu wellness centrum.

Wideo, które telefon wysyła w samym połączeniu 911 (wideo SIP przez ESInet), może być oglądane w ten sam sposób: Obejrzyj traktuje je jako źródło, gdy nie ma linku wideo na żywo.

Połączenia z tylko numerem. Połączenie 911, które przynosi numer callback i nie ma lokalizacji (z traktu CAMA lub połączenia ESInet, którego lokalizacja nie przychodzi), może być wyszukane: podaj Wyszukiwanie lokalizacji (ALI) adres interfejsu HELD bazy danych ALI lub serwera lokalizacji (RFC 5985, zapytany przez numer telefonu, jak to ma RFC 6155). BitVoice pyta, gdy połączenie przychodzi, bez zatrzymywania go, i lokalizacja pojawia się w połączeniu, gdy odpowiedź przychodzi; połączenie mówi, kiedy wyszukiwanie nie powiodło się i dlaczego.

Dziedzictwo połączenia ALI. Bez serwera HELD, BitVoice może poprosić kontroler ALI lub połączenie danych bazy danych ALI w starym sposób: wysyła żądanie i odczytuje rekord jako tekst, przez sieć (adres połączenia ALI host:port) lub z portu szeregowego (serial:/dev/ttyUSB0?baud=9600&parity=none, z bits i stop również; adapter szeregowy USB działa; w systemie Linux i macOS, nie w Windows: tam użyj konwertera szeregowo-sieciowego i jego adresu). Żądanie to co wysłać: {ani10} dziesięcio-cyfrowy numer callback, {ani7} jego ostatnich siedem, {pos2} pozycja,  STX i  ETX ({ani10} gdy pusty). Odpowiedź jest odczytywana do jej ETX. Układy ALI różnią się między dostawcami i stanami, więc umieść każde pole: jego linia, kolumna i długość (0: do końca linii), z wydruku ekranu ALI; Ulica (cała linia) dzieli linię ulicy na jej części, lub umieść części pojedynczo. Wklej przykładowy rekord i Przeczytaj przykład, aby zobaczyć linie z kolumną i to, co każde pole odczytuje; Poproś prosi same połączenie o numer. Adres rekordu i pozycja stają się lokalizacją połączenia, jego nazwa nazwą osoby dzwoniącej, a klasa usługi jest wyświetlana na połączeniu. Protokoły, które nie są żądaniem i odpowiedzią tekstową (PAM, E2 i własne protokoły innych dostawców) nie są obsługiwane: wymagają bramki.

Przepełnienie ALI przez port szeregowy. Przepełnienie ALI do również przyjmuje port szeregowy (serial:/dev/ttyS0?baud=9600), dla systemu CAD, który odczytuje przepełnienie z kabla szeregowego.

Mapa. W ustawieniach 911, pod Mapą, podaj BitVoice swoje kafelki mapy: plik .mbtiles kafelków rastrowych (PNG, JPEG lub WebP) na tym serwerze, dla mapy, która działa bez internetu (twój zespół GIS, TileMill, gdal2tiles lub dostawca kafelków tworzy jeden dla twojej okolicy), lub serwer kafelków z {z}, {x} i {y} w jego adresie (twój serwer hrabstwa, lub komercyjny: zwróć uwagę na warunki; publiczne serwery OpenStreetMap nie są dla tego przeznaczone). W obu przypadkach przeglądarki call-takerów pobierają kafelki z BitVoice tylko: odczytuje plik lub pobiera z serwera kafelków i przechowuje ostatnie kafelki w pamięci. Ta sama mapa pokazuje pozycje radiowe na konsoli radiowej. Kafelki wektorowe nie są obsługiwane.

Dziennik i3 przechowuje zdarzenia NENA i3 dla każdego połączenia (rozpoczęcie połączenia, odpowiedź, lokalizacja, wysłanie EIDO), jeden plik dziennie. Czasy odpowiedzi pokazują, ile połączeń zostało odebranych w ramach twojego celu (NENA: 90% w ciągu 15 sekund, 95% w ciągu 20 sekund), porzucone połączenia i średni czas odpowiedzi dla każdego call-takera. Wiersz dziennie (CSV) pobiera liczbę połączeń, które są zwykle pytane przez biura 911 stanu (połączenia, odebrane, porzucone, w ramach celu i w ciągu 20 sekund, średni i najdłuższy czas oczekiwania) dla wybranych dni; Wiersz na połączenie (CSV) wyświetla każde połączenie 911 z czasem, kiedy zostało odebrane, przez kogo i czy było to połączenie tekstowe. Każdy stan ma swój własny formularz: ułóż swój pod Układ raportu. Połączenie tekstowe odebrane na tym ekranie lub przez system CAD jest liczony pod osobą, która je odebrała; połączenie, które nikt nie odebrał przed opuszczeniem przez dzwoniącego, jest liczony jako porzucone.

Układ raportu. Nowy układ raportu układa raport zgodnie z formularzem twojego stanu lub hrabstwa: co jest w każdym wierszu (dzień, tydzień, miesiąc, godzina dnia, call-taker, lub jeden wiersz dla wszystkich), wiersz sumaryczny i kolumny, w kolejności, z własnym nagłówkiem, jeśli formularz słowa je inaczej: połączenia, odebrane, porzucone (liczba lub udział), odebrane w ciągu tylu sekund (liczba lub udział; sekundy są twoje, więc 10 i 20 dla jednego formularza i 15 i 40 dla innego), odebrane po więcej niż tylu sekundach, średni i najdłuższy czas oczekiwania, czas, w którym 90% połączeń zostało odebranych, średnia długość połączenia i połączenia tekstowe (TTY, tekst w czasie rzeczywistym, tekst do 911). Czas oczekiwania jest liczony od momentu przyjścia połączenia do momentu odpowiedzi call-takera. Wybierz układ i daty, a następnie Uruchom, aby przeczytać go tutaj, Arkusz (CSV), aby pobrać go, lub Strona do wydruku dla prostej strony do wydruku lub zapisania jako PDF. Układy są przechowywane z ustawieniami, więc idą z kopią zapasową i do Git.

Połączenia TTY. Dzwoniący głuchoniemi i słabosłyszący mogą dzwonić do 911 za pomocą TTY (telefonu tekstowego, Baudot z prędkością 45,45 bit/s). BitVoice nasłuchuje TTY na każdym połączeniu 911, od samego początku: to, co dzwoniący wpisuje, pojawia się na połączeniu, gdy tylko go wpisuje, pod Tekstem, z pauzą lub nową linią, która rozpoczyna nową linię. Ciche połączenie może być TTY, które czeka na odpowiedź: raz odpowiedziane, Odpowiedz przez TTY wysyła tekst, zanim zostanie wpisany którykolwiek. Wpisz odpowiedź i naciśnij Wyślij: zostanie wysłany do dzwoniącego jako ton TTY (głos call-takera jest wyciszony podczas odtwarzania, ponieważ TTY biorą udział na zmianę), w wielkich literach, a etykieta TTY ma zastosowanie: kończ każdą turę GA („go ahead”), a SK podczas zamykania. Znaki, które TTY nie mogą wyświetlić, są pomijane. Mowa, muzyka i tonowe sygnały są nigdy nie brane za tekst TTY: znak jest liczony tylko wtedy, gdy każdy bit jest czystym tonem TTY. Rozmowa jest przechowywana z połączeniem w historii połączeń i w dzienniku i3 (jeden MessageLogEvent na turę). Odznacz Nasłuchuj TTY na połączeniach 911 w ustawieniach 911, aby przestać nasłuchiwać.

Przekierowania. Połączenie 911 przekierowane do innego PSAP zachowuje swoją lokalizację: PIDF-LO jest przekazywany z połączeniem.

Tekst w czasie rzeczywistym (RTT). Telefon, który wysyła tekst obok swojego głosu (RFC 4103, jak telefony VoLTE i połączenia NG911) ma swój tekst odpowiedni przez BitVoice, ponieważ telefony biurkowe nie wyświetlają go: każdy znak pojawia się na połączeniu, gdy nadawca go wpisuje, a Twoja odpowiedź jest wysyłana z powrotem jako tekst. Zagubione pakiety są uzupełniane przez redundancję RTT; tekst utracony poza nią jest wyświetlany jako .

Tekst do 911. Centrum kontroli tekstu (TCC) wysyła teksty do PSAP jako sesję bez głosu (MSRP, RFC 4975, przez trunk ESInet). BitVoice odpowiada na nie i czeka na połączenia 911 oznaczone jako Tekst do 911, z tekstami, które nadeszły; żaden telefon nie dzwoni. Weź ten tekst sprawia, że stajesz się operatorem połączenia (czas odpowiedzi jest liczony wtedy, a CAD otrzymuje ALI i EIDO wtedy); odpowiedz w polu pod konwersacją, a Zakończ konwersację, gdy skończysz. Zamknięcie sesji przez TCC kończy ją również. Wiadomość SIP MESSAGE wysłana wewnątrz dialogu połączenia 911 jest traktowana jako tekst nadawcy w ten sam sposób, a odpowiedzi są wysyłane z powrotem przez SIP MESSAGE. Teksty są akceptowane tylko z trunków oznaczonych jako Z ESInet.

TCC, które oferuje sesję przez TLS (TCP/TLS/MSRP, ścieżki msrps, RFC 4975 sekcja 14), otrzymuje ją przez TLS, z certyfikatem tego serwera (Ustawienia › Certyfikaty; bez niego oferta jest odrzucana). Certyfikat TCC musi być tym, który jego oferta nazwała (a=fingerprint, SHA-256); gdy nie nazwał żadnego, musi być śledzony do korzeni Agencji Poświadczania PSAP ustawionych pod Usługi podstawowe, jeśli są ustawione. Odpowiedź BitVoice nazwała swój własny certyfikat w ten sam sposób.

Cała konwersacja, niezależnie od sposobu, w jaki nadeszła, jest przechowywana z połączeniem w historii połączeń i w logu i3.

Co jeszcze nie jest tutaj: przekazywanie sesji tekstu przez rdzeń NG911 (ESRP trasuje głos; sesja tekstu jest odpowiadana tam, gdzie przychodzi); własne subskrypcje standardu EIDO (NENA-STA-024 WebSocket): BitVoice publikuje EIDOs pod jednym adresem.

Rozdział 78

Konsola radiowa dyspozytorska

W interfejsie sieciowym: /radio

Dyspozytorzy rozmawiają na kanałach radiowych z tego samego słuchawka, co ich połączenia telefoniczne. BitVoice dociera do radiotelefonów przez bramy radio-over-IP (RoIP); sieć radiowa pozostaje z tym, kto ją obsługuje.

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

Konfiguracja. W Konfiguracji konsoli, wybierz numer konsoli (800, na przykład) i dodaj każdy kanał: jego nazwę, port na tym serwerze, do którego brama wysyła dźwięk kanału, oraz adres i port bramy dla dźwięku wychodzącego. Na bramie: RTP, G.711 µ-law, do adresu tego serwera i tego portu; włącz radio na głos (VOX). Każdy kanał używa swojego portu i następnego, poza zakresem używanym przez połączenia telefoniczne.

Dołączanie. Dyspozytor wybiera numer konsoli z telefonu biurkowego lub naciska Dołącz z telefonem przeglądarki. Następnie słyszy ruch wszystkich kanałów zmieszany razem; Słuchanie / Wyciszenie na kanale usuwa go z jego słuchawki. Łampa na kanale świeci, gdy odbiera.

Mówienie. Przytrzymaj przycisk Przytrzymaj, aby mówić kanału (lub skup się na nim i przytrzymaj spację): twój głos idzie tylko do tego kanału, a kanał pokazuje TX z twoim numerem wewnętrznym. Jeden dyspozytor mówi na kanale na raz; przycisk jest szarzy dla innych, gdy ktoś mówi. Nic nie jest wysyłane do kanału, gdy nikt nie mówi, więc radio z włączonym głosem nie jest nigdy trzymane w powietrzu.

Łączenie. Naciśnij Łącz na jednym kanale, a następnie Łącz tutaj na innym: dwa kanały słyszą się nawzajem (kanał straży pożarnej i kanał pomocy wzajemnej, na przykład) do momentu, gdy naciśniesz Rozłącz.

Grupy rozmów P25. Kanał może być również grupą rozmów P25, dołączoną bezpośrednio przez ISSI (TIA-102.BACA, interfejs między podsystemami P25; z Wyślij słowo PTT konsoli CSSI włączone, BitVoice dodaje słowo podsystemu konsoli do każdego żądania). Wybierz Grupę rozmów P25 (ISSI), podaj ID grupy rozmów, adres SIP i ID RFSS, który jest gospodarzem grupy rozmów, oraz port dla jej głosu. W Konfiguracji tej konsoli w systemie P25, wprowadź WACN i ID systemu, ID RFSS, które twoj administrator P25 dał tej konsoli, ID jednostki, którą dyspozytorzy transmitują, oraz port SIP, który ISSI używa tutaj; system P25 musi znać ten serwer jako RFSS pod tym adresem. Kafelek pokazuje P25, gdy połączenie grupowe jest aktywne (P25 nieaktywne i powód, gdy nie jest), oraz ID jednostki radiowej, która mówi, na czerwono z EMERGENCY, gdy jest to połączenie awaryjne. Przytrzymaj, aby mówić prosi o kanał u gospodarza RFSS (Proszę o kanał...); twój głos idzie, gdy tylko go przyznaje, a jeśli odmówi (ktoś z wyższym priorytetem go ma), kafelek mówi o tym. Głos jest konwertowany na i z IMBE, kodera P25, w BitVoice.

Szyfrowane grupy rozmów. W Klucze szyfrowania, dodaj każdy klucz ruchu dostarczony przez sklep radiowy: nazwę, algorytm (AES-256, DES-OFB lub trój krotny DES), identyfikator klucza i klucz w postaci heksadecymalnej (TIA-102.AAAD). Klucz nie jest ponownie wyświetlany po zapisaniu, nawet dla administratorów, a pozostawienie pola pustego go zachowuje. Konsola odbiera szyfrowaną transmisję, gdy posiada klucz z tym algorytmem i identyfikatorem klucza: kafelka wyświetla zamknięcie i algorytm obok jednostki mówiącej. Bez klucza transmisja jest wyciszona, nigdy nie jest odtwarzana jako szum, a kafelka wyświetla brak klucza: wyciszona. Aby transmitować szyfrowanie na grupie rozmów, wybierz klucz w Transmit dla tego kanału; kafelka wyświetla wtedy TX AES-256 (lub wybrany algorytm). Pełny eksport konfiguracji (Ustawienia, kopie zapasowe administratora) zawiera klucze, więc przechowuj te pliki tak bezpiecznie, jak klucze.

Prywatne połączenia. Z konsolą na systemie P25, Wywołaj radio w pasku pozycji wywołuje radio według jego identyfikatora jednostki (włącz Awaryjne, aby wywołać je jako awaryjne). Połączenie staje się kafelką o nazwie Prywatne połączenie: jednostka 197, z Poczekaj, aby mówić jak każdy kanał i Zakończ. Radia mogą również wywoływać konsolę, na identyfikatorze jednostki, który transmituje: połączenie pojawia się jako kafelka oznaczona wywołano (na czerwono z AWARYJNE, gdy radio wywołało jako awaryjne), każdy dyspozytor słyszy je, i znikają, gdy któraś ze stron zakończy połączenie. W Prywatnych połączeniach w ustawieniach P25 konsoli, podaj adres SIP i identyfikator RFSS, który jest domem dla radia (pusty używa pierwszego kanału domowego), oraz, jeśli prywatne połączenia powinny być szyfrowane, klucz do ich wysłania.

Tony alarmowe. Wyślij ton alarmowy… na kanale wysyła jeden z następujących: Alarm 1, stały ton 1000 Hz przez 3 sekundy; Alarm 2, falowanie między 1000 a 1500 Hz; Alarm 3, impulsy 1000 Hz; lub krótki Sygnał. Ton trzyma kanał, podczas gdy jest odtwarzany (kafelka wyświetla ton i Twoje rozszerzenie), każdy dyspozytor monitorujący kanał słyszy go, a na kanale P25 jest odtwarzany, gdy domowy RFSS przyznaje kanał.

Nagłe wypadki. Gdy radio nadaje sygnał nagłej potrzeby (jego przycisk nagłej potrzeby), jego kafelka staje się czerwona z NAGŁA POTRZEB i identyfikatorem jednostki, log serwera zanotuje to, a system CAD zostaje powiadomiony natychmiast (poniżej). Nagła potrzeba pozostaje podniesiona na każdej konsoli po zakończeniu transmisji radiowej, aż dyspozytor naciśnie Potwierdź: kafelka wskazuje wtedy, kto ją potwierdził i kiedy, a system CAD otrzymuje zdarzenie radio.emergency.ack. Potwierdzenie wymienia jednostkę wyświetlaną: jeśli inna jednostka nagłej potrzeby ją zastąpiła chwilę wcześniej, BitVoice odmawia i kafelka wyświetla nową, aby nigdy nie pomijać sygnału nagłej potrzeby przez pomyłkę. Potwierdzenie systemu CAD za pomocą interfejsu API może to samo zrobić: POST /api/radio/channels/{id}/ack z {"unit": "bee07.1d5.00044d"} (lub identyfikatorem radiowym, "1101") zwraca 409, gdy nagła potrzeba kanału jest teraz jednostką innej; bez treści potwierdza to, co kanał zawiera.

Simulselect. Aby powiedzieć coś na kilku kanałach jednocześnie, zaznacz wybierz na każdym kanale, a następnie przytrzymaj Mów na N kanałach w pasku nad kafelkami. To albo wszystko, albo nic: jeśli inny dyspozytor mówi na jednym z nich, żaden nie jest kluczowany, a zostaniesz poinformowany, który.

Pozycje radiowe. Radia zgłaszają swoje położenie przez stronę danych systemu radiowego, a nie przez stronę głosową, do której dołącza konsola: usługę lokalizacji P25, LRRP firmy Motorola lub własną usługę dostawcy, zbieraną przez bramę danych lub centrum radiowe. Należy skonfigurować bramę (lub niewielki skrypt obok niej), aby wysyłała każde zgłoszenie do BitVoice za pomocą tokenu API: POST /api/radio/locations z {"unit": 1205, "lat": 40.2633, "lon": -76.8823, "speed": 42, "heading": 90, "accuracy": 8, "at": "2026-10-15T14:05:00Z"}, lub listę do 500 (prędkość w km/h, kierunek w stopniach, dokładność w metrach; wszystkie trzy oraz czas są opcjonalne). Pozycje radiowe na konsoli wyświetlają ostatnie położenie każdego radia, wraz z jego nazwą, a system CAD otrzymuje każde z nich jako zdarzenie radio.location. BitVoice nie dekoduje samodzielnie LRRP ani usługi lokalizacji P25.

Nazwy radia. W Nazwach radia, nadaj nazwy radia według ich identyfikatora jednostki P25 (1205 to „Silnik 5”, na przykład): kafelka wyświetla nazwę obok jednostki, podczas gdy mówi, a log radia i zdarzenia CAD zawierają ją.

Log radia i nagrywanie. Włącz Nagrywaj każdą transmisję w Nagrywaniu i CAD: każda transmisja na każdym kanale, słyszana lub wysłana, jest zachowywana jako nagranie z linią w Logu radia: kiedy, kanał, kto (identyfikator jednostki radia lub rozszerzenie dyspozytora), jak długo i czy była to awaryjna sytuacja, ton alarmowy, szyfrowana czy prywatna rozmowa. Słyszana transmisja zaczyna się od pierwszej mowy i kończy się 1,5 sekundy po ostatnim słowie. Znajdź jednostkę, dyspozytora lub kanał za pomocą pola wyszukiwania, a następnie naciśnij Odtwórz, aby posłuchać. Nagrania są przechowywane tak długo, jak nagrania połączeń (Ustawienia, Nagrywanie).

Dane radiowe do CAD. Podaj adres CAD pod Wyślij zdarzenia radiowe do CAD (oraz wspólny sekret, jeśli CAD tego wymaga; jest wysyłany jako token nośnika i nie jest już wyświetlany). BitVoice wysyła każde zdarzenie (radio.unit, radio.emergency, radio.emergency.ack, radio.transmission i radio.location) jako JSON, {"type": ..., "agency": ..., "data": {...}}: radio.unit gdy radio zaczyna mówić na kanale (jego ID jednostki, WACN, system, kanał, tryb awaryjny, szyfrowanie), radio.emergency w przypadku awarii (próbowane trzykrotnie, jeśli CAD nie odpowiada) i radio.transmission dla każdego zakończonego przekazu, tak jak pojawia się w logu radiowym. CAD może również odczytać sam log za pomocą GET /api/radio/log (filtry: channel, q, since, until). CAD, który jest niedostępny, nie blokuje konsoli.

Nie jest jeszcze dostępne: P25 Faza 2 (TDMA) głos w swoim własnym półprzepustowym kodowaniu. System Fazy 2 działa z konsolą, gdy grupy rozmów ISSI przenoszą pełnopasmowy (Faza 1) głos lub gdy transkoduje je, co jest powszechne: zapytaj swojego administratora P25. Grupa rozmów, której głos przychodzi w blokach, które ta konsola nie dekoduje (półprzepustowy głos wysłany bez transkodowania, najprawdopodobniej) wyświetla Cisza tutaj na swojej kafelku, podczas gdy radio mówi, więc nikt nie bierze ciszy za cichy kanał. Dekodowanie go wymaga dwóch rzeczy, których BitVoice nie ma: półprzepustowego kodowania (AMBE+2, patentowane do 2028: licencja od właściciela lub sprzętowy układ kodowania z licencją) i formatu półprzepustowego bloku głosu ISSI (TIA-102.BACA-B, sprzedawanego przez TIA, niepublicznego).

Rozdział 79

Usługi rdzenia NG911 (ECRF, ESRP, LVF, BCF, LIS, logowanie)

W interfejsie sieciowym: /core

Dla władz stanowych lub regionalnych 911, które prowadzą własne rdzenie NG911: BitVoice odpowiada na LoST jako ECRF i trasuje każde połączenie 911 jako ESRP do PSAP, który obsługuje nadawcę.

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

Obszary usług. Eksportuj swoje granice z GIS jako wielokąty GeoJSON (granice PSAP dla urn:service:sos; obszary policyjne, strażackie lub EMS dla urn:service:sos.police i innych) i przekaż je w Usługi podstawowe. Właściwości name, uri i number są odczytywane; podaj domyślny adres URI PSAP dla tych, które go nie mają. Edytuj obszar, aby dodać miasta lub hrabstwa, które obsługuje, dla osób, których lokalizacja jest tylko adresem cywilnym. Sprawdź miejsce pokazuje, który obszar odpowiada na pozycję lub miasto, jak zapytanie LoST.

ECRF. Włącz Odpowiedz na zapytania LoST i wyświetl adresy, które mogą pytać (Twoja ESInet): inne elementy wysyłają findService do /lost (RFC 5222) i otrzymują adres URI PSAP. Konkretna usługa (sos.police) jest odpowiadana z własnych obszarów najpierw, a potem z sos. Miejsce, które nie jest pokryte przez żaden z Twoich obszarów, może być skierowane do Przewodnika leśnego (RFC 5582: krajowy katalog ECRF): zapytanie rekurencyjne jest wysyłane tam w imieniu pytającego i odpowiedź jest zwracana (oba serwery są wymienione w ścieżce odpowiedzi), a inne zapytanie jest przekierowane do niego, a zapytanie, które już przeszło przez ten ECRF, jest odrzucane jako pętla.

ESRP. Wyświetl PSAP: każdy z nich ma adres URI (tak jak obszary go nazywają), trunk, który go osiąga, i wybierz domyślny PSAP. Następnie wysyłaj połączenia 911 ESInet do ESRP w Trasowaniu połączeń (rozdział 8). Każde połączenie jest kierowane do PSAP dla jego lokalizacji (z obszarów tego serwera lub zewnętrznego ECRF przez LoST), z jego lokalizacją i usługą, o którą poprosił, przenoszoną na nim; gdy ten PSAP nie przyjmuje go, do jego PSAP zastępczego; bez lokalizacji lub z miejsca, które nie jest pokryte przez żaden obszar, do domyślnego. Każda decyzja jest w logu i3 na połączeniach 911 (rozdział 77).

Reguły polityki. Po tym, jak ECRF wybrał PSAP, reguły pod Reguły polityki są sprawdzane w kolejności i pierwsza, której warunki wszystkie są spełnione, decyduje: wysyłaj połączenie do innego PSAP lub odrzuć je jako zajęte. Reguła może sprawdzić usługę (tylko pożary, na przykład), PSAP, który ECRF wybrał, harmonogram (podczas gdy centrum nocnej zmiany jest zamknięte), połączenia bez lokalizacji, połączenia, które BCF oznaczył jako podejrzane, i trunk, z którego połączenie nadeszło. Każda decyzja jest w logu i3 jako RouteLogEvent, nazywając regułę.

Kontrola graniczna (BCF). Z włączoną opcją Sprawdź połączenia z ESInet, każde połączenie z trunku ESInet jest najpierw sprawdzane: adresy pod Zawsze odrzuć są odrzucane, a także adres, który rozpoczyna więcej połączeń na minutę lub utrzymuje więcej połączeń jednocześnie, niż dozwolono (ataki telefoniczne typu denial-of-service wysyłają falę połączeń z kilku źródeł). Odrzucone połączenia otrzymują odpowiedź 503 z Retry-After. Włącz prześlij połączenie oznaczone jako podejrzane, aby wysłać takie połączenia dalej i pozwolić regułom polityki (do centrum, które je sprawdza, lub odrzuca); rzeczywisty nadawca w falie połączeń nie zostanie w ten sposób utracony. Kontrola graniczna: ostatnie wyświetla, co zostało odrzucone lub oznaczone. Sprawdź podpisy STIR/SHAKEN sprawdza podpisaną identyfikację nadawcy (nagłówek Identity) każdego połączenia, które ją zawiera, względem korzeni STI ustawionych w Call screening w Ustawieniach: połączenie, którego podpis nie powiedzie się, jest kierowane dalej jako podejrzane, aby reguła polityki mogła je skierować gdzie indziej, i jest wyświetlane w logu BCF; połączenie 911 nigdy nie jest odrzucane z tego powodu, a połączenia niepodpisane (większość z nich dzisiaj) są pozostawione bez zmian. Każde połączenie opuszcza BitVoice jako nowy, oddzielny wniosek, przenosząc tylko nagłówki i treści, które BitVoice rozumie i przekazuje dalej: lokalizację, dodatkowe dane i sesję. Inspekcja multimediów sprawdza każdy pakiet RTP połączenia ESInet przed jego użyciem lub przekazaniem dalej: pakiety z adresu innego niż ten, który podał SDP połączenia, z typem ładunku, który nie został nazwany w ofercie, z długościami nagłówków (CSRC, rozszerzenie, wypełnienie), które nie pasują do pakietu, większe niż Największy pakiet (1,500 bajtów, gdy puste), lub poza Pakiety na sekundę (150, gdy puste; G.711 przy 20 ms wysyła 50) są odrzucane i liczone. Pierwszy z każdego rodzaju, a następnie 10., 100. itd., trafia do Kontrola graniczna: ostatnie (jako *media odrzucone*) i notatek połączenia. Połączenie nigdy nie jest kończone z powodu multimediów: nadawca zachowuje dobre pakiety. Połączenia z trunków CAMA pochodzą z lokalnego programu karty i nie są inspekcjonowane.

Weryfikacja adresu (LVF). Prześlij swoje dane adresowe GIS 911 jako GeoJSON, w modelu danych GIS NENA (NENA-STA-006): linie środkowe dróg z FromAddr_L, ToAddr_L, Parity_L, IncMuni_L i resztą, oraz punkty adresowe miejsc i struktur z Add_Number, St_Name, Inc_Muni. Zapytanie LoST z validateLocation="true" otrzymuje ważne, nieważne i niesprawdzone części adresu w odpowiedzi (RFC 5222), aby nosiciele i serwery lokalizacji mogli poprawić adres przed użyciem go w połączeniu 911. Sprawdź adres robi to samo tutaj: największy dopasowanie to punkt adresowy, a następnie segment ulicy, którego zakres po prawej stronie drogi zawiera numer (szanując strony nieparzyste i parzyste); pisownie takie jak Street i St, North i N są traktowane podobnie.

Usługa logowania i3. Włącz Uruchom usługę logowania i3: inne elementy Twojego rdzenia (ESRP, BCF, PSAP) wysyłają swoje zdarzenia logowania (NENA-STA-010), każde podpisane jako JWS z certyfikatem elementu w nagłówku x5c, za pomocą POST do /i3log/LogEvents z dozwolonych adresów. Każde przychodzi jako JWS w płaskiej formie JSON (podpisane lub niepodpisane z algorytmem none, które usługa logowania może przyjąć: oznaczone jako nieśledzone do PCA), jest sprawdzane i przechowywane, a odpowiedź jest jego ID zdarzenia logowania. Odczytaj ponownie za pomocą GET /i3log/LogEvents/{logEventId}; wyświetl listę za pomocą GET /i3log/LogEvents (startTime, endTime, logEventType, limit, start); znajdź ID zdarzeń danego połączenia lub incydentu za pomocą /i3log/LogEventIds, /CallIds, /IncidentIds i /AgencyIds; oraz odczytaj tekstową konwersację połączenia za pomocą /i3log/Conversations?callId=. GET /i3log/Versions mówi, jaki wersję obsługuje ta usługa. Otrzymane zdarzenia logowania wyświetla zdarzenia z ostatniego dnia z informacją, kto podpisał każde. Każda odpowiedź jest sprawdzana względem opublikowanej definicji OpenAPI usługi przez NENA; usługa nie została jeszcze przetestowana z elementami innych dostawców.

Agencja poświadczania PSAP. Wklej certyfikaty główne PCA w Agencja poświadczania PSAP: podpisane zdarzenie logowania jest wtedy przyjmowane tylko wtedy, gdy certyfikat jego sygnatariusza łańcuchuje się do jednego z nich (i nie wygasł), i jest wyświetlane z PCA. Bez nich sam podpis jest sprawdzany, a zdarzenie jest wyświetlane jako nieśledzone do PCA.

Rekordy lokalizacyjne (LIS). Włącz Odpowiedzi na żądania lokalizacji (LIS) i przekaż arkusz kalkulacyjny (CSV) rekordów lokalizacyjnych: wiersz nagłówka i w każdym wierszu jeden z numeru (danych ALI, wyeksportowanych), sieci (zakresu adresów, takiego jak 10.20.3.0/24, lub jednego adresu: budynku, piętra, sieci VLAN, sieci Wi-Fi) lub adresu MAC (jednego urządzenia: telefonu biurkowego, portu przełącznika gniazda ściennego), a następnie adres jako hno, rd, sts, unit, floor (lub flr), a3 (miasto), a1 (stan), pc i kraj, wraz z lat, lon i radius, jeśli są znane (inne nazwy, takie jak phone, street, zip, subnet i ip, są również rozumiane). PSAP, bramy sieci dziedziczonej i telefony proszą o /held (HELD, RFC 5985) z dozwolonych adresów i otrzymują PIDF-LO. Żądanie nazywa swoje urządzenie według numeru telefonu, adresu IP lub adresu MAC (RFC 6155); żądanie, które nie podaje żadnego z nich, jest odpowiedzią dla adresu, z którego pochodzi, tak jak LIS w sieci biurowej lub kampusu. Adres jest lokalizowany przez najwęższą sieć, która go zawiera, więc /24 piętra wygrywa z /16 kampusu. Urządzenie bez rekordu otrzymuje locationUnknown HELD; tożsamość innego rodzaju (NAI, port) otrzymuje notLocatable. BitVoice PSAP wskazuje swoje Wyszukiwanie lokalizacji (ALI) tutaj. Wyszukaj numer, adres lub adres MAC sprawdza rekord i mówi, z której sieci pochodzi. Numer, sieć lub adres MAC wymieniony ponownie zastępuje swój stary rekord; Zastąp każdy rekord zaczyna od nowa. Tylko dozwolone adresy są odpowiedzią: LIS, który odpowiada na każdy adres, o który jest pytany, nie może być otwarty dla wszystkich.

Usługi internetowe i3. W Usługach internetowych NENA i3, włącz to, co to rdzeń oferuje innym elementom Twojego ESInet, pod /i3/<service>/v1, tylko dla adresów pod Może pytać. Każdy odpowiada zgodnie z opublikowanymi definicjami OpenAPI NENA (NENA-STA-010.3, repozytoria NENA911), a każdy ma zakładkę pod Usługi internetowe i3:

Testowanie połączeń w PSAP. System BitVoice PSAP odpowiada na testowe połączenie z ESInet (urn:service:test.sos, NENA-STA-010.3 sekcja 9, RFC 6881) samodzielnie: odpowiedź mówi nazwę PSAP, usługę i lokalizację, z której połączenie zostało zainicjowane, pierwsze trzy pakiety dźwięku są odsyłane, a następnie połączenie zostaje rozłączone. Kolejne testowe połączenie z tego samego miejsca w ciągu dwóch minut zostaje odrzucone (486), podobnie jak piąte połączenie wykonane natychmiast. ESRP przekazuje testowe połączenie dalej, tak jakby było to prawdziwe połączenie, nadal oznaczone jako test. Wyłączenie Odpowiadaj na testowe połączenia na stronie połączeń 911 powoduje odrzucenie ich (404).

Algoritmy JWS: NENA-STA-010.3 wymaga EdDSA z Ed448. Standardowa biblioteka Go, którą BitVoice używa do każdego kryptograficznego kroku, ma Ed25519, ale nie Ed448, więc podpisy EdDSA są sprawdzane z kluczami Ed25519, a podpisy ECDSA i RSA są również akceptowane; certyfikat Ed448 jest odrzucany.

Czy miałeś na myśli. Adres, który nie jest ważny, otrzymuje do pięciu sugestii z tych samych danych, najlepsze jako pierwsze, każda z powodem: ulica jeden lub dwa litery odległa (zamiana dwóch liter jest traktowana jako jeden błąd), ta sama ulica w następnej miejscowości lub najbliższy numer ulicy, po tej samej stronie, gdy jest to możliwe (numery parzyste pozostają parzyste). Użyj wypełnia sugestię. Pozycja z adresem. Podaj szerokość geograficzną i długość geograficzną (oraz promień pozycji, gdy jest znany) wraz z adresem: pozycja jest sprawdzana wobec własnego punktu adresowego, z uwzględnieniem jego promienia i 100 m więcej (rozmiar działki i błąd GIS). Odpowiedź podaje odległość i czy obie zgodne, a gdy nie są, punkt adresowy najbliższy pozycji. Adres znany tylko z linii środkowych dróg nie ma punktu do sprawdzenia, a odpowiedź mówi o tym. Walidacja LoST nie ma miejsca na żadne z nich, więc operatorzy pytający przez LoST otrzymują samą walidację.