工作階段實體

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

舉例來說,如果您的代理程式具有包含「梨」和「葡萄」的 @fruit 實體類型,則代理程式會根據從使用者收集到的資訊,決定是否要將實體類型更新為包含「蘋果」或「橘子」。更新後的實體類型在後續工作階段中,會納入「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 類型建立、管理及更新工作階段實體。