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:
- Lee los conceptos básicos de Dialogflow.
- Realiza los pasos de configuración.
- 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:
- Haz clic en Entregas en el menú de la barra lateral izquierda.
- Establece el Editor directo como Habilitado.
- 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.
- 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:
- Haz clic en Intents, en el menú de la barra lateral izquierda.
- Haz clic en Intent de bienvenida predeterminado.
Desplázate hacia abajo hasta la sección Entregas y activa la opción Habilitar llamadas de webhook para esta intent.
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:
- Habilita la entrega para el intent
get-agent-name
que creaste en los pasos anteriores. - Haz clic en Entregas en el menú de la barra lateral izquierda y examina el código en el editor intercalado.
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 esfunction welcome(agent)
.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!'); }
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 controladorwelcome
con el intent denominadoDefault Welcome Intent
.Debajo de las llamadas existentes
intentMap.set
, agrega esta línea para el intentget-agent-name
:intentMap.set('get-agent-name', getAgentNameHandler);
Haz clic en Implementar en la parte inferior del formulario.
Ingresa
What's your name?
en el simulador. La respuestaFrom 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:
- Habilita la entrega para el intent
set-language
. - Haz clic en Entregas en el menú de la barra lateral izquierda.
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);
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.