Guía de inicio rápido: Entrega

En esta guía, se muestra cómo integrar tu agente en los servicios mediante la entrega. La integración de tu servicio te permite realizar acciones basadas en las expresiones de usuario final y enviar respuestas dinámicas al usuario final.

Antes de comenzar

Si no planeas usar la entrega, puedes omitir esta guía de inicio rápido.

Estos pasos usan Cloud Functions y suponen un conocimiento básico de Node.js. Si deseas crear entregas con tu propio servidor o con otro lenguaje, consulta la documentación sobre entregas más detallada.

Debes hacer lo siguiente antes de leer esta guía:

  1. Lee los conceptos básicos de Dialogflow.
  2. Realiza los pasos de configuración.
  3. Realiza los pasos de la guía de inicio rápido Compila un agente. Los siguientes pasos continúan el trabajo en el mismo agente. Si ya no tienes ese agente, puedes descargar build-agent-quickstart.zip y, luego, importar el archivo.

El editor directo

La consola de Dialogflow tiene un editor de código integrado, llamado editor intercalado, que puedes usar para crear código de entrega y, luego, implementarlo en Cloud Functions. Cloud Functions tiene cargos asociados, pero el servicio es gratuito hasta una cantidad significativa de invocaciones mensuales. Ten en cuenta que aún debes registrarte y proporcionar una cuenta de facturación válida. Puedes cancelar la suscripción en cualquier momento.

Cuando habilitas por primera vez el editor directo, se prepropagan en el código de la entrega de Node.js los controladores predeterminados para intents predeterminados que se incluyen en todos los agentes. El código también tiene instrucciones comentadas a fin de agregar controladores para intents definidos por el desarrollador.

El editor directo está diseñado para pruebas de entrega y prototipos simples. Una vez que estés listo para compilar una aplicación de producción, debes crear un servicio de webhook.

Habilita e implementa la entrega con el editor directo

Para habilitar e implementar el código de entrega predeterminado con el editor intercalado, haz lo siguiente:

  1. Haz clic en Entregas en el menú de la barra lateral izquierda.
  2. Establece el Editor directo como Habilitado.
  3. Si no habilitaste la facturación en los pasos de configuración, se te solicitará que habilites la facturación ahora. Cloud Functions tiene cargos asociados, pero el servicio es gratuito hasta una cantidad significativa de invocaciones mensuales. Ten en cuenta que aún debes registrarte y proporcionar una cuenta de facturación. Puedes cancelar la suscripción en cualquier momento.
  4. Haz clic en Implementar en la parte inferior del formulario y espera hasta que los cuadros de diálogo indiquen que se implementó.

Debes habilitar la entrega para cada intent que la requiera. Para habilitar la entrega en el intent de bienvenida predeterminado, haz lo siguiente:

  1. Haz clic en Intents, en el menú de la barra lateral izquierda.
  2. Haz clic en Intent de bienvenida predeterminado.
  3. Desplázate hacia abajo hasta la sección Entregas y activa la opción Habilitar llamadas de webhook para esta intent.

  4. Haz clic en el botón Guardar y espera a que el cuadro de diálogo Entrenamiento del agente indique que se completó el entrenamiento.

Ahora puedes probar tu entrega en el simulador. Ingresa Hi en el simulador, que responde con Welcome to my agent!. Esta respuesta se envía desde el webhook de entrega que acabas de implementar. En particular, la respuesta vino de este código:

function welcome(agent) {
  agent.add(`Welcome to my agent!`);
}

Crea un controlador de entregas personalizado

Los pasos anteriores usan un controlador proporcionado por el código del editor intercalado predeterminado. Para crear un controlador personalizado, sigue estos pasos:

  1. Habilita la entrega para el intent get-agent-name que creaste en los pasos anteriores.
  2. Haz clic en Entregas en el menú de la barra lateral izquierda y examina el código en el editor intercalado.
  3. Busca esta línea:

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    

    La función onRequest controla todas las solicitudes de Dialogflow. En el cuerpo de esta función, se definen las funciones específicas del controlador. Estas funciones del controlador se invocan cuando se detecta una coincidencia con los intents asociados. Por ejemplo, la función que se usaste en la sección anterior es function welcome(agent).

  4. Debajo de los controladores existentes, agrega esta función para la intent get-agent-name:

    function getAgentNameHandler(agent) {
      agent.add('From fulfillment: My name is Dialogflow!');
    }
    
  5. Debajo de las definiciones de la función del controlador, hay intentMap.set() llamadas. Estas llamadas asocian controladores específicos con intents por nombre. Por ejemplo, intentMap.set('Default Welcome Intent', welcome) asocia el controlador welcome con el intent denominado Default Welcome Intent.

  6. Debajo de las llamadas existentes intentMap.set, agrega esta línea para el intent get-agent-name:

    intentMap.set('get-agent-name', getAgentNameHandler);
    
  7. Haz clic en Implementar en la parte inferior del formulario.

  8. Ingresa What's your name? en el simulador. La respuesta From fulfillment: My name is Dialogflow! se envía desde tu controlador nuevo.

Accede a valores de parámetros

En los pasos anteriores, creaste un intent set-language para identificar idiomas y lenguajes de programación. El intent usa los parámetros language y language-programming. En esta sección, accederás a los valores de estos parámetros en tu controlador de entregas.

Para agregar el controlador, sigue estos pasos:

  1. Habilita la entrega para el intent set-language.
  2. Haz clic en Entregas en el menú de la barra lateral izquierda.
  3. Como en los pasos anteriores, agrega el siguiente controlador y la llamada intentMap:

    function languageHandler(agent) {
        const language = agent.parameters.language;
        const programmingLanguage = agent.parameters['language-programming'];
        if (language) {
            agent.add(`From fulfillment: Wow! I didn't know you knew ${language}`);
        } else if (programmingLanguage) {
            agent.add(`From fulfillment: ${programmingLanguage} is cool`);
        } else {
            agent.add(`From fulfillment: What language do you know?`);
        }
    }
    
    intentMap.set('set-language', languageHandler);
    
  4. Haz clic en Implementar.

Este controlador recupera los parámetros language y language-programming y los almacena en variables. Recupera estos valores del atributo agent.parameters, que es un objeto que contiene todos los nombres y valores de los parámetros que los usuarios finales especifican en sus solicitudes.

Para probarlo, ingresa I know how to speak German (Sé hablar alemán) en el simulador.