Portál AbcLinuxu, 2. května 2025 17:40
Podle předchozích dílů seriálu bychom měli mít zprovozněnu slušně fungující ústřednu disponující i základními "vymoženostmi" jako hlasová schránka nebo konferenční volání. Nyní už jen zbývá ji připojit do veřejné telefonní sítě, aby nám mohl zavolat kdokoli, případně abychom i my mohli volat ven.
Připojení ústředny pomocí primární linky (PRI - E1) je snad nejtypičtějším způsobem vůbec. Tuto možnost připojení nabízí každý solidní poskytovatel telefonních služeb a Asterisk ji proto samozřejmě také podporuje. Bohužel však pro ni potřebujeme hardware - ISDN kartu.
ISDN karet kompatibilních s Asteriskem je na trhu celá řada a leckterá svým výkonem, kvalitou nebo cenou jistě předčí produkty zakladatele Asterisku, společnosti Digium. Před finálním rozhodnutím je třeba, kromě výše zmíněných faktorů, ověřit i hardwarovou kompatibilitu té či oné karty se strojem, který hodláte používat. Ušetříte si tím případné hořké zklamání.
Pokud chceme mít co nejméně problémů, sáhneme po kartě firmy Digium, které jsou Asteriskem přímo podporované. Nejjednodušší řešení představuje single-span karta TE120P, jejíž konfiguraci si právě zde ukážeme. Než kartu vsadíme do ústředny, je třeba nezapomenout a jumperem ji přepnout z režimu T1 (Amerika) do režimu E1 (Evropa).
Low-level konfigurace všech Digium karet předpokládá zavedení jaderného modulu zaptel, který přeložíme spolu s Asteriskem (pro Red Hat i jiné distribuce má Asterisk i startovací skript, který moduly zavede během startu systému) a provádí se v souboru /etc/zaptel.conf:
# E1 Trunk ports span=1,1,0,ccs,hdb3,crc4 bchan=1-15,17-31 dchan=16
Kde řádka span nám říká pořadové číslo E1 linky, příjem hodin, použité kódování rámců a signalizace. Další řádky bchan a dchan určují pozici datových a signalizačních kanálů v rámci E1. Uvedená konfugurace je v podstatě v našich končinách standard, který by měl fungovat u každého poskytovatele (alespoň u Telefóniky funguje).
Než se vrhneme dál, je dobré komunikaci nejdříve otestovat. S jaderným modulem dostaneme i pomocné nástroje ztcfg pro nahrání konfigurace a zttool pro monitoring karet. Karty mají na zadní straně stavové LED diody, a pokud je koncové zařízení poskytovatele připojeno správně (propojovací kablík RJ45 je pro připojení E1 standardem, ale možná budete potřebovat objednat/udělat si překřížený E1 kabel), měl by zmizet žlutý alarm - to je indikováno rozsvícením zelené LED.
Asterisk samotný s kartami Digium komunikuje pomocí modulu chan_zap.so, který se konfiguruje v souboru /etc/asterisk/zapata.conf:
[channels] ; ============== General settings =================== usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes echocancel=yes echotraining=no ; ============== PSTN E1 Trunk channels ============= context=praha callerid=asreceived switchtype=euroisdn ; To to make the EWSD detect the caller ID number correctly pridialplan=unknown prilocaldialplan=unknown signalling=pri_cpe ; Prefix to be added to the outside-calling party unknownprefix=9 group=1 channel => 1-15,17-31
Mezi nejdůležitější nastavení v tomto souboru patří nastavení příjmu a vysílání callerID (můj poskytovatel měl na druhém konci ústřednu EWSD a docela mi trvalo, než jsem toto správně odladil), signalizace a potlačení echa. Kanály v rámci zde neadresujeme jednotlivě, ale všechny najednou pomocí skupiny (group) což zajistí vytvoření tzv. trunku, který dokáže přenést několik hovorů (v našem případě 30) současně. Podrobnější vysvětlení dalších nastavení najde čtenář v ukázkovém souboru zapata.conf, který je součástí Asterisku.
Trunkové připojení ústředny můžeme také s výhodou (není třeba dodatečný hardware) realizovat i VoIP technologií a nejvhodnějším nástrojem se pro tento účel jeví protokol IAX, protože byl (mimo jiné) kvůli tomu i navržen. Takže pokud máte vaši síť chráněnou firewallem s případným překladem adres, pak vězte, že protokol IAX vám ušetří spoustu starostí. Také spousta menších telefonních providerů v ČR tuto možnost připojení již dnes nabízí.
Já bych však osobně pro společnosti, které vyžadují naprosto spolehlivý běh Asterisku se zajištěnou kvalitou přenosu hlasu, použití tohoto protokolu příliš nedoporučoval - a to ze 3 důvodů:
Přesto může být tento typ připojení pro někoho atraktivní, a proto si ho popíšeme. Parametry se konfigurují v souboru iax.conf:
[biggateway] type=peer host=192.168.0.1 context=praha secret=myscret trunk=yes ; Use IAX2 trunking with this host timezone=Europe/Prague ; Set a timezone for the date/time IE
Konfigurace myslím nepotřebuje komentáře. Pro další parametry čtenáře opět odkáži na ukázkový soubor. Bohužel také nemohu dodat žádné jiné podrobnosti nebo úskalí při užití tohoto protokolu, protože jsem doposud neměl tu čest jej pro připojení ústředny použít. Snad reakce čtenářů napoví.
Možnosti volat přes námi čerstvě vytvořené trunkové porty docílíme úpravou číslovacího plánu - uživatelům dáme možnost se pomocí předvolby dostat do PSTN:
[globals] TRUNK=Zap/g1 ; Trunk interface trough Zap group 1 TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0) ;TRUNK=IAX2/biggateway [praha] exten => _9.,1,Dial(${TRUNK}/${EXTEN:1}) ; Press any 7 digit number and try to dial that number through Zap exten => _9.,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION
V sekci globals nám přibyla definice trunkového ISDN portu (definice IAX trunku je zakomentována).
V sekci praha jsem doplnil volání pomocí předvolby. Extenze _9. znamená jakékoli číslo (libovolný počet číslic) začínající devítkou. Použít by se ale dalo i třeba _XXXXXXXXX, což znamená jakékoli devítimístné číslo - v tomto případě byste se ven dostali i bez užití předvolby. Volba Dial(${TRUNK}/${EXTEN:1}) zajistí volání daného čísla za užití námi předdefinovaného trunkového portu s tím, že od volaného čísla se ubere první číslice (tedy předvolba, v našem případě devítka).
Poznámka:
Při tvorbě číslovacího plánu musíme (a tuto povinnost nám ukládá zákon o telekomunikačních službách) dbát na to, aby byla zajištěna možnost volání nouzových čísel (150, 158 a jiné). Vždy si proto ověřte, že tato možnost zůstává zachována. Zvídavý čtenář snadno uhádne, že volání ven bez předvolby pomocí zkratky _XXXXXXXXX by tuto možnost nezachovalo.
Jako poslední příklad si ukážeme možnost připojení analogového telefonu či faxu. Ne každému se totiž hned chce měnit všechny telefony ve firmě za SIP telefony a staré analogové vyhodit - v této ukázce si ukážeme, jak je k Asterisku připojit.
Poznámka:
Tuto možnost využijeme i pro připojení faxu. I když samotní vývojáři pokládají tuto možnost z hlediska spolehlivosti za problematickou, já jsem zatím na žádný problém nenarazil. Také nutno říci, že jsem dosud neobjevil žádný SIP fax - možná, že čtenáři článku něco doporučí...
Podobně jako v případě připojení ISDN linky, i zde samozřejmě potřebujeme HW kartu, ke které lze telefon připojit. Těch je na trhu snad ještě více než ISDN karet, ale pro jednoduchost se zde soustředím jen na jedinou - kartu Digium TDM400P. Tato karta má možnost připojení až 4 analogových FXO/FXS linek. Pro připojení analogového koncového zařízení ji objednáme s moduly FXS.
Podobně jako ISDN karta, i tato karta ke své nízkoúrovňové konfiguraci užívá ovladače zaptel. Konfiguraci proto provedeme v souboru /etc/zaptel.conf:
# TDM ports for analogue phones fxoks=32-35 loadzone=cz defaultzone=cz
Řádek fxoks nám říká typ použité signalizace (FXO) a protokolu (Koolstart) pro všechny čtyři linky. Pomocí loadzone/defaultzone jen definujeme typ oznamovacího tónu. Všimněte si, že čísla kanálů naší analogové karty začínají na 32 - to proto, že prvních 31 kanálů zabrala naše ISDN karta.
Poznámka:
Tedy neumíte si představit mé nadšení, když jsem takto poprvé připojil klasický starý analogový telefon do počítače, zdvihl sluchátko a ozvalo se to klasické české tú, tu tú. Panebože, říkal jsem si tehdá, ono to opravdu telefonuje!
Obdobně v asterisku nakonfigurujeme linky v souboru zapata.conf:
;=============== TDM analogue channels =============== context=praha cidsignalling=dtmf signalling=fxo_ks callerid="Standa" <47> channel => 32
Opět myslím nepotřebuje komentář. Zbývá jen úprava číslovacího plánu:
[praha] exten => 47,1,Dial(Zap/32,10)
Takže jednu linku jsem zařídil Standovi, který je teď dostupný na čísle 47.
Pokud jsme s konfigurací hotovi, můžeme to otestovat. Po restartu Asterisku by měla ožít ISDN karta a systém by měl začít resetovat kanály ISDN (což vidíme na konzoli). Po vytočení devítky následované nějakým číslem bychom měli dostat vyzváněcí tón a posléze být spojeni s účastníkem. Podobně i externí účastníci by se nám měli pomocí předvolby, kterou nám náš poskytovatel určil, dovolat.
V tomto posledním dílu seriálu jsme naši snahu dovršili obohacením naší ústředny o možnost připojení analogových telefonů a nakonec i připojením ústředny k veřejné telefonní síti, takže už nám kdokoli může normálně zavolat, a stejně tak i my získáváme podobnou možnost. Co tedy dodat? Nechť naše ústředna funguje bez problémů a navěky.
Je to zkrátka stejné jako s motherboardy Via Epia - potenciálně skvělý hardware znehodnocuje neexistence kvalitních ovladačů.
Pouzijte libovolnou, certifikovanou, pro Asterisk. Mame zkusenosti (v abecednim poradi) s nasledujicimi vyrobci a vsechny karty funguji dobre.
- beronet
- junghanns.net
- sangoma
Samozrejme trochu zalezi na tom, je-li tam karta sama nebo v kombinaci a pokud ano, tak s cim.
Tak PRI je saamozřejmě dělaná na větší zátež a taky si dovedu představit, že cena SIPu bude někde jinde - otázka je, jak je to se spolehlivostí. Jinak podle mých znalostí na PRI neběží SS7 (které Asterisk mimochodem moc nerozumí) ale channel associated signalling (CAS). Inu, Asterisk je pěkná věc, ale jako ústředna velkého poskytovatele telefonních služeb se to moc nehodí....Pane kolego dovoluji si s Vašim tvrzením trošku nesouhlasit.PRI je označení linky ISDN 30B+D která není signalizací CAS jak píšete,ale CCS a běží na ní protokol DSS1.CASka je uplně jiný typ signalizace.Tak jen tak pro upřesnění
A co kdybych propojil 2 Asterisky mezi sebou ne pres IAX, ale pres SIP. Jak by se to provedlo?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.