Splatoon2のステージ情報を調べるAlexaのカスタムスキルを作った
■まえおき
Amazon Echoを購入、カスタムスキルでSplatoon2のステージ情報を調べてもらえたら便利かも、と思い作ってみました。
今回も備忘録のため、詳細は省いています。
・Splatoon2のステージ情報はTwitterのBotなどで確認していたが、Alexaから教えてもらえたら面白いのでは。
・LambdaとNode.jsを使ったのですが、この時点で全くの素人、ちょっと勉強してみたい。
・いずれ誰かが同じスキルをよりスマートに作成すると思われるので、とにかく動くものを作れればよい。
・できれば公開したい(まだ申請していない)
調べてみると、Splatoon2のステージ情報を調べるスキルは、すでに以下などが存在していました。 ただし、英語のみで日本語に対応したものはまだ存在してない様子。
ステージ情報はNintendo Switch Onlineにあるイカリング2にて公開されていますが、こちらから直接取得するのは大変と思われるので、公開されているAPIを利用させていただきました。
Spla2 API - スプラトゥーン2のステージ情報API
コードはこちら。
https://github.com/manatee2005/Splatoon2
■カスタムスキル作成について
カスタムスキル作成は、まったくの初めてなので、最初はギアパワーの説明など、埋め込んだ情報を読んでもらう簡単な機能のみとし、まずは慣れることにしました。
以下のようなものです。
ユーザ:「アレクサ、スプラトゥーンを開いて」
↓
Alexa:「調べたいバトルルール、またはギアパワーを言ってください。」
↓
ユーザ:「メインインク効率アップ」
↓
Alexa:「メインインク効率アップが付きやすいブランドはジモン、付きにくいブランドはバトロイカです。メインウェポンの消費インク量が少なくなります。」
その後、ステージ情報については、sync-requestモジュールのhttpGetを使い、前述のAPIから取得する機能を追加しました。
ユーザ:「ナワバリ」
↓
Alexa:「現在のナワバリのステージはバッテラストリートとタチウオパーキングです。次のナワバリのステージは、、」
もしくは、
ユーザ:「サーモンラン」
↓
Alexa:「直近のサーモンランはトキシラズいぶし工房です。ブキは○○、、」
■開発用URL
・AWSコンソール(Lambda)
https://ap-northeast-1.console.aws.amazon.com
・アレクサ開発コンソール
・アレクサログイン(アプリ)
■カスタムスキル作成の基本的な操作・コード作成
基本的な内容は以下のサイトを参考にさせていただきました。 (その他いろいろ)
https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill
[日本語Alexa] Alexa Skills Kit for Node.js はじめの一歩 | Developers.IO
とりあえずこれだけで対話を動かせる!Amazon Echo ALEXA(Alexa Skill Set)カスタムスキル開発入門 - Qiita
■躓いたところ
いろいろと躓いたところは、以下のサイトが参考になりました。
・スロット値の取り出し方がわからない。
→「Synonyms(同義語)で設定した id をチェック、、」を参照しました。配列の取り出し方。
電車の運行情報を教えてくれるAlexa Skillを作ってみた - Qiita
・Lambda側の設定は完了、コンソール側のスキルを削除して作り直し、エンドポイントの設定でARNの指定を行い保存したところ、以下のエラーが発生。
「"The trigger setting for the Lambda
→Lambda側の設定を削除して作り直したところエラーは解消
・非同期処理が理由でHTMLのボディがrequest関数の外部へ取り出せない。
→requestモジュールではなく、sync-requestモジュールを用いる。
同期処理でrequestモジュールの戻り値を返す(Node.js)(非コールバック) - designetwork
・ZIPファイルにてsync-requestモジュールの追加の際に、「Lambda 関数 「GearpowerSkill」のデプロイパッケージが大きすぎて、インラインコード編集を有効にできません。ただし、関数を今すぐ呼び出すことはできます。」が発生。
→AWS SDKを削除する。
Alexa Skillで利用するLambda関数(Node.js)を、ハマらずに「一から作成」する方法 - Qiita
■その他の参考となったサイト
AWSのLambdaのタイムゾーンをUTCからJST(東京)に変更 - Qiita