2016年11月8日 星期二

關於 LintBot (3) - 使用LineBotSDK發送Line訊息

新版的Line Messaging API,要主動發送訊息給用戶不是很困難,主要是透過Push API,可以參考底下的官方說明 : https://devdocs.line.me/en/#push-message

另外,如果你想申請一個Line Bot,可參考: 關於LineBot (1) - 用c#建立一個LineBot

前陣子說過,我們為了團隊開發方便,做了一個Nuget Package以便於讓撰寫C#的開發人員可以方便的進行Line Messaging API的操作。

所以,如果你想要透過該SDK來發送訊息給用戶,可以透過底下的指令:

isRock.LineBot.Utility.PushMessage(
              UserId, 要傳送的訊息, AccessToken);

別忘了使用前,要先引用linebotSDK這個套件:

當您在.net 4.x的專案中,安裝上述lintbotSDK,即可透過前面提到的指令發送訊息給用戶,但請注意,該用戶必須加你的bot為好友。

你可能在使用時會碰到一個問題,怎麼知道用戶的id呢?
請注意,PushAPI的Line用戶id並非你的line ID,而是一長串項是底下這樣的id:
U6OX388eOX3634X2OX2e341OX06b8OX4123

這個ID會在你的用戶跟你的bot交朋友,或是對談的時候,由系統傳送給你所設定的WebHook網址(其本質上是一個asp.net WebAPI或類似的API服務)。你會在Line傳遞給該WebHook URL的封包中的JSON形式資料內獲得。

也就是說,當你的用戶傳訊息給你的Bot,或是與你的Bot做朋友(或封鎖),你所在你的LineBot後台,所設定的這個WebHook,都會收到這些相關的訊息。其設定位置如下:

訊息內容是以JSON的格式出現。

但是,如果你還不知道怎麼寫一個WebHook,該怎麼辦呢? 寫個WebHook其實很簡單,以asp.net來說,就是寫一個asp.net WebAPI即可。(有空我再說明,但今天比較沒空)

(2017更新,WebHook開發方式請參考這裡)

如果你沒空寫,可以先用底下這個工具(注意這個工具僅限測試使用,我們不保證其穩定性與可用性、與資料安全性):
http://isbaas.azurewebsites.net/WebForms/LineTokenManage.aspx

上面這個工具可以幫你產生一個臨時的WebHook網址,你只要到上面這個網址,把Line後台取得的Access Token輸入,並且順便輸入一個你想監聽該封包的 email(一般來說就是你自己的email啦),按下產生WebHook URL,系統會幫你產生一組像是底下這樣的URL:
https://isbaas.azurewebsites.net/api/LineWebHook?key=677510db-c204-46a0-9c72-d74ffac7e51c
你只需要把上面這組URL貼到你的Line管理後台WebHook URL的位置:

你就有一個公版的測試用WebHook了,這時你就可以跟你的line bot說話:

這個WebHook會echo用戶輸入的訊息,並且把整包JSON mail到你指定的email位置,同時間,你也可以透過跟bot說 /showmyid 取得你的line id,以便於測試。

取得你的用戶id之後,你就可以透過底下的程式碼來發訊息給特定用戶:
isRock.LineBot.Utility.PushMessage(
              UserId, 要傳送的訊息, ChannelAccessToken);

請注意,這個小工具只是為了我們團隊內部測試方便使用,如果可以,我們還是建議你自行建立WebHook,我們並不負責為您保管Channel Access Token,建議您測試完成後,立刻重新Issue你的bot Access Token,以確保安全。

相關課程: http://www.studyhost.tw/NewCourses