Podłącz swoją komórkę do RasPBX przez Bluetooth (z chan_mobile)

For privacy reasons YouTube needs your permission to be loaded. For more details, please see our Polityka Prywatności.
I Accept

1) Wstępne wymagania

Nie będziemy w tym miejscu jeszcze raz się rozpisywali jaki potrzebujesz zasilacz, kartę SD do swojego Raspberry Pi, ani jak wgrać system na kartę. Wyjdziemy z założenia, że masz RasPBX już zainstalowany i skonfigurowany.

Jeśli nie posiadasz jeszcze wspomnianego systemu, polecamy skorzystanie z tego przewodnika. Oczywiście możesz pominąć instalację modemów USB, ale w pierwszych krokach opisaliśmy już jak wgrać system na kartę SD i jak zainstalować system.

W tym tutorialu zastosujemy następujące urządzenia i oprogramowanie (są to opcje, a nie wymagania):

  • Raspberry Pi 4 wyposażone w adapter Bluetooth,
  • telefon komórkowy z Bluetooth (w naszym przypadku iPhone SE z 2016 roku),
  • system operacyjny z Asterisk 16, chan_mobile.so oraz hcitool

Być możesz spotkałeś się już z innymi materiałami, które sugerują, że do parowania urządzeń najlepiej wykorzystać bluetoothctl. I to prawda, że możesz w tej sposób sparować urządzenie bluetooth. Ale to oprogramowanie może się bardziej przydać, jeśli podłączasz np. myszkę lub klawiaturę, i bluetoothctl nie służy do parowania urządzeń w ramach chan_mobile.

Warto też się upewnić czy usługa Bluetooth działa poprawnie i w razie potrzeby ją wystartuj za pomocą service bluetooth start.

Copy to Clipboard

2) Przygotowanie chan_mobile.conf

W idealnym świecie, zalogowalibyśmy się do konsoli Asteriska (asterisk -r) i załadowali moduł poprzez module load chan_mobile.so. Jednak na tym etapie jeszcze nie posiadamy poprawnie skonfigurowanego pliku, więc otrzymamy błąd Errors reading config file chan_mobile.conf. Not loading module..

W podstawowej konfiguracji, plik chan_mobile.conf będzie zawierał trzy sekcje:

  • [general] – globalne ustawienia, takie jak czas odświeżania podłączonych urządzeń
  • [adapter] – informacje o adapterze Bluetooth, który będzie bezprzewodowo łączył się z telefonami i/lub słuchawkami
  • [telefon] – informacje o urządzeniu, które będzie podłączone do adaptera

Całość możemy zmieścić dosłownie w kilku linijkach.

[general]
interval=30   ; Liczba sekund między próbami połączenia się z urządzeniami

[adapter]
id=hci0   ; nazwa adaptera (może być nazwa własna, ale musi być unikalna)
address=AA:BB:DD:CC:EE:FF   ; adres MAC adaptera

[phone0]
context=incoming-mobile   ; kontekst dla połączeń przychodzących
address=00:11:22:33:44:55   ; adres MAC telefonu
adapter=hci0   ; adapter wykorzystany do połączenia (jak powyżej w sekcji [adapter])
port=1   ; numer portu rfcomm (z polecenia mobile search)

Najpierw zdefiniujmy nasz Adapter Bluetooth. Zrobimy to za pomocą polecenia:

Copy to Clipboard

Wynik tego polecenia dodamy za chwilę do naszego pliku chan_mobile.conf. Warto jednak gdzieś sobie zapisać adres MAC naszego nadajnika/odbiornika Bluetooth.

Następne w kolejności będzie wykrycie urządzenia, z którym chcemy się połączyć. Zrobimy to za pomocą:

Copy to Clipboard

To polecenie może zająć trochę więcej czasu i może być konieczne wykonanie go kilka razy, żeby znaleźć nasze urządzenie. W zależności od lokalizacji możesz znaleźć więcej urządzeń. Np. jeśli testy robisz w swoim biurze, to adapter może wykryć wszystkie smartfony, słuchawki, smartbandy Twoje i Twoich współpracowników.

Z listy wybierz urządzenie, które chcesz połączyć i zapamiętaj jego adres MAC.

Jeśli jeszcze nie stworzyłeś pliku chan_mobile.conf, to jest dobry moment. Warto przy tym pamiętać, żeby miał odpowiedniego "właściciela".

Copy to Clipboard

Wprowadźmy do pliku wszystkie uzyskane informacje.

Jedyna zmienna, której w tym momencie nie jesteśmy w stanie określić to port, więc na start możemy wpisać "1". Za chwilę to zmienimy.

Możemy teraz wrócić do konsoli Asteriska. Jeśli w pliku zawarliśmy całą niezbędną konfigurację, m.in. informacje o adapterze i telefonie, to będziemy mogli poprawnie załadować moduł. Poniżej lista poleceń, które będziemy chcieli wykonać w konsoli (asterisk -rvvv):

Copy to Clipboard

W ramach wyjaśnienia:

  • module load chan_mobile.so – załadowanie modułu do obsługi kanałów mobilnych
  • mobile search – wykrywanie urządzeń Bluetooth
  • mobile show devices – wyświetlenie listy połączonych urządzeń

Powyższe polecenia pokażą też port, który będziemy mogli zaktualizować w pliku chan_mobile.conf.

Na tym etapie Asterisk będzie już widział Twój telefon i na telefonie powinna się wyświetlić prośba o sparowanie urządzenia.

Na tym etapie możesz jednak napotkać pewien problem. Telefon się sparował, ale po chwili się rozłączył i widzisz Error initializing Bluetooth device phone0 oraz Bluetooth Device phone0 has disconnected.

Na internecie możesz znaleźć różne sposoby rozwiązania tego problemu. Ze swojej strony zauważyłem, że sprawdza się zastosowanie rfcomm bind i opcjonalnie restart Asteriska. Polecenie rfcomm wiąże identyfikator sparowanego urządzenia z nazwą urządzenia szeregowego. Wykonajmy więc to polecenie, uwzględniając w nim port oraz adres MAC naszego telefonu.

Copy to Clipboard

To powinno stworzyć dodatkowe urządzenie, które będzie widoczne w naszym systemie.

Na koniec warto zweryfikować czy w konsoli Asterisk'a urządzenie jest widoczne i połączone, za pomocą mobile show devices.

Jeśli urządzenie jest połączone, możesz sprawdzić czy połączenia się nawiązują poprawnie. Zrobimy to z poziomu konsoli Asteriska (asterisk -rvvv).

Jak zawsze …. zadzwonimy na nasz główny numer firmowy i puścimy muzyczkę. Oczywiście korzystając z channel originate może przetestować połączenie w dowolny inny sposób.

Copy to Clipboard

3) Dodanie niestandardowego trunk'a (chan_mobile)

Nasz telefon jest sparowany i dostępny w systemie. Pora dodać niestandardowego (ang. custom) trunk'a i zdefiniować ustawienia, dzięki, którym będziemy mogli inicjować połączenia przy użyciu naszego telefonu komórkowego. Być może zauważysz, że konfiguracja jest bardzo podobna do chan_dongle, co opisaliśmy w tym poście.

Zalogujmy się do systemu FreePBX przez przeglądarkę.

Z górnego menu "Connectivity" wybierz "Trunks". Na stronie "Trunks" dodamy nowego trunk'a i wybierzemy opcję "Add Custom Trunk".

W pierwszej zakładce "General", przynajmniej w minimalnej koniecznej konfiguracji, interesują nas trzy pola. Poniżej zamieszczam przykładowe wartości z opisami:

  • Trunk Name: mobile_phone0 (nazwa połączenia, która później pojawi się np. na liście tras wychodzących)
  • Outbound CallerID: puste (prezentacja dla trasy; nie jest konieczna ponieważ będzie ustawiana odgórnie przez operatora karty SIM)
  • Maximum Channels: 1 (maksymalna ilość jednoczesnych kanałów dla tego połączenia; logika podpowiada, że 1 SIM = 1 kanał)

W trzeciej zakładce "Custom Settings" definiujemy ciąg tekstowy, który będzie odpowiedzialny za realizację połączeń. Będzie bardzo podobny jak w przypadku chan_dongle i również składa się z trzech części: rodzaj kanału, urządzenie do realizacji połączeń oraz $OUTNUM$. Najczęściej będzie wyglądać następująco:

  • Custom Dial String: mobile/phone0/$OUTNUM$

Chociaż pierwsza i ostatnia zmienna pozostaną niezmienne, w środkowym polu wpisz nazwę swojego urządzenia (nie adaptera!), które zdefiniowaliśmy w chan_mobile.conf.

Po wprowadzeniu tych danych, zapisz konfigurację za pomocą przycisku "Submit", który zazwyczaj znajduje się w prawym dolnym rogu ekranu.

Brak wpisu "Outboud CallerID" wyrzuci błąd, ale dla połączeń z chan_mobile nie musimy się nim przejmować. Jeśli jednak nie chcesz, żeby ten błąd występował, we wspomnianym polu wpisz numer telefonu, najlepiej w formacie 123456789 <123456789>.

4) Trasa wychodząca

Konfiguracja tras wychodzących odbywa się w zakładce "Connectivity" > "Outbound Routes". Żeby dodać trasę wychodzącą kliknij "Add route". W nowej trasie musimy dodać ustawienia w dwóch zakładkach.

W zakładce "Route Settings" potrzebujemy co najmniej dwóch informacji:

  • Route Name: mobile_out (unikalna nazwa trasy)
  • Trunk Sequence for Matched Routes: mobile_phone0 (rozwijana lista trunk'ów; wybierzemy ten, który dodaliśmy przed chwilą)

Jeśli chcesz mieć jedną wspólną trasę wychodzącą dla chan_mobile, możesz w tym miejscu dodać kilka pozycji np. mobile_phone0, a następnie mobile_phone1. Wtedy trasie będzie próbowała nawiązać połączenie przez pierwsze wolne urządzenie.

Możesz też dla każdego urządzenia dodać osobną trasę, nazywają odpowiednio np. mobile_out_phone0, mobile_out_phone1, itp… a w Trunk Sequence dodać tylko pojedyncze urządzenia.

Następnie w zakładce "Dial Patterns" trzeba zdefiniować dla jakiego schematu numeru, mamy realizować połączenia tą trasą.

Zazwyczaj wystarczające będzie ustawienie:

  • Match Pattern: ZX.

Przy takim ustawieniu, trasa będzie wykorzystywana do wszystkich połączeń, które mają długość co najmniej 3 cyfry i zaczynają się od cyfry innej niż 0. Możesz jednak chcieć to bardziej doprecyzować, np. ZXXXXXXXX zrealizuje połączenia tylko na numery 9-cyfrowe, a 48ZX. tylko na numery do Polski.

Oczywiście takich wzorów może być dużo więcej dla każdej pojedynczej trasy. Warto jednak przemyśleć czy koszt połączeń komórkowych dla danej trasy nie będzie zbyt duży.

Po wszystkich dajemy "Submit", a następnie w prawym górnym rogu, zatwierdzamy całą naszą konfiguracje.

Dzwoniąc na zewnątrz będziesz od teraz realizował połączenia z wykorzystaniem swojego telefonu komórkowego.

By Published On: 2 maja, 2021Categories: SamouczkiMożliwość komentowania Podłącz swoją komórkę do RasPBX przez Bluetooth (z chan_mobile) została wyłączonaTags: , , , ,