GCPコンソールに追加されたDialogflow API を試す

#GCPコンソールに追加されたDialogflow API を試す
Dialogflow V2 APIのリリースに伴いGCPのAPIコンソールにDialogflowが追加されたので、試してみたいと思います :smiley: 

Dialogflow V2 APIについてざっくり知りたい方はこちらの記事を見てください。[Dialogflow V2 API の紹介](https://qiita.com/flatfisher/items/7c6e054711ef87f99517)


<img width="500" alt="Screen Shot 0029-12-07 at 21.01.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/114922/c58801ad-a2b4-f011-97cf-52ae6433bb47.png">

GCPコンソールに追加されたDialogflow API


## Dialogflow API を使う準備
- GCPコンソールでプロジェクトを選択し課金を有効にする
- Dialogflow APIを有効にする
    - APIとサービスを選択
    - ライブラリを選択
    - Dialogflow APIを選択し有効にする
- サービスアカウントを作成し .jsonをダウンロードする
    - APIとサービスを選択
    - 認証情報を選択する
    - 認証情報を作成
    - 新しいサービスアカウントを作成
    - 作成が終わったら.jsonファイルをダウンロードする

<img width="505" alt="Screen Shot 0029-12-07 at 21.10.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/114922/fd93f5d2-a199-3203-cd23-3f57eff9f3c7.png">

- Cloud Tools を最新にする
    - https://cloud.google.com/sdk/docs/?hl=ja

- 変数を作成

```
$ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
```

- サービスアカウントをアクティベート
 
```
$ gcloud auth activate-service-account --key-file=service-account-key-file
```

- GCPのDialogflowAPIからAgentを作成

<img width="500" alt="Screen Shot 0029-12-07 at 21.19.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/114922/1c8622ab-f9af-388e-f34c-92a8c70d3915.png">

**※既に同一のGCPプロジェクトでDialogflowのエージェントを作成している場合は、新しく作成できません。**

ここまでできれば準備完了です。

## コマンドラインからIntentを作成
これまでDialogflowコンソールからIntentを作成していたと思いますが、コンソールからAPIを叩いて作成してみます。


### 作成リクエスト
```
$ curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" --data "{
  'displayName': 'Greeting',
  'priority': 500000,
  'mlEnabled': true,
  'webhookState': 'WEBHOOK_STATE_UNSPECIFIED',
  'trainingPhrases': [
    {
      'type': 'EXAMPLE',
      'parts': [
        {
          'text': 'Hello!'
        }
      ]
    }
  ],
  'action': 'greeting',
   'messages': [
      {
        'text': {
          'text': [
           'Hello!'
          ]
        }
      }
    ],
}" "https://dialogflow.googleapis.com/v2beta1/projects/project-name/agent/intents"
```

**URLのproject-nameの部分はGCPプロジェクトのIDにする**

### レスポンス
```
{
  "name": "",
  "displayName": "Greeting",
  "priority": 500000,
  "mlEnabled": true,
  "action": "greeting",
  "messages": [
    {
      "text": {
        "text": [
          "Hello!"
        ]
      }
    }
  ]
}
```

###Dialogflowコンソールを確認

<img width="500" alt="Screen Shot 0029-12-07 at 21.30.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/114922/39b05d98-5f5d-269f-bcf1-c51e8d000955.png">

ちゃんと作成されました！

## コマンドラインからIntentを削除
次はIntentを削除してみましょう！

### IntentのIDをメモする
削除したいIntentを選択しIDをメモします。IntentページのURLの ```editIntent/```以降の部分がIntentのIDです。

### 削除リクエスト

```
$ curl -X DELETE -H "Authorization: Bearer "$(gcloud auth print-access-token) \
               -H "Content-Type: application/json; charset=utf-8" \
               "https://dialogflow.googleapis.com/v2beta1/projects/project-name/agent/intents/intent-id"
```

**URLのproject-nameの部分はGCPプロジェクトのIDにする**
**URLのintent-idの部分はメモをしたIDにする**

###レスポンス
削除に成功すると空のレスポンスが返ってきます。

```
$ {}
```

###Dialogflowコンソールで削除を確認

<img width="500" alt="Screen Shot 0029-12-07 at 21.44.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/114922/bd74807d-87ea-fb0c-939a-6186a2cb83a7.png">

ちゃんと削除されました！