|
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
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 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 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=MojAgentW przypadku uruchamiania bezpo╢rednio z Internetu nale┐y odpowiednio zmieniµ parametr CODEBASE: CODEBASE= "http://activex.microsoft.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 GeniePierwsz▒ 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",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.ShowPojawianie 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.ShowNa 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 wszystkichJak 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 SubChcemy, 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 SubTen 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,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 SubAgent 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 |