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

Alexa y Google Assistants con LUIS

Entrando en el mundo de las aplicaciones (Skills o Actions) para Alexa y/o Google Assistants, se nos plantea el reto de reutilizar, en todo lo posible, los elementos que forman parte de nuestra aplicación, la lógica de negocio, el NLP, etc.

La aplicación de un asistente es, básicamente una API que implementa una lógica de negocio junto con un servicio de procesamiento de lenguaje natural o NLP (Natural Language Processing). Alexa y Google Assistants se encargan de convertir nuestras palabras en texto para que podamos implementar nuestros diálogos con la funcionalidad necesaria para que nuestra aplicación interactúe con los usuarios.

Alexa

La arquitectura propuesto por Alexa para que implementemos una Skills se basa en utilizar un modelo de interacción donde podemos definir todos los Intents (intenciones) junto con los Slots (entidades) extraídas de las frases del usuario. Este es el proceso más básico, ya que existen otras funcionalidades para implementar diálogos y validaciones.

Con estos Intents y Slots, Alexa hace una petición POST a un EndPoint donde implementamos nuestra lógica de negocio y devolvemos la respuesta para que Alexa se la entregue al usuario.

Google Assistants

La arquitectura de Google Assistants es muy similar a la de Alexa, una Action se implementa sobre la base de Intents y Entities que se definen en la herramienta Dialogflow de Google.

Estos Intents pueden ser enviados a un Webhooks. A diferencia de Alexa, en Dialogflow podemos tener Intents que responden al usuario directamente, sin necesidad de comunicarse con nuestro Endpoint.

¿Cómo reutilizar los elementos de nuestra arquitectura?

A nivel de dispositivo está claro que no vamos a reutilizar y tampoco vamos a necesitar implementar ningún servicio de Speech to Text, ya que de esto se encarga el dispositivo.

La lógica de negocio la podemos tener en una API que implemente la especificación de Alexa y Google para recibir y responder ante una petición de un usuario. Hay que tener en cuenta que Alexa y Google hablan diferentes idiomas y que el código que procesa la petición y el código que responde al asistente no pueden ser el mismo, pero si pueden utilizar la misma lógica de negocio.

El servicio de procesamiento de lenguage (NLP) debería de ser el mismo,  con lo que podemos aprovechar toda la definición y entrenamiento que hagamos para que sea efectivo en los dos asistentes. El objetivo es que nuestra aplicación entienda los Intents del usuario mediante un NLP común a las dos plataformas, cómo podemos ver en el diagrama anterior.

Dialogflow de Google permite, de una forma sencilla, deshabilitar o, realmente, no hacer ningún tipo de procesamiento del lenguaje y enviar todo el texto del Speech del usuario al Webhook definido en el servicio. Básicamente nos creamos un único Intent vacío con las llamadas al Webhook activadas.

Alexa no lo tiene del todo claro. Han deprecado un elemento de configuración (AMAZON.Literal) que nos permitía no hacer ningún tipo de procesamiento de lenguaje y pasar todo el texto al Endpoint. Aún así, es posible implementar un Intent que procese cualquier frase y que envíe el texto al Endpoint usando un Slot personalizado.

Aunque no vamos a reutilizar el 100% de nuestro código, hay que tener en cuenta que las sesiones, los diálogos, la forma en que podemos modificar el comportamiento del habla, etc., son diferentes en cada asistente.

Nuestra lógica de negocio junto con el procesamiento de lenguaje natural (NLP), sí que se puede reutilizar.No tiene que ser al 100% (porque seguro que podemos hacer uso de las capacidades especiales de cada asistente), pero sí en la medida en que nos permita interactuar con nuestra capa de negocio y/o con nuestros sistemas o aplicaciones.

mm

Sobre Alberto Diaz Martin

Alberto Diaz cuenta con más de 15 años de experiencia en la Industria IT, todos ellos trabajando con tecnologías Microsoft. Actualmente, es Chief Technology Innovation Officer en ENCAMINA, liderando el desarrollo de software con tecnología Microsoft, y miembro del equipo de Dirección. Para la comunidad, trabaja como organizador y speaker de las conferencias más relevantes del mundo Microsoft en España, en las cuales es uno de los referentes en SharePoint, Office 365 y Azure. Autor de diversos libros y artículos en revistas profesionales y blogs, en 2013 empezó a formar parte del equipo de Dirección de CompartiMOSS, una revista digital sobre tecnologías Microsoft. Desde 2011 ha sido nombrado Microsoft MVP, reconocimiento que ha renovado por séptimo año consecutivo. Se define como un geek, amante de los smartphones y desarrollador. Fundador de TenerifeDev (www.tenerifedev.com), un grupo de usuarios de .NET en Tenerife, y coordinador de SUGES (Grupo de Usuarios de SharePoint de España, www.suges.es)
Esta entrada ha sido publicada en Alexa, Asistentes, Google Assistants, LUIS y etiquetada como , . Enlace permanente .
Suscríbete a Piensa en Sofware desarrolla en Colores

Suscríbete a Piensa en Sofware desarrolla en Colores

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores