Creando mi primer bot application en Visual Studio 2017
1. Ing. Vicente G. Guzman
@LucioMSP
Creando mi primer Bot Application en VS 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.
2. Ing. Vicente G. Guzman
@LucioMSP
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.
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 WebApiConfig.cs que está a cargo de las rutas de
nuestras opciones Bot y Json.
Una carpeta Controllers, que contiene el MessagesController.cs que brinda los controladores
que procesarán las acciones de los usuarios.
Una página web predeterminada como default.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.
3. Ing. Vicente G. Guzman
@LucioMSP
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<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity, () => 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<object>
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);
}
4. Ing. Vicente G. Guzman
@LucioMSP
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.
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.
5. Ing. Vicente G. Guzman
@LucioMSP
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.
Y aquí es donde hacemos nuestro típico saludo, ¡Hola Mundo!
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.