セッションは、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
タイプを使用します。