En esta guía, se proporcionan varios ejemplos para implementar webhooks así como recomendaciones de solución de problemas de webhook.
Establece un parámetro de sesión
En los siguientes ejemplos, se muestra cómo configurar 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 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 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 del 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.
Cómo validar un parámetro del formulario
En los siguientes ejemplos, se muestra cómo validar un parámetro del 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 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 solucionas problemas de un webhook,
es útil registrar el ID de sesión desde tu webhook.
El campo sessionInfo.session
de la
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 de agentes con los registros de webhook
para solicitudes que usan el mismo ID de sesión.
La sección Registrar ID de sesión anterior
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 similar sin servidores de Google Cloud,
puedes usar el campo trace
de
entradas de registro
como un filtro de registro.
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 de un agente de Dialogflow en particular con el Las entradas de registro de webhook de Cloud Functions. En el ejemplo, se usa Filtros de Cloud Logging para un agente que habilitó Cloud Logging.
1. Filtra los registros de Dialogflow para los registros de errores de un agente en particular
Usa el siguiente filtro de Cloud Logging Si quieres filtrar tus registros de Dialogflow en busca de los registros de error de un agente en particular, haz lo siguiente:
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 la 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 si deseas filtrar tus registros de Cloud Function para 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 el período sesión. 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 usará 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 para 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 Todos los registros de webhook generados durante la ejecución de la solicitud de webhook asociado con el ID de sesión del paso 1 y el registro del paso 2.