Enter.net  


Spotkanie z agentem
Cezary G│owi±ski


Nie b▒d╝my zaskoczeni, je╢li kt≤rego╢ razu wΩdruj▒c po Internecie spotkamy dziwn▒ postaµ, kt≤ra zacznie siΩ poruszaµ i m≤wiµ do nas.

Reaguj▒c na czynno╢ci, jakie wykonujemy przegl▒daj▒c stronΩ WWW, zacznie wskazywaµ jaki╢ element, zamy╢laµ siΩ, rozk│adaµ rΩce, dziwiµ siΩ lub robiµ minΩ zaskoczonej. BΩdzie to zapewne Microsoft Agent.

U┐ytkownicy przegl▒darki Microsoft Internet Explorer 4 maj▒ mo┐liwo╢µ spotkania siΩ z internetowym agentem. Jest to ma│a postaµ podobna do asystenta znanego z pakietu biurowego Office 97, kt≤ra pojawia siΩ na ekranie i towarzyszy wy╢wietlanej stronie wykonuj▒c przy tym r≤┐ne czynno╢ci.

Instalacja agenta


»eby korzystaµ z dobrodziejstwa agenta, trzeba zainstalowaµ pakiet Microsoft Agent. Jest on umieszczany jako dodatek na p│ytkach instalacyjnych IE4 (plik msagent.exe) i podczas pe│nej instalacji przegl▒darki powinien zostaµ zainstalowany. Mo┐emy te┐ zainstalowaµ go samodzielnie. Wystarczy ╢ci▒gn▒µ z Internetu i uruchomiµ plik msagent.exe.

Agenta mo┐emy dostosowaµ do w│as-nych potrzeb, ustawiaj▒c podstawowe w│a╢ciwo╢ci dotycz▒ce wy╢wietlania "dymk≤w" i efekt≤w zwi▒zanych z wy-mow▒ i odgrywaniem postaci. Je╢li chcemy wzbogaciµ postaµ w funkcje syntezy lub rozpoznawania mowy, trzeba zainstalowaµ dodatkowe sk│adniki (patrz ramka).

Niestety jak na razie nie jest jeszcze dostΩpna polska wersja jΩzykowa. Instalacja pakietu nie jest konieczna, je╢li autor strony odpowiednio j▒ przygo-tuje. Chodzi g│≤wnie o umieszczenie polece± automatycznie instaluj▒cych agenta i jego postacie z Internetu.

Gotowe postacie


Rys.1
Rys.2

Microsoft udostΩpnia gotowe postacie agent≤w. S▒ to d┐in (genie.acs), czarodziej (merlin.acs) i robot (robby.acs). Odpowiednie pliki *.acs mo┐na ╢ci▒gn▒µ na dysk lokalny i zainstalowaµ w katalogu c:\Program Files\Microsoft Agent\Charac-ters. Tworz▒c lub przegl▒daj▒c strony bΩdziemy mogli siΩ nimi pos│ugiwaµ.

Je╢li jednak nie podobaj▒ siΩ nam standardowe postacie, mo┐emy tworzyµ zupe│nie nowych, w│asnych agent≤w. S│u┐▒ do tego specjalne edytory , kt≤re pozwalaj▒ skojarzyµ odpowiednie rysunki ze zdarzeniami i zapisaµ je w plikach. Tak wiΩc ka┐dy jest w stanie udostΩpniµ w Internecie stronΩ z osobi╢cie stworzonym agentem. Polega to na tym, ┐e je╢li strona wywo│uje agenta, to program sprawdza, czy dana postaµ jest zapisana lokalnie na dysku. Je╢li tak, to uruchamia j▒, a je╢li nie, to przegl▒darka doci▒ga dodatkowy plik definiuj▒cy. Oczywi╢cie znacznie szybciej jest, gdy mamy postaµ ju┐ zainstalowan▒ lokalnie, rozwi▒zanie to w zasadzie ograniczone jest jednak tylko do typowych wzor≤w.

PrzeciΩtne zachowanie agenta ogranicza siΩ do wykonywania gest≤w, kt≤rym zwykle towarzyszy komentarz wypowiadany g│osem. W trakcie wypowiadania s│≤w mo┐e on tak┐e ruszaµ ustami na╢laduj▒c wypowiadany tekst (teksty s▒ tak┐e widoczne w dymkach). Jeszcze wiΩksze mo┐liwo╢ci agent uzyskuje po zainstalowaniu modu│u rozpoznawania mowy. DziΩki niemu jest w stanie reagowaµ na s│owa wypowiadane przez u┐ytkownika. Natomiast gdy w aktyw-n▒ postaµ klikniemy prawym klawiszem myszy, wy╢wietli siΩ lista polece±, kt≤re mo┐emy wydawaµ (m.in. mo┐na spowodowaµ znikniΩcie agenta).


W│asny agent


Rys.3
Rys.4
Rys.5

Je╢li chcemy, aby stronie towarzyszy│a nasza postaµ agenta, to trzeba j▒ stworzyµ i zapisaµ w odpowiednio sformatowanym pliku, kt≤ry musi byµ udostΩpniony wraz z t▒ stron▒.

Trzeba jednak pamiΩtaµ, ┐e decyduj▒c siΩ na w│asn▒ postaµ fundujemy u┐ytkownikom dodatkowe kilobajty danych do ╢ci▒gniΩcia. Dlatego te┐ najlepiej pos│ugiwaµ siΩ gotowymi postaciami.

Tym, kt≤rzy chc▒ jednak zrobiµ wra┐enie, Microsoft udostΩpnia darmowy edytor do tworzenia w│asnych postaci - Agent Character Editor. Pozwala on powi▒zaµ okre╢lone gesty z wizerunkami postaci, a dok│adniej z sekwencj▒ poszczeg≤lnych "klatek" symuluj▒c animacje.

Programowanie agenta


Zachowanie agenta zakodowane jest w tre╢-ci strony WWW. Wykorzystuje siΩ w tym celu standardowe zdarzenia opisywane przez DHTML, czyli dynamiczn▒ odmianΩ jΩzyka opisu stron oraz skrypty VBScript. Jest to najprostszy ze sposob≤w, za po╢rednictwem kt≤rego mo┐na powi▒zaµ pewne gesty i wypowiadany tekst ze zdarzeniami zwi▒zanymi z pozosta│ymi elementami strony. Mo┐e to byµ najechanie wska╝nikiem myszy na element, klikniΩcie, wci╢niΩcie klawisza itd. W zasadzie wystarcza to do wiΩkszo╢ci zastosowa±. U┐ycie VB-Scriptu jest w tym przypadku uzasadnione, gdy┐ jΩzyk ten dobrze wsp≤│pracuje z obiektami ActiveX, a takim w│a╢nie obiek-tem jest agent.

Generaln▒ wad▒ VBScriptu jest to, ┐e obs│uguje go jedynie Internet Explorer. W tym przypadku nie ma to jednak wiΩkszego znaczenia, bo agent wsp≤│pra-cuje tylko z t▒ przegl▒dark▒. Zamiast VB-Scriptu mo┐na r≤wnie dobrze pos│u┐yµ siΩ JavaScriptem.

Jeszcze wiΩcej mo┐liwo╢ci daje sterowanie agentem za pomoc▒ jΩzyk≤w programowania, np. C++ lub aplet≤w Javy, jednak dla potrzeb wsp≤│pracy ze stron▒ WWW pozostaniemy przy VBScripcie. Postaµ agenta jest traktowana na stronie WWW jako obiekt, do kt≤rego osadzenia s│u┐y znacznik <OBJECT>. Agenta mo┐na uruchomiµ z dysku lokalnego lub automa-tycznie przez Internet. Wywo│uj▒c odpo-wiedni▒ postaµ podajemy ╢cie┐kΩ dostΩpu lub URL do pliku msagent.exe:

<OBJECT ID=MojAgent 
CLASSID="clsid:
F5BE8BD2-7DE6-11D0-91FE-00C04FD701A5"
CODEBASE =
" C:\Program Files\Microsoft Agent\MSagent.exe>VERSION=1,5,0,0"> </OBJECT>
W przypadku uruchamiania bezpo╢rednio z Internetu nale┐y odpowiednio zmieniµ parametr CODEBASE:
CODEBASE= 
"http://activex.microsoft.
com/controls/agent/MSagent.exe#VERSION=1,5,0,0".
W analogiczny spos≤b uruchamia siΩ pakiety dodatkowe do syntezy lub rozpoznawania mowy. Sterowanie zachowaniami agenta programuje siΩ w postaci skryptu.
<SCRIPT LANGUAGE=VBScript>
<!- ...
->
<SCRIPT>
Polecenia wewn▒trz skryptu ukrywamy w znacznikach komentarza tak, aby inne przegl▒darki lub starsze wersje IE ich nie uwzglΩdnia│y. Najpierw zdefiniujemy zmienn▒ globaln▒, kt≤ra bΩdzie reprezentowa│a postaµ agenta:
Dim Genie
Pierwsz▒ rzecz▒, jak▒ trzeba zrobiµ w trakcie │adowania strony jest uruchomienie agenta. VBScript umo┐liwia pisanie procedur do obs│ugi poszczeg≤lnych zda-rze±. Mo┐na zatem wykorzystaµ zdarzenie OnLoad w stosunku do obiektu window.
Sub window_OnLoad

Wewn▒trz tej procedury za│adujemy postaµ agenta. Je╢li postaµ jest standar-dowa, to mo┐na │adowaµ j▒ z pliku w forma-cie ASC z dysku. Z regu│y jednak nie mo┐na zak│adaµ, ┐e u┐ytkownik bΩdzie mia│ zain-stalowan▒ odpowiedni▒ postaµ, a ju┐ na pewno, gdy jest ona nietypowa. Je╢li zatem udostΩpniamy w│asn▒ postaµ, to nale┐y podaµ URL pliku z jej definicj▒ w formacie ACF. R≤┐nica miΩdzy formatami polega na tym, ┐e plik ACF nie zawiera animacji.

S▒ one przechowywane w oddzielnych plikach AAF (musz▒ byµ udostΩpnione w tym samym katalogu). Plik typu ASC jest wygodniejszy, bo zawiera pe│n▒ definicjΩ postaci. Niestety nie mo┐na go automa-tycznie │adowaµ z Internetu. »eby z niego skorzystaµ, wymagane jest od u┐ytkownika zainstalowanie go na swoim dysku.

Je╢li korzystamy ze standardowych postaci, to mo┐emy podaµ URL z witryny Microsoftu. Przyk│adowo, dla postaci robota podajemy adres: http://agent.microoft.com/characters/robby/robby.acf. Nale┐y jednak pamiΩtaµ, ┐e co pewien czas adresy w Internecie siΩ zmieniaj▒ i trzeba je ╢ledziµ. Aktualn▒ informacjΩ na temat, gdzie znajduj▒ siΩ pliki z gotowymi posta-ciami Microsoftu mo┐na znale╝µ na stronie http://www.microsoft.com/workshop/prog/agent/characterdata.htm. Do za│adowania postaci s│u┐y metoda Load, kt≤rej parametrami s▒ nazwa identyfikuj▒ca postaµ oraz plik definiuj▒cy.

MojAgent.Characters.Load "Genie",
"C:\Program Files\Microsoft
Agent\Characters\Genie.acs"
Gdyby╢my chcieli │adowaµ postaµ z Internetu, trzeba by by│o podaµ URL zako±-czony nazw▒ pliku definiuj▒cego (z roz-sze┐eniem .acf). Aby upro╢ciµ sobie dalszy zapis polece± przypiszemy zmiennej Genie postaµ agenta.
Set Genie = MojAgent.Characters("Genie")
Za│adowany agent nie jest widoczny, trzeba go zatem wy╢wietliµ. S│u┐y do tego metoda Show. W wyniku tego polecenia na ekranie pojawi siΩ wcze╢niej za│adowana postaµ.
Genie.Show
Pojawianie siΩ postaci jest zwi▒zane z animacj▒. Je╢li zatem za│adowali╢my wcze╢niej agenta z pliku typu ACS, to wszystko jest w porz▒dku. Je╢li natomiast │adowali╢my z pliku typu ACF, to przed poleceniem wy╢wietlenia agenta trzeba ╢ci▒gn▒µ animacjΩ zwi▒zan▒ z tym zdarze-niem. Robi siΩ to wywo│uj▒c metodΩ Get. Sekwencja bΩdzie wygl▒daµ nastΩpuj▒co:
Genie.Get "state", "Showing"
Genie.Show
Na og≤│ mo┐na stosowaµ dwie strategie - od razu na pocz▒tku skryptu ╢ci▒gn▒µ wszystkie potrzebne animacje lub robiµ to stopniowo wed│ug potrzeby.

Pierwszy spos≤b op≤╝nia wy╢wietlenie strony, drugi pierwsze wy╢wietlenie ka┐dej animacji. PamiΩtajmy, ┐e wykonanie metody Get nie jest konieczne, je╢li postaµ jest zainstalowana lokalnie, bo w≤wczas wszystkie elementy animacji s▒ ju┐ zapisane na dysku. Przy omawianiu dalszych czynno╢ci zak│adam, ┐e animacje s▒ ╢ci▒gniΩte i pomijam wywo│ania Get.

Poniewa┐ jest to chwila, gdy agent dopiero co siΩ pojawi│, to powinien wykonaµ gest powitania i wypowiedzieµ stosowne s│owa. Gesty s▒ realizowane przez wy╢wietlenie animacji. S│u┐y do tego metoda Play. Do uruchomienia wypo-wiedzi s│u┐y metoda Speak.

Genie.Play "Greet"
Genie.Speak "Cze╢µ!"
Warto te┐ pogratulowaµ u┐ytkownikowi, ┐e zajrza│ na nasz▒ stronΩ i wypowiedzieµ pozdrowienie.
Genie.Play "Congratulate"
Genie.Speak "Pozdrawiam wszystkich 
Czytelnik≤w ENTERA" Genie.Play "CongratulateReturn"
Jak widaµ, niekt≤re animacje s▒ odgrywane w dw≤ch aktach. Na tym ko±czymy inicjacjΩ postaci - przechodzi ona w stan spoczynku, z kt≤rego wyrywaµ j▒ bΩd▒ niekt≤re oprogramowane przez nas zdarzenia.
End Sub
»eby agent reagowa│ na zdarzenia zwi▒zane z elementami umieszczonymi na stronie, trzeba stworzyµ odpowiednie procedury. Napiszemy procedurΩ OpisRysunku - w wyniku jej dzia│ania postaµ ma siΩ przesun▒µ w okre╢lone miejsce ekranu, spojrzeµ w prawo i wypowiedzieµ kwestiΩ wyja╢niaj▒c▒, gdzie jeste╢my.
Sub	OpisRysunku
	Genie.MoveTo 400,200
	Genie.Play "LookRightBlink"
	Genie.Speak "Jeste╢ na stronie 
	magazynu ENTER"
End	Sub

Chcemy, aby powy┐sza procedura zosta│a wykonana w momencie, gdy wska╝nik myszy znajdzie siΩ nad rysunkiem. W celu powi▒zania tych element≤w definiujemy parametr onMouseOver przypisuj▒c mu nazwΩ odpowiedniego wywo│ania.
Sub	LogoEnt_OnClick
	Genie.Play "Surprised"	
	Genie.Speak 
	"Gdzie chcesz p≤j╢µ?"
	Genie.Play "SurprisedReturn"
End 	Sub
Ten spos≤b wykorzystuje obs│ugΩ zdarze± DHTML. Mo┐na to zrealizowaµ korzystaj▒c z obs│ugi zdarze± udostΩpnia-nej przez VBScript. Zauwa┐my, ┐e rysunek ma parametr identyfikatora ID zdefiniowany jako LogoEnt. Mo┐emy zatem napisaµ drug▒ procedurΩ, zwi▒zan▒ tym razem z klikniΩciem w rysunek. Mo┐emy te┐ oprogramowaµ zdarzenia zwi▒zane z samym agentem. Dla przyk│adu procedura, kt≤ra zostanie wykonana, gdy klikniemy w postaµ agenta - zapyta siΩ on w≤wczas, czego od niego chcemy.
Sub 	MojAgent_Click 
(ByVal CharacterID, ByVal Button,
ByVal Shift, ByVal X, ByVal Y) Genie.Speak "Czego chcesz ?" End Sub
Ostatni▒ procedur▒, jak▒ warto zaprogramowaµ, jest ukrycie postaci. S│u┐y do tego metoda Hide. Zdarzeniem, kt≤re spo-woduje znikniΩcie agenta bΩdzie opuszczenie strony onUnLoad.
Sub	window_onUnLoad
	Genie.Hide
End	Sub
Agent stanowi ciekawy pomys│ na interfejs wspomagaj▒cy komunikacjΩ cz│owieka z komputerem. Na razie jest to jeszcze bardziej zabawka ni┐ solidne narzΩdzie, ale mo┐na siΩ z nim zapoznaµ. Trzeba jednak pamiΩtaµ, ┐e jego postaµ jest obs│ugiwana jedynie przez przegl▒darkΩ IE.

Instalowanie dodatkowych sk│adnik≤w agenta


Do dodatkowych sk│adnik≤w agenta nale┐y oprogramowanie syntezy mowy. »eby opr≤cz dymk≤w postaµ wypowiada│a tekst g│osem, konieczny jest pakiet Lernout & Hauspie TruVoice text-to-speech engine (plik cgram.exe). Je╢li dodatkowo zale┐y nam na rozpoznawaniu mowy i sterowaniu agentem za pomoc▒ polece± s│ownych, trzeba zainstalowaµ Microsoft Command and Control Speech Engine (plik actcnc.exe).

Opr≤cz pakiet≤w rozszerzaj▒cych mo┐liwo╢ci agenta s▒ te┐ edytory pozwalaj▒ce stworzyµ w│asn▒ postaµ. Nale┐▒ do nich edytor postaci Microsoft Agent Character Editor (plik ace.exe) oraz edytor informacji lingwistycznej Microsoft Agent Linguistic Information Sound Editing Tool (plik liset.exe).

Powy┐sze dodatki, jak i pakiet podstawowy mo┐na ╢ci▒gn▒µ z witryny activex.microsoft.com/controls/agent

(c) Copyright LUPUS