AWS Lambdaのrubyランタイムでalexaスキル実装

AWS Lambdaのrubyランタイムでalexaスキル実装:


はじめに

こんにちは。

日々の業務ではインフラをやっています@hayaosatoです。

最近趣味でアレクサスキルの開発を始めました。

まだまだ勉強中ですが、アレクサスキルはエンドポイントにAWS Labmdaを設定でき、非常にお手軽です。

ところで、この間のre:Invent2018にてAWS Lambdaのランタイムにrubyが追加されましたね!

とういう事で今回はアレクサスキルをAWS Lambdaのrubyランタイムにて実装していきたいと思います!


作るもの

最小構成のアレクサスキルとして、アレクサに「おはよう」と言ったら今日の18時の天気と運勢を教えてくれるスキル

毎朝出かける前に天気と運勢を知りたいのですが、それらが一つになったスキルを作ってしまおうと思います。

また、朝なのでそんなにアレクサと会話するつもりもないですw

こちらが呼びかけたら答えてくれて、そのまま会話終了となるようにしていきます。

もっと会話を楽しみたいという方はアレクサのサンプルも豊富にあるのでそちらをご覧いただければと思います。

それでは早速作っていきます。


データ構造

アレクサは指定のデータ形式(JSON)のオブジェクトを渡せば答えてくれるので、今回は以下の

データ構造をアレクサに送るようにします。

アレクサに返すデータ構造としては以下のhashを返すようにしました。

{ 
  'version' => '1.0', 
  'response' => { 
    'outputSpeech' => { 
      'type' => 'PlainText', 
      'text' => "おはようございます" 
    }, 
    'shouldEndSession' => true 
  } 
} 
これが返ればひとまずはOK

それぞれの項目を説明すると、


version

アレクサに返す応答のバージョン。

とりあえず 1.0


response

アレクサが何を返す(話す)のかをmapで定義します


outputSpeech

アレクサに何か喋らせたい場合、こちらによってアレクサに喋らせたい内容をmapで定義します。


type
出力される音声のタイプを定義します。ひとまず PlainTextで。


text
実際にアレクサに喋らせる文書を定義します。


shouldEndSession

アレクサが応答した後に会話を終わらせるか、そのまま会話を継続させるかを定義します。

今回はアレクサが一回喋って終わりでいいので trueにしておきます。

という感じで実装しました。

APIなどの実装の説明は割愛させていただきます。

ソースコードはこちら


alexa設定

今度はAmazon開発者コンソールにてアレクサ側の設定ですが、設定フローとしては

  • アレクサの呼び出し方を決める(今回は おはよう アレクサ)
  • カスタムインテントの設定(今回は使用しないのですが、アレクサへの入力を扱う場合にはこちらが利用できるそうです)
  • アレクサとAWS Lambdaの連携
  • アレクサスキルのビルド(上記設定の反映)
となっています。

ざっとフローのスクショを貼っておきます。

また、基本的には困ることはないかと思うのですが、アレクサとAWS Lambdaの連携では先にAWS LambdaにアレクサのARNを登録しておかないとアレクサにAWS LambdaのARNを登録できませんでした。

アレクサスキル作成
68747470733a2f2f71696974612d696d6167652d


68747470733a2f2f71696974612d696d6167652d


スキルの呼び出し名の設定
68747470733a2f2f71696974612d696d6167652d


カスタムインテントの設定
68747470733a2f2f71696974612d696d6167652d


lambdaとの連携もして、全て通ればOK
68747470733a2f2f71696974612d696d6167652d



完成

アレクサスキルの開発コンソールではアレクサスキルをテストすることもできます。

無事できました!


68747470733a2f2f71696974612d696d6167652d



終わりに

アレクサスキルはAWS Lambdaによってお手軽にかけます。

また、AWS Lambdaにカスタムランタイムが提供されたので、おそらく全ての言語でアレクサスキルが開発できると思います。

皆さんも是非試してみてください。


参考

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)