Session entities

A session represents a conversation between a Dialogflow agent and an end-user. You can create special entities, called session entities during a session. Session entities can extend or replace developer entity types and only exist during the session that they were created for. All session data, including session entities, is stored by Dialogflow for 20 minutes.

For example, if your agent has a @fruit entity type that includes "pear" and "grape", that entity type could be updated to include "apple" or "orange", depending on the information your agent collects from the end-user. The updated entity type would have the "apple" or "orange" entity entry for the rest of the session.

Creating session entities with fulfillment

You can create session entities with fulfillment. The WebhookResponse type contains a field called sessionEntityTypes that is used to set session entities.

The following examples show how to set a fruit entity type's entity entries to apple and orange for the current session.

Example WebhookResponse:

{
  "payload":{
    "google":{
      "expectUserResponse":true,
      "richResponse":{
        "items":[
          {
            "simpleResponse":{
              "textToSpeech":"make your choice: apple or orange?"
            }
          }
        ]
      }
    }
  },
  "fulfillmentText":"make your choice: 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"
    }
  ]
}

Example using the Actions on Google client library:

If you are using the Actions on Google client library, you can use the Session Entities plugin.

Your code would look similar to the following:

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();
});

Creating session entities with the API

You create, manage, and update session entities using the SessionEntityTypes type.

Was this page helpful? Let us know how we did:

Send feedback about...

Dialogflow Documentation
Need help? Visit our support page.