DialogflowをPythonから使ってみた


注意事項

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

やりたいこと

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

なぜ本記事を書いたか

  • 日本語での情報が少ない
  • 公式ドキュメントがわかりにくい
  • 今後のために備忘録

手順

1.事前準備

必要なパッケージをpipでインストール

pip install dialogflow

2.基本となるプログラム

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. アシスタント名の右にある歯車アイコンから設定画面へ行きます

3. プロジェクトIDを探しコピー

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

DIALOGFLOW_PROJECT_ID = 'プロジェクトID'

のプロジェクトIDを置き換えてください

4.認証キーの取得

1. 先ほどのプロジェクトIDが書かれていた場所をクリック

2. GoogleCloudPlatformが開くのでナビゲーションメニューからAPIとサービス -> ライブラリ の順で選択

3. ライブラリでDialogflowを検索して選択

4. 有効になっているか確認する

5. ナビゲーションメニューからIAMと管理 -> サービスアカウント の順で選択

6. サービスアカウントを作成を選択

7. サービスアカウント名を記入

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

終わったら作成を選択

8. 役職を決める

役職を選択から Dialogflow -> Dialogflow API クライアント の順で選択し続行を選択

9. キー作成

1. キーの作成を選択

2. キーのタイプでjsonを選択し作成

3. ダウンロードしたjsonファイルを配置

private_key.jsonに名前を変更しPythonファイルと同じ階層に置く

5.実行

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

最後に

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

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