➣ Reading Time: 9 minutes

前言

line chatbot 寫久了之後,如果只是單純「固定的」輸入輸出,
也就是使用者只能輸入特定的「關鍵字」來觸發功能,
或許就是少了那麼一點「自然對話的感覺」,
本篇提供 Dialogflow 的基本 API 使用範本,

至於「串接 chatbot」的部份請參考我的另外一篇文章,
這邊只專注在提供怎麼用 python 連接 Dialogflow API 的服務。

前置步驟 – 取得 Dialogflow API 金鑰

Step 1: 先去 Dialogflow 建立一個 agent

(因為我已經建過幾個了,可能畫面有點不太一樣)

* 按下「Create new agent」

Step 2: 輸入 Dialogflow agent 的相關資訊

在下面的內容分別輸入,

  • 名稱
  • DEFAULT LANGUAGE
    選繁體中文,「Chinese (Traditional) — zh-tw
  • DEFAULT TIME ZONE
    選我們的時區,「(GMT+8:00) Asia/Hong_Kong
  • GOOGLE PROJECT
    預設是「Create a new Google project」,除非你已經有相關的專案。

  • 最後按下「CREATE」就可以建立新的 agent 囉!

(這邊因為 demo 似乎是禁用字,後來我改成了 testwongwong)

Step 3: 從建立好的 dialogflow 連結進入 Google Cloud Platform

點擊左上角的齒輪進入設定,並點擊 Project ID 的連結進入 Google Cloud Platform

註:如果看到「您的權限不足,無法瀏覽這個頁面
請先「將其他 google 帳戶登出」,或直接使用「無痕模式」執行動作。

Step 4: 進入設定「服務帳戶」

  • 點選左側,「IAM 與管理」-> 「服務帳戶」

Step 5: 建立「服務帳戶」

  • 建立「服務帳戶」

Step 6: 設定「服務帳戶」- 1

  • 設定「服務帳戶名稱」:我這邊輸入與剛剛取的專案名稱一樣 (不一定要一樣)
  • 設定「服務帳戶 ID」:(會依據上面自動產生)

Step 7: 設定「服務帳戶」- 2

  • 設定「Dialogflow」並選擇「Dialogflow API 用戶端」

Step 8: 設定「服務帳戶」- 3

  • 這邊基本上不用設定,直接按完成即可。

Step 9: 進入「管理金鑰」頁面

  • 從產生的帳戶結果中,按下右邊「管理金鑰」,進入金鑰管理頁面

Step 10: 新增金鑰

  • 按下「新增金鑰」,選擇 JSON,並按下建立。

Step 11: 得到我們下載後的金鑰檔!

  • 我們就得到我們下載後的金鑰檔囉!

開始測試並使用 Dialogflow API

這邊我們就直接來實驗 Dialogflow API 的使用吧!
(關於 Dialogflow 的訓練方式會再用另外一篇文章寫)

範例程式碼

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

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = '你剛剛得到的金鑰路徑'
DIALOGFLOW_PROJECT_ID = '剛剛的 PROJECT ID'
DIALOGFLOW_LANGUAGE_CODE = 'zh-TW'
SESSION_ID = 'anything'

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("輸入文字:", response.query_result.query_text)
print("得到的 intent:", response.query_result.intent.display_name)
print("偵測到 intent 的 confidence:", response.query_result.intent_detection_confidence)
print("回應的話:", response.query_result.fulfillment_text)

產生結果

(我的 Dialogflow 有先進行訓練過,實際結果可能因訓練結果而有所不同。)

Dialogflow API 範例使用說明

主要改的內容有:

  • os.environ[“GOOGLE_APPLICATION_CREDENTIALS”]:改成你剛剛得到的「金鑰路徑」
  • DIALOGFLOW_PROJECT_ID:改成你的「PROJECT ID」
  • DIALOGFLOW_LANGUAGE_CODE:改成使用語言,例如「zh-TW」
  • SESSION_ID:這邊基本上可以任意
  • text_to_be_analyzed:要分析的文字

Reference

https://medium.com/swlh/working-with-dialogflow-using-python-client-cb2196d579a4
https://www.timelog.to/a181507263

⭐Python 基礎用法 相關文章整理⭐:
1.【Python】python list 清除, 移除內容元素 remove, pop, del, clear相關用法整理 sample code (內含範例程式碼)
2.【Python】寫模組 module、package 總整理 Importing files from different folder
3.【Python】python assert (斷言) 用法 sample code (內含範例程式碼)
4.【Python】python 一行 if else 語法 (one line if else) sample code (內含範例程式碼)
5.【Python】lambda 與 def function 使用方法與比較整理(內含範例程式碼)
6.【Python】python map 使用方法 與 其他寫法比較整理 (內含範例程式碼) sample code
7.【Python】python zip 使用方法 與 其他寫法比較整理 (內含範例程式碼) sample code
⭐Python 字串處理 相關文章整理⭐:
1.【Python】python print 變數的值 & 變數名稱 方法總整理
2.【Python】python string format str.format 總整理
⭐Python 檔案處理 相關文章整理⭐:
1.【Python】python 開關檔範例 與 程式模板 with open / file open sample code
2.【Python】取出檔案名稱 (含副檔名、不含副檔名) os path basename split 取出 檔名 路徑 不要副檔名 sample code
3.【Python】在 python 中利用 os.chmod 更改檔案的權限 chmod 777
4.【Python】利用 shutil 來複製檔案 shutil copy file
5.【Python】python 建立資料夾範例 mkdir os.makedirs() sample code
6.【Python】python 移除資料夾範例 rmdir shutil.rmtree() sample code
7.【Python】確認檔案是否存在 os.path.isfile / 確認資料夾是否存在 os.path.isdir sample code is folder / file exist
⭐Python 系統偵測 相關文章整理⭐:
1.【Python】python pyinotify sample code 偵測指定路徑底下的文件變化 (內有範例程式碼)
2.【Python】python 利用 argparse 使程式執行時可帶參數 (內附範例程式碼) sample code
⭐Python 平行運算 相關文章整理⭐:
1.【Python】threading – 建立多執行緒來執行程式 (內含範例程式碼) sample code
2.【Python】multiprocessing – 用多核心來執行程式 (內含範例程式碼) sample code
3.【Python】multiprocessing pool, map, apply_async – 用多核心來執行程式並取得結果 (內含範例程式碼) sample code
4.【Python】python thread multiprocess 比較總整理
5.【Python】python pooling multiprocess – 用多核心來執行程式 sample code (內含範例程式碼)
⭐Python 測試程式 相關文章整理⭐:
1.【Python】python 測試程式 – 利用 doctest 測試 python testcase 的優雅寫法,適用於 leetcode (doctest in function,搭配 function 的用法)
2.【Leetcode】python – 利用 doctest 測試 leetcode python testcase 的優雅寫法 (doctest in class,搭配 class 的用法)
⭐Python Chatbot 相關文章整理⭐:
1.【Chatbot】(全圖文說明) LINE Developers bot 機器人註冊與設定
2.【Chatbot】(全圖文說明) ngrok 本地伺服器設定方法 – LINE bot local server
3.【Chatbot】Dialogflow API 串接 python 的方法 (內含範例程式碼)
4.【Chatbot】[講義分享] 手把手實作line機器人 (linebot API 運用)
⭐Python Google Colab (Colaboratory) 相關文章整理⭐:
1.【Colab】Python colab 上傳檔案的方法 (內含範例程式碼) upload files
2.【Colab】Python colab 連接 google 雲端硬碟取用資料 (內含範例程式碼) mount google drive
⭐Python 其他筆記 相關文章整理⭐:
1.【Python】anaconda 更新 (upgrade) python 3.8 版本筆記
2.【Sublime】Sublime 將縮排 “tab” 改成 4格空白 的方法 (圖文說明) sublime indent 4 spaces
3.【Sublime】Python 縮排小技巧 (很爛但實用) 快速將 tab 改成「4格空白」的方法
⭐【喜歡我的文章嗎? 歡迎幫我按讚~ 讓基金會請創作者喝一杯咖啡!
如果喜歡我的文章,請幫我在下方【按五下Like】 (Google, Facebook 免註冊),會由 「LikeCoin」 贊助作者鼓勵繼續創作,讀者們「只需幫忙按讚,完全不用出錢」哦!

likecoin-steps