Google HomeにIDCFクラウドの料金をしゃべらせる。その１

以前書いた記事 [IDCFクラウドのビリングAPIをpythonで利用する方法](https://qiita.com/ken_hikita/items/574f04ad22acab31a23b)に手を加えて
Googlehomeに、”今月の料金は？”とか”2016年10月の請求額は？”と聞いたら、
その月の請求金額をしゃべらせるようにしたいと思います。

# 利用するもの
* Actions on google
* dialogflow
* flask
* ngrok(ローカル環境で試すため)

# プロジェクト作成
[actions on google](https://console.actions.google.com/u/0/)にアクセスし、新しいプロジェクトを作成します。

Add/import projectをクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/9e677cff-ccb9-d37d-016b-2568873c213b.png" width=70%>

Project Nameを入力し、Country/regionは「Japan」を選択し、【CREATE PROJECT】をクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/3a19aa46-7430-9183-144d-7b4faf36c79a.png" width=60%>

Dialogflow欄の【BUILD】をクリックします。
![002.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/d5c9cf2a-28e3-cf3a-4995-aa49f1f26001.png)

【CREATE ACTIONS ON DIALOGFLOW】をクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/37f738d1-b8c9-19a2-3658-ea867b0e8360.png" width=70%>

アクセスを許可します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/d8ed0c82-35b0-6da5-ec39-aef51b34fc89.png" width=50%>
【AUTHORIZE】をクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/ade2dbd0-8374-aa73-28df-6431996b70c3.png" width=50%>
アクセスを許可します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/9a06acf9-5295-8181-549b-0a853a30d55a.png" width=50%>
DEFAULT LANGUAGEを「Japanese — ja」に変更し、【SAVE】をクリックします。
![007.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/d9ca5624-beea-e810-a3ee-49c98de0d520.png)

【Intents】をクリックし、【Default Welcome Intent】をクリックします。
![008.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/189d0ead-9dfa-b499-5c1c-d0fd7c2b4b90.png)
少し下にスクロールし、「Response」のDefaultタブのText Responseの1番目に
”IDCFクラウド料金確認です。”と入力し、【SAVE】をクリックします。
![009.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/b404198a-c8db-0566-4f0b-bdee1898ac80.png)

【Entities】をクリックし、【CREATE ENTITY】をクリックします。
![010.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/9f2aca78-4b44-8d4f-34c2-b9722dcb891a.png)
Entity Nameに「command」と入力します。
Click here to edit entry行をクリックします。
![012.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/2ed1de18-b8f0-169d-cddd-59e7efc13b0c.png)

Enter Reference Valueに【料金】と入力します。
Enter Synonymに、下記のような値を入力します。

* 料金
* 支払い
* いくら
* 請求金額
* 請求
* 請求額
* 金額

例えば、今月の支払いはいくら？と今月の請求金額はいくら？　は同じ意味として捉える必要があるため
請求金額といわれた場合でも料金のことであると認識させるために設定します。
ここで記載した以外の言葉も料金と同じ意味とする場合には、Synonymに追記すればOKです。
 *今月の料金なんぼ？* はこの設定だとうまく認識されないかもしれません。
”なんぼ”も料金と同じ意味として捉え対場合には、Synonymに”なんぼ”を追加します。
![013.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/458fa3a5-4ded-cdde-1f57-edccaddb7019.png)

【SAVE】をクリックします。

【Intents】をクリックし、【CREATE INTENT】をクリックします。
![014.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/691e33c2-8003-c219-b5af-f60d5e29516b.png)

IntentNameに、適当な名前(今回はつたない英語でbillingsayとしました）をつけます。
![015.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/4a29337f-ba29-21cf-df1d-ad9bcd1469ce.png)
User saysに【今月の料金は？】と入力し、Enterを押します。
すると自動的に、ENTITYが解析されます。
![016.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/8eeacbbd-8c67-7f7a-a64d-34721e0c18cf.png)
User saysに、別な言葉も入力します。

* 2016年10月の請求金額は？
* 先月の料金は？
* 先月はなんぼ？

先ほど”なんぼ”を追加したため、自動的に@sys.date-periodと@commandと判定されます。
なんぼを追加していない場合には、下記のようになり、”なんぼ”が認識できていないことがわかります。
![017.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/f7d6b1b6-fec6-9df4-5c92-5c93488b6369.png)
認識ができなかったときには、判定させたい品詞をマウスで選択し、表示されたEntityを選択し認識させます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/e8fc7fe2-9750-78f2-d93d-2828ca91e7ae.png" width="50%">

これで、”先月”が日付、”なんぼ”は料金であると認識してくれます。

右ペインでテストしてみます。
Try it nowと書かれているテキストボックスへ、”今月の金額は？”と入力し、Enterキーを押します。
下記画像のように、command 料金 date-periodに今月(これを書いている月は11月)の日付が表示されていればきちんと認識してくれています。
<img src="https://qiita-image-store.s3.amazonaws.com/0/48100/519c59a5-bdbb-c86c-d325-9e954401773e.png" width="50%">

SHOW JSONをクリックすると、JSONが表示されるのでこの内容を利用してプログラム側で処理を書いていきます。
![022.PNG](https://qiita-image-store.s3.amazonaws.com/0/48100/ccb6777d-e3cd-72a9-e855-e374eaac15bc.png)



ちょっと長くなったの、次ページへわけます。