使用C#開發LineBot(18) - 不寫一行code完成Line bot

這一篇標題就有問題,既然是用C#開發,那怎麼可能不寫一行code就完成Line bot的開發呢?

的確,不行。還是要寫code,但,但,差別在於,是誰寫。

為什麼會有這篇呢? 是這樣的,在分享了許多的Line bot開發之後,發現有不少對chat bot有興趣,但對C#完全沒概念的新同學加入,新同學們可能過去習慣的是其他的開發技術和語言,會選擇用C#純粹是因為給微軟和我們一點面子因為聽說C#開發Linebot比較容易,也就這麼走進來了,為了幫助這些新朋友,也為了上課寫書方便,我們做了一個小套件(Nuget StudyHost.Example.Linebot),它可以幫助開發人員,不寫一行程式,就立即完成一隻Linebot的開發。

怎麼用呢?非常之簡單。

請打開VS2015/VS2017,然後建立一個空的Web專案:

我只有一個小小的要求,請務必選擇.net framework 4.5.2以上。然後,在下一個畫面中,直接選擇Empty(空)的範本類型,然後請務必(一定一定要)勾選WebAPI:

就這樣,VS2015會幫你建立好一個空專案,長得像是底下這樣:

理論上,你建立好的專案會跟上面幾乎完全一樣,接著,重點來了,請安裝一個nuget套件:

在Nuget套件安裝畫面上,選擇Studyhost.Example.Linebot套件:

按下安裝鈕,安裝完成後,你會看到這個套件已經幫你把程式碼都寫好了:

不蓋你,這個寫好的Linebot甚至還可以連結LUIS支援自然語言對談,你只需要把上圖中的ChannelAccessToken、AdminUserId換掉就好。注意,有3個檔案需要你這麼做,分別是LineWebHookSampleController.cs, TestLUISController.cs, default.aspx.cs。

千萬別告訴我你不知道Channel Access Token和Admin User ID怎麼取得!?
好吧,如果真的不知道,可以先參考底下這支影片:

請將程式碼中3處的資訊換掉,這時,你甚至不需要先將網站佈署到任何雲端站台,應該就可以按下F5執行,試試看default.aspx這個頁面上的按鈕,其實已經可以讓你成功的發送訊息給自己了:


如果你想更進一步的,讓這個chat bot可以跟用戶對話,也不難,其實你已經寫好了一個WebHook,位置是 『https://你的主機/api/LineWebHookSample』,你只需要將這個寫好的網站,佈署到azure web site 站台,就可以將該位置設置在line bot的管理後台WebHook的配置上,如此一來,你的linebot就已經可以通過line後台的verify並進行最簡單的echo對話了。

如果不知道怎麼建立azure web site,我們也有影片:
https://channel9.msdn.com/Shows/NET-Walker-5/SSLAzure-WebApp 

如果還想更進一步的整合自然語言對談,其實這個套件裡面有一個寫好的 LUIS(Language Understanding Intelligent Service)連結WebHook,位於 TestLUISController.cs ,你只需要配置好LUIS服務的appId, Key, domain,就可以將該Line bot連結到某一個LUIS自然語言辨識服務上。

例如,底下是我連結到 『test小吃店』這個LUIS服務的結果:

你會發現這個連結了自然語言識別LUIS服務的Bot,不管是intent或entity都可以正確的抓取到,成功的與客戶對談囉,用C#寫linebot確實真的很容易吧。

完整操作影片可以參考:

------------------
相關課程:http://www.studyhost.tw/NewCourses/LineBot
電子書:http://studyhost.blogspot.tw/2017/12/line-bot.html
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

留言

Unknown寫道…
我想問,有沒有方法可以不透過webapi去接收和發送訊息,我想用一個C#寫的windowform來接收line bot收到的訊息。
Bㄙen表示…
請問~ 在新專案加入參考後(Nuget上顯示是v1.8.3版),在default.aspx中點發送message的按鈕,出現錯誤畫面~

無法從組件 'LineBot, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 載入類型 'isRock.LineBot.Bot'。

請問該如何修正呢?

感謝!
匿名表示…
已解決~ 感謝
匿名表示…
作者大大您好,我也出現上述問題,不知道是套件沒有下載齊全嗎?
請大大幫忙解惑,謝謝~
BalianKo寫道…
今天剛測試也遇到一樣的問題
中間更改版本無效後
我把專案名稱從 lineBot 改掉後就解決了

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

使用Semantic Kernel 建立自然語言請假系統

精彩(且驚人)的Semantic Kernel入門範例

在 LINE Bot 開發中使用Semantic Kernel建立自然語言請假系統

專業的價值...