Capítulo 9: Cómo construir una aplicación Google Home con DialogFlow | Cumplimiento a través del editor en línea

Ahora que hemos configurado el entorno, creado el agente, los intentos y la entidad necesarios y los probamos. Pasemos al módulo de cumplimiento donde usaremos el editor en línea para crear una respuesta relevante basada en la entidad (QuoteType)

Contenido de la serie:

Capítulo 6: Tutorial de la aplicación Google Home: descripción general

Capítulo 7: Tutorial de la aplicación Google Home: diseño de conversación

Capítulo 8: Tutorial de la aplicación Google Home: configuración del entorno

Capítulo 9: Tutorial de la aplicación Google Home: cumplimiento a través del editor en línea

Capítulo 10: Tutorial de la aplicación Google Home: cumplimiento a través del almacén de datos en la nube

Capítulo 11: Tutorial de la aplicación Google Home: cumplimiento a través de Webhook

Capítulo 12: Tutorial de la aplicación Google Home: implementación de la aplicación

Resumen y qué parte del panorama general estamos abordando ahora.

Paso 1: Habilite el cumplimiento para la intención LookingForQuote.

Paso 2: - Cumplimiento a través del editor en línea [Desarrollado por las funciones de la nube para Firebase]

Elimine todo dentro del editor en línea. Tratemos de escribir desde cero una línea a la vez. Nada que temer, quédate conmigo.

Aquí va. La primera linea.

'uso estricto';

Estricto:

El propósito de "usar estricto" es indicar que el código debe ejecutarse en "modo estricto". Con el modo estricto, no puede, por ejemplo, usar variables no declaradas.

Todos los navegadores modernos admiten "uso estricto", excepto Internet Explorer (IE) 9 y versiones anteriores: quién usa IE de todos modos ... a menos ...

ok siguiendo adelante.

funciones const = require ('firebase-functions');

Const básicamente define algo que esto no va a cambiar dentro del programa para siempre. Importaremos el módulo de funciones de firebase aquí.

Luego, algunos concursos más, cada uno de los cuales mantendrá nuestros intentos. Estas cadenas deben coincidir con el nombre de los intentos.

'uso estricto';
funciones const = require ('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intento de bienvenida predeterminado';
const FALLBACK_INTENT = 'Intento de reserva predeterminado';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';

...

Ahora vamos a almacenar el objeto de flujo de diálogo dentro de una constante llamada aplicación.

aplicación const = dialogflow ();

A continuación, definiremos los intentos y crearemos una instancia de un objeto "conv" que utilizará la función ask para hablar con el usuario.

app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("¡bienvenido a Dr.Motivation! Solicite una cita sobre amistad, romance o motivación");
});

Recuerde habilitar webhook en la sección de cumplimiento dentro de la "intención de bienvenida predeterminada".

de manera similar, también definiremos las otras dos intenciones ... no se preocupe si esto es simple, ya que nuestro objetivo es hacer que este cumplimiento se ejecute sin errores primero.

uno para intento de reserva

app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Deja de murmurar y habla");
});

uno para nuestra intención personalizada

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Los amigos son terapeutas, podemos beber con");
});

finalmente vamos a devolver la aplicación de objeto de diálogo de flujo cuando se llama el cumplimiento

exportaciones.dialogflowFirebaseFulfillment = funciones.https.onRequest (aplicación);

el código completo se ve así

'uso estricto';
 
funciones const = require ('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intento de bienvenida predeterminado';
const FALLBACK_INTENT = 'Intento de reserva predeterminado';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
aplicación const = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("¡bienvenido a Dr.Motivation! Solicite una cita sobre amistad, romance o motivación");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Deja de murmurar y habla");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Los amigos son terapeutas, podemos beber con");
});
exportaciones.dialogflowFirebaseFulfillment = funciones.https.onRequest (aplicación);

Paso 3: Implemente la función

Paso 4: prueba la función

revise la respuesta de cumplimiento haciendo clic en

Probemos el respaldo predeterminado sin habilitar el cumplimiento a través de webhook y con él.

Sin Webhook habilitado:

La información de diagnóstico básicamente tiene una sola respuesta RAW API

Ahora, sigamos adelante y habilitemos el cumplimiento a través del webhook para la intención alternativa ... si aún no lo ha hecho.

salida:

ahora que la llamada webhook está habilitada, también estamos obteniendo una respuesta de cumplimiento.

Paso 5: agreguemos más funcionalidades al código.

Como estamos obteniendo QuoteType como parámetro, intentemos usarlo dentro de nuestro código mediante simples declaraciones If else.

Primero defina la entidad QuoteType

const QUOTE_TYPE_ENTITY = 'QuoteType';

luego extraiga el valor del parámetro, guárdelo en una variable ... hágalo coincidir con los valores e introduzca diferentes citas cada vez.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters (QUOTE_TYPE_ENTITY) .toLowerCase ();
     if (quote_type == "motivacional") {
     conv.ask ("No seas un holgazán");
     } else if (quote_type == "frienship") {
     conv.ask ("Los amigos son terapeutas, podemos beber con");
     } else if (quote_type == "romantic") {
     conv.ask ("algo romántico");
     } más {
         conv.ask ("quítate el culo y trabaja en lugar de hablar conmigo");
     }
});

Pruébalo:

También puede consultar la consola de Firebase para ver los registros de errores.

vaya a su consola base de fuego ... o debajo del editor en línea, haga clic en el enlace

ok..as conv.parameters no es una función sino una matriz de objetos, así que cambia () a []

parámetros de conv. (QUOTE_TYPE_ENTITY)

a

parámetros de conv. [QUOTE_TYPE_ENTITY]

El código final se da a continuación:

'uso estricto';
 
funciones const = require ('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intento de bienvenida predeterminado';
const FALLBACK_INTENT = 'Intento de reserva predeterminado';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
aplicación const = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("¡bienvenido a Dr.Motivation! Solicite una cita sobre amistad, romance o motivación");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Deja de murmurar y habla");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     if (quote_type == "motivacional") {
     conv.ask ("No seas un holgazán");
     } else if (quote_type == "frienship") {
     conv.ask ("Los amigos son terapeutas, podemos beber con");
     } else if (quote_type == "romantic") {
     conv.ask ("algo romántico");
     } más {
         conv.ask ("quítate el culo y trabaja, en lugar de hablar conmigo");
     }
});
exportaciones.dialogflowFirebaseFulfillment = funciones.https.onRequest (aplicación);

Paso 6: Implementar y probar:

Obviamente, esta no puede ser la versión final, si tiene que hacerlo realmente dinámico, debe conectarlo a una base de datos para obtener datos basados ​​en la entrada del usuario.

En el próximo capítulo, utilizaremos el almacén de datos en la nube de Google, que es un tipo de base de datos para extraer datos de ellos y ofrecer cotizaciones a nuestros usuarios.

Esta historia se publica en The Startup, la publicación de emprendimiento más grande de Medium, seguida de más de 358,974 personas.

Suscríbase para recibir nuestras principales historias aquí.