DialogflowをPythonから使ってみた

# 注意事項
- 本記事は2019/11時点の情報です
- もしかすると抜けている部分があるかもしれません

# やりたいこと
Python3.7からDialogflowにアクセスし、渡した文字列の解析をさせたい。

# なぜ本記事を書いたか
- 日本語での情報が少ない
- 公式ドキュメントがわかりにくい
- 今後のために備忘録

# 手順
## 1.事前準備
必要なパッケージをpipでインストール

```python
pip install dialogflow
```
## 2.基本となるプログラム

```python
import os
import dialogflow
from google.api_core.exceptions import InvalidArgument

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = 'private_key.json'

DIALOGFLOW_PROJECT_ID = 'プロジェクトID'
DIALOGFLOW_LANGUAGE_CODE = 'ja'
SESSION_ID = 'me'

text_to_be_analyzed = "こんにちは"

session_client = dialogflow.SessionsClient()
session = session_client.session_path(DIALOGFLOW_PROJECT_ID, SESSION_ID)
text_input = dialogflow.types.TextInput(text=text_to_be_analyzed, language_code=DIALOGFLOW_LANGUAGE_CODE)
query_input = dialogflow.types.QueryInput(text=text_input)
try:
    response = session_client.detect_intent(session=session, query_input=query_input)
except InvalidArgument:
    raise

print("Query text:", response.query_result.query_text)
print("Detected intent:", response.query_result.intent.display_name)
print("Detected intent confidence:", response.query_result.intent_detection_confidence)
print("Fulfillment text:", response.query_result.fulfillment_text)
print(response.query_result)
```
## 3.プロジェクトID取得

### 1. Diaogflowのコンソールを開きます
### 2. アシスタント名の右にある歯車アイコンから設定画面へ行きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/01a4636e-243c-5bbd-cbac-3fe86c5b496d.png)

### 3. プロジェクトIDを探しコピー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/930a30b7-07ee-4337-2663-416db05c5737.png)

### 4. コピーしたIDに置き換え

```py
DIALOGFLOW_PROJECT_ID = 'プロジェクトID'
```
のプロジェクトIDを置き換えてください

## 4.認証キーの取得
### 1. 先ほどのプロジェクトIDが書かれていた場所をクリック
### 2. GoogleCloudPlatformが開くのでナビゲーションメニューからAPIとサービス -> ライブラリ の順で選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/34821080-8a29-edea-fd77-b5a49f6b411c.png)
### 3. ライブラリでDialogflowを検索して選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/e1ffc191-1c50-2419-6270-bfc437d86398.png)
### 4. 有効になっているか確認する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/4f61096c-c245-0b30-2450-373943f32eb3.png)
### 5. ナビゲーションメニューからIAMと管理 -> サービスアカウント の順で選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/dc0b871d-e5b4-d12a-4fbc-21d07eaaef6f.png)
### 6. サービスアカウントを作成を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/af37cc23-fb6f-2245-36f7-d9cfa2760a50.png)
### 7. サービスアカウント名を記入

- 他のアカウントと区別するだけなので好きな名前をサービスアカウント名へ入れる
- IDはこだわりがなければ特に変更しなくてよい
- 説明は省略可

終わったら作成を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/ca4baced-6645-813f-0852-db4d5add70ab.png)
### 8. 役職を決める
役職を選択から Dialogflow -> Dialogflow API クライアント の順で選択し続行を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/943235c0-3181-cb76-3e30-633a1924e193.png)
### 9. キー作成
#### 1. キーの作成を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/d0be83b4-f4b0-024e-1afa-ad047e2d1cff.png)
#### 2. キーのタイプでjsonを選択し作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250596/d48f5f15-2f88-ee94-8898-a17a97fb9379.png)

#### 3. ダウンロードしたjsonファイルを配置
private_key.jsonに名前を変更しPythonファイルと同じ階層に置く

## 5.実行
Pythonプログラムを実行しエラーが出なければ成功

# 最後に
GoogleのAPI全般で分かりにくいのが認証だと思います。公式ドキュメントも探しにくく大変なことが多いです。
少しでも本記事が役に立てれば幸いです。

**最後までご覧いただきありがとうございました。**