LoginSignup
8
1

More than 5 years have passed since last update.

ask-sdk(v2)のスロット、attribute

Posted at

前提

fruitスロットというものがあって、値は以下の通り

みかん
[類義語]
オレンジ
[id]
mikann

drinkスロットがあって以下の通り

お茶
[類義語]
茶
紅茶
[id]
otya

sampleIntentというものがあって、サンプル発話は以下の通り

{fruit} と {drink} が飲みたい
// 例 みかんとお茶が飲みたい

スロット

ユーザーが以下のように発話をしたとする

アップルと紅茶が飲みたい

そのまま取得

アップルと、紅茶を取得

var request = handlerInput.requestEnvelope.request;
var fruit = request.intent.slots.fruit.value;
var drink = request.intent.slots.drink.value;
console.log(fruit, drink); // アップル 紅茶

類義語ではなく大元の単語で取得

りんごと、お茶で取得

var request = handlerInput.requestEnvelope.request;

if(request.intent.slots["fruit"].resolutions.resolutionsPerAuthority[0].values){
  var fruit = request.intent.slots["fruit"].resolutions.resolutionsPerAuthority[0].values[0].value.name;
}

if(request.intent.slots["drink"].resolutions.resolutionsPerAuthority[0].values){
  var drink = request.intent.slots["drink"].resolutions.resolutionsPerAuthority[0].values[0].value.name;
}
console.log(fruit, drink); // りんご お茶

id取得

var request = handlerInput.requestEnvelope.request;

if(request.intent.slots["fruit"].resolutions.resolutionsPerAuthority[0].values){
  var fruit = request.intent.slots["fruit"].resolutions.resolutionsPerAuthority[0].values[0].value.id;
}

if(request.intent.slots["drink"].resolutions.resolutionsPerAuthority[0].values){
  var drink = request.intent.slots["drink"].resolutions.resolutionsPerAuthority[0].values[0].value.id;
}
console.log(fruit, drink); // ringo otya

セッションAttribute

保存

var attributes = {
  "key": "value"
}
handlerInput.attributesManager.setSessionAttributes(attributes);

取得

var attributes = handlerInput.attributesManager.getSessionAttributes();
console.log(attributes.key); // value
8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1