Os eventos personalizados são aqueles que você define. Elas são usadas para processar coisas que acontecem fora da conversa com o usuário final. Por exemplo, o usuário final clicou em um botão, um determinado período de tempo passou, o inventário disponível mudou durante a conversa, e assim por diante.
É possível invocar esses eventos usando fulfillment ou a API.
Invocar eventos com a API
A solicitação de uma chamada Sessions
tipo detectIntent
contém um campo queryInput.event
, que é usado para invocar eventos.
O tipo desse campo é um EventInput
, e contém campos para o nome do evento, parâmetros opcionais e o código do idioma.
Ao fornecer um evento para uma chamada de intent de detecção, você não fornece outros dados, como uma expressão de usuário final. A única finalidade da chamada é invocar um evento e acionar uma intent.
Invocar eventos com fulfillment
É possível invocar eventos por meio do fulfillment definindo o campo followupEventInput
de WebhookResponse
.
Opcionalmente, é possível definir o campo followupEventInput.parameters
para fornecer parâmetros à intent.
Exemplo:
{
"followupEventInput": {
"name": "event-name",
"parameters": {
"parameter-name-1": "parameter-value-1",
"parameter-name-2": "parameter-value-2"
},
"languageCode": "en-US"
}
}
Quando o parâmetro followupEventInput
é definido para um WebhookResponse
,
o Dialogflow ignora os campos fulfillmentText
, fulfillmentMessages
e payload
.
Além disso, o campo followupEventInput.languageCode
é obrigatório,
mas o Dialogflow o ignora,
porque o idioma já foi definido
na solicitação de detecção de intent original.
Quando o Dialogflow recebe uma resposta do webhook que inclui um evento, ele imediatamente aciona a intent correspondente em que foi definido.
O fluxo a seguir descreve as etapas:
- O usuário final digita ou fala uma expressão.
- O Dialogflow corresponde a expressão do usuário final Intent-1, que é configurada para o fulfillment.
- O Dialogflow envia uma solicitação do webhook para o servidor.
- Seu servidor responde com uma resposta do webhook que inclui um evento de acompanhamento.
- Em vez de responder ao usuário da correspondência para a Intent-1, o Dialogflow aciona a Intent-2, que é configurada para o evento.
- O Dialogflow prossegue como se o usuário final tivesse iniciado a correspondência para a Intent-2 e processa os parâmetros e o preenchimento obrigatórios conforme determinado pela configuração da Intent-2.
Como encadear as correspondências de intent com os eventos de resposta do webhook
É possível encadear as correspondências de intent com os eventos de resposta do webhook. No fluxo descrito acima, a Intent-2 também poderia ser configurada para fulfillment. Se a resposta do webhook do servidor fornecer outro evento, o Dialogflow continuará a corresponder a Intent-3 (configurada para o evento) sem responder ao usuário final para a Intent-2.
O Dialogflow não responde ao usuário final até que a cadeia termine. Ao encadear as intents dessa maneira, cada resposta do webhook precisa ser enviada de acordo com as restrições de tempo limite.