viernes, 13 de marzo de 2020

Desarrollo de chatbots en Microsoft Bot Framework con Szymon Rozga

'Practical Bot Development', subtitulado, 'Designing and Building Bots with Node.js and Microsoft Bot Framework', es un tratado largo y completo sobre los conceptos y la construcción de chatbots en el entorno Microsoft, un libro orientado a desarrolladores pero que no elude sino que, por el contrario, explica en mi opinión muy correctamente, algunos aspectos teóricos que hay detrás de forma que también es una buena vía para aprender conceptos generales sobre chatbots, y más aún teniendo en cuenta las similitudes de conceptos con otras plataformas como el Dialogflow de Google.

Aunque todo el libro es muy práctico y orientado a la ejemplificación mediante código real de todos los conceptos, también se preocupa, como se ha dicho, de explicar bien los fundamentos. En ese sentido, hay una cierta tendencia, aunque no radical, a que los primeros capítulos sean algo más conceptuales y en los últimos, por el contrario, predomine la codificación.

El libro se estructura en catorce capítulos, como sigue:
  • 'Chapter 1: Intorudctions to Chat Bots:' Comienza por los rudimentos básicos: explicar lo que es un chatbot incluyendo un par de ejemplos triviales de código, explicar el auge actual de los chatbots o explorar su utilidad. También describe la anatomía de un chatbot incluyendo el elemento gestor de la conversación y el elemento gestor del lenguaje natural e incluyendo ya conceptos como los 'intents', las entidades y la acciones y la integración con canales.

  • 'Chapter 2: Chat Bot Natural Language Understanding:' Un capítulo más conceptual en que explica las principales ideas sobre entendimiento de lenguaje natural. Define primero un poco el campo de NLU ('Natural Language Understanding') y luego aporta algunos rudimentos sobe machine learning, incluyendo los tipos de aprendizajes y algunos fundamentos sobre los algoritmos empleados. Finalmente explora las tareas que se realizan en el procesamiento de lenguaje natural,

  • 'Chapter 3: Language Understanding Intelligence Service (LUIS):' explica las fundamentos del uso de LUIS, el servicio de entendimiento de lenguaje natural de Microsoft. Explica cómo acceder y crear una aplicación, cómo crear 'intents' y 'utterances' y cómo desplegar una aplicación. Continua hablando del uso de entidades, prestando especial atención a las ya predefinidas como 'age', 'dimension', 'money' y así un bastante extenso etcétera. Luego explica cómo entrenar entidades y cómo crear entidades a medida. Y también se adentra en tipos complejos de entidades como las compuestas, jerárquicas, listas o de expresiones regulares. Además explica aspectos más avanzados como el aprendizaje activo, la integración con la corrección ortográfica, el importado y exportado de aplicaciones o el uso de LUIS mediante API.

  • 'Chapter 4: Conversation design:' Aporta algo de teoría sobre el diseño de conversaciones, como la identificación de casos de uso habituales o su reporesentación mediante grafos. Luego habla de aspectos como las respuestas del bot, la autenticación y autorización o el desarrollo de tarjetas ('cards') especializdas. Finaliza aportando algunas guias y buenas prácticas en el diseño de conversaciones.

  • 'Chapter 5: Introducing the Microsoft Bot Framework:' Inicia el recorrido más orientado al código y para ello en este capítulo aporta las ideas básicas de Microsoft Bot Framework, especialmente Microsoft Bot Builder SDK. Se explica la instalación y configuración, la conexión con canales, el uso de Microsoft Bot Emulator, la conexión con Azure y se ejemplifica todo con un sencillo bot que interactúa vía Facebook Messenger. Luego se explican algunos conceptois del SDK como sesiones, mensajes, cascadas ('waterfalls'), entradas ('prompts'), diálogos, reconocedores ('recognizers'), los botones o las tarjetas y se ejemplifica todo con un bot que gestiona la agenda

  • 'Chapter 6: Diving into the Bot Builder SDK:' Un extenso capítulo en que profundiza en las capacidades del Bot Builder hablando de los estados de las conversaciones. profundizando en los tipos y uso de los mensajes incluyendo los proactivos, el contenido enriquecido, las acciones sugeridas los canales, los chat grupales, los diálogos personalizados, las acciones o las librerías.

  • 'Chapter 7: Building an Integrated Bot Experience:' Explora la integración del bot con elementos del exterior basándose como ejemplo en la integración con Google Calendar. Comienza con unos temas previos para lo que, tras unas breves palabras sobre autenticación con OAuth 2.0, explica cómo configurar las APIs de Google, cómo integrar la autenticación con el Bot Builder o el mecanismo de login. Y luego ya entra en la integración con el API de Google Calendar y cómo se trata desde el código del bot.

  • 'Chapter 8: Extending Channel Functionality:' En este capítulo pretende ir más allá del uso básico de canales viendo cómo invocar funcionalidad nativa específica propia de cada canal. Para ello se explica la integración con Slack, cómo conectarse, cómo es y cómo usar el API de Slack. Habla de cómo crear mensajes interactivos (mensaje que incluye, además de información, botones y menús) y del uso del multipaso ('multistep').

  • 'Chapter 9: Creting New Channel Connector:' explica cómo hacer que el bot interactue con canales no previstos en la plataforma o de manera personalizada, usando para ello la Direct Line API. Primero explica brevemente en que consiste el API y luego aborda la construcción de un chat web personalizado. Luego habla de los bots de voz y ofrece un ejemplo usando Twilio y, en concreto, el producto Programmable Voice. Posteriormente explica el estandar SSML ('Speech Synthesis Markaup Language') soportado por Google Assitant y Amazon Alexa y cómo se puede hacer conversión texto-voz usando SSML.

  • 'Chapter 10: Making the Chatbot Smarter:' Repasa los servicios cognitivos disponibles en Azure y que pueden ser usados por un bot para corrección ortográfica, análisis de sentimiento, soporte multi-lenguaje, soporte para preguntas-respuestas o visión por computador.

  • 'Chapetr 11: Adaptive Cards and Custom Graphics:' entra en la especialización y personalización en materia de tarjetas y gráficos. Explica y ejemplifica con código las capacidades de las 'Adaptive Cards' de Microsoft y luego aborda los gráficos personalizados usando el concepto de 'headless browsers'.

  • 'Chapter 12: Human Handoff:' Trata del paso del control entre el bot y un humano para las situaciones en que se exceden las capacidades del bot. Tras explicar algunas ideas generales, ejemplifica cómo hacerlo en el caso de Facebook Messenger mediante el uso del Facebook Handoff Protocol.

  • 'Chapter 13: Chatbot Analytics:' Aborda el tema de los indicadores y la analítica en los chatbots explorando primero las preguntas habituales que quisiéramos contestar sobre el uso de los chatbots (demografía sentimiento, retención de usuario, etc) y luego explora plataformas analíticas como el propio dashboard ofrecido por Microsoft pero también Facebook Analytics. En el resto del capítulo trabaja, ya más en detalle y con ejemplos de código, con Dashbot y Google Chatbase

  • 'Chapter 14: Applying Our Learnings Alexa Skill Kit:' Capítulo final en que se realiza la integración con Alexa. Se cuentaa cómo crear una nueva skill, las capacidades NLU y de reconocimiento automático de voz de Alexa y se trabaja con el Alexa Skills Kit para Node.js explicando cómo conectar todo con Microsoft Bot Framework.
'Practical Bot Development' es en mi opinión un gran libro porque aporta todo el conocimiento real, práctico y aplicado en código que puede necesitar un desarrollador pero bien escrito y muy bien rodeado de explicaciones de concepto que hacen entender muy bien toda la idea. Muy recomendable para cualquier desarrollador de chatbots en entorno Microsoft y para todo aquel que, queriendo entender qué hacen y cómo los chatbots no se incomode por la abundancia de código o de pantallas de uso de las herramientas.

Szymon Rozga

(Fuente: Traducción y ligera elaboración propia de la biografía en su página oficial)

Szymon Rozga
Szymon Rozga tiene más de 15 años de experiencia práctica en el sector del desarrollo de software. Encontró su pasión trabajando en aplicaciones de front end en Wall Street. El interés en la interfaz de usuario le llevó a un tour por las diferentes tecnologías de interfaz de usuario en Windows, en la Web y en las plataformas Android e iOS.

Ha gestionado equipos de ingenieros en una gran variedad de proyectos y, desde 2017, ha dedicado su tiempo a la construcción de chatbots para clientes en canales de texto y voz. Ha trabajado en tecnología en Amazon, Infusion y Blue Metal y ha estado implicado en una variedad de proyectos de chatbots. En su papel de Arquitecto Jefe de Tecnologías Emergentes, se mantiene cognitivamente flexible mediante la lectura y asistencia a presentaciones sobre nuevas tecnologías, enseñando a clientes, dirigiendo sesiones de descubrimiento, mentorizando a ingenieros y ayudando a clientes a aplicar tecnologías como chatbots, blockchain y realidad aumentada a sus problemas de negocio.

Es autor del libro 'Practical Bot Development: Designing and Building Bots with Node.js and Microsoft Bot Framework'

Está casado, tiene un hijo y en su tiempo libre disfruta haciendo senderismo, leyendo ficción, yendo a la playa o tocando la guitarra.

Puedes saber más del autor visitando su página oficial o siguiéndole en twitter donde se identifica como @srozga.

No hay comentarios:

Publicar un comentario