Dialogflowを使ってGoogleHomeアプリを作ってみた

##概要
寂しい夜はGoogleHomeともっと会話したい？と思って勉強した内容の備忘録です。
ももクロちゃんの名前を言うと担当カラーを教えてくれるだけのアプリを作成しました。

##参考にしたサイト

- [Dialogflow入門](https://qiita.com/kenz_firespeed/items/0979ceb05e4e3299f313)
- [GoogleHomeアプリを開発しよう！Dialogflowチュートリアル](http://tech-blog.rakus.co.jp/entry/2017/11/28/203103)
- [【書籍】おもしろまじめなAIスピーカーアプリをつくろう](https://www.amazon.co.jp/%E3%81%8A%E3%82%82%E3%81%97%E3%82%8D%E3%81%BE%E3%81%98%E3%82%81%E3%81%AAAI%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8D%E3%81%86-Google-%E3%82%A2%E3%82%B7%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%88-Amazon-%E9%9F%B3%E5%A3%B0%E3%82%A2%E3%82%B7%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%88%E9%96%8B%E7%99%BA/dp/4798052736/ref=sr_1_fkmr1_1?ie=UTF8&qid=1524120167&sr=8-1-fkmr1&keywords=AI%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86)


##前提条件

- [Dialogflow](https://dialogflow.com/)が使用できる（要Googleアカウント）
- インターネットに接続されたPythonが動作するWebサーバが使用できる

##Dialogflowでテストアプリの作成

- GoogleアカウントでDialogflowにログインし「CREATE AGENT」をクリック
- 「Agent name」に「MyApp（任意）」を入力、「DEFAULT LANGUAGE」は「Japanese-ja（任意）」を選択し、「CREATE」をクリック

###ENTITYの作成

- 左カラムの「Entities」をクリックし、中央カラムの「CREATE ENTITY」をクリック
- モノノフ仕様で、「Entity name」は「mcz」で以下のようにエントリーしました（このあたりはご自由に）

![a.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/e8fd4714-0a62-5a5e-a7af-baae0e2ea7ec.jpeg)

- 「SAVE」をクリック

###INTENTの作成その１

- 左カラムの「intents」をクリックし、中央カラムの「Default Welcam Intentt」をクリック
- 「Training phrases」に「百田夏菜子は何色担当？」と入力しEnter
- 「百田夏菜子」が黄色く網掛けされるはず

![b.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/6aa3fdb6-f31f-12d0-9771-36f9c52fe1ff.jpeg)

- 「Action and parameters」に値が入力されているので「REQUIRED」をチェック

![c.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/4836ae27-b923-0a83-1049-953ca0b60c6e.jpeg)

- 「Responses」は使用しないので「Text responses」はすべて削除

![d.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/462716b7-a48b-f051-45d7-bd23860a76ce.jpeg)

- 「SAVE」をクリック

###Fulfillmentの設定

- 左カラムの「Fulfillment」をクリックし、中央カラムの「Webhook」を「ENABLED」に設定
- 「URL」にこれから作成するアプリのURLを記載する

![e.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/f4e6dbaf-09c8-4173-84b8-d2bd77694efb.jpeg)

- 「SAVE」をクリック

###INTENTの作成その２

- 左カラムの「intents」をクリックし、中央カラムの「Default Welcam Intentt」をクリック
- 「Fulfillment」の「Enable webhook call for this intent」を有効に設定

![f.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/c524037f-6e5d-f2fa-153d-cd05a17a3d5d.jpeg)

- 「SAVE」をクリック

##スクリプトの作成および配置

Fulfillmentの設定で指定した場所にスクリプトを配置します。

```Python:mcz.py
#!/usr/local/bin/python2.7
# -*- coding: utf-8 -*-

import json
import sys

input = json.load(sys.stdin)
print("Content-type: application/json\n\n")

message = input["result"]["parameters"]["mcz"]

if message == u"百田夏菜子":
    answer = "赤です"
elif message == u"玉井詩織":
    answer = "黄色です"
elif message == u"佐々木彩夏":
    answer = "ピンクぅ？"
elif message == u"高城れに":
    answer = "紫族です"
else:
    answer = "わかりません"

output = {
    "speech": answer 
}

json.dump(output, sys.stdout)
```

##動作確認その１
右カラムの「Try it now」に「あーりんは何色？」と入力したら、「DEFAULT RESPONSE」に「ピンクぅ？」と返ってきました。

![g.JPG](https://qiita-image-store.s3.amazonaws.com/0/247920/0cc6bcf7-307a-651b-2385-7d2051d572fc.jpeg)

##動作確認その２

左カラムの「Integrations」をクリックし、中央カラムの「Google Assistant」をクリック。次の「Google Assistant」画面は「TEST」をクリックで、GoogleHomeと会話を開始することが可能です。

私「OK,Goolge　テスト用アプリにつないで」
グーグルホーム「はい　テスト用アプリのテストバージョンです」
私「玉井詩織」
グーグルホーム「黄色です」
私「れにちゃん」
グーグルホーム「紫族です」
私「とめて」

ってな感じで会話というか、反応があれば成功です。

##最後に
解説なくてすみません。
多分間違いも多いと思います。