Alexaを使ってNAIPを作りたい！



9-10日辺りに招待申請を出しましたがまだレス無いですね。
TL見る限り、来たって人居ないのでもしかしたらまじで数週間後になるかもしれません
（2017-11-13時点）

Alexaをいじるにあたりテンション上がって色々調べたことメモったので載せときます。
（ほとんどリンク集みたいなものだけど

スキルの開発についてはこちらのまとめが参考になるかと思われます
6. Amazon Alexa のスキルを日本語化する - Qiita https://qiita.com/tochi/items/682adf708bb7fd0f1ca9

## 疑問点
- 画像・動画などの出力先の連携について
	- 特定のPCをタゲとしてできるのか？タブレットというかiPadとかに出来ないのか？
	- 本国だとモニタ付きのデバイスが出てるらしい
	- 料理のレシピ確認とかどうすんの？
	- どうやらAlexaアプリ(モバイル)に画像などが出力される模様。動画も同じか？
- Alexaの起動スペルは変更できないのか？
	- 出来るという話を聞いたが、出来ないというのもあった


## Alexa概要
- 音声ベースのインタフェース
- 利用するデバイスがDot,Echo,Echo+とか
- 認証とかどこでやってるんだろうね
	- 入力された音声をアップしてAlexaで解析、認識して各スキルへIntent

- AVSとASK
	- 個人やサードが開発拡張できるやつ

### Alexa Voice ServiceとAlexa Skill
っぽい
前者は独自デバイスによる連携
後者が独自機能の追加
ASKにはセルフサービスAPI、ツール、ドキュメント、コードサンプルなどが提供されていて、翻訳も早いので一通り試せるとのこと

### Alexa Skill

分類としては以下の通り

カスタムスキル : 汎用のスキル
スマートホームスキル : 家電製品などを制御するスキル
フラッシュブリーフィングスキル : ニュースなどを読み上げるスキル

実際の開発Consoleでは以下の4種類が存在
カスタム対話モデル
スマートホームスキルAPI
フラッシュブリーフィングスキルAPI
ビデオスキルAPI
が、次の解説ページには3つしか存在しない。ビデオがないっぽい。

#### スキルの種類
https://developer.amazon.com/ja/docs/ask-overviews/understanding-the-different-types-of-skills.html

##### カスタムスキル
https://developer.amazon.com/ja/docs/custom-skills/understanding-custom-skills.html

- リクエストを発行する際のIntentトリガ的なものを定義する
- これは音声インタフェースを用いてリクエスト毎のトリガワードを設定出来る
	- まじかテンション上がるな
	- ただしトリガワードとして識別し易いこと、競合しないことなどからちゃんとデザインする必要あり
		- https://developer.amazon.com/ja/designing-for-voice/
	- 〜を起動して とか 〜を実行して とかがAlexaの予約なのでムリっぽい
	- 人名も不可
            - リップル召喚できないorz


##### スマートホームスキル
- スマートホーム端末を制御するスキル
- スマートホームAPIを利用
	- リクエストのトリガワードを定義することが出来ないが、その分簡略化されている

```
開発者は、次のことを定義します。

特定のディレクティブに対するスキルの応答。たとえば、スキルが「照明をつける」ディレクティブを受け取ったときに照明を点灯するコードを書きます。このコードのことをスキルアダプターといいます。
```

##### フラッシュブリーフィングスキル
- RSSリーダ
	- 設定したやつを音読してくれる
	- キャプション？とか付いてれば画像とかも
	- 動画・音声の再生も

#### ユーザーによるスキルとの対話
カスタムスキルやスマートホームスキルAPIなどAlexaと対話するときのモデルについて。

トリガワードじゃなくてウェイクワードだって。Alexaの起動限定？スキルとは別？
（いまいち固有名詞が分からない

ユーザの音声コール->Alexaが”対話モデル”を使用して解釈->スキルが処理できるリクエストに変換->スキルに送信
カスタムスキルを作成する場合は、この対話モデルを自分で定義する必要あり
どの程度かは不明
スマートホームAPIを用いる場合は標準の対話モデルが使用されるらしい。

#### 開発関係
##### シミュレータ
https://developer.amazon.com/ja/docs/custom-skills/test-a-custom-skill.html#service-simulator

- 音声シミュレータ
	- 読み上げテスト
- サービスシミュレータ
	- 音声入力に対して解析結果のJSONと、スキルからのレスポンスJSON
	- Alexaの読み上げも



##### スマートホーム
あんまり興味ないのでスルー

### カスタムスキルの開発

https://developer.amazon.com/ja/docs/custom-skills/understanding-custom-skills.html

カスタムスキルが実行されるまでの一連のフローは、公式に掲載されている下の図が分かりやすい。
これを見る限りでは音声については記載なし。
画像がアプリで表示されるということは、動画についてもこちらに出力される模様。

![ASKArchitecture._TTH_.png](https://qiita-image-store.s3.amazonaws.com/0/44384/33573d6e-dc72-6872-c15a-6c907a910754.png "ASKArchitecture._TTH_.png")

#### カスタムスキルの要件
- スキルの動くWebサービス、エンドポイント
- シミュレータがあるのでEcho自体は無くてもテストは可能
	- GPS系を使うのはむり
- Lambda関数のオーサリングには、Node.js、Java、Python、またはC#
- 作成するスキルで利用する任意の画像、オーディオファイル、ビデオファイルをホストする、パブリックにアクセス可能なウェブサイト
	- 音声レスポンス返すならどっかに上げる必要ある


#### 構築手順
https://developer.amazon.com/ja/docs/custom-skills/steps-to-build-a-custom-skill.html

ステップ1: 音声ユーザーインターフェースの設計
ステップ2: 開発者ポータルにおけるスキルのセットアップ
ステップ3: 音声設計を使用した対話モデルの構築
ステップ4: スキルのコードの作成とテスト
ステップ5: スキルのベータ版テスト（オプション）
ステップ6: スキルの認証申請
スキル公開後の流れ


#### トリガワードのあれこれ
https://developer.amazon.com/ja/docs/custom-skills/understanding-how-users-invoke-custom-skills.html

カスタムスキルとの対話を開始する方法は、次の2通りがあります。

スキルを呼び出すと同時に特定の処理（インテント）をリクエストする。
特定の処理（インテント）をリクエストせず、スキルの呼び出しのみをする。

スキルのコールとリクエストの実行を同時に行なう場合、以下のようなフレーズをサポートしている
この辺りパターンが多岐にわたってややこしいので注意

公式サイトの説明より
![スクリーンショット 2017-11-10 12.10.10.png](https://qiita-image-store.s3.amazonaws.com/0/44384/e9c3bab7-e907-3a9f-0f19-fde89983583d.png "スクリーンショット 2017-11-10 12.10.10.png")

以下略