Začátečník

Pokročilý

Profesionál

Inteligentní asistenti v počítači

Představení možností technologie MS Agent 2.0

 

Budete potřebovat přibližně 1 hodinu

Operační systém použitý v příspěvku: Windows 2000

Vývojové nástroje: Visual Basic 6.0

Další zdroje: www.microsoft.com/msagent/

 

 

Vážení přátelé,

 

v dubnovém vydání rubriky se budeme věnovat poznávání programové architektury technologie s názvem Microsoft Agent 2.0, která je zodpovědná za správnou funkčnost digitálních počítačových pomocníků, se kterými se můžete střetnout v stále větším množství moderních aplikací. Předmětem našeho zájmu bude vysvětlení základů uvedené technologie a posléze praktické ukázky, které vám pomohou s implementací počítačových pomocníků do vašich vlastních programů.

 

Obsah

Představení možností technologie

Přidání ovládacího prvku MS Agent Control 2.0 do soupravy nástrojů

Zobrazení počítačového pomocníka

Vytvoření bublinového okna pomocníka a zobrazení uvítací zprávy

Změna pozice pomocníka na obrazovce počítače

Ukončení práce s pomocníkem

 

 

Představení možností technologie

 

Pojem „počítačoví asistenti“ byl do povědomí uživatelů a posléze i programátorů zaveden již před nějakým časem. Pokud by jsme chtěli být přesnější, musíme se vrátit až do doby, kdy byl na trh uveden kancelářský balík Office společnosti Microsoft ve verzi 97. Sada programů tehdy, samozřejmě kromě jiného, přinesla na výsluní revoluční prvek, jenž byl navíc velice pečlivě zakomponován do uživatelského rozhraní nabízených aplikací. Ano, šlo o takzvaného pomocníka Office, v podobě snad již legendární kancelářské sponky. Počítačový asistent vás sprovázel od prvních chvil. Snažil se vám pomoci při uskutečnění různých úkolů, neustále vás upozorňoval na to, jak lze vaší práci zefektivnit použitím jiného postupu či aplikací klávesových zkratek. Zkrátka, byl stále „na dohled“, což u některých uživatelů vyvolávalo záchvaty vzteku. V žádném případě bych na tomto místě nechtěl polemizovat o skutečnosti, zda-li byla umělá inteligence digitálního asistenta na požadované úrovni nebo nikoliv. Pro nás je myslím nejdůležitější fakt, že pomocník byl postaven na dostatečně pevném základu, který dovoloval jeho použití v různých situacích (např. pomocí jazyků Visual Basic a Visual Basic pro aplikace (VBA)).

 

Budeme-li sledovat chronologii následujících verzí aplikační sady Office, uvidíme, že pomocníci si také v nich vydobyly neotřesitelnou pozici. Domnívám se, že v okamžiku, kdy jste spatřili animovanou postavičku pomocníka, chtěli jste něco podobného mít i ve vašem programu. Dobrou zprávou je, že na následujících řádcích se dozvíte vše potřebné pro to, aby se váš sen stal skutečností. Ještě předtím se ale zkusme podívat na technologii MS Agent 2.0 podrobněji.

 

Technologie MS Agent 2.0 obsahuje množství objektů, kolekcí, vlastností a metod, které můžete kdykoliv použít a převzít tak chování počítačových pomocníků do svých rukou. Všechny programové součásti technologie jsou nerozlučně spjaty s operačním systémem Windows a po jejich nainstalovaní je již nelze ze systému bezpečně odstranit. Cílovou skupinou pro aplikaci technologie jsou programátoři, kteří používají vývojové nástroje, které podporují standard ActiveX (resp. COM, Component Object Model). Kolekce programových komponent totiž obsahuje ovládací prvek ActiveX s názvem Microsoft Agent Control 2.0, pomocí kterého je možné snadnou cestou zadávat pomocníkovi programové pokyny.

 

Programový kód ovládacího prvku MS Agent Control 2.0 je uložen v souboru agentctl.dll. Tento soubor se nachází ve složce MS AGENT kořenové složky Windows.

 

Do množiny programovacích nástrojů, které lze použít při programování počítačových pomocníků, můžeme zařadit Visual Basic a Visual C++, dále pak také Visual FoxPro, editor jazyka VBA v MS Office a rovněž MS Internet Explorer. Všechna tato vývojová prostředí vám mohou posloužit v případě, že budete chtít zavolat počítačové pomocníky.

 

Systémové soubory technologie MS Agent 2.0 se nacházejí ve složce MS AGENT (tato složka je umístěna v kořenové složce systému Windows). Systémové soubory technologie jsou na novějších verzích operačního systému Windows (Millennium Edition, 2000 a XP) již standardně zahrnuty do instalace systému, a proto je nemusíte opětovně instalovat. Jste-li ovšem majitelem starší verze systému Windows (95 a 98), na domové stránce technologie (která je uvedena v navigačním panelu) najdete vše potřebné.

 

Velmi důležitou informací je, že počítačový pomocník působí jako server typu out-of-process, co znamená, že asistent je vždy spouštěn ve svém vlastním procesu. Tato skutečnost ostatně vysvětluje, proč je pomocník zcela nezávislý od aplikace, která si vyžádala jeho služby (jde o tzv. klientskou aplikaci). Nezávislá povaha technologie počítačového asistenta vám dovoluje aplikovat kousky doposud nevídané. Můžete například nechat zobrazit na obrazovce několik pomocníků a třeba uskutečnit mezi nimi rozhovor.

 

Osobně si myslím, že možnosti počítačových asistentů jsou poněkud přehlíženy. Vždyť jenom samotná představa, že ve světe vašeho počítače se nachází inteligentní virtuální bytost, je skutečně jedinečná. A pokud je také „vybroušen“ programový kód, jenž nařizuje pomocníkovi, co má kdy dělat, je počítačový asistent pomocníkem v pravém slova smyslu. Dobře, věřím, že můžeme přejít k programovým ukázkám toho, co všechno může pomocník dělat.

 

 

Přidání ovládacího prvku MS Agent Control 2.0 do soupravy nástrojů

 

Při našich pokusech budeme vždy pracovat s ovládacím prvkem MS Agent Control 2.0. Aby bylo možné vytvářet instance tohoto prvku a následně je ukládat přímo na plochu formuláře, je nejdříve zapotřebí přidat do soupravy nástrojů odkaz na příslušný ovládací prvek. Postupujte teda podle následujících instrukcí:

 

  1. Spusťte Visual Basic 6.0 a vytvořte nový projekt typu Standard EXE.
  2. Označte nabídku Project a klepněte na položku Components.
  3. Dávejte pozor, aby byla v dialogovém okně vybrána záložka Controls. Zde v seznamu vyhledejte položku s názvem Microsoft Agent Control 2.0 a klepnutím ji označte (obr. 1).

 

 

Obr. 1 – Vložení odkazu na ovládací prvek do soupravy nástrojů

 

Pokud by se požadovaná položka nenacházela z nějakého blíže nespecifikovaného důvodu v seznamu, zkuste klepnout na tlačítko Browse a vyhledat soubor agentctl.dll.  

 

  1. Aktivujte tlačítko OK a zkontrolujte, jestli se ikona ovládacího prvku nachází v soupravě nástrojů (obr. 2).

 

             

Obr. 2 – Ikona ovládacího prvku MS Agent Control 2.0 v soupravě nástrojů

 

Výborně, první krok jste úspěšně absolvovali. Dále již stačí jenom umístit instanci ovládacího prvku na formulář a začít s psaním programového kódu. To vše bude námětem další sekce této studie.

 

 

Zobrazení počítačového pomocníka

 

Umístěte na formulář instanci ovládacího prvku MS Agent Control 2.0 a také instanci prvku CommandButton. Označte instanci prvku s pomocníkem a podívejte se do okna vlastností (Properties Window). Můžete si všimnout, že asistent podporuje jisté vlastnosti, no není jich moc. Pokud budete chtít, můžete změnit jméno pomocníka modifikací hodnoty vlastnosti Name (standardně nese první instance jméno Agent1). Pokračujte dvojitým klepnutím na instanci tlačítka a zapsáním uvedeného programového kódu do okna editoru.

 

Agent1.Characters.Load "Pomocník1", "C:\Soubor_s_asistentem.acs"

Agent1.Characters("Pomocník1").Show

  

Protože může tento fragment programového kódu působit na první pohled lehce komplikovaně, pokusme se na něj podívat zblízka. Především je nutné nahrát správný profil asistenta ze souboru .ACS a tento pak přidat do kolekce objektů s názvem Characters. To provádí metoda Load, signaturu které tvoří dva parametry:

 

  1. CharacterID – jde o textový řetězec, který identifikuje profil pomocníka. Pokud se budete chtít v budoucnosti odkázat na tento profil pomocníka, vždy použijete název (textový řetězec), který jste danému profilu přiřadili při volání metody Load. V našem případě je vybraný profil asistenta pojmenován jako „Pomocník1“. 
  2. Cesta k souboru s profilem asistenta. Určení cesty k požadovanému souboru může být uskutečněno dvojakým způsobem. V nejběžnějším případě bude tento parametr naplněn explicitním určením cesty k souboru s asistentem, jenž je fyzicky přítomný na vašem pevném disku (např. C:\Soubor1.acs). Pokud ovšem chcete použít soubor s pomocníkem, jenž je uložen na síti, můžete zadat také příslušnou HTTP adresu.

 

V souvislosti s druhým parametrem je nutné vzpomenout i relativní určení cesty k souboru s profilem pomocníka. Můžete použít kód v této podobě:

 

Agent1.Characters.Load "Pomocník1", "Genie.acs"

Agent1.Characters("Pomocník1").Show

 

Zde není určena plná cesta k souboru, ale cesta relativní. Ta předpokládá, že soubor s asistentem (Genie.ACS) se nachází ve složce CHARS, která je podřízenou složkou složky MS AGENT.

 

Zobrazení pomocníka na obrazovce počítače má na starosti metoda Show. Pokud byste použili soubor s čarovným džinem, uvedené dva řádky kódu by ho zviditelnily na obrazovce v podobě uvedené na obr. 3.

 

 

Obr. 3 – Zobrazení pomocníka pomocí metody Show

 

Při nahrávání profilu pomocníka platí pravidlo, že použitím jedné instance ovládacího prvku můžete nahrát jenom jeden profil asistenta ve stejnou dobu. Pokud byste tedy chtěli aktivovat dalšího pomocníka, bylo by potřebné vytvořit také další instanci ovládacího prvku.

 

 

Vytvoření bublinového okna pomocníka a zobrazení uvítací zprávy

 

Aby mohl asistent zobrazit bublinové okno s uvítací zprávou, použijeme metodu Speak s textovým parametrem:

 

Agent1.Characters("Pomocník1").Speak "Dobrý den, já jsem váš počítačový pomocník."

 

Výsledek lze pozorovat na obr. 4.

 

 

Obr. 4 – Bublinové okno pomocníka

 

Chcete-li, můžete asistentovi poskytnout několik uvítacích zpráv a nechat na něm, kterou zobrazí. V tomto případě je nutné oddělit jednotlivé věty symbolem svislé čáry (|). Prostudujte si níže uvedený programový kód:

 

  

Agent1.Characters("Pomocník1").Speak _

"Dobrý den, já jsem váš počítačový pomocník.|" & _

"Ahoj, jak se máte?|" & _

"Potřebujete pomoc?"

 

Pokud budete zkoušet činnost tohoto kódu, pamatujte na pravidlo, že v jednom okamžiku může být z jedné instance ovládacího prvku zobrazen pouze jeden asistent. Proto kdybyste dvakrát klepli na tlačítko na formuláři, Visual Basic by ohlásil chybu, v popisu které by vám bylo sděleno, že postavička pomocníka již byla jednou načtena. Tento (mimochodem poměrné častý) problém lze vyřešit například takto:

 

  1. V deklarační části formuláře vytvořte proměnnou typu Boolean s názvem aktivace.
  2. V událostní proceduře Form1_Load inicializujte tuto proměnnou na hodnotu False.
  3. Kód v obsluze události Click tlačítka upravte do následující podoby:

 

Private Sub Command1_Click()

If aktivace Then

symbol:

    Agent1.Characters("Pomocník1").Show

    Agent1.Characters("Pomocník1").Speak _

    "Dobrý den, já jsem váš počítačový pomocník.|" & _

    "Ahoj, jak se máte?|" & _

    "Potřebujete pomoc?"

Else

    Agent1.Characters.Load "Pomocník1", "Genie.acs"

    GoTo symbol

End If

 

aktivace = True

End Sub

 

Znázorněný kód je poněkud netypický hlavně použitím konstrukce GoTo. Průběh celého algoritmu vypadá asi takto:

 

  1. Je testována hodnota proměnné aktivace. Při prvním spuštění programu je hodnota této proměnné nastavena na False (toto „nastavení“ hodnoty proměnné se děje v událostní proceduře Form1_Load). Proto je dále proveden kód, jenž se nachází ve druhé části rozhodovací konstrukce If-Then, a tedy dochází k načtení profilu pomocníka prostřednictvím metody Load. Připomínám, že jde jenom o „načtení“ pomocníka, nedojde tedy k jeho zobrazení na monitoru počítače.   
  2. Provede se příkaz Goto a exekuce programu se přenese na řádek, jenž následuje za řádkem, který je označen návěstím (v našem případě je návěstím slovo symbol).
  3. Provedou se další příkazy, které následují za návěstím a dojde k opuštění konstrukce If-Then.
  4. Proměnná aktivace je posléze nastavena na hodnotu True. Pokud klepnete ještě jednou na tlačítko, proměnná již bude nastavena na hodnotu True a provede se tedy jenom první část rozhodovací konstrukce If-Then.

 

Jestliže teď spustíte aplikaci, můžete klepnout na tlačítko i poté, co je pomocník již viditelný na obrazovce počítače. Nedojde k žádné chybě, asistent jednoduše vybere další zprávu a přečte ji.

 

 

Změna pozice pomocníka na obrazovce počítače

 

Při standardním způsobu aktivace se pomocník zobrazuje v levém horním rohu plochy vašeho monitoru. Jestliže vám toto umístění asistenta nevyhovuje, můžete ho změnit pomocí dvou vlastností Top a Left. Tyto vlastnosti mají stejný význam jako jejich ekvivalenty ve Visual Basicu, společně určují pozici levého horního rohu okna pomocníka.

 

Ačkoliv to není na pohled zřejmé, pomocník se nachází v okně (rozměry tohoto okna by neměly překročit hranici 128 krát 128 pixelů). Pozadí okna a okraje okna jsou průhledné, proto je nemůžete spatřit.  

 

Budete-li chtít přesunout asistenta 500 pixelů směrem dolů a 450 pixelů směrem doprava, použijte tento kód:

 

Agent1.Characters("Pomocník1").Top = 500

Agent1.Characters("Pomocník1").Left = 450

 

Výsledek je demonstrován na obr. 5.

 

 

Obr. 5 – Přesné umístění pomocníka na kýženou pozici

 

Přestože vlastnosti Top a Left odvádějí svou práci znamenitě, existuje další způsob, pomocí kterého lze změnit pozici asistenta. Jde o metodu MoveTo objektu Character. Představme si nejprve zápis metody a pak si k ní povíme pár slov.

 

agent.Characters ("CharacterID").MoveTo x,y, [Speed]  

 

Metoda MoveTo pracuje s třemi parametry, přičemž poslední z nich je volitelný. První dva parametry určují souřadnice cílového levého horního bodu okna pomocníka. Již vzpomínaný volitelný parametr determinuje rychlost přehrávaní snímků animace pomocníka při změně jeho pozice. Tato rychlost je měřena v milisekundách.

 

Velkou výhodou metody MoveTo je skutečnost, že změna pozice asistenta je vizuálně umocněna animací (obr. 6).

 

Obr. 6 – Změna pozice pomocníka použitím metody MoveTo

 

 

Ukončení práce s pomocníkem

 

Jestliže již nebudete chtít využít služeb počítačového asistenta, máte v zásadě dvě možnosti, jak jej „odstránit“ z obrazovky počítače. Pomocníka můžete buď skrýt aplikací metody Hide, nebo jej zcela odstranit z paměti použitím metody Unload.

 

Dávejte si pozor na použití metody Hide. Tato metoda zabezpečuje pouze skrytí pomocníka, nikoliv jeho odstranění z paměti počítače. Paměťové zdroje, které obsazoval asistent můžete bezpečně uvolnit jenom použitím metody Unload.

 

Příkladné použití obou metod můžete vidět níže.

 

 

Když budete chtít skrýt pomocníka, zapište tento kód:

 

Agent1.Characters("Pomocník1").Hide

 

V případě nutnosti odstraňte pomocníka z paměti tímto kódem:

 

Agent1.Characters.Unload "Pomocník1"

 

 

Závěr

 

Jestliže vás problematika ovládání počítačových pomocníků zaujala, dejte mi vědět a já pak můžu připravit další díl z této tématiky, ve kterém by byly probrány pokročilé techniky implementace počítačových asistentů.

 

 

Ján Hanák