Wiele numerów telefonu w iPhone

Technologie mobilne

Opublikowany: Aug 29, 2018

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?

  1. iPhone z zainstalowaną aplikacją kliencką. Testy kilkunastu pokazały, że aktualnie najlepszą do tych zastosowań jest aplikacja Softphone.
  2. 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.
  3. Bramkę GSM, która połączy się do wybranej sieci GSM (wybór padł na GoIP4).
  4. 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.

1.png

Krok 3.

W zakładce Obraz zaznaczamy pobrany plik i klikamy przycisk Uruchom.

2.png

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.

3.png

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.

4.png

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.

5.png

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.

goip4.jpg

goip2.jpg

goip1.jpg

goip_back.jpg

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.

Zrzut-ekranu-2018-08-29-o-20.50.20-1.png

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:

goip2-1.jpg

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…


dr Błażej Zyglarski

Autoryzowany Trener Apple (Swift), praktyk z wieloletnim doświadczeniem

Od lat pasjonat technologii mobilnych. Autor dziesiątek aplikacji dla systemów iOS, tvOS i watchOS. Wykładowca na Wydziale Matematyki i Informatyki Uniwersytetu Mikołaja Kopernika w Toruniu. Praktykujący deweloper iOS. Współzałożyciel Asuri Solutions.


Image
Felieton
Zarabianie Schrodingera
Sep 03, 2019
Image
Felieton
Rozliczanie aplikacji sprzedanych w AppStore
Jun 10, 2019
Image
Felieton
Cały internet na płycie CD
Apr 01, 2019
Image
Nauka programownia
Swift: O co chodzi z tymi kolejkami?
Feb 17, 2019
Image
Felieton
Tim Cook docenił wzrost sprzedaży w Polsce
Feb 04, 2019

Nasze szkolenia

Image
Image
Programowanie aplikacji iOS w Swift 5
Dwudniowe szkolenie od podstaw
Toruń - 2020-03-14
dr Błażej Zyglarski
Image
Image
Objective-C dla programistów Swift
Jednodniowe szkolenie dla programistów Swift
Warszawa - 2020-01-11
dr Błażej Zyglarski
Image
Image
Programowanie Gier 2D na iOS
Trzydniowe szkolenie ze SpriteKit i GameplayKit dla programistów Swift
Toruń - 2020-03-27
dr Błażej Zyglarski