Alexa Skills 調査

# はじめに
Alexa Skillsの初期調査をしましたので、その内容をまとめました。
事前にUSのAmazonのアカウントの作成お願いします。

# Step1: 音声インターフェースの設計
![image.png](https://qiita-image-store.s3.amazonaws.com/0/85182/ce0589ac-203f-d6bc-ac39-93930f4d398d.png)

## 音声インターフェースの基本構成
音声インターフェースの設計でCustom Skillsを起動する場合は、"launch","invocation name", "connection word"の設定が重要になります。Alexaには、現状以下のパターンが設定されています。

* Ask "invocation name" "connecting word" "some action>"
    * 例：Ask Daily Horoscopes to give me the horoscope for Taurus.
    * "connectiんg word"はto, about, for, if, whetherが選択可能
* Ask "invocation name" "some action"
* Ask "invocation name" "question beginning with a supported question word such as ‘what’, ‘how’, etc."
    * 例：Ask recipes how do I make an omelet?
* Tell "invocation name" "connecting word" "some action"
    * 例：Tell scorekeeper to give ten points to Stephen
    * "connecting word"はto, thatが選択可能
* Tell "invocation name" "some action"
    * 例：Tell Daily Horoscopes I want my Taurus horoscope today
* Search "invocation name" for "some action"
    * 例：Search Daily Horoscopes for Taurus
* Open "invocation name" for "some action"
    * 例：Open Daily Horoscopes for Taurus
* Use "invocation name" "connecting word" "some action"
    * 例：Use Daily Horoscopes and get the horoscope for Taurus
    * "connecting word"はand, toが選択可能

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/supported-phrases-to-begin-a-conversation

## Invocation Nameの選択
Invocation Nameはスキルを起動させるための名前になりますので、公開後は変更することができません。Invocation Nameは他のスキルで使われていないものである必要がありますが、加えて以下に従う必要があります。

* 知的財産を侵害してはいけない
* 特定の人や地名を利用しているものはいけない
* AlexaのLaunch Phrase（ask, tell, searchなど）を含んではいけない
* Alexaのwake word(Alexa, Amazon, Computer)を含んではいけない
* スキルの機能に関連した名前が望ましい
# Step2: 音声対話モデルの作成
## Skill Builder
https://developer.amazon.com/edw/home.html#/ にログインします。
Add a new skillでスキル追加
<img width="1144" alt="スクリーンショット 2017-06-25 17.28.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/85182/f84e4fe6-3732-0cb3-8413-5c5dd64a7c07.png">

Skill名とInvocation Nameを選択してSaveするとApplication IDが作成されます。
<img width="714" alt="スクリーンショット 2017-06-25 17.37.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/85182/1686a52b-a56c-20d3-3e9d-d10cc95cd0a8.png">

Nextを押した後にSkill Builderを起動します。
<img width="527" alt="スクリーンショット 2017-06-25 17.40.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/85182/e98a4683-9d0a-e415-d812-f74c0e896ecc.png">

下記のようにSkill Builderが起動されます。
<img width="884" alt="スクリーンショット 2017-06-25 17.42.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/85182/8eb26e3e-700d-03f0-e292-7a4caa85f2cf.png">

以下のようにIntentを追加します。Skill BuilderではいくつかIntentが用意されていますが、ここではCustomIntentを作成します。

<img width="737" alt="スクリーンショット 2017-07-08 14.14.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/85182/ef6b4874-74ae-b00d-177c-7b7bfdff3a4b.png">

Create Intentを押すと以下にように対話サンプルを入力する画面が出ます。ここでの入力は、学習データでAlexaはここに記述されたサンプルから会話を学習します。

<img width="806" alt="スクリーンショット 2017-07-08 14.19.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/85182/f6f4bebf-583a-08fb-9726-1d133db63530.png">

Build Modelのボタンを押すと入力された学習データを元に会話モデルが作成されます。より柔軟な会話を作成したい場合は、多数の会話パターンを入力した方が良さそうです。

## Step3: AWS Lambda Functionの作成
ここまで書いて時間切れになったので続きはまたアップデートします。

# Links
https://developer.amazon.com/ja/alexa-skills-kit#learn