こんにちは!
アマゾンエコーが日本で発売されて1ヶ月ほど経ちました。せっかく応募に当選して購入することができたので、スキル作りに挑戦したいと思います。
Rails側の対応
alexa_rubykit
という便利gemがあるのでそれを利用します。Railsからエコーに返すJSONを簡単に作ってくれます。
これをGemfileに追加します。
gem 'alexa_rubykit'
続いてコントローラーを作ります。エコーから受け取った音声の文字列をそのままエコーに返します。
単純なオウム返しのスキルだと思って下さい。
class TalksController < ApplicationController
protect_from_forgery with: :null_session
def create
request = AlexaRubykit::build_request(params)
response = AlexaRubykit::Response.new
response.add_speech("あなたの名前は#{request.slots[:MyName][:value]}ですね")
render json: response.build_response
end
end
request.slots[:MyName][:value]
この部分がエコーから渡ってくるパラメーターになります。この設定はこのあと行います。
Alexa側の対応
スキルの登録
開発者ポータル にてスキルを登録していきます。
Slill Builder
次へを押すとスキルビルダーに画面が切り替わると思います。そこでインテントを追加します。
今回は、 YourNameIntent
という名前のインテントを作成します。続いて Sample Utterances
を設定していきます。
MyName
という箇所をAlexaが解析して文字列としてRailsへPOSTしてくれます。設定が終わったらビルドモデルしてください。
エンドポイントの設定
RailsアプリへのURLを設定します。 https
ということで heroku
を使った方が特に何も用意しなくてよいのでオススメです。
グローバルフィールドの設定
ここではサブドメインをチェックを入れて下さい。
テスト
サービスシュミレーターでテストを行います。発音する言葉を入力して見てください。ここで、 Sample Utterances
とのつながりが分かると思います。
テストでも無事に名前を認識してますね、さすがエコー。
感想
以上、簡単なRailsとの連携でした。データベースを利用したりすればもっと幅の広がるスキルができると思います。
みなさんもアマゾンエコーでスキルを作って遊んでみませんかー??