Mi primer Bot con Microsoft Bot Framework en .NET y Xamarin

Los desarrolladores siempre tratamos de encontrar la manera más fácil de resolver problemas. Esta vez, me complace presentarles una manera fácil de crear su propio Bot en cuestión de minutos, desde su computadora local hasta la nube. Pero eso no es suficiente, daremos un paso más y conectaremos nuestro Bot con Xamarin, veremos lo fácil que es empezar.

Microsoft Bot Framework

Entonces, antes de comenzar necesitamos descargar algunas cosas:

0. Requerimientos

  1. Descarga la plantilla para Visual Studio aquí. Al tener esta plantilla evitarás tener que instalar los Nuget Packages y tener un código inicial.
  2. Para instalar la plantilla, necesitas copiar el archivo zip (no lo extraigas) a tu carpeta de plantillas de Visual Studio, en mi caso es: C:\Users\Christian\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C# ... Solamente tienes que cambiar "Christian" con tu usuario.
  3. Descarga e instala el emulador del Bot Framework aquí
  4. Cuenta en Azure para publicar el Bot (que podría ser en cualquier lugar, pero es más fácil aquí)

1. Crear el Bot

Visual Studio Template

Vamos a crear el Bot siguiendo estos pasos:

[Serializable]
public class OrdenDeComputadora
{

}
public enum Memoria
{
    _4GB,
    _8GB,
    _16GB
}
public Memoria? OpcionDeMemoria { get; set; }
[Serializable]
public class OrdenDeComputadora
{
    public Memory? OpcionDeMemoria { get; set; }

    public static IForm<OrdenDeComputadora> BuildForm()
    {
        return new FormBuilder<OrdenDeComputadora>()
            .Message("Bienvenido al Bot de Venta de Computadoras!")
            .Message("Con mi ayuda puedes armar tu computadora, solo elige una option o escribe el numero que deseas.")
            .Build();
    }
}
using Microsoft.Bot.Builder.FormFlow;
using Microsoft.Bot.Connector;
using BotVentaDeComputadoras.Ordenes;
internal static IDialog<OrdenDeComputadora> MakeRootDialog()
{
    return Chain.From(() => FormDialog.FromForm(OrdenDeComputadora.BuildForm));
}
await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
await Conversation.SendAsync(activity, MakeRootDialog);

Bot Framework Emulator

2. Publica el Bot

No importa si no agregaste más "preguntas", ya estás listo para publicar el bot. Voy a utilizar Azure para facilitar esta tarea y esta vez voy a publicar directamente desde Visual Studio, pero esto es sólo para empezar rápidamente, no recomiendo quedarse asi, en su lugar debemos configurar un pipeline automatizado utilizando herramientas como Jenkins o Team Services. Por lo tanto, por ahora puedes seguir estos pasos:

  1. Haz clic derecho en el proyecto Web y luego clic en "Publish"
  2. Elige "Microsoft Azure App Service" y "Create New"
  3. Llena los espacios en blanco (nombre de la aplicación de la API, suscripción, grupo de recursos y el App Service Plan)
  4. Al elegir un App Service Plan puedes crear uno nuevo y elegir la opción Free (yo lo hice)
  5. Haz clic en Create y espera un poco de tiempo, cuando termine VS lanzará la API en el navegador

VS Publish Bot with Azure


VS Publish Bot with Azure - Free


3. Registrar el Bot

Necesitas registrar tu Bot para que puedas agregar fácilmente más integraciones y enfocarte sólo en el Bot. Así que para esto solo tienes que ir a: https://bots.botframework.com, inicia sesión con tu cuenta y luego:

4. Integrar con Xamarin

La forma en que vamos a integrar el Bot con nuestra aplicación Xamarin es mediante la integracion Direct Line, esta es una API REST que utiliza la autenticación estándar de claves/token, si estás interesado en saber más puees ir a la documentacion aquí. Esta vez, yo te daré una aplicación donde solo necesitas cambiar la llave del Bot, puedes profundizar leyendo el código y extendiéndolo (podría escribir un artículo despues). La idea aquí es ensuciarte las manos lo antes posible y demostrarte lo fácil que es empezar. Por lo tanto, sige estos pasos:

Icono de Direct Line

Esto es lo que debes ver cuando se ejecuta la aplicación ...

Xamaring App Bot running

Enlaces de Referencia

  1. Codigo fuente del Bot: https://github.com/christianhxc/BotVentaDeComputadoras
  2. Codigo fuente del app en Xamarin: https://github.com/christianhxc/XamarinFormsBot
  3. Presentacion: https://www.slideshare.net/christianhxc/mi-primer-bot-bot-framework-xamarin
  4. Ejemplos: https://github.com/Microsoft/BotBuilder-Samples
  5. Video del Taller 'Mi Primer Bot': https://www.youtube.com/watch?v=v6fgn8GB5KY

Esta es mi propia versión, el contenido original es de: @HJaimesDev y @JorgeCupi

Yo he dado esta charla como un taller para el Xamarin Fest en la Ciudad de Guatemala, puedes echar un vistazo a otra gran charla sobre cómo integrar Custom Vision con Xamarin de Guillermo Zepeda @cloudzepeda en este [link]

Resumen

Espero que hayas disfrutado de este artículo y experimentado por ti mismo lo fácil que es empezar con el Bot Framework y no sólo eso, conectarlo con tu aplicación Xamarin. Esto es sólo un jumpstart, no hice un deep dive en cada sección porque la intención era lograr comenzar rápido (sí, lo he escrito tantas veces lol). Si quieres hacer todo lo que hice aquí puedes seguirme en el video de Youtube que puse en los enlaces de referencia, ese es el video de mi charla que mencioné, así que si algo me falto o no me logre explicar bien entonces puedes usar el video como referencia tambien (me disculpo de antemano por los errores que cometi, los nervios traicionan siempre lol)