Salon Optyczny Joanna Jarzyna
dj_ndc_photo

PSTN GATEWAY

Aby rozszerzyć zakres działania naszej centrali, czyli umożliwić jej dostęp do publicznej 
sieci telefonicznej, należy wybrać sposób podłączenia jaki nam najbardziej odpowiada.
Asterisk umożliwia nam dostęp przez różne media jak i kanały, a popularne to:

- Operatora telefonii VoIP
- Operatora PSTN przez łącze analogowe
- Operatora PSTN przez łącze cyfrowe ISDN zarówno BRA jak i PRA


Jak podłączyć się z operatorem VoIP oferującym sygnalizację SIP: Rejestrujemy konto u operatora, uzyskujemy u niego geograiczny numer telefonu z wybranej strefy. Aby zestawić się z operatorem, edytujemy plik /etc/asterisk/sip.conf. root# nano /etc/asterisk/sip.conf Dodajemy wpis związany z zarejestrowaniem się naszej centralki do ich serwera SIP Proxy. Linię należy dodać na końcu sekcji [general], najlepiej w domyślnym pliku sip.conf wyszukać wpis "register =>" i dopisać swoją linię pod tym wpisem. register => uzyskany_login:uzyskane_hasło@adres_serwera_sip_operarora/uzyskany_numer np. register => andrzej007:haslovoip@sip.serwer.pl/321118889 Ta linia sprawi, że zarejestrujemy się u operatora i będą do nas trafiały połączenia przychodzące. Jeżeli nie modyfikowaliśmy "context" w sekcji "general", to takie wywołania będą kierowane na "exten" 321118889 w kontekscie "default", dlatego później należy dodać wpisy związane z obsługą takiego wywołania. Aby udostępnić połączenia wychodzące, definiujemy konto na samym dole pliku sip.conf: [nazwa_operatora] type = friend defaultuser = uzyskany_login secret = uzyskane_hasło host = adres_serwera_sip_operarora insecure = port,invite nat = yes qualify = yes canreinvite = no canredirect = no disallow = all allow = alaw allow = gsm allow = ulaw allow = g729 allow = g723 allow = g726 np. [sipout] type = friend defaultuser = andrzej007 secret = haslovoip host = sip.serwer.pl insecure = port,invite nat = yes qualify = yes canreinvite = no canredirect = no disallow = all allow = alaw allow = gsm allow = ulaw allow = g729 allow = g723 allow = g726 Zapisujemy konfigurację i przeładowujemy konfiguracje poleceniem: root# asterisk -rx 'sip reload' Jeżeli wszystko się prawidłowo zarejestrowało możemy zobaczyć rezultaty: root# asterisk -rx 'sip show registry' sip.serwer.pl:5060 andrzej007 585 Registered Sat, 04 Jun 2011 12:34:00 root# asterisk -rx 'sip show peer sipout' ... ... Status : OK (1 ms) ... Teraz dodajemy wpisy związane z obsługą połączeń w dialplanie. Edytujemy extensions.conf: root# nano /etc/asterisk/extensions.conf W kontekscie "default" dodajemy linię związaną z tym gdzie chcemy kierować połączenie przychodzące: [default] ... ... exten => 321118889,1,Goto(sekretariat,s,1) ... ... lub krócej, bezpośrednio na usera naszej centrali: exten => 321118889,1,Dial(SIP/andrzej007,,) Przy założeniu, że user "andrzej007" na przypisany kontekst "grupa-technicy", w tym kontekscie dopisujemy obsługę połączeń wychodzących przez naszego operatora: [grupa-technicy] ... ... exten => _X.,1,Dial(SIP/${EXTEN}@sipout,,) ... lub exten => _X.,1,Dial(SIP/sipout/${EXTEN},,) oznacza to, że wszystkie wybrane numery, które wcześniej nie spełniają wzorców numerów skróconych np. exten => 2000,1,Goto(sekretariat,s,1) Bedą kierowane przez naszego operatora "sipout", zapis z @ jest bardziej logiczny, wysyłamy numer w zmiennej ${EXTEN} na (@) sip serwer operatora, czyli szukamy tam wywołania takiego numeru, a on już kieruje to dalej do swoich dostawców.
Jak podłączyć się z operatorem PSTN przez linię analogową: Można tego dokonać na kilka sposobów: - dodać kartę rozszerzeń do Asterisk-a np. analogowy modem z chipem Motorolla, - zrobić bramkę sprzętową SIP to PSTN (analog),
Korzystając z karty Motorolla, po zainstalowaniu Asteriska razem z DAHDI, konfigurujemy obsługę karty w systemie. Dodajemy wpisy do plików konfiguracyjnych: root# nano /etc/asterisk/chan_dahdi.conf [trunkgroups] [channels] context=default usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes canpark=yes cancallforward=yes callreturn=yes echocancel=no echocancelwhenbridged=no relaxdtmf=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1 pickupgroup=1 callprogress=no immediate=no context=from-motorola signalling=fxs_ls channel => 1 Następnie: root# nano /etc/dahdi/system.conf fxsls=1 loadzone = pl defaultzone = us Wydajemy polecenia: root# modprobe dahdi root# dahdi_cfg -vvvv DAHDI Tools Version - 2.4.1 DAHDI Version: 2.4.1.2 Echo Canceller(s): Configuration ====================== Channel map: Channel 01: FXS Loopstart (Default) (Echo Canceler: none) (Slaves: 01) 1 channels to configure. Uruchamiamy Asteriska i wydajemy polecenie: root# asterisk -rx 'dahdi show channels' Chan Extension Context Language MOH Interpret Blocked State pseudo default default In Service 1 from-motorola default In Service Aktualnie mamy skonfigurowaną kartę, która przyjmuje połączenia do kontekstu "from-motorola". Dodajemy wpisy do extensions.conf aby obsłużyć połączenia wychodzące i przychodzące. Przy założeniu, że użytkownicy centrali robią wywołania w kontekscie "grupa-technicy": root# nano /etc/asterisk/extensions.conf [grupa-technicy] ... ... exten => _X.,1,Dial(DAHDI/1/${EXTEN},,) ... Oznacza to, że wszystkie wybrane numery będą kierowane przez sterownik DAHDI przez kanał nr 1. Gdyby karta była kilku portowa, lub byłoby więcej kart, wtedy można dzwonić przez inny numer kanału zdefiniowany w "chan_dahdi.conf" lub wszystkie kanały połączyć w grupę, czyli przypisać im parametr: group=1 Oznacza, ze kanał jest przypisany do grupy pierwszej. Następnie zmodyfikować dzwonienie na: exten => _X.,1,Dial(DAHDI/g1/${EXTEN},,) Będziemy dzwonić przez dowolną wolną linię z grupy. Opcja ta jest stosowana w łączach PRA, gdzie mamy 30 kanałow do dyspozycji. Połączenia przychodzące trafiają w przypadku linii analogowych do exten "s" w przypisanym w naszym przypadku kontekstu "from-motorola". Edytujemy plik extensions.conf: root# nano /etc/asterisk/extensions.conf i dodajemy wpis: [from-motorola] exten => s,1,Goto(sekretariat,s,1) lub [from-motorola] exten => s,1,Dial(SIP/andrzej007,,)
Korzystamy z CISCO serii 2600 z kartą NM-2V + VIC-2FXO. Od strony Asteriska musimy stworzyć SIP Trunk z naszym Cisco. Edytujemy sip.conf: root# nano /etc/asterisk/sip.conf Dodajemy na końcu wpis: [cisco] host=192.168.1.111 type=peer disallow=all allow=alaw allow=ulaw qualify=yes Gdzie 192.168.1.111 jest adresem naszego CISCO. Połączenia przychodzące będą trafiały do kontekstu "default", na numer zadany w voice-port 1/0/0 jako plar. Konfiguracja CISCO: ! voice service voip fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback pass-through g711alaw sip ! voice class codec 100 codec preference 1 g711alaw codec preference 2 g711ulaw codec preference 3 gsmfr codec preference 4 gsmefr codec preference 5 g729r8 codec preference 6 g729br8 ! interface FastEthernet0/0 ip address 192.168.1.111 255.255.255.0 duplex auto speed auto ! dial-peer voice 10 pots destination-pattern T direct-inward-dial port 1/0/0 ! dial-peer voice 11 voip destination-pattern T voice-class codec 100 session protocol sipv2 session target ipv4:192.168.1.112 ! voice-port 1/0/0 connection plar 100 ! Gdzie 192.168.1.112 to adres naszego Asteriska. Aby realizować połączenia przez CISCO edytujemy extensions.conf: [grupa-technicy] ... ... exten => _X.,1,Dial(SIP/${EXTEN}@cisco,,) ... lub exten => _X.,1,Dial(SIP/cisco/${EXTEN},,) Połączenia przychodzące trafiają na "100" w default: [default] ... ... exten => 100,1,Dial(SIP/andrzej007,,) ... lub [default] ... ... exten => 100,1,Goto(sekretariat,s,1) ...
Jak podłączyć się z operatorem PSTN przez linię cyfrową PRA: Należy zaopatrzyć się w karę rozszerzeń firm Digium lub Sangoma np.: - Sangoma A101DE - z kancelatorem echa: http://sangoma.com/products/hardware_products/digital_voice_and_data_networking/a101.html Zainstalować sterownik do karty "Wanpipe" zgodnie z instrukcją: http://wiki.sangoma.com/wanpipe-linux-asterisk-dahdi Po pobraniu i rozpakowaniu sterownika z adresu: http://wiki.sangoma.com/wanpipe-linux-drivers#latest Uruchamiamy instalator: root# cd /user/src/wanpipe-3.5.20 root# ./Setup install Jeżeli zauważymy, że brakuje jakichś wylistowanych skłądników należy je zainstalować: root# apt-get install flex bison Cała procedura instalacji sterownika ogranicza się do klikania entera, na samym końcu konfigurujemy kartę wybierając rodzaj sygnalizacj itp. oraz konteks dla połączeń przychodzących oraz numer grupy dla łącza. Standardowo w Polsce należy wybrać: EuroISDN,ccs,hdb3,crc4,pri_cpe Przykładowy plik /etc/dahdi/system.conf: loadzone=us defaultzone=us span=1,1,0,ccs,hdb3,crc4 bchan=1-15,17-31 echocanceller=mg2,1-15,17-31 hardhdlc=16 Przykładowy plik /etc/asterisk/chan_dahdi.conf: [trunkgroups] [channels] context=default usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes canpark=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes relaxdtmf=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1 pickupgroup=1 immediate=no switchtype=euroisdn context=from-port-1 group=1 echocancel=yes signalling=pri_cpe channel =>1-15,17-31 Połączenia wychodzące realizujemy jak na linii analogowej z przydzieloną grupą 1 dla wszystkich 30 kanałów: root# nano /etc/asterisk/extensions.conf [grupa-technicy] ... ... exten => _X.,1,Dial(DAHDI/g1/${EXTEN},,) ... Połączenia przychodzące trafiają do kontekstu "from-port-1". Mając łącze PRA mamy na nim przydzieloną numerację,często 100 numerów. Należy zdefiniować jak kierować połączenia dla wybranych numerów, oraz co robić z pozostałymi. Przykładowa konfiguracja, gdzie trzy numery trafiają bezpośrednio do userów centrali, a pozostałe do sekretariatu: root# nano /etc/asterisk/extensions.conf [from-port-1] exten => 321118899,1,Dial(SIP/andrzej007,,) exten => 321118199,1,Dial(SIP/andrzej006,,) exten => 321118299,1,Dial(SIP/andrzej004,,) exten => _X.,1,Goto(sekretariat,s,1)