Node.js
ask
Alexa

AlexaSkillのnode.js(V2)で類義語を固定で取得する

alexa-skills-kit-sdk-for-nodejs(ask-sdk)にてスロットを取得しようとした時、基本的には以下のようにとってた

const request = handlerInput.requestEnvelope.request; 
var slots = request.intent.slots.slotsName.value; // slotsNameというスロットを取得

しかし、これはユーザーが発したスロットをアレクサが聞き取った単語をそのまま取得する方法である。
しかし、ASKのスロットには類義語IDを設定することができる。

例えば、fruitスロットがオレンジで設定しているものがあった時、以下のような類義語とIDを設定したりできる。

fruitスロット
オレンジ

[類義語]
おれんじ
みかん
ミカン
蜜柑

[id]
orange

この時、ユーザーがfruitスロットのところに蜜柑と言った時、上記のコードでは蜜柑と取得する。
しかし、スロットを固定で取得したかったり、idで取得したかったりする場合は以下のうように取得できる

const request = handlerInput.requestEnvelope.request; 

var slotsValue = request.intent.slots.fruit.resolutions.resolutionsPerAuthority[0].values[0].value.name; // 蜜柑
var slotsId = request.intent.slots.fruit.resolutions.resolutionsPerAuthority[0].values[0].value.id; // orange