Potrzeba matką wynalazku: oto jak sprawić, aby w jednym iPhone można było korzystać z wielu numerów telefonu!
WSTĘP
Rynkiem, na którym najczęściej są wykorzystywane telefony z wieloma kartami SIM są Chiny. Podobno nawet na ten rynek Apple szykuje specjalną wersję swojego flagowego produktu. Jednak wiele numerów telefonów przydaje się również w naszych realiach. Chociażby dlatego, żeby nie nosić przy sobie dwóch urządzeń – dla numeru prywatnego i służbowego.
CZY ISTNIEJĄ JAKIEŚ ROZWIĄZANIA? TAK, ALE WIĘKSZOŚĆ JEST DO NICZEGO.
Rozwiązania typu przekierowanie numeru nie spełniają wymagań, gdyż zwykle w takich przypadkach nie widać na jaki numer przychodzi połączenie. Niektórzy operatorzy pozwalają dokupić drugi numer do jednego abonamentu, ale to również wchodzi w grę, tylko jeśli mamy pełną kontrolę nad swoimi numerami. Niestety, jeśli drugi numer otrzymaliśmy od pracodawcy lub jest on po prostu numerem u innego operatora, to zaczynają się schody. Jakiś czas temu znalazłem połowiczne rozwiązanie, które polega na włożeniu do slotu karty SIM rozszerzenia, i przyklejenia elektroniki zawierającej dwie karty SIM do pleców telefonu. To jednak również jest złe rozwiązanie, bo i tak tylko jedna karta może być aktywna na raz.
WŁASNA CENTRALA TELEFONICZNA.
Rozwiązaniem, które sprawdziło się, jest stworzenie własnej centrali telefonicznej, która odpowiednio przekieruje ruch do naszego telefonu. Rozwiązanie to nie jest również aż tak drogie, ja jego opis mógłby sugerować.
Idea polega na tym, że na telefonie uruchamiamy nową aplikację, klienta VoIP, który łączy się z naszym własnym serwerem VoIP, który z kolei korzysta z bramki GSM do obsługi połączeń przychodzących i wychodzących. Jako dodatek otrzymujemy możliwości centrali telefonicznej, łącznie z przekierowywaniem rozmów w przypadku niedostępności, czy nawet własną pocztę głosową i nagrywanie połączeń.
Rezultat ma być więc taki, że do bramki GSM będziemy mogli dodać dowolną (ograniczoną tylko przez wybór tejże bramki) ilość kart SIM, a na telefonie będziemy mogli odbierać i wykonywać za ich pomocą połączenia.
CZEGO POTRZEBUJEMY?
- iPhone z zainstalowaną aplikacją kliencką. Testy kilkunastu pokazały, że aktualnie najlepszą do tych zastosowań jest aplikacja Softphone.
- Serwer VoIP, który będzie obsługiwał nasze połączenia oraz zasady przekierowywania połączeń. W naszym przykładzie będzie to otwarto-źródłowy Asterisk. Potrzebna też będzie maszyna, na której Serwer VoIP będzie działał – tutaj z pomocą przychodzi moje ulubione Synology.
- Bramkę GSM, która połączy się do wybranej sieci GSM (wybór padł na GoIP4).
- VPN, który pozwoli na komunikację telefonu z serwerem VoIP także spoza sieci lokalnej. O samym VPN pisałem jakiś czas temu na Swiftacademy.pl.
SERWER VOIP
Serwer VoIP jest niezbędny, gdyż to on będzie odpowiadał za routing połączeń. Instalacja serwera na serwerze Synology sprowadza się do wykorzystania aplikacji Docker oraz gotowego obrazu maszyny wirtualnej. Jest więc dość prosta.
Krok 1.
Instalujemy aplikację Docker.
Krok 2.
W Rejestrze obrazów Docker szukamy hasła asterisk i wybieramy dougbtv/aterisk (https://hub.docker.com/r/dougbtv/asterisk/), A następnie klikamy przycisk pobierz.
Krok 3.
W zakładce Obraz zaznaczamy pobrany plik i klikamy przycisk Uruchom.
Krok 4.
W kreatorze konfiguracji uruchamianego obrazu musimy pamiętać o wybraniu tej samej sieci, w której jest nasze pudełko Synology (sieć host: Ustawienia zaawansowane > Użyj tej samej sieci co host Docker). Dzięki temu serwer dostępny będzie pod tym samym adresem co Synology DSM.
Krok 5.
Po uruchomieniu wybieramy w zakładce “Kontener” naszą nową maszynę wirtualną i klikamy przycisk Szczegóły, który umożliwi dostęp między innymi do terminala.
Krok 6.
W głównym oknie w zakładce terminal mamy odpalony proces CLI Asterisk, w którym będziemy podglądać, czy urządzenia się poprawnie zarejestrowały w serwerze. Możemy też dodać nowe okno terminala w celu edycji plików. Po edycji plików konfiguracyjnych ich przeładowanie to polecenie reload w oknie CLI Asterisk.
Krok 7.
Asterisk jest ogromnym pakietem, który ma na niesamowite możliwości, a opis wszystkich zajmuje całe książki. W naszym przypadku konfiguracja serwera Asterisk sprowadza się do edycji dwóch plików. Nie wchodząc zbytnio w szczegóły, w pliku /etc/asterisk/sip.conf określamy klientów (klientem będzie bramka VoIP oraz aplikacja w telefonie). Dlatego mamy tam dwa wpisy. Jeden dla klienta rejestrującego się z telefonu iPhone:
[iphoneuser1]
type=friend
context=lineout
secret=secretpassword
host=dynamic
Dla nas ważne jest w tej chwili napis, który jest wewnątrz [], czyli nagłówkiem sekcji, gdyż on jest nazwą użytkownika aplikacji na iPhone (iphoneuser1), oraz wartość parametru secret, który jest naszym hasłem (secretpassword). Drugi wpis dotyczy klienta GoIP, czyli bramki, o której dalej w tekście. Nazwa użytkownika to tutaj gategoip, a hasło to gatepassword.
[gategoip]
type=friend
username=gategoip
secret=gatepassword
host=dynamic
insecure=invite,port
nat=no
dtmf=rfc2833
port=5060
canreinvite=no
disallow=all
allow=alaw
allow=ulaw
qualify=yes
context=lineout
Sekcja general mówi zaś, na jakich portach i interfejsach będzie nasłuchiwał serwer. Ważne jest również, żeby we wszystkich tych przypadkach prawidłowo był ustawiony parametr context.
[general]
port = 5060
binaddr = 0.0.0.0
context = lineout
Drugi ważny plik to /etc/asterisk/extensions.conf, w którym określimy zasady routingu połączeń.
[lineout]
exten=>iphoneuser1,1,Dial(SIP/iphoneuser1,20)
Jeśli bramka przekieruje połączenie na iphoneuser1 to połącz się z użytkownikiem zalogowanym jako iphoneuser1
exten=>_XXXXX.,1,GotoIf($["${CALLERID(num)}"="iphoneuser1"]?dial1)
Jeśli użytkownik iphoneuser1 dzwoni na jakiś numer, to przejdź do etykiety dial1…
exten=>_XXXXX.,n(dial1),Dial(SIP/gategoip/IPH1${EXTEN})
… i przekieruj połączenie na bramkę gategoip, poprzedzając wybierany numer prefiksem IPH1. Prefiks przyda nam się na bramce, aby zdecydować, którym numerem wychodzącym ma wyjść połączenie (szczególnie, jeśli będziemy mieli więcej użytkowników i więcej numerów wychodzących.
exten=>_XXXXX.,n(dial1),Hangup()
… na koniec zakończ połączenie Teraz w oknie CLI wpisujemy reload i część konfiguracji serwera Asterisk. Kwestie bardziej bezpiecznych konfiguracji tym razem pomijamy.
BRAMKA GSM
Po analizie możliwości finansowych, wybór padł na GoIP4, sprowadzony prosto z aliexpress.com. Muszę tutaj pochwalić sprzedawcę, który wykazał się niesamowicie profesjonalnym podejściem i udzielił błyskawicznego wsparcia w przypadku problemów.
Urządzenie, które testowałem posiadało 4 porty na karty SIM.
GoIP4 jest bramką, która pozwala na wykorzystanie 4 kart SIM, które będą niezależnie komunikowały się z serwerem. W sklepach europejskich urządzenie jest dostępne w kilkukrotnie wyższych cenach. Są też dostępne jego warianty jedno, a nawet 32-portowe.
Urządzenie posiada Firmware, który jest prawie całkiem przetłumaczony na język angielski.
Po wpięciu do sieci LAN portem PC zaczyna działać jako router z DHCP, konfigurację trzeba zacząć właśnie w ten sposób. Gdy komputer otrzyma od urządzenia adres IP, należy wejść na adres bramy sieci (http://192.168.8.1) i zalogować się z wykorzystaniem loginu admin i hasła admin.
Następnie na zakładce “Configuration > Network” należy ustawić dla portu LAN statyczny adres IP z docelowej sieci, w której ma działać urządzenie.
Teraz możemy podpiąć urządzenie kablem do drugiego portu i do docelowej sieci i rozpocząć prawidłową konfigurację.
Przechodzimy do zakładki Basic VoIP:
Tam wybieramy tryb konfiguracji na “Single Server Mode”, i uzupełniamy nazwę użytkownika bramki (Authentication ID), jego hasło, IP serwera (czyli w prezentowanym przypadku boksu Synology). Ustawienia Prefix Match Mode pozwolą na wybór konkretnej linii podczas połączenia wychodzącego. W tym przypadku połączenia rozpoczynające się od prefiksu IPH1 wyjdą na świat przez numer na karcie w porcie pierwszym.
Pozostaje skonfigurować w zakładce SIM ustawienia kart włożonych do konkretnych portów.
Tutaj musimy uzupełnić kody PIN poszczególnych kart.
Informacje o przekierowaniu połączeń przychodzących na odpowiednich użytkowników (np. iphoneuser1) określamy w zakładce Call IN (nazwę iphoneuser1 podajemy w polu Forwarding to VoIP Number).
W zakładce Call OUT włączamy dla poszczególnych kart możliwość wykonywania połączeń (Call OUT via GSM na “enable”)
I to wszystko.
W panelu CLI Asterisk powinniśmy widzieć już, że bramka jest wpięta do naszego serwera VoIP.
KLIENT NA IPHONE: SOFTPHONE
Softphone jest darmową aplikacją, która pozwala na skorzystanie z pewnej ilości predefiniowanych dostawców VoIP, jak również na konfigurację własnego serwera VoIP (Generic VoIP). I tak musimy tutaj ustawić dane zgodne z naszym serwerem. W rozpatrywanym przypadku możemy korzystać zawsze z adresów w sieci lokalnej, gdyż za dostęp poza biurem będzie odpowiadało skonfigurowane automatyczne połączenie VPN.
Używamy zatem do konfiguracji lokalnego adresu serwera Asterisk, użytkownika zdefiniowanego w pliku sip.conf oraz jego hasła i… gotowe.
Możemy już dzwonić i odbierać połączenia.
CZY DA SIĘ WIĘCEJ?
Jeśli chcemy mieć w iPhone dostępnych więcej numerów, wystarczy odpowiednio skonfigurować serwer Asterisk i bramkę. Jak to zrobić? Analogicznie do pokazanego przykładu. Szczegółów zaś można dowiedzieć się z przepastnych zasobów sieci.
Z WYKOPU: NIE PROŚCIEJ WZIĄĆ NUMER U OPERATORA VOIP?
Z jednej strony… pewnie tak. Ale jeśli otrzymaliśmy kartę z numerem służbowym od pracodawcy, to raczej nie mamy możliwości wyboru, czy numer ma być u operatora VoIP, czy nie…