Logotipo de Zephyrnet

Agregar una interfaz de conversación a su aplicación con Dialogflow

Fecha:

Foto por jason rosewell on Unsplash

Recientemente he estado construyendo una prueba de concepto (PoC) para una aplicación que espero convertir en un negocio y una de las áreas que quería explorar era tener una interfaz de conversación que permita a los usuarios agregar datos rápidamente sin la necesidad para encender su navegador web.

He tenido una experiencia limitada con los chatbots y las interfaces de conversación, hace un año que construí un bot de discordia, pero mi público objetivo no usaría Discord, así que decidí mirar Dialogflow ya que tuve una introducción en un reunión a la que había asistido anteriormente.

Dialogflow es el diseñador de interfaz de conversación de Google y trabaja con varios servicios, pero como es un producto de Google, funciona muy bien con Google Assistant, que era la plataforma a la que apunté para mi PoC.

1. Publicando su Chatbot en los equipos de Microsoft

2. 🤖 Cómo hablar con las computadoras: un marco para construir agentes conversacionales - Parte 1

3. Diseñando un chatbot para una mejor experiencia del cliente

4. Las 5 mejores plataformas de chatbot de PNL

La aplicación web, las funciones de Firebase y una copia de seguridad del agente Dialogflow se pueden encontrar en el proyecto de demostración que he creado en Github.

Agregaremos una interfaz de conversación para permitir que alguien agregue un Doggo a través de su dispositivo Google Home

En publicaciones de blog anteriores he cubierto trabajando con la base de datos Cloud Firefire de Firebase y usaremos esto como un punto de integración entre la aplicación web y la interfaz de conversación.

En proyecto de demostración hay una aplicación web de ejemplo que se puede alojar en Firebase que es un simple 'rastreador de doggo' donde un usuario, después de iniciar sesión, puede ver, editar, eliminar y agregar el perro que tiene.

Ejecutar la interfaz conversacional en el simulador Actions on Google

La interfaz de conversación permitirá al usuario agregar una nueva mascota diciendo "Hola Google, he comprado un nuevo doggo", que luego le hará al usuario una serie de preguntas para obtener los datos necesarios para agregar un nuevo doggo al sistema , en ese momento creará un nuevo registro para ese usuario.

Para seguir este proyecto, necesitará lo siguiente:

Una cuenta de Google

Como estamos usando Firebase, que es propiedad de Google, deberá registrarse para obtener una cuenta de Google si aún no tiene una.

Un proyecto de Firebase

Puede crear esto a través de la consola de Firebase, es importante asegurarse de que el proyecto Firebase esté vinculado a un proyecto de Google Cloud Platform, ya que será necesario en la configuración de Dialogflow.

Aplicación web de trabajo integrada con la base de datos de Cloud Firestore

El proyecto aplicación web en el proyecto de demostración puede usarse para esto, solo guarde el objeto de credenciales de Firebase en src/crendentials.js , configurándolo como la exportación predeterminada y asegúrese de que las reglas de Firestore estén establecidas en:

rules_version = '2';
servicio cloud.firestore {
partido / bases de datos / {base de datos} / documentos {
match / doggos / {userId} {
permitir leer, actualizar, eliminar: si request.auth.uid == userId;
permitir crear: si request.auth.uid! = null;
}
}
}

Estas reglas de seguridad hacen que los usuarios solo puedan leer, actualizar o eliminar sus propios registros y crear registros si están autenticados. También vamos a utilizar la ID de Firebase del usuario como clave del documento.

Ahora tenemos una aplicación web que usa Firebase para almacenar y recuperar datos, ahora podemos construir la interfaz de conversación que usará esa información.

Crear un nuevo agente en Dialogflow

Una vez que haya iniciado sesión en la consola de Dialogflow, puede crear un nuevo agente desde el menú de la izquierda.

Al crear el agente, asegúrese de que en la sección Proyecto de Google seleccione el mismo proyecto que el utilizado por su proyecto Firebase.

Agregue la intención 'Agregar Doggo'

Las intenciones son consultas realizadas por el usuario a Dialogflow que asignará una colección de frases de entrada a las respuestas estáticas o al backend para cumplir con la solicitud.

Si hay un conjunto particular de datos que desea recopilar del usuario antes de responder, puede usar la sección de parámetros para definir la información que desea recopilar, el tipo de datos y proporcionar un conjunto de indicaciones para que el usuario responda.

Nuestra intención básica responderá a 'Quiero agregar un doggo' y le pedirá al usuario que responda preguntas para obtener información sobre el perro, también podemos activar la intención a través de un evento, así que configúrelo en ADD_DOGGO (necesita presionar enter para crear el evento).

Agregar parámetros

Para agregar un perro al sistema, queremos recopilar los siguientes datos:

  • El nombre del perro
  • La fecha de nacimiento del perro.
  • Cuánto mueve su cola (en una escala del 1 al 10)

Bajo la Actions and Parameters En la sección podemos agregar estos parámetros. Establecer un parámetro según sea necesario le dará al usuario un mensaje para proporcionar la información.

Los parámetros se guardan entre las respuestas, una vez que se establecen todos los requisitos, se dispara la respuesta o el cumplimiento del intento

Frases de entrenamiento

Para que Dialogflow haga coincidir mejor la consulta con la intención, debemos proporcionarle un conjunto de frases de capacitación. Si hay un conjunto de datos demasiado pequeño para trabajar con él, es posible que no detecte la intención.

Como solo estamos tratando con un ejemplo básico, podemos usar variaciones en 'Quiero agregar un doggo' por ahora, pero si fuera más avanzado con la detección de entidades, necesitaríamos proporcionar ejemplos para eso.

Pruébalo

En el proyecto de demostración se incluye un conjunto de pruebas de 'unidad' para la intención utilizando Jest.

Puede probar fácilmente las intenciones de Dialogflow utilizando nada más que una solicitud POST a un punto final, pero es más fácil si agregamos alguna estructura a las pruebas para informar sobre ellas y ejecutarlas automáticamente.

Para crear una prueba, queremos realizar las siguientes acciones:

  • Arregle - Configure una nueva sesión de Dialogflow (atendida por DialogflowApiFactory.js en proyecto de demostración)
  • Actúe - Enviar la consulta a Dialogflow (usando dialogflow.detectIntent() en proyecto de demostración)
  • Afirmar - Verifique que el JSON que recibimos sea correcto (usando Jest's expect.objectContaining() comparador)

Para crear la sesión de Dialogflow, deberá crear una cuenta de servicio en Google Cloud Platform para su proyecto (enlace del proyecto GCP disponible desde la configuración del agente de Dialogflow), ya debe haber una cuenta de servicio configurada con permisos de Dialogflow, por lo que solo necesita para crear una nueva clave para esto.

Si necesita crear una nueva cuenta de servicio, asegúrese de que tenga Dialogflow API Client permisos

Si utiliza la opcion de DialogflowApiFactory del desplegable proyecto de demostración deberás proporcionarle la siguiente información:

  • projectId - Este es el project_id en la cuenta de servicio
  • serviceAccount - Este es el objeto JSON de GCP
  • sessionID - Esto puede tener cualquier valor, pero un UUID garantiza que no haya conflictos
La prueba recorre la conversación, detectIntent enviará una solicitud a Dialogflow y podemos hacer valer la respuesta

La conversación recopilará la información necesaria para crear un objeto de perro, pero no podrá almacenar esos datos en el almacén de documentos de Firestore para que la aplicación los recupere.

Para hacer esto, necesitamos configurar el cumplimiento en Dialogflow. Esto es bastante sencillo de hacer, ya que solo necesitamos habilitar el Webhook opción en el Fulfilment elemento de menú y agregue una URL para Dialogflow a los datos POST.

Como ya estamos usando Firebase, voy a usar las funciones de Firebase para manejar el cumplimiento, pero cualquier URL de acceso público funcionaría.

Entonces también habilitaremos el cumplimiento en la intención 'Agregar Doggo' para que Dialogflow sepa enviar los datos a la función de cumplimiento para obtener una respuesta para enviar al usuario.

Crear una función de Firebase para cumplir con la solicitud del usuario

Firebase CLI ofrece un medio realmente simple para comenzar a utilizar las funciones a través de firebase init y comprobando el Functions opción. Esto creará una subcarpeta con la estructura necesaria para crear e implementar una función Firebase.

Para obtener la ID de Firebase del usuario, necesitaremos usar el actions-on-google biblioteca ya que Dialogflow en sí no tiene acceso a esta información.

Luego crearemos una función simple que escuchará el cumplimiento de la intención de 'Agregar Doggo', leerá la lista de doggos que tiene el usuario y le agregará el nuevo doggo. Si no tienen un documento existente, lo crearemos con el doggo que han proporcionado.

Una vez que hayamos actualizado con éxito la base de datos, cerraremos la conversación.

Antes de esto, la identificación del usuario se habría determinado a partir de su dirección de correo electrónico y la referencia del documento de Firebase creada a través de un middleware

Probar la función de cumplimiento

Para probar su función de cumplimiento, primero debe conocer la carga útil que se enviará desde Dialogflow al webhook de cumplimiento.

Puede obtener esto proporcionando una URL ficticia en la opción de cumplimiento y utilizando el depurador del agente a la derecha que mostrará DIAGNOSTICS INFO . La carga útil se encuentra debajo de FULFILMENT REQUEST pestaña, guardar esto en un .json archivo para que podamos importar a nuestra prueba.

Una vez que tengamos la carga útil de la solicitud, probaremos la función de cumplimiento pasando esa solicitud y verificando que devuelve la respuesta correcta.

addDoggoRequest y addDoggoResponse son referencias al JSON enviado y recibido, updatedUpdate es el objeto pasado a la llamada Firestore doc.ref.set ().

Preparación del test
Para probar la función de la base de fuego, necesitamos eliminar las dependencias externas.

Eliminar la dependencia de estar expuesto a través de Firebase es bastante fácil, ya que podemos exportar la función de cumplimiento desde index.js archivo sin el functions.https.onRequest wrapper, de esa manera podemos invocar la aplicación en pruebas.

Eliminar las dependencias de autenticación y base de datos requiere un poco de burla, pero como Anteriormente cubrí mi artículo de Firebase, Jest hace que burlarse de los módulos sea realmente sencillo.

Los siguientes módulos de Google deben ser simulados para que se ejecuten las pruebas de cumplimiento del proyecto de demostración, así como el simulacro de Firebase para las llamadas a auth :

La principal simulación de interés es el método modifyIdToken, que debemos resguardar para devolver el correo electrónico del usuario para que funcione la lógica de autenticación de nuestro agente.

Un gotcha
Cuando ejecute la prueba con Jest, deberá asegurarse de establecer el entorno de prueba en node de lo contrario, encontrará un error realmente molesto que muestra:

[ERR_INVALID_ARG_TYPE]: el argumento "ruta" debe ser de tipo cadena. Recibió una instancia de Object

Despliegue de la función de cumplimiento

Esta es probablemente la parte más fácil del proceso, utilizando Firebase CLI solo necesitamos ejecutar firebase deploy --only functions que luego compilará y cargará la función al servicio de funciones de Firebase.

Después de cargar la función, la CLI imprimirá una URL en la que la función está disponible, solo necesitamos actualizar la URL de cumplimiento en Dialogflow para apuntar a esta URL y asegurarnos de que nuestra intención 'Agregar Doggos' Enable webhook call for this intent configurado como habilitado.

Hasta ahora hemos probado el Dialogflow y los componentes de cumplimiento de forma aislada, pero idealmente podríamos realizar una prueba de extremo a extremo durante todo el viaje.

Simulador

Si habilita la integración Acciones en Google (que se encuentra en el elemento del menú Integraciones), puede acceder al simulador del Asistente de Google.

El simulador ofrece un montón de opciones de configuración basadas en el entorno y el usuario, tales como:

  • Tipo de dispositivo utilizado
  • Idioma utilizado
  • Ubicación del usuario
  • Verificación de cuenta de usuario
  • Configuración de sandbox (para evitar que se realicen transacciones reales)

La interacción con el simulador se graba en el lado derecho para que pueda ver las cargas útiles de solicitud y respuesta, así como el audio que se envía si prueba los comandos de voz.

Prueba en dispositivo

Si ha iniciado sesión en Dialogflow con la cuenta de Google que usa en su teléfono, también puede probar usando ese dispositivo, solo necesita decir 'Hablar con [NOMBRE DE LA APLICACIÓN]' para comenzar la conversación.

Creo que si agrega otros a su proyecto, también pueden acceder a la interfaz de conversación en su aplicación Google Assistant.

Como el documento de Firestore para el usuario actúa como nuestro punto de integración, los datos que el usuario envía a través de conversaciones con el agente están disponibles para ellos de inmediato, siempre que haya un mecanismo para obtener los nuevos datos.

Para el aplicación de demostración, Tengo una recuperación de documentos en ejecución cuando cambia el estado de autenticación del usuario, por lo que una simple actualización se encargaría de esto.

Dialogflow es una herramienta increíble y, si bien este tutorial se ha centrado en los servicios que ofrece Google, tiene varias integraciones con plataformas como Slack, Telegram, Facebook Messenger y también ofrece agentes de chat para sitios web y chat de voz.

Actions on Google es otra gran herramienta que cubriré en otra publicación pronto, ya que ofrece un medio para iniciar una conversación con el usuario, que es una funcionalidad que actualmente estoy explorando en la prueba de concepto para mi aplicación. Estoy construyendo.

Particularmente me gusta la capacidad de prueba de Dialogflow y el actions-on-google En la biblioteca, cuando me presentaron las herramientas por primera vez en la reunión, parecía que sería una tarea difícil crear pruebas, pero el hecho de que todo sea JSON hace que sea mucho más fácil trabajar con ellas.

También quiero probar Botium pronto, Botium es una capa de abstracción sobre la interacción con el agente destinada a facilitar las pruebas de escritura para interfaces conversacionales y utiliza su propio estilo de especificación conversacional.

Las pruebas de interfaz conversacional son un espacio interesante ya que herramientas como Botium, al igual que Selenium y Cucumber, tienen un gran potencial, pero eso solo se da cuenta cuando se implementan los patrones de diseño adecuados para garantizar que las pruebas no se vuelvan frágiles y difíciles de trabajar.

Source: https://chatbotslife.com/adding-a-conversational-interface-to-your-app-with-dialogflow-9cfb032fce66?source=rss—-a49517e4c30b—4

punto_img

Información más reciente

punto_img