發表文章

目前顯示的是有「bot」標籤的文章

使用MS Bot Framework建立一隻支援LINE Bot的對談機器人

圖片
令人期待的事情總是拖得比較久。 但MS Bot Framework支援LINE Bot的這一天總算是來臨了。 先說說為何大夥們會希望Bot Framework支援LINE? 其中最基本的因素大概是Bot Framework目前已經支援多種Channel、本身又內建狀態管理機制、可以很方便的串接自然語言對談和撰寫程式碼,這讓開發人員有機會,只需要寫一次Bot核心Business Logic的code,就讓前端同時支援Web/Skype/FB Messenger/LINE/Telegram…等多種IM: 過去Bot Fx是沒有支援LINE這個Channel的,在眾多開發人員的催促下,微軟從善如流的照做了…好,我們這就來看看Bot Fx如何支援LINE? 首先,請在Azure Portal上用最基本的方式(Web App Bot)建立一支Bot: 稍微留意一下底下的輸入畫面: 現在的Azure Portal,常常在我們建立一個資源時,同時建立很多資源。這啥意思? 例如我們要建立一個支援LINE的Bot,但其實他後面有Azure Web App,Storage,甚至LUIS或QnA Maker(看你的選擇),所以這一建常常一堆資源出現,因此我們都會建議讀者把這些資源建立在同一個新開的資源群組(Resource Group),以便於日後 要刪一起刪 方便維護,請參考上圖2。 至於機器人範本,我們建議選擇Echo Bot,先維持簡單就好(上圖5)。 建立好之後,我們立刻到這個資源來看看: 到了該資源之後,我們可以先點選頻道,你會看到預設狀況下已經有一個頻道(Web Chat)在跑步了…(唉,跑什麼步啊…是running啦…) 你可以點選在WebChat中測試,系統會用Web UI讓您測試: 沒錯,他跑起來了,就是一個Echo Bot… 接著,我們要讓他支援LINE,請進入頻道設定,輸入下圖中1,2的資訊: 等等,上面的『頻道秘密』和『頻道存取權杖』是什麼? 如果你有建立過LINE Bot應該就知道(沒建立過可以參考 這邊 ),它是你可以從LINE Bot後台找到的 Channel Secret和Channel access token啦(btw, 建立的LINE Bot必須支援Push): 別忘了,剛才上一張圖中的WebHook URL(標示3),你必須回填到LINE Bot的...

[index] 使用C#開發LINE Bot系列文索引 (2019 update)

圖片
LINE Bot這一系列,從2016年五月開始,寫著寫著也快30篇了,差不多剛好一個月一篇,如果資訊雜誌還在的話,應該可以是一個專欄。 很久沒有整理索引了,2019年初,再次將這一系列相關連結整理如後: 使用C#開發LineBot (1) - 用c#建立一個LineBot 使用C#開發LineBot(2) - 新版Line@ Messaging API使用心得 (Line Bot v2) 使用C#開發LineBot(3) - 使用LineBotSDK發送Line訊息 使用C#開發LineBot(4) - 透過asp.net輕鬆建立Line機器人WebHook 使用C#開發LineBot(5) - 透過程式碼讓Linebot發送圖片、貼圖 使用C#開發LineBot(6) - 不用申請Bot也能發訊息的Line Notify 使用C#開發LineBot(7) - 使用Line Login實現oAuth SSO(單一登入) 使用C#開發LineBot(8) - 發送Template Message 使用C#開發LineBot(9) - 取得新加入的好友身分資訊 使用C#開發LineBot(10) - 取得用戶上傳給Linebot的照片 使用C#開發LineBot(11) – Chat bot如何處理連續對話 使用C#開發LineBot(12) – 在連續對話中加入ButtonsTemplate訊息 使用C#開發LineBot(13) – 使用Date Time Picker讓用戶輸入日期資訊 使用C#開發LineBot(14) – 新版建立Line Bot流程(2017年底) 使用C#開發LineBot(15) – 當Linebot與我們同在一起, 談群組(聊天室)處理 使用C#開發LineBot(16) – 讓 WebHook 開發更輕鬆 使用C#開發LineBot(17) – 使用新版Line Login v2.1 使用C#開發LineBot(18) - 不寫一行code完成Line bot 使用C#開發Linebot(19) - 建立LUIS服務處裡自然語言辨識 使用C#開發Linebot(20) - 不寫一行code完成Linebot的LUIS串接 使用C#開發Linebot(21) - ImageCarouselTemplate的支援 開發Linebo...

幫你的Teams加上一隻對談機器人(Teams Chat Bot)

圖片
前幾天我們介紹過了 如何申請免費 的Teams,但你知道嗎? 免費的Teams 其實也可以擁有對談機器人喔。只需要三分鐘就可以搞定… 上圖就是我們跟這個剛用三分鐘做好的機器人對談的畫面。 他現在只會Echo,啥都不會,但你幾乎不用寫任何程式碼就可以完成,這樣的對談機器人有何用途呢? 用途大了,未來只需要稍加擴充,他就可以成為您在組織或企業內的小幫手,小從幫你查詢某人的分機、或是查詢你的今年度請假時數,大到自動幫你跑流程建立訂單或其他申請單,都是可以輕易實現的。 我們先來看如何建立一支這樣的bot。 使用bot service 要建立一支bot,你可以透過微軟Azure上的bot Service,建立時,目前有三種可以選擇: 請選擇最簡單的Web App bot,然後在出現的畫面中逐一填入相關資訊: 上圖1的機器人名稱當然就填寫你想要的名稱,而2,3,5預設會用同樣的名稱,我會建議你別改,且最好建立一個獨立的資源群組,這樣比較好管理。因為這個Web App Bot,會一口氣幫你建立Web App、Azure Storage、然後又可能有App Service Plan,如果你沒把所有東西放在一個獨立的資源群組裡,未來刪除的時候可能會漏東漏西。 上圖4程式碼的部分我們選擇C#,6的部分我們選擇自動建立。 按下『建立』鈕會跑一陣子,完成後,會出現類似底下這樣的畫面(如果沒有,請自行搜尋到該服務): 接著,請點選『頻道』,我們要讓這個bot可以被加入Teams中,請在頻道中把teams家進去,完成後類似底下這樣: 其實這樣該bot已經可以在Teams中使用了,但先別急,我們來看看這個bot目前是怎麼被設計的: 請在選單『組建』當中,找到開啟『線上代碼編輯器』: 點選後會出現底下這個Web畫面,基本上你可以在這個畫面中改你這隻Bot的程式碼,我們找到EchoDialog.cs: 然後把程式碼稍微改一下變成上面這樣: 完成後,請點選左側選單中的Open Console,然後下指令 build.cmd : 完成後,你修改的程式碼就生效了!!!!! 這時候先別急,我們回到azure管理站台,找到MS App Id,這個ID很重要,是我們待會測試bot所需的關鍵資訊: 找到之後,來到您的teams畫面,請在聊天選單中,點選下圖像是筆的那個圖示,在出現的『收件者』欄位中,輸入剛才你看到...

開發Linebot(22) - 使用LIFF在Linebot上建立WebView/小程序

圖片
LINE 似乎覺得6/6是一個挺順的日子,終於選了這一天提供了類似FB Messenger上的WebView功能,LINE稱之為LIFF(LINE Front-end Framework)。 和Messenger一模一樣,LIFF有三種高度,分別是: 開發人員可以透過很簡單的http post呼叫,把特定的網頁(當然最好是RWD或手機版網頁)崁入/連結到某一個Line bot或是Line Login中。 如此一來,我們就可以在Line bot中,直接整合/開啟一個如同上面這樣的畫面來使用你自己開發的Web功能,當然,在網頁中你還可以透過js跟LINE或用戶有一些互動,諸如取得用戶身分之類的… 要如讓你的Line bot具有這樣的功能,很簡單,只需要呼叫下這樣的http post: curl -X POST https://api.line.me/liff/v1/apps  -H "Authorization: Bearer {你Linebot的Channel Access Token}" -H "Content-Type: application/json"   -d '{ "view":{ "type":"full或tall或campact", "url":"https://你的RWD網頁網址" } }' 其中header Authorization的bearer token的地方放你的line bot的channel access token,然後組一個JSON Body,在type的地方放你想要出現 的WebView 的大小,url的地方放一個https的網頁,最後對 https://api.line.me/liff/v1/apps  送出POST,就可以針對指定的Line bot註冊該網頁,以便於以後把該網頁以WebView的方式崁入到你的line bot中。 當你對 https://api.line.me/liff/v1/apps 送出JSON之後,會得到類似底下這樣的JSON Response: {      "liffId": "1111111111-OxoxoxoxO...

使用C#開發Linebot(19) - 建立LUIS服務處裡自然語言辨識

圖片
接下來這幾篇,我們從頭開始談談NLP(自然語言處理),以及LUIS如何跟Line bot整合應用 前言 關於Linebot的開發,最終我們免不了碰到一個問題,要如何識別用戶所輸入的語句? 雖然我們有千百個不願意,Linebot也提供了Template Message之類的選單機制,可以幫助我們降低free style對談發生的機會,但終究,到最後我們還是得讓chat bot面對用戶以文字方式傳來的訊息。 怎麼說千百個不願意? 做一隻chatbot不就是希望和用戶chatting嗎? 話是這麼說沒錯,但截至今天的科技,要做一個答非所問,胡言亂語的bot來 引誘用戶跟你聊天 很容易(別懷疑,很多的chat bot其實目的只是要引誘用戶說話),但要做到有意義的自然語言『對談』,對電腦來說,這依舊是一個非常大的挑戰。隨著你對這個主題研究的逐漸深入,你愈會發現,人腦處理語言的神奇。 前話表過,我們終究要來看,在當前的技術下,如何讓chat bot來識別一段文字。我們在這邊推薦的技術是LUIS。 LUIS全名是Language Understanding Intelligent Services,顧名思義,是一個提供語句理解能力的雲端服務。請留意,LUIS並非去分析語句含意(這是Text Analytics的功能),而是去拆解並嘗試依照句型來判斷一個句子,分類歸納出用戶的意圖(intents)並抓取出句子當中關鍵的entities。 而這個功能,對於我們的caht bot,非常的重要。 由於bot的文字輸入介面很自由,用戶往往可以很隨興的打字輸入,你根本無法限制用戶輸入什麼,以什麼句型方式輸入。而且人很有趣,只要沒有限制,就會竭盡所能地嘗試。此外,也非常有可能因為typo之類的輸入錯誤,導致一個句子在輸入上就有錯別字或是不完整,使得chat bot無法只是抓取特定關鍵字來識別用戶的企圖與目的。 凡此種種,都讓NLP自然語言處理的難度比想像來的高。 你只要開放一個文字聊天機器人,就會有人亂打一些有的沒的,然後bot沒理解出他的意思,他就笑這個bot很笨。(這樣很有成就感?) 因此,就對談機器人來說,首要目標之一就是理解用戶輸入的內容,而LUIS是實現這個功能的重點服務。 基本概念 首先,我們需要知道一些概念,LUIS的基本功能(以後有空再說複雜的),就是分析一句話,區分出用戶的意...