Obecně o Asterisku
Při prezentaci novinek poslední verze mně bylo vytýkáno, že nemyslím na neznalé uživatele nějakým základním popisem, co je Asterisk vlastně zač. Tímto poučen obdařím začátečníky několika větami a jedním odkazem.
Asterisk je open-source framework pro budování komunikačních systémů a aplikací. Asterisk pohání různé pobočkové ústředny, konferenční servery, VoIP Gatewaye a další speciální aplikace. Projekt je sponzorován firmou Digium, která prodává support a komerční produkty.
První verzi dal k dispozici Mark Spencer v roce 1999. Mark Spencer je mimo jiné také původním autorem programu dnes známého pod jménem Pidgin. Pokud si chcete Asterisk vyzkoušet, doporučuji například seriál Pobočková VoIP ústředna Asterisk.
V České republice existují firmy, které poskytují komerční support nebo produkty nad Asteriskem postavené. Jsou to například Canistec, IPEX a další.
Statistika vývoje
Jako obvykle poskytnu i trochu čísel pro milovníky statistik. Pro vydání verze 11 bylo nutné udělat následující práci:
- 118 vývojářů se podílelo na 1554 úpravách přijatých přes issues.asterisk.org
- 82 testerů se podílelo na 238 testech reportovaných problémů
- 280 uživatelů se podílelo na reportování 567 problémů, které byly ve verzi 11 vyřešeny
- 2667 souborů bylo změněno; proběhlo celkem 1239762 přidání a 57186 mazání
Asterisk 11 je takzvaně dlouho podporovaná verze (LTS). Znamená to, že společnost Digium zajistí bezpečnostní opravy této verze až do roku 2016.
Release Series |
Release Type |
Release Date |
Security Fix Only |
EOL |
1.2.X |
21.11.2005 |
7.8.2007 |
21.11.2010 |
|
1.4.X |
LTS |
23.12.2006 |
21.4.2011 |
21.4.2012 |
1.6.0.X |
Standard |
1.10.2008 |
1.5.2010 |
1.10.2010 |
1.6.1.X |
Standard |
27.4.2009 |
1.5.2010 |
27.4.2011 |
1.6.2.X |
Standard |
18.12.2009 |
21.4.2011 |
21.4.2012 |
1.8.X |
LTS |
21.10.2010 |
21.10.2014 |
21.10.2015 |
10.X |
Standard |
15.12.2011 |
15.12.2012 |
15.12.2013 |
11.x |
LTS |
25.10.2012 |
25.10.2016 |
25.10.2017 |
12.x |
Standard |
2013–10 (tentative) |
2014–10 (tentative) |
2015–10 (tentative) |
13.x |
LTS |
2014–10 (tentative) |
2018–10 (tentative) |
2019–10 (tentative) |
Hlavní novinky verze 11
Největší novinkou z hlediska vývoje a přesunu technologií k webu je podpora protokolu WebRTC. Jde je webový standard iniciovaný Googlem, který má umožnit real-time komunikaci v prohlížeči bez nutnosti dalších modulů jako Flash, Java, atd. Více v článku WebRTC: online komunikace bez plug-inů v prohlížeči.
Google koupil společnosti GIPS a On2 technologies a následně zveřejnil audio a videokodeky a další technologie jako AEC (echo cancelator) ve prospěch nového otevřeného webového standardu.
Bohužel ani zveřejnění video kodeku VP8 v projektu WebM k volnému použití nezabránilo společnostem sdruženým v MPEG LA (konkurenční kodek H.264), aby začalo formovat patent pool s cílem zabránit šíření VP8. Toto je nyní prošetřováno.
Z výše uvedených důvodů bohužel zatím stále není jasné, jaké videokodeky budou ve finálním standardu mandatorní. V oblasti audio kodeků to naštěstí vypadá bez problémů a jako mandatorní jsou kodeky G711 a Opus.
WebRTC standard má potenciál umožnit audio/video komunikaci nezávisle na operačním systému nebo zařízení.
Nutnou podmínkou pro fungování WebRTC dle současné specifikace je šifrování hovoru. Primárně pro WebRTC tedy přibyla podpora DTLS-SRTP. DTLS je použito k zabezpečení výměny klíčů v SRTP a je to druhá podporovaná možnost v Asterisku. První možností je TLS, jehož podpora je už ve verzi 1.8.
Další nutností pro fungování WebRTC je podpora technologií, které se vypořádají s NATy a Firewally. To jsou protokoly ICE, STUN a TURN. Podpora pro ně byla implementována do RTP enginu Asterisku.
Pokud si chcete vyzkoušet SIP HTML5 klienta napojeného na Asterisk, doporučuji projekt Sipml5. Konfigurace sip účtu musí vypadat takto:
Sip.conf:
[webuser] type=friend context=from_webuser callerid=webuser <300> host=dynamic call-limit=1 transport=ws,wss,udp avpf=yes encryption=yes secret=tajne_heslo icesupport = yes videosupport=no ; Asterisk zatim nepodporuje VP8!
http.conf:
[general] enabled=yes bindaddr=0.0.0.0
Pozor: Při mém testování s Chrome 23 fungovala signalizace, ale audio nebylo slyšet. Dle vývojářů je to striktnějšími SDP v Chrome a kvůli tomu se špatně domluví správné porty. Budu rád, pokud se podělíte se svými zkušenostmi v diskuzi. Na IRC zazněla věta „WebRTC is moving target“, což je zatím bohužel pravda.
Další menší novinky a úpravy
Aplikace
ConfBridge
-
Do menu byla přidána akce
admin_toggle_mute_participants
, která vypne/zapne umlčení ne-admin účastníků konference.
V případě že tato akce nastane, je možné pomocí konfiguračních direktiv sound_participants_unmuted
a sound_participants_muted
nastavit, jaká se přehraje účastníkům hláška.
-
Další akce
participant_count
umožňuje oznámit v konferenci počet účastníků. -
V profilu uživatele konference je možné nadefinovat, jaká oznámení budou tomuto uživateli přehrávána.
Dial
-
V aplikaci Dial přibyly parametry ‚b‘ a ‚B‘. Ty umožňují spustit Gosub předtím, než bude aplikace Dial spuštěna. To lze z výhodou využít pro přehlednější psaní dialplánu. Další informace a ukázky najdete na wiki.asterisk.org.
MixMonitor
-
Mixmonitor nyní používá unikátní ID, které může být použito k zastavení nahrávání pomocí StopMixMonitor a uvedení ID.
-
Parametr ‚m‘ umožňuje uložit nahrávku do hlasové schránky a použít standardní mechanismy voicemailu pro přehrání této nahrávky.
Fronta ( Queue )
-
Přidány možnosti
autopausebusy
aautopauseunavail
pro automatické zapauzování agenta call centra, pokud jeho zařízení reportuje, že je obsazené nebo odpojené.
Voicemail (hlasová schránka)
-
Přidána aplikace VoiceMailPlayMsg .Tato aplikace umožňuje přehrát konkrétní hlasový vzkaz z hlasové schránky
Funkce
-
Hangup handlers(HH) můžou být „pověšeny“ na běžící hovor pomocí funkce CHANNEL. Hangup handlers se spustí v okamžiku kdy je hovor ukončen podobně jako funguje speciální extenze h . Rozdíl mezi HH a extenzí h je v tom, že HH následují hovor, ať je kdekoliv v dialplánu, a pro své provádění používají GoSub.
-
Pomocí FAXOPT(faxdetect) můžeme zapnout detekci faxu u příchozího hovoru.
-
Přidána funkce PRESENCE_STATE, která umožňuje získat informace o stavu prezence z jakéhokoliv poskytovatele presence.
-
Přidána funkce AMI_CLIENT, která umožňuje kontrolovat stav otevřených relací pro daného uživatele. Využít lze např., pokud v dialplánu chceme generovat nějakou událost pro AMI. Když zjistíme, že daný uživatel není k AMI vůbec přihlášen, událost negenerujeme.
Kanály (Channel Drivers)
chan_motif
-
Vytvořen nový kanál pro podporu Google Talku a Jingle.
Chan_motif
podporuje audio,video, dtmf a také funkce držení hovoru (hold/unhold) a informace o vyzvánění.
Tuto funkcionalitu lze využít pro službu volání do pevných sítí – Google Voice. V České republice bohužel není služba dostupná.
Pro správnou funkce je potřeba zapnout podporu protokolu ICE:
[general] icesupport=yes
Podrobné informace jsou k dispozici na wiki.asterisk.org.
chan_sip
-
Přidána podpora zapnutí/vypnutí nahrávání na základě SIP hlavičky „Record:“
-
Do SIP kanálu přidána podpora udržování spojení přes NAT formou prázdného paketu. Konfigurační direktiva se jmenuje keepalive.
-
Přibyla možnost změny „tónů“ země pomocí volby ‚tonezone‘. Jedná se například o signalizaci obsazovacího tónu. Tyto normy u nás specifikuje ČTÚ (Český Telekomunikační Úřad)
-
Přidána podpora WebSocketů. Jedná se o funkci nutnou pro fungování protokolu WebRTC.
Konfigurační parametr je transport =
ws,wss
Wss je včetně SSL šifrování, ws je bez šifrování.
-
RTP egine nyní podporuje protokol ICE, který usnadňuje komunikaci přes NAT.
AMI (Asterisk Manager Interface)
-
Přidán příkaz SIPpeerstatus, který zobrazí informace o SIP zařízení.
-
U příkazu Hangup je nyní možné použít regulární výraz takže je možné ukončit více běžících hovorů najednou. Může se hodit např. u fraudů.
-
Události z AMI jsou konečně zdokumentovány a automaticky exportovány do wiki na wiki.asterisk.org.
-
Přidán příkaz PresenceState. Tento příkaz zobrazí stav pro daného poskytovatele prezence.
-
Přidán příkaz MessageSend. Pomocí tohoto příkazu můžete posílat jak SIP SIMLE, tak XMPP zprávy přes AMI rozhraní.
Logování
-
Každá událost v logu je nyní označena tzv. „callid“, které je specifické pro daný hovor. Pro daný hovor lze tedy nyní velmi jednoduše vyhledat všechny související hlášky.
-
Velmi příjemnou úpravou je změna úrovně logování.
V případě, že se připojíte pomocí asterisk –r
k běžící instanci, můžete pomocí core set verbose X
, kde X je číslo, měnit úroveň zobrazování hlášek. Pokud se připojí na stejnou instanci kolega v jiném terminálu tak se mu zobrazí stejná úroveň, kterou jste nastavil vy. Toto je ve verzi 11 změněno a nastavená úroveň se týká pouze vašeho připojení.
Dejte si pozor, pokud používáte na příkazy aliasy. Doporučuji přečíst příslušnou sekci v [2].
Resource Moduly
Kalendáře
Do proměnné CALENDAR_SUCCESS se ukládá hodnota 1 v případě, že se pomocí funkceCALENDAR_WRITE
podařilo do kalendáře zapsat.
res_corosync
-
Přibyl nový modul
res_corosync
jako náhrada za res_ais. Modul používá Corosync cluster enginer k vytvoření lokálního clusteru Asterisků. Tento cluster potom může sdílet informace o čekajících hlasových zprávách (MWI) a informace o stavu zařízení (Device State presence information).
res_xmpp
-
Modul je náhrada za předchozí modul
res_jabber
. Z pohledu funkce se nic nemění, přepis byl pouze interní.
Reference
[1] wiki.asterisk.org/wiki/display/AST/New+in+11
[2] wiki.asterisk.org/wiki/display/AST/Upgrading+to+Asterisk+11