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
を返されるので、呼ばれない
他にいい方法ってか、ちゃんとした方法がある?