[ChatBot] ChatBotDevelopment & Cognitive Services 心得

有幸參加微軟ChatBot的訓練課程,摘要心得給大家參考

對於想做ChatBot的朋友也可以斟酌ChatBot開發的三兩事

上課老師是yahoo的董老師

課程時間有限,但資料真的超級多…

還是直接開帳號踹最快@_@

下列課程是一個整天

ChatBot development (FB, Line)

聊天機器人算是今年頗夯的主題

對於chatbot來說,一般使用者不用再下載APP,幾乎可以直接使用,不再只是單純的文字訊息

然而因為每一家釋出的template不同,他不僅僅只是純文字互動,而是可以展示豐富的客製化template

[User] <–> [FB, Line, Skype] <–> [Web service]

只要server不休息,隨時隨地都及時回應,比真人互動的效率是更高的

舉例:yahoo weather、skyscanner、CNN等互動對答提供資訊

建議互動中不要有太多文字出現,可多做人臉辨識、情緒辨識、情境辨識等,與cognitive services有關。

Facebook Messenger Bot基本都綁定粉絲頁,如果要做Bot,可以先開一個粉絲頁,可不必公開

接著 登入 https://developers.facebook.com/docs/javascript/quickstart 開一個專案

接著選擇 Messenger

建立完畢以後要取得 Token、選擇 page 註冊

接著設定Webhook,callback URL必須是https ->  關鍵

然後要將service放在azure cloud上,微軟預設會掛SSL,(如果另外做要記得做SSL certification)

當page收到訊息,FB會post到設定的webhook,API會收到基本資料像是Text, User ID, Page ID等,從sender知道哪位訊息來自哪位使用者

回送訊息只要根據FB API POST發送文字訊息,同時也可以加上Image (URL),都是JSON格式

到developer上取得token

Screen Shot 2016-12-17 at 10.02.06 AM

額外補充Line Bot

Line在亞洲國家頗為流行,如果要往歐洲市場當然訊息軟體首選就不是Line。

註冊頁面:https://business.line.me/zh-hant/services/bot

測試帳號免費,好友數量50而已,人一多自然要收費

最大差別在有沒有PUSH好友上限的部分

PUSH應用是比較難demo的東西,平常使用APP會有很多PUSH通知

一般是我主動跟機器人講話,但也可能是對方先開啟對話給我,機器人也可以主動丟訊息給使用者,這就是PUSH概念。比方說早上七點自動讓APP推播我台北的天氣,這就屬於PUSH功能。Facebook MSG API免費,Line的話要另外付費。

Line bot的設定可以從usable API看到權限,接著勾選Use webhooks、Group Chats可看情況勾選 (這功能FB bot還沒有),但Line有提供Group chats,接著可登入開發者後台,同樣webhook URL一定都是走https,另外可用QR code加好友。在Line bot裡接收訊息都是JSON,雖然格式略有差異,基本上bot收到訊息,Line會post到callback URL,利用replyToken知道發話的人是誰。所以發送訊息也是打Line API point,帶上JSON對話,Line也有提供template但是很少,三到四種左右目前,FB的選擇還是略勝一籌,發展較多元。

Screen Shot 2016-12-17 at 10.29.09 AM

Bot Framework

網址:https://dev.botframework.com/ (登入需要用微軟帳號密碼)

目前支援skype, wechat, FB messenger,基本註冊好就已經串好skype (可不使用)。Line的部分因為是由美國開發,目前是無法串Line,因為市佔率緣故,但還是有Direct Line的方法,想試試的請自行努力!

[your BOT/service] <–> [Bot connector] <–> [Channel]

註冊:https://dev.botframework.com/bots/new

Screen Shot 2016-12-17 at 10.30.51 AM

bot handle註冊之後不可改變,這地方要寫的是bot ID,可能會撞到別人家的ID所以可以取特別一點

接著就照表操課,在bot framework新增Facebook messenger服務

新增一組帳號密碼,請注意這組密碼視窗關閉之後就會消失,如沒抄到就..請重建

首先bot icon這邊的msg point不用填,接著按下create app id and password,app id會預設帶回數字不用自己填

另外admin等都不用填,打勾後按下registering

會進到bot framework的首頁,接著新增Facebook messenger,進到configuration畫面

一步步按照做,跳到configure選單之後

瀏覽器切回Facebook後台的Webhooks setup,會跳出頁面註冊,輸入剛剛bot framework看到的兩組文字

Screen Shot 2016-12-17 at 10.32.08 AM

接著打勾你需要用到的fields,儲存完成,會顯示綠色complete,下面選擇你要接軌的page,確認訂閱

最後回到bot framework的enter your credential,第一個在page about裡面有一個ID、後面三個的數字都在Facebook後台dashboard就可以找到APP ID、secret、token在product messenger有一個token generation,找到page點下去就可以得到token,submit完成

Messaging endpoint就是web api程式所在,只要放上程式,bot就可以運作。

目前bot application template提供C#跟node.js,課程用C#做說明

後續會用到visual studio搭配下載的application做操作

專案的名稱按右鍵,其中Bot builder 3.0.0要手動升級成3.4.0+

Screen Shot 2016-12-17 at 11.49.39 AM

Azure部署方式,add web app,app name不要用太簡單的名稱,自行命名。

endpoint回填的時候不能複製貼上就沒事,要記得改一下網址,http改成https

終於看到test正常回應,覺得開心!

到這個程度,聊天機器人還不能丟給其他人使用,如要公布在FB page上,需要讓FB團隊進行審核。是否通過審核可以在FB dev的主控台得到一顆實心圓圈表示完成FB整合。如果想讓其他團隊協助開發,可以在dev主控台的Roles選項裡面增加帳號,協作開發對話。

開發小技巧

  • File log: 程式中加入trace,接著在azure portal將application logging (filesystem) 打開 (預設關閉)。在Advanced tools裡面找到LogFiles
  • ConnectorClient: 在Nuget安裝Microsoft bot builder
  • Local debug: ngrok可用在local debug功能

如果是web chat服務,就是讓你掛在網頁上。直接透過embed code拿到iframe code,code貼到html裡面,記得換secret,可以直接local執行看測試結果。

Microsoft Cognitive Services

以API形式提供的智能服務,從vision 影像視覺辨識, speech 語音辨識 文字語音互轉, language 語言翻譯 自然語言處理, knowledge 專業知識服務到search 網頁或是圖片搜尋等都有,相關可用服務數量一直增加中,老師如是說XD。主要還是分上面五大類。

回傳形式JSON,例如:

  • computer vision圖片辨識上,可以回傳性別與年紀,同時回答confidence probability
  • emotion:情緒辨識上像是憤怒、恐懼、開心、傷心、驚嚇等八種情緒

如何使用呢?重點是取得API key、安裝SDK

先到微軟的cognitive services申請API key,每個月固定額度免費,除非你用在production上。

LUIS: 可以讓程式理解你在說什麼,需要另外安裝套件,將key放進controller.cs的clien。簡單來說可以幫你處理自然語言處理,簡便上手的工具。

比方說 News about flight delays. => 訓練過後的LUIS會根據每個單字給比重分,但因為他是空的,所以需要提供範例語句訓練,由你自行訓練他。Uber結合此項技術,確保uber司機的人是當初申請的那位人士,確保乘客安全這樣。

串接LUIS的方法:一樣先安裝套件在visual studio,回到程式去接key,接著開始使用它的class。

需要的技術程度、名詞、懂C#,有寫過server的技術背景較佳,曉得串API

倘若沒經驗,光是成功建立入口可能就會需要一整天XD

如果團隊有專職開發,建議可以嘗試chatbot囉

201612



迴響已關閉。


total of 2289144 visits