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


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

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

Dialogflow V2 APIについてざっくり知りたい方はこちらの記事を見てください。Dialogflow V2 API の紹介

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

Dialogflow API を使う準備

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

$ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
  • サービスアカウントをアクティベート
$ gcloud auth activate-service-account --key-file=service-account-key-file
  • GCPのDialogflowAPIからAgentを作成

※既に同一の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コンソールを確認

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

コマンドラインから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コンソールで削除を確認

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