セッション エンティティ

セッションは、Dialogflow エージェントとエンドユーザー間の会話を表します。セッション中にセッション エンティティという特殊なエンティティを作成できます。セッション エンティティはカスタム エンティティ タイプを拡張または置換でき、作成されたセッション中にのみ存在します。セッション エンティティを含むすべてのセッション データは、Dialogflow によって 20 分間保存されます。

たとえば、エージェントの @fruit エンティティ タイプに「pear」や「grape」が含まれているときに、エンドユーザーから収集する情報に合わせて「apple」や「orange」を含むように更新できます。そのセッションの残りの時間、更新されたエンティティ タイプのエンティティ エントリは「apple」または「orange」になります。

フルフィルメントによるセッション エンティティの作成

セッション エンティティはフルフィルメントで作成できます。WebhookResponse タイプには、セッション エンティティの設定に使われる sessionEntityTypes というフィールドがあります。

次の例は、現在のセッションで fruit エンティティ タイプのエンティティ エントリを appleorange に設定する方法を示しています。

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"
    }
  ]
}

Actions on Google クライアント ライブラリを使用する例:

Actions on Google クライアント ライブラリを使用している場合、セッション エンティティ プラグインを使用できます。

コードは次のようになります。

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

API によるセッション エンティティの作成

セッション エンティティを作成、管理、更新するには、SessionEntityTypes タイプを使用します。