Eventos personalizados

Os eventos personalizados são aqueles que você define. Eles são usados para lidar com 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:

  1. O usuário final digita ou fala uma expressão.
  2. O Dialogflow corresponde a expressão do usuário final Intent-1, que é configurada para o fulfillment.
  3. O Dialogflow envia uma solicitação do webhook para o servidor.
  4. Seu servidor responde com uma resposta do webhook que inclui um evento de acompanhamento.
  5. 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.
  6. 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.