AWS環境でClovaスキルを開発してみる
AWS環境でClovaスキルを開発してみる:
ヴァル研究所 Advent Calendar 2018 15日目の記事です。
スマートスピーカーと言えばGoogle HomeやAmazon Alexa、LINE Clovaなど様々なプラットフォームがありますが、「スキルを作りたい」と思ってもなかなか難しいですよね。
今回はLINE Clovaに焦点を当てて紹介していきます。
そんな方はこちら
Clovaスキル×駅すぱあとWebサービス開発体験!初心者向けハンズオン
https://www.slideshare.net/RyusukeTakeda/clovaweb-108731707
スライドに沿って実装していくと簡単にスキルが出来上がります。
ソースコードもこちらにすべてアップしてありますので、後は駅すぱあとWebサービスのアクセスキーさえ用意してしまえば十分です。
https://github.com/val00250/ClovaSkills_Hands-on
駅すぱあとWebサービスのアクセスキーは、こちらから申請いただくと無料で入手できます。
https://ekiworld.net/service/sier/webservice/free_provision.html
はい。
業務などでAWSをガッツリ使っていたり、Alexa向けスキルをAWS環境で作っていて流用できないかとか、よく聞きます。
基本はAPI Gateway + Lambdaで問題ありません。
あとはDynamoDBなどと連携すればいろいろ出来ます。
スライドの11ページ以降がHerokuからAWSに変わります。
APIのデプロイを行うと通常は下記のエンドポイントが割り当てられるので、CEKに設定します。
https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/{$ステージ名}/{$リソース名}
設定の仕方はスライドの15ページ以降を見ながらやってみてください。
で、23ページまで進んだら下記を行います。
API Gatewayにテンプレートを設定している理由はいくつかあります。
うまくやればAlexaとClovaで同じスキルが開発できますし、データも共有できますので、マルチプラットフォーム、クロスプラットフォームのスキルが出来上がります。
また、Clovaスキルを作る際にAlexaへの展開も考えている場合はAWSで構築するのもオススメですよ。
ヴァル研究所 Advent Calendar 2018 15日目の記事です。
スマートスピーカーと言えばGoogle HomeやAmazon Alexa、LINE Clovaなど様々なプラットフォームがありますが、「スキルを作りたい」と思ってもなかなか難しいですよね。
今回はLINE Clovaに焦点を当てて紹介していきます。
まず何やって良いかわからない
そんな方はこちらClovaスキル×駅すぱあとWebサービス開発体験!初心者向けハンズオン
https://www.slideshare.net/RyusukeTakeda/clovaweb-108731707
スライドに沿って実装していくと簡単にスキルが出来上がります。
ソースコードもこちらにすべてアップしてありますので、後は駅すぱあとWebサービスのアクセスキーさえ用意してしまえば十分です。
https://github.com/val00250/ClovaSkills_Hands-on
駅すぱあとWebサービスのアクセスキーは、こちらから申請いただくと無料で入手できます。
https://ekiworld.net/service/sier/webservice/free_provision.html
Heroku?AWS使いたいんだけど・・・
はい。業務などでAWSをガッツリ使っていたり、Alexa向けスキルをAWS環境で作っていて流用できないかとか、よく聞きます。
ClovaスキルをAWS上で実装する方法
基本はAPI Gateway + Lambdaで問題ありません。あとはDynamoDBなどと連携すればいろいろ出来ます。
まずは何したら良い?
スライドの11ページ以降がHerokuからAWSに変わります。
Lambda関数の作成
- Lambda関数を作成する
ランタイムは node.js 8.10 を指定しておきます。
ロールは CloudWatch への書き込み権限など、最低限のものでかまいません。 - ソースコードを書き換える
このindex.jsをそのままコピペしちゃえばOKです。
https://github.com/val00250/ClovaSkills_Hands-on/blob/master/AWS/index.js
API Gatewayを設定する
- APIの作成
- POSTでメソッドを追加
※リソースの階層は問いません - 呼び出すLambda関数に作成したスキルを指定
- メソッドリクエストのHTTPリクエストヘッダーにSignatureCEKを追加
-
統合リクエストのマッピングテンプレートに下記を追加
- リクエスト本文のパススルー
テンプレートが定義されていない場合 (推奨)
- Content-Type
application/json
- テンプレート
- リクエスト本文のパススルー
{ "body":$input.body, "headers":{ "SignatureCEK":"$input.params('SignatureCEK')" } }
CEK側でAPI Gatewayのエンドポイントを指定
APIのデプロイを行うと通常は下記のエンドポイントが割り当てられるので、CEKに設定します。https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/{$ステージ名}/{$リソース名}
設定の仕方はスライドの15ページ以降を見ながらやってみてください。
で、23ページまで進んだら下記を行います。
Lambdaのソースコードを修正
- Webサービスのアクセスキーを書き換え
下記のkeycodeにWebサービスのアクセスキーを設定します
var key = "keycode"; - extensionIdを書き換え
スキル登録時のExtension IDを設定します
var extensionId = "extensionId";
補足
API Gatewayにテンプレートを設定している理由はいくつかあります。- CEKからPOSTされる内容はbodyに全て入っている
- bodyとSignatureCEKを利用して検証しなければならない
- bodyはJSONなので、body以下に入れてしまって問題ない
- SignatureCEK以外のヘッダは不用なので、テンプレートにもSignatureCEKだけで良い
まとめ
うまくやればAlexaとClovaで同じスキルが開発できますし、データも共有できますので、マルチプラットフォーム、クロスプラットフォームのスキルが出来上がります。また、Clovaスキルを作る際にAlexaへの展開も考えている場合はAWSで構築するのもオススメですよ。
コメント
コメントを投稿