Las ventajas que te ofrece Microsoft Azure y el mundo.NET

Microsoft Bot Framework | Creando nuestro primer bot paso a paso (I)

Microsoft Bot FrameworkHace ya algunos meses, Microsoft nos sorprendió durante su evento anual //build/ presentando (entre otras cosas) el Microsoft Bot Framework.

Este framework que nos permitirá desarrollar bots que se comuniquen con los usuarios y realicen acciones automatizadas y desatendidas como responder a preguntas con ciertas palabras claves, realizar acciones en algún sistema informatizado para dar solución, registrar peticiones de un usuario, etc. Un ejemplo mostrado durante su presentación fue el uso de un bot que se comunicaba con un cliente de Domino’s Pizza recogiendo todos los detalles del pedido, registrando el mismo para que fuera preparado e indicando un tiempo estimado de entrega. A partir de ahí, la imaginación es el límite para aprovechar este framework.En el artículo de hoy, comenzaremos a ver el proceso de creación de un bot y que en el último artículo publicaremos para poder consumirlo de forma “real”.

Creando el proyecto

Como primer paso, tendremos que instalar lo necesario para poder “jugar” con esta tecnología:

  1. Instalar VS 2015 (vale la versión Community)
  2. Instalar la plantilla de bots que podemos encontrar aquí
  3. Descomprimir el contenido del archivo .zip que nos descargamos en la carpeta “%USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#\”
  4. Abrir Visual Studio
  5. Crear un proyecto usando la plantilla “Aplicación Bot”

01-project

Estructura del proyecto

Una vez se ha creado el proyecto basado en la plantilla de “Aplicación Bot” podemos comprobar que la estructura se corresponde con la de un proyecto WebApi como se puede observar en la siguiente imagen:

02-Structure

Por lo tanto, disponemos de un controlador que gestiona la funcionalidad que puede ejecutar el bot y que se llama en este caso MessagesController. Por otro lado, también disponemos del fichero WebApiConfig en la carpeta App_Start donde, entre otras cosas, se gestionan las rutas de acceso al bot y que, por defecto, serán “api/{NOMBRE_CONTROLADOR}/{id}”.

Visto esto, podemos conocer que para realizar las acciones del bot, es necesario comunicarse con él por la url conformada por la dirección del mismo seguido de /api/messages, es decir http://{MY_BOT_URL}/api/messages | https://{MY_BOT_URL}/api/messages

La página de presentación del bot, default.htm, mostrará una simple ayuda sobre los pasos a seguir.

image

Primeros tests

Una vez ejecutado el proyecto y viendo el renderizado de la página default.htm, ya estamos en disposición de realizar los primeros tests de nuestro bot pero… ¿Cómo?

Microsoft ha dispuesto un emulador con el que podremos realizar tests sencillos para comprobar el funcionamiento de nuestro bot, Bot Framework Emulator, y lo podemos descargar desde este enlace.

03-bot-channel-emulator

Una vez lo instalemos, ya podremos ejecutarlo para probar nuestro bot, abriéndose una sencilla ventana donde se puede configurar el punto de acceso para realizar la comunicación.

05-bot-channel-emulator-running

La configuración que debemos tener en cuenta es la siguiente:

  • Bot Url: La dirección en la que se encuentra publicado el bot que, en caso de realizar una prueba en local como la que estamos tratando, será http://localhost:{PORT}/api/messages. Para conocer el puerto en el que se está ejecutando, basta con mirar la dirección resultante a la hora de ejecutar el proyecto desde visual studio o, simplemente configurarlo en el proyecto tal y como se ve en la siguiente imagen.

04-web-configuration

  • Microsoft App Id: El id de la aplicación relacionada con el Bot. Si lo estamos ejecutando en local y no establecemos nada en nuestro archivo de configuración “web.config”, debemos dejarlo vacío.
  • Microsoft App Password: El password de acceso a la aplicación relacionada con el Bot. Si lo estamos ejecutando en local y no establecemos nada en nuestro archivo de configuración “web.config”, debemos dejarlo vacío.

Resultado de las pruebas

Una vez tengamos todo correctamente configurado, ya podemos escribir texto en el emulador de bots y ver el resultado que viene representado por un JSON que el propio emulador tratará para mostrar la conversación.

06-bot-conversation

Y este es el resultado. El bot, por defecto, nos responderá con el texto introducido y el número de caracteres que lo componen tal y como viene indicado en la acción Post del controlador MessagesController.

        ///
<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)
            {
                ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                // calculate something for us to return
                int length = (activity.Text ?? string.Empty).Length;

                // return our reply to the user
                Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters");
                await connector.Conversations.ReplyToActivityAsync(reply);
            }
            else
            {
                HandleSystemMessage(activity);
            }
            var response = Request.CreateResponse(HttpStatusCode.OK);
            return response;
        }

Conclusión

Como podéis comprobar en este primer artículo, crear un bot es una tarea muy sencilla pero ya lo iremos poniendo más difícil a medida que vayamos avanzando en su configuración en los siguientes artículos.

mm

Sobre Santiago Porras Rodríguez

UX Developer MVP Windows Platform Development Nokia Developer Champion Experto en desarrollo de experiencias de usuario. Apasionado por las nuevas tecnologías, sobre todo Microsoft, destacando Windows Phone, Windows 8 y SharePoint. Colaboro con la comunidad de desarrolladores como moderador de los foros de SharePoint en MSDN y TechNet, escribiendo artículos en mi blog personal en Geeks.ms y ocasionalmente sobre SharePoint en CompartiMOSS.com. Además, soy uno de los coordinadores de TenerifeDev, grupo de usuarios de .NET de Tenerife y WPSUG, grupo de usuarios de Windows Phone. Puedes encontrarme en la red microparticipando en Twitter con el usuario @saintwukong
Esta entrada ha sido publicada en Azure App Services, Microsoft Azure, Microsoft Bots y etiquetada como , , . Enlace permanente .
ENCAMINA, piensa en colores