Alexa Skills Kit
の始め方
2018年1月定例会
「ボイスアシスタントアプリ開発の今」
@sparkgene
市川 純 (Jun Ichikawa)
Alexa関連の活動
https://jawsug-iot.connpass.com/
http://sparkgene.hatenablog.com/ Alexa Voice Serviceの記事執筆
Alexa関連の活動
Alexa Skills Kitの始め方
▸Amazon Alexaとは
▸Alexa Skills Kitの基本(カスタムスキル)
▸Skillの開発
▸Skillのテスト
▸Skillの公開
Amazon Alexaとは
Alexa Skills Kit(ASK)は
▸セルフサービスの一連のAPI
▸ツール
▸ドキュメント
▸コードサンプル
USで公開されているサードパーティー製Skill
国内で公開されているサードパーティー製Skill
商品の注文 車を呼ぶ 家電を操作
銀行の利用 ショップの情報 ニュースまなび
Alexa Skills の種類
▸カスタム対話モデル
▸スマートホームスキル
▸フラッシュブリーフィング
▸ビデオスキル(日本未対応)
国内で公開されているサードパーティー製Skill
カスタム対話モデル
スマートホームAPI
フラッシュブリーフィ
ングAPI
Alexa Skillの基本
(カスタム対話モデル)
発話がどう解釈されるのか
アレクサ
マイレシピ
で
牛肉
と
キャベツ
のレシピを教えて
= 起動フレーズ
= 呼び出し名
= つなぎの語
= スロット
= サンプル発話
= スロット
= サンプル発話
アレクサ、マイレシピで牛肉とキャベツのレシピを教えて
開始フレーズ
Alexaで定義されている物
▸を使って
▸を開いて
▸をスタート
▸を始める
▸を始めて
▸を開始
▸を再生
などなど
https://developer.amazon.com/ja/docs/custom-skills/understanding-how-users-invoke-custom-
skills.html
呼び出し名
▸呼び出し名 を言うことで、どのSkillを使うかが決まる
▸呼び出し名 は ウェイクワードや起動フレーズ、 つなぎ語
を含んではならない
▸他にも条件が色々。。
https://developer.amazon.com/ja/docs/custom-skills/choose-the-invocation-name-for-a-custom-
skill.html#invocation-name-requirements
Slotは変数みたいなもので、事前に期待している言葉を定義する
Slotには2種類あり
▸ビルトインタイプ
▸ AMAZON.DATE、AMAZON.NUMBER、AMAZON.Region、
AMAZON.FirstName、・・・・
▸カスタムタイプ
▹ 自分で定義する
▹ ex)
▹ slot “RECIPE_TYPE” = 和食、洋食、・・・・
スロット
https://developer.amazon.com/ja/docs/custom-skills/slot-type-reference.html
対話モデル
▸OsusumeIntent おすすめのレシピを教えて
▸SearchIntent {keyword} のおすすめ教えて
▸SearchMultiIntent {firstkeyword} と {secondkeyword} のレシピを教えて
サンプル発話
サンプル発話と呼ばれる発話のマッピングを定義します。
上記のような発話をすると、Alexaは一致するインテント名をSkillに対して
送ってきます。
発話の仕方は人それぞれなので、なるべく多くのパターンを網羅することで
認識率は上がる。
{
"intents": [
{
"intent": ”SearchIntent",
"slots": [
{"name": ”keyword", "type": ”RECIPE_TYPE" }
]
}
]
}
インテントスキーマ
サンプル発話に定義した発話の構造を定義します。
全体の流れ
[1] アレクサ、マイレシピでキャベツと
牛肉のレシピを教えて
マイレシピ
スキル
[2] SearchIntent を起動
スロットに
firstkeyword=キャベツ
secondkeyword=牛肉
[3] テキストのJSON[4] オーディオデータ
Skillの開発
カスタムスキルの場合、2つの方法でスキルを作れます
▸AWS Lambda Functionを使う
▸自分でホストする
Skillの開発
AWS Lambda Functionを使う場合
▸ サーバを立てる必要がない
▸ SSL証明書を用意する必要が無い
▸ Alexaからのリクエストであることを検証する必要が無い
▸ 呼び出しされた時だけ課金される
▸ Alexaから実行されるときTLSが利用されるのでセキュア
▸ 多くのデベロッパーは無料枠の範囲で済むはず
https://developer.amazon.com/ja/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html
自分でホストする場合
▸ ネット接続されている必要がある
▸ Alexa Skills KitのI/Fに準拠している必要がある
▸ SSL/TSLに対応している必要がある
▸ Alexaからのリクエストであることを検証する必要がある
https://developer.amazon.com/ja/docs/custom-skills/host-a-custom-skill-as-a-web-service.html
Skillの開発を楽にしてくれるライブラリ
▸ Alexa Skills Kit SDK for Node.js
▹ https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
▸ Alexa Skills Kit for Python
▹ https://github.com/johnwheeler/flask-ask
Skillのサンプル色々
▸ https://github.com/alexa/alexa-cookbook
▸ AWS Lambda Functionのブループリント
Skillのテスト
Skillのテスト方法
▸ 開発者コンソールでテスト
▸ シミュレータでテスト(echosim)
▸ 実機でテスト
▸ CLIでテスト(まだ日本語対応していないけど)
▹ https://github.com/sparkgene/alexa-cli/wiki
▸ Beta Tester
Skillの公開
Skillの公開申請する前に
▸ 審査チームも行う内容がチェックリストとしてあります
▹ https://developer.amazon.com/ja/docs/custom-
skills/certification-requirements-for-custom-skills.html
▹ 事前にチェックしておくことでリジェクトリスクが下がります
Skillの公開申請したあと
▸ 数日すると審査結果が来ます。
▸ リジェクトされた場合は、駄目な理由が書かれているので
修正して再申請する
▸ 一回で通ることは少ないので、これを数回繰り返す
Skillが公開されたら
▸ 審査が終ると勝手に公開されます
▸ ステータスがLiveのが追加されます(いじれません)
▹ 更新する時は、Development版を編集して、再度申請します
Skillが公開されたら
▸ メトリックスが見れるようになります
普通のアプリと同じで、利用状況をモニタリングし、
日々改善しましょう。
https://alexaday2018.jaws-ug.jp/
https://jawsdays2018.jaws-ug.jp/
Facebook グループ 「Amazon Alexa/Echo JP」
ありがとうございました

Alexa Skills Kitの始め方