ASK SDKでgetPersistentAttributesのデフォルト値が設定可能に(2.8.1以降の予定)

ASK SDKでDBのデータを取得する場合、getPersistentAttribuetsを利用します。

が、初めてスキルを使ったユーザーの場合、そもそもDBにレコードがない状態なので、実装側で初期値の設定が必要でした。

let attributes = await attributesManager.getPersistentAttributes()
if (!attributes) {
  attributes = {
    invocationCount: 1
  }
  attributesManager.setPersistenceAttributes(attributes)
}

リリース待ち新機能: デフォルト値の設置が可能に

現在「PRがマージされてリリース待ち」という状態ですが、このgetPersistentAttribuets関数でレコードがなかった場合の初期値を設定できるようになります。

const attributes = await attributesManager.getPersistentAttributes(true, {
    invocationCount: 1
  }
)

後方互換性の関係上、第一引数にはtrueを必ず指定してください。指定しないとgetPersistentAttributes関数をリクエスト内で複数回実行した場合のパフォーマンスが大きく低下する可能性があります。

参考: ask-sdkでPersistentAttributesを使う場合のキャッシュ管理

終わりに

実はS3 Adapterを使った場合にエラーが飛んでくるという問題がまだありますので、その辺は近々PRを出す予定です。

が、DynamoDBユーザーであれば2.8.1か2.9.0かのリリースで利用できますので是非お試しください。

Comment