LoginSignup
6
3

More than 5 years have passed since last update.

Alexaのスキルを開発して審査に提出するときに気をつけること

Last updated at Posted at 2017-12-23

Amazon Alexa Advent Calendar 2017 - Adventarの23日目の記事です。

はじめに

先日からAlexaの記事を書き続けています。
そして、どうせ記事を書くなら審査に出してみようということで簡単なスキルを作って審査に出してみました。。。しかし結果はリジェクトです。
何が足りなかったのか?どうすればよいのか?を書いていきたいと思います。

Alexaのリクエストを外部のエンドポイントで処理する場合には注意が必要

Alexaの作り方としてAWSのLambdaを使う方法と外部の別サーバーで処理する方法の2パターンがあります。
そして、普段はRuby on Railsで開発していることもあり、僕はエンドポイントをHerokuに向けています。

4. Amazon AlexaからHerokuのRailsにつなぐ - Qiita

ただ外部サーバーで処理する場合には注意が必要でした。
公式ドキュメントにも書かれていますが、「Alexaから送信されたリクエストを検証する」と「リクエストの署名を確認する」が必要です。

カスタムスキルをウェブサービスとしてホスティングする | Custom Skills

これはオレオレスキルで手元のEchoで動かす時には特に気にすることはありません。ただ、誰でも使えるスキルとして公開する場合には検証や署名あたりをちゃんと処理をしていないと審査でリジェクトされるようです。

AWSのLambdaであればこの辺りをいい感じにしてくるんだと思います。

Ruby on Railsで署名の確認などを行う

では、Ruby on RailsでAlexaの処理を行うにはどうすれば良いかを調べました。
gemがありました。ありがたい。

sidoh/alexa_verifier: Rubygem to verify requests sent to an Alexa skill are sent from Amazon

gem 'alexa_verifier'
controllers/applicationController.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :verify_alexa_request

  private
  def verify_alexa_request
    AlexaVerifier.valid!(request)
  end
end

簡単これだけです。

まとめ

まだ審査に通ってないので本当にこれで良いのかはわかりません。審査を通ったらもしくはリジェクトされたらここに追記したいと思います。

6
3
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
6
3