PSTN GATEWAYAby 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) |