Google Assistant. Desarrollo de aplicaciones IoT para Arduino y ESP8266

Primera edición, 2021

© 2021 Tomás Domínguez Mínguez

© 2021 MARCOMBO, S. L.

www.marcombo.com

Diseño de cubierta: ENEDENÚ DISEÑO GRÁFICO

Maquetación: cuantofalta.es

Asesor técnico: Rubén Beiroa

Correctora: Mónica Muñoz

Directora de producción: Mª Rosa Castillo Producció del ebook: booqlab

«Cualquier forma de reproduccion, distribucion, comunicacion publica o transformacion de esta obra solo puede ser realizada con la autorizacion de sus titulares, salvo excepcion prevista por la ley. Dirijase a CEDRO (Centro Espanol de Derechos Reprograficos, www.cedro.org) si necesita fotocopiar o escanear algun fragmento de esta obra».

ISBN: 978-84-267-3241-5

Dedicado a todos aquellos que, desde Google, han colaborado para que Internet se convierta en nuestro segundo hogar

TABLA DE CONTENIDO

1. INTRODUCCIÓN

1.1 IoT

1.2 Interfaces de voz

1.3 Sistemas conversacionales

2. GOOGLE ASSISTANT

3. SU PRIMER ASISTENTE

3.1 Conceptos básicos de sistemas conversacionales

3.2 Requisitos previos

3.3 Creación del proyecto en Actions on Google

3.4 Modificación de la intención de bienvenida en Dialogflow

3.5 Activación del micrófono del simulador del asistente

4. ACTIONS ON GOOGLE

4.1 Consola

4.1.1 Sistema de pestañas

4.1.1.1 Pestaña de información general (Overview)

4.1.1.2 Pestaña de desarrollo (Develop)

4.1.1.3 Pestaña de pruebas (Test)

5. DIALOGFLOW

5.1 Consola

5.1.1 Configuración de los agentes

5.1.2 Menú lateral

6. CONCEPTOS BÁSICOS PARA EL DESARROLLO DE SISTEMAS CONVERSACIONALES CON DIALOGFLOW

6.1 Intenciones (Intents)

6.1.1 Práctica de uso de intenciones

6.2 Contextos (Contexts)

6.2.1 Práctica de uso de contextos

6.3 Entidades (Entities)

6.3.1 Práctica de uso de entidades personalizadas

6.4 Cumplimiento (fulfillment)

6.4.1 Conceptos previos al desarrollo de un cumplimiento

6.4.1.1 Protocolo HTTP

6.4.1.2 Tecnología webhook

6.4.1.3 Formato de datos JSON

6.4.2 Librerías de desarrollo

6.4.2.1 Librería Firebase Functions

6.4.2.2 Librería Actions on Google

6.4.3 Estructura de ficheros de un cumplimiento

6.4.4 Desarrollo de un cumplimiento

6.4.4.1 Generación dinámica de respuestas

6.4.4.2 Manejo de contextos y parámetros desde un cumplimiento

6.4.5 Depuración del código de un cumplimiento

6.4.5.1 Análisis de solicitudes y respuestas HTTP

6.4.5.2 Generación de mensajes de traza

7. PRÁCTICAS DE DESARROLLO DE SISTEMAS CONVERSACIONALES CON DIALOGFLOW

7.1 Juego de «adivina el número»

7.1.1 Creación de las intenciones

7.1.2 Desarrollo del cumplimiento

7.2 Juego de «sigue la secuencia»

7.2.1 Creación de las intenciones

7.2.2 Desarrollo del cumplimiento

7.3 Creación de las intenciones comunes de fallback

7.4 Creación de las intenciones comunes de ayuda y salida

7.5 Creación de las acciones (actions)

7.6 Uso del asistente desde un teléfono móvil

8. EXPORTACIÓN E IMPORTACIÓN DE AGENTES EN DIALOGFLOW

9. FIREBASE

9.1 Consola

9.1.1 Panel principal

9.1.2 Menú lateral

9.2 Práctica de creación de un proyecto

10. FIREBASE REALTIME DATABASE

10.1 Consola

10.2 Práctica de creación de una estructura de datos

11. EL MÓDULO ESP-01

11.1 Características del ESP-01

11.2 Programación del ESP-01 desde el IDE Arduino

11.3 Práctica de integración de Arduino con ESP-01

11.4 Librería ESP8266Wifi

11.5 Práctica de acceso a Internet

12. INTEGRACIÓN DE FIREBASE REALTIME DATABASE CON ESP8266

12.1 Librería Firebase ESP8266 Client

12.1.1 Configuración de las credenciales de la base de datos

12.1.2 Lectura y escritura de datos

12.1.3 Sincronización de datos

12.2 Prácticas de integración de Firebase Realtime Database con ESP8266

12.2.1 Lectura y escritura de los pines digitales del ESP-01 desde Firebase Realtime Database

12.2.1.1 Desarrollo del programa ESP-01 usando una consulta manual

12.2.1.2 Desarrollo del programa ESP-01 usando una función de callback

12.2.2 Lectura de los pines analógicos de Arduino desde Firebase Realtime Database

12.2.2.1 Creación de la estructura de datos en Firebase Realtime Database

12.2.2.2 Desarrollo del programa Arduino

12.2.2.3 Desarrollo del programa ESP-01

13. FIREBASE CLOUD FUNCTIONS

13.1 Consola

13.2 Firebase CLI

13.2.1 Instalación de Firebase CLI

13.2.2 Acceso a Firebase CLI

13.3 Prácticas de despliegue de funciones JavaScript

13.3.1 Despliegue de una función JavaScript

13.3.2 Despliegue de un cumplimiento como un webhook

14. INTEGRACIÓN DE FIREBASE CLOUD FUNCTIONS CON ESP8266

14.1 Librería ESP8266HTTPClient

14.2 Práctica de integración de Firebase Cloud Functions con ESP8266

14.2.1 Desarrollo de la función en Firebase Cloud Functions

14.2.2 Desarrollo del programa ESP8266

15. INTEGRACIÓN DE FIREBASE CLOUD FUNCTIONS CON REALTIME DATABASE

15.1 SDK de Firebase Admin

15.2 Prácticas de integración de Firebase Cloud Functions con Realtime Database

15.2.1 Creación de la estructura de ficheros del proyecto

15.2.2 Escritura de datos en Firebase Realtime Database

15.2.3 Lectura de datos en Firebase Realtime Database

15.2.4 Creación de nodos en Firebase Realtime Database

15.2.5 Borrado de nodos en Firebase Realtime Database

16. LA PLACA WEMOS D1 R1

17. PRÁCTICAS DE CONTROL DE DISPOSITIVOS DOMÓTICOS

17.1 Escenario de integración de servicios

17.2 Actividades previas

17.2.1 Creación del proyecto en Actions on Google

17.2.2 Creación de la estructura de base de datos en Firebase Realtime Database

17.2.3 Creación de las entidades y las intenciones básicas en Dialogflow

17.2.4 Inicialización del proyecto Firebase

17.2.5 Desarrollo de la estructura básica del cumplimiento en Firebase Cloud Functions

17.3 Encendido y apagado de luces por habitaciones

17.3.1 Creación de la intención de obtención de la habitación en Dialogflow

17.3.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.3.3 Desarrollo del programa ESP8266

17.4 Lectura de la temperatura

17.4.1 Creación de la intención de consulta de la temperatura en Dialogflow

17.4.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.4.3 Desarrollo del programa ESP8266

17.5 Programación de la temperatura de la calefacción

17.5.1 Creación de la intención de programación de la temperatura en Dialogflow

17.5.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.5.3 Desarrollo del programa ESP8266

17.6 Programación de la alarma de un reloj despertador

17.6.1 Creación de la intención de programación de la alarma en Dialogflow

17.6.2 Desarrollo del cumplimiento en Firebase Cloud Functions

17.6.3 Desarrollo de la función que devuelve la hora en Firebase Cloud Functions

17.6.4 Desarrollo del programa ESP8266

17.7 Creación de las acciones

18. ANEXO - JAVASCRIPT DE SUPERVIVENCIA

18.1 Instalación de Node.js

18.2 ¡Hola Mundo!

18.3 Variables y constantes

18.4 Tipos de datos

18.5 Operadores

18.6 Estructuras de control

18.7 Funciones

18.8 Objetos y clases

18.9 Manejo de Strings

18.10 Módulos

Unidad 1
INTRODUCCIÓN

Google Assistant es un asistente virtual donde se utiliza una interfaz de voz, tanto para recibir las peticiones del usuario como para responderle. Dichas respuestas se darán dentro del contexto de una conversación en el que se simula estar hablando con otra persona. Por eso, antes de empezar a desarrollar aplicaciones para este asistente, debe conocer qué son las interfaces de usuario basadas en la voz y los conceptos básicos que gobiernan los sistemas capaces de mantener conversaciones de forma natural. Puesto que nos centraremos en la utilidad práctica de estas aplicaciones en el ámbito IoT (Internet of Things – Internet de las cosas), también se darán algunas nociones básicas de qué hay detrás de esta tecnología y los motivos que hacen que esté cada vez más presente en nuestras vidas.

1.1 IOT

Internet de las cosas (IoT) es un concepto propuesto por Kevin Ashton en 1999, para referirse a la conexión de objetos cotidianos a través de Internet. Su implantación es cada vez mayor y abarca, entre otros, los sectores de la medicina, la industria, el transporte, la energía, la agricultura, las ciudades inteligentes o los hogares, que es en el que nos centraremos. Hoy día, es más y más frecuente encontrar dispositivos en casa capaces de ser utilizados de forma remota a través de Internet, bien sea para su control o para obtener información de los sensores que lleven incorporados.

El éxito de la tecnología IoT se debe, en gran parte, a su capacidad para introducir objetos de uso diario en el mundo digital, abriendo un amplio abanico de nuevas posibilidades que incrementan enormemente su utilidad, ya que permiten el control de los objetos a distancia (por ejemplo, encender o apagar una luz) o que estos informen de datos recogidos por sus sensores (por ejemplo, humedad o temperatura); todo ello desde cualquier dispositivo en cualquier parte del mundo.

Para controlar o recoger datos de los dispositivos IoT se utilizan, generalmente, interfaces clásicas que se ejecutan en un ordenador y, cada vez con más frecuencia, en teléfonos móviles. Si en vez de estas se usaran interfaces de voz, la interacción se volvería más natural, haciendo más sencillo el uso de las aplicaciones. Por este motivo, la unión de las tecnologías IoT y las relacionadas con el desarrollo de interfaces de voz están llamadas a formar un tándem, que hará que este tipo de dispositivos tengan cada vez un uso más cotidiano.

1.2 INTERFACES DE VOZ

Hasta hace no muchos años, la interacción hombre-máquina se realizaba mediante un teclado y una pantalla. De la mano de los móviles llegaron las interfaces táctiles, que aumentaron drásticamente su facilidad de uso. El último paso han sido las interfaces de voz, mediante las que ya no es necesario emplear las manos, puesto que la comunicación se realiza hablando con la aplicación.

A este tipo de interfaces capaces de permitir la interacción mediante la voz se las conoce por su acrónimo inglés VUI (Voice User Interface – interfaz de usuario de voz). A los dispositivos que las incorporan se los llama VCD (Voice Command Device – dispositivo de comandos de voz). A nivel empresarial, las primeras aplicaciones que utilizaron esta tecnología fueron los sistemas IVR (Interactive Voice Response – respuesta de voz interactiva), desarrollados en la década de los ochenta. Son los que hoy día le atienden cuando llama a los centros de atención de clientes de muchas compañías para solicitar información o realizar determinadas gestiones, antes de pasarnos con un agente humano (si fuera necesario). A nivel de usuario, las aplicaciones que disponían de este tipo de interfaces aparecieron más tarde, siendo las primeras las de marcación de teléfonos activada por voz.

La gran aceptación y consecuente expansión de las interfaces de voz ha sido debida a su independencia del hablante, es decir, a que son capaces de entender lo que dice cualquier persona, sea cual sea su idioma, su acento o las particularidades de su voz. Además, con este tipo de interfaces, se puede hacer prácticamente lo mismo que con cualquier navegador: buscar información, solicitar que suene su música favorita, administrar calendarios y citas, hacer pedidos, jugar, etc. Pero, donde hay un sector en el que cobra especial relevancia, es en el de IoT y, en concreto, en el ámbito domótico que es, precisamente, en el que se centra este libro.

Las ventajas de uso de las interfaces de voz son la velocidad de entrada (es más rápido hablar que escribir), así como su capacidad para ser incorporadas a dispositivos que no requieran pantalla, pudiendo utilizarse en relojes o pulseras de tamaño reducido. Además, permiten su uso a personas con capacidades visuales o motoras reducidas. Incluso, puede resultar imprescindible en el desarrollo de actividades profesionales que requieran trabajar con determinadas aplicaciones mientras se tiene las manos ocupadas.

A nivel empresarial, el empleo de interfaces de voz también tiene ventajas, ya que representan una oportunidad de negocio. Para 2021, se estima que las marcas que adopten este tipo de interfaces y rediseñan sus sitios web disfrutarán de un crecimiento del 30 % en los ingresos.

1.3 SISTEMAS CONVERSACIONALES

Los sistemas conversacionales son aquellos capaces de comprender el lenguaje natural y entablar una conversación con una persona. Su objetivo principal es el de mejorar la experiencia del usuario, sustituyendo las formas tradicionales de interacción con las aplicaciones por otra basada en la voz. Se suelen utilizar para dar información sobre cuestiones que se les puedan plantear o ejecutar las órdenes que se les pida realizar.

Los sistemas conversacionales (también llamados chatbots) nacieron mucho antes que las interfaces de voz, pero ha sido, gracias a estas, cuando han empezado a vivir una segunda juventud. Uno de los primeros (Eliza) se creó en el Massachusetts Institute of Technology (MIT) entre 1964 y 1966 por Joseph Weizenbaum. Realizaba procesamiento de lenguaje natural para tratar de mantener una conversación de texto coherente entre un psicólogo (a quien simulaba) y su cliente (el usuario).

Desde entonces, y hasta hace poco tiempo, los sistemas conversacionales eran únicamente materia de estudio por parte de expertos en el área de la inteligencia artificial. Sin embargo, los avances en procesamiento del lenguaje natural y el reconocimiento automático del habla han democratizado su uso, haciendo que esté cada vez más presente en un número mayor de dispositivos. Este tipo de técnicas hacen que los sistemas conversacionales no solo tengan la facultad de oír lo que se les diga, sino de llegar a entenderlo, aunque se usen palabras o frases diferentes. Además, son capaces de mantener una conversación coherente, utilizando información de contexto, para que la interacción con ellos sea similar a la que tendría con cualquier otra persona.

No fue hasta 2007 cuando se supo que compañías como Google y Apple estaban desarrollando funcionalidades de reconocimiento de voz. Actualmente, su uso es común en diversos dispositivos, especialmente en teléfonos móviles, donde ya está llegando a ser algo imprescindible. Google, consciente de esa necesidad, le llevó a presentar Google Assistant con Android 7.0 «Nougat», versión a partir de la cual se ha convertido en parte inseparable de este sistema operativo.

Su uso es cada vez más frecuente en nuestra vida diaria. Por eso, Gartner ya identificó en 2017 los sistemas conversacionales como una de las 10 principales tendencias tecnológicas estratégicas.

El ámbito de uso de los sistemas conversacionales es cada vez más amplio, incluyendo desde los más sencillos, en los que se solicita información concreta, como la previsión meteorológica, hasta los más complejos, empleados por centros de atención al cliente de grandes compañías, pasando por aquellos que permiten el control de dispositivos de uso doméstico. Será precisamente, en el ámbito IoT, especialmente el centrado en sistemas domóticos, al que se orientan las prácticas de este libro.

Unidad 2
GOOGLE ASSISTANT

Como su nombre indica, Google Assistant es el asistente virtual de Google. Su uso no ha parado de extenderse desde su lanzamiento en 2016, siendo incorporado en un creciente número de dispositivos hardware (iluminación, enchufes e interruptores, electrodomésticos, televisores, etc.). Esta expansión se debe, en gran medida, a que la posibilidad de interactuar con cualquier aplicación o dispositivo mediante la voz hace más fácil y atractiva su utilización.

Por ese motivo, sus campos de aplicación son cada vez mayores:

• Acceso a la información de calendarios o cualquier otro tipo de datos de carácter personal

• Localización de información en línea, como direcciones, climatología, noticias, etc.

• Control de la música que se desea reproducir

• Establecimiento de temporizadores y recordatorios

• Creación de citas y envío de mensajes

• Interacción con aplicaciones instaladas en el teléfono móvil

• Lectura de notificaciones

• Realización de traducciones habladas en tiempo real

• Control de dispositivos IoT y hogar inteligente

Es precisamente, en el último campo, donde se enfocará este libro, dándole la posibilidad de desarrollar aplicaciones que le permitan «hablar» con dispositivos controlados mediante un ESP8266 (en concreto, ESP-01 y WeMos D1 R1), convirtiendo su casa en un verdadero hogar inteligente. Podrá programar la calefacción, saber la temperatura que hay en casa o preguntar si se ha dejado las luces encendidas.

Inicialmente, Google Assistant se lanzó únicamente para teléfonos Google Pixel y altavoces Google Home, pero, actualmente, está en todos los dispositivos Android modernos (teléfonos, relojes, televisiones, etc.). Además, no solo funciona con los altavoces inteligente de Google, sino incluso con los de otras marcas, como Sony, LG, Panasonic, etc.

Aunque podrá hacer uso de Google Assistant en diversos dispositivos, para facilitar que cualquiera pueda disfrutar del resultado de las múltiples prácticas que realizará a lo largo del libro, se utilizará el más asequible: el incorporado en teléfonos móviles Android. Los usuarios de iOS no quedarán marginados, ya que podrán descargarse la aplicación para iPhone, aunque con alguna restricción, que no les impedirá disfrutar de este asistente.

Seguro que estará deseando conocer todo lo que puede llegar a ofrecerle. En su web (https://assistant.google.com/), tiene toda la información que necesita.

Unidad 3
SU PRIMER ASISTENTE

Antes de empezar a estudiar en profundidad cada una de las plataformas que intervienen en el desarrollo de un sistema conversacional con Google Assistant, va a realizar uno muy sencillo que, al ser invocado diciendo, por ejemplo, «quiero hablar con mi primer asistente», le responda presentándose. Aunque tendrá que navegar entre ventanas y opciones de Actions on Google y Dialogflow (servicios con los que todavía no está familiarizado), solo se verán los aspectos imprescindibles para completar el ejercicio, dejando de lado el resto. En cualquier caso, se explicará cada uno de los pasos que vaya dando para que entienda, en todo momento, el motivo de lo que está haciendo. Con este primer ejercicio, solo se pretende que tenga una visión general del proceso de desarrollo. Más adelante, estudiará en detalle el funcionamiento de cada una de estas herramientas.

3.1 CONCEPTOS BÁSICOS DE SISTEMAS CONVERSACIONALES

En este tipo de sistemas, la interacción con el usuario se inicia a través de una acción conversacional y finaliza cuando este decide terminar la conversación o, simplemente, acaba de forma natural, una vez obtenido el resultado solicitado.

Una acción conversacional es, por lo tanto, el punto de entrada de un sistema conversacional, una forma de iniciar un diálogo con él. Dicha acción será invocada por su nombre, que activará una intención. Esta última será la encargada de ejecutar las tareas necesarias para dar una respuesta al usuario o, de no ser posible, mantener el diálogo con el que se puedan activar otras intenciones que, finalmente, satisfagan su petición.

Un sistema conversacional puede realizar diversas tareas, cada una de las cuales es ejecutada por una intención específica. De todas ellas, la principal es la que desencadena la ejecución de la intención de bienvenida. Por ejemplo, si el nombre de invocación de la acción principal fuera «mi primer asistente», la conversación con el asistente se iniciaría cuando el usuario dijera determinadas expresiones, como «quiero hablar con mi primer asistente». Eso provocaría la activación de la intención de bienvenida, que le respondería dando pie al inicio de una conversación mediante la que el usuario podría realizar las peticiones que estuviera preparado para atender. Si su función principal fuera la de jugar, dicha intención de bienvenida serviría para preguntar al usuario: «Hola, ¿a qué quieres jugar conmigo?».

Las respuestas ofrecidas por las intenciones podrán ser estáticas o dinámicas. Las respuestas estáticas son las establecidas previamente por el desarrollador. Las dinámicas son las generadas por código (en el contexto de este libro, desarrollado en JavaScript), desde el que se tendría la posibilidad de establecer conexiones con otros servicios si fuera necesario dar o recibir información externa. Por ejemplo, si un usuario solicitara la temperatura, se podría utilizar un servicio (en su caso, Firebase) para acceder a un dispositivo ESP8266 al que estuviera conectado un sensor DHT11 para obtenerla.

Las acciones e intenciones residen y se ejecutan siempre en la nube, independientemente de que se use un teléfono móvil, un altavoz inteligente o cualquier otro dispositivo Android. La creación y posterior gestión de las acciones se realizará en la plataforma Actions on Google. Dicha plataforma se apoyará en Dialogflow, otra herramienta de Google en la que se creará el agente capaz de realizar el procesamiento del lenguaje natural. En ella, añadirá las intenciones necesarias para definir la estructura de la conversación que el asistente deberá entablar con el usuario para dar la información o realizar las acciones solicitadas.

En este libro, a los sistemas conversacionales realizados a partir de proyectos creados en Actions on Google se los llamará, generalmente, «asistentes».

3.2 REQUISITOS PREVIOS

Para poder empezar a utilizar Actions on Google o Dialogflow, es necesario tener una cuenta de Google con los siguientes permisos habilitados:

• Actividad en la web y en aplicaciones

• Grabaciones de audio

• Información sobre aplicaciones de tus dispositivos

Para ello, vaya a la página de control de actividad https://myaccount.google.com/yourdata/assistant e inicie sesión con su usuario Google.

Si no tuviera una cuenta de Google, entre en la página https://support.google.com/accounts/answer/27441?hl=es del centro de soporte y allí pulse «CREAR UNA CUENTA DE GOOGLE».

Una vez dentro, asegúrese de que tiene habilitados los permisos anteriores. Si no fuera así, pulse sobre el control correspondiente y actívelo.

3.3 CREACIÓN DEL PROYECTO EN ACTIONS ON GOOGLE

Para crear un proyecto, lo primero que tiene que hacer es acceder con su usuario a la consola de Actions on Google situada en https://console.actions.google.com/. Una vez dentro, pulse sobre el botón «New Project», para crear el proyecto dentro del cual podrá administrar, probar y publicar sus acciones conversacionales.

Le aparecerá una ventana emergente con las condiciones de uso del servicio. La única opción en la que obligatoriamente deberá seleccionar «Yes» es en la que se indica que acepta los términos de este servicio y el de Firebase (lo conocerá más adelante). No se olvide de seleccionar su país de origen y contestar sí o no (dependiendo de lo que prefiera) a las cuestiones que se le hacen sobre si quiere que le envíen actualizaciones y consejos que lo ayuden a trabajar con Actions on Google, o participar en encuestas y pilotos que mejoren el servicio. Cuando haya seleccionado una opción en todos estos radio buttons, le aparecerá el botón «Agree and continue», que deberá pulsar para crear su primer proyecto.

Esta ventana emergente le aparecerá solo durante la creación de su primer proyecto.

Surge una nueva ventana en la que deberá dar un nombre al proyecto («mi primer asistente»), el idioma de la acción («Spanish») y el país (en mi caso, «Spain»). Luego, pulse «Create project».

No se apure si tarda unos segundos en responder. Es el tiempo que emplea en las labores de creación del proyecto.

Se mostrarán las principales categorías de proyectos existentes. Como lo que se pretende hacer es un asistente que, al invocar su acción principal, se presente amablemente, aunque muy sencillo, sería de tipo personalizado. Por lo tanto, seleccione «Custom» y luego pulse sobre el botón «Next».

Los sistemas que va a desarrollar a lo largo del libro realmente podrían caer en la categoría «Smart Home» o «Game», pero, como lo que se quiere es tener total libertad a la hora de establecer la estructura de la conversación, se elegirá siempre el tipo personalizado.

En la siguiente pantalla, desplácese hacia abajo hasta ver el enlace «Click here to build your Action using DialogFlow». Eso es, precisamente, lo que va a hacer: configurar la acción principal de su primer asistente desde Dialogflow. Púlselo.

Hecho esto, se encontrará dentro de la pestaña «Overview» de su nuevo proyecto, en la que podrá crear la primera acción conversacional (la principal). Pero, antes, asegúrese de que el idioma en el que le hablará a su asistente sea el español y, en caso contrario, pulse sobre «Modify languages».

En la imagen anterior, puede observar que el idioma predeterminado es el inglés.

Surgirá una ventana en la que deberá desmarcar la casilla «English» y señalar «Spanish», situada algo más abajo. Hecho esto, vuelva a la parte superior de la pantalla, donde encontrará a la derecha el botón «Save». Púlselo para guardar los cambios realizados. Al seleccionar de nuevo la pestaña «Overview», verá que ahora el idioma que aparece es el español.

Junto con el idioma, también podrá establecer la configuración regional que permita al asistente trabajar con las diferentes particularidades del lenguaje en los diferentes lugares donde esté previsto usarlo; en el caso del español, en España o en Latinoamérica. Para ello, solo tiene que pulsar el botón «+Add locales», que aparece debajo del idioma, y marcar las opciones que desee.

Lo último que tendrá que hacer, antes de crear la acción principal (la que activará la intención de bienvenida), es establecer el nombre utilizado para invocarla explícitamente. Para ello, pulse el enlace «Decide how your Action is invoked».

Eso lo llevará a la pestaña «Develop», en la que podrá introducir la frase con la que invocará la acción principal de su sistema conversacional (aquella que permitirá la activación de la intención de bienvenida). Por lo tanto, en el campo que hay en la sección «Display name», escriba «mi primer asistente». De esta forma, cuando diga, por ejemplo, «hablar con mi primer asistente», «quiero hablar con mi primer asistente» o «abre mi primer asistente», podrá iniciar la interacción con el sistema conversacional que acaba de crear. Guarde este cambio pulsando el botón «Save».

No es obligatorio rellenar este campo. Si no lo hiciera, podría iniciar la conversación con su primer asistente diciendo: «hablar con mi aplicación de prueba».

Debajo del campo donde introdujo el nombre, verá un texto en color rojo avisando de que se están utilizando palabras restringidas. Eso indica que no lo podrá usar como nombre público para invocar su acción, pero no hay ningún problema en utilizarlo a nivel privado durante la realización de pruebas.

Al cabo de unos segundos, aparecerá una pequeña ventana emergente en la parte superior derecha de la ventana, informando que los cambios han sido guardados correctamente.

Ya se encuentra en disposición de crear la acción principal de su primer asistente. Para ello, vuelva de nuevo a la pestaña «Overview» y, allí, pulse sobre «Build your Action». Se desplegarán dos opciones: una para crear acciones y otra para probarlas (cuando tenga alguna). Pulse sobre la primera [«Add Action(s)»].

Más adelante se explicará el contenido de las diferentes pestañas de la herramienta. Lo que se pretende ahora es realizar una demostración práctica de los principales pasos que intervienen en el desarrollo de un sistema conversacional.

Se le informa que el proyecto no tiene acciones, por lo que procedería a crear la primera, que será la principal. Dicha acción es el punto de entrada a su asistente, la forma de entablar una conversación con él. No lo dude y pulse «Add your first action».

Aparecerá una nueva ventana con todas las categorías de acciones que existen. Podrá elegir entre cualquiera de las que ya trae incorporadas («Built-in intents») u optar por una personalizada («Custom intent»). Elija la personalizada, porque es la que le permitirá crear sus propias intenciones y expresiones de usuario que las activen. Por lo tanto, seleccione la opción «Custom intent» y luego pulse sobre el botón «BUILD».

Se creará una nueva pestaña en su navegador, desde la que podrá acceder a la consola de Dialogflow.

3.4 MODIFICACIÓN DE LA INTENCIÓN DE BIENVENIDA EN DIALOGFLOW

Para acceder a la consola de Dialogflow, pulse sobre «Sign-in with Google».

Se le pedirá que acepte los permisos necesarios para seguir adelante. Pulse «Permitir» en una de las ventanas y «ACCEPT» en la otra.

Entrará automáticamente en la consola de esta nueva herramienta, con el mismo usuario de Actions on Google.

Si usa el navegador Chrome, como yo, y ha iniciado sesión en varias cuentas, asegúrese de estar utilizando siempre el mismo usuario en ambas consolas.

¿Por qué es necesaria utilizar esta otra herramienta? Porque es la que le proporcionará los medios para realizar el análisis semántico que le permita al asistente entender lo que le diga el usuario. ¿Cómo se realiza dicho análisis semántico? Aplicando complejas técnicas de análisis y comprensión del lenguaje natural o NLU (Natural Language Understanting). Por eso es necesario el uso de Dialogflow, ya que le ocultará la complejidad de todas estas técnicas, creando un agente específico para su proyecto, capaz de entender determinadas expresiones dichas por el usuario, de las que extraerá la información (parámetros) necesaria para realizar la acción solicitada y elaborar la respuesta más adecuada. Por ejemplo, para encender un dispositivo domótico, un usuario puede decir «enciende la luz» o «pon la lavadora». Estas expresiones son totalmente diferentes, pero ambas activarían la misma intención, que ejecutaría la acción de encendido. Además, en ambas frases, se extraería el parámetro que contiene el dispositivo que se pretende encender: la luz, en el primer caso, y la lavadora, en el segundo.

En DialogFlow se establecerá la forma en la que se va a llevar la conversación, marcando los turnos de palabra (cada uno asociado a una intención concreta) que se irán sucediendo, hasta llegar a dar la respuesta adecuada al usuario.

La consola de Dialogflow tendrá el aspecto de la siguiente imagen. Asegúrese de que aparece el lenguaje y el área geográfica en la que se encuentra. Para crear el agente de dicho proyecto, que será el que lleve a cabo toda la lógica de la interacción con el usuario, pulse sobre el botón «CREATE».

Si en la parte superior izquierda de la consola apareciera «Dialogflow Essentials» en vez de «Dialogflow», puede que no disponga de todas las opciones utilizadas en las prácticas. En ese caso, antes de crear el agente tendría que desplegar el menú que hay a su derecha y seleccionar la opción «US» (localización de los servidores de Google que va a utilizar). En el momento de escribir este libro, Dialogflow está en proceso de evolución y su interfaz de usuario no es la misma en todas las regiones.

Transcurridos unos segundos, podrá ver seleccionada la opción «Intents» (‘intenciones’) del menú lateral izquierdo. Esta muestra las intenciones que se han creado automáticamente con su agente: la intención de bienvenida («Default Welcome Intent») y la intención alternativa («Default Fallback Intent»). Estudiará en detalle este tipo de intenciones más adelante.

Ha llegado el momento de enseñar al asistente cómo quiere que responda a las solicitudes del usuario. De momento solo desea que, cuando lo invoque, únicamente salude como usted le haya indicado.

Tal como se explicó anteriormente, para iniciar la conversación con un asistente se debe invocar su acción principal, diciendo, por ejemplo: «Hablar con mi primer asistente». En ese momento, se cumplirá la intención de bienvenida (Welcome Intent), creada de forma automática por Dialogflow, que responderá con alguna frase de saludo inicial. Para ver cuáles son tales frases, pulse en dicha acción («Default Welcome Intent»).

La configuración de las intenciones se estructura en una serie de secciones que estudiará en detalle más adelante. Ahora, únicamente le interesa saber que las frases de bienvenida están en la sección de respuestas («Responses»). Para ver cuáles son, en la parte superior derecha, tiene un símbolo en forma de punta de flecha que tendrá que pulsar para desplegar la información que contiene. Allí podrá ver todas las expresiones de saludo. Como puede observar, hay tres: «¡Hola!», «¡Hey!» y «¡Buenos días!».

Dichos saludos de bienvenida le serán ofrecidos de forma aleatoria, cada vez que invoque la acción. ¿Quiere comprobarlo? En el menú lateral izquierdo de la consola, seleccione «Integrations». Luego, en el panel principal, donde se muestra el contenido de dicha opción, pulse el enlace «INTEGRATION SETTINGS» de Google Assistant.

Si no le apareciera la opción «Integrations», compruebe que a la derecha de «Dialogflow Essentials» esté seleccionada la opción «US». En caso contrario, tendría que borrar el agente (en el capítulo que describe la consola de Dialogflow se indica dónde hacerlo) y volver a crearlo desde Actions on Google (pestaña «Overview» → «Build your Action» → «Add Action(s)»), seleccionado previamente dicha región en el menú desplegable que hay a la derecha de «Dialogflow Essentials».

Surgirá una ventana emergente, en la que conviene activar la opción que permite propagar automáticamente los cambios que realice en Dialogflow hacia Actions on Google. De esta forma, ambos servicios se sincronizarán y el simulador tendrá en cuenta los cambios que vaya realizando durante el proceso de desarrollo de las intenciones. Finalmente, pulse sobre el botón «TEST».

Se habrá creado una nueva pestaña en el navegador, que lo habrá llevado, de nuevo, a la plataforma Actions on Google; en concreto, a su sección de pruebas (pestaña «Test»). En el panel derecho de la ventana, se mostrará el diálogo que mantenga con el asistente. En la parte superior del panel izquierdo, está situado el campo de entrada en el que tendrá que escribir las expresiones que quiera decir al asistente. Selecciónelo y pulse retorno de carro (Enter) ya que, de forma predeterminada, contiene el texto «Hablar con mi primer asistente», que invoca la acción principal de su asistente (o pulse el botón del mismo nombre, que aparece como sugerencia).

Enseguida oirá (si tiene activado el altavoz del ordenador) y verá escrita la respuesta dada por el simulador: «De acuerdo. Aquí tienes la última versión de asistente» y, luego, «¡Hola!» (podría haber sido también «¡Hey!» o «¡Buenos días!»).

El procesamiento de lenguaje natural realizado por el agente de Dialogflow le permitirá invocar su acción principal de distintas formas; por ejemplo, diciendo «quiero hablar con mi primer asistente» o «abre mi primer asistente». No valen todas las expresiones, por lo que tendrá que probar y quedarse con la que más le guste.

Aunque todavía no lo sepa, a partir de este momento, el asistente habrá iniciado una conversación, en la que le irá contestando según le haya enseñado a responder (de momento nada, ya que el comportamiento de bienvenida lo tiene por defecto). Compruébelo escribiendo cualquier frase (excepto expresiones de saludo del tipo «hola», «saludos», etc.). Siempre le contestará diciendo que no lo entiende utilizando, eso sí, diversas expresiones. Dichas expresiones están asociadas a otra de las intenciones que se crea por defecto con el agente Dialogflow, llamada «Default Fallback Intent» (‘intención alternativa’). Esta se activará cuando lo que diga el usuario no coincida con ninguna otra intención; es decir, cuando no se ha reconocido lo que ha dicho.

Dicha intención, al igual que sucedía con la de bienvenida, dispondrá de una variedad de respuestas; en este caso, para indicar al usuario que no le ha entendido. Para verlas, vaya a la pestaña de su navegador donde está la consola de Dialogflow. Allí, seleccione la opción «Intents» del menú lateral izquierdo y, en el panel principal, seleccione la intención «Default Fallback Intent».

Aparecerá la información de configuración de dicha intención, en cuya sección «Responses» podrá ver todas las respuestas posibles. Al igual que en la intención de bienvenida, se podrán añadir y/o quitar las que quiera.

Como todavía no sabe cómo finalizar la conversación, estará en ella hasta que diga alguna de las palabras que Google Assistant tenga programadas por defecto para tal fin. Diga, por ejemplo, «cancelar» (o pulse sobre el botón «Cancel», que se ofrece como sugerencia). Observará un mensaje en el que se indica que su primer asistente ha abandonado la conversación. Para reanudarla, tendría que volver a decir de nuevo: «hablar con mi primer asistente».

Para no tener que salir de la conversación cada vez que quiera volver a invocar su acción conversacional, va a establecer que la intención de bienvenida sea también la que finalice dicha conversación. Además, aprovechará para hacer que se presente amablemente, en vez de utilizar las típicas palabras de cortesía que tiene por defecto.

Vaya de nuevo a la pestaña de su navegador donde está la consola de Dialogflow y acceda a la intención de bienvenida. Para borrar todas las frases de saludo que tiene, presione en el icono con forma de papelera que aparece en la parte superior, a la derecha de «Text Response», tal como se muestra en la siguiente figura, o vaya pulsando el mismo icono que aparece a la derecha de cada una de las frases de bienvenida cuando sitúa el cursor del ratón encima de ellas. De esta forma, las iría borrando de una en una.

A continuación, pulse sobre el botón «ADD RESPONSES» y, en el menú que se despliega, seleccione «Text Response».

Introduzca las frases con las que quiera que el asistente lo salude. Yo he elegido «Bienvenido a su primer asistente» y «Hola, soy su primer asistente». Usted puede poner otras diferentes.

Aproveche también para habilitar la opción «Set this intent as end of conversation»; es decir, que, una vez que lo haya saludado, finalice la conversación. Para guardar los cambios realizados en la intención, no se olvide de pulsar sobre el botón «SAVE».

Espere hasta ver aparecer una serie de mensajes emergentes en la parte inferior derecha de la ventana, indicando no solo que dichos cambios se han guardado correctamente, sino que el algoritmo de aprendizaje del agente ha sido convenientemente entrenado para tenerlos en cuenta.

Para probar que el asistente lo saluda de la forma prevista, vaya de nuevo a la pestaña en la que se encuentra el simulador. Allí, invoque la acción principal de su primer asistente pulsando sobre el botón «Hablar con mi primer asistente», que se ofrece como sugerencia. Observará que, ahora, contesta con una de las nuevas frases de respuesta introducidas, saliendo automáticamente de la conversación. Lo puede saber por el mensaje final «mi primer asistente ha abandonado la conversación».

Vuelva a invocar la acción principal. Verá cómo, efectivamente, su primer asistente le vuelve a responder con otra de las frases de saludo introducidas por usted en la intención de bienvenida. Esta vez, no ha tenido que decir previamente «cancelar», como sucedía anteriormente.

Otra forma de probar el comportamiento de su asistente sin necesidad de salir de Dialogflow es mediante la utilidad situada en la parte superior derecha de la ventana principal de la consola.

Desde allí, podrá escribir una frase y comprobar cuál es la respuesta del asistente. En este caso, no será necesario invocar la acción conversacional, porque se parte del hecho de que ya se encuentra dentro de su asistente. Sin embargo, diciendo una de las frases de entrenamiento de la intención de bienvenida (por ejemplo, «hola»), tendrá el mismo efecto.

Esta utilidad tiene diversas limitaciones, entre la que destaca que solo muestra el último turno de palabra o que no informa del contenido de los mensajes HTTP de petición y respuesta intercambiados en la comunicación. Como ventaja, presenta el nombre de la última intención cumplida, la acción que lo ha provocado y los contextos activos (estos dos últimos conceptos se estudiarán más adelante), así como información útil de depuración.

3.5 ACTIVACIÓN DEL MICRÓFONO DEL SIMULADOR DEL ASISTENTE

Si tiene activado el sonido del ordenador, además de escritas por pantalla, habrá podido oír las respuestas del asistente por el altavoz. Pero, si quiere una simulación aún más real, también puede activar el micrófono y dar las órdenes de forma hablada.

Para ello, previamente deberá asignar en Windows los permisos necesarios para que el simulador pueda usar el micrófono. En la pantalla de su ordenador, pulse «Inicio» → «Configuración».

Seguidamente, pulse sobre la página «Privacidad».

De todos los aspectos de privacidad que se muestran en el menú lateral izquierdo, desplácese por ellos hacia abajo, hasta encontrar el correspondiente al «Micrófono», que es el que deberá seleccionar. Luego, en el panel principal (el central), active el control de la sección «Permitir que las aplicaciones accedan al micrófono».

Acaba de dar los permisos necesarios para utilizar el micrófono desde la ventana del simulador. Vuelva a la pestaña del navegador donde se encuentra y pulse sobre el pequeño icono con forma de micrófono situado en la parte derecha del campo donde ha estado escribiendo lo que quería decir al asistente. A partir de ese momento, empezará a escuchar lo que diga (listening) mostrando, de forma intermitente, un micrófono de color rojo.

Para probar cómo funciona, diga, por ejemplo, «quiero hablar con mi primer asistente». Comprobará cómo el simulador le ha oído (escribiendo en dicho campo lo que ha dicho), entendido y respondido con una de sus frases de saludo.

Unidad 4
ACTIONS ON GOOGLE

Actions on Google es la plataforma de desarrollo que le permitirá ampliar las capacidades del asistente de Google con acciones personalizadas mediante las que podrá realizar multitud de actividades, desde jugar con él, hasta encender las luces de casa, tal como tendrá ocasión de practicar en los numerosos ejercicios que se proponen.

En la página principal de este servicio (https://developers.google.com/assistant), cuya documentación se ha utilizado de base para este capítulo, se resume todo lo que ofrece:

• Integrarse con las aplicaciones del móvil

• Crear contenido web adaptado para ser accedido y ofrecido al usuario por el asistente

• Controlar dispositivos inteligentes

• Desarrollar sistemas conversacionales

Será, en los dos últimos campos, en los que se centrará este libro, ya que lo utilizará para crear sistemas conversacionales que le permitan «hablar» con sus dispositivos ESP8266. Podrá mantener una conversación natural con ellos, dando la sensación de mayor inteligencia a este tipo de dispositivos, que parecerá que oyen y entienden lo que se les dice, respondiendo (e incluso preguntando cuando no entiendan o no tengan información suficiente para atender una solicitud) dentro del contexto de la conversación, en la que no será necesario repetir información dada previamente.

En concreto, esta herramienta será la que utilizará para crear y agrupar en proyectos las acciones que le permitan iniciar la interacción con el asistente, así como gestionarlas, probarlas e incluso publicarlas. También proporcionará las API de voz que tendrá que utilizar para desarrollar, en JavaScript, la lógica de las conversaciones.

4.1 CONSOLA

El acceso a la consola de Actions on Google se realiza a través de la página https://console.actions.google.com. Si no tuviera ninguna sesión abierta en Chrome, deberá autenticarse con su usuario de Google. Si ya tuviera abierta alguna, entraría directamente a la consola. En ese caso, asegúrese de que sea con el usuario correcto.

Desde la consola de Actions on Google, gestionará sus proyectos, es decir, registrar, implementar, configurar y analizar la actividad de las acciones contenidas en cada uno de ellos. Cuando haya entrado en la consola, el aspecto que tiene, una vez creado su primer proyecto, puede apreciarlo en la imagen inferior.

En la parte superior, se destaca una zona de cabecera, mientras que la inferior muestra la lista de proyectos creados (en este momento, solo uno: «mi primer asistente»), además del botón «New project», mediante el que podrá seguir creando nuevos proyectos. En medio, hay una serie de enlaces a diferente tipo de documentación o soporte.

La cabecera consta de los siguientes elementos:

• Un icono siempre visible en la parte superior izquierda, para acceder a la consola de Actions on Google (esta primera ventana en la que ahora se encuentra)

• Un enlace a la documentación, representado por un icono con un signo de interrogación

• Un acceso a la ventana de notificaciones, con información que podría serle de interés, situado a continuación del anterior

• Un menú desplegable, con el que podrá ver las preferencias del usuario («User preferences»), acceder al servicio de gestión de identidades y accesos («Manage user access») u obtener ayuda de soporte («Send feedback» y «Community and support»)

• Una última opción, con su imagen de perfil o la inicial de su nombre, desde la que podrá gestionar su cuenta de Google, añadir una nueva o salir de la consola (tal como se muestra en la imagen inferior)

4.1.1 Sistema de pestañas

Seleccionando el proyecto «mi primer asistente», comprobará que toda su información se muestra agrupada por pestañas, cuyas etiquetas se sitúan horizontalmente en la parte superior de la consola. Debajo, se halla el panel principal, en el que se mostrará el contenido de cada una de ellas. Dependiendo de la etiqueta seleccionada, además del panel principal, puede aparecer a la izquierda otro panel lateral («Test») o un menú de opciones de configuración («Develop», «Deploy» y «Analytics»).

Solo se analiza el contenido de las pestañas «Overview», «Develop» y «Test». Las dos últimas pestañas («Deploy» y «Analytics») no se estudiarán, porque están relacionadas con el despliegue y publicación de acciones, algo que sale fuera del alcance de este libro.

4.1.1.1 Pestaña de información general (Overview)

Es la pestaña seleccionada por defecto cuando escoge un proyecto en la ventana principal de la consola. Allí es donde se muestra su información de carácter general.

Para ver el contenido de cada sección, deberá pulsar en el símbolo con forma de punta de flecha situado en la esquina superior derecha de cada una de ellas (marcadas en la figura anterior con un círculo).

Una vez seleccionado un proyecto en la consola, a la izquierda del enlace de la documentación (representado por un icono con un signo de interrogación), hay un campo en el que se muestra el nombre de dicho proyecto. Si quisiera cambiar a otro, solo tiene que pulsar en él y seleccionarlo del menú que se despliega con todos los que tuviera creados.

Del contenido de esta pestaña se destacan cuatro secciones:

1. Esta sección (compartida con otras pestañas) indica los lenguajes utilizados por su proyecto. Como ya ha experimentado, pulsando en «Modify languages», añadirá o quitará los idiomas con los que podría dirigirse al asistente.

2. En esta segunda sección, si pulsa sobre el enlace «Decide how your Action is invoked», lo llevará a la pestaña «Develop», en la que podrá:

a. Decidir cómo se invoca la acción principal, en su caso utilizando la expresión «mi primer asistente».

b. Elegir entre dos voces de hombre y dos de mujer para las respuestas. Por defecto, está seleccionada la primera voz de mujer.

3. Aquí podrá crear nuevas acciones [enlace «Add Action(s)»] o probarlas (enlace «Test») con el simulador del asistente. En el primer caso, lo llevaría a la pestaña «Develop» y, en el segundo, a la pestaña «Test», que se describirán a continuación.

4. Esta última sección contiene el enlace «Get ready por deploy», desde el que podrá publicar su proyecto.

4.1.1.2 Pestaña de desarrollo (Develop)

La pestaña «Develop» del proyecto dispone de un menú lateral en la parte izquierda, de cuyas opciones va a utilizar únicamente las dos primeras.

La función de cada una de estas opciones es la siguiente:

• «Invocation»: le permite acceder a la misma ventana que con «Overview» → «Decide how your Action is invoked», vista anteriormente.

• «Actions»: en ella podrá ver la lista de acciones creadas. De momento, solo tiene una («actions.intent.MAIN»), que es la principal. Dicha acción activará la intención de bienvenida cuando la invoque diciendo, por ejemplo, «hablar con mi primer asistente».

A esta ventana también se habría podido acceder desde «Overview» → «Add action(s)».

4.1.1.3 Pestaña de pruebas (Test)

En la pestaña «Test», se encuentra el simulador que permitirá comprobar el funcionamiento de las acciones que haya desarrollado.

En dicho simulador, se distinguen tres zonas principales:

1. Zona de entrada y simulación de salida de datos: es la situada a la izquierda, en cuya parte superior hay un campo de entrada donde podrá escribir lo que quiera o, en el caso de haber dado acceso al micrófono, decirlo de palabra, pulsando sobre el icono con forma de micrófono que aparece a su izquierda.

A la derecha de dicho campo, hay un menú desplegable en el que se pueden seleccionar los siguientes tipos de entradas:

• Detección automática («Auto detect»): es la opción por defecto. Detecta automáticamente la voz, el teclado o la entrada táctil.

• Toque («Touch»): se utiliza en pantallas inteligentes y teléfonos móviles para utilizar elementos interactivos.

• Voz («Voice»): permite solo la entrada de voz.

• Teclado («Keyboard»): admite únicamente entradas de texto.

Debajo del campo de entrada de datos, se sitúa un área de sugerencias en el que aparecerán botones que, a modo de ayuda, proponen acciones que podrían llevarse a cabo con el asistente. Nada más entrar en esta pestaña, se mostrará siempre la expresión de invocación de la acción principal del proyecto seleccionado.

Por último, en la parte inferior se simula la salida del asistente tal como se vería en el dispositivo seleccionado.

2. Zona de configuración, en la que podrá establecer el idioma empleado (en caso de tener varios), así como el tipo de asistente que desea simular para probar su acción. Podrá elegir entre pantalla inteligente («Smart Display»), teléfono móvil («Phone»), altavoz inteligente («Speaker») o dispositivo KaiOS (es un sistema operativo que requiere muy pocos requisitos técnicos, lo que permite desarrollar teléfonos móviles muy económicos).

En esta zona, también aparece la localización física desde la que se está utilizando el simulador.

3. Zona de depuración, donde verá la conversación completa con el asistente. Dicha conversación se estructura en turnos de palabra. Pulsando sobre el pequeño icono con forma de punta de flecha situado en la parte superior derecha de cada uno de ellos, se mostraría el detalle del contenido JSON de los mensajes HTTP de petición y respuesta intercambiadas por Dialogflow (pestañas «REQUEST» y «RESPONSE») o el audio generado (pestaña «AUDIO»), así como información detallada de depuración (pestaña «DEBUG») y errores producidos (pestaña «ERRORS»).

JSON (JavaScript Object Notation – notación de objetos JavaScript) es uno de los formatos de intercambio de datos más utilizados en Internet. Lo estudiará más adelante.

Tendrá ocasión de conocer y utilizar estas pestañas cuando empiece a desarrollar sus intenciones.

Unidad 5
DIALOGFLOW

Dialogflow es la plataforma que le va a permitir el diseño de interfaces de usuario conversacionales y su integración con otros servicios. Dicho de una forma orientada específicamente a los objetivos de este libro, es aquella que le posibilitará establecer la estructura de la conversación con la que podrá solicitar la ejecución de acciones o la recogida de información de los dispositivos ESP8266.

Para poder entablar una conversación con un sistema, como si de otra persona se tratara, este debe ser capaz de interpretar y procesar el lenguaje natural utilizando técnicas de inteligencia artificial. Piense, por ejemplo, que, para solicitar un pronóstico del tiempo, alguien puede decir frases tan diferentes como «¿qué tiempo va a hacer mañana?», «¿cuál es la previsión meteorológica?», «¿cómo está el clima hoy?», etc. Saber a qué se está refiriendo en cada momento o, simplemente, entender las diversas formas que hay de aludir a lo mismo requiere un software de análisis de lenguaje, que Dialogflow se encarga de proporcionarle en forma de agente.

El agente de Dialogflow será el responsable de mantener las conversaciones con los usuarios. Para ello, utiliza técnicas de comprensión del lenguaje natural y aprendizaje automático que entienden los matices del lenguaje, convirtiendo lo que se dice en datos estructurados que puedan ser manejados, de forma sencilla, por las aplicaciones. Mediante la comprensión del lenguaje natural, se reconocen las intenciones del usuario y se obtiene la información que es relevante de sus expresiones. Dicha información se extraerá como parámetros, cuyos valores pertenecen a un tipo o entidad. Algunas de estas entidades, al ser generales, se identifican de forma automática, como los colores, los nombres de ciudades o países, las fechas, los números, etc. Otros podrán ser establecidos por usted como, por ejemplo, el tipo de dispositivo que quiera controlar con un ESP8266. Para ello, únicamente es necesario dar al agente un pequeño conjunto de frases de entrenamiento que lo preparen para identificar dichas intenciones y entidades personalizadas.

Las interfaces de voz conversacionales creadas con Dialogflow funcionan con una amplia gama de dispositivos, incluidos teléfonos móviles, dispositivos portátiles, automóviles, altavoces inteligentes (incluso los de Alexa), etc. Además, se puede hablar con él en más de veinte idiomas, entre los que se encuentra el español, tanto el de España como su variante (configuración regional) latinoamericana.

En combinación con la tecnología IoT, las interfaces de voz creadas con Dialogflow le permitirán dotar de mayor inteligencia a los dispositivos, ya que su interacción con ellos se producirá mediante conversaciones naturales, que harán que entiendan el contexto de las solicitudes realizadas por los usuarios, respondiendo con mayor precisión.

5.1 CONSOLA

La administración del agente asociado a cada uno de sus proyectos se realizará desde la consola de Dialogflow, a la que se accede a través del enlace https://dialogflow.cloud.google.com/. Para ello, utilice el mismo usuario de Actions on Google. Una vez dentro, su aspecto es el que se observa en la imagen inferior.

La interfaz mostrada en la imagen anterior corresponde al aspecto de la consola de Dialogflow en el momento de escribir este libro. Actualmente está en proceso de cambio, por lo que puede que vea otra ligeramente diferente. En caso de que le apareciera el nombre «Dialogflow Essentials» en la cabecera del panel izquierdo, las opciones con las que se va a trabajar son las correspondientes a la región «US» (en estos momentos, no son las mismas en todas las regiones).

Dicha consola se compone de tres paneles principales:

1. Menú lateral (izquierda): en la parte superior, se muestra el nombre del proyecto con el que está trabajando. Si tuviera varios, podría seleccionar otro diferente en el menú que se despliega, al pulsar en el símbolo con punta de flecha que aparece a su derecha. El último icono, con forma de rueda dentada, le permitirá modificar diferentes aspectos de configuración del agente (los verá más adelante). Debajo del nombre del proyecto aparecen los idiomas utilizados (en su caso, solo el español) y, a su derecha, el icono «+», que le permitirá añadir nuevos idiomas o configuraciones regionales de este.

Una vez que ha elegido un proyecto (de momento solo tiene uno, que es «mi primer asistente»), el resto de las opciones de este menú se utilizarán para administrar los distintos elementos que lo componen (especialmente, las intenciones, las entidades y el cumplimiento).

2. Contenido principal (central): en este panel, se muestran los datos y controles de configuración de la opción seleccionada en el menú lateral.

3. Simulador de Dialogflow (derecha): sirve para verificar que su agente actúa según lo esperado. Para ello, introduzca en el campo que indica «Try it now» las expresiones con las que quiera comprobar su comportamiento. A diferencia del simulador de Actions on Google usado anteriormente, no hará falta invocar previamente la acción principal.

5.1.1 Configuración de los agentes

En la parte superior del menú lateral de Dialogflow, junto al nombre del proyecto, hay un icono con forma de una rueda dentada, que sirve para establecer diversos parámetros de configuración del agente. Es importante que los conozca. Por lo tanto, pulse sobre dicho icono para mostrarlos en el panel principal que, como podrá observar, aparecen agrupados por pestañas.

En cada una de dichas pestañas, se puede configurar lo siguiente:

• «General»: aquí se puede introducir un texto explicativo con la descripción del agente y la zona horaria desde el que se usará el asistente. También contiene el ID del proyecto de Actions on Google vinculado al agente y la cuenta del servicio utilizada en procesos de autenticación en los que se utilice el API V2. Desde esta pestaña, también podrá borrar el agente, si ya no fuera necesario.

• «Languages»: le permite añadir nuevos idiomas o, incluso, configuraciones regionales, en las que podrá funcionar su agente. En este último caso, deberá situar el ratón sobre el idioma deseado y pulsar en el enlace «+Add locale», que aparece a su derecha. En el caso del español (Spanish), se desplegará un menú con las opciones de español europeo o latinoamericano.

• «ML Settings»: los agentes de Dialogflow usan algoritmos de aprendizaje automático, para comprender las expresiones del usuario final y extraer de ellas información de interés. A partir de una serie de frases de entrenamiento (que proporcionará en cada intención) y los modelos del lenguaje que Dialogflow tiene incorporados, se creará un algoritmo de aprendizaje específico para su agente, que permitirá saber cuál es la intención que mejor se ajusta a la expresión dada por el usuario en cada momento. Cada vez que modifique una intención o entidad (lo estudiará más adelante), dicho algoritmo se modificará, para adaptarse a los cambios realizados. Aquí es donde se configuran los mecanismos que establecen cómo se genera dicho algoritmo de aprendizaje. No cambie nada si no está seguro de lo que hace.

• «Export and Import»: esta pestaña se utiliza para importar/exportar, a/desde un archivo zip, la información relevante de su agente. Más adelante, se explicarán las diferentes opciones que se le ofrecen para ello.

• «Environments»: pulsando sobre el botón «PUBLISH A VERSION», se pueden crear versiones de un mismo agente y publicarlas en entornos personalizados como, por ejemplo, desarrollo (mientras se edita el agente), pruebas (que verifica si su comportamiento es el esperado) o producción (accesible a cualquier usuario). Está enfocado al uso de este por diferentes audiencias que, siguiendo el ejemplo anterior, serían los equipos de desarrollo, el de pruebas o el usuario final. Como sus agentes los desarrollará, probará y usará usted mismo, no necesitará hacer uso de esta facilidad.

• «Speech»: muestra todas las opciones de configuración para el reconocimiento y la síntesis de voz. Manejando correctamente sus opciones, podrá mejorar la calidad del reconocimiento de voz, habilitando modelos o adaptaciones de habla mejorados, permitiendo la conversión de texto a voz automática, o configurando aspectos como la velocidad del habla, el tono, el volumen, etc.

• «Shared»: en esta pestaña podrá habilitar el acceso de otros desarrolladores a sus agentes (si estuviera realizando un trabajo en equipo). Encontrará más información en https://cloud.google.com/dialogflow/docs/access-control.

• «Advanced»: actualmente, solo tiene una función utilizada para analizar las expresiones de los usuarios, con el fin de identificar la opinión subjetiva predominante y, en concreto, determinar si la actitud de un usuario es positiva, negativa o neutral. No se va a utilizar.

5.1.2 Menú lateral

Ya conoce las opciones que encabezan el menú lateral de la consola de Dialogflow. Debajo, se encuentran las opciones con las que se administran los elementos que componen el agente del proyecto que esté seleccionado, de las que se destacan las siguientes:

• «Intents»: una intención es una interacción con el usuario en la que se busca un objetivo; por ejemplo, las expresiones «pon la calefacción» y «enciende la luz», declaran la misma intención: la de poner en funcionamiento un dispositivo domótico (la calefacción o una luz). Use esta opción para crear y configurar todas las intenciones de su asistente.

Cuando se crea un agente, lo hace con dos intenciones predeterminadas: la de bienvenida («Default Welcome Intent») y la alternativa («Default Fallback Intent»). La primera se ejecuta cuando el usuario invoca la acción principal. La segunda se cumple cuando lo que ha dicho no se puede tratar con ninguna otra intención. Pronto tendrá ocasión de crear sus propias intenciones.

• «Entities»: las entidades representan el tipo de información que se va a extraer como parámetros de las intenciones; por ejemplo, si un usuario dijera «enciende la luz», la palabra «luz» sería un parámetro cuyo valor sería del tipo (entidad) «dispositivo domótico». Dicho parámetro es el que permitiría al asistente conocer y, por lo tanto, encender el dispositivo adecuado. Desde esta opción, podrá administrar las entidades que su agente pueda identificar en las expresiones del usuario. En una sección posterior, aprenderá a utilizar entidades y parámetros.

• «Fulfillment»: al programa que ejecuta las tareas asociadas a una intención en la que se genera una respuesta dinámica se lo llama «cumplimiento» (entrega). Seleccionando esta opción, podrá desarrollar el programa con el editor Inline o establecer el webhook (tecnología que estudiará en detalle más adelante) desde el que se podrá invocar, en caso de haberlo hecho en un servicio externo.

Dicho programa tomará como entrada los parámetros extraídos de las expresiones del usuario. Durante su ejecución, se podrán invocar otros servicios para el envío o recogida de información, por ejemplo, de aplicaciones que se ejecuten en dispositivos ESP8266 y controlen una luz o la calefacción. En casi todas las prácticas de este libro, deberá desarrollar el código de un cumplimiento.

• «Integrations»: se utiliza para configurar la integración con otras plataformas conversacionales, entre las que destaca Google Assistant, objeto de este libro.

La forma de trabajar con cada una de estas opciones se estudiará en detalle más adelante.

Del resto de las opciones, solo se hará mención a las últimas (seguramente, tendrá que desplazarse hacia abajo para verlas); en concreto, la que lleva a la documentación del servicio («Docs»), la que le indica el plan de precios que tiene (en su caso «Standard») o permite modificarlo, la de soporte cuando requiera ayuda técnica («Support»), la que contiene los datos de su cuenta («Account») y, finalmente, la utilizada para salir de la consola («Logout»).

Al salir de la herramienta, no lo habrá hecho de la cuenta de Google, que permanecerá activa en el navegador. Para salir también de su cuenta, algo muy conveniente si el ordenador es compartido, pulse sobre el icono que contiene la inicial de su nombre (o la imagen de su perfil, si la tuviera), situada en la parte superior derecha de las pestañas que hubiera abierto en el navegador. En el menú desplegable que aparece, seleccione la opción «Cerrar sesión».

Конец ознакомительного фрагмента.

Текст предоставлен ООО «ЛитРес».

Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.