Alexa

Alexa Skill Kitを触ってみる

More than 1 year has passed since last update.

経緯

Severless Meetup Osaka #3にて、Alexa Skill Kitに関する発表があった。
想像していたより簡単に始められそうだったので、まずはサンプルを触りながらメモ。

対象サンプル

https://github.com/alexa/skill-sample-nodejs-fact
サンプルは幾つか用意されているが、
Factサンプルはステップごとに手順が記載されており、かつ、Skillの内容がシンプルなので分かりやすったため、選択。

Skill実装、公開に必要なもの

  • Amazon開発者アカウント
    • 登録無料、サンプルで実装する範囲では課金発生なし
  • AWSアカウント
    • サンプルで実装する範囲では無料利用枠で十分
  • アプリアイコン用画像

Skill公開までの流れ

  1. AlexaのVoice User Interface(VUI)を作成
  2. Lambdaの関数を作成
  3. VUIをLambdaの関数と紐づけ
  4. 動作確認
  5. 公開のための設定
  6. 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と重複を避けるよう設定する必要がある。

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/