2020年7月7日 星期二

使用 .net core 開發 LINE Bot(04) - 透過C#程式碼推播LINE Bot訊息

經過了前面三篇準備,我們是時候要來用 .net core 的 C# 來開發 LINE Bot了。
首先,我們來看如何撰寫程式碼發送(Push) LINE 訊息給用戶。

前面你已經看過我們怎麼用CLI工具在Command Line透過line指令(有點繞口)發送訊息,現在我們來看你怎麼建立一個 .net core 的C#應用程式來發訊息。

建立console application

為了讓範例盡可能簡單,我們先採用 console application。你可以用底下這樣的指令來建立Console App:

dotnet new console

不過,我會先建議你找一個空的資料夾,或建立一個。所以,我們下這樣的指令:

md TestLineBot
cd TestLineBot
dotnet new console

你會看到底下結果:

PS D:\TestLineBot> dotnet new console
Getting ready...
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on D:\TestLineBot\TestLineBot.csproj...
  正在判斷要還原的專案...
  已還原 D:\TestLineBot\TestLineBot.csproj (286 ms 內)。

Restore succeeded.

PS D:\TestLineBot>

這表示你的專案已經建立好了,如果你這表示你的專案已經建立好了,如果你透過ls或dir來顯示資料夾中的內容,應該會發現:

其中主程式是 Program.cs,而TestLineBot.csproj則是 .net core的專案檔,預設與資料夾同名(如果你沒有指定的話)。

接著,我們耀來撰寫程式,我們使用 VS Code作為開發工具。
我們透過 『code .』來開啟VS Code…

請注意 code和 . 中間有個空白。
這個指令的意思是,開啟VS Code,並且預設以當前目錄作為工作目錄。

你會看到畫面如下:

在VS Code當中,你可以用 Ctrl+~ 熱鍵開啟終端機,這個終端機開啟的預設資料夾位置就是你的專案目錄,其實和剛才我們執行 code . 指令的終端機沒啥不同,但好處是在同一個整合畫面中操作比較方便,另外,就是可以開啟多個不同種類的終端機類型(例如 cmd, PowerShell, bash…etc.)。

接著,請輸入底下指令碼:

dotnet add package linebotsdk

輸入時候請確定你的終端機是在正確的模式,windows環境中建議使用PowerShell。執行後會看到底下畫面:

這個動作是幫你安裝 LineBotSDK 套件,該套件是 C# 開發LINE Bot的絕佳選擇

using System;

namespace testlinebot
{
    class Program
    {
        static void Main(string[] args)
        {
            //傳送對象
            var toUserID = "________換成你自己的UserID________";
            //Channel Access Token
            var token = "________換成你LineBot的ChannelAccessToken________";
            //create bot instance
            isRock.LineBot.Bot bot = new isRock.LineBot.Bot(token);
            //send message
            bot.PushMessage(toUserID, "Hello test");
        }
    }
}

上面這幾行程式碼輸入完畢之後(記得要儲存),可以在VS Code的終端機模式執行:

dotnet run

你將會看到:

很簡單吧,我們很輕鬆的,就透過 .net core 發送訊息給用戶了。如果想發送貼圖,可透過底下這樣的指令:

bot.PushMessage(toUserID, 1, 2);

如果想發送圖片,則只需要把圖片的網址傳入即可:

bot.PushMessage(toUserID,new Uri(“https://i.imgur.com/v87f0Gy.png”));

執行 dotnet run後的結果如下:

如何? 換你試試看囉。

2020年7月6日 星期一

使用 .net core 開發 LINE Bot(03) - 透過簡單的命令列控制LINE Bot發送訊息

前面我們介紹過了如何建立LINE Bot,並且取得Channel Access Token和你個人的UserID,接著,我們要介紹如何來控制LINE Bot發送(Push推播)訊息給特定人。

控制LINE Bot的主要要件是Channel Access Token,而透過命令列控制LINE Bot,則是完全不用寫程式的,堪稱是最簡單的方式。

但前提是:

  1. 你要安裝好 .net core SDK 3.1.300+(先前有提過,沒裝趕快裝,後面也會用到)
  2. 你要下載 line.cli 工具。請在命令列執行底下指令,即可下載

dotnet tool install --global line.cli

在一台尚未安裝過的電腦上,執行上述指令,會看到底下畫面:

確認安裝成功之後,你可以直接在命令列(MAC環境請用bash),下line指令:

當你下了line指令,會看到上面這樣的說明畫面,介紹如何使用。例如,你可以透過底下這樣簡單的指令,命令LINE Bot發訊息給特定用戶(當然前提是,該用戶已經加你的LINE Bot為好友。)

line push -u [userId] -m Hello

但下達上面這個指令之前,別忘了先進行config設定,請用底下這樣的指令,設定你的LINE Bot Channel Access Token(記得嗎?你剛建立好LINE Bot時候取得的那個…)

line config -t [channel access token]

例如:

正確的設定完成之後,接著你就可以發送訊息了!
你還不知道任何人的 UserID,是的。但你知道你自己的啊,還記得嗎?LINE Bot後台可以看到 Your user ID:

找到後,你就可以嘗試透過命令列發送訊息給自己囉(請記得把UserID換成你自己的),例如:

line push -u Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxa -m “Hello, 發大財”

就這樣,你不用撰寫任何一行程式碼,就可以控制你的LINE Bot囉…即便對初學者來說,都應該算是很簡單吧。

如果完成了,請試著發送貼圖和圖片訊息給自己,在上面的LINE CLI工具說明中可以找到線索。
交給你了。就當成練習,試試看囉~

使用 .net core 開發 LINE Bot(01) - 好的開始

為何使用 .net core 開發 LINE Bot?

如果你原本就是 .net 開發人員,這個問題對你不是問題,反而你可能需要知道的是,我們後面的開發都會採用VS Code,而非Visual Studio。

而如果你原本不是 .net 開發人員,那選擇 .net core 作為 LINE Bot 的開發有底下幾個好處:

  1. .net core是跨平台開發工具,可以輕鬆的在MAC/Linux/Docker環境上運行
  2. 開發時只需要使用 VS Code(Visual Studio Code),如果你用MAC,也無須安裝Windows或Visual Studio(雖然它很強)
  3. 如果你使用Windows,也只需要安裝 VS Code,可以在極輕省的狀況下進行開發
  4. 在 .net core 環境上,有非常方便的 LineBotSDK可用,讓你幾乎不用花太多精力就可以做出一個LINE Bot
  5. 如果要測試,.net core 世界中還有 LINE 的 CLI 工具,可以讓你在命令列無須寫程式就可以控制 LINE Bot。

好處很多。總的來說,如果你曾經覺得寫 LINE Bot或LINE官方帳號很麻煩,那使用C#搭配 .net core 應該會讓你改觀。

關於開發工具與環境

VS Code(Visual Studio Code)是近代跨平台開發工具中的黑馬,不管是開發 Python, Node.js, 或是 .net core,它都是很好的選擇。由於支持跨平台且開源(open source),因此獲得了眾多開發人員的青睞與支持。內建 git 版控管理工具,也讓開發人員可以輕易的完成各項開發版本控管工作。同時,豐富的擴充套件(extensions),也使得開發人員可以得到許多額外擴充功能的支援(例如程式碼的自動格式化、單元測試、單步執行偵錯…等)

你可以透過底下這個位置下載安裝 VS Code(不過等等,我們建議先安裝 .net core SDK):
https://code.visualstudio.com/download

除了安裝 VS Code之外,你另外唯一需要安裝的是 .net core SDK,同樣的,因為支援跨平台,所以你可以輕鬆地找到適合你作業系統的版本:
https://dotnet.microsoft.com/download

選擇適合自己的版本後,下載安裝即可:

請注意

由於你需要進行開發,所以你必須安裝 .net core SDK(建議3.1.300以上版本),而非 .net core Runtime,且不建議安裝 preview版本。

當你安裝完成之後,可以透過命令列環境(Win+Q, 輸入cmd後Enter),執行『dotnet --version』確認一下安裝的版本是否正確:

如果是3.1.100以上版本,基本上都OK。

關於命令列工具

使用 .net core進行開發時,會有不少場合我們會需要使用到命令列工具,傳統的Windows環境可以使用 『命令提示字元』,而近代Windows環境中內建非常類似 Linux bash 的PowerShell也是一個不錯的選擇。

不過,我自己更喜歡用 Windows Terminal,它是新一代的 命令列工具,你可以從底下位置下載:
https://www.microsoft.com/zh-tw/p/windows-terminal/9n0dx20hk701

它支援分頁(光這一項應該就足夠支持你下載了)、允許你放大縮小文字、會依照指令highlight關鍵字…諸多理由讓你在windows世界中不該不使用它。

下載安裝好了嗎?
如果沒問題,我們準備繼續進行下一個步驟了…準備好你的LINE帳號,我們要申請LINE Bot了。

使用 .net core 開發 LINE Bot(02) - 建立你的第一支LINE Bot(2020年版)

申請你的LINE Bot帳號
關於這個主題,我大概每年重寫一次,原因很簡單 – LINE的網站一直在變。

在敏捷成為主流的這個年代,網站改版已經是常態。有時候上課上到一半,突然間網站UI整個不同,也不是一件新奇的事情了。也因此,每年寫一版『申請帳號』流程,大概也是剛好而已。

來吧,如何申請你的LINE Bot帳號?
首先,請準備你的LINE帳號,我知道你有一個LINE ID,但我們用不上它,們待會需要的是你的email和密碼,也就是你用來登入desktop版本的LINE時,所用的那組email帳號和密碼,如果你真的沒有(不曾用PC/MAC登入LINE?) 那你待會用手機掃QR Code登入也行。

準備好帳密或手機之後,請進入底下網址:
https://developers.line.biz/zh-hant/

進入後,請點選下圖中的Log in,以你的帳號密碼登入:

如果出現底下畫面,請選擇 使用LINE帳號登入

接著,你可以輸入email和密碼,或是透過手機掃描QR Code登入:

第一次登入,可能會要求你建立Provider,這個Provider是你待會要建立的LINE Bot的所屬單位,一般用公司或機構名稱,如果你是自己玩玩,也可以用個人工作室名稱或你自己的代號:

建立完成之後,你可以在Provider的首頁,建立LINE Bot了。LINE Bot屬於 channel 的一種,所以你可以透過底下『Create a new channel』來建立:

接著在出現的畫面點選『Messaging API』,這就是LINE Bot帳號了:

接著在Create a channel的畫面中,選擇Bot的圖示(Channel Icon):

並填寫名稱(Channel name)、說明(Channel description)、分類和子分類(Category/Subcategory),並填寫你的mail和勾選同意條款後,按下Create即可:

取得重要資訊

建立好LINE Bot之後,我們要取得幾個重要的相關資訊,你可以在LINE Bot的首頁找到Messaging API,點選後,可以看到底下畫面:

即便你是該LINE Bot的建立者,你自己也要將其加入為好友才行測試。
透過上面的QR Code或Bot ID(@xxxxx)你可以加入該LINE Bot為好友。

接著,我們要取得該LINE Bot的Channel Access Token,有了這個Token就可以控制你的LINE Bot。

因此,你也要小心該Token不要外洩

Channel Access Token位於該頁面最下方的位置,你可以點選Issue鈕,建立新的Channel Access Token:

有了這個 Token我們就可以控制該LINE Bot的訊息發送。

接著,我們切換到 basic setting的地方:

在該頁面最下方,有你對於該LINE Bot的User ID:

它是一組U開頭32位數的英文+數字,它等同於你對於該LINE Bot的ID,我們可以寫程式,透過Channel Access Token來控制該LINE Bot,讓LINE Bot以這個ID發送(Push)訊息給你。

好,取得這兩個參數Channel Access Token與Your user ID,並且用手機掃了該LINE Bot的QR Code將其加為好友之後,我們就可以測試看看訊息發送了。

2020年7月4日 星期六

為你的開源專案產生動態Badge(徽章)

底下這個網站挺好玩,可以幫你產生badge(徽章)。

如果你不知道什麼是Badge(徽章),可以先看看成品,類似底下這個頁面上紅框部分的徽章,你可能看過:

在許多open source的開源專案中,你都會看到上面這樣的徽章,大多是在專案的首頁或說明頁面。這些徽章動態的呈現出該開源專案目前的即時狀況,像是當前版本Build成功或失敗、即時下載的數量、程式的最新版本編號資訊…等。

你的開源專案,有這些徽章,看起來就是帥。

當然,它不僅僅只是為了帥氣而已,有這些徽章也可以讓專案的開發人員(參與者)或是程式的使用者對於當前專案的狀況更加一目了然。

要得到這些徽章並不難,例如,當你使用Azure DevOps做自動化的Build Pipeline的時候,Azure Pipeline自動幫你產生這個徽章,可以從pipeline的options中找到:

不過,如果你用其他的工具,可能沒有現成的徽章可以用,例如我開發的是Nuget套件,Nuget目前沒有提供徽章的功能,我就得自己想辦法生出這樣的徽章了。

這時候底下這個小網站就派上用場了,它可以幫你產出各種類型的徽章,支援各大套件庫(例如npm, docker, 當然還有我們的nuget…)
https://shields.io/

你只需要去上面這個網站,找到你要產生的套件類型,然後輸入套件名稱,就會出現相對應的徽章了:

這個網站會提供你該徽章的URL或markdown語法:

你還可以依照自己想要的外觀對徽章長相做選擇或調整。

你把該徽章的markdown語法或是URL貼上你的open source專案說明頁,就是我們前面介紹過的樣子了:

不錯吧,看起來專業多了。

當然,當你nuget套件改版的時候,徽章上的數字會自動更新唷…開源專案就是該這樣,一整個帥。

2020年6月27日 星期六