セッションは、Dialogflow エージェントとエンドユーザー間の会話を表します。セッション中にセッション エンティティという特殊なエンティティを作成できます。セッション エンティティはカスタム エンティティ タイプを拡張または置換でき、作成されたセッション中にのみ存在します。セッション エンティティを含むすべてのセッション データは、Dialogflow によって 20 分間保存されます。
たとえば、エージェントの @fruit エンティティ タイプに「pear」や「grape」が含まれているときに、エンドユーザーから収集する情報に合わせて「apple」や「orange」を含むように更新できます。そのセッションの残りの時間、更新されたエンティティ タイプのエンティティ エントリは「apple」または「orange」になります。
フルフィルメントによるセッション エンティティの作成
セッション エンティティはフルフィルメントで作成できます。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 クライアント ライブラリを使用している場合、セッション エンティティ プラグインを使用できます。
コードは次のようになります。
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 タイプを使用します。