Asterisk - konfiguracja

Transkrypt

Asterisk - konfiguracja
meritus
Asterisk - konfiguracja
Niniejszy tekst jest przekładem dwóch artykułów, których autorem jest Henry Jensen. Poniżej
przedstawiony zostanie sposób na wykonanie niedrogiego urządzenia umożliwiającego korzystanie z
coraz bardziej powszechnej metody komunikowania się jaką jest VoIP. Praca urządzenia będzie możliwa
dzięki wykorzystaniu oprogramowania linuksowego. Uwagi wstępneUsługa Voice over IP (VoIP) jest na
ustach wszystkich. Możliwość korzystnego lub darmowego telefonowania przez Internet jest kusząca.
VoIP jest interesujący dla użytkowników Linuksa przynajmniej od chwili ukazania się wersji komunikatora
Skype dla Linuksa.
Jednak VoIP ma także kilka wad: W przypadku korzystania z oprogramowowania klienckiego,
uzyskiwana jakość mowy jest często słaba. Aparat telefoniczny z obsługą protokołu SIP jest względnie
drogi. Fritzbox Fon, który umożliwia używanie zwykłego telefonu także jako telefonu internetowego,
również nie jest tani.
Wspólną cechą wszystkich ww. rozwiązań jest to, że jest się przywiązanym do jednego dostawcy usługi
VoIP przez SIP, który jest de facto standardowym protokołem VoIP i nie jest optymalny z punktu
widzenia bezpieczeństwa w sieci. Trzeba otworzyć nie tylko port 5060 UDP dla SIP, lecz także porty UDP
dla RTP (Real Time Protocol, właściwe przesyłanie strumienia danych z głosem).
Rozwiązanie przedstawione w artykule oferuje następujące zalety: Telefon (ISDN) może być używany w
sieci tradycyjnej oraz do telefonowania internetowego w ramach VoIP. Nie jest wymagany ani aparat
telefoniczny ani FritzBox, jedynie trochę oprogramowania oraz oprzyrządowania, które można korzystnie
zgromadzić. Otwarty musi być tylko jeden port UDP. Zagwarantowana jest niezależność od dostawcy
osprzętu oraz dostawców protokołu SIP.
Po wykonaniu opisanych czynności będziemy dysponować urządzeniem umożliwiającym wykonywanie
rozmów poprzez ISDN oraz VoIP, a wszystko to w oparciu o Linuksa, który zaoferuje nam niezliczone
możliwości dostępne jedynie w drogich urządzeniach telefonicznych. W pierwszej części zbudujemy i
skonfigurujemy oprzyrządowanie. W drugiej części zajmiemy się bliżej konfiguracją i możliwościami
Asterisk.
Oprogramowaniem telefonicznym dla Linuksa jest Asterisk. Asterisk jest pełnowartościową, programową
implementacją kompletnego urządzenia telefonicznego potrafiącego obsługiwać ISDN, VoIP i znacznie
więcej. Niniejszy program został napisany przez Marka Spencera. Jest on dostępny jako Otwarte i Wolne
Oprogramowanie.
Istnieje projekt podobny do tego, co zamierzamy uzyskać: PBX4Linux. Różni się on od Asterisk tym, że
(jeszcze) nie umie realizować usługi VoIP i jest (niemal) czystym urządzeniem telefonicznym ISDN
opartym na Linuksie. Bez względu na to, wskazówki i instrukcje z PBX4Linux, przede wszystkim te
dotyczące oprzyrządowania, są bardzo przydatne. Część I1. Wymagania techniczneAby zbudować
linuksowy, internetowy telefon, należy spełnić następujące wymagania: karta / przyłącze ISDN
(wprawdzie istnieją także karty dla urządzeń analogowych, np. TDM400P firmy Digium, jednak tego typu
rozwiązanie byłoby dość drogie) przyłącze DSL
Konieczne jest posiadanie następującego oprzyrządowania:
zakończenia ISDN-NTBA.
Komputer z Linuksem Dodatkowe
Można je korzystnie nabyć. Wiele firm masowo się ich pozbywa. Poza tym eBay sprzedaje je już od około
13,00 PLN, a czasem i taniej. Kabel typu 'patch' albo najlepiej kabel ISDN (tylko cztery przewody w
środku) Dwie karty ISDN z chipsetem HFC-S, np. Acer ISDN 128 Surf PCI, w cenie od około 122,00
złotych. Lista kart z chipsetem HFC dostępna jest tutaj. Jeśli urządzenie ma realizować wyłącznie usługę
VoIP, wówczas wystarczy jedna taka karta. szczypce do zaciskania wtyczek, szczypce do cięcia drutu,
wtyczka RJ45 2. Montaż osprzętuNajpierw przygotujemy skrośny kabel ISDN. Nie możemy skorzystać ze
skrośnego kabla ethernetowego. Autor artykułu nie znalazł w sieci sprzedawców skrośnych kabli ISDN,
dlatego poniżej zamieszczony został opis, w jaki sposób przygotować go samemu.
Aby zbudować odpowiedni kabel, musimy odciąć jedną końcówkę kabla ISDN. W przypadku takiego kabla
zajęte są piny 3, 4, 5 i 6. Dwa wewnętrzne i dwa zewnętrzne przewody tworzą pary (4-5 i 3-6). Pierwsza
para umożliwia nadawanie (TX), a druga odbiór (RX). Czynność, którą musimy teraz wykonać, polega na
zamianie par na jednym końcu kabla. Parę wewnętrzną należy podłączyć na zewnątrz, a parę zewnętrzną
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
do wewnątrz. Inaczej mówiąc, parę 4-5 musimy podłączyć w miejsce pary 3-6 a parę 3-6 w miejsce pary
4-5. Na końcu trzeba jeszcze nałożyć i zacisnąć wtyczkę RJ45. W ten sposób jesteśmy już w posiadaniu
odpowiedniego przewodu.
Alternatywnie kabel skrośny ISDN można także zbudować przebudowując NTBA, jednak ten sposób
uważany jest za bardziej skomplikowany. Osoby chcące, pomimo tego, spróbować tej metody mogą
zapoznać się z treścią pliku PBX4Linux-3.0.pdf, gdzie znajduje się odpowiedni opis wraz ze zdjęciami.
Obydwie karty ISDN muszą być zainstalowane w komputerze pracującym pod kontrolą Linuksa. W
przypadku PBX4Linux należy zwrócić uwagę na to, żeby każda karta miała przydzielony własny numer
IRQ i nie dzieliła go z innymi urządzeniami.
Ostateczna instalacja osprzętuPrzed podłączeniem kabli,
należy ponownie zabootować wbudowane karty. W ten sposób dokonujemy sprawdzenia, czy dana karta
jest wykrywana przez system operacyjny - aktywacja sterowników: isdn4linux lub kernelcapi lub mISDN i
czy następuje załadowanie modułów jądra.
Może to zabrzmi paradoksalnie, ale chcemy, aby ww. sterowniki nie zostały aktywowane. Dokładnie
mówiąc, moduł HiSax, jak również moduły isdn4linux, kernelcapi, czy mISDN powinny zostać
odinstalowane. Chodzi o to, że później będziemy korzystali z naszego własnego sterownika,
specyficznego dla Asterisk.
Następnie należy wyłączyć komputer i podłączyć przewody. Najpierw zwykłym kablem ISDN (nie kablem
skrośnym) łączymy telefon z dodatkowym NTBA. Z kolei NTBA podłączamy, tym razem kablem skrośnym
ISDN, do pierwszej karty ISDN. Kartę tę nazwiemy kartą NT, ponieważ uruchomimy ją później w trybie
NT. Drugą kartę ISDN łączymy z naszym przyłączem ISDN (z reguły jest to NTBA założone wcześniej
przez naszego dostawcę usług telekomunikacyjnych). Kartę tę możemy więc nazwać kartą TE. 3.
Instalacja AsteriskTeraz możemy rozpocząć instalację Asterisk. W tym celu musimy jedynie pobrać
odpowiedni pakiet. Następnie rozpakowujemy go poleceniem tar xvzf bristuff-0.2.0-RC8g.tar.gz. Pakiet
kompilujemy po dowiązaniu źródeł Linuksa do /usr/src/linux-2.6 (jeśli źródła nie zostały wcześniej
zainstalowane należy to zrobić - autor artykułu zakłada, że większość osób korzysta z kernela w wersji
2.6.X.(Y)).
Następnie przechodzimy do katalogu bristuff-0.2.0-RC8g i wywołujemy polecenie: ./install.sh. Skrypt
załaduje kolejne elementy: Asterisk, libpri oraz zaptel, nałoży łatę na źródła, skompiluje je i zainstaluje.
Po zakończonej instalacji, możemy zająć się konfigurowaniem kart ISDN. Najpierw musimy utworzyć plik
/etc/zaptel.conf. W pliku tym umieszczamy następujący wpis:
#/etc/zaptel.conf
loadzone=pl
defaultzone=pl
span=1,1,3,ccs,ami
bchan=1-2
dchan=3
span=2,1,3,ccs,ami
bchan=4-5
dchan=6
Teraz możemy załadować moduł jądra: modprobe zaphfc modes=1
Opcja modes=1 przełącza pierwszą kartę ISDN w tryb NT. Za pomocą modes=2 przełączylibyśmy drugą
kartę w ww. tryb, natomiast opcja modes=3 przełączyłaby w tryb NT obydwie karty.
Na końcu wykonujemy jeszcze polecenie: ztcfg -v, które aktywuje karty.
Aby sprawdzić, czy karty działają prawidłowo, należy obejrzeć pliki: /proc/zaptel/1 i /proc/zaptel2.
bash$ cat /proc/zaptel/1
Span 1: ZTHFC1 "HFC-S PCI A ISDN card 0 [NT] layer 1 ACTIVATED (F4)" AMI/CCS
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
1 ZTHFC1/0/1 Clear (In use)
2 ZTHFC1/0/2 Clear (In use)
3 ZTHFC1/0/3 HDLCFCS (In use)
bash$ cat /proc/zaptel/2
Span 1: ZTHFC1 "HFC-S PCI A ISDN card 0 [TE] layer 1 ACTIVATED (F4)" AMI/CCS
4 ZTHFC1/0/1 Clear (In use)
5 ZTHFC1/0/2 Clear (In use)
6 ZTHFC1/0/3 HDLCFCS (In use)
Wpisy powinny być zbliżone do przedstawionych powyżej. Następnie można wywołać polecenie zttool.
Jest to małe narzędzie służące do kontroli pracy kart, podczas używania którego, obydwie karty powinny
działać prawidłowo.
Aby Asterisk mógł rozpocząć współpracę z kartami, musimy je odpowiednio skonfigurować. Plikiem
konfiguracyjnym jest: /etc/asterisk/zapata.conf.
#/etc/asterisk/zapata.conf switchtype = euroisdn
signalling = bri_net_ptmp
pridialplan=local
echocancel=yes
immediate=yes group = 1
context=default
channel => 1-2
signalling = bri_cpe_ptmp
group = 2
channel => 4-5
Aby nie pozostawić czytelnika z urządzeniem jedynie w połowie gotowym do pracy, poniżej jeszcze kilka
uwag umożliwiających diagnozowanie urządzenia.
W pliku konfiguracyjnym Asterisk: /etc/asterisk/extensions.conf - w sekcji [default], należy umieścić dwa
wpisy niezbędne do zwykłego telefonowania. Zakładamy, że numerem naszego telefonu jest 123456.
[default]
exten => 123456,1,Dial(Zap/g1/${EXTEN})
exten => _X.,1,Dial(Zap/g2/${EXTEN})
Na końcu należy włączyć Asterisk. W tym celu, podczas pierwszego uruchomienia, musimy wywołać
polecenie: asterisk -vvvc. Wyświetlony zostanie cały szereg komunikatów. Jeśli wszystko przebiegnie
pomyślnie, wówczas w linii poleceń wyświetlony zostanie znak zachęty. Teraz mamy już dostęp do
różnych poleceń umożliwiających diagnozowanie urządzenia. Aby np. poznać stan pierwszej karty ISDN,
należy wydać polecenie: pri show span 1. help wyświetli informacje nt. wszystkich dostępnych poleceń.
Część IIPoniżej skonfigurujemy Asterisk tak, że możliwe już będzie przeprowadzenie pierwszej rozmowy
telefonicznej. 4. Konfiguracja kart ISDN
Najpierw zajmiemy się optymalizacją ustawień kart ISDN. Dla karty NT należy w pliku
/etc/asterisk/zapata.conf umieścić następujący wpis:
;/etc/asterisk/zapata.conf
[channels]
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
language=pl
switchtype = euroisdn
signalling = bri_net_ptmp
pridialplan = dynamic
prilocaldialplan = local
nationalprefix = 0
internationalprefix = 00
echocancel=yes
echotraining = 100
echocancelwhenbridged=yes
immediate=no
overlapdial=yes
group = 1
context=default
channel => 1-2
Natomiast dla karty TE należy do tego samego pliku wpisać:
group = 2
signalling = bri_cpe
; ewentualnie także
; signalling = bri_cpe_ptmp, w przypadku podłączenia wielu aparatów
group = 2
context=default
channel => 4-5
Znaczenie większości parametrów tłumaczy się samo. immediate=no oraz overdaldial=yes ustawione są
zasadniczo tylko po to, aby można było wybierać numer także przy podniesionej słuchawce. Domyślne
ustawienie jest takie, że Asterisk zaczyna wybierać numer, gdy tylko zostanie podniesiona słuchawka.
Często nie odpowiada to przyzwyczajeniom użytkowników, mimo że w przypadku większości dzisiejszych
telefonów możliwe byłoby wybieranie numeru przy odłożonej słuchawce i podniesienie słuchawki dopiero
po wprowadzeniu numeru. W wyniku powyższego ustawienia Asterisk czeka na podanie numeru telefonu,
jednak czas oczekiwania nie jest nieograniczony. Pomiędzy wprowadzeniem kolejnych cyfr Asterisk czeka
najwyżej pięć sekund, a nastepnie zaczyna wybierać numer. W niektórych sytuacjach czas ten może
okazać się zbyt krótki, np. gdy numer jest gdzieś zapisany i po kolei przez nas czytany. Jeśli zatem
zechcemy ustawić dłuższy czas, wówczas musimy to uczynić poleceniem DigitTimeout w schemacie
połączeń (dialplan). 5. Schemat połączeń (dialplan)Mała część schematu połączeń została
zaprezentowana już wcześniej w ramach niniejszego artykułu. Ponieważ schemat połączeń jest
najobszerniejszą i niestety także najbardziej skomplikowaną częścią konfiguracji oprogramowania
Asterisk, chcąc nie chcąc musimy poznać nieco teorii.
Schemat połączeń definiuje, w jaki sposób mogą komunikować się poszczególne kanały (channels - Zap,
SIP, IAX, itd.). Plikiem konfiguracyjnym zawierającym odpowiednie definicje jest plik extensions.conf.
Tutaj należy od razu wyjaśnić dwa pojęcia. Rozszerzenie (exten) jest wybieranym celem, czyli najczęściej
numerem telefonu. Istnieje jednak także specjalne rozszerzenie.
Kontekst jest grupą wewnątrz schematu połączeń. Kontekst [default] jest otwarty dla wszystkich. W
pozostałych przypadkach obowiązuje zasada, że dostępne dla nas są tylko te rozszerzenia, które znajdują
się w tym samym kontekście, co my. Kontekst, do którego należymy, definiowany jest w konfiguracji
kanałów (channels), a odpowiedni numer w schemacie połączeń.
W celu uzyskania dostępu do innych kontekstów, żądany kontekst można włączyć do własnego kontekstu
za pomocą instrukcji include. Typowy kontekst mógłby wyglądać tak:
[firma]
exten
exten
exten
exten
=>
=>
=>
=>
151,1,Dial(Zap/g1/151,30,rt)
151,2,Dial(Zap/g1/152,30,rt)
152,1,Dial(Zap/g1/152,30,rt)
152,2,Dial(Zap/g1/151,30,rt)
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
[CEO]
include => firma
exten => 161,1,Dial(Zap/g1/161,30,rt}
exten => 162,1,Dial(Zap/g1/162,30,rt}
Każdy, kto należy do kontekstu CEO, może korzystać z rozszerzeń zapisanych w kontekstach firma oraz
CEO. Jednak ten, kto należy do kontekstu firma, nie ma dostępu do rozszerzeń z kontekstu CEO.
Wiersz, w którym zapisane jest rozszerzenie, ma zawsze następujący format:
exten => rozszerzenie,priorytet,polecenie
Mówiąc dokładniej: Rozszerzenie oznacza: wybierany numer. Priorytet oznacza: priorytet (kolejność)
przetwarzania polecenia. Możliwe jest ustawienie najpierw priorytetu 2, a potem priorytetu 1, ale Asterisk
wewnętrznie posortuje rosnąco. Blok, który należy do pojedynczego rozszerzenia, zostanie sekwencyjnie
przetworzony rosnąco, chyba że przetwarzanie zostanie przerwane, choćby wskutek sygnału hangup
(odłożona słuchawka) albo komunikatu błędnie wykonanego polecenia. Polecenie: znane także jako
application command, patrz poniżej.
W przypadku większych instalacji wprowadzanie pojedynczych numerów / rozszerzeń byłoby uciążliwe,
dlatego istnieje możliwość korzystania z wzorców i zmiennych. Wzorzec definiowany jest poprzez użycie
znaku podkreślenia, np. wzorzec
exten => _1XX,1,Dial(Zap/g1/${EXTEN},30,rt}
oznacza, że 3-cyfrowe rozszerzenie, które rozpoczyna się cyfrą 1, należy wybrać poprzez Zap/g1.
Podczas tworzenia wzorców wykorzystywane są następujące oznaczenia:
X - każda cyfra od 0-9 Z - każda cyfra od 1-9
N - każda cyfra od 2-9
[1237-9] - każda cyfra w nawiasach (tutaj 1,2,3,7,8,9)
. - dzika karta, jeden albo wiele następujących znaków
Aby np. wychwycić każdy możliwy do wybrania numer, trzeba by utworzyć tylko wzorzec X.
Co jednak się stanie, jeśli numer będzie pasować do większej ilości wzorców? Asterisk wybierze wówczas
wzorzec, który pasuje najdokładniej. Załóżmy, że podane są wzorce: 1XX, 1. oraz X.. Gdyby teraz ktoś
wybrał numer 123, wtedy pasować będą wszystkie trzy wzorce (każdy 3-cyfrowy numer zaczynający się
od 1, każdy numer zaczynający się od 1, każdy numer). Jednak wzorzec 1XX pasuje najdokładniej i
Asterisk skorzysta właśnie z niego, o ile nie zostało zdefiniowane jednoznaczne rozszerzenie 123.
Polecenia wykorzystywane w przypadku każdego rozszerzenia nazywane są także application commands.
Obecnie istnieje około 140 różnych poleceń, które opisane zostały na stronach www.voip-info.org.
Zapewne najważniejszym z nich jest polecenie Dial. Format niniejszego polecenia wygląda następująco.
Dial(type/identifier,timeout,options,URL)
Powyższe parametry mają następujące znaczenie: type - oznacza typy kanału, czyli SIP, Zap, IAX itd.
identifier - oznacza numer telefonu (rozszerzenie), który ma zostać wybrany. W błąd często może
wprowadzić fakt, że typ kanału może posiadać parametry, które również oddzielane są od siebie za
pomocą slasha ( / ). O ile SIP/101 jest jeszcze zapisem jednoznacznym (Wybierz 101 na kanale SIP), o
tyle instrukcja Zap/g1/101 (Wybierz 101 na kanale Zap grupy 1) nie da się już całkiem łatwo odczytać, a
w przypadku instrukcji IAX2/1234:[email protected]/101@extern trzeba się dokładnie przyjrzeć, gdzie
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
właściwie znajduje się żądany numer (Wybierz 101 na kanale IAX na serwerze IAX o numerze IP
192.168.1.12, a następnie zaloguj się jako użytkownik 1234 posiadający hasło 4567 i wybierz tam
kontekst extern.) timeout - timeout w sekundach options - oznacza szereg opcji, które można podać wraz
z poleceniem Dial. Wszystkie opcje należy zapisywać bezpośrednio jedna za drugą. Najważniejszymi z
nich są: t: zezwól odbiorcy połączenia na transfer połączenia. T: zezwól dzwoniącemu na transfer
połączenia. r: generuj sygnał dzwonka po stronie odbiorcy połączenia do chwili, gdy ktoś podniesie
słuchawkę. m: odtwarzaj MusicOnHold do chwili, gdy ktoś podniesie słuchawkę (muzyka zamiast
sygnału dzwonka) g: wykonuj kolejne polecenie zapisane w niniejszym kontekście, zamiast przerwać
połączenie po od odłożeniu słuchawki. A(x): odtwórz zapowiedź x.gsm (zamiast sygnału dzwonka)
S(n): odłóż słuchawkę po "n" sekundach liczonych od momentu podniesienia słuchawki
URL - przesyłany przez dzwoniącego, w przypadku gdy kanał obsługuje taką opcję. Nieobowiązkowe.
W schemacie połączeń można, podobnie jak w skrypcie powłoki, ustawiać zmienne oraz używać
zmiennych systemowych. Najważniejszą zmienną jest ${EXTEN}, która zawiera żądane rozszerzenie.
Można z niej łatwo korzystać w połączeniu z wzorcami rozszerzeń. Dzięki temu np. instrukcja
exten => _X.,1,Dial(SIP/${EXTEN})
nie oznacza niczego innego, jak Wybierz żądany numer na kanale SIP.
6. VoIPZanim przejdziemy do kilku praktycznych, przykładowych schematów połączeń, powinniśmy
lepiej poznać VoIP. To, w jaki sposób można wykorzystywać Asterisk do zwykłego telefonowania
(nazywanego w żargonie technicznym PSTN, czyli Public switched telephone network), powinno być już
dla nas mniej więcej jasne. Jednak na czym polega telefonia internetowa?
Z punktu widzenia struktury istnieją dwie możliwości. Można zbudować własną sieć (np. wraz z kolegami,
krewnymi i przyjaciółmi można podać do serwera Asterisk dane nt. kont oraz / lub dokonać wpisów
"ENUM" dla własnych numerów telefonów sprzężonych z SRV record dodanego dla własnego serwera
Asterisk na publicznym serwerze DNS). Można też poszukać jednego bądź wielu dostawców VoIP.
Oczywiście można również połączyć obydwie możliwości.
Asterisk rozmawia posługując się wieloma protokołami VoIP. H.323 - matka wszystkich protokołów
VoIP, obsługiwany przede wszystkim przez starszy osprzęt, obecnie jego stosowanie coraz bardziej
zanika SIP - de facto dzisiejszy standard MGCP - kolejny, raczej rzadko spotykany protokół VoIP
Skinny/SCCP - protokół VoIP dla telefonów Cisco, po części obsługiwany jedynie w podstawowym stopniu
IAX2 - własny protokół VoIP oprogramowania Asterisk
Pomimo tego, że SIP jest dzisiejszym standardem, protokół ten nie jest optymalny. Chlebem powszednim
są problemy z NATem i Firewallami tych, którzy stosują serwery SIP (złożone z usług: registrar, proxy i
location server). Wynika to stąd, że SIP składa się właściwie z trzech protokołów: SIP, SDP oraz RTP.
Mówiąc w uproszczeniu, w przypadku dwóch pierwszych chodzi o wymianę komunikatów sterujących,
natomiast dane z właściwym głosem płyną za pośrednictwem protokołu RTP.
Wszystkich tych problemów pozbawiony jest IAX2 (Inter-Asterisk eXchange). IAX wykorzystuje tylko
jeden jedyny port, tj. 4569. Zwykle możliwy jest także UDP - TCP.
Dlatego w przypadku poszukiwań dostawcy VoIP zalecałbym znalezienie takiego, który obsługuje IAX.
Najprostsze oferty zapewniające obsługę portu IAX często nic nie kosztują i wewnętrzne rozmowy VoIP są
bezpłatne.
Poniższy fragment dotyczy amerykańskiego IAXtel, zatem może posłużyć jedynie jako przykład działania.
IAXtel dostarcza sieć IAX, która jest (prawie) niekomercyjna i ukierunkowana na Społeczność. IAXtel
sponsorowana jest przez "producenta" Asterisk, firmę Digium. Po zarejestrowaniu otrzymamy 11-cyfrowy
numer telefonu rozpoczynający się od 1-700. IAXtel dostosowany jest do warunków amerykańskich,
jednak, aby nie preferować żadnego rodzimego dostawcy, posłuży on nam za przykład dla konfiguracji
IAX. W przypadku wszystkich innych dostawców oferujących IAX rzecz powina wyglądać tak samo. W
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
przykładzie posłużę się przyznanym przez IAXtel, następującym numerem: 17001234567.
Aby odróżnić numery VoIP od zwykłych numerów telefonów, należy odpowiednio skonfigurować Asterisk.
Jako podstawę wykorzystamy przykład z górnej części artykułu.
;/etc/asterisk/extensions.conf
[default]
exten => 123456,1,Dial(Zap/g1/${EXTEN})
exten => 17001234567,1,Dial(Zap/g1/123456)
[extern]
exten
exten
exten
exten
exten
=>
=>
=>
=>
=>
_1700NXXXXXX,1,Dial(IAX2/user:[email protected]/${EXTEN}@iaxtel)
_1888NXXXXXX,1,Dial(IAX2/user:[email protected]/${EXTEN}@iaxtel)
_1877NXXXXXX,1,Dial(IAX2/user:[email protected]/${EXTEN}@iaxtel)
_1866NXXXXXX,1,Dial(IAX2/user:[email protected]/${EXTEN}@iaxtel)
_1800NXXXXXX,1,Dial(IAX2/user:[email protected]/${EXTEN}@iaxtel)
exten => _X.,1,Dial(Zap/g2/${EXTEN})
Jak widać, zostało wprowadzonych kilka zmian. Przede wszystkim w kontekście [default] widnieje teraz
już tylko nasz numer. Pozostałe numery znajdują się w innym kontekście, mianowicie [extern]. Ma to
uniemożliwić telefonowanie na nasz koszt dzwoniącym z zewnątrz. W tym celu należy także odpowiednio
zmienić kontekst przewodu Zap/g1. Dla przypomnienia - poniższy wpis odpowiada karcie NT.
;/etc/asterisk/zapata.conf
switchtype = euroisdn
signalling = bri_net_ptmp
pridialplan=local
echocancel=yes
immediate=yes
group = 1
context=extern
channel => 1-2
signalling = bri_cpe_ptmp
group = 2
context=default
channel => 4-5
Dzięki temu możemy telefonować na zewnątrz. Wszyscy, którzy nawiązują połączenie za pomocą innego
interfejsu niż Zap/g1, mogą wybierać tylko nasze własne numery.
Aby móc telefonować poprzez IAXtel, musimy jeszcze w pliku /etc/asterisk/iax.conf umieścić następujący
wpis:
;/etc/asterisk/iax.conf
register => user:[email protected]
Aby inni użytkownicy mogli się z nami kontaktować poprzez IAXtel, musimy otworzyć u nas port UDP
4569. Najlepiej, żebyśmy jednak ograniczyli się przy tym tylko do serwera, który będzie się z nami
łączyć. W przykładzie jest to serwer iaxtel.com. W przeciwieństwie do SIP, nie musimy otwierać kolejnych
portów dla RTP.
Jeśli mamy dostawcę VoIP, który poprzez IAX umożliwia routing także do PSTN, wówczas możemy, w
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
zależności od tego, co jest tańsze, wybierać również zwykłe numery za pośrednictwem tego dostawcy. W
poniższym przykładzie pokazany został routing krajowych numerów z tradycyjnej sieci telefonicznej
poprzez IAX, natomiast numery telefonów komórkowych, jak też numery 0180 i 0190 nadal wybierane są
poprzez zwykłe łącze telefoniczne.
;/etc/asterisk/extensions.conf
[default]
exten => 123456,1,Dial(Zap/g1/${EXTEN})
[extern]
exten => _01[6-9]X.,1,Dial(Zap/g2/${EXTEN})
exten => _X.,1,Dial(IAX2/user:password@iaxprovider/${EXTEN})
exten => _X.,2,Dial(Zap/g2/${EXTEN})
Wszystko, co nie zaczyna się od 01[6-9]X, wybierane jest poprzez dostawcę IAX. Jeśli to nie zadziała,
wtedy włączy się drugi priorytet i połączenie zostanie wykonane poprzez zwykłe łącze telefoniczne.
Teraz można dać upust niczym nieograniczonej fantazji i odpowiednio do zachcianek i humoru zadać
mniej lub bardziej skomplikowane regułki. 7. Poczta głosowaDzięki Astrisk nie trzeba już posiadać
zewnętrznej automatycznej sekretarki. Odpowiednia aplikacja, która przejmie jej funkcję, nosi nazwę
VoiceMail.
VoiceMail można najprościej zainstalować w następujący sposób.
Najpierw w pliku /etc/asterisk/voicemail.conf informujemy Asterisk o istnieniu głosowej skrzynki
pocztowej (voicemailbox) dla danego użytkownika:
;/etc/asterisk/voicemail.conf
[default]
123456 => 123456, automatyczna sekretarka
Następnie umieszczamy odpowiedni wpis w pliku extensions.conf:
;/etc/asterisk/extensions.conf
[default]
exten => 123456,1,Dial(Zap/g1/${EXTEN},30)
exten => 123456,2,VoiceMail(u123456)
Telefon dzwoni przez 30 sekund. Jeśli nikt nie odbierze słuchawki, wtedy odtworzona zostanie
standardowa wiadomość i dzwoniący będzie mógł zostawić wiadomość. Zostanie ona zapisana w pliku
/var/spool/asterisk/voicemail/default/123456/INBOX, w formie dwóch plików WAV oraz jednego pliku
GSM.
Niniejsze pliki można będzie odtworzyć za pomocą MPlayera albo innego programu bądź bezpośrednio
odsłuchać z telefonu. Aby to uczynić, w pliku extensions.conf trzeba dokonać kolejnego wpisu:
;/etc/asterisk/extensions.conf
[extern]
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
exten => 99999,1,VoicemailMain(s123456)
Jeśli teraz wybierzemy numer 99999, znajdziemy się w systemie poczty głosowej i po wciśnięciu 1
będziemy mogli odsłuchać wiadomości.
Aplikacja VoiceMail może być również "nadużywana" w celu nagrywania, w najprostszy sposób, własnych
dźwięków w formacie GSM, bez potrzeby korzystania z programów do nagrywania i konwersji dźwięku.
Do pliku extensions.conf wpisujemy wówczas tylko rozszerzenie, które zawsze wywoła aplikację
VoiceMail, i już możemy wygodnie nagrywać własne zapowiedzi za pomocą telefonu. Oczywiście można
dyskutować nt. ich jakości.
Przekierowanie połączenia na telefon komórkowy, jeszcze przed włączeniem się automatycznej
sekretarki, można realizować w bardzo prosty sposób. Najpierw należy nagrać własny plik dźwiękowy z
zapowiedzią wspomnianego przekierowania. Nazwijmy go przekierowanie.gsm. Potem należy go
skopiować do /var/lib/asterisk/sounds. Następnie w pliku extensions.conf zapisujemy co następuje, przy
czym numer 017123456 jest numerem naszego telefonu komórkowego.
;/etc/asterisk/extensions.conf
[default]
exten
exten
exten
exten
=>
=>
=>
=>
123456,1,Dial(Zap/g1/${EXTEN},30)
123456,2,Playback(przekierowanie)
123456,3,Dial(Zap/g2/017123456,30)
123456,4,VoiceMail(u123456)
Automatyczna serkretarka włączy się dopiero wtedy, gdy nikt nie odbierze telefonu domowego oraz
telefonu komórkowego. W przypadku takiego rozwiązania należy zwrócić uwagę na to, że przekierowanie
na telefon komórkowy związane jest z opłatami, ponieważ następuje ono poprzez nasze własne łącze.
Dlatego telefon komórkowy należy odbierać tylko w przypadku ważnych spraw ;-).
Istnieje dużo innych możliwości korzystania z poczty głosowej, np. Asterisk dostarcza interfejs WWW,
przez który możliwe jest jej odsłuchiwanie. Można także zlecić przesyłanie wiadomości pocztowych w
postaci załącznika pod wskazany adres poczty elektronicznej. Rozwijanie tego tematu wybiegałoby
jednak poza ramy niniejszych warsztatów. 8. Odbieranie faksówPomimo poczty elektronicznej i innych
możliwości komunikowania się, wciąż żywe jest faksowanie. Zwłaszcza w obszarze działalności
gospodarczej, a także w komunikacji z urzędami, posiadanie faksu jest bardzo pomocne.
W przypadku zwykłego łącza opartego na ISDN do dyspozycji mamy trzy numery telefoniczne. Czyż jest
coś prostszego, jak tylko wykorzystanie jednego z nich jako numeru faksu? Asterisk potrafi, dzięki
odpowiedniej łatce, odbierać faksy oraz w ograniczonym zakresie działać jako nadajnik faksów. Dzieje się
tak dzięki emulowaniu faksmodemu. Możliwe jest zatem nawet to, co z technicznego punktu widzenia jest
niemożliwe, czyli faksowanie przez DSL.
Jednak rozwiązanie, o którym mowa (faks przez Asterisk) nie jest w 100% stabilne. Przynajmniej w
przypadku wysyłania faksów w warunkach domowych zalacałbym skorzystanie z innego oprogramowania
np. efax. Dlatego nie będę tutaj bliżej opisywać faksowania.
Aby nauczyć Asterisk odbierania faksów, będziemy potrzebować biblioteki spandsp, której autorem jest
Steve Underwood. Jest ona dostępna tutaj. Następnie powinniśmy pobrać łatę i pliki dla Asterisk z
serwera ftp.soft-switch.org.
Aby ponownie skompilować Asterisk, możemy znowu skorzystać z metody przedstawionej w pierwszej
części artykułu. Jednak tym razem nie uruchomimy skryptu ./install.sh, lecz najpierw skrypt
./downoload.sh. Następnie powinniśmy skopiować pliki z ftp.soft-switch.org do bristuff-0.2.0RC8g/asterisk-1.0.7/apps i w tym katalogu nałożyć łatę wydając polecenie: patch -p0 <
apps_makefile.patch. Na zakończenie w katalogu bristuff należy uruchomić skrypt ./compile.sh.
Aby teraz odebrać faks, wystarczy tylko określić numer, który będzie znany jako numer faksu (np.
123457). Następnie zakładamy katalog /var/spool/asterisk/fax i do pliku extensions.conf wpisujemy:
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57
meritus
;/etc/asterisk/extensions.conf
[default]
exten => 123457,1,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
exten => 123457,2,rxfax(${FAXFILE})
exten => 123457,3,Hangup
Jeśli faks zostanie odebrany, wówczas znajdzie się on w katalogu /var/spool/asterisk/fax jako plik TIF.
Możliwa jest tu dalsza edycja np. za pomocą skryptu cron można zautomatyzować konwersję faksów do
PDF, przesyłanie ich pod wskazany adres pocztowy i / lub automatyczne przesyłanie do drukarki.
Zresztą, tak jak już wcześniej wspomniałem, odbieranie faksów nie musi odbywać się tylko poprzez kartę
ISDN, lecz możliwe jest także poprzez Internet. Warunkiem tego jest jednak skorzystanie z kodeka audio
G.711 (alaw), który należy dodatkowo wskazać w pliku iax.conf. Inne kodeki, pracujące z kompresją,
prowadzą jedynie do tego, że odbierane są śmieci, więc nie można ich stosować z Asterisk.
Tak oto doszliśmy do końca naszego opisu. Z powodu rozległej ilości funkcji mogłem przedstawić jedynie
mały wybór możliwości Asterisk. W następnej części zajmiemy się bliżej budową własnej sieci Asterisk,
wraz z ENUM. Wyjdziemy więc poza właściwy temat niniejszego artykułu, gdyż nowe zagadnienia
dotyczyć będą już raczej obszaru zainteresowań profesjonalistów.
Źródło: 7thguard.net
http://meritus.inteliso.com.pl
Kreator PDF
Utworzono 2 March, 2017, 20:57

Podobne dokumenty