Neste guia, fornecemos várias amostras para implementação de webhooks, bem como recomendações para solução de problemas de webhook.
Definir um parâmetro de sessão
Os exemplos a seguir mostram como definir um parâmetro de sessão.
Go
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Consulte o Início rápido de webhooks.Java
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Retornar uma resposta de fulfillment
Os exemplos a seguir mostram como retornar uma resposta de fulfillment.
Go
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Consulte o Início rápido de webhooks.Java
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Definir os parâmetros do formulário conforme necessário
Os exemplos a seguir mostram como sinalizar um parâmetro conforme necessário.
Java
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Validar um parâmetro de formulário
Os exemplos a seguir mostram como validar um parâmetro de formulário.
Java
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
ID da sessão de registro
O exemplo a seguir mostra como registrar o session ID
de uma solicitação de webhook.
Python
Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Solução de problemas
Ao solucionar problemas de um webhook,
é útil registrar o ID da sessão do webhook.
O campo sessionInfo.session
do
WebhookRequest
contém o ID da sessão.
O ID da sessão precisa ser exclusivo para cada conversa
e pode ajudar você a comparar os registros do agente com os do webhook
para solicitações que usam o mesmo ID de sessão.
A seção ID da sessão de registro acima
mostra como registrar o ID da sessão a partir de um webhook.
Além disso, se você estiver hospedando seu webhook no Cloud Functions ou em uma opção sem servidor semelhante do Google Cloud, use o campo trace
das entradas de registro como um filtro de registro.
Uma única execução de uma função resulta em várias entradas de registro com o mesmo valor de trace.
O exemplo abaixo usa o ID da sessão e o valor de trace para associar um registro de erro específico do agente do Dialogflow às entradas de registro do webhook do Cloud Functions correspondentes. No exemplo, usamos filtros do Cloud Logging para um agente que ativou o Cloud Logging.
1. Filtrar registros do Dialogflow para encontrar os registros de erro de um agente específico
Use o seguinte filtro do Cloud Logging para filtrar seus registros do Dialogflow por registros de erro de um determinado agente:
labels.location_id="global"
labels.agent_id="AGENT_ID"
severity=ERROR
Uma entrada de erro de registro do webhook tem esta aparência:
{
"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"
}
Observe o campo labels.session_id
,
que contém o ID da sessão.
Você usará o ID da sessão na próxima etapa.
2. Filtrar registros de funções do Cloud pelo ID da sessão
Use o seguinte filtro do Cloud Logging para filtrar seus registros da função do Cloud pelo ID da sessão:
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
textPayload="Debug Node: session ID = SESSION_ID"
Os registros resultantes correspondem aos registros de webhook feitos durante a sessão fornecida. Exemplo:
{
"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"
}
Observe o campo trace
, que é usado na próxima etapa.
3. Filtrar registros da função do Cloud para um trace específico
Use o filtro do Cloud Logging a seguir para filtrar os registros da função do Cloud para um trace específico:
resource.type = "cloud_function"
resource.labels.function_name = "CLOUD_FUNCTION_NAME"
resource.labels.region = "CLOUD_FUNCTION_REGION"
trace="projects/PROJECT_ID/traces/TRACE_ID"
em que TRACE_ID
é o último segmento do rastro. Por exemplo, o TRACE_ID
para projects/PROJECT_ID/traces/e41eefc1fac48665b442bfa400cc2f5e
é
e41eefc1fac48665b442bfa400cc2f5e
.
Os registros resultantes correspondem a todos os registros de webhook gerados durante a execução da solicitação de webhook associada ao ID da sessão da etapa 1 e ao trace da etapa 2.