経緯
Severless Meetup Osaka #3にて、Alexa Skill Kitに関する発表があった。
想像していたより簡単に始められそうだったので、まずはサンプルを触りながらメモ。
対象サンプル
https://github.com/alexa/skill-sample-nodejs-fact
サンプルは幾つか用意されているが、
Factサンプルはステップごとに手順が記載されており、かつ、Skillの内容がシンプルなので分かりやすったため、選択。
Skill実装、公開に必要なもの
- Amazon開発者アカウント
- 登録無料、サンプルで実装する範囲では課金発生なし
- AWSアカウント
- サンプルで実装する範囲では無料利用枠で十分
- アプリアイコン用画像
Skill公開までの流れ
- AlexaのVoice User Interface(VUI)を作成
- Lambdaの関数を作成
- VUIをLambdaの関数と紐づけ
- 動作確認
- 公開のための設定
- Skillの審査(数日かかる)
VUI作成
VUIはAlexaで音声認識させるためのインタフェース
Skill Information
- Skill Type: 動作のタイプ
- 用途に応じて用意されているものから選択
- Custom Skill: 自由に作成
- Smart Home Skill: 家電操作用
- Entertainment Device Control in the Smart Home Skill: AV家電操作用
- Video Skill: 動画サービス操作用
- Flash Briefing Skill: ニュース配信用。ソースとして、RSSなどを利用
- Language: Skillが対応する言語
- 多言語への対応も可能
- Invocation Name: Skillを呼び出すためのキーワード。Skill TypeがCustom skillの場合のみ必要。制約に抵触しない、かつ、他Skillと重複を避けるよう設定する必要がある。
- ** 開発中は変更できるが、審査・公開されると変更できなくなるため、要注意。 **
- https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/choosing-the-invocation-name-for-an-alexa-skill
Interaction Model
- Intent: 1アクションに対応させる文意
- Utterance: Intentを判断する際の例文
Lambda関数作成
作成時に気を付けることは下記2点。
それ以外は通常のLambdaと同じ。
- リージョンは米国東部(バージニア北部)かEU(アイルランド)のどちらかにする事。
- 2017/08/26時点では、Alexaが提供されているリージョンが上記2つのみなので。
- トリガーとして「Alexa Skill Kit」を選択
作成したLambda関数のARNをメモっておく。
VUIとLambda関数を紐づけ
紐づけにLambda関数のARNが必要。
Account Linking
サンプルでは利用していないが、Skillの中で、他システムのユーザ情報を使いたい場合に使用。
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system
動作確認
Amazon開発者ポータルにて、Service Simulatorで動作確認可能
ローカルでテストしたり、テストコードを作りたい場合は、alexa-conversation + mochaが便利
公開のための設定
SkillをAmazonのプラットフォームで公開する際の情報を入れる。
審査用に、Skillのカテゴリや配信対象の国、Skillの説明など。
公開用に、呼び出し例、関連キーワード、アイコンに使う画像(必須)など。
所感
- ステップバイステップのサンプルがあるって最高。
- VUI作る部分はMS Cognitive ServiesのLUISと大体同じ感じ。ただ、位置づけは異なる。
- LUISは言語解析機能としてアプリに組み込むためのパーツ。
- Alexa Skill Kitは利用用途をAlexaでの音声認識・操作に絞ってある。代わりに、アプリ(Skill)を作るまでが簡単で、Skillを公開するためのプラットフォームも用意されている。
参考リンク
https://speakerdeck.com/hideokamoto/building-alexa-custom-skill-by-serverless-framework
https://developer.amazon.com/ja/alexa-skills-kit
https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
http://dev.classmethod.jp/cloud/introduction-of-alexa-skill-kit/