Java
lambda
AmazonEcho
AWSLambda
AlexaSkillsKit

スクレイピングした情報を教えてくれるAmazon echoのスキルをAlexa Skills Kit (ASK)を使ってJavaでつくってみた

はじめに

Amazon Echoを買ったので年末年始の時間を使って試しにスキルを作ってみました。
Javaに慣れているので手っ取り早く試すためにJavaで書きました。

基本を学ぶためにまずはamazonのドキュメントを読みつつすでに投稿されている方の情報を見ながら作ってみました。
https://developer.amazon.com/ja/alexa-skills-kit

ともあれsampleのソースを見た方がこんな感じかというのがわかるのでドキュメントとソースを見ながら。
https://github.com/amzn/alexa-skills-kit-java

作ったものはgithubにあげてあります。
https://github.com/ewai/amazon-echo-ask-sample

 どういうものを作ったか

オイシックスというサイトの情報を教えてくれるスキル
(会員にしかわからないかもしれないけど・・)教えてくれたら便利そうな情報をサイトからスクレイピングして読み上げてくれます。

①Alexa! "オイシックス"開いて!
②機能を呼び出す声かけ

というシンプルな流れです。

機能を呼び出す声かけ 反応するキーワード 処理内容
今週の特集教えて! 特集 メニューから今週の特集ページ一覧をスクレイピングして読み上げてくれる。
今週のセール商品教えて! セール、割引 セールページをスクレイピングして30%割引以上の商品を読み上げてくれる。
今週のVIP商品教えて! VIP VIPページの商品を読み上げてくれる。

aws Lambda作成

  1. トリガー追加(Alexa skills kit)
  2. 関数コードにてjarのアップ、ハンドラ設定など
  3. 環境変数にて"ALEXA_APP_ID"を追加。Alexa skillsのアプリケーションIDをvalueに設定する。
  4. 実行ロールの設定
  5. テストしてみる。

1回目の呼び出しは10秒以上かかってそうです。2回目からはすぐに反応します。
時間が経つとまた起動が遅くなります。
よほどよく使われるスキルなら良いかもしれませんがそうでもないならないので何か対策が必要そうです。
定期的に呼び出すとか。

デザインが変わってidやclassが変わると改修が必要です。。

Alexa skills作成

  1. スキル情報設定(アプリケーションIDが発番されているのでメモる)
  2. 対話モデル作成
  3. 設定(この時点でlambdaのurlが必要)
  4. テストしてみる。(ここで表示されるjsonパラメータをLambda側のテストに使うとよい)
  5. 公開情報設定
  6. プライバシーとコンプライアンス(保存だけする。とりあえず申請しない。)
  7. 上記を一通り設定すると”Skills Beta Testing”がアクティブになる。自分のAmazonEchoアカウントをテスターとして追加する。   そうすると使える状態になっているので試してみる。

もう少し汎用的につくってWEBメンテナンス画面を作ればどのお店でも使えそうですが
必要性がわからないのと労力を注げず一旦やめときます。