České vysoké učení technické v Praze Fakulta elektrotechnická
Bakalářský projekt
Jednotné rozhraní pro telefonii a messaging Jan Vystrčil
Vedoucí práce: Mgr. Martin Čmejrek
Studijní program: Elektrotechnika a informatika Obor: Informatika a výpočetní technika květen 2006
ii
Poděkování Úvodem této práce děkuji svému vedoucímu práce panu Mgr. Martinu Čmejrkovi za všestrannou pomoc při řešení celého úkolu.
iii
iv
Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne 23.5. 2006 . . . . . . . . . . . . . . . . . . . . . . . .
v
vi
Abstract This work deals with the unification of the wide range of various communication services for telephony, messaging and file transfer. The topic is studied also for noninternet environment. The text summarizes the advantages of unified access and possible problems that are linked with the process of unification, and provides promising concepts of solutions.
Abstrakt Tato práce se zabývá možnostmi sjednocení různých komunikačních služeb pro telefonii, messaging a přenos souborů, které je řešeno nejen v rámci prostředí internetu. Text shrnuje výhody jednotného přístupu i možné problémy při sjednocování jednotlivých služeb a předkládá návrhy na řešení dané problematiky.
vii
viii
Obsah 1. 2.
Úvod ............................................................................................................................... 1 Popis problému ................................................................................................................ 2 2.1. Současná situace...................................................................................................... 2 2.2. Výhody sjednocování komunikačních služeb ........................................................... 2 3. Komunikační služby ........................................................................................................ 4 3.1. Přehled často používaných služeb ............................................................................ 4 3.2. Parametry služeb ..................................................................................................... 6 3.3. Vzájemné stavy komunikačních služeb .................................................................... 8 4. Kancelářský asistent ........................................................................................................ 9 4.1. Základní struktura systému ...................................................................................... 9 4.2. Office Assistent a jeho komponenty......................................................................... 9 4.3. Uživatelské funkce Office Assistentu..................................................................... 11 4.4. API ....................................................................................................................... 13 4.5. Pluginy.................................................................................................................. 13 5. Uživatelské scénáře........................................................................................................ 14 5.1. Využití všech dostupných způsobů pro předání důležité informace ........................ 14 5.2. Přenos souboru jakýmkoliv způsobem ................................................................... 14 5.3. Finanční úspora přednostním využíváním internetové telefonie.............................. 15 5.4. Automatický výběr vhodné služby pro uskutečnění hovoru.................................... 16 5.5. Urychlení a usnadnění komunikace........................................................................ 17 6. Návrh jednotného API ................................................................................................... 18 6.1. Vnitřní struktura API ............................................................................................. 18 6.2. Další požadavky na API ........................................................................................ 19 6.3. Přehled metod API ................................................................................................ 19 7. Ukázková aplikace......................................................................................................... 21 7.1. Třídy ..................................................................................................................... 21 7.2. Funkčnost aplikace ................................................................................................ 24 8. Závěr ............................................................................................................................. 25 9. Seznam literatury........................................................................................................... 27 A Seznam použitých zkratek.............................................................................................. 29 B Přehled vlastností komunikačních služeb ....................................................................... 31 B.1......................................................................................................................................... 31 B.2......................................................................................................................................... 33 B.3......................................................................................................................................... 35 C UML – schémata systému OA........................................................................................ 37 C.1 Celkové schéma systému ........................................................................................... 37 C.2 Schéma části Service Management ............................................................................ 39 C.3 Schéma komunikačních objektů................................................................................. 41 C.4 Schéma seznamu kontaktů ......................................................................................... 41 C.5 Schéma části Media Activation Service...................................................................... 43 D UML – sekvenční diagramy ........................................................................................... 45 D.1 Sekvenční diagram voiceCall..................................................................................... 45 D.2 Sekvenční diagram fileTransfer ................................................................................. 47 D.3 Sekvenční diagram message....................................................................................... 49 D.4 Sekvenční diagram tryAll .......................................................................................... 51 E Obsah přiloženého CD ................................................................................................... 53
ix
x
Seznam obrázků Obrázek 4.1: Vlevo je zjednodušený uživatelský pohled, vpravo je znázorněna základní struktura celého sytému............................................................... 9 Obrázek 4.2: Podrobnější schéma části Office Assistent.................................
xi
10
xii
0
1
1. Úvod Komunikace mezi lidmi byla vždy velice důležitá. V průběhu mnoha staletí přešla civilizace od hliněných destiček přes Morseovu abecedu, rádiové spojení a běžný dopisní papír až do věku internetu a mobilní komunikace. Dnes se již jen těžko dá rozeznat, zda osoba, se kterou právě telefonujete, sedí ve vedlejší místnosti, nebo třeba v Austrálii. Mezi vámi a druhou osobou je jen nepřetržitý proud jedniček a nul. V posledních letech se objevila řada způsobů jak komunikovat po celém světě jen za minimální náklady. Na jedné straně nám tento stav dává možnost výběru služby, která je nejvhodnější pro naše účely, na straně druhé se pomalu, ale jistě začínáme stávat otroky mnoha blikajících okének, pípajících programů a zvonících krabiček. Žádná komunikační služba není všemocná, a tak nás okolnosti často nutí používat několik způsobů komunikace současně. Každý člověk je jiný a má také jiné nároky na používané komunikační služby.
2
2. Popis problému Jednou z možností jak zpřehlednit komunikační džungli je pokusit se sjednotit všechny potřebné komunikační služby. Optimálním řešením celé situace je tedy vytvoření systému, který dokáže jednotným způsobem sloučit všechny potřebné služby do jedné aplikace.
2.1. Současná situace Možnost sloučit všechny naše oblíbené komunikační služby pomocí jednoho programu zatím víceméně neexistuje. Slučovat se částečně dají například některé služby pro instant messaging,1 ale neumožňují připojení hlasových služeb. Některé ústředny2 zase umí rozhodnout, zda volané číslo má být vytočeno pomocí pevné telefonní linky nebo GSM3 sítě, tak aby náklady na hovor byly nejnižší. Zase se ovšem jedná jen o sloučení hlasových služeb.
2.2. Výhody sjednocování komunikačních služeb Základní otázkou je, zda má sjednocení komunikačních služeb nějaké výhody a zda má cenu se sjednocováním vůbec zabývat. Odpovědí je, že výhod je celá řada. Od úspor finančních přes úspory času až po zvýšení efektivity naší práce. 2.2.1. Finanční úspora a úspora času Mnoho komunikačních služeb na internetu nám umožňuje telefonování či posílání textových zpráv zcela zdarma. Na druhé straně potom stojí běžní poskytovatelé komunikačních služeb, kteří si za své služby účtují často až neúměrně vysoké poplatky. Máme–li zájem snížit svoje náklady na komunikaci, musíme se snažit co nejvíce využívat bezplatné komunikační kanály. Běžně tedy zkoušíme v první řadě internetovou telefonii a není–li spojení úspěšné, voláme např. na mobilní telefon. Jsme tímto nuceni několikrát se pokoušet o spojení s volanou osobou, což způsobuje zbytečné časové ztráty. Jednotný komunikační systém nám umožní maximálně využít bezplatné komunikace bez výrazné ztráty času. 2.2.2. Zpřehlednění kontaktů Většina komunikačních aplikací umožňuje uložení kontaktů na jiné osoby, ale struktura dat je v každé aplikaci i komunikačním systému jiná a tak vzájemné sdílení a synchronizace kontaktů mezi jednotlivými aplikacemi nejsou většinou možné. Je tedy pouze na uživateli, zda si ve svých kontaktech udrží pořádek a pozná zda Novák Petr v mobilním telefonu je, či není stejná osoba jako PNovak na Skype. Jednotný komunikační systém umožní mít jeden seznam kontaktů pro všechny komunikační služby, a tak v něm snadno udržet přehled a pořádek.
1
Podporují to např. programy Miranda IM, Trilian, apod. tzv. GSM brány 3 Global System for Mobile Communications 2
3
2.2.3. Sjednocení historie Instant messagingové služby běžně nabízejí uchovávání historie. Pro někoho to může být nežádoucí, ale většinou oceníme možnost vrátit se ke starším informacím.4 Každá aplikace má svůj formát ukládání historie a tak musíme často hledat na několika místech abychom získali hledanou informaci. Použijeme – li jednotný komunikační systém, můžeme mít jednu historii, ve které snadno nalezneme vše potřebné.
4
Nejčastěji se jedná o URL adresy, telefonní čísla, apod.
4
3. Komunikační služby Aby bylo možné navrhnout systém pracující s mnoha komunikačními službami současně, je nutné projít jednotlivé služby, zjistit jejich výhody a nevýhody, porovnat společné i rozdílné vlastnosti. O každé službě by bylo možné napsat několik knih, proto jsem se zaměřil na nejdůležitější vlastnosti a rysy.
3.1. Přehled často používaných služeb Vytvořit přehled všech existujících komunikačních služeb není cílem práce, proto uvedu příklad jen několika služeb, které jsou celosvětově rozšířené a má význam se zabývat jejich implementací do OA. 3.1.1. Land Line Běžná telefonní linka označovaná často zkratkou PSTN5 je již dnes často nahrazena alternativou v podobě VoIP6 telefonie, ale stále je značně rozšířená a má nadále smysl podporovat její využití v komunikačním sytému. Kromě telefonního hovoru můžeme linku použít např. pro posílání faxů. V závislosti na službách poskytovatele je možné přes pevnou linku posílat také krátké textové zprávy SMS7. Pro použití pevné linky s počítačem je nutno mít v počítači nainstalovaný modem. 3.1.2. Cell Phone Mobilní telefony pracující dnes převážně na standardu GSM není třeba dlouze představovat. Kromě přenosu hlasu poskytují službu posílání krátkých textových zpráv SMS a případně multimediálních zpráv MMS8. Pomocí bluetooth9 je možné telefon připojit k počítači a využít k telefonování audio systém počítače. 3.1.3. UMTS10 phone V zásadě se jedná o mobilní telefon podporující technologii vysokorychlostního přenosu dat UMTS. Přenosová rychlost může být až 2 Mbit/s a kromě běžného volání je možné uskutečnit například videohovor. Rozšíření UMTS telefonů zatím není ovšem příliš vysoké. 3.1.4. SIP11 phone SIP je signalizační protokol sloužící k sestavení, modifikaci a ukončení spojení mezi dvěma a více účastníky. Spojení může představovat obecně jakýkoliv multimediální přenos, v praxi je ale SIP nejčastěji využíván pro telefonování po IP síti. [11] Telefon pracující s tímto protokolem může být buď hardwarové zařízení podobné běžnému telefonu, nebo se může jednat o softwarovou aplikaci. Řada vlastností je závislá na
5
Public Switched Telephone Network Voice over IP - telefonování přes IP síť. 7 Short Message Service 8 Multimedia Message Service 9 Technologie pro krátkodosahové rádiové spojení drobné elektroniky 10 Universal Mobile Telecommunications System 11 Session Initiation Protocol 6
5
konkrétním poskytovateli VoIP služeb. Za určitých okolností se může vyskytnout problém s připojením za firewallem nebo překladem adres NAT12. 3.1.5. Skype Oblíbený program pro bezplatné telefonování a posílání zpráv po internetu. Komunikace je možná pouze s programem Skype, který musí být na počítači vždy instalován. Velkou předností této služby je snadný průchod přes firewally a překlady adres NAT, takže je možné ho použít téměř odkudkoliv. Aby síť Skype bylo možné využít jinými programy, je implementováno tzv. Skype API, přes které je možné klientskou aplikaci ovládat. Od půlky roku 2005 patří Skype společnosti e-Bay. 3.1.6. ICQ Oblíbená a v ČR pravděpodobně nejrozšířenější instant messagingová služba, vyvinutá společností Mirabilis. Kromě posílání textových zpráv služba umožňuje posílat soubory nebo uskutečnit telefonní hovor. Je možné použít klientské aplikace alternativní k aplikaci distribuované společností ICQ. 3.1.7. E-mail Elektronická pošta patří mezi nejstarší a zároveň nejrozšířenější komunikační služby internetu. Komunikace pomocí e-mailu není sice příliš interaktivní, na druhou stranu je ale mnohem přehlednější pro posílání rozsáhlejších zpráv. Přenos souborů je možné realizovat jako přílohu e-mailové zprávy. 3.1.8. Jabber Open source protokol pro messaging v reálném čase. Přenáší se proud dat ve formátu XML13 a celý protokol byl nazván XMPP14. Systém je decentralizovaný a kdokoliv si může zřídit vlastní Jabber server. 3.1.9. Google Talk Komunikační služba provozovaná společností Google, pracující také na protokolu XMPP. Službu je možné využít pro volání a pro posílání textových zpráv. Oficiální klientská aplikace je velmi jednoduchá a přehledná. Pro přihlášení je nutné mít zřízen uživatelský účet na www.gmail.com. Pro chatování je možné využít také webové rozhraní gmail.com. 3.1.10. Další služby Další známe služby pro instant messaging jsou např. IRC, MSN Messenger, AOL, Yahoo! Messenger. Mezi služby pro volaní přes internet můžeme kromě výše uvedených zařadit také služby provozované na protokolech IAX15 a H.323. Zajímavostí je rakouská služba Jajah, která si kladla za cíl konkurovat Skype, ovšem v současné době
12
Network Address Translation Extensible Markup Language 14 Extensible Messaging and Presence Protocol 15 Inter-Asterisk eXchange protocol 13
6
je vývoj pravděpodobně pozastaven. Na internetu jsou ke stažení aplikace Jajah beta, síť je funkční, ale oficiální stránky společnosti v současné době mlčí.
3.2. Parametry služeb Komunikační služby mají vzájemně často velmi rozdílné vlastnosti, a tak je nutné stanovit určitá kritéria, podle kterých jednotlivé služby můžeme rozdělit. Některá kritéria nejsou pro určité služby relevantní, ale jedná se o všeobecný přehled možných hodnotících kritérií. Tabulka s přehledem služeb a jejich vlastností je v příloze B. Původně jsem služby rozdělil podle základního typu na hlasové, textové, přenosy souborů a videohovory. Považoval je za oddělené kategorie. Služby umožňující jak textovou, tak hlasovou komunikaci jsem zahrnoval do obou kategorií. Jelikož je řada vlastností sdílených mezi textovou a hlasovou částí služby, jevila se následně jako lepší volba sloučení kategorií služeb a rozšíření množiny hodnotících kritérií. Ani tento přístup není ovšem optimální. Na službu, která podporuje více druhů komunikace tak musíme nahlížet jako na jednu službu i jako na několik služeb elementárního charakteru. 3.2.1. Username Uživatelské jméno jednoznačně reprezentuje naší osobu v rámci jedné komunikační služby, resp. v rámci části komunikačního prostoru16. Podle telefonního čísla např. víme, jaké osobě voláme a podle e-mailové adresy zase zjistíme, kdo nám posílá e-mail. Číslo 224517231 může být pražským telefonním číslem, uživatelským číslem ICQ či jménem Skype. Smysl má tedy pro nás jen v případě, že víme do jaké části komunikačního prostoru jej zařadit. Často je uživatelské jméno stejné jako přihlašovací login, ale není to pravidlem. 3.2.2. Login and password Téměř všechny komunikační služby vyžadují autentizaci uživatele před použitím dané služby. K tomu slouží přihlašovací jméno a heslo. Login je buď číselný (ICQ), nebo alfanumerický (Skype), případně může mít jakousi hardwarovou podobu (SIM karta v mobilním telefonu). Běžná pevná telefonní linka žádnou autentizaci neumožňuje, a tak se u ní s uživatelským jménem nesetkáme. Přihlašovací heslo je většinou alfanumerické, ale může být jen číselné jako např. PIN mobilního telefonu. 3.2.3. Compatible services Služby, které jsou kompatibilní s danou službou v rámci části komunikačního prostoru. Například mobilní telefon je kompatibilní s pevnou telefonní linkou a může být za určitých podmínek17 kompatibilní se Skype či internetovým telefonem pracujícím například přes protokol SIP. 3.2.4. Client applications Pro některé služby je mnoho dostupných aplikací schopných využívat dané služby, některé služby umožňují použít pouze aplikaci distribuovanou poskytovatelem služby.
16 17
Například ve veřejné telefonní síti Předplatili jsme si u poskytovatele službu Skype In nebo Skype Out
7
Např. síť Skype je možné použít jen s klientem Skype. Není tedy možné použít alternativní aplikaci. 3.2.5. Protocol Komunikační protokol použitý v dané službě a jeho vlastnosti. Bitová či textová orientace, standardizace protokolu apod. Služba může mít vyhrazený nějaký síťový port, na kterém probíhá komunikace. 3.2.6. Service price and Price plan Služba může být zpoplatněná (mobilní telefon) nebo zdarma (Google Talk). Často jsou zpoplatněná jen volání do veřejné telefonní sítě a volání v rámci internetu jsou zdarma (Skype). Je proto vhodné znát celý ceník služeb, který slouží jako kritérium výběru mezi službami. 3.2.7. Presence awareness Možnost zjistit aktuální dostupnost kontaktované osoby. Stav (status) je nejčastěji výběr z několika možností, daných poskytovatelem. Kromě stavu online a offline jsou to další stavy specifické pro každou službu. Další možností je stav dostupnosti definovaný uživatelem, který může vyjádřit momentální situaci přesněji, než standardně definované stavy. 3.2.8. Contact list Pokud je seznam kontaktů uložen jen v počítači uživatele, po instalaci aplikace na jiný počítač nebudou kontakty na novém počítači dostupné. Seznam kontaktů může být uložen také jak v počítači uživatele tak i na serveru poskytovatele. Po instalaci aplikace na jiný počítač jsou kontakty patřící k danému uživatelskému účtu staženy do nově instalované aplikace. 3.2.9. Voice calls U služeb podporujících hlasové přenosy nás především zajímají následující vlastnosti. Možnost uskutečnit a přijmout telefonní hovor a možnost uskutečnit konferenční hovor. Při použití internetové telefonie na málo kapacitní lince totiž může docházet k výpadkům a ztrátě kvality hovoru. Pevná linka má naopak kvalitu hovoru konstantní. Proto je užitečné znát předpokládanou kvalitu telefonního hovoru. Důležitá je schopnost registrovat zmeškané hovory, pokud je daná služba ve stavu online nebo i ve stavu offline. Některé služby umožňují nahrávat telefonní hovor, resp. zaznamenat hlasovou poznámku. 3.2.10. Messaging Zajímavá je především možnost posílat a přijímat textové zprávy. Užitečná je schopnost doručovat zprávy adresátovi, který v době odesílání zprávy byl ve stavu offline. Do doby doručení je taková zpráva uložena na serveru poskytovatele. Maximální délka textové zprávy může být omezena. Například pro SMS zprávu je to 160 znaků a posíláme – li přes ICQ zprávu uživateli, který je offline, je maximální délka zprávy 450 znaků.
8
3.2.11. File transfer Přenášet datové soubory umožňují služby buď přímo, nebo např. jako přílohu e-mailové zprávy. Zajímá nás předpokládaná průměrná rychlost datového přenosu, omezení maximální velikosti jednoho přenášeného souboru, atd. 3.2.12. Další vlastnosti Mezi další zajímavé vlastnosti služeb můžeme zařadit např. možnost uskutečňovat videohovory. Některé služby mají požadavky na speciální HW vybavení. Např. pro použití pevné telefonní linky je nutný modem a pro připojení mobilního telefonu, je nutné bluetooth. Možnost přidat ke svému kontaktu obrázek18, resp. vlastní podobenku, snižuje neosobnost internetové komunikace
3.3. Vzájemné stavy komunikačních služeb Každá dvojice klientských aplikací na straně kontaktované a kontaktující osoby se může nacházet vzájemně ve 4 stavech19, přičemž pouze jeden z těchto stavů umožňuje plnohodnotné využití služby. Je samozřejmé, že obě strany musí mít službu nainstalovanou20, resp. dostupnou, jinak spojení touto službou nebude nikdy možné. • Službu mám nainstalovánu - adresát má službu nainstalovánu. Je možné uplatnit lokální frontu úloh, která po našem přihlášení bude čekat na přihlášení adresáta aby mohly být zprávy doručeny, nebo bude využit režim odesílaní uživateli ve stavu offline a zprávy se odešlou hned po našem přihlášení. • Službu mám nainstalovánu a ve stavu online - adresát má službu nainstalovánu. Je možné využít doručování zpráv a zobrazení zmeškaných hovorů adresátovi, který je ve stavu offline, nebo budou zprávy uloženy v lokální frontě úloh. • Službu mám nainstalovánu - adresát má službu nainstalovánu a ve stavu online. V tomto případě se uplatní lokální fronta úloh, kam je možné zařadit úlohy, které budou po připojení vyřízeny. Např. dojde odeslání souborů a textových zpráv. • Službu mám nainstalovánu a ve stavu online - adresát má službu nainstalovánu a ve stavu online. Služba může být v obou směrech využita v plném rozsahu, zprávy je možné odesílat a jsou bez prodlevy doručovány adresátovi.
18
Tzv. avatar Ve vztahu mezi odesilatelem a adresátem. 20 Nainstalovanou službou se rozumí splnění HW a SW požadavků pro komunikaci, ale není v dané chvíli například jen dostupný signál mobilního telefonu, nebo došlo k výpadku připojení k internetu a daná osoba je tudíž ve stavu offline. 19
9
4. Kancelářský asistent Hlavním cílem je vytvořit jednu aplikaci, která bude schopna sdružit nejrůznější komunikační služby. Aplikaci pracovně nazveme Office Assistent (OA), tedy kancelářský asistent. Z pohledu uživatele se jedná o jedinou aplikaci, jak je vidět na následujícím obrázku.
Obrázek 4.1: Vlevo je zjednodušený uživatelský pohled, vpravo je znázorněna základní struktura celého systému.
4.1. Základní struktura systému Celý systém OA je možné rozdělit do tří základních vrstev. Dochází zde k drobné kolizi pojmů, kde z uživatelského hlediska je OA chápán jako celek, zatímco z pohledu implementačního se jedná jen o jednu část celé aplikace, jak ukazuje Obrázek 4.1. Nejblíže uživateli je samotný OA, který zahrnuje grafické uživatelské rozhraní a uživatelské komponenty. Druhou vrstvou je API21, které zprostředkovává výměnu dat mezi OA a nejnižší vrstvou systému. Nejnižší vrstvu tvoří zásuvné moduly (pluginy), spolupracující přímo s jednotlivými komunikačními službami.
4.2. Office Assistent a jeho komponenty Koncový uživatel přichází do styku víceméně jen s první částí sytému, tedy s OA. Pro běžné použití by OA měl představovat přehledné grafické uživatelské rozhraní, zpříjemňující práci s celým systémem. Je ovšem možné OA implementovat pouze textově např. pro použití v systému telefonních ústředen. Implementace mohou být tedy různé, 21
Application Program Interface
10
ale všechny navazují na střední vrstvu tvořenou jednotným API. Aby byla práce se systémem efektivní a příjemná, je nutné zabudovat do OA níže popsané komponenty, které umožní implementaci uživatelských funkcí.
Obrázek 4.2: Podrobnější schéma části Office Assistent. 4.2.1. Task List Přenos souborů přímým spojením (ICQ, Skype) není možné použít, je–li příjemce ve stavu offline. Je proto vhodné implementovat frontu úloh čekajících na vyřízení. Může se jednat například o soubory k odeslání, nebo textové zprávy s nízkou časovou prioritou, které budou odeslány po připojení adresáta k dané službě. 4.2.2. Recorder Recorder je aplikace pro záznam a uložení zvuku v počítači pro pozdější použití. Uživatel má možnost nahrát část hovoru jako hlasovou poznámku nebo naopak předem nahrát hlasovou poznámku, kterou v případě potřeby přehraje volanému do telefonního hovoru. 4.2.3. Rule Manager Systém jednoduše editovatelných pravidel určující, který komunikační kanál zvolit pro daný úkon. V případě nedostupnosti primárního kanálu se volí podle nastavené priority služeb další dostupné kanály tak, aby výsledně zvolený komunikační kanál byl podle našich představ nejvhodnější. 4.2.4. Contact List Nutnost uchovávat v aplikaci kontakty na často volané osoby je zřejmá. Aby bylo možné podchytit osobní zvyklosti našich komunikačních partnerů, je možné nastavit preferované služby i pro jednotlivé kontakty. Pro snadnější manipulaci s kontakty a
11
nastavování pravidel u více kontaktů najednou je vhodné vytvořit uživatelské skupiny kontaktů, které umožní hromadné změny. 4.2.5. History and Cueue Uchovávání historie zpráv je často využívaná funkce u většiny komunikačních služeb. Fronta přijatých, volaných a zmeškaných hovorů je taktéž téměř nutností u systému, který má zjednodušit komunikaci.
4.3. Uživatelské funkce Office Assistentu Nyní bude uvedeno několik funkcí, které by měly být v OA implementovány. Jedná se o jakési režimy a pravidla, které uživatel nejprve musí nastavit, ale později mu zjednoduší a urychlí komunikaci. Jsou zde vyzdviženy především výhody, plynoucí ze sjednocení komunikačních služeb do jednoho celku. 4.3.1. TryAll Název funkce naznačuje použití všech komunikačních kanálů, které jsou současně dostupné pro kontaktovanou i kontaktující osobu. Slouží pro případy, kdy je někoho nutné jakýmkoliv způsobem co nejdříve kontaktovat. Není tedy nutné pomocí různých aplikací rozesílat identickou zprávu, ale je možné poslat jí všemi dostupnými textovými kanály najednou. Jelikož ne vždy je podporováno doručování zpráv osobě nacházející se ve stavu offline, je vhodné umožnit i opakované odesílání zprávy či uložení a odeslání zprávy při změně stavu na online. Do této funkce můžeme zahrnout také hlasové kanály, kde v případě spojení hovoru bude přehrán předem připravený vzkaz. Stejně jako u textových kanálů není všude podporován záznam zmeškaných hovorů, tudíž je třeba umožnit opakované pokusy o navázání spojení přes hlasový kanál. 4.3.2. FreeCallFirst Tato funkce slouží především ke snížení nákladů za telefonní hovory. Uživatel vybere ze seznamu osobu které chce volat a tato funkce zajistí použití bezplatného komunikačního kanálu, pokud je v daný okamžik dostupný alespoň jeden takový kanál. Není – li možné využít bezplatného kanálu22 použije se spojení přes mobilní telefon, pevnou linku, nebo další způsoby spojení. Další možností pojetí této funkce je seřazení všech komunikačních kanálů podle předpokládané ceny hovoru. Vybírá se potom od nejnižší ceny až po nejvyšší, dokud není hovor uskutečněn. 4.3.3. BestQualityCall Jedná se o funkci zajišťující kvalitní a reprezentativní spojení s důležitou osobou (ředitel firmy apod.) V seznamu kontaktů nastavíme u důležitých osob preferenční kriterium, které i přes dostupnost levných komunikačních kanálů spojí hovor pomocí pevné linky či mobilního telefonu. Další možností je zvolit tuto funkci manuálně pro všechny hovory, potřebujeme–li spolehlivé spojení s dobrou kvalitou.
22
Volaný se nachází ve stavu offline.
12
4.3.4. CallAnyWay Funkce postupně zkouší hovor spojit všemi hlasovými komunikačními kanály, které jsou současně dostupné na straně volaného i volajícího, a to bez ohledu na kvalitu hovoru nebo finanční náklady. Je–li spojení prvním komunikačním kanálem neúspěšné, použije se další komunikační kanál dostupný k volanému kontaktu. 4.3.5. FreeMessageFirst Tato funkce slouží především ke snížení nákladů za přenos textových zpráv. Předpokládá se, že není třeba aby zpráva byla adresátem přijata co nejdříve. Uživatel vybere ze seznamu osobu, které chce poslat textovou zprávu, a tato funkce zajistí použití bezplatného textového kanálu, pokud je v daný okamžik dostupný alespoň jeden takový kanál. Není–li možné využít bezplatného kanálu (adresát je ve stavu offline) použije se např. spojení přes mobilní telefon a zpráva se odešle jako SMS. 4.3.6. BestQualityMessage Funkce vybírá textový kanál s nejvyšší kvalitou přenosu textové zprávy. Kvalitou přenosu je míněna komfortnost práce s textovými zprávami, protože text je jinak po přenosu vždy stejný. Pošleme–li 500 znakovou zprávu pomocí mobilního telefonu, bude zpráva rozdělena na 4 SMS zprávy a přehlednost na stále relativně malých displejích nebude velká. E-mail o 500 znacích přečteme velice rychle a máme možnost pohodlně a rychle reagovat na jednotlivé části zprávy. 4.3.7. MessageAnyWay Funkce slouží k odeslání textové zprávy osobě či více osobám ze seznamu pomocí libovolného textového kanálu. Předpokládá se, že zpráva má dlouhodobější charakter a nevyžaduje se její okamžité doručení. Textový kanál se tedy vybírá především podle osobních preferencí adresátů. Není li osobní preference nastavena, použije se preferenční kritérium odesílatele. 4.3.8. FastFileTransfer Tato funkce vybírá pro přenos souboru přenosový kanál, který umožní nejrychlejší možné přenesení souboru bez ohledu na netiquette23 a osobní preference adresáta i odesilatele. Předpokládaná rychlost přenosu je uvedena ve vlastnostech každého přenosového kanálu. 4.3.9. TransferAnyWay Tato funkce slouží k přenosu souborů několika osobám s využitím různých komunikačních kanálů, umožňujících přenos souborů. Je možné využít oblíbeného kanálu příjemce nastavením preference u každého kontaktu. Není–li osobní preference nastavena, je použito preferenční kritérium odesilatele, nebo jakýkoliv komunikační kanál, dostupný v danou chvíli. Není–li možné data přenést ihned, je soubor zařazen do fronty úloh, kde čeká na přihlášení adresáta k preferovanému komunikačnímu kanálu a následně je odeslána.
23
Zkratka pro Internet etiquette
13
4.4. API Účelem vlastního API je vytvoření jakéhosi mezičlánku mezi OA a pluginy jednotlivých služeb. API musí být navrženo tak, aby přidání nové komunikační služby24 nevynucovalo programové změny v OA a optimálně ani změny v API. Tento požadavek vyžaduje navržení dostatečného množství metod, které zajistí veškerou komunikaci mezi OA a API. Podrobnému popisu jednotného API je věnována samostatná kapitola.
4.5. Pluginy Pro každou komunikační službu je nutné mít jiný plugin, který zajišťuje spojení s vlastní sítí komunikační služby. Plugin pro jednu komunikační službu může být buď přímo jednoduchá koncová aplikace dané služby25, nebo v případě že protokol služby není veřejný26, bude plugin komunikovat s oficiální klientskou aplikací dané služby pomocí vestavěných příkazů této aplikace. V praxi se tedy bude jednat o jednoduchý ICQ klient, plugin umožňující odesílání elektronické pošty nebo např. aplikaci, která dokáže pomocí bluetooth ovládat konkrétní typ mobilního telefonu. Každý plugin bude s API komunikovat pomocí jednotných příkazů.
24
Instalace nového pluginu Např. ICQ 26 Např. Skype 25
14
5. Uživatelské scénáře Význam a možnost praktického využití jednotného komunikačního systému je nastíněn v následujících uživatelských scénářích. Situace mají do jisté míry katastrofický scénář, ale mohou zcela reálně nastat.
5.1. Využití všech dostupných způsobů pro předání důležité informace Manželé Petr a Helena se rozhodli koupit si nový byt. Vybrali společně nejlepší nabídku a Petr jde dnes podepsat kupní smlouvu. Ráno říkal, že se možná ještě na chvíli zastaví v práci. Právě Heleně volala kamarádka, že našla mnohem výhodnější nabídku bydlení, jenže Petr už je na cestě a je třeba ho informovat o lepší nabídce 5.1.1. Běžné řešení dané situace Helena bere do ruky mobilní telefon, ale Petr je nedostupný, píše mu tedy SMS zprávu a ještě mu zkouší poslat e-mail do práce, hledá soukromou e-mailovou adresu a píše také zprávu přes Skype. Volá do práce na záznamník, kde nechává vzkaz. Průběžně Petrovi zkouší volat na vypnutý mobil. „Snad jsem udělala vše a Petr si nějaké zprávy všimne a ozve se mi ještě před podepsáním smlouvy.“ Helena ovšem zapomněla na Petrovo ICQ, kam mohla poslat také zprávu. 5.1.2. Řešení stejné situace s pomocí kancelářského asistenta Helena v adresáři OA vybírá kontakt na Petra a volbu TryAll. Píše text zprávy a nahrává hlasovou zprávu. OA zprávu rozeslal na všechny dostupné „textové kanály“ a snaží se Petra opakovaně kontaktovat na hlasových kanálech a přehrát mu hlasovou zprávu v případě úspěšného spojení hovoru. Petr se v práci zastavil jen na chvíli a náhodou si všiml nové ICQ zprávy „blikající“ na monitoru. Zprávu si přečetl a nepodepsal v tu chvíli již nevýhodnou smlouvu. 5.1.3. Rozbor situace V dnešní době je řada velmi důležitých rozhodnutí, prováděno pomocí mobilních telefonů. Lidé jsou na ně často odkázáni jako na jediný komunikační kanál bez náhradního způsobu spojení. Většinou vše funguje bez problémů, ale stačí večer nedat telefon do nabíječky, nebo ráno nezapnout zvonění a rázem je spojení okolního světa s námi přerušeno. V mnoha případech potom nastává stresující boj s časem a je věcí náhody, zda se nám dotyčnou osobu povede kontaktovat jiným způsobem, nebo ne. V mnoha případech se to povede, ale stojí to velké množství času a úsilí. Použitím uživatelské funkce TryAll, sjednocující dostupné komunikační kanály, je to možné za zlomek času.
5.2. Přenos souboru jakýmkoliv způsobem David byl včera s kolegy na firemním večírku, kterého se zúčastnili i přátelé zaměstnanců. Akce se vydařila a několik lidí ho požádalo, aby jim poslal fotografie z večírku. Na své kolegy David kontakty zná a od „nových“ přátel má sepsané kontakty, kam fotografie poslat. Hanka a Jirka uvedli e-mailovou adresu, na Karla má číslo ICQ a od Jany a Martina má Skype nick.
15 5.2.1. Běžné řešení dané situace „Rozeslat fotky bude zase práce na půl dne,“ říká si David. Postupně zadává kontakty do jednotlivých aplikací. Odesílá fotografie e-mailem, sleduje až se objeví další přátelé na ICQ a SKYPE, aby jim mohl fotografie poslat. 5.2.2. Řešení stejné situace s pomocí kancelářského asistenta David si uložil nové kontakty do seznamu OA. Vybírá všechny osoby, kterým se mají fotografie odeslat a volí uživatelskou funkci pro přenos souborů TransferAnyWay. Těm, kteří uvedli e-mail, nebo jsou zrovna ve stavu online se fotografie odesílají okamžitě, osobám které jsou ve stavu offline se fotografie odešlou hned po jejich přihlášení. Do té doby jsou uloženy ve frontě úloh, které mají být provedeny po přihlášení uvedených osob k příslušným službám. 5.2.3. Rozbor situace Často potřebujeme sdílet data s různými osobami, ale ne každý člověk má stejné komunikační možnosti a osobní preference. Někdo používá e-mail pro posílání souborů jakékoliv velikosti, jiný zase preferuje přímý přenos souborů. Každý způsob má své výhody i nevýhody. Tato rozmanitost ovšem znepřehledňuje celou situaci, zvláště pokud chceme respektovat komunikační preference osob v našem okolí. Zjednodušení přináší uživatelská funkce TransferAnyWay, která použije vhodný komunikační kanál pro každou osobu.
5.3. Finanční úspora přednostním využíváním internetové telefonie Helena se rozhodla uspořádat po letech sraz spolužáků ze střední školy. Nemá už ani kontakty na všechny spolužáky, tak je nejdřív bude muset sehnat. Všechny obvolá, zjistí kdy má kdo čas a potom zase všem dát vědět kdy a kde bude sraz. Domluvila se s kamarádkou Monikou, která jí pomůže se sháněním kontaktů na bývalé spolužáky. 5.3.1. Běžné řešení dané situace „To zase bude tento měsíc účet za telefon,“ říká si Helena. Bere si k ruce papír, tužku, pevnou linku, mobil a začíná telefonovat. Jeden hovor střídá druhý a provolaných peněz je stále více. 5.3.2. Řešení stejné situace s pomocí kancelářského asistenta Helena vybírá v OA uživatelskou funkci FreeCallFirst a volá Monice. Ta zrovna sedí u počítače, takže se hovor uskuteční pomocí Skypu. Kamarádky se domlouvají, jak budou postupovat. Většinu spolužáků nacházejí podle telefonního seznamu, a rovnou si od nich zjišťují „alternativní“ spojení. Všechny nově získané kontakty si Helena ukládá do seznamu kontaktů v OA, takže při dalších hovorech se nejdříve vybírají komunikační kanály, kterými je možné volat zdarma. Pokud možnost zavolat dané osobě zdarma neexistuje, hovor se spojují pomocí pevné linky, nebo mobilního telefonu. Po vybrání vhodného data srazu rozesílá Helena informace o srazu všem spolužákům pomocí uživatelské funkce MessageAnyWay. Na konci měsíce, přichází účty za telefon, ale překvapivě nejsou o mnoho vyšší než jiné měsíce.
16
5.3.3. Rozbor situace Při organizaci akcí pro větší počet osob jsme často nuceni všem osobám několikrát telefonovat, rozesílat informace apod. To většinou přináší i velké finanční náklady na hrazení telefonních poplatků. Můžeme sice procházet seznamy jednotlivých aplikací a zjišťovat, zda osoby jsou právě dostupné na nějakém komunikačním kanále umožňujícím volání bez poplatků, ale vše je pomalejší a méně přehledné. Zjednodušení přináší uživatelská funkce FreeCallFirst, která vybírá nejprve hlasové kanály s možností volání zdarma. Potřebujeme–li poslat stejnou textovou zprávu velkému počtu lidí, je výhodné použít uživatelskou funkci MessageAnyWay, která odešle každé osobě zprávu na jakýkoliv dostupný textový kanál.
5.4. Automatický výběr vhodné služby pro uskutečnění hovoru Firma TRADE COMPANY má po celém světě několik poboček, které vzájemně spolupracují. Mimo spolupráci s ostatními pobočkami obchoduje také s důležitými obchodními partnery. Z důvodu snižování nákladů firmy, bylo vydáno nařízení, že pro volání na pobočky v jiných státech se má používat Skype nebo Google Talk, aby se ušetřilo za mezinárodní hovory. Pokud se hovor nepovede uskutečnit pomocí bezplatných služeb, má se použít pevná linka nebo mobilní telefon. Skype či Google Talk má být také používán na telefonáty s obchodními odděleními partnerských společností. Pro telefonáty ředitelům spolupracujících firem má být ovšem z reprezentativních důvodů použita pevná linka, nebo mobilní telefon. 5.4.1. Běžné řešení dané situace „To jsou ale novoty,“ říká si Petr. Teď budu většinu pracovní doby přemýšlet jestli je pan Novotný ředitel, nebo z obchodního oddělení. „To abych si udělal velký přehled ředitelů všech společností a v něm před každým hovorem hledal, jakým způsobem mám volat.“ 5.4.2. Řešení stejné situace s pomocí kancelářského asistenta Petr nastavuje v OA u kontaktů všech ředitelů uživatelskou funkci BestQualityCall zatímco jako defaultní nastavuje volbu FreeCallFirst. Dále už Petr volí jen jména ze seznamu kontaktů a jakým způsobem se hovor spojí už Petra nemusí trápit. 5.4.3. Rozbor situace Mezinárodní hovory jsou často nutná, ale drahá položka ve výdajích firmy. Možnost, jak tyto náklady snížit, je použít internetové telefonie, která je buď zcela zdarma, nebo jsou náklady na mezinárodní hovory mnohem nižší, než při použití mobilního telefonu či pevné linky. Neustálé zjišťování momentální dostupnosti internetových komunikačních kanálů může ovšem zabrat mnoho času. Optimální je využít uživatelskou funkci FreeCallFirst, která spojí hovor přes bezplatný kanál, je–li to v danou chvíli možné. Z prestižního hlediska může být nepřípustné kontaktovat nejdůležitější osoby např. pomocí Skype, a tak těmto osobám telefonujeme pomocí pevné linky či mobilního telefonu. Zaměstnanec ovšem musí vědět kdo je důležitý a kdo ne a podle toho volit komunikační kanál. Snazší je nastavit u důležitých kontaktů v seznamu preferenční
17
kritérium BestQualityCall, které zajistí použití kvalitního a reprezentativního spojení s důležitou osobou.
5.5. Urychlení a usnadnění komunikace Do uzávěrky důležitého výběrového řízení zbývá jen pár hodin. Sekretářka Helena provádí s ředitelem poslední úpravy na obchodní nabídce do tohoto výběrového řízení. Náhle musí ředitel na chvíli nutně odjet, ale nabídka už je téměř hotová, a tak to Helena zvládne sama. Ředitel v rozrušení způsobil drobnou dopravní nehodu, a tak čeká na příjezd policie a vyřizuje telefonicky pojistnou událost s pojišťovnou. Helena zjistila, že fotografie (nutné k vložení do dokumentu) nejsou uloženy v adresáři, který má poznamenaný od ředitele. 5.5.1. Běžné řešení dané situace Helena tedy volá řediteli na mobil, ale ten má obsazeno. Opakovaně se zkouší dovolat a až po dlouhé chvíli se jí povede, se s ním spojit. Ředitel je překvapený, ale popisuje Heleně, kde všude má hledat kontakt na fotografa, který fotografie pořizoval. Až najde jeho kontakt, má si nechat fotografie znovu poslat. Prohledávání všech e-mailů, historie ICQ a Skype však trvá dlouho. Nakonec se s fotografem Helena spojí a žádá ho o opětovné zaslání fotografií. Fotograf nevědomky posílá fotografie na ředitelovu adresu, místo adresy firemní, na které fotografie očekává Helena. 5.5.2. Řešení stejné situace s pomocí kancelářského asistenta Helena zadává do OA volbu CallAnyWay. Ředitel má obsazeno na mobilním telefonu, a tak se hovor spojí náhradním způsobem přes Skype spuštěný na palubním počítači jeho automobilu. Ředitel je překvapený absencí fotografií, ale popisuje Heleně jak má postupovat. Má v adresáři jeho OA hledat jméno Otto Branský, který fotografie pořizoval a co nejrychleji se s ním spojit. Helena se domlouvá s fotografem, aby poslal fotografie znovu. Jelikož je již málo času, posílá fotograf soubory pomocí uživatelské funkce FastFileTransfer. Helena čeká fotografie na firemní adrese, ale stále nic nepřichází. Mezitím byl ředitel upozorněn hlasovým systémem palubního počítače na nový e-mail. Zjistil že se jedná o důležité fotografie a tak je hned přeposílá na adresu, kde je očekává Helena. Ředitel se vrací do firmy, Helena právě tiskne poslední stranu dokumentu. Nasedají do auta a odjíždějí nabídku do výběrového řízení odevzdat. 5.5.3. Rozbor situace Čas hraje v našem osobním i pracovním životě často velmi důležitou roli. Stačí drobná nepozornost a každá minuta má rázem vysokou cenu. Možnost jakkoliv se rychle spojit s důležitou osobou může být v tu chvíli k nezaplacení. Uživatelská funkce CallAnyWay vyzkouší postupně všechny hlasové komunikační kanály a snaží se s volanou osobou co nejdříve spojit. Rychlý přenos dat je stejně důležitý, jako rychlé spojení telefonního hovoru. Rychlost datového přenosu je však často omezena na několik kB/s (např. u Skype pokud adresát není z vnější sítě přímo dostupný a dojde k přesměrování přenosu), a tak je výhodnější použít např. e-mail, kde je rychlost přenosu omezena kapacitou linky, ač se posílání velkých příloh e-mailem považuje za neetické.
18
6. Návrh jednotného API Jednotné API je hlavním tématem této práce, ale jelikož má vytvářet mezičlánek mezi OA a pluginy jednotlivých služeb, bylo nutné se nejprve věnovat právě pluginům a především OA, kterému je věnována část této práce. Možnost návrhu API jako zcela izolovaného prvku jsem zhodnotil jako bezpředmětnou. API musí být navrhováno společně s ostatními částmi komunikačního systému, aby bylo možné vhodně rozdělit funkci systému mezi jednotlivé části. Mnoho funkcí může být zajišťováno, buď v části API nebo v OA a záleží jen na posouzení výhod jedné či druhé varianty. Ve chvíli kdy bude pevně stanoveno rozdělení funkcí mezi jednotlivé části celého systému a navržena kompletní sada funkcí pro komunikaci API s OA a pluginy, je možné již API navrhovat samostatně. Aby nedocházelo ke splývání slova služba ve smyslu komunikační služby a ve smyslu služby posílání zpráv a uskutečňování hovorů, bude se dále o zprávách a hovorech psát jako o komunikačních médích.
6.1. Vnitřní struktura API Pro správnou funkci musí API obsahovat komponenty uvedené na schématu v příloze C.1 ve schématickém bloku API. Pro příjem hovorů, zpráv a dalších událostí slouží část Incomming Listener rozdělená ještě podle jednotlivých druhů komunikačního média. Přidávání, přihlašování či odebírání jednotlivých komunikačních služeb do systému, má na starosti část Service Management. Pro odeslání zprávy či iniciace odchozího hovoru slouží část Media Activation Service. Jednotlivé fáze funkce celého komunikačního systému jsou znázorněny na sekvenčních UML diagramech v příloze D. Tyto diagramy znázorňují činnost systému v situacích popsaných uživatelskými scénáři v kapitole 5. 6.1.1. Service Management Systému správy komunikačních služeb je věnováno schéma v příloze C.2. Hlavním účelem této části je udržení přehledu nad dostupnými komunikačními službami. Metody této části umožňují přihlášení a odhlášení konkrétní komunikační služby k síti. Další funkcí je přidávání a odebírání služeb z komunikačního systému. Je možné editovat vlastnosti jednotlivých služeb uložených v části Service Properties. Jelikož jedna komunikační služba většinou podporuje několik typů komunikačních médií, je potřeba umožnit práci s tzv. elementárními službami viz. část Elementar Service ve schématu C.2. V případě mobilního telefonu hovoříme jako o službě Cell Phone, která ovšem podporuje textová i hlasová komunikační media. Možným řešením je komunikační službu rozdělit na dvě služby např. TEXT_Cell_Phone a VOICE_Cell_Phone. Některé vlastnosti komunikační služby, jako například telefonní číslo, jsou pro obě tyto služby společné a vypneme-li telefon, obě služby přestanou být dostupné. Proto je nutné umožnit přístup ke komunikačním službám jako k celkům, tak i k elementárním službám na úrovni komunikačních médií. Nastavování statusů služeb do stavu online, resp. offline, zajišťuje Presence Service. 6.1.2. Media Activation Service K iniciaci komunikačních médií slouží část Media Activation Service znázorněná na schématu v příloze C.5. Komunikační média jsou rozdělená na čtyři kategorie: Voice Call, Message, File Transfer, Video Call. Každá část by měla mít implementovány
19
metody vztahující se k danému komunikačnímu médiu. Například pro iniciaci odchozího hovoru je tedy nutné použít metodu makeCall() z části Voice Call.
6.2. Další požadavky na API Přidání nové komunikační služby v praxi znamená, přidání příslušného pluginu této služby a jeho zaregistrování v API. Od chvíle zaregistrování může být služba připojena k sítí a API tuto službu uvádí v seznamu dostupných služeb. V případě odstranění služby je zase nutné službu odregistrovat, aby se jí OA nesnažil použít k další komunikaci. Při implementaci je důležité dodržet požadavek, aby přidání nové komunikační služby nevynucovalo programové změny v OA a optimálně ani změny v API. To vyžaduje navržení dostatečného množství metod, které zajistí veškerou komunikaci mezi OA a API. Níže je uveden seznam metod nutných k implementaci API, ale tento seznam není zdaleka kompletní. Vytvoření zcela kompletního seznamu metod přesahuje rámec tohoto projektu.
6.3. Přehled metod API 6.3.1. Metody Service Management addService(int serviceID,String serviceName,serviceArray) editService(int serviceID) deleteService(int serviceID) connectService (int serviceID) disconnectService(int serviceID) detectService (int serviceID) detectAllServices() connectAllServices() disconnectAllServices() showAvailableServices(int mediaID) showAvailableServices(String contactID) 6.3.2. Metody Presence Service setGlobalStatus(int status) setServiceStatus(int serviceID, int status) setCustomStatus(int serviceID, int status) 6.3.3. Metody Voice Call makeCall(int serviceID, String contactID) recvCall(int serviceID, String contactID) recordCall(String filename) viewMissedCalls(int serviceID) viewOfflineMissedCalls(int serviceID) makeConferenceCall() registerIncommingCallListener(int serviceID) viewCallHistory()
20
6.3.4. Metody Message sendMessage(int serviceID,String contactID,String messageText) recvMessage(int serviceID,String contactID,String messageText) viewHistory(int serviceID/String contactID) registerIncommingMessgaeListener(int serviceID) viewOfflineMessages() meakeConferenceChat() 6.3.5. Metody File Transfer sendFile(int serviceID, String contactID, recvFile(int serviceID, String contactID, sendFileToQueue(int serviceID, contactID, deleteFileFromQueue() registerIncommingFiletransferListener(int viewTransferHistory()
String filename) String filename) String filename) serviceID)
6.3.6. Metody Video Call makeVideoCall(int serviceID, String contactID) recvVideoCall(int serviceID, String contactID) registerIncommingVideoCallListener(int serviceID) viewMissedVideoCalls()
21
7. Ukázková aplikace Ukázková aplikace předvádí princip jednotného přístupu k více komunikačním službám. Implementován je jednoduchý OA se seznamem kontaktů, vlastní jednotné API a dva pluginy pro Skype a e-mail. Aplikace je funkční, ale není určená pro běžné použití. Slouží pouze k demonstraci principu celého systému. Aplikace podporuje pouze odesílání textových zpráv na Skype a e-mailové adresy. Program je napsán v jazyce Java a pro jeho spuštění je nutné nejprve připravit vhodné prostředí a nainstalovat přídavné aplikace. Všechna potřebná nastavení jsou popsána v souboru install.txt na přiloženém CD.
7.1. Třídy Aplikace OA je složená ze čtyř jednoduchých tříd a dále používá další dvě nestandardní knihovny potřebné pro běh e-mailového pluginu. Aby důležité prvky nezanikly ve velkém množství kódu uživatelsky příjemné aplikace, je řada věcí zjednodušena maximálním možným způsobem. Změna jmen či umístění konfiguračního souboru a adresáře je proto možná pouze změnou v kódu programu. Editace seznamu kontaktů je možná pouze pomocí externího editoru při dodržení předepsaného formátu souboru. Níže je uveden přehled tříd s popisem jejich funkcí. 7.1.1. OfficeAssistent Třída OfficeAssistent obsahuje metodu main a je tak hlavní třídou celého systému. Implementovány jsou 3 metody odpovídající různým typům odesílání textových zpráv. Dále je kromě metody main implementována metoda pro ovládání aplikace. • tryAll(String userName,String messageText) Tato metoda je zjednodušená implementace funkce TryAll, z kapitoly 4.3.1, v rozsahu textových služeb. Příslušnému uživateli je text rozeslán na všechny dostupné služby, které jsou právě v dané chvíli online. Jelikož není implementována fronta úloh, není možné ukládat zprávy k pozdějšímu odeslání. • messageAnyWay(String userName,String messageText) Stejně jako funkce MessageAnyWay, z kapitoly 4.3.7, odesílá tato metoda textovou zprávu na jakoukoliv textovou službu. Je-li v seznamu kontaktů nastavena osobní preference konkrétní služby, je přednostně vyzkoušena tato služba a není-li pokus úspěšný, odesílá se zpráva pomocí jiné služby. • bestQualityMessage(String userName,String messageText) Tato metoda vychází ze stejnojmenné funkce z kapitoly 4.3.6, která preferuje použití emailu jako kvalitnějšího způsobu posílání dlouhých textů. Není-li e-mailová adresa dostupná, je použita jiná dostupná služba, v tomto případě Skype.
22
7.1.2. ContactList Jednoduchý seznam kontaktů implementovaný třídou ContactList používá data z předem definovaného souboru contactlist.dat s pevně určeným formátem dat. Soubor musí být umístěn v aktuálním pracovním adresáři. U každé osoby v adresáři je uloženo jméno, uživatelské jméno pro Skype, e-mailovou adresu a volitelně také preferovaná služba. Implementovány jsou tři metody určené pro manipulaci se seznamem kontaktů. • getUserID(String userName,String serviceName) Metoda na základě jména hledaného uživatele a jména komunikační služby vrací příslušné uživatelské jméno pro danou službu. Pro e-mail je to adresa a pro Skype je to nick uživatele. • getPreferedService(String userName) Metoda na základě jména hledaného uživatele vrací jméno služby, které má být přednostně použita pro textové zprávy. Není-li preference nastavena, je vrácen řetězec nulové délky. • getAvailebleServices(String userName) Metoda na základě jména hledaného uživatele vrací jména služeb, která jsou u daného uživatele uvedeny. Slouží ke zjištění všech služeb, na kterých je uživatele možné zkoušet kontaktovat. 7.1.3. API Třída API zajišťuje sjednocení komunikačních služeb. Hlavní třída OfficeAssistent volá metody třídy API a ta zase volá metody konkrétních pluginů. Výběr pluginu příslušné služby je proveden pomocí přepínače switch rozhodujícího podle hodnoty serviceID. Přiřazení jména služby k číslu serviceID je uvedeno v konfigurčním souboru service.conf. Toto řešení umožňuje snadno přidávat a odebírat pluginy jednotlivých služeb. Ve třídě API je implementováno celkem 6 metod popsaných v následujícím textu. • sendMessage(int serviceID,String userID,String messageText) Metoda odesílá textovou zprávu pomocí služby, které patří příslušné serviceID, na příslušný kontakt userID. V případě úspěšného odeslání zprávy metoda vrací 1, jinak je návratová hodnota 0. • checkUserStatus(int serviceID,String userID) Metoda zjišťuje online status konkrétního vzdáleného uživatele na konkrétní službě určené pomocí serviceID. V případě že uživatel je online, vrací metoda 1, jinak vrací hodnotu 0. • getMyStatus(int serviceID) Tato metoda slouží ke zjištění statusu konkrétní služby na straně odesílatele. V případě online stavu vrací metoda 1, jinak je návratová hodnota 0.
23
• getAvailableServices() Všechny aktuálně dostupné pluginy na straně odesílatele je možné zjistit touto metodou. Návratovou hodnotou je řetězec se seznamem jmen všech dostupných služeb. • getServiceID(String serviceName) Tato metoda zjistí na základě jména služby přidělené serviceID, které je uložené v souboru service.conf. Návratovou hodnotou je identifikační číslo služby. • getOnlineServices() Ke zjištění všech pluginů, které jsou na straně odesílatele ve stavu online, je možné použít tuto metodou. Návratovou hodnotou je řetězec se seznamem jmen všech služeb ve stavu online.
7.1.4. SkypePlugin Službu Skype je možné používat pouze s klientskou aplikací od společnosti Skype. Tuto klientskou aplikaci je možné ovládat pomocí posílání systémových zpráv tzv. windows messages. Třída SkypePlugin používá pro komunikaci s klientskou aplikací program skypeconsole.exe distribuovaný společností Skype, který má relativně přehledné textové rozhraní, nahrazující práci s windows messages. SkypePlugin zapisuje textové příkazy do skypeconsole.exe a čte z tohoto programu také odpovědi klientské aplikace Skype. Program skypeconsole.exe již zajistí komunikaci s klientskou aplikací pomocí windows messages. Třída SkypePlugin implementuje 3 metody. • checkUserStatus(String userID) Metoda slouží ke zjištění statusu adresáta zadaného pomocí userID. Pokud se adresát nachází ve stavu online, vrací metoda 1, je-li v jiném stavu než online, je vrácena hodnota 0. • getMyStatus() Metoda slouží ke zjištění aktuálního stavu vlastní klientské aplikace Skype. Pokud je aplikace ve stavu online, vrací metoda 1, je-li aplikace v jiném stavu než online, je vrácena hodnota 0. • sendMessage(String userID,String messageText) Metoda zajišťující odeslání textové zprávy adresátovi s patřičným uživatelským jménem userID. V případě úspěšného odeslání vrací metoda hodnotu 1 jinak je vrácena hodnota 0. 7.1.5. MailPlugin Pro MailPlugin sloužící k odesílaní e-mailů bylo využito JavaMail API 1.4 a JavaBeans Activation Framework od společnosti Sun Miscrosystems. MailPlugin tedy využívá
24
externích knihoven mail.jar a activation.jar nutných pro použití toho pluginu. Vzhledem k problémům s přihlašováním k SMTP27 serverům běžně dostupných freemailových služeb, které vyžadují při přihlašování ověření, je nutné mít na počítači lokální SMTP server, který umožní odesílání e-mailů. • checkUserStatus(String userID) Metoda by měla sloužit ke zjištění statusu adresáta zadaného pomocí userID, ale v případě e-mailu to není prakticky proveditelné, a tak metoda vrací vždy hodnotu 1. • getMyStatus() Metoda slouží ke zjištění aktuálního stavu MailPluginu. Metoda by mohla například ověřovat dostupnost připojení k internetu nebo dostupnost SMTP serveru, ale zde pro jednoduchost vrací vždy hodnotu 1. • sendMessage(String userID,String messageText) Metoda zajišťující odeslání e-mailové zprávy adresátovi s patřičným uživatelským jménem userID, resp. tedy e-mailovou adresou, pomocí lokálního SMTP serveru. V případě úspěšného odeslání vrací metoda hodnotu 1, jinak je vrácena hodnota 0.
7.2. Funkčnost aplikace Aplikaci jsem testoval pro nejrůznější kombinace nastavení adresáře a funkcí pro odesílání zpráv. V části OA ani API jsem nezjistil žádné závažné nedostatky při dodržení předem daných omezení této ukázkové aplikace. Vlivem ne zcela optimální implementace třídy SkypePlugin někdy dochází k nestandardnímu chování aplikace.
27
Simple Mail Transfer Protocol
25
8. Závěr V tomto bakalářském projektu jsem navrhl způsob sjednocení nejrůznějších komunikačních služeb pomocí jedné aplikace. Vzhledem k značné rozmanitosti všech možných komunikačních služeb, které jsou v této práci také popsány, není optimální sjednocení služeb snadným úkolem. Jak předkládají uživatelské scénáře, možnosti využití jednotného systému jsou velmi rozsáhlé. Proto toto téma považuji jako perspektivní, jak pro další studium tohoto tématu, tak i pro komerční využití. Ukázková aplikace předvádí možnost sjednocení komunikačních služeb na praktickém příkladu, byť jen s omezenou množinou služeb.
26
27
9. Seznam literatury [1] P. Herout. Učebnice jazyka java. KOOP, České Budějovice, Druhé vydání, 2005. ISBN 80-7232-115-3 [2] Webopedia – elektronická encyklopedie počítačů a internetu http://www.webopedia.com [3] K. Richta. Slidy pro podporu výuky předmětu SI1 na FEL ČVUT, Praha, 2005. [4] Skype Developer Zone – dokumentace pro vývojáře Skype aplikací https://developer.skype.com/Docs [5] Google Talk developer info – stránka pro vývojáře aplikací pro Google Talk http://www.google.com/talk/developer.html [6] XMPP – stránka o protokolu XMPP. http://www.xmpp.org/ [7] Lupa – článek Protokol SIP ve zkratce. http://www.lupa.cz/clanky/protokol-sip-ve-zkratce/ [8] Lupa – článek Skypebijci. http://www.lupa.cz/clanky/skypebijci/ [9] Free Voice – článek IAX protokol. http://www.freevoice.cz/modules.php?op=modload&name=New s&file=article&sid=15&mode=thread&order=0&thold=0 [10] Lupa – článek Proč se IM nesjednotí. http://www.lupa.cz/clanky/proc-se-im-nesjednoti/ [11] ISDN server – slovník pojmů - protokol SIP. http://www.isdn.cz/slovnik.php?did=142 [12] Lupa – přehled článků o IM. http://www.lupa.cz/n/instant-messaging-im/
28
29
A Seznam použitých zkratek OA
Office Assistent
API
Application Program Interface
GSM
Global System for Mobile Communications
PSTN
Public Switched Telephone Network
VoIP
Voice over IP
SMS
Short Message Service
MMS
Multimedia Message Service
UMTS
Universal Mobile Telecommunications System
SIP
Session Initiation Protocol
NAT
Network Address Translation
XML
Extensible Markup Language
XMPP
Extensible Messaging and Presence Protocol
IAX
Inter-Asterisk eXchange protocol
SMTP
Simple Mail Transfer Protocol
30
31
B Přehled vlastností komunikačních služeb B.1
32
33
B.2
34
35
B.3
36
37
C UML – schémata systému OA C.1 Celkové schéma systému
38
39
C.2
Schéma části Service Management
40
41
C.3
Schéma komunikačních objektů
C.4
Schéma seznamu kontaktů
42
43
C.5
Schéma části Media Activation Service
44
45
D UML – sekvenční diagramy D.1 Sekvenční diagram voiceCall
46
47
D.2
Sekvenční diagram fileTransfer
48
49
D.3
Sekvenční diagram message
50
51
D.4
Sekvenční diagram tryAll
52
53
E Obsah přiloženého CD
data/
- data související s bakalářským projektem
dist/
- adresář s *.jar souborem
html/
- soubory pro html dokumentaci
src/
- zdrojové texty programu a podpůrné programy
text/
- adresář obsahující vlastní text BP
index.htm
- výchozí stránka projektu
install.txt
- informace k instalaci a spouštění ukázkové aplikace
readme.txt
- popis adresářů a souborů na CD