2019年12月21日 星期六

用C#開發 LINE Bot (34) - 以.net core控制LINE Bot發送Push訊息

接續著上一篇介紹如何用 .net core的WebAPI來建立 LINE Bot WebHook,這一篇我們介紹如何使用 .net core的 razor page web app來建立發送(push)訊息的LINE Bot。

請先確定你使用的是.net core 3.0以上(建議3.1)的版本:

接著透過『dotnet new webapp -n test01』指令,來建立一個新的WebApp:

建立完成之後,別忘了先透過CD test01指令切到專案所在的資料夾,然後我們用底下指令,來安裝幾個套件:
dotnet add package isrock.web.core.razor
執行結果如下:

接著是重要的步驟,請利用底下指令,安裝我們在nuget上的linebot範本:
dotnet new --install isRock.Template.LineBotPush

成功執行之後,請繼續執行底下指令: dotnet new LineBotPush

你會看到該範本的程式碼已經加入我們專案中了,接著,我們用 『code .  』指令來開啟vs code:

你會看到專案中已經有我們寫好的範例程式碼。現在已經可以執行了。

請在VS Code的終端機中,用dotnet run執行這個WebApp:

開始運行之後,你就可以在瀏覽器中,以 https://localhost:5001/__samplelinebot 網址來執行該頁面:

您可以在上面這個頁面中,輸入channel access token, user id…等資訊,當然還有要傳送的訊息,按下Push即可發送訊息。

程式碼相當簡單:

詳細的操作影片可以參考底下:

-----------

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

2019年12月8日 星期日

用C#開發 LINE Bot (33) - 以.net core 3.1在30秒內建立WebHook

習慣使用.net framework的開發人員可能會覺得,用.net core開發LINE Bot比起傳統的.net要難上一些,甚至覺得沒有Visual Studio好像總是不很方便。倘若告訴你,其實使用 .net core開發LINE Bot要比傳統 .net 快得多,信不信?

底下就挑戰一下如何在安裝好 .net core 3.1的環境中30秒內建立一個 LINE Bot WebHook囉。

首先, 在命令列使用底下這行指令可以幫你建立一個空的WebAPI專案:

dotnet new webapi -n test01

然後切換到 test01 這個資料夾中。
cd test01

接著執行:
dotnet add package LineBotSDK

上面這行指令會幫你剛才建立好的WebAPI專案添加最新版的LineBotSDK套件。

接著,請執行底下這行:
dotnet new --install isRock.Template.LineWebHook

上面這行指令如果成功執行,系統會從網路上下載一個範本套件,安裝到你的開發環境上,上面這行指令只需要執行一次,除非套件有更新,否則以後就毋須重複執行。

正確的執行完畢之後,接著你就可以執行底下這行指令:

dotnet new linewebhook

上面這行指令會為你的WebAPI專案,添加一個LineWebHook範本程式碼,完成後顯示如下:

這時候,你可以在命令列下 code . 以visual studio code開啟剛才建立好的專案:

開啟Visual Studio Code後,你會發現剛建立好的WebAPI專案中,已經包含一個預先寫好的LineWebHookController.cs,這是透過前面 dotnet new linewebhook 這行指令產生的:

接著,您只需要將程式碼中第21行的ChannelAccessToken換成你LINE Bot的ChannelAccessToken,將16行的AdminUserID換成你的Admin User ID就完成囉。

哇啦,你的.net core 3.1版LINE WebHook寫完了。碼表停止。

要不要挑戰看看?你能不能在30秒內完成?嚴格說起來,指令只有底下幾行:

dotnet new webapi –n [專案名稱]
cd [專案名稱]
dotnet add package LineBotSDK
dotnet new linewebhook

改成以.net core搭配CLI開發,雖然你必須知道一些指令,但熟悉後整體的流暢度可能會比使用IDE快上不少,在隔壁同學的Visual Studio 2019還在啟動畫面時,你的WebHook已經可以run了說…

 

而且,還是可以跨平台運行的呢~

-----------

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

2019年12月2日 星期一

LINE Developer Day 2019 現場筆記 (三) – LINE Bot 與 DevOps


前面提過,LINE是一家非常熱愛Open Source的公司,諸多的solutions中,十有八九是藉由純Open Source技術來實現的,你很少很少很少看到其他軟體大廠的服務在LINE出現。也因此,當我在議程表當中,看到有Microsoft相關的場次時,不由得眼睛一亮,身為MVP,說什麼我也得前往瞧瞧…

議程表當中,共有兩個與Azure有關的場次,一場是由Kenichiro Nakamura分享的How to optimize bot development lifecycle with DevOps(這場非常有意思,我待會說),另一場則是Ayako Omori的Developing chatbot with Cloud 101 for LINE account auto-reply,兩場都是純日文演說,我也都硬著頭皮參加了。

Bot Framework

Ayako Omoris那一場是少數沒有英文即時翻譯的日文演說,導致我基本上是完全聽不懂講者在說什麼,不過,我卻大致可以掌握整場的內容。很矛盾? 一點也不。

因為內容是我非常熟悉的Azure Cognitive Services與Bot Framework,我發現技術語言是跨國籍的,我雖然完全聽不懂講者的日文,但只看Demo和操作,基本能夠掌握八成左右(所以如果讀者想去國外工作,大可不用過度擔心語文的問題),講者除了大致完整的介紹了MS Bot Framework與LINE Bot如何整合,還有如何使用LUIS和QnA Maker服務,這些過去我在書籍線上課程中大致也都有介紹,講者能在幾十分鐘的時間內把這些內容都塞進去,也算是不容易了。

除此之外,她也提到了MS最近釋出的BotFramework-Composer(這就是個新玩意了):

Bot Framework Composer是一套open source的Chat Bot設計工具,可以讓你用視覺化的方式來建立Chat Bot。除了支援上圖這樣的所視及所得對談設計界面,也支援LUIS和QnA Maker,讓設計人員可以自由的使用這些雲端服務並整合在Bot當中,雖然目前還只是預覽版本,但未來頗值得期待。我知道台灣坊間也不乏這樣的工具,但掛著微軟的招牌,加上又是open source,背後有MS Bot Framework撐腰,又有自然語言語意分析加持,其前景很讓人看好。

開發Chat Bot的DevOps自動化

另一個與微軟有關的場次是由Kenichiro Nakamura介紹的How to optimize bot development lifecycle with DevOps,講者是MS的開發人員,同時也是LAE:

主題的內容是開發Bot時的DevOps。

開發Chat Bot也需要DevOps? 當然,在這個時代不管開發麼甚麼,都需要DevOps,Chat Bot當然也是。講者談到了Chat Bot的開發其實更需要DevOps,特別是我們常常有正式、測試環境、為了讓LINE Bot的開發與測試更順暢,一般來說,我們在開發一個LINE Bot時,會特別建立2-3個LINE Bot Account,分別將其設定成Dev/UAT/Production環境。

而Azure WebApp的好處就在這邊體現了,我們可以透過WebApp的Slot機制來做不同的環境佈署。當我們建立了WebApp後,對該WebApp分別建立額外的Dev or UAT Slot,然後針對不同的Slot配置環境參數:

其實這個做法,基本我們在Azure Web App上幾乎是天天上演,算的上是開發Chat Bot的best practice了。然後,再搭配Azure DevOps,來實現自動化CI/CD:

只要在MS的世界中談到DevOps,那毫無懸念的就是採用Azure DevOps,然後LINE Bot的開發可以採用WebApp(不管是Linux based或是Windows based),以Slot切分出Dev/UAT/Production環境,搭配Azure DevOps的Release Management自動化佈署與簽核功能,在開發人員有任何修改後,自動上版到Dev/UAT環境,待UAT環境的測試人員確認無誤後,可以在portal上按下Approve鈕(上圖右),就繼續自動上版到Production環境。

這個在MS世界中幾乎算是理所當然、生來就有的流程,在Open Source世界多少還是需要一些環境上的配置,但Azure雲端服務搭配Azure DevOps,基本可以近乎自動的實現上面所有的流程。

有趣的Bot

對我來說,前面介紹的那些不算是特別新鮮的內容,但這位講者一上場,立即就吸引了我的目光…原因是,他帶來了一隻非常有意思的Bot。

開場的第一張投影片,他先請大家掃QR Code加一隻LINE Bot為好友,這隻Bot可以幹嘛呢? 它可以索取當前的投影片:

這是一隻有著Rich Menu的LINE Bot,按下該LINE Bot的Rich Menu,就可以下載講者當前螢幕上撥放的投影片!!!

這有意思,這樣大家就不用拍照了啊~

這對講師超級有用的!

為甚麼呢? 每次我在上課,總是會看到許多學員在底下拍照,可能是覺得某一張投影片相當精彩,所以想要拍照存證留念,但我自己也會坐在底下當學員,這樣拍照出來的品質我清楚的很,有時候實在慘不忍睹。

而且,不是每一個講者都會在會後立即釋出投影片,特別是我,我上課的投影片常常是幾百張裡面的幾十張。因為我會把同樣的主題放在一個.pptx檔案裡面,然後看不同的課程就挑其中一小段來講。因此,我不是很方便把整份投影片都給學員。

但學員常常需要做筆記或是從投影片上摘錄重要的資訊啊,怎麼辦呢? 這就是你常常看到學員在底下拍照的原因了。

現在有了這支Bot超讚的啊。

你只要在台下打開手機,眼睛盯著台上的螢幕,喜歡哪一張投影片,就立即在手機上按一下,那一張投影片就會自動下載到你的手機裡,超完美的啊。我看到這支Bot之後立刻被吸引,第一時間就給他安裝了起來,不過…

開場前10分鐘還可以用…後來似乎就…掛了。

發生了什麼事情嗎? 當下我不知道,但不管如何,這個Bot太讓人驚艷了,我立刻下定決心,我回台北之後要自己做一個出來玩。

發生了什麼?

後來,我跟講者聯繫上,請教了他是怎麼實現這個Bot的。他告訴我,基本上是採用了MS Office的VSTO開發技術,透過設計一個外掛(Add-Ins),在PowerPoint的 “下一頁” Event上,做一些動作,把當前的投影片位置提供給Bot的WebAPI(底下是講者blog上的介紹):

而到底當下究竟發生了什麼? 導致現場Bot有問題的呢? 這個故事你可以看底下講者的Blog,有現場報導般的說明:

在LINE Developer Day 2019通過LINE bot分發PowerPoint幻燈片的故事

你會發現,這個故事的主角不僅僅是這支Bot,還包含了講者開發這支Bot的過程,以及他如何使用Azure DevOps做開發的版控與rollback,是個非常精彩的故事。

這整個故事讓這場研討會變的很有意思,講者用自身的LINE Bot開發DevOps經驗,來講在開發LINE Bot時候DevOps扮演了如何重要的角色。不只是過程吸引人,產出的Bot也非常吸引人…

後記

從看到那隻Bot的那一天開始,一直到我回台灣,我始終對那隻LINE Bot念念不忘。終於,我找了一個周末的下午,在自己的環境重新開發了一隻類似的Bot,我改變了做法,在PowerPoint的VSTO當中,Hook 投影片播放的下一頁事件,在該事件發生時,再抓取當前的投影片,然後以非同步的方式上傳到Imgur圖床,並且把該位置丟給LINE Bot的WebAPI。

此時,只要有任何用戶按下Rich Menu上抓取當前投影片的按鈕,LINE Bot就會將該圖片下載到用戶手機上,完成當前投影片下載的任務…

哈,非常完美,下一次,換我帶給學員surprise~

LINE Developer Day 2019 現場筆記 (一) - 看見LINE、開發者、未來
LINE Developer Day 2019 現場筆記 (二) - 關於LIFF的改變與未來
Related Posts Plugin for WordPress, Blogger...

熱門文章