工作階段實體

工作階段代表 Dialogflow 代理程式和使用者之間的對話。您可以在工作階段期間建立特殊實體,稱為「工作階段實體」。 工作階段實體可以擴充或取代自訂實體型別,且只會在建立工作階段時存在。Dialogflow 會儲存所有工作階段資料 (包括工作階段實體) 20 分鐘。

舉例來說,如果您的代理程式具有包含「梨子」和「葡萄」的 @fruit 實體類型,則代理程式會根據從使用者回覆中收集到的資訊,決定是否要將實體類型更新為包含「蘋果」或「橘子」。更新後的實體類型在工作階段的後續對話中,將會納入「蘋果」或「橘子」實體項目。

使用執行要求建立工作階段實體

您可以透過完成建立工作階段實體。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 用戶端程式庫,可以運用 Session Entities 外掛程式

程式碼會類似於下列內容:

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 類型來建立、管理及更新工作階段實體。