1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C#で作成したAlexaスキルのエンドポイントからDynamoDBへのデータ保存を容易にするNuGetパッケージを公開した。

Posted at

はじめに

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を検索してインストールします。

image.png

使い方は簡単です。

//このインスタンス化でテーブルが作られます。
//userIdはセッション情報から取得します。
//これがプライマリキー(id)として使われます。
var attrManager=new AttributesManager(userId,_tableName);

//
//ユーザーの星座情報をsignをキーにしてセット。
//任意のキーで数値、文字列、一次元のリストや配列を格納することができます。
//ここではまだ変数に追加しているだけ。
attrManager.SetPersistentAttributes("sign", "ふたご座");
//セットした情報をDynamoDBに保存。
//ここでDynamoDBに追加!
attrManager.SavePersistentAttributes();

//値の取得
var attr=attrManager.GetPersistentAttributes();
var sign = attr["sign"];

という使い方になっています。

え、削除は、って?

未実装です…。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?