Guía de inicio rápido: Integra servicios en entregas

En esta guía de inicio rápido, se describe cómo integrar tu agente en tus servicios mediante entregas.

Antes de comenzar

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

Esta guía de inicio rápido es una continuación de Compila agentes y también interactúa con ellos mediante la consola. En los pasos que aparecen a continuación, se supone que completaste la guía y continúas trabajando en el mismo agente.

En estos pasos se usa Cloud Functions para Firebase y se supone que tienes conocimientos básicos de Node.js. Si deseas crear entregas con tu propio servidor o con otro idioma, consulta la documentación sobre entregas más detallada.

Configuración: Implementa y habilita las entregas

Si deseas habilitar y también implementar las entregas mediante el editor intercalado y Cloud Functions para Firebase, sigue estos pasos:

  1. Haz clic en Entregas en el menú de la barra lateral izquierda.

  2. Establece el Editor intercalado como Habilitado.

  3. Haz clic en Implementar en la parte inferior del formulario.

En cada intent que requiere una entrega, debes realizar la habilitación correspondiente. Para habilitar la entrega del intent de bienvenida, sigue estos pasos:

  1. Haz clic en Intents, en el menú de la barra lateral izquierda.

  2. Haz clic en "Intent de bienvenida predeterminado".

  3. En la sección Frases de entrenamiento, agrega la siguiente frase:

    • hi
  4. Desplázate hacia abajo hasta la sección Entregas y activa la opción Habilitar llamadas de webhook para este intent.

  5. Haz clic en Guardar.

Ahora puedes probarlo en el simulador. Ingresa "Hola" en el simulador, que responde "Bienvenido a mi agente". Esta respuesta se envía desde el webhook de entrega que acabas de implementar.

Crea un controlador de entregas personalizado

En los pasos anteriores se utilizó un controlador suministrado por el código del editor intercalado predeterminado. Para crear un controlador personalizado, sigue estos pasos:

  1. Habilita las entregas para el intent de "nombre" 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 utilizada en la sección anterior es function welcome(agent).

  4. Debajo de los controladores existentes, agrega esta función para el intent de "nombre":

    function nameHandler(agent) {
      agent.add('My name is Dialogflow!');
    }
    
  5. Debajo de las definiciones de funciones del controlador, hay llamadas a intentMap.set(). 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 "Intent de bienvenida predeterminado".

  6. Debajo de las llamadas a intentMap.set existentes, agrega esta línea para el intent de "nombre":

    intentMap.set('name', nameHandler);
    
  7. Haz clic en Implementar en la parte inferior del formulario.

  8. Ingresa What's your name? en el simulador. La respuesta "Mi nombre es Dialogflow." se envía desde tu nuevo controlador.

Entidades

En los pasos anteriores, creaste un intent "Idiomas" para identificar idiomas hablados y lenguajes de programación. El intent utiliza las entidades language y ProgrammingLanguages. En esta sección, puedes acceder a los valores de parámetros para estas entidades en tu controlador de entregas.

Para agregar el controlador, sigue estos pasos:

  1. Habilita las entregas para el intent "Idiomas".

  2. Haz clic en Entregas en el menú de la barra lateral izquierda.

  3. De forma similar a los pasos anteriores, agrega el siguiente controlador y la llamada a intentMap:

    function languageHandler(agent) {
        const language = agent.parameters.language;
        const programmingLanguage = agent.parameters.ProgrammingLanguages;
        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('Language', languageHandler);
    
  4. Haz clic en Implementar.

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

Para probarlo, ingresa "Sé hablar alemán" en el simulador.

Contextos

En los pasos anteriores, creaste un intent de seguimiento para el intent "Idiomas". A fin de imitar correctamente el mismo comportamiento en tu entrega, necesitas configurar los mismos contexto de salida, esperanza de vida y parámetros como la respuesta estática. Modifica tu función languageHandler para incluir el contexto mediante el uso del método agent.setContext:

function languageHandler(agent) {
    const language = agent.parameters.language;
    const programmingLanguage = agent.parameters.ProgrammingLanguages;
    if (language) {
        agent.add(`From fulfillment: Wow! I didn't know you knew ${language}`);
        agent.setContext({
              name: 'languages-followup',
              lifespan: 2,
              parameters:{language: language}
            });
    } else if (programmingLanguage) {
        agent.add(`From fulfillment: ${programmingLanguage} is cool.`);
        agent.setContext({
              name: 'languages-followup',
              lifespan: 2,
              parameters:{ProgrammingLanguage: programmingLanguage}
            });
    } else {
        agent.add(`From fulfillment: What language do you know?`)
    }
}

En este controlador, estás agregando un contexto de salida con el nombre "Idiomas - seguimiento" que tiene una esperanza de vida de 2 turnos y un valor de parámetro (language o ProgrammingLanguages) en el contexto para la recuperación posterior. Haz clic en Implementar y luego interactúa con el simulador para probarlo.

A fin de recuperar los contextos en la entrega, puedes usar el método agent.getContext o conseguir una lista de todos los contextos con agent.contexts. Por ejemplo, si deseas crear un controlador de entregas para el intent de seguimiento "Idiomas - personalizado", se vería de la siguiente manera:

function languagesCustomHandler(agent) {
    const context = agent.getContext('languages-followup');
    const allContexts = agent.contexts; // [{ name: 'languages-followup', ...}]

    const language = context.parameters.language || context.parameters.ProgramingLanguages;

    const duration = agent.parameters.duration;
    agent.add(`I can't believe you've know ${language} for ${duration}!`);
}
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Dialogflow
¿Necesitas ayuda? Visita nuestra página de asistencia.