En esta guía, se proporcionan varias muestras para implementar webhooks, además de recomendaciones de solución de problemas de webhooks.
Establece 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 indica 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.
Configura los parámetros de formulario según sea necesario
En los siguientes ejemplos, se muestra cómo marcar un parámetro según sea necesario.
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.
Valida 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.
Registrar ID de sesión
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 solucionas problemas de un webhook, es útil registrar el ID de sesión desde 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 de webhook para solicitudes que usan el mismo ID de sesión.
En la sección ID de sesión de registro anterior, se muestra cómo registrar el ID de sesión desde un webhook.
Además, si alojas el webhook en Cloud Functions o en una opción sin servidores similar de Google Cloud, puedes usar el campo trace
de las entradas de registro como filtro.
Una sola ejecución de una función da como resultado varias entradas de registro con el mismo valor de seguimiento.
En el siguiente ejemplo, se usa el ID de sesión y el valor de seguimiento para asociar un registro de errores del agente de Dialogflow específico con las entradas de registro de webhook de Cloud Functions correspondientes. En el ejemplo, se usan filtros de Cloud Logging para un agente que habilitó Cloud Logging.
1. Filtrar los registros de Dialogflow para los registros de errores de un agente en particular
Usa el siguiente filtro de Cloud Logging para filtrar tus registros de Dialogflow en busca de 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 parece a lo siguiente:
{
"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.
Utilizarás el ID de sesión en el siguiente paso.
2. Filtra los registros de la Cloud Function para el ID de sesión
Usa el siguiente filtro de Cloud Logging para filtrar los registros de la función de Cloud Function por el 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 realizados 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"
}
Ten en cuenta el campo trace
que se usa en el siguiente paso.
3. Filtra los registros de Cloud Function 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"
donde TRACE_ID
es el último segmento del seguimiento. Por ejemplo, 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.