[MS Agent]

Was ist Microsoft Agent?

Microsoft® Agent ist eine Software- Technologie, die die Grundlage bietet, Anwender auf eine besondere Art und Weise mit ihren Computern kommunizieren zu lassen. Microsoft Agent ist ein Set an Software- Services, welches Entwicklern erlaubt, interaktive, animierte Charaktere in ihre Applikationen und Webseiten einzubinden.

Diese Charaktere können mittels einer "text-to-speech" Engine oder aufgezeichnetem Audio sprechen und akzeptieren gesprochene Kommandos. Microsoft Agent ermöglicht es Entwicklern, die Benutzerschnittstellen über die konventionellen Maus- und Tastatureingaben hinaus zu erweitern.

Das Einsatzgebiet eines "virtuellen Assistenten" kennt nahezu keine Grenzen. Er kann neue User begrüssen und einen geführten Rundgang anbieten, wenn ein Computer das erste Mal eingeschaltet, ein Programm zum ersten Mal gestartet oder eine Webseite zum ersten Mal besucht wird.
Ein freundlicher Tutor könnte durch eine Reihe von Aufgaben leiten oder Schritt-für-Schritt- Instruktionen bei der Bewältigung eines Problems geben.
Ein Messenger könnte eine Benachrichtigung liefern oder das Eintreffen einer Mail ankündigen und anbieten, sie Ihnen vorzulesen.

"Develop with what you already know"
Microsoft Agent ist sehr flexibel in der Art der Einbindung, d.h., Entwickler können aus einer breiten Palette an Programmiersprachen auswählen, um einen Agent in ihre Applikation einzubinden.

Eingesetzt werden können Sprachen, die die ActiveX Technologie unterstützen, wie Visual Basic und Visual C++. Webautoren können HTML Scriptsprachen wie VBScript und JavaScript einsetzen. Solution Builders können Microsoft Agent mit Office und anderen Applikationen, die Visual Basic for Applications (VBA) unterstützen, einsetzen.

HINWEIS: Wir beschränken uns in diesem Tutorial auf die Verwendung von JavaScript, um einen Agent in eine Webseite einzubinden.

Die Grundlagen

Microsoft Agent ist eine eigenständige Software, das heisst, Microsoft Agent muss zuerst auf dem PC installiert werden, damit der Anwender in den Genuss dieser Technologie kommen kann. Microsoft Agent gehört seit Windows ME zum Standardumfang von Windows, ältere Betriebssystemversionen müssen Microsoft Agent nachinstallieren, NICHT- Windowssysteme gehen leer aus...
Die Dateien zu MS Agent finden Sie im Windows- Ordner in einem Verzeichnis namens MSAGENT.

Wie sieht so ein Agent denn konkret aus?

Zugegeben, bisher war alles sehr theoretisch beschrieben, klicken Sie doch mal hier drauf, um einen Agenten erscheinen zu lassen.

Wenn Merlin etwas unruhig geblinkt haben sollte, dann liegt das an unserer Navigation, MS Agent scheint sich mit Applets manchmal nicht sonderlich zu vertragen....

Microsoft bietet standardmässig vier Agenten an: Neben Merlin, den Sie soeben kennengelernt haben, gibt es noch Genie, den Flaschengeist, Robby, einen Roboter sowie Peedy, der Papagei.
Wer weitere Agenten sucht, wird bei The Agentry fündig.

Die Einbindung in die Webseite

Wie bereits weiter oben erwähnt, basiert MS Agent auf der ActiveX- Technologie, d.h., als erstes müssen wir eine Objektreferenz auf das ActiveX- Control in unsere Webseite einbauen.

<Object ID=N8i ClassID=CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F></Object>

Die ID, in unserem Fall heisst sie N8i, ist frei wählbar. Über diese ID wird das Objekt später innerhalb des JavaScripts angesprochen.
Von grosser Wichtigkeit ist die ClassID. Sie referenziert das ActiveX- Control und ist für MS Agent eindeutig. Verwenden Sie also nur den Wert CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F!

Nachdem wir also dem Browser mitgeteilt haben, welches Programm wir einsetzen wollen, können wir uns dem Scripting zuwenden.

<Script LANGUAGE="JavaScript" TYPE="text/javascript">
function LoadLocalAgent(CharID, CharACS) {
LoadReq = N8i.Characters.Load(CharID, CharACS);
return(true);
}
var MerlinID;
var MerlinACS;
N8i.Connected = true;
MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);
Merlin = N8i.Characters.Character(MerlinID);
Merlin.Show();
Merlin.Play("Surprised");
Merlin.Play("GetAttention");
Merlin.Play("Blink");
Merlin.speak("Hallo ich bin Merlin. Nicht erschrecken, ich bin gleich wieder weg");
Merlin.Play("Blink"); Merlin.Play("Confused");
Merlin.MoveTo (600,400);
Merlin.Play("Surprised");
Merlin.Play('GestureRight');
Merlin.speak("Du bist hier bei Nightfire.ch");
Merlin.MoveTo (200,450);
Merlin.speak("Hier findest Du noch viele andere Scripte und Applets");
Merlin.Play('GestureLeft');
Merlin.speak("Das wars mal fürs erste....");
Merlin.MoveTo (150,350);
Merlin.Play('GestureLeft');
Merlin.Play('DoMAgic1');Merlin.Play('DoMAgic2');
Merlin.Play("Blink");
Merlin.speak("Tschüüüss! Bis bald!");
Merlin.Hide();
</script>

Das Script beginnt mit einer Funktion LoadLocalAgent.

function LoadLocalAgent(CharID, CharACS) {
LoadReq = N8i.Characters.Load(CharID, CharACS);
return(true);
}

Diese Funktion startet den Agenten mit den ihr übergebenen Argumenten CharID und CharACS. Wie Sie im späteren Verlauf des Scripts sehen werden, übergibt CharID den auszuführenden Charakter, in diesem Fall also Merlin und CharACS die zu verwendende ACS- Datei. Mehr zu ACS- Dateien lesen Sie hier.

Die Funktion LoadLocalAgent wird durch den Befehl MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS); aufgerufen.

Die Interaktionen des Charakters

Jeder Charakter verfügt über eigene Gesten, Bewegungen und Fähigkeiten. Auf diese Eigenschaften wird über JavaScript zugegriffen. Um Merlin bspw. erscheinen zu lassen, setzt man den Befehl Merlin.Show(); ein. Um Merlin Bewegungen oder Gesten ausführen zu lassen, wählt man den Befehl Merlin.Play("[Aktion]");. [Aktion] steht hierbei stellvertretend für die jeweilige Aktion. Merlin kann auch sprechen (Merlin.speak("...")), seine Position auf dem Bildschirm (Merlin.MoveTo (x,y);) ändern, etc. Verschwinden lässt man ihn schlussendlich mit Merlin.Hide();. Auf die einzelnen Bewegungen möchten wir hier nicht näher eingehen, das sie, wie bereits erwähnt, bei jedem Charakter unterschiedlich sind. Informationen für die Standardcharakter finden Sie bei Microsoft Agent oder beim Anbieter anderer Charaktere.

ACS Dateien

Eine ACS- Datei (MSAgent Character Data File) enthält, wie der Name schon sagt, alle Daten des jeweiligen Charakters. Dies sind Bilder/Animationen, Sprachdaten, etc.). Um einen Charakter interagieren zu lassen, muss die jeweilige ACS- Datei auf dem lokalen PC installiert sein. Welche Charaktere auf Ihrem Computer installiert sind, sehen Sie im Verzeichnis <Lw:>\Windows\MSAGENT\CHARS.

Advanced Scripting

Um sicherzustellen, dass ein Agent auf dem PC des Users verfügbar ist, bietet es sich an, den Agenten bei Bedarf automatisch nachzuladen. Dies ermöglicht man durch die Erweiterung der Funktion LoadLocalAgent.

Wie bereits im ersten Beispiel legen wir zunächst eine Reihe Variablen an:

// * Character Objects
var Merlin;

// * Variables
var UsedChars;
var MerlinID;
var MerlinACS;
var MerlinURL;
var MerlinStates;
var MerlinAnimations;
var MerlinReq;
var MerlinStatesReq;
var MerlinAnimationsReq;
var MerlinLoaded;
var LoadReq;
var HideReq;

// * Initialize
UsedChars = "Merlin";

// * Merlin
MerlinID = "Merlin";
MerlinACS = "merlin.acs";
MerlinURL = "http://agent.microsoft.com/agent2/chars/merlin/merlin.acf";
MerlinStates = "Showing, Hiding, Speaking, Moving";
MerlinAnimations = "";
MerlinLoaded = false;

Als nächstes legen wir eine Funktion an, die alle benötigten Funktionen beim Laden der Seite startet:

Window_OnLoad();

function Window_OnLoad() {
// Purpose: Startet automatisch, wenn Seite geladen wird

// * Hier können weitere Scripts eingefügt werden, die beim Onload gestartet werden sollen.

AgentControl.Connected = true;

MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);

if (!MerlinLoaded) {
// Attempt to load default character
MerlinLoaded = LoadLocalAgent(MerlinID, "");
}

if (MerlinLoaded) {
SetCharObj();
}
CheckLoadStatus();
}

Nun folgt die angesprochene Funktion.

Window_OnLoad();function LoadLocalAgent(CharID, CharACS) {
// Purpose: Versucht den Charakter zu laden
// Returns: true falls erfolgreich, false falls nicht

AgentControl.RaiseRequestErrors = false;
if (CharACS == "") {
LoadReq = AgentControl.Characters.Load(CharID);
}
else {
LoadReq = AgentControl.Characters.Load(CharID, CharACS);
}
AgentControl.RaiseRequestErrors = true;

if (LoadReq.Status != 1) {
return(true);
}
return(false);
}

Hier werden die restlichen Funktionen definiert:

function SetCharObj() {
// Purpose: Setzt die Charakter Referenz und TTS Language ID

Merlin = AgentControl.Characters.Character(MerlinID);
Merlin.LanguageID = 0x409;
}

function CheckLoadStatus() {
// Purpose: Stellt fest, ob der benötigte Charakter geladen ist.
// Wenn nicht, wird ein Rquest zum Laden abgesetzt.
// ansonsten wird die AgentIntro Routine ausgführt

if (!MerlinLoaded) {
window.status = "Loading " + MerlinID + " Character. Please Wait...";
MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL);
return(false);
}

window.status = "";
AgentIntro();
return(true);
}

function LoadError() {
var strMsg;
window.status = "";
strMsg = "Fehler beim Laden des Charakters: " + MerlinID + "\n";
strMsg = strMsg + "Dieses Microsoft Agent Script benötigt den Charakter:\n";
strMsg = strMsg + UsedChars;
alert(strMsg);
}
function InitAgentCommands() {
// Purpose: Initialisiert das Commands Menu

Merlin.Commands.RemoveAll();
Merlin.Commands.Caption = "My Menu Name";
Merlin.Commands.Add("ACO", "Advanced Character Options", "Advanced Character Options");
}

function AgentIntro() {
InitAgentCommands();

// *** BEGIN USER SCRIPT ***

Merlin.Show();
Merlin.Speak("Welcome to the Microsoft Agent Scripting Helper!");
Merlin.Hide();

In der Funktion AgentIntro können Sie ihre individuellen Befehle an den Agenten einsetzen.

Weitere Möglichkeiten

Agenten können Ihnen die Sätze, die Sie in den Sprachblasen lesen, auch vorlesen oder von Ihnen Sprachbefehle entgegennehmen. Hierzu benötigen Sie ein weiteres ActiveX Control, nämlich die TTS (Text-To-Speach) Engine, die Sie mit folgendem Objekt einbinden.

<object id="L&HTruVoice" width="0" height="0"
classid="CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575"
codebase="#VERSION=6,0,0,0">
</object>

Wenn Sie sich entschliessen, MS Agent in fortgeschrittenem Umfang einzusetzen, empfiehlt sich die Verwendung einer Software, die Ihnen die Scriptarbeit abnimmt. Gute Erfahrungen haben wir hierbei mit MASH gemacht. MASH ist die ersten 30 Tage kostenlos uneingeschränkt zu verwenden und muss danach für rd. 25$ registriert werden.
Bezugsquelle: MASH

MS Agent related Links

Weitere Informationen zu den Microsoft Agents finden sie hier:

Microsoft
Microsoft Agent Ring
Deskbot.com
Agentry
MUSH
MASH

MS Agent Beispiele

Genie
Merlin
Robby

Copyright © 1998- Nightfire Java Archiv Tutorial No: 013