工作階段代表 Dialogflow 代理程式和使用者之間的對話。您可以在工作階段期間建立特殊實體,稱為「工作階段實體」。 工作階段實體可以擴充或取代自訂實體型別,且只會在建立工作階段時存在。Dialogflow 會儲存所有工作階段資料 (包括工作階段實體) 20 分鐘。
舉例來說,如果您的代理程式具有包含「梨子」和「葡萄」的 @fruit 實體類型,則代理程式會根據從使用者回覆中收集到的資訊,決定是否要將實體類型更新為包含「蘋果」或「橘子」。更新後的實體類型在工作階段的後續對話中,將會納入「蘋果」或「橘子」實體項目。
使用執行要求建立工作階段實體
您可以透過完成建立工作階段實體。WebhookResponse 型別包含名為 sessionEntityTypes 的欄位,用於設定工作階段實體。
下列範例說明如何將 fruit 實體類型的實體項目設為目前工作階段的 apple 和 orange。
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 類型來建立、管理及更新工作階段實體。