s3 adapterはレコード(S3オブジェクト)が無いとエラーをthrowします。
なので初回起動時だけエラーになることがあります。
こういうヘルパー関数入れておくと、回避できます。
Typescript
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const getPersistentAttributes = async <Attributes = {[key: string]: any}>(handlerInput: HandlerInput, defaultAttributes: Attributes): Promise<Attributes> => {
try {
const data = await handlerInput.attributesManager.getPersistentAttributes()
if (!data) return defaultAttributes
return data as Attributes
} catch (e) {
return defaultAttributes
}
}
Node.js
const getPersistentAttributes = async (handlerInput, defaultAttributes = {}) => {
try {
const data = await handlerInput.attributesManager.getPersistentAttributes()
if (!data) return defaultAttributes
return data
} catch (e) {
return defaultAttributes
}
}
めんどくさいという人へ
ライブラリにこのコードいれてます。
https://github.com/ask-utils/ask-utils/blob/master/libs/attributeManager.ts#L21
$ npm i -S ask-utils
Hosted skillならpackage.jsonにこうかけばOK
“ask-utils”: “2”
const { getPersistentAttributes } = require(‘ask-utils’)
const att = await getPersistentAttributes(handlerInput, {count: 0})