Usando el Agente de Microsoft
Por Sergio Aguirre |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Si
usted usa Microsoft Office 97 probablemente estará familiarizado con el
Asistente de Office, un pequeño carácter que aparece cuando necesita ayuda. Con
el éxito de éste, Microsoft ha desarrollado una nueva tecnología, el Agente
de Microsoft. El agente de microsoft es un
conjunto programable de software que soporta la presentación de caracteres animados
dentro de la Interface de Windows. Los programadores pueden usar dichos
caracteres como ayudantes interactivos con el fin de introducir, guíar,
entretener, o por otra parte reforzar sus aplicaciones además del uso
convencional de ventanas, menús, y controles. El
agente permite incorporar una nueva forma de interacción con el usuario,
conocido como interfaces interactivas. Además del mouse y del teclado, el
Agente incluye apoyo optativo, el reconocimiento de voz para que las
aplicaciones puedan responder a órdenes expresas. Los caracteres pueden
responder usando discurso sintetizado, audio grabado, o texto mostrado en un
globo de palabra. Apreciación Goblal El control agente de microsoft
es una aplicación que controla diferentes caracteres que flotan sobre la
pantalla. Esta aplicación corre sobre una ventana independiente, así que,
cuando minimize su aplicación el agente seguirá estando visible hasta que
usted lo oculte o borre la referencia hacia él. Cada carácter tiene su propia
personalidad lo que permite una divertida opción para el uso de múltiples
caracteres en nuestra aplicación. El control agente puede manejar múltiples
caracteres lo que nos permite hacer responder a cada carácter de forma
diferente. La figura 1 muestra a dos caracteres en acción.
Como usar el agente en nuestras
aplicaciones Si
quiere que el carácter se cargue cuando se ejecute el formulario puede
arrojar el control (msagent.ocx) sobre el formulario. El control actual es
invisible, este usa la colección de caracteres para hacer una referencia a
los demas controles (vea la figura 2).
Figura 2: El Objeto Agente Use
el metodo Load de la colección de caracteres para cargar un carácter. En el
siguiente código se carga un carácter llamado merlin, y luego se lo muestra
en pantalla (el carácter solo aparece cuando se llama al método Show). Public Merlin THISFORM.Agent.Characters.Load("Merlin",;
"C:\Windows\MsAgent\Chars\Merlin.acs") Merlin=
THISFORM.Agent.Characters("Merlin") Merlin.Show Al método Load se le pasan dos parámetros, uno
es el nombre del agente a cargar y el otro la ubicación y el nombre del
archivo ACS. Un carácter puede mostrar un mensaje o "hablar",
también puede volar alrededor de la pantalla y ejecutar diferentes
animaciones. Cuando el carácter permanece inactivo unos minutos, ejecuta
diferentes animaciones como dormir, escuchar música, comer, etc. (estas
animaciones dependen del carácter que esté cargado). El método Speak hace hablar al
carácter. El texto es mostrado en un globo de palabra que, casi siempre, se visualiza sobre el carácter. Si tiene
instalado algún TTS, el texto también será enviado a la salida de audio. En
el siguiente ejemplo hacemos que Merlin se presente al usuario y ofrezca su
ayuda. Vea la figura 3. Merlin.Speak("Hola,
mi nombre es ; Merlin, cuando necesite ayuda invoqueme ; y
le desmostraré mis poderes mágicos") Puede deshabilitar los efectos de sonido de cada
carácter cambiando la propiedad SoundEffectsOn. Merlin.SoundEffectsOn = .F.
Los caracteres
pueden moverse alrededor de la pantalla, es posible realizar esta acción
mediante el método MoveTo, a este método se le pasan dos parámetros, uno es
la posición horizontal y el otro es la posición vertical. En el siguiente
ejemplo movemos al carácter a otra posición: Merlin.MoveTo(300,300) La
acción más llamativa del agente reside en la ejecución de distintas
animaciones, las cuales son de grata satisfacción para el usuario de la aplicación.
En el siguiente ejemplo ejecutamos una animación denominada "Wave",
la cual hace saludar al agente. Merlin.Play("Wave") El
método Play ejecuta una animación, este método recibe un simple parámetro que
es el nombre de la animación a ejecutar. Cada carácter puede tener sus
propias animaciones, por ejemplo en la tabla 1 se muestran algunas de las
animaciones disponibles para el carácter llamado Merlin.
Tabla 1: Algunas de las animaciones disponibles para el carácter Merlin. Interactuando con el Usuario Quizá
la característica más importante del agente es la posibilidad de interactuar con
el usuario. Una de las posibilidades que tenemos que interactuar con el
usuario es hacer responder al agente a clicks efectuados con el mouse o
también a acciones tales como el drag-and-drop; la segunda posibilidad, y la
más importante, es hacer interactuar al agente del mediante el paso de
comandos de voz. Cabe
descatar que para el funcionamiento del reconocimiento de voz es necesario
instalar el Command and Control engine y el Speech Recognition engine, estos
archivos también estan disponibles en la página de microsoft, pero hay un
problema con respecto al motor de reconocimiento de voz pues la versión
disponible es en Inglés. Existe un producto de IBM llamado ViaVoice que
instala las dll necesarias para el reconocimiento de voz en español, para más
información revisar la pagina web de IBM. Bueno
siguiendo con la posibilidad de interactuar mediante el reconocimiento de voz
debemos decir que debemos agregar comandos usando para este fin la colleción
de comandos. Esta colleción tiene cinco métodos, eston son: Add, Insert,
Remove, RemoveAll y Command. Los comandos disponibles se listan cuando el
usuario hace un click con el botón derecho del mouse sobre el carácter, o
sea, se visualiza un menú emergente con los comandos que se pueden ejecutar.
En el siguiente ejemplo usaremos el método Add de la colleción de comandos
para agregar un comando llamado "Ayuda": Merlin.Commands.Add("Ayuda",
"Ayuda", "Ayuda", .T., .T.) Al
método Add se le pasan cinco parámetros, en el primero indicamos el nombre
del comando, el segundo corresponde al caption, el tercero a la palabra que
estará asociada al comando (esto en el caso que tengamos instalado algún
motor de reconocimiento de voz), en el cuarto parámetro indicamos si el
comando estará habilitado o no y por último indicamos si este estará visible
o no. Para que el carácter pueda
reaccionar a los distintos comandos cargados debemos poner código el método
Command, este método recibe como parámetro un objeto denominado UserInput, en
la tabla 2 se listan algunas de las propiedades de este objeto.
Tabla 2: Algunas propiedades del objeto UserInput. En
el siguiente código el carácter denominado Merlin responderá a los comandos
ayuda o mostrar magia dependiendo de la opción elegida: *-- Agregamos los comandos en el método *-- Init del formulario. Public Genio, Merlin, MyRequest *- Cargamos los caracteres y asignamos las *- variables Merlin y Genio a estos. THISFORM.Agent.Characters.Load("Merlin",; "C:\Windows\MsAgent\Chars\Merlin.acs") THISFORM.Agent.Characters.Load("Genie",; "C:\Windows\MsAgent\Chars\Genie.acs") Merlin = THISFORM.Agent.Characters("Genie") Genio = THISFORM.Agent.Characters("Genie") Merlin.Commands.Add("Ayuda", "Ayuda",; "Ayuda", .T., .T.) Merlin.Commands.Add("Magia", "Mostrar; Magia",
"Magia", .T., .T.) Merlin.MoveTo(200,200) Merlin.Show *-- En el Evento Command verificamos que *-- comando fue elegido. LPARAMETERS userinput DO CASE CASE
userinput.Name = "Ayuda" Merlin.Speak("Hola Amo, ¿puedo ; ayudarlo en algo?") CASE
userinput.Name = "Magia" Merlin.Speak("Voy
a mostrarle unos ; de mis tantos
poderes mágicos") Merlin.Play("DoMagic1") MyRequest
= Merlin.Play("DoMagic2") ENDCASE *-- En el Evento RequestComplete nos *-- fijamos si terminó *-- de ejecutar la animación "DoMagic2". LPARAMETERS request IF MyRequest.Status = 0 Genio.MoveTo(100,200) Genio.Show Merlin.Play("RestPose") ENDIF Componenetes Necesarios Para el buen funcionamiento
del agente es necesario instalar dos componentes fundamentales: el agente en sí
y el Text to Speech Engine (motor de habla). El agente en sí es relativamente
pequeño, 391 kb, y el Speech Engine, también denominado TTS, ronda los 800
kb. Estos componentes están disponibles en http://www.msdn.microsoft.com/workshop/c-frame.htm#/workshop/imedia/agent/default.asp. Para
poder usar el agente es necesario obtener algún carácter, los caracteres
también están disponibles en la página de microsoft. Los caracteres que
pueden ser bajados son: Merlin, Genie, Robby y Peedy; estos son un mago, un
genio, un robot y un loro respectivamente. Estos archivos tienen una
extensión ACS y contienen información, animaciones, etc. de cada carácter. Cabe descatar que el TTS,
disponible en la página de microsoft, es en inglés, en nuestro caso
deberíamos usar uno en español que podría ser el IBM ViaVoice Outloud (2,55
Mb), este TTS puede ser bajado de http://www.software.ibm.com/speech/dev/msagent.html. Palabras Finales El
agente de microsoft es una herramienta que nos permite poder interactuar con
el usuario a través de una interface amigable y llamativa, además agrega un toque
profesional a nuestras aplicaciones. Con respecto al reconocimiento de voz
debemos decir que es bastante bueno y con mucha proyección a futuro, recuedo
nuevamente que toda la documentación y los componentes de este producto
pueden ser bajados de la página web de microsoft. Sergio
Aguirre
realiza trabajos para InFox Creatividad & Tecnología, se puede entrar en
contacto con él en paychon@impsat1.com.ar. © 1999 FoxPress. All rights reserved. |