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.

 

 

 

 


Figura 1: Merlin muestra al Loro realinzando algunos cálculos.

 

 


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.

 


Figura 3: Merlin presentadose al usuario de la aplicación.

 


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.

 

 

Animación

Efectos de Sonido

Asignado a un Estado

Alert

No

Listening

Announce

Si

No

Congratulate

Si

No

Decline

No

No

Greet

Si

No

Hide

Si

Hiding

Pleased

No

No

Read

Si

No

RestPose

No

Speaking

Search

Si

No

Searching

Si

No

Show

Si

Showing

Suggest

Si

No

Think

No

No

Write

Si

No

 

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.

 

 

Propiedad

  Descripción

Characterid

Un string refiriendose a que carácter recibió en comando.

Name

El nombre del comando que fue recibido.

Voice

El string que fue escuchado por el carácter.

 

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.