はじめに
Visual StudioでNuGetパッケージを作成し、公開する話を書きましたが、その際に説明用の画像として使用していたのが、今回お話するNuGetパッケージです。
どういうふうに便利なの?
C#からDynamoDBにアクセスするためにはAmazonが提供しているAWSSDK for .NET
ライブラリを使うのが一番簡単です。
これはNuGetパッケージとしても提供されているので、Visual Studioを使って開発する場合はとても簡単にインストールして使うことができます。
その中でも低レベルAPI
と高レベルAPI
があって、高レベルAPIは細かい部分がかなり抽象化されていてかなり簡単にDynamoDBのテーブルにデータを追加したりできます。
ただ、それでもAlexaスキルに限定した場合に、その汎用的なAPIは使用時にいささか手間を感じます。
このNugetパッケージはAlexaスキルの開発に用途を限定することによって、より簡単にDynamoDBへデータの追加ができるようにしたものです。
どういうときに使うの?
Alexaスキルにおいて、セッション内で、またはセッションをまたいでデータを保持したいときがあります。
同一セッション内であればユーザーの発話から得たデータをセッションアトリビュートという形でやりとりされるJSON内に持たせることで保持することができます。
しかし、セッションをまたぐ場合、それは外部の記憶域に保存しておく必要があるからです。Lambdaではステートを持たないのでデータを保持し続けることはできません。
というわけで作りました
NuGetマネージャからAlexaPersistentAttributesManager
を検索してインストールします。
使い方は簡単です。
//このインスタンス化でテーブルが作られます。
//userIdはセッション情報から取得します。
//これがプライマリキー(id)として使われます。
var attrManager=new AttributesManager(userId,_tableName);
//
//ユーザーの星座情報をsignをキーにしてセット。
//任意のキーで数値、文字列、一次元のリストや配列を格納することができます。
//ここではまだ変数に追加しているだけ。
attrManager.SetPersistentAttributes("sign", "ふたご座");
//セットした情報をDynamoDBに保存。
//ここでDynamoDBに追加!
attrManager.SavePersistentAttributes();
//値の取得
var attr=attrManager.GetPersistentAttributes();
var sign = attr["sign"];
という使い方になっています。
え、削除は、って?
未実装です…。