使用C#開發LineBot(2) - 新版Line@ Messaging API使用心得 (Line Bot v2)

注意,本篇部分內容已過時,新版Line bot申請流程,請參考這篇

不廢話,直接切入主題,如果你想看前情提要,請看這裡這裡
如果你對開發Line Bot有興趣,你得先知道原本的Line bot API改版了,最近很奇怪,微軟的bot framework也拼命改版,大家都很隨便敏捷…

新版叫做Messaging API,原則上和舊版的Line bot在概念上很像,但它和Line@整合在一起了。這改版有何影響? 首先,你如果原本有寫好的Line Bot可以暫時不要動它,因為新版v2的Messaging API和舊版並不相容。

其次,新版的bot之所以稱為Line@ Messaging API,是因為,它是透過申請一個Line@帳號開始的,和以前申請一個Line bot帳號不同,這次Line bot的功能被Line@併了。你可以從底下網址直接申請一個"具有Messaging API功能的Line@帳號":
https://business.line.me/zh-hant/services/bot

留意該頁面最下方:

這是三個不同的按鈕。

  1. 開始使用Messaging API
  2. 開始使用Developer Trial
  3. 若要透過現有Line@帳號開始使用Messaging API….

如果你選擇1,2,其實是先建立一個Line@帳號,然後頁面會引導你把該Line@帳號轉成支援Messaging API,如果你選擇3,則是把以前舊的Line@帳號改為支援Messaging API。

但請注意,當你的Line@改為支援Messaging API之後,你就不能用你的Line@ App直接回覆用戶的訊息了(而且這動作不可逆,也就是轉過去轉不回來),用戶的訊息也只會被轉傳到你的Line@ WebHook URL,讓你透過bot程式碼來回覆訊息。
(我覺得這設計…我直說了…糟透了,既然要廢掉Lint bot改用Line@,還不能用Line@ app回訊息,只能在Line@ app和Messaging API中間二選一,那又何必把原本的line bot廢了跟Line@整合在一起呢? 不理解…)

如果你原本的Line@帳號有在用,建議你申請新的Line@去玩這個Messaging API,別用舊的帳號。

接著,你要選擇上面的1還是2呢?請參考底下:

讓我來翻譯一下。

如果你只想要回覆用戶的訊息,那申請哪一個方案都行,但如果你想要主動發訊息給用戶,那只能是developer trial和進階版(月費1888)以上的方案。

developer trial不用錢,但上限50個用戶,你不能把deveeloper trial方案轉換為其他方案。

因此,如果你想要有一個主動傳送訊息的功能,用在production,那你必須付月費1888。好消息是,他說2017年三月前免費。而且付錢很容易,用Line Pay就可以。

你申請好了之後,可以從底下網址到管理後台:
https://admin-official.line.me/ 

當你選擇了某一個Line@帳號,會看到類似底下的管理畫面,下圖(1)的部分,是你正式啟用了支援Messaging API的Line@之後,會出現的選項,如果沒出現這個選項,表示你的Line@帳號尚未支援Messaging API,這時候,你可以去 https://business.line.me/accounts 這個網址把該Line@帳號轉為支援Messaging API
(再次提醒,這個轉換無法回頭,且一旦轉為支援API,則無法用Line@ App回覆用戶訊息,請謹慎為之)

另外,下圖(2)的部分就是你的Line@支援哪一種Message方式,Push就是主動傳訊息給用戶, Reply就是回覆用戶的訊息。如果你只看到Reply,表示你的Line@目前是免費版本,要嘛你升級到進階版($1888),要嘛你申請一個Developer trial帳號(有50個好友限制)

接著你可做些設定,當你允許WebHook傳訊,就表示你可以設定一個WebAPI來接收用戶傳遞給該Line@(就是bot)的訊息。該WebHook在哪設定?

點選Line Developers之後,出現底下畫面:

你可以在上圖(1)的部分設定WebHook URL,在(2)的部分可以取得call API的時候需要的Access Token,而API的document在:
https://devdocs.line.me/en/

後面有機會再介紹怎麼透過程式碼呼叫新版API。

happy coding,各位保重。

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

留言

好奇表示…
這個可以先免費要錢在轉方案嗎哈哈哈
好奇表示…
然後詢問一下這個名字圖片決定申請後能否更改,感恩
isDavid寫道…
這個可以先免費要錢在轉方案嗎哈哈哈 <--- NO
然後詢問一下這個名字圖片決定申請後能否更改,感恩 <--- yes
Eric寫道…
請問董大大:
我建一個空的web api 專案,然後從nuget抓最新的 LineBotSDK 0.2.9 , 放到專案裡.

直接用source code 掛到iis下run 沒有問題,

在visual studio 裡使用"發行"的功能到本地或到Azure ,就會出現下面的錯誤.

-------------------------------------------------
'/LineBotTest' 應用程式中發生伺服器錯誤。

剖析器錯誤

描述: 當剖析服務此要求所需的資源時發生錯誤。請檢閱下列的特定剖析錯誤詳細資訊,並且適當地修改您的原始程式檔。

剖析器錯誤訊息: 無法載入型別 'LineBot.Global'。

原始程式錯誤:

行 1: <%@ Application Codebehind="Global.asax.cs" Inherits="LineBot.Global" Language="C#" %>
---------------------------------
把在沒有修改程式的情況下,把LineBotSDK 移除就又好了

請董大大指點迷津..

謝謝
匿名表示…
請問一下 我要取得聯絡人資訊 有個參數是

這個ID 要去哪邊才可以查的到阿 找了 developer 的頁面一直都查不到....
isDavid寫道…
Eric,

請留意Runtime的.net版本,只能聯想到跟這個有關。
lineBotSdk用的是.net 4.5

Wu David,
抓特定的用戶資訊可以用GetUserInfo這個Method,其中的uid就是UserID,你可以從用戶加你的機器人成為好友,或是用戶發訊息給你的時候,透過ReceievedMessage物件取得。
匿名表示…
JSON格式如下
{"to":"要傳送的line ID","messages":[{"type":"text","text":"Hello,world1"}] }
David358寫道…
最近拜讀這篇大作,內容很新穎,等待續集中!
匿名表示…
請問一下

我傳送出去時 API 一直回復

{
"message": "The property, 'to', in the request body is invalid (line: -, column: -)"
}

不知道是什麼問題

拜託大大了
JerryLiu寫道…
hi 樓上應該是to的內容--ID打錯 , ID不是你的line id
可參考老師的這篇~
http://studyhost.blogspot.tw/2016/11/lintbot-3-linebotsdkline.html
Unknown寫道…
作者已經移除這則留言。
Unknown寫道…
作者已經移除這則留言。
Unknown寫道…
請問to只能user id?如果要推給所有人呢?
isDavid寫道…
API裡面沒有push給『所有人』的功能,你可以要寫一個loop自己做...
匿名表示…
請問一下前輩,我在Web上按測試將訊息傳送到我Server是OK的 但是我收不到用戶傳來的訊息 這是怎麼一回事= =

困擾我很久了 請前輩幫我解答 感恩~~
isDavid寫道…
@李巧虎,

接收用戶的訊息必須要透過WebHook, 請參考這系列關於Line WebHook的那篇...
http://studyhost.blogspot.tw/2016/12/linebot4-aspnetlinewebhook.html
匿名表示…
@David

我後來發現是憑證問題 以解決 謝謝!!
Unknown寫道…
請教一下 1)如果知道user的line id(加入帳號的那個) 可以如何查詢他的mid? 2)我使用rest api 去call https://api.line.me/v1/friends 要列出目前加入好友的list ,可是一直出現{"error":"427","error_desciption":"Channel has not proper permissions. channelId : 1505291358, required permissions : [ FRIEND ]"} ,而這個"required permissions : [ FRIEND ]"" 在api說明文件裡沒有出現這個錯誤如何解決? 有辦法去抓目前好友的所有mid嗎?tks
兩津表示…
讀了老師的文章,自己寫了一支只Reply message,只做純文字回音,Webhook URL驗證卻發生錯誤「Read timeout」(有https也有CA憑證)
,程式碼Post不曉的哪裡錯了。附上不才的程式碼
不才的程式碼
卓秉弘寫道…
我也有這問題,請問有有解了嗎?謝謝
isDavid寫道…
Webhook URL驗證發生錯誤「Read timeout」是因為你在WebHook裡面沒有回OK...
可以參考底下影片,會發現驗證的時候Success:
https://channel9.msdn.com/Shows/NET-Walker-5/Azure-Web-AppLineBot-Webhook

source code:
https://github.com/isdaviddong/20170317LineBotExample/blob/master/WebApplication1/Controllers/LineChatController.cs

注意29和33行...
Unknown寫道…
請問您
https://www.slideshare.net/linecorp/a-2-new-world-by-the-line-bot
第43張投影片 在選單按下可以彈出圖示 使用者按下可寫訊息 該如何實作與設定
SOLEWA寫道…
作者已經移除這則留言。
SOLEWA寫道…
我很想試 Beacon event 的功能,
但一直不了解是
可以自行買beacon就都可以接受得到其訊號及hwid的值嗎?
beacon有那麼多的產品,
是說只要號稱符ibeacon的規格就可以被LINE讀到beacon event所要的相關資訊?
還是所有beacon都可被LINE讀到beacon event所要的資訊?
或是要看怎樣的規格才是beacon event可以讀得到?
Unknown寫道…
想請教您:

自從方案升級為API版本後(月費3888) 手機操作上就沒有APP可以用了,只能用網頁板,操作好不方便,請問有甚麼解決方案嗎??感謝
Unknown寫道…
想請教您:

自從方案升級為API版本後(月費3888) 手機操作上就沒有APP可以用了,只能用網頁板,操作好不方便,請問有甚麼解決方案嗎??感謝
Unknown寫道…
Software Development Sydney
Finding it hard to find great Software Development Sydney? Look no further for high quality Software Development designed just for your business!











這個網誌中的熱門文章

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

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

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

專業的價值...

使用CLI指令快速開啟Windows Terminal