分享

[App職涯]Chatbot with Dialogflow V2API 實作(Client access token 取得方法)


聊天機器人 App Android DialogFlow chatbot
此篇文章是最近專案使用Dialogflow來實現自動回覆機器人,在串接到App上碰到了 Client access token取得問題,主要因為新版本與舊版本 Client access token取得方式不同,但網路上搜尋的文章大多是舊有的取得方式,所以費了不少時間尋找,最後成功在App上連接到Dialogflow,因此記錄一下新版本的Client access tokenfm取得方式。
聊天機器人 App Android DialogFlow chatbot

舊有的取得方式與現在看到的畫面不同,頁面不再顯示Client access token

為了讓文章更完整,我會介紹整個Dialogflow建立到App串接的流程,所以依照這個文章流程可以得到一個有Dialogflow功能的App,希望能幫助到想開發回覆機器人或和我一樣遇到 Client access token問題的人。
PS.先以Android App作為實作的平台,未來再加入iOS的部分
來源
1.Dialogflow結合chatbot主要參考此篇文章
2.該作者有提供範例專案,你可以先下載並搭配本篇文章操作。
Dialogflow簡介
首先想要稍微科普一下,Dialogflow 是GCP(Google Cloud Platform)旗下的自動回覆機器人系統管理平台,Google將其稱為Agent,您可以針對產品建立Agent,而每個Agent中透過自定義的「對話情境(Intent)」再搭配超多Dialogflow 附加功能,讓Agent在對話上變得更人性化與準確。
當初專案會選擇它來開發是因為以下原因:
● 幾乎支持所有平台
Dialogflow 無論是網頁、裝置(App)、通訊軟體,或者助理系統都能夠實作。
● App或網頁API可直接使用
一般機器人服務公司 例如GoSkySysTalkChatisfy…等 大多使用MessengerChat API來實現聊天室功能,但我的專案是沒有臉書粉絲專頁的,而對服務公司來說直接串接API是屬於客製化的項目,會收取很高額的開發費用。Dialogflow則是開放的API,只要你有程式碼能力就可以使用。
● 不收月費,費用以量計價
一般回覆機器人大多採月費機制,但Dialogflow繼承GCP服務用多少算多少的計價方式,所以若每個月不超過免費的訊息量,則等於是能夠免費使用。這非常適合用來學習或者產品在推廣初期的選擇,能減少許多不必要的花費。
總結來說Dialogflow的功能是完全開放,只會根據你的用量來收訊訊息費用,你可以在任何地方導入Dialogflow服務。
建立機器人對話情境...等相關設定不用寫任何一段代碼,只要依照說明文件介紹、點一點或輸入回覆的字串就可完成,不過說明文件是全英文且滿工程的,一般人可能較難理解,有程式編寫能力或看過Google相關API文件的人才比較好上手。如果你是專案經理或公司高層、沒有工程師的話還是建議尋找類似GoSkySysTalk的服務公司。
如果你已經在使用Dialogflow並希望實作在App上,或遇到Client access token取得的問題,那麼謝謝你看我廢話這麼多,接下來進入主題。
建立Agent(若你已建立則可以跳過此步驟)
1.進入Dialog官網,以Google帳戶進行登入。
2.左側選單列選擇"Create Agent"
聊天機器人 App Android DialogFlow chatbot
3.為你的Agent取一個名稱,下方可以選擇主要的語系、時間...等設定。
其中語系跟你之後建立的對話語言沒有關係,只是在建立某些情境時,Dialogflow會預設一些回答,會以您選擇的語系來顯示。
如果設定好了,就點擊"CREATE"建立。
聊天機器人 App Android DialogFlow chatbot
建立服務帳戶(取得Client access token)
1.建立後就會進入到Agent裡面,可以看到左側選單列有非常多的功能,但在此不做說明(若你有興趣可以在下方留言,或許我會在另一篇文章說明),我們直接操作取得Client access token的動作。
選擇專案名稱右邊的小齒輪進入設定:
聊天機器人 App Android DialogFlow chatbot
2.進入設定後點擊Project ID欄位的連結,會跳轉到GCP的管理平台頁面
聊天機器人 App Android DialogFlow chatbot
聊天機器人 App Android DialogFlow chatbot
3.在GCP管理平台頁面選擇左上角選單圖示,點選"IAM與管理"->"服務帳戶"
聊天機器人 App Android DialogFlow chatbot
4.進入服務帳戶頁面,當要將聊天機器人加入到其他平台時,需要創建一個服務帳戶。
->若已有Dialogflow服務帳戶,那麼就在後方選擇「建立金鑰」。
->若如下圖範例還沒有建立服務帳戶,則選擇上方的「+建立服務帳戶」
聊天機器人 App Android DialogFlow chatbot
5.輸入服務帳戶名稱,系統會自動產生服務帳戶ID,此處範例輸入Dialogflow Integrations,完成後點選「建立」
聊天機器人 App Android DialogFlow chatbot
6.接著在存取權設定的地方點選下拉條尋找”dialogflow”並選擇”Dialogflow API 用戶端”
聊天機器人 App Android DialogFlow chatbot
7.最後可以設定這個服務帳戶給其他人管理,可以給其他的開發者或維護人員…等,此處範例不設定,直接選擇「完成」。
聊天機器人 App Android DialogFlow chatbot
8.回到服務帳戶列表會看到剛剛新增的帳戶,在右方選擇「〯」,選擇「建立金鑰」
聊天機器人 App Android DialogFlow chatbot
9.出現的畫面選擇「JSON」選項,選擇「建立」,系統會下載金鑰的Json檔,請保存起來後續會使用
聊天機器人 App Android DialogFlow chatbot
10.回到服務帳戶列表,會看到剛剛新增帳戶的「金鑰ID」欄位有一個剛剛建立的金鑰號碼,這個號碼就是「Client access token」
聊天機器人 App Android DialogFlow chatbot

金鑰ID會在範例後刪除,不要使用我的唷!

這邊完成後在DialogFlow的金鑰建置作業大致上完成了,接著進行專案設定的部分。

App實作[Android]
在文章開頭有提供範例專案,本文章使用此範例專案進行,以下使用Android Studio開啟範例專案作為範例。
1.打開範例專案並打開build.grandle檔案,在CLIENT_ACCESS_TOKEN處填上剛剛建立的金鑰ID
->CLIENT_ACCESS_TOKEN需加上'"你的ID"',否則編譯會錯誤
聊天機器人 App Android DialogFlow chatbot

金鑰ID會在範例後刪除,不要使用我的唷!

2.並且打開專案資料夾的”app/res”目錄,在res資料夾下建立一個”raw”資料夾,並將剛剛下載的金鑰Json檔放在資料夾中,將檔名改為test_agent_credentials
聊天機器人 App Android DialogFlow chatbot
好了,大功告成!
到這邊已經完成範例專案及DialogFlow間的設定,可以編譯專案看看原則上應該能成功編譯,若出現錯誤的話請檢查專案內CLIENT_ACCESS_TOKEN 是否都填上,raw資料夾的金鑰檔案是否有放入,且路徑是否正確。
接著燒錄至裝置進行測試,若是連結自己設定好的Agent,就輸入自己定義的Intent情境,看看機器人是否正常回復;若是預設的Agent,可以輸入”hey”字串,若機器人回覆”Good day!What can I do for you today?”或其他打招呼的回答,表示專案已經跟Agent連結成功。
聊天機器人 App Android DialogFlow chatbot
以上我們實作了「建立Dialogflow回覆機器人」並且建立GCP服務帳戶給其他平台串接,最後透過範例App來串接Dialogflow,希望能夠幫助到你,如果有的話不如幫我點個喜歡吧!
有其他問題歡迎留言共同討論,或者希望了解Dialogflow的其他功能的話,我會在另一篇文章說明自己研究的項目,只能說Dialogflow很硬、很難吃,但是細嚼之後發現真的很有營養歐!
#聊天機器人  #App  #Android  #DialogFlow  #chatbot 
分類:學習

「每天都要比昨天的自己更好!」與太太都喜歡回顧過去發生的事,但卻很少將生活寫下來。所以決定在探路客記錄生活、育兒日記,還有關於我App工程師的職涯紀錄,希望能養成習慣。歡迎大家一起交流!

評論
上一篇
  • [育兒日記]流感+日本腦炎疫苗-20.10.29
  • 下一篇
  • [育兒日記]你的努力不為了成為誰的驕傲,而是讓自己成長、變得更好-20.11.20
  • 更多文章
    載入中... 沒有更多了