v2でのstateはこうやる?
v2にstateという概念がない。
this.handler.state = ...;とかってのがない
てか、もともとAlexaから送られてくるjsonにstateとかって項目はなくてsessionAttributesの中にSTATEという値を入れてあげてそれで管理していた。
ここで、再確認しておくのがv2でのsessionAttributesの保存方法は
// 保存の方法は
attributes = {
"key": "value"
}
handlerInput.attributesManager.setSessionAttributes(attributes);
この容量で
attribute = {
STATE: "stateKey"
}
handlerInput.attributesManager.setSessionAttributes(attributes);
って、設定してあげてcanHandleの中で
return handlerInput.requestEnvelope.session.attributes.STATE === "stateKey"
とかってしてあげればいいのではないか
つまり、こんな感じ?
const sampleIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'levelIntent'
&& handlerInput.requestEnvelope.session.attributes.STATE === "stateKey"; // ここ
},
handle(handlerInput) {
...
}
};
handlerInput.attributesManager.getSessionAttributes().STATEにstateKeyがはいっていなかったらcanHandleでfalseを返されるので、呼ばれない
他にいい方法ってか、ちゃんとした方法がある?