Creando mi primer Bot Application en Visual Studio 2017


Introducción

En todo proyecto, no solo del mundo desarrollo es de plena importancia conocer la estructura, puesto que esta nos ayuda a levantar de forma correcta toda idea que se desea llevar a cabo.

Comencemos

Como se imaginarán, el primer paso es abrir Visual Studio y generar un nuevo proyecto, en donde seleccionaremos la plantilla de aplicación bot (Bot Application). Asignémosle un nombre al proyecto, para este ejemplo didáctico lo dejare como BotApplication.

01

Estructura del Proyecto

Como lo mencione anteriormente debemos de familiarizarnos con la estructura del proyecto, para comprender cómo funciona el bot, echémosle un vistazo a lo que se ha generado desde la plantilla.

02

Contamos:

  • Con una serie de Propiedades y Referencias como las que tenemos en todos nuestros proyectos de Visual Studio.
  • Una carpeta App_Start que contiene el cs que está a cargo de las rutas de nuestras opciones Bot y Json.
  • Una carpeta Controllers, que contiene el cs que brinda los controladores que procesarán las acciones de los usuarios.
  • Una página web predeterminada como htm que aparecerá cuando ejecutemos nuestro proyecto.
  • Así mismo como una serie de archivos de configuración de los paquetes y WebApi.

Tal y como se generó podemos ejecutarlo, es decir, no necesitamos más para hacer que nuestro bot funcione.

MessageController.cs

Conozcamos un poco la lógica de nuestro bot, para esto ingresemos a la carpeta Controllers, y abramos el archivo MessageController.cs, el cual es nuestra clase principal en nuestro proyecto. Echemos un vistazo específicamente al siguiente método, el cual es quien brinda la magia:

///
<summary>
        /// POST: api/Messages
        /// Receive a message from a user and reply to it
        /// </summary>

        public async Task Post([FromBody]Activity activity)
        {
            if (activity.Type == ActivityTypes.Message)
            {
                await Conversation.SendAsync(activity, () =&gt; new Dialogs.RootDialog());
            }
            else
            {
                HandleSystemMessage(activity);
            }
            var response = Request.CreateResponse(HttpStatusCode.OK);
            return response;
        }

El método recibe un objeto Activity (también llamado activity) que se utiliza para la comunicación entre el usuario y el bot. Esta actividad puede ser de diferentes tipos, entre ellos se encuentra el tipo de mensaje, que contiene información enviada entre los dos extremos de la conversación.

Recordatorio: esta plantilla consiste en un bot que devuelve el número de caracteres del mensaje enviado por el usuario.

Si la actividad que recibe el bot es de tipo mensaje, navegará a la clase RootDialog (carpeta Dialogs), método MessageReceivedAsync | el cual obtendrá la longitud de caracteres que se ingresaron en el campo de entrada, después generará una respuesta y se enviará de vuelta al usuario. Luego esperará a que el usuario le envíe un mensaje nuevamente.

Si la actividad no es tipo de mensaje, se redirigirá a otra función del controlador que está a cargo de las acciones que podemos predefinir para los diferentes tipos de actividades enviadas al bot.

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable result)
        {
            var activity = await result as Activity;

            // calculate something for us to return
            int length = (activity.Text ?? string.Empty).Length;

            // return our reply to the user
            await context.PostAsync($"You sent {activity.Text} which was {length} characters");

            context.Wait(MessageReceivedAsync);
        }

Ejecución

Entonces, ya hemos visto más arriba cómo se estructura un bot y cómo responde a los mensajes que recibe del usuario. ¡Así que vamos a poner en marcha nuestro bot!
Al ejecutarlo, se abrirá una ventana del navegador que mostrará el archivo predeterminado htm.

03

Después de realizar lo anterior, pasemos a abrir el emulador de Framework Bot e ingresemos en la barra de direcciones la siguiente ruta:

                   http://localhost: { Puerto en el que se está ejecutando }/api/messages

La cual quedaría de la siguiente manera para este ejemplo:

http://localhost:3979/api/messages

Por el momento, no ingresemos nada en los campos de Microsoft App ID o Microsoft App Password porque no hemos registrado nuestro bot en el Microsoft Bot Framework.

04

Una vez conectado, aparecerá el mensaje “POST 200 [conversationUpdate]” en la pantalla derecha de la aplicación. Esto significa que el bot está esperando que enviemos un mensaje.

04-5

Y aquí es donde hacemos nuestro típico saludo, ¡Hola Mundo!

05

Como podemos ver, nos responde con el número de caracteres que utilizamos, ¡genial!, ya con esto hemos creado nuestro primer bot.

Para resumir, podemos concretar que este fue un proceso bastante simple, pero será más complejo a medida que agreguemos nuevas características para hacerlo más inteligente.

En el siguiente articulo conoceremos el procedimiento de como publicar nuestro bot.

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s