Entidades de sessão

Uma sessão representa uma conversa entre um agente do Dialogflow e um usuário final. É possível criar entidades especiais, chamadas de entidades de sessão, durante essa conversa. Elas podem estender ou substituir tipos de entidade personalizados e existem apenas durante a sessão para a qual foram criadas. Todos os dados da sessão, incluindo as entidades, são armazenados pelo Dialogflow por 20 minutos.

Por exemplo, se o agente tiver um tipo de entidade @fruit que inclui "pera" e "uva", ele poderá ser atualizado para incluir "maçã" ou "laranja", dependendo das informações coletadas do usuário final. O tipo de entidade atualizado terá a entrada de entidade “maçã” ou “laranja” pelo resto da sessão.

Como criar entidades de sessão com fulfillment

É possível criar entidades de sessão com fulfillment. O tipo WebhookResponse contém um campo chamado de sessionEntityTypes. Ele é usado para definir entidades de sessão.

Nos exemplos a seguir, mostramos como definir as entradas de entidade de um tipo fruit como apple e orange para a sessão atual.

Exemplo de WebhookResponse:

{
  "fulfillmentMessages": [
    {
      "text": {
        "text": [
          "Choose apple or orange"
        ]
      }
    }
  ],
  "sessionEntityTypes":[
    {
      "name":"projects/project-id/agent/sessions/session-id/entityTypes/fruit",
      "entities":[
        {
          "value":"APPLE_KEY",
          "synonyms":[
            "apple",
            "green apple",
            "crabapple"
          ]
        },
        {
          "value":"ORANGE_KEY",
          "synonyms":[
            "orange"
          ]
        }
      ],
      "entityOverrideMode":"ENTITY_OVERRIDE_MODE_OVERRIDE"
    }
  ]
}

Exemplo com uso da biblioteca de cliente para Actions on Google:

Se você estiver usando a biblioteca de cliente para Actions on Google, poderá usar o plug-in de entidades de sessão (links em inglês).

Seu código seria semelhante a este:

const { sessionEntitiesHelper } = require('actions-on-google-dialogflow-session-entities-plugin')

const app = dialogflow()
    .use(sessionEntitiesHelper())

app.intent('input.welcome', (conv) => {
  conv.ask('make your choice: apple or orange?');
  // Set the fruit session entity values to 'apple' and 'orange'.
  conv.sessionEntities.add({
    name: 'fruit',
    entities: [{
      value: 'APPLE_KEY',
      synonyms: [
        'apple', 'green apple', 'crabapple'
      ]
    }, {
      value: 'ORANGE_KEY',
      synonyms: ['orange']
    }]
  });
  conv.sessionEntities.send();
});

Como criar entidades de sessão com a API

Você cria, gerencia e atualiza as entidades da sessão usando o tipo SessionEntityTypes.