Alexa お祝いスキル

はいさい。

二辺の比とその間の間の角が等しい.
よって、二つの三角形は相似。
証明終了。

数学検定準二級のイェスタデイです。
(シーサーズラボどこいった)

さてさて、完全に自己満足のアレクサスキルを作ってました。
先日、推しのアイドルさんの誕生日でした。
Twitter上には、お祝いメッセージが溢れてました。

それを眺めていて、このお祝いメッセージは本人に届くのか?
とふと思いました。
(ハッシュタグを追えば見れるんですけどね。)

そこで、お祝いメッセージをピックアップして読んでくれたら
お祝いしたほうも、される方もハッピーなのでは?


と思って作ってみました。
細かい説明は、置いておいて、、、動作はこんな感じ。

(動画埋め込みのやり方がわかりませんでした・・・・)
ランダムで、Twitter上のお祝いメッセージを読み上げます。


Alexaスキルは、いくつかのワードからできていて、
最初は、必ず「アレクサ」、これで音声受付モードになります。
そのあとの「みりんちゃん、おめでとう」が今回のスキルの呼び出し名。
そのあとに細かい「インテント」や「スロット」がありますが
今回は使ってません。

その辺の事もいずれ説明書けたら書きたいと思います。

今回は、スキルの概要。

流れは、「Alexa Skills Kit」からAWSの「Lambda」を呼びだす感じ。
Lambdaへ渡されるイベント(Json)の中に情報として、
上にあげた「インテント」や「スロット」の情報が含まれます。

Jsonはこんな感じ。


{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.434c2e66-4552-49b9-a1c0-fb6d5a760107",
"application": {
"applicationId": "amzn1.ask.skill.73d92069-a667-430f-b958-bef03de0d304"
},
"user": {
"userId": "amzn1.ask.account.[ユーザーID]"
}
},
"context": {
"System": {
"application": {
"applicationId": "amzn1.ask.skill.73d92069-a667-430f-b958-bef03de0d304"
},
"user": {
"userId": "amzn1.ask.account.[ユーザーID]"
},
"device": {
"deviceId": "amzn1.ask.device.[デバイスID]",
"supportedInterfaces": {}
},
"apiEndpoint": "https://api.fe.amazonalexa.com",
"apiAccessToken": [アクセストークン]
}
},
"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.afc3ce94-6d64-46d9-a130-f370c230c74d",
"timestamp": "2018-09-19T14:44:19Z",
"locale": "ja-JP",
"intent": {
"name": "[インテント名]",
"confirmationStatus": "NONE"
}
}
}


ここのインテント名で、スキル呼び出し後の動作を分岐させることができます。
詳細は、、、今回は使ってないので割愛。

その後は、Lambdaで処理して、Alexaに話させたい内容を返せばOK。


今回のシステム構成はざっくり↓のようになります。
Twitterから、お祝いメッセージのハッシュタグを収集。
データベースに情報を保存。
Alexaスキルから呼ばれたら、データベースからランダムに一つを選択して、返答。
という感じ。





しばらく、日記書いてなかったのでちゃんと書くか、、、
と思いましたが、意外と雑。
もう少しちゃんと技術ブログ書きたい。。。

以上。