Alexa AlexaからDynamoDBにデータを追加する
あいさつ
どうも、はかせです。
今回は最近ご無沙汰だったAlexaです。
(UnityAWSが予想の右斜め上で難しかったのでしばらくこっちやります)
今回やるのはAlexaからDynamoDBへのデータのPutです。
DynamoDBでやること
DBを作るところからAlexaでやってもいいんですが、
初回ですしまずはあらかじめ用意しておきます。
やり方は簡単でまずDynamoDBのコンソールから「テーブルの作成」ボタンをクリックします。
するとこんな画面になるので
テーブル名とか必要なもの入れて下にある「作成」ボタンをクリックします
あとはちょっと待てばテーブルができます。
Lambdaでやること
Lambdaの設定は前回のハローワールドやった時のをそのまま使います。
hakase0274.hatenablog.com
この時に作ったコードに以下のコードを追加
import boto3 from boto3.dynamodb.conditions import Key, Attr def db(name,age): dynamodb = boto3.resource("dynamodb") table = dynamodb.Table('作ったテーブルの名前') table.put_item( Item = { "テーブルのプライマリキーの名前": 'プライマリキーの値として入れたいもの', #以下はテーブル作成の際に用意した場合のみ記述 "テーブルのソートキーの名前": 'ソートキーの値として入れたいもの', } ) return OneSpeech('データベースに追加したよ').build() #ハンドラーに追加 elif intent_name == 'DataBaseIntent': name = request['intent']['slots']['name'] age = request['intent']['slots']['age'] return db(name,age)
とりあえずネット上に落ちてるコードを
ガチャガチャくっつけてみました。
作成したテーブルの参照的なものを取得し
そこにクエリを発行しています。
そして作った処理を呼ぶため
ハンドラーに追加しました。
Alexaでやること
インテントとスロットを追加するだけです。
インテントとかスロットとか何?って方はこの辺りを見てもらうと
それとなく雰囲気がつかめると思います。
hakase0274.hatenablog.com
hakase0274.hatenablog.com
今回私はDataBaseIntentというインテントと
nameとageというスロットを作りました。
nameは適当にはかせとhakaseを入れただけです。
ageはAmazonの数値扱ってくれるビルトインのスロットを使いました。
実行
では実行です。
はい無事はかせ21歳が登録されました。