薬剤師が教えるGoogle Homeのデモ用botのつくりかた

# 世界観を伝えるには動くものをつくるのが一番
[薬局お茶の水ファーマシー](https://xn--t8jvd551n2lnn90a6cd.jp/)で薬局薬剤師をしながら、薬局向けサービスをつくっている薬剤師です（[株式会社ファーマクラウド](https://www.pharmacloud.co.jp/): **エンジニア募集中**）。pythonとJSがちょっとだけ書けます。薬局でこんなのがあればいいなというものがあったら、本職のエンジニアにお願いする前に簡単に動くものをつくって見るように心がけています。
それはさておき、今年に入ってLINEでbotをつくったりWAVEを買ったりしてたところに、Google Homeが突然発売になりました。ボイスコマンドでbotをつくってみたかったので、いろいろ調べてつくってみました（デモ用です）。
結論、Google Homeでも動作確認できました。動画がないので、興味がある方は[薬局までお越し下さい](http://薬局お茶の水.jp/%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9/)。**あと、GoogleHomeを使って外部のAPIを叩く方法をご存じの方いたら教えてください（但しIFTTT以外で）！**

# 用意するもの
- googleアカウント
- スマホ
- Google Home
- 無線LAN

**以下の作業はGoogle Homeでセットアップしたときと同じアカウントで実施して下さい。**

# Google HomeをセットアップしたらActions On Googleにアクセス
[Actions On Google](https://developers.google.com/actions/)の右上にある「Actions Console」にアクセス。途中のユーザ認証とかはいいカンジにやっていって下さい。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/f8dd7217-3d38-776d-2a56-49d0924131e4.png)

# プロジェクトをつくる
project nameとcountryをさくっと選んでCREATE PROJECT
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/56905be5-f6dd-72c3-6360-dcba40fd7fa9.png)


以下の画面に遷移するので、API.AIのBUILDを選択。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/462bc20f-91f9-f7ed-ca5b-d1629b49eaf3.png)

CREATE ACTIONS ON API.AIをクリック。別画面でAPI.AIが開きます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/7ab95ae2-7607-699f-eec3-a7a02649b529.png)


# API.AIでサクサクつくっていく
まず概要とか言語、時間帯を選択してSAVE。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/c28bcc6c-b2a3-6284-82d5-272d870b11b1.png)

## Entitiesをつくる
システムがEntityを持っていない場合はサイドバーのEntitiesの＋をクリックして、独自のEntityを定義する。この場合は医薬品名にあたるEntityが存在しないため軽く作っておいた。剤形とかも作っておくといいかも。SAVEの隣の︙から、JSONとかCSVのコピペもできる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/e3c35982-6be3-cbf8-9d75-beb65d549316.png)

## Intentsをつくる
サイドバーのIntentsの＋をクリックして会話を作る
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/6bddc841-b8b1-18b5-5669-ea036ca11d21.png)

### Intent name
会話の意図毎につくる。まず処方量の確認をつくりたかったのでcheck amountとした。

### User says
コチラからの問い合わせ例をがんがん入力していく。作成毎にEntity部分をドラッグして作成したEntityを選択する。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/b0836169-4ed8-546a-2ba9-d172bc9dcd46.png)

### Eventsは無視
でいいとおもうたぶん。

### Action
表を埋めていく。

- REQUIRED: チェックを入れる（会話次第）
- PROMPTS: REQUIREDにチェックを入れると、Define promptsがクリックできる。
- （IS LIST: これは何なのかわからないので知ってる人いたら教えてください。）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/bc85930f-221d-5658-cf69-34bbe6a21524.png)



#### Define prompts
botからの投げかけ（PROMPTS; 会話のきっかけ）を入力して、Close。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/d7d2514c-a98f-2504-5c2c-5c6386d134f4.png)
PROMPTSに応じて、User saysを追加、調整するといいカンジになると思います。

### Responses
問いかけに対して回答、そうすると返事が返ってくる。この返事の部分がResponses。$hogehogeとして、User saysで得たEntityを利用する。
ちなみに、起動 > Prompt > User say > Response が一連のFlowであり、設定の順とは異なるので混乱しやすい気がする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/b16aad0f-7cd3-9757-cf94-815ea54b26fa.png)

### Google Assistant
End conversationにチェック（しておかないとResponseのあとにPromptが起動して会話が終わらない）して、SAVEで完了。右側の「Try it now」で確認できる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/8b89a8c0-2b76-48ed-048c-fe6be094a778.png)

## IntegrationsでGoogle Assistantと接続
サイドバーのIntegrationsをクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/f9960ba3-b769-d49f-5f71-bf5c29779c85.png)

Google AssistantはデフォルトでSETTINGがONになっているけど、気にせずクリック。ポップアップのWelcome Intentに上で作成したIntentに設定。他は無視して「TEST」をクリック（TESTが必要は不明）。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/e62ed7b0-9bc0-8a51-7ffd-2f935ffbe4d5.png)

CHECKが走って、緑色のTest now activeが表示されるが無視して「UPDATE DRAFT」をクリック。ちなみに、この時点で「VIEW」を押してもSimulationは正常に動作しない。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/aeb5a215-b6cf-69ff-6834-2edb18144837.png)

Actions on Google draft successfully updatedと表示されたら「VISIT CONSOLE」をクリック。別ウィンドウでActions on GoogleのConsoleが開くので手順に従う。API.AIの設定はここでおしまい。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/a2436da4-f353-4266-7056-e3d482737653.png)

# Actions on Googleで各種設定
手順に沿って入力していく。あんまり迷うことはないと思う。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/e395920f-03f0-2f56-9cb9-d49d933beb87.png)

App imformationの「ADD」をクリックして必要事項を入力して、SAVEする。そうすると以下のような画面になる。これで完了。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/93f4a9a2-709c-9acb-2384-a6b5ad0543ef.png)

# シミュレーションしてみる
上記までいくとSimulationできる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/160946/c7b33035-169b-ea07-c3af-ffbc6026fb4c.png)

# 参考
[Actions on GoogleのGuide](https://developers.google.com/actions/extending-the-assistant)
[Google Assiatant対応AI BotをActions on Google作る](https://www.eisbahn.jp/yoichiro/2016/12/actions_on_google.html)