LoginSignup
1
0

More than 5 years have passed since last update.

C#でAlexa用のテーブルにデータを追加。やりなおし。

Last updated at Posted at 2018-11-15

2018年11月16日追記:

前回もそうですが、今回書いたやり方は「低レベルAPIを利用したテーブル操作」だったことがわかりました。
ということはもちろん「高レベルAPI」があって、それを使うとより簡単に記述できるようです。
すみません。
高レベルAPIを使ったデータの追加方法について書きました。

はじめに

今回はテーブルへのデータの追加方法の説明のやり直しです。
こちらも基本的にはテーブル作成と同じで、リクエストを作って、それをPutItemAsyncメソッドに渡すことでデータを追加できます。

渡すデータはユーザーID(文字列)保存したい値(キーバリューペア)です。
キーバリューペアはDictionary<string, AttributeValue>

            var tableName = "TestTable";
            var intentRequest = input.Request as IntentRequest;
            var sign = intentRequest.Intent.Slots["StarSign"].Value;

            //ユーザーIDを`intentRequest`から取得
            var userId = input.Session.User.UserId;

            //永続アトリビュートの構築
            var attrs = new AttributeValue();
            //こんな感じで、任意のデータをキーバリューペアの形で追加していく。
            //この「attrs」変数を「attributes」列の値として、あとでリクエストを構築する。
            attrs.M.Add("sign",new AttributeValue{S="ふたご座"});

            //リクエストの構築
            var request = new PutItemRequest
            {
                TableName = tableName,//追加先のテーブル名
                //各カラムの値を指定
                Item = new Dictionary<string, AttributeValue>
                {
                    {"id",new AttributeValue{S= userId} },
                    {"attributes",attrs}
                }
            };

            //テーブルに追加
            var result = client.PutItemAsync(request).Result;

attributes列に入れるデータを作ります。これはAttributeValueのインスタンスです。
AttributeValueは以下のようなプロパティがあり、これらは格納するデータの種類になります。
image.png
Alexaスキルではこの「M」プロパティを使います。
このプロパティはDictionary<string,AttributeValue>型なので、キー(文字列)とバリュー(これまたAttributeValue)を入れていきます。
今回はユーザーの発話から取得した星座の情報を保存しますので、「sign」をキーとして、バリューにnew AttributeValue{ S = "ふたご座"}を入れます。
もし、複数ある場合は同じようにして「M」プロパティにAddしていきます。

こうしてattributes列に入れるデータを作ったら、それを使ってPutItemRequestを作ります。

リクエストができたらPutItemAsyncメソッドに渡せば、指定したテーブルにデータが追加されます。

AWSコンソールで確認すると以下のように、Node.js版のスキルで作成されたテーブルと同じ形式でデータが追加れているのがわかります。

image.png

これで公式トレーニング第4回をC#で書くことができるはずです。

あ、データの取得忘れてた。

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