En esta guía, se proporcionan varios ejemplos para implementar webhooks, así como recomendaciones para solucionar problemas relacionados con ellos.
Cómo establecer un parámetro de sesión
En los siguientes ejemplos, se muestra cómo establecer un parámetro de sesión.
Go
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Consulta la guía de inicio rápido de Webhooks.Java
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Cómo mostrar una respuesta de entrega
En los siguientes ejemplos, se muestra cómo mostrar una respuesta de entrega.
Go
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Consulta la guía de inicio rápido de webhooks.Java
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Establece los parámetros del formulario según sea necesario
En los siguientes ejemplos, se muestra cómo marcar un parámetro como obligatorio.
Java
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Cómo validar un parámetro de formulario
En los siguientes ejemplos, se muestra cómo validar un parámetro de formulario.
Java
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
ID de la sesión de registro
En el siguiente ejemplo, se muestra cómo registrar el session ID
desde una solicitud de webhook.
Python
Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Soluciona problemas
Cuando soluciones problemas relacionados con un webhook,
es útil registrar el ID de sesión de tu webhook.
El campo sessionInfo.session
de WebhookRequest contiene el ID de sesión.
El ID de sesión debe ser único para cada conversación y puede ayudarte a comparar los registros del agente con los registros del webhook para las solicitudes que usan el mismo ID de sesión.
En la sección Cómo registrar el ID de sesión que aparece más arriba, se muestra cómo registrar el ID de sesión desde un webhook.
Además, si alojas tu webhook en
Cloud Functions
o una opción sin servidores similar de Google Cloud,
puedes usar el campo trace
de las
entradas de registro
como un filtro de registro.
Una sola ejecución de una función genera varias entradas de registro con el mismo valor de seguimiento.
En el siguiente ejemplo, se usan el ID de sesión y el valor de seguimiento para asociar un registro de errores de agente de agentes conversacionales (Dialogflow CX) en particular con las entradas de registro del webhook de Cloud Functions correspondientes. En el ejemplo, se usan Filtros de Cloud Logging para un agente que habilitó Cloud Logging.
1. Filtra los registros de agentes conversacionales (Dialogflow CX) para los registros de errores de un agente en particular
Usa el siguiente filtro de Cloud Logging para filtrar los registros de tus agentes conversacionales (Dialogflow CX) en busca de los registros de errores de un agente en particular:
labels.location_id="global"
labels.agent_id="AGENT_ID"
severity=ERROR
Una entrada de error de registro de webhook se ve de la siguiente manera:
{
"insertId": "-zi368ye1ie3r",
"jsonPayload": {
"message": "Webhook error: State: URL_UNREACHABLE, Reason: UNREACHABLE_5xx, HTTP status code: 500",
"code": 14
},
"resource": {
"type": "global",
"labels": {
"project_id": "PROJECT_ID"
}
},
"timestamp": "2022-10-05T19:44:53.098938Z",
"severity": "ERROR",
"labels": {
"session_id": "ec8781-f28-7e6-791-d7e992e8f",
"location_id": "global",
"agent_id": "807346f0-f501-42b5-9642-af59d5e98165"
},
"logName": "projects/PROJECT_ID/logs/dialogflow-runtime.googleapis.com%2Frequests",
"receiveTimestamp": "2022-10-05T19:44:53.222552658Z"
}
Observa el campo labels.session_id
, que contiene el ID de sesión.
Usarás el ID de sesión en el siguiente paso.
2. Filtra los registros de Cloud Function para el ID de sesión
Usa el siguiente filtro de Cloud Logging para filtrar los registros de Cloud Function en busca del ID de sesión:
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
textPayload="Debug Node: session ID = SESSION_ID"
Los registros resultantes corresponden a los registros de webhook creados durante la sesión proporcionada. Por ejemplo:
{
"textPayload": "Debug Node: session ID = ec8781-f28-7e6-791-d7e992e8f",
"insertId": "632bdb2b000b7c6c77d0cc62",
"resource": {
"type": "cloud_function",
"labels": {
"project_id": "PROJECT_ID",
"function_name": "webhook",
"region": "us-central1"
}
},
"timestamp": "2022-10-05T19:44:53.098938Z",
"severity": "INFO",
"labels": {
"execution_id": "ozt5bnz50eeo",
"instance_id": "00c61b117c1f116421aa5503bc80f9aa636b9ef117bb2722f3d54414085e62be6e55af0aa0250a63534262b31a3d3a14af8c940203f1915db8b25b"
},
"logName": "projects/PROJECT_ID/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
"trace": "projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e",
"receiveTimestamp": "2022-10-05T19:44:53.222552658Z"
}
Observa el campo trace
que se usa en el siguiente paso.
3. Filtra los registros de Cloud Functions para un seguimiento en particular
Usa el siguiente filtro de Cloud Logging para filtrar los registros de Cloud Function de un seguimiento en particular:
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
trace="projects/PROJECT_ID/traces/TRACE_ID"
en la que TRACE_ID
es el último segmento del seguimiento. Por ejemplo, el TRACE_ID
para projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e
es e41eefc1fac48665b442bfa400cc2f5e
.
Los registros resultantes corresponden a todos los registros de webhook generados durante la ejecución de la solicitud de webhook asociada con el ID de sesión del paso 1 y con el seguimiento del paso 2.