Introducción a Actions on Google

0
2833

Índice de contenidos

1. Introducción

Con este tutorial aprenderás qué es Actions on Google y los conceptos básicos para desarrollar acciones utilizando su consola y Dialogflow. Además, veremos un ejemplo sencillo para que cuentes con un punto de partida práctico.

2. Actions on Google

2.1. ¿Qué es?

Actions on Google es una plataforma que permite crear acciones para el Asistente de Google. Estas acciones son las interacciones que se entablan con el asistente y que permiten dar respuesta a una necesidad concreta como conocer el clima actual o comprar algo vía internet. Por otro lado, se pueden usar en múltiples dispositivos, como teléfonos móviles, smartwatches o televisiones.

Los usuarios pueden invocar acciones por su nombre, pero también podemos añadir una frase para indicar exactamente qué tienen que hacer. Por ejemplo, supongamos que queremos conectarnos con una acción que se llama “Señor Tormentas”, que nos informa del clima. Podríamos invocarla con “Ok Google, habla con Señor Tormentas” o bien podríamos decir “Ok Google, habla con Señor Tormentas para saber la temperatura mañana”, de forma que se sepa ya qué queremos exactamente.

Para utilizar una acción no es necesario instalarla, pero antes de que los usuarios puedan usarla es necesario enviarla a producción para que pueda ser aprobada. Sin embargo, sí que podremos utilizar nuestras acciones antes de publicarlas si las probamos conectados al dispositivo con la misma cuenta con la que las hemos desarrollado.

Por otro lado, una parte importante del desarrollo de las acciones es planear cómo los usuarios las van a descubrir. Los usuarios pueden hacer esto diciendo la acción que quieren realizar, “quiero saber la temperatura de mañana”, o buscando en el directorio de acciones. También podemos proporcionar links que lleven a nuestra acción o la invoquen desde un navegador.

Por último mencionar que Google también nos proporciona analíticas que analizan el uso, el descubrimiento de las acciones, las conversaciones que se dan y su longitud, entre otras muchas cosas.

2.2. Conceptos básicos

  • Asistente de Google: asistente virtual de Google para permitir conversaciones entre los usuarios y Google, dando respuesta a alguna necesidad.
  • Dialogflow: herramienta de Google para desarrollar experiencias conversacionales que puedan usarse con el Asistente de Google. Utiliza machine learning para analizar el input del usuario e identificar lo que quiere hacer para poder responder de la manera más correcta.
  • Agente: proyecto de DialogFlow para administrar ciertas experiencias en uno o múltiples idiomas.
  • Intent: se trata del objetivo que tiene el usuario cuando habla con el Asistente de Google. Los agentes de Dialogflow se crean con dos intents por defecto: el de bienvenida y el de fallback, que se ejecuta cuando no se identifica qué intent se debe utilizar. Es recomendable no borrarlos, sino modificarlos para que se adapte a nuestras necesidades.
  • Invocación: es cuando un usuario inicia la interacción con una acción. Puede hacerlo explícitamente, indicando su nombre, o implícitamente, indicando qué quiere hacer. Además, existen los eventos, que son una característica que permite que una acción se invoque programáticamente en vez de directamente por el usuario.
  • Parámetro: concepto que proporciona el usuario a través de su interacción con el Asistente de Google y que utilizaremos para dar una respuesta correcta a la necesidad. Por ejemplo, si queremos comprar tres cartones de leche para el viernes podríamos identificar “cartones de leche”, “tres” y “viernes” como parámetros. Estos parámetros pueden ser de un tipo definido como una entidad.
  • Entidad: se trata de representaciones de conceptos reales y que se pueden utilizar en las frases de entrenamiento para que Dialogflow identifique correctamente los parámetros. Por ejemplo, podríamos tener una entidad que represente las opciones de compra con “cartón de leche”, “batido” y “helado” como opciones. Dialogflow proporciona algunas entidades por defecto, pero también podemos añadir las nuestras.
  • Fulfillment: lógica que administra un evento para realizar la acción correspondiente. Un fulfillment puede ser una aplicación externa, un servicio, etc.
  • Frases de entrenamiento: ejemplos de posibles interacciones del usuario para llamar a un intent en concreto. Estas frases son utilizadas por un algoritmo que entrena al agente para que pueda entender lo que el usuario quiere. Es recomendable proporcionar al menos 20 frases.

2.3. ¿Cómo funciona?

A grandes rasgos, cuando un usuario interacciona con el Asistente de Google del dispositivo (teléfono, altavoz inteligente, smartwatch, etc.) se elabora una petición que se enlaza con un agente. Una vez se ha identificado el agente a utilizar, se intentará emparejar lo que el usuario solicita con un intent. Si se consigue, se intentará recuperar los parámetros necesarios. Si no todos los parámetros obligatorios se han proporcionado o si no se han identificado, se solicitarán al usuario.

A continuación se debe devolver una respuesta. En caso de que ésta sea estática o con una lógica mínima se hará directamente. Sin embargo, para una lógica más compleja o para utilizar bases de datos o APIs externas será necesario utilizar un fulfillment, el cual hará el tratamiento necesario.

Al final, se use un fulfillment o no, se mostrará una respuesta al usuario, tras la cual se podrá terminar la conversación o solicitar más información al usuario para continuarla.

3. Ejemplo

Como ejemplo vamos a desarrollar una acción que calcule un número aleatorio dentro de un rango definido por el propio usuario. El objetivo es aprender cómo funciona una acción básica, por lo que no cubriremos el proceso de mandar nuestra aplicación a producción.

3.1. Consola de Actions on Google

El primer paso es conectarse a la consola de Actions on Google, a la cual puedes acceder en este enlace. Para ello nos pedirá identificarnos con una cuenta de Google.

Una vez conectados, podremos crear un nuevo proyecto, proporcionando un nombre para el mismo y seleccionando país y el idioma para las acciones, aunque luego se pueden escoger más. En mi caso será España y castellano (Spanish).

Nuevo proyecto en Actions on Google

 

La siguiente pantalla dispondrá de una serie de opciones para comenzar nuestro proyecto. En nuestro caso escogeremos Conversational.

Conversational experience en el selector

Ya dentro de nuestro proyecto, seleccionaremos Invocation en el menú a la izquierda y escribiremos el nombre que identificará nuestro proyecto. Después, pulsa el botón Save para guardar los cambios. Ten en cuenta que este nombre será el que se use para iniciarla y el que se mostrará en el directorio de acciones. En mi caso he escogido Mr. Random.

p

Panel de Invocation en la consola de Actions on Google

El siguiente paso será crear una acción, por lo que pulsamos en Actions en el menú y añadimos una. A continuación nos dejará escoger entre una lista de intents pre-construidos. Sin embargo, nosotros escogeremos Custom intent y daremos a Build, tras lo cual se nos abrirá una nueva pestaña con Dialogflow.

Crear una acción en la consola de Actions on Google

 

3.2. Dialogflow

Dentro de Dialogflow tendremos que escoger el idioma por defecto de nuestro agente y la zona horaria. Elegimos nuevamente Spanish y la zona horaria que nos corresponda.

Crear proyecto en Dialogflow

3.2.1. Configurar el intent

Ahora crearemos nuestro intent dentro de la sección Intent a la que podemos acceder desde el menú a la izquierda si no estamos ya en ella. Lo primero será escoger un nombre, por ejemplo Random Intent. Después vamos a indicar frases de entrenamiento y los parámetros que vamos a necesitar.

Comenzamos por los parámetros, para lo cual bajamos hasta la sección correspondiente. Vamos a añadir dos denominados number1 y number2, de tipo @sys.number y ambos obligatorios, por lo que marcamos la casilla de required. Además, vamos a modificar sus prompts, que es lo que se le dirá al usuario para solicitar los parámetros que sean obligatorios y no se hayan proporcionado o reconocido.

Parámetros de un intent de DialogflowPrompt para un parámetro de Dialogflow

Ahora vamos con las frases de entrenamiento. Voy a proporcionarte una lista de ejemplo que debería ser suficiente, aunque para un intent que se vaya a utilizar fuera de un tutorial sería conveniente definir más frases. Por otro lado, es posible que a la hora de agregarlas Dialogflow identifique parámetros automáticamente que no sean los que queremos, así que tendremos que indicar los correctos. Para ello elimina los que no estén bien y selecciona las palabras que correspondan a los parámetros adecuados para asignarlos.

  • Random entre dos y nueve
  • Quiero un número cualquiera
  • Dame un número entre siete y veinte
  • Quiero un número
  • Quiero un número aleatorio
  • Dime un número mayor que sesenta
  • Necesito un número aleatorio no mayor que sesenta y dos

 

Frases de entrenamiento de un intento de Dialogflow

Si quisiéramos responder con un mensaje sencillo usaríamos el apartado de Responses. Sin embargo, queremos realizar una operación para calcular un número random, por lo que vamos a habilitar el uso de Fulfillment e, importante, guardamos los cambios en el intent dando al botón Save.

Habilitar fulfillment para un intento de Dialogflow

3.2.2. Configurar el fulfillment

El siguiente paso es ponernos a configurar el fulfillment. Para ello seleccionamos la sección correspondiente en el menú de la izquierda. Una vez en ella, habilitamos el inline editor y substituimos el código que tenemos por el siguiente:

'use strict';
const functions = require('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const RANDOM_INTENT = 'Random Intent';

const app = dialogflow();

app.intent(RANDOM_INTENT, (conv, {number1 ,number2}) => {
  var min, max;
  number1 = parseInt(number1, 10);
  number2 = parseInt(number2, 10);
  
  if(number1 < number2){
  	min = number1;
  	max = number2;
  } else {
  	min = number2;
  	max = number1;
  }
  
  var random = Math.floor(Math.random() * (max-min)) + min;
  conv.close("Tu número es " + random);
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

Ten en cuenta que el nombre que asignamos a la constante RANDOM_INTENT debe ser el mismo que hemos puesto como nombre para nuestro intent.

El último paso es dar a Deploy para desplegar nuestro código, lo cual tardará unos segundos o un par de minutos. Tras ello, ya deberíamos poder utilizar nuestra acción.

3.3. Probando nuestra acción

Podemos probar nuestra aplicación tanto en el simulador de la consola de Actions on Google, como utilizando varios dispositivos Android, si nos conectamos con la misma cuenta con la que hemos desarrollado la acción, ya que no la hemos enviado a producción y, por lo tanto, no está disponible para cualquiera.

Si queremos probarlo en el simulador, tan sólo tenemos que volver a la página web de la consola de Actions on Google y seleccionar el simulador en el menú. Una vez iniciado, podemos escribir «Ok Google, habla con Mr. Random» y luego indicarle que queremos un número en un rango determinado.

Ejecucción de Mr. Random en el simulador de la consola de Actions on Google

Respecto a los dispositivos, mencionar que, por ejemplo, si utilizamos un altavoz inteligente conectado con nuestra cuenta, no es necesario hacer nada más. Si, por el contrario queremos utilizarlo con un smartphone, tenemos que instalar el Asistente de Google desde Play Store e iniciarlo.

Ejecucción de Mr. Random en un teléfono con Android

¡Muchas gracias por haber leído este tutorial!

 

4. Referencias

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad