發表文章

目前顯示的是 7月, 2019的文章

使用C#開發LINE Bot(32) – .net core 2.2 WebHook 範例

圖片
前面 我們談過了如何在 .ner core環境上透過 LineBotSDK發送訊息。我們今天來看如何建立一個WebHook… 我們先看執行結果: 當你跟bot說hello的時候,他會echo你hello,當你說 /show ButtonTempalte的時候,他會reply一個tempalte訊息,當你傳送貼圖的時候,它會回你一個貼圖。 我們來看WebHook的程式碼: 剛才我們說到依照用戶傳來的訊息,回覆相對的訊息的部分,是在27-78行,其中回覆文字訊息的部分是29-57行。你會看到我們在程式碼當中,透過bot物件採用ReplyToken回覆訊息。 回覆多則訊息 比較值得注意的地方是,我們回覆訊息的程式碼其實統一寫在76行,回覆的物件是responseMsgs,這是一個訊息的集合。裡面至多可以放5則訊息。而前面程式碼當中的判斷與回覆,其實只是把準備要回覆的訊息加入這個responseMsgs物件中。這樣的寫法比較理想,因為依照LINE的規格,ReplyToken只能使用一次,如此做法可以在程式碼的單一地方一次性的處理回覆,比較好管理,不容易發生replyToken使用多次的錯誤。 另外,程式碼最上面的5,6兩行,是從json檔案中取得appSetting,這是.net core新的做法,請讀者測是這個範例時,也要記得開啟appsettings.json置換當中的token與admin user ID: 程式碼的18-23行,其實就是取得LINE傳來的http body,並且透過我們的SDK Parsing成為ReceivedMessage物件,其中就包含了用戶跟我們LINE Bot對談傳來的訊息,後面25行LineEvent的操作我覺得我們的讀者應該就不陌生了。 小結 總的來說,使用.net core開發LINE Bot現在已經相對算是成熟很多了,我們的SDK目前也已經全面支援,不管是發送(push)/回覆(reply)文字或template訊息基本上都沒有甚麼問題。 而整段程式碼與過去最大的不同之處,大概只有取得config環境變數的作法稍有不同,完整的程式碼已經在 Github 上等你,請直接clone或fork下來使用即可,不用客氣。 如果你要測試,無須安裝VS 2019,使用MAC+VS Code開發也是很好的選擇,參考 前面 介紹過的做法,透過dotn

使用C#開發LINE Bot(31) – .net core 2.2 Web範例

圖片
一路上都有不少朋友問過:『LineBotSDK怎麼還不支援 .net core呢?』 我總是回答『手邊事情太多,一直沒時間啊…』不過,老是跟人說:『你永遠有時間做你認為重要的事…』我自己卻拿沒時間當藉口,似乎有點牽強… 該怎麼說呢,總之,我覺得目前看起來, .net core 2.2 似乎是一個挺好的起跑點,所以,我們準備全面開始支援 .net core囉。 SDK 關於LineBotSDK的 .net core套件,前幾天已經跟朋友們介紹過了,我們剛更新了一個 beta3 的版本,幾乎已經可以當作正式版使用了,nuget package 可以參考底下網址: https://www.nuget.org/packages/LineBotSDK/2.0.0-beta3 這包package可以直接支援 .net framework 與 .net core,所以不管你用哪一種開發技術( 只要是 .net )你都只需要直接引用就好。所有的API都在同樣的namespace底下,如果你想把source code從WebForm轉成 .net core,也完全不用改API的用法。 razor page 範例 很久以前我就說過,上了 .net core之後,我自己大部分的專案選擇用razor pages來開發Web專案(少部分用 .net core mvc,箇中原因有機會再慢慢談,不過,.net core的WebAPI依舊是要的),所以,底下這個部分我們會直接介紹一個使用 .net core 2.2 razor pages開發以及透過 .net core WebAPI來做LINE Bot WebHook的範例。 不管你用的是MAC或是PC,不管使用VS 2019或VS Code,你都可以直接在command line底下建立一個資料夾,然後執行底下指令,clone github上的專案… git clone https://github.com/isdaviddong/LineBotSdkDotNetCoreWebExample.git 當然,別跟我說你沒安裝 Git 和 dotnet SDK 執行後你應該會看到類似底下這樣的輸出: Cloning into 'LineBotSdkDotNetCoreWebExample'... remote: Enumeratin

使用PowerShell刪除Azure訂閱中沒有任何資源的資源群組

圖片
先前 提到,在我棄明投暗開始改用CLI之後,Windows世界裡的PowerShell我當然不可能不去碰。對PowerShell來說,我應該算是新手(資訊界非常有趣,每隔一段時間你就會自動升級為新手,偶而享受一下可以亂做一些蠢事的新手禮遇其實還挺不錯)。 而對新手來說,認識某一種工具或技術的第一件事情,當然就是拿它來弄出一個自己需要的解決方案。PowerShell對我最大的用途當然是控制Azure訂閱,而第一個讓我想幹的解決方案就是,殺光…空著的資源群組。 不知道你有沒有跟我一樣的問題,你知道,Microsoft很大方地給開發人員Azure Free trial帳號、visual studio dev essentials、上課的Azure Pass…等諸多Azure資源。這導致我有非常多的Microsoft Account(MSA)、每個Account底下有非常多的Subscription,每個Subscription底下有一堆常常移動過來移動過去的Resource Group…箇中原由就暫且不表(內行人一定知道)… 當我把Resource Group在subscription之間移來移去的過程中,總是會留下很多空的Resource Group,這很煩、很難看、很難管… 所以我閒暇之餘常常從Azure Portal進去,一個一個Resource Group點進去看看裡面有沒有Resource(這很白癡,對,我知道…)如果是空著的話我就刪除它…很久很久以前我就知道這樣很蠢,根本不是辦法…應該要寫個script去處理它… 但一來沒空二來我內心掙扎不想碰CLI,所以連帶PowerShell也不太動手…好啦,現在我洗心革面棄明投暗之後,第一件解決自己問題的PowerShell巨作,當然就是寫一個刪除empty resource group的script… 寫完之後的結果如下: 由於用到了PowerShell的az Module,如果你要拿去玩耍的話,請記得使用底下指令安Az Module: Install-Module -Name Az –AllowClobber 相關資訊可以參考: https://docs.microsoft.com/zh-tw/powershell/azure/install-az-ps?view=azps-2.4.0 如果你用Powe