Agente en VB.net
[MSAgent]

Fecha: 21/Jul/2004 (19/07/2004
Autor: Adrian S. Ponce  e-mail adrianponce@mail.com


Bienvenidos

Pase y vea

Durante un larga tiempo e utilizado Agent para mi sistemas y aplicaciones, a mi criterio es una herramienta muy útil para interactuar con el usuario es por eso que e decidido escribir este articulo y podamos conocer un poco mas acerca de esta tecnología.

¿Que son los Microsoft Agent?

Ms Agent: Es un software de Interacción con el usuario  que facilita muchas tareas, es una forma bastante amigable de interactuar por ejemplo cuando en nuestros sistemas le indicamos al usuario que debe llenar cierto campo o checkbox ,ect.                                                         

En síntesis los MSAGENT es simplemente inteligencia artificial                                                                                                                                                                                                                       

Para más información sobre MSAGENT: http://www.microsoft.com/msagent/default.asp

Para más información sobre inteligencia artificial: http://www.microsoft.com/spanish/MSDN/estudiantes/ia/intro/default.asp

Resumen

Lo que veremos a continuación será como se utiliza el Agnet, intentáramos mostrar como llamar a todos sus gestos utilizando un listbox, hacer que diga lo que nosotros queramos a través de un textbox, posesionar el agent utilizando coordenadas de X,Y con dos textbox y por ultimo cambiaremos el globo con un button.

NOTA: (Recodemos que el mismo  es un Componente COM). Aunque los COM tienen ciertas limitaciones con respecto a .Net, son lo suficientemente versátil como para convertirse en la infraestructura de numerosas aplicaciones.

 

Dedos al teclado

Lo primero que aremos será crear un nuevo proyecto al que llamaremos agente

Una vez que tenemos nuestro form creado insertaremos el componente COM (Microsoft Agent control 2.0)

Este se posesionara en el toolbox de nuestra Workspace

A continuación insertaremos este componente sobre el form y después una serie de controles, tres Button, tres textbox, un Listbox y cuatro GroupBox para dar un aspecto más amigable a la Interfase

 


Código explicito:

Para comenzar insertaremos la variable del componente Axagnet.dll (MSANGET) y debajo la variable que nos permitirá mostrar todos la animaciones dentro del listbox

A continuación sigue código en Visual Basic.net

Dim merlin As AgentObjects.IAgentCtlCharacterEx 'variable para llamar al agent

Dim AnimationName As Object 'variable para llamar a las animaciones (gestos) del Agent

En el sucedo Load llamaremos al agente que en este caso será merlín pero podremos utilizar cual quisiéramos como genio o cualquier otro que este instalado en nuestro equipo. Seleccionaremos su motor de voz ("recordemos que los agentes no tienen motor de voz incorporado una debe seleccionar el que desea") en este caso seleccionaremos el motor de voz español ("&HC0AS"),una vez que obtenemos todo eso ahora llenaremos el listbox con todos las animaciones del mismo esto la permitirá ver todos sus gestos.

Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

        Agent.Characters.Load("merlin", "merlin.acs") 'se llama a merlin

        merlin = Agent.Characters("merlin") 'se selecona a merlin

        merlin.LanguageID = &HC0AS 'motor de lenguaje

        merlin.Show() 'se inicia Merlin

        merlin.Speak(Me.Text) 'Habla

        AnimationListBox.Items.Clear() 'Borramos el contenido de list

        For Each AnimationName In merlin.AnimationNames 'Cargamos todas la animaciones

            AnimationListBox.Items.Add(AnimationName) 'Agregamos los Items

        Next AnimationName 'Finalizamos con un next

    End Sub 

Sobre el Button1 insertáramos el siguiente código que nos permite que Merlín lea o diga lo que esta escrito en el textbox

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

merlin.Speak(TextBox.Text) 'Leer el texbox

End Sub

Sobre el Button2 cambiaremos la forma del globo de dialogo

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

merlin.Think("Comida") 'Cambio de Globo

End Sub

Sobre el Button3 utilizando los textbox’s  CharPosn1 y CharPosn2 ingresaremos las coordenadas que queramos Ej. X 200 Y 100

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        merlin.MoveTo(CShort(CharPosn1.Text), CShort(CharPosn2.Text)) 'Posicion del agnente

    End Sub 

Finalmente sobre el listbox “Animationlistbox” al hacer clic sobre aluna de sus animaciones merlín la ejecutara

Private Sub AnimationListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnimationListBox.SelectedIndexChanged

        merlin.Play(AnimationListBox.Items(AnimationListBox.SelectedIndex)) 'selección de la animación

  End Sub

Código completo

Dim merlin As AgentObjects.IAgentCtlCharacterEx 'variable para llamar al agent

    Dim AnimationName As Object ’Variable de animacion

    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

        Agent.Characters.Load("merlin", "merlin.acs") 'se llama a merlin

        merlin = Agent.Characters("merlin") 'se selecona a merlin

        merlin.LanguageID = &HC0AS 'motor de lenguaje

        merlin.Show() 'se inicia Merlin

        merlin.Speak(Me.Text) 'Habla

        AnimationListBox.Items.Clear() 'Borramos el contenido de list

        For Each AnimationName In merlin.AnimationNames 'Cargamos todas la animaciones

            AnimationListBox.Items.Add(AnimationName) 'Agregamos los Items

        Next AnimationName 'Finalizamos con un next

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        merlin.Think("Comida")

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        merlin.Speak(TextBox.Text) 'El Agnte (merlin) Lee el contenido del textbox

    End Sub

 

    Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked

        Dim NewProcess As Process = New Process

        NewProcess.Start("http://www.nnet.ar.gs")

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        merlin.MoveTo(CShort(CharPosn1.Text), CShort(CharPosn2.Text)) 'Posicion del agnente

    End Sub

Private Sub AnimationListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnimationListBox.SelectedIndexChanged

        merlin.Play(AnimationListBox.Items(AnimationListBox.SelectedIndex)) 'seleccion del agent

    End Sub

 


Requisitos

Microsoft Agent character Merlín http://www.microsoft.com/msagent/downloads/user.asp

Motor de voz http://www.microsoft.com/msagent/downloads/user.asp

Para Windows XP http://activex.microsoft.com/activex/controls/sapi/spchapi.exe

Otras Fuentes acerca de .NET

http://www.nnet.ar.gs

 

Fichero con el código de ejemplo: adrianponce_Agentvbnet.zip - Tamaño 46KB


Adrian S. Ponce (adrianponce@mail.com), Neuquén Capital, Argentina, es Programador. Desarrolla aplicaciones en VB 6, VB.net, C#.Net, ASP.NET, Aplicaciones móviles Trabaja en, Municipalidad de Neuquén en donde se encarga de crear sistemas y aplicaciones de ofimática abocadas a mejorar el rendimiento y facilitar el trabajo diario.


ir al índice