En esta guía se explica cómo integrar tu agente con tus servicios mediante cumplimiento. Al integrar tu servicio, puedes tomar medidas en función de las expresiones de los usuarios finales y enviar respuestas dinámicas a los usuarios finales.
Antes de empezar
Si no tienes previsto usar la gestión de pedidos, puedes saltarte esta guía de inicio rápido.
En estos pasos se usa Cloud Functions y se presupone que tienes conocimientos básicos de Node.js. Si quieres crear una respuesta usando tu propio servidor u otro idioma, consulta la documentación sobre las respuestas, que incluye más detalles.
Antes de leer esta guía, debes hacer lo siguiente:
- Consulta los conceptos básicos de Dialogflow.
- Sigue los pasos de configuración.
- Sigue los pasos de la guía de inicio rápido Crear un agente.
Los pasos que se indican a continuación se refieren al mismo agente.
Si ya no tienes ese agente, puedes descargar
build-agent-quickstart.zip
e importar el archivo.
Editor insertado
La consola de Dialogflow tiene un editor de código integrado, llamado editor en línea, que puedes usar para crear código de webhook y desplegarlo en Cloud Functions. Cloud Functions tiene cargos asociados, pero el servicio está disponible sin coste hasta un número significativo de invocaciones mensuales. Recuerda que debes registrarte y proporcionar una cuenta de facturación válida. Cancela cuando quieras.
Cuando habilitas el editor insertado por primera vez, el código de cumplimiento de Node.js se rellena automáticamente con controladores predeterminados para las intenciones predeterminadas que se incluyen en todos los agentes. El código también incluye instrucciones comentadas para añadir controladores de intents definidos por el desarrollador.
El editor insertado está diseñado para hacer pruebas y prototipos sencillos de las respuestas. Cuando tengas todo listo para crear una aplicación de producción, debes crear un servicio de webhook.
Habilitar e implementar la respuesta con el editor insertado
Para habilitar y desplegar el código de respuesta predeterminado con el editor insertado, sigue estos pasos:
- En el menú de la barra lateral de la izquierda, haga clic en Cumplimiento.
- Activa el Editor insertado.
- Si no habilitaste la facturación en los pasos de configuración, se te pedirá que lo hagas ahora. Cloud Functions tiene cargos asociados, pero el servicio está disponible sin coste hasta un número significativo de invocaciones mensuales. Ten en cuenta que debes registrarte y proporcionar una cuenta de facturación. Cancela cuando quieras.
- Haz clic en Desplegar en la parte inferior del formulario y espera hasta que los cuadros de diálogo indiquen que se ha desplegado.
Para cada intención que requiera una respuesta, debes habilitar la respuesta de la intención. Para habilitar el cumplimiento del intent de bienvenida predeterminado, sigue estos pasos:
- En el menú de la barra lateral de la izquierda, haz clic en Intenciones.
- Haz clic en Intención de bienvenida predeterminada.
Desplázate hacia abajo hasta la sección Cumplimiento y activa la opción Habilitar llamada de webhook para esta intención.
Haz clic en el botón Guardar y espera hasta que el cuadro de diálogo Entrenamiento del agente indique que se ha completado.
Ahora puedes probar tu fulfillment en el simulador.
Introduce Hi
en el simulador y este responderá con Welcome to my agent!
.
Esta respuesta se envía desde el webhook de la acción que acabas de implementar.
En concreto, la respuesta procede de este código:
function welcome(agent) { agent.add(`Welcome to my agent!`); }
Crear un controlador de respuesta personalizado
En los pasos anteriores se usa un controlador proporcionado por el código del editor insertado predeterminado. Para crear un controlador personalizado, sigue estos pasos:
- Habilita la respuesta para la intención
get-agent-name
que has creado en los pasos anteriores. - En el menú de la barra lateral de la izquierda, haz clic en Cumplimiento y examina el código en el editor insertado.
Busca esta línea:
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
La función
onRequest
gestiona todas las solicitudes de Dialogflow. En el cuerpo de esta función, se definen funciones de controlador específicas. Estas funciones de controlador se invocan cuando se encuentran coincidencias con las intenciones asociadas. Por ejemplo, la función que se ha usado en la sección anterior esfunction welcome(agent)
.Debajo de los controladores que ya tengas, añade esta función para la intención
get-agent-name
:function getAgentNameHandler(agent) { agent.add('From fulfillment: My name is Dialogflow!'); }
Debajo de las definiciones de la función de controlador, hay
intentMap.set()
llamadas. Estas llamadas asocian controladores específicos con intenciones por nombre. Por ejemplo,intentMap.set('Default Welcome Intent', welcome)
asocia el controladorwelcome
con la intención llamadaDefault Welcome Intent
.Debajo de las llamadas
intentMap.set
existentes, añade esta línea para la intenciónget-agent-name
:intentMap.set('get-agent-name', getAgentNameHandler);
En la parte inferior del formulario, haga clic en Implementar.
Introduce
What's your name?
en el simulador. La respuestaFrom fulfillment: My name is Dialogflow!
se envía desde tu nuevo controlador.
Acceder a los valores de los parámetros
En los pasos anteriores, has creado un set-language
intent para identificar lenguajes humanos y de programación.
La intención usa los parámetros language
y language-programming
.
En esta sección, puedes acceder a los valores de estos parámetros en tu controlador de cumplimiento.
Para añadir el controlador, sigue estos pasos:
- Habilita la respuesta de la intención
set-language
. - En el menú de la barra lateral de la izquierda, haga clic en Cumplimiento.
De forma similar a los pasos anteriores, añade 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);
Haz clic en Desplegar.
Este controlador obtiene 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 especifican los usuarios finales en sus solicitudes.
Para probarlo, introduce I know how to speak German
en el simulador.