谷歌對話機器人dialogflow的Go對接教程

2020-12-12 百家號

我將首先說Google的Dialogflow Fulfillment功能很棒。實現可以輕鬆構建可以與我們的後端系統交互的酷聊天機器人,但有時這還不夠。

在我的例子中,我為Golang中的Marvik.ai構建了一個chatbot核心引擎,用於處理上下文,會話流等,還可以連接到多個平臺,如Facebook Messenger,Telegram,Slack等。它可以使用IBM Watson,Microsoft LUIS和Facebook Wit,但我想添加Google Dialogflow。有了這個,我可以在最短的時間內構建不同的靈活和可擴展機器人。這樣做我發現Dialogflow的一些問題並不完全是文檔,所以我發了這篇文章試圖幫助其他人面對同樣的問題。

使用Fulfillment,你可以構建如下架構:

但是按照本教程,你將能夠構建更複雜,更靈活的內容,例如:

這很好,因為你可以擴展這個(就像我們一樣)來構建像這樣的酷東西:

在本教程中,我將假設你已經熟悉Dialogflow和chatbots,並且不會介紹一些基本概念。

如果你不想閱讀整個教程,你可以隨時通過此連結轉到Github中的代碼(robeceiro/dialogflow-golang)。

Dialogflow的聊天機器人(chatbots)

首先,讓我們創建聊天機器人的意圖和實體。如果你不知道該怎麼做,我建議你閱讀其他帖子。我們的機器人將專注於電子商務,並允許我們根據訂單ID檢查訂單的狀態。我們將使用名為OrderID的數字實體處理CheckOrderStatus意圖。

讓我們看看我們的意圖實體:

現在讓我們來看看配置:

谷歌的身份驗證

進入配置後,單擊下面顯示的服務帳戶連結:

這將帶你進入Google的Cloud Platform面板。驗證你是否在「服務帳戶」選項卡中,並按下面顯示的按鈕創建新的服務帳戶:

選擇我們服務帳戶的名稱,這僅供我們使用:

獲得名稱後,按「創建」按鈕。然後,系統將提示你輸入帳戶角色。搜索並選擇Dialogflow API Client。你可以選擇其他人,但這對我們來說已經足夠了:

一旦你完成它就會看起來像這樣。此時按繼續:

以下步驟將如下所示。只需按Create Key即可。

將出現一個彈出窗口。只需選擇JSON選項,然後再次按「創建」。這將下載一個JSON文件(不要丟失它!):

將文件保存到項目的目錄中(或者你想要的任何地方,只需記住密鑰的路徑,稍後我們將需要它):

Golang伺服器

現在讓我們關注我們的Golang代碼。首先創建一個簡單的Golang伺服器。這裡沒有什麼魔術,只需要在埠5000上聽POST請求。我們期望一個名為Message的欄位帶有用戶輸入:

我們將定義一些稍後會有用的結構。此時我們將導入Google的Dialogflow v2庫。

DialogflowProcessor將用於處理我們所有的參數,NLPResponse將用於回答POST請求。

注意我們如何定義一個名為DialogflowProcessor類型的dp的變量(它在main方法之外)。

我們需要初始化與Dialogflow的通信。我們將使用init方法來執行此操作。Dialogflow的項目ID,語言,時區和JSON密鑰的路徑將是此輸入。此時將填充變量dp。我們將定義一個上下文(ctx)並使用我們創建和下載的JSON密鑰進行身份驗證。這將創建一個會話客戶端,我們將存儲在我們的dp變量中。

現在讓我們定義一個進程NLP函數,該函數將接收原始消息,並將輸出我們在上面定義的結構,其中包含檢測到的intent,confidence和實體列表。

我們將使用Google的庫來完成所有這些操作,因此我們將導入一些新庫。請注意我們如何將dp變量與我們上面定義的所有內容一起使用。

我們將使用輔助函數來提取實體。我們需要根據輸入的類型處理我們在交換機中期望的每個實體類型。在這段代碼中,我們只需將所有內容轉換為字符串供以後使用。

可以擴展此代碼以了解其他實體類型。對於上述內容,我們需要導入一些其他庫。產生的import將是:

現在讓我們重新定義我們的主要方法,以便我們可以在啟動伺服器之前設置所需的一切。第一個輸入是項目的名稱(從Dialogflow的配置中讀取),第二個輸入是JSON文件的路徑,第三個是語言代碼(在我們的例子中是英語),最後一個是我們的時區。

讓我們重新定義我們的請求處理程序,以便我們可以使用Dialogflow來理解輸入消息:

我們將回答我們定義的NLPResponse結構。我們使用testUser作為虛擬對象,但應替換為用戶的標識符。

測試

現在讓我們從Postman測試一下。構建並運行Go代碼並打開Postman。對localhost 5000埠發出POST請求,如下所示:

太棒了,它有效!我們輸入一條原始消息,在伺服器查詢Dialogflow後輸出intent和confidence。

另外,請注意我們如何在更複雜的輸入中提取實體:

最後

我們已經構建了一個可以在我們的系統中用作微服務的伺服器。它接收原始消息並與Dialogflow通信(處理所有必要的身份驗證)並輸出意圖和實體。

相關焦點

  • 【專知薈萃05】聊天機器人Chatbot知識資料全集(入門/進階/論文/軟體/數據/專家等)(附pdf下載)
    >入門學習對話系統的歷史(聊天機器人發展)微軟鄧力:對話系統的分類與發展歷程Deep Learning for Chatbots, Part 1 – Introduction 聊天機器人中的深度學習技術之一:導讀Deep Learning for Chatbots, Part 2 – Implementing a Retrieval-Based
  • Pokemon go不用谷歌帳號註冊方法 口袋妖怪go官網註冊教程
    Pokemon go進行了版本更新,現在大家就是不用谷歌帳號也可以登陸遊戲啦!再也不用受谷歌電話無法驗證的苦啦!在口袋妖怪go版本更新之後增加了官網註冊帳號的方法,一起來看看註冊方法吧!
  • Pokemon go官網帳號註冊教程 可不用谷歌
    Pokemon go新版本可以直接進行官網註冊帳號登陸遊戲,不用麻煩的谷歌帳號了,並且用官網註冊的帳號在進入遊戲也可以不用vpn,那麼口袋妖怪go官網帳號怎麼註冊呢?小編給大家帶來了詳細教程。
  • TensorFlow 資源大全中文版
    教程TensorFlow 教程1 – 從基礎到有趣的TensorFlow程序TensorFlow 教程2 – 介紹基於谷歌TensorFlow框架的深度學習,其中有些教程是學習了Newmu的Theano教程TensorFlow 實例 – TensorFlow教程以及一些新手的代碼實例Sungjoon的TensorFlow-101
  • Pokemon go官網帳號註冊教程 不用谷歌怎麼登陸遊戲
    Pokemon go新版本可以直接進行官網註冊帳號登陸遊戲,不用麻煩的谷歌帳號了,並且用官網註冊的帳號在進入遊戲也可以不用vpn,那麼口袋妖怪go官網帳號怎麼註冊呢?小編給大家帶來了詳細教程。
  • 「go with the flow 」是什麼意思?
    go with the flow 隨大流,隨波逐流、順其自然。I don't have to get together with a guy who is not right for me.I don't want to go with the flow.我不是一定要和一個不適合我的男人在一起,不過我並不想隨大流。Just accept it all, go with the flow and enjoy it!
  • 多輪對話之對話管理(Dialog Management)
    對話管理(Dialog Management, DM)控制著人機對話的過程,DM 根據對話歷史信息,決定此刻對用戶的反應。總的來說,對話管理的任務大致有下面一些:對話狀態維護(dialog state tracking, DST)維護 & 更新對話狀態t+1 時刻的對話狀態 s{t+1},依賴於之前時刻 t 的狀態 s_t,和之前時刻 t 的系統行為 a_t,以及當前時刻 t+1 對應的用戶行為 o{t+1}生成系統決策(dialog policy)
  • 【人機對話】對話機器人技術簡介:問答系統、對話系統與聊天機器人
    自從iPhone 4S開始內置Siri,到現在各種智能音箱,或者扎克伯格說自己做的智能管家,我認為都算是對話機器人的一類。以蘋果的Siri和亞馬遜的Echo為例,它實際上是一套非常複雜的智能系統,而對話機器人是其中一個界面。有些文獻或者商業機構把這部分稱為Conversational UI(對話界面),也就是說我們通過對話來與機器溝通。
  • 對話機器人技術簡介:問答系統、對話系統與聊天機器人
    自從iPhone 4S開始內置Siri,到現在各種智能音箱,或者扎克伯格說自己做的智能管家,我認為都算是對話機器人的一類。以蘋果的Siri和亞馬遜的Echo為例,它實際上是一套非常複雜的智能系統,而對話機器人是其中一個界面。有些文獻或者商業機構把這部分稱為Conversational UI(對話界面),也就是說我們通過對話來與機器溝通。
  • 能對話、能講故事,他用樹莓派把1960年代的老式收音機改造成了智能...
    近日,YouTube 上的一位博主將一臺老式德律風根收音機改造成了能講故事、能對話的智能音箱。 然後是設計對話環節。Google Dialogflow 是一個免費的自然語言理解平臺,任何人使用它都能很輕鬆地設計用戶的對話交互。
  • 能對話講故事,他用樹莓派把60年代的老式收音機改造成智能音箱
    近日,YouTube 上的一位博主將一臺老式德律風根收音機改造成了能講故事、能對話的智能音箱。改造這樣一臺收音機並不困難。然後是設計對話環節。Google Dialogflow 是一個免費的自然語言理解平臺,任何人使用它都能很輕鬆地設計用戶的對話交互。
  • 谷歌開放GNMT教程:如何使用TensorFlow構建自己的神經機器翻譯系統
    選自谷歌機器之心編譯參與:機器之心編輯部近日,谷歌官方在 Github 開放了一份神經機器翻譯教程,該教程從基本概念實現開始,首先搭建了一個簡單的NMT模型,隨後更進一步引進注意力機制和多層 LSTM 加強系統的性能,最後谷歌根據 GNMT 提供了更進一步改進的技巧和細節
  • 多輪對話之對話管理:Dialog Management
    開始涉獵多輪對話,這一篇想寫一寫對話管理(Dialog Management),感覺是個很龐大的工程,涉及的知識又多又雜,在這裡只好挑重點做一個引導性的介紹,後續會逐個以單篇形式展開。 放一張多輪語音對話流程圖,理解下 DM 在整個對話流程中處於什麼地位。
  • Pokemon Go精靈寶可夢Go下載安裝 谷歌帳號註冊等教程
    今天小編為各位玩家帶來的是Pokemon Go精靈寶可夢Go下載安裝最全教程!《精靈寶可夢 Go》(又名:Pokemon GO)一經推出,全球玩家們可以說是瘋狂至極,為了抓到寶可夢無所不用其極,有的人怒闖女廁所,有的人夜守墳墓,甚至連總統都玩起了這款遊戲。
  • pokemon go官網註冊方法不用谷歌帳號 口袋妖怪go官網怎麼註冊
    Pokemon go進行了版本更新,現在大家就是不用谷歌帳號也可以登陸遊戲啦!再也不用受谷歌電話無法驗證的苦啦!在口袋妖怪go版本更新之後增加了官網註冊帳號的方法,一起來看看註冊方法吧!
  • pokemon GO怎麼註冊帳號 pokemon GO谷歌帳號註冊圖文教程
    pokemon GO怎麼註冊帳號 pokemon GO谷歌帳號註冊圖文教程,作為一款AR遊戲,口袋妖怪GO已經在安卓以及IOS平臺上大火。可惜的是目前遊戲已經鎖區日本,所以如果你想要玩,就必須要掛在VPN,而且還需要有一個谷歌帳號才可以。
  • Pokemon go中國玩家教程
    如果你想知道pokemon go 怎麼安裝登陸怎麼玩,那麼就來看看以下的pokemon go中國玩家教程吧。pokemon go 怎麼安裝登陸怎麼玩,中國玩家教程。pokemon go借用AR技術+GPS定位,可以邊走邊實時捕捉小精靈的遊戲享受,聽起來就讓人熱血沸騰!
  • 看到go with the flow,你的第一反應是什麼?
    比如go with the flow這個習語,我見過很多人不假思索地把它翻譯為「隨波逐流」。flow確實有流動、漲潮的意思,所以go with the flow乍一看和「隨波逐流」是絕配。但關鍵問題在於,「隨波逐流」是個貶義詞,形容某人缺乏判斷是非的能力,沒有堅定的立場,只能跟著別人走。
  • 口袋妖怪go開飛機是什麼意思 pokemon go開飛機教程
    最近不少玩家都在問怎麼開飛機,下面九遊玉米就為大家帶來最新的pokemon go 開飛機教程,一起看看吧。 口袋妖怪GO開飛機是什麼意思? 開飛機指... 口袋妖怪go開飛機是什麼意思,有什麼作用呢?
  • tensorflow安裝教程
    tensorflow是谷歌開源的人工智慧庫,有最完善的生態支持。是進行人工智慧領域開發和科研的必備工具。本文在windows10下,藉助anacondaAnaconda安裝和使用,AkShare入門,安裝tensorflow2.0。