Amazon EchoとIBM Watsonを連携させてみた - パート4 -

# **はじめに**
* [前回](https://qiita.com/TMR1000/items/ca154882e25dbf0bacea)に続き、AlexaとWatson（Conversation）の連携を解説する。


# **4. 対話をテストする(Alexa Skills Kit)**
* 再び、Amazon Developer Consoleに戻って来た。ASK(Alexa Skills Kit)のテストの画面からテストシュミレーターを開こう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/68ad4b3b-bbfd-eeda-0f11-21e2ec142995.png)

* このような画面が開く。ここでテキストを入力することもできるし、入力ダイアログ右のマイクボタンを押しながら音声で入力することも可能だ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/d4016d7e-f274-b835-d330-8d40d35547fd.png)

* まずは、今回作ったスキルを起動する。"Alexa、ワトソンを起動して"と呼びかけよう。"こんにちは。私はワトソンです"と返って来たら成功だ。ちなみに画面の右にある、JSON InputとJSON Outputは、AlexaからWatsonへ飛ばされるメッセージと、Watsonから返って来たメッセージが表示されている。ここを見るとどのようなメッセージがやり取りされるのかを判別することができるので、大和の返還をコーディングする際に役に立つ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/e2d6cb45-da57-6dac-6af2-641410e83162.png)

* 続いて、"ハローワールド"と呼びかけると、"ハローワールド"、"ハローハローワールド！"が返って来た。きちんと認識ができているようだ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/010a7813-3dde-5f13-a997-ffaa9f45a379.png)

* 最後にスキルを止めてみよう。"止めて"と呼びかけると、"ワトソンを終了します"と返って来た。これでスキルを終了したことになる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/34099a21-de7d-6fa1-113a-5a036466b138.png)

* ちなみに、この状態で、"ハローワールド"と呼びかけると、スキルは停止されているので、Watsonからの応答は返って来ずに、Alexaが"すみません、わかりません"と応答する。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/4df35d17-12dd-642d-b0c2-2885ed20919c.png)

* 以上でテストは終了だ。


# **5. Skillを登録する(Alexa Skills Kit)**
* 最後に、Amazon Echoからスキルを使えるように、登録をしよう。画面を進めて、以下の登録を行う。テストの手順に簡単な解説を書いたのち、国と地域を指定しよう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/1eb7f6ab-e30f-7860-5bad-c6375da6057d.png)

* 画面をスクロールして、以下の登録を行う。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/7ea5e121-41bd-be94-fb98-4bf4e8441d7b.png)

* 最後にAlexaアプリに表示されるアイコンを登録しよう。アイコンの登録がないと先に進めないようになっているので注意しよう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/cb840818-e0b7-13ca-3ff4-bb90f2948338.png)

* プライバシー、コンプライアンスでY／Nを指定する。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/333da497-0fee-b3a9-42c4-72ec98188deb.png)

* スキルのβテストを申請するとAmazon Echoの実機でテストをすることができる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/0f32ebd2-e54e-1106-7d8b-82fea261008d.png)

* テスターを招待してテストを開始ボタンを押すと、しばらくすると自分のアカウントに登録しているアドレス宛に"You're invited to beta test a new Alexa skill"というメールが届く。このメールに添付されている"Enable Alexa skill "スキル名""のリンクを開くと、Alexaアプリ(ショッピングのAmazonアカウントでログイン)が起動されるので、Amazon Echoでスキルを利用するステップに進むことができる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/224839/30b83eae-ef5f-8999-84d3-8188791efe66.png)

* 公開のステータスがDevelopmentである限り、ほかの人には公開されない。自分のデバイス(Alexaアプリのアカウントに登録されているデバイス)からのみアクセスできるので、実機で試してみてほしい。


# **まとめと番外**
* 以上が、Amazon EchoとIBM Watsonの連携で必要となった手順だ。ここまで出来上がった後は、Watson側で様々な対話のフローを設定してあげることで、Alexaを使って好きなような会話を楽しむことができる。
* 今後の参考のために、作業を通して感じたことを、少し補足をしておきたい。
* ここまでご覧いただいたらわかるように、ASKのIntentとWatsonのIntentは、ほぼ同じような意味合いで使うことが出来る機能である。つまり、ユーザーが投げかけるある言葉に対して、あらかじめ登録された事例からどのIntentに該当するかを識別し、応答のアクションに繋げる、ということが出来る。これは[Ishiiさん](https://qiita.com/e21084/items/38e2407e3b6fff0e40f3)が書かれているGoogle Homeのケースにおいても同様のようであり、対話用のAIにおいては汎用的な考え方と言えよう。
* ただ実装の仕方を見ると、AlexaとWatsonで違うところも見えてくる。ASKには応答を設定する部分は用意されておらず、AWS Lambdaないし外部サービスを呼び出して外側で応答のアクションを用意するようになっているが、これはAWSはAlexaをフォーカルにして呼び出すサービスはみんなで作ってもらうということを志向しているからではないかと思う。
* 一方Watson（Conversation）はユーザーのインプット(Intent)と応答のフローを一つのコンソールで設定できるようになっており、対話に特化したサービスとしてはGUIも使いやすく優秀だと思う。もちろんWatsonも音声認識はあるが、Weather APIなど面白いサービスがあったりヘルスケアなどに代表されるように業界専門的なAIが強い印象があるので、今回のようにうまく組みあわせてみるのは中々良い使い方ではないかと思った。
* とりあえずは、Conversationをもう少し深掘りして見たいと思う。
* 最後まで読んでくださって、ありがとうございました。


# **関連記事**
* [Amazon EchoとIBM Watsonを連携させてみた - パート1 -](https://qiita.com/TMR1000/items/637751727dc02daf93b9)
* [Amazon EchoとIBM Watsonを連携させてみた - パート2 -](https://qiita.com/TMR1000/items/79110dbef585dca45b2f)
* [Amazon EchoとIBM Watsonを連携させてみた - パート3 -](https://qiita.com/TMR1000/items/ca154882e25dbf0bacea)