Dialogflow辞書

（気力があるだけ頑張ります）

Dialogflowの機能の覚書。辞書のようなものです。
Dialogflowを触りながら、この機能なんだ？？と思ったら、探してみてください。
英語が得意な人は、是非[公式の解説ページ](https://dialogflow.com/docs/getting-started/basics)へ……

# Dialogflow とは？
コード不要で、簡単にチャットボットを作るためのサービスです。
2016年9月にDialogflowのチームをGoogleが買収しました。
日本語に対応しています。
※名称が api.ai→Dialogflowになっております。

</br>
</br>
</br>
</br>
</br>


# 目次

1. エージェント(Agent)
     - 一般(General)
        - Project ID
        - API KEYS
        - Delete Agent
     - 言語(Languages)
     - 機械学習(ML Serrings)
     - エクスポート・インポート(Export and Import)
     - 共有(Share)
2. インテント(Intents)
     - User says
     - イベント(Event)
     - アクション(Action)
        - 必須項目(REQUIRED)
        - パラメータ(PARAMETER NAME)
        - 値(VALUE)
        - リスト(IS LIST)
     - レスポンス(Response)
3. エンティティ(Entities)
4. トレーニング(Training)
5. インテグレーション(Integrations)
     - Web Demo
     - Slack
     - LINE
6. アナリティクス(Analytics)
7. フルフィルメント(Fulfillment)
     - Webhook
     - Inline Editor

<img width="247" alt="スクリーンショット 2017-11-17 13.18.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/4182a127-e850-3f04-31b7-6838d37fe8f5.png">

</br>
</br>
</br>
</br>
</br>


#1.エージェント(Agent)
エージェントとは
チャットボットのことです。ここではcotysanというエージェント。
複数エージェント(ボット)を持つことができます。

###○ 一般(General)
メニューの<img width="37" alt="スクリーンショット 2017-11-17 13.19.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/de4fe620-f289-097e-2a38-4101af1e4373.png">歯車マークをクリックすると、一般設定ができます。
エージェントの画像も変えることができますが、画像拡張子はpngのみです。
<img width="660" alt="スクリーンショット 2017-11-17 13.21.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/5c01535d-17bb-3c26-4ae0-a0840c8ebd9b.png">

・Project ID
このボットのIDです。
外部サービス「Google Cloud Platform」でなんやかんやするときに使います。

・API KEYS
他サービスとなんやかんやするときに使います。

・Delete Agent
エージェントを削除するときはここから！



###○ 言語(Languages)
ボットで使用する言語を追加・選択することができます。
<img width="636" alt="スクリーンショット 2017-11-17 13.39.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/74b84a80-7056-745b-5511-9ec8dd7ff0fb.png">


###○ 機械学習(ML Serrings)
機械学習のモードを変更したり(ルールベースor機械学習)、バックプロップの精度か何かを調整できそうです。よくわかっていません。そのままにしておきましょう。
<img width="644" alt="スクリーンショット 2017-11-17 13.41.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/605cf663-0d98-0ada-71ee-48c531751fe2.png">


###○ エクスポート・インポート(Export and Import)
・EXPORT：JSON形式で書き出しができます。
・RESTORE：現在のものを削除して上書きします。
・IMPORT:現在のものを削除せず、新しいインテントとエンティティをアップロードします。同じ名前のエンティティは上書きされます。
<img width="653" alt="スクリーンショット 2017-11-17 13.43.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/cff80c70-84d6-acce-80bd-d037e19bdb56.png">


###○ 共有(Share)
他人と共有できます。
共有方法はgmailを追加するだけで、
・REVIEWER：見るだけ
・DEVELOPER：編集OK
の権限も与えることができます。
追加してもタイムラグがあります。気長に待ちましょう。また、招待メールなどは特に送られません、待つのみ　です。

</br>
</br>
</br>
</br>
</br>

#2. インテント(Intents)

そもそもインテントとエンティティがわからない人は
[チャットボットをAIでもっと素敵にする！自然言語処理の仕組み](https://qiita.com/okajax/items/0534c92bb9b7f9bc1413)がハイパーわかりやすいです。
エンティティから理解した方がいいです、絶対。

Intent nameは日本語でも大丈夫ですが、
Entitiesはアルファベットのみです。

基本はUsersays(人)→Response(ボット)で会話を成り立たせます。

###○ User says
人間が喋る(打ち込む)言葉を入れ込みます。
<img width="749" alt="スクリーンショット 2017-11-17 13.57.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/7584a3b5-bbc7-73d7-3998-31815c97c2eb.png">
「ごはんたべたい」
という意味の言葉、会話をじゃんじゃん入れ込みます。
たくさんあるほど良い精度になります。

参考：[api.aiのIntentsの概要](https://qiita.com/gyarasu/items/ec7e130eada521558295)


###○ イベント(Event)
なんかイベントがおこせるらしい。勉強中。


###○ アクション(Acrion)

どのデータをFullfillmentに送るか、定義できるらしい？
参考：[Google DialogFlow](http://maruyama097.blogspot.jp/2017/10/google-dialogflow.html)
勉強中。
細かい設定ができるっぽいです。
</br>


#####●　必須項目(REQUIRED)
会話の中で必須項目があれば、チェックします。
チェックをするとPROMPTSという入力項目が出現します。
<img width="715" alt="スクリーンショット 2017-11-17 14.26.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/63f26925-5f85-e4b3-e75b-5b3cbd1a920c.png">
会話の中に＠gohanというパラメータがなかったら、『なにたべてるの？』とボットが聞いてくれる仕組みです。
>例）
>「おいしー！」
>『なに食べてるの？』⇦PROMPTSの内容
>「ごはんだよ、美味しいなあ」
>『ごはん！ごはん！ごはん！ごはん！』⇦レスポンスの内容

</br>
</br>

#####●　パラメータ(PARAMETER NAME)
言葉で説明するのは難しすぎます。説明を諦めます。
パラメータと値はセット、くらい覚えていただけると…嬉しい…

</br>
</br>

#####● 値(VALUE)
これも説明が難しい…
パラメータとセットです…

</br>
</br>

#####● 値(IS LIST)
並列の処理です。
User saysの一文に、同じgohanというパラメータが複数入った場合、それらをリスト化するのがこのチェックマークです。
たとえば、User saysにこんな文が……
<img width="716" alt="スクリーンショット 2017-11-17 14.40.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/e75fc21e-ae01-2e82-dae6-c72e1e682772.png">
レスポンスはこれ。
<img width="719" alt="スクリーンショット 2017-11-17 14.58.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/96409612-e244-c3a8-3337-d8281b67e558.png">

↓
リスト化されていないと？
><img width="333" alt="スクリーンショット 2017-11-17 14.49.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/94ebe867-c970-700f-ef21-318a80cb5226.png">

$gohan1は入りません。

↓
リスト化してみた！
<img width="712" alt="スクリーンショット 2017-11-17 14.49.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/75c17bec-cd5f-3f80-8070-eea14a0f59cf.png">
><img width="345" alt="スクリーンショット 2017-11-17 14.49.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/24054be6-b6bc-a208-759a-79c5c8025ea5.png">

うるさいけれど、「ごはん」も「おやつ」も読み取ってくれました。

</br>
</br>
###○ レスポンス(Response)
ボットによる返事です。
<img width="737" alt="スクリーンショット 2017-11-17 15.11.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/7d9081cb-6ce4-aa4e-f66e-550d4fe4d85c.png">
Text responseの中からランダムで一行返します。
また、値(VALUE)を入れると、User saysに適応した返信ができます。

><img width="325" alt="スクリーンショット 2017-11-17 15.13.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/192887/1b972875-479e-baf8-1115-f1721f2969f4.png">