前言
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
[…] 【Chatbot】Dialogflow API 串接 python 的方法 (內含範例程式碼) […]
他這個訓練久了,會聰明嗎?
通常聰不聰明是看學習的資料量,模型本身是其次哦~
(比喻:讀越多書的人懂得一定有機會越多,但IQ很高卻不讀書的人不會懂更多知識)
您好想請問有什麼方法可以print出來設定的實體
有點不太懂意思? 是想要 print 什麼呢?