abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 23:44 | Nová verze

Google Chrome 95 byl prohlášen za stabilní. Nejnovější stabilní verze 95.0.4638.54 přináší řadu oprav a vylepšení (YouTube). Opraveno bylo 19 bezpečnostních chyb. Za nalezení nejvážnější z nich bylo vyplaceno 20 000 dolarů. Vylepšeny byly také nástroje pro vývojáře (YouTube).

Ladislav Hagara | Komentářů: 0
včera 21:00 | IT novinky

Google představil telefony Pixel 6 a Pixel 6 Pro. Předobjednat je lze za 599 a 899 dolarů. Z Česka a ze Slovenska zatím stále ne.

Ladislav Hagara | Komentářů: 5
včera 20:33 | Nová verze

Julius je open source reimplementace počítačové hry Caesar III. Vydána byla verze 1.7.0. Julius potřebuje ke spuštění originální média Caesar III. Lze zakoupit na GOG.com nebo na Steamu.

Ladislav Hagara | Komentářů: 1
včera 12:44 | IT novinky

Apple představil nové MacBooky Pro s novými vlastními čipy M1 Pro a M1 Max. Nejvýkonnější M1 Max má na sobě 10 CPU jader a 32 GPU jader. Vývojáři Asahi Linuxu si díky podpoře na Patreonu nové MacBooky Pro již objednali.

Ladislav Hagara | Komentářů: 28
včera 11:44 | IT novinky

Rodina produktů Raspberry Pi se rozrostla o rozšiřující desku Raspberry Pi Build HAT umožňující propojit Raspberry Pi s motory a senzory LEGO Technic z portfolia LEGO Education SPIKE. Současně byl představen 48W napájecí zdroj pro Raspberry Pi Build HAT a knihovna pro Python Build HAT.

Ladislav Hagara | Komentářů: 0
18.10. 18:33 | Nová verze

VKD3D-Proton byl vydán ve verzi 2.5. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan.

Ladislav Hagara | Komentářů: 1
18.10. 17:11 | Nová verze

Rozšíření GNOME Shellu Dash to Dock bylo po roce vydáno v nové verzi 70. Přidána byla podpora GNOME Shellu 40.

Ladislav Hagara | Komentářů: 0
18.10. 07:00 | Zajímavý software

L0phtCrack (Wikipedie), nástroj pro auditování a obnovu hesel v Microsoft Windows, je nově open source. Zdrojové kódy nejnovější verze 7.2.0 byly zveřejněny na GitLabu.

Ladislav Hagara | Komentářů: 4
15.10. 21:44 | IT novinky

V dubnu letošního roku byla hodnota Bitcoinu, decentralizované kryptoměny téměř 65 000 dolarů. V červnu hodnota klesla pod 30 000 dolarů. Aktuálně opět překonala 60 000 dolarů.

Ladislav Hagara | Komentářů: 51
15.10. 16:00 | Nová verze

Společnost PINE64 stojící za telefonem PinePhone, notebooky Pinebook a Pinebook Pro, IP kamerou PineCube, hodinkami PineTime, páječkou (pájecím perem) Pinecil, zdroji PinePower nebo RISC-V vývojovou deskou PineCone publikovala na svém blogu říjnový souhrn novinek (YouTube) a představila nový vylepšený PinePhone Pro.

Ladislav Hagara | Komentářů: 25
Kolik monitorů (obrazovek) používáte současně?
 (49%)
 (36%)
 (14%)
 (1%)
Celkem 375 hlasů
 Komentářů: 29, poslední včera 07:04
Rozcestník



Asterisk a kalendáře

15. 12. 2009 | Marek Červenka | Návody | 5236×

Nově připravovaná verze VoIP ústředny a komunikačního řešení Asterisk podporuje integraci s kalendáři. Myšlenkou celého systému je automatické chování linky podle kalendáře uživatele. V případě, že v kalendáři máme nastavenou schůzku, tak telefon automaticky spojuje volajícího do voicemailu nebo mu pomocí systému text to speech přeříká informaci z kalendáře. Různých schémat, která určují, co se s linkou může dít, je mnohem více a tyto možnosti nastíníme v dalším textu.

Obsah

V současných ústřednách jsou typické možnosti nastavení přesměrování linky. K tomu uživatel musí buď znát volby, jak přesměrování nastavit, např. *72, nebo se přihlásit do webového rozhraní ústředny a nastavit přesměrování tam. Pro některé uživatele tedy může být mnohem přirozenější „řízení“ linky kalendářem.

Základní vlastnosti kalendářového modulu:

  • dotazování stavu dostupnosti
  • dotazování na naplánované události
  • zapisování událostí (příchozí hovor)
  • notifikace naplánované události

Kalendářový modul se skládá z několika částí. Jednotlivé části podporují různé kalendářové API a systémy. Soubory jsou ve zdrojových kódech uloženy v adresáři asterisk/res.

  • res_calendar – obecné API
  • res_calendar_icalendar – podpora souborů .ics
  • res_calendar_caldav – podpora protokolu CalDAV
    • Google calendar, Zimbra, Apple Calendar Server
  • res_calendar_exchange – podpora Exchange 2003

Díky podpoře většiny kalendářových API bylo nutné použít knihovny, které tyto API implementují. Tyto knihovny jsou nutné ke kompilaci kalendářového modulu:

  • neon – HTTP a WebDAV knihovna s rozhraním pro jazyk C
  • libical – podpora datového typu .iCalendar
  • iksemel – knihovna pro parsování XML

Konfigurace

link

Nyní přejděme k praktické konfiguraci a ukázkám fungování. Přeskočíme sekci kompilace projektu Asterisk, protože na toto téma existuje na internetu dokumentace. Kalendářové funkce jsou zatím dostupné pouze ve vývojové verzi.

Konfigurační soubor se jmenuje calendar.conf. Jednotlivé kalendáře definujeme pomocí sekce např.:

[kalendar1]
type 			; typ kalendáře (ical, caldav, exchange)
url 			; url na sdílený kalendář
user 			; uživatelské jméno
secret 			; uživatelské heslo ke kalendáři
refresh 		; obnovování kalendáře v sekundách
timeframe 		; počet minut v kalendáři,
			; které se mají projít při každé obnově kalendáře
autoreminder = 10 	; oznámení nezávislé na nastavení v kalendáři
waittime = 30 		; jak dlouho čekat na zvednutí hovoru

channel = SIP/60001 	; volaný telefon
context = default 	; v jakém kontextu začít hovor
extension = 123 	; na jakou linku se zkusit spojit při zvednutí hovoru
; nebo (nelze obě možnosti zároveň):
app = Playback 		; aplikace, která se spustí při zvednutí kanálu
appdata = tt-weasels 	; parametr aplikace (v tomto případě soubor,
			; který se má přehrát)

Funkce

link
  • CALENDAR_EVENT(<field>)
  • CALENDAR_BUSY
  • CALENDAR_QUERY
  • CALENDAR_QUERY_RESULT
  • CALENDAR_WRITE

CALENDAR_EVENT(<field>)

Tato funkce nám umožní získat informace z kalendáře. Data potom můžeme například přeříkat volajícímu nebo použít k dalšímu řízení hovoru.

summary     : název události nebo předmět v MS Exchange 
description : popis události
organizer   : organizátor události
location    : místo události 
calendar    : název kalendáře
uid         : ID události
start       : datum začátku události
end         : datum konce události
busystate   : stavy 0=FREE, 1=TENTATIVE, 2=BUSY 

CALENDAR_BUSY

Funkce slouží k dotazování na status kalendáře. Vrací 0, pokud je uživatel k dispozici, nebo 1, pokud má naplánovanou nějakou činnost.

Příklad 1

link

Pokud je uživatel k dispozici, je hovor směrován na jeho telefon. Pokud k dispozici není, je hovor přesměrován do hlasové schránky.

exten => 123,1,GotoIf(${CALENDAR_BUSY(muj_kalendar)},busy,available)
exten => 123,n(available),Macro(dial-exten,${EXTEN})
exten => 123,n,Hangup
exten => 123,n(busy),Voicemail(${EXTEN}@default,u)

CALENDAR_QUERYCALENDAR_QUERY_RESULT

Dotaz na události v kalendáři v definovaném časovém období. Vrací ID, které je pak možné použít s funkcí CALENDAR_QUERY_RESULT pro procházení jednotlivých událostí.

Příklad 2

link

Zobrazí v konzoli Asteriska informace o naplánované události.

exten => s,1,Set(id=${CALENDAR_QUERY(muj_kalendar,${EPOCH},${EPOCH})})
exten => s,n,NoOp(Summary: ${CALENDAR_QUERY_RESULT(${id},summary)})
exten => s,n,NoOp(Description: ${CALENDAR_QUERY_RESULT($ {id}, description)})
exten => s,n,NoOp(Location: ${CALENDAR_QUERY_RESULT(${id},location)})

Příklad 3

link

Na dalším složitějším příkladu si ukážeme, jak si po telefonu poslechnout*, co máme v kalendáři naplánováno.

[internal]
;Zvednutí hovoru
exten => 1337,1,Answer

;Dotaz na kalendář. Parametr specifikuje časové období
exten => 1337,n,Set(id=${CALENDAR_QUERY(mycal,${EPOCH},$[${EPOCH}+24*60*60])})

;Počet položek
exten => 1337,n,Set(num=${CALENDAR_QUERY_RESULT(${id},getnum)})
exten => 1337,n,Set(i=1)

;Oznamení, že následuje přeříkání událostí z kalendáře na dalších 24 hodin
exten => 1337,n,SayText(Your schedule for the next 24 hours is as follows)

;smyčka
exten => 1337,n,While($[${i} <= ${num}])
exten => 1337,n,Playback(from)
exten => 1337,n,SayUnixTime(${CALENDAR_QUERY_RESULT(${id},start,${i})},,Q 'digits/at' IMp)
exten => 1337,n,SayText(until)
exten => 1337,n,SayUnixTime(${CALENDAR_QUERY_RESULT(${id},end,${i})},,IMp)

;položka v kalendáři
exten => 1337,n,SayText(${CALENDAR_QUERY_RESULT(${id},summary,${i})})
exten => 1337,n,Set(i=$[${i} + 1])
exten => 1337,n,EndWhile

* v současné době není k dispozici jednoduše využitelný a použitelný Text-to-Speech systém pro češtinu.

Příklad 4

link

Další prakticky velmi dobře použitelný příklad je automatické svolání telefonické konference. V domluveném čase automaticky Asterisk obvolá účastníky konference a po zvednutí hovoru je do konference spojí.

Definice kalendáře obsahující konferenci:

[mycal]
type=caldav
url=https://www.google.com/calendar/dav/user@domain.com/events/
user=user@domain.com
secret=mysecret
refresh=15
timeframe=1440
channel=Local/calevent@calendar
app=NoOp

Dialplán v extensions.conf:

[calendar]
;zjistím účastníky
exten => calevent,1,Set(attendees=${CALENDAR_EVENT(attendees)})

;dokud není seznam účastníku prázdný tak pracuju ve smyčce
exten => calevent,n,While($["${SET(var=${SHIFT(attendees)})}" != ""])

;zjistím telefonní číslo účastníka
exten => calevent,n,Set(xtn=${DB(lookup/${var:7})})

;zavolám účastníka a spojím do konference
exten => calevent,n,Originate(Local/${xtn},app,ConfBridge,1234)
exten => calevent,n,EndWhile

CALENDAR_WRITE

Příklad 5

link

Na posledním příkladu si ukážeme, jak je možné využít funkci zápisu do kalendáře. Použijeme ji k zápisu záznamu o hovoru. Zpětně se poté můžeme v kalendáři podívat, kdy nám kdo volal.

[internal]
exten => _6XXX,1,Set(start=${EPOCH})

;hovor na naši linku
exten => _6XXX,n,Dial(SIP/${EXTEN})
exten => h,1,Set(end=${EPOCH})

;po skončení hovoru uložíme informaci
exten => h,n,Set(CALENDAR_WRITE(mycal,summary,start,end)= \
Call from ${CALLERID(all)},${start},${end})

Závěr

link

Kalendářový modul je již dnes použitelný a může pro určitou cílovou skupinu znamenat jednodušší a přirozenější řízení jejich telefonní linky, než je nastavování přesměrování pomocí kódu. V současné době modulu ještě chybí podpora novějších verzí MS Exchange. Pokud byste byli ochotní sponzorovat podporu chybějících funkcí, tak přímý kontakt na vývojáře je: Terry Wilson <twilson@digium.com>, popř. zprostředkovaně Marek Červenka <cervajs@freevoice.cz>.

       

Hodnocení: 100 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

15.12.2009 12:28 Marek
Rozbalit Rozbalit vše Re: Asterisk a kalendáře
Snad text to speech, ne?
ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.