其實只要有Line帳號就行了
我相信大家都有吧XD
我們先到 https://developers.line.biz/en/
點選右上角的登入
然後使用LINE帳號登入
會看見這個頁面
輸入你的使用者名稱跟EMail
選擇Create Provider
打出你中意的名字
點選provider
我們選擇 messaging api
這兩個不用動
有隱私政策跟服務條款就填
沒的話可以留空
選擇Messaging API 可以看見你的機器人ID跟QRCODE
完成之後我們先放在一邊
我們打開Visual Studio
建立一個新專案
參考第一支WebApi建立
然後一樣把WeatherForeCast.cs
跟Controller資料夾內的WeatherForeCastController.cs刪除
然後我們打開點選專案->管理NuGet套件
搜尋Line.Messaging
選擇第一個
實際上LINE官方提供了許多語言的官方SDK
但是偏偏沒有C#的
麻煩順便下載Json.Net
但是幸好還是有廣大社群神人寫的
這個套件也是官方推薦的
接個我們在Controller資料夾下建立
BotController.cs
然後我們回到Line Developers 頁面
一樣選擇Messeaging API
拉到最底有一個Channel access token
右邊有一個ISSUE
點下去
會出現一段Token
複製這段Token
回到我們的BotController.cs
引用命名空間
using Line.Messaging;
然後宣告一個Client 負責接收與發送line訊息
namespace MyLineBot.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class BotController : ControllerBase
{
private const string Token ="上面複製的Token";
private LineMessagingClient lineMessagingClient = new LineMessagingClient(Token);
}
}
然後我們要提供一個API 來讓LINE通知我們
這是官方的傳入Json格式
{
"destination": "xxxxxxxxxx",
"events": [
{
"replyToken": "0f3779fba3b349968c5d07db31eab56f",
"type": "message",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world"
}
},
{
"replyToken": "8cf9239d56244f4197887e939187e19e",
"type": "follow",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
}
}
]
}
實際上透過LineMessaging套件能把他轉成套件的一個event
但是本來的方法好像行不通
(有人有改寫擴充方法,所有參考資料放在文章尾)
所以我這邊用懶人作法先自己拆(我懶得建立MODEL,正確的作法應該要按照上方JSON轉成MODEL)
[HttpPost, Route("getMessage")]
public ActionResult ReceiveMessage(object messages)
{
var request = JsonConvert.DeserializeObject<JObject>(messages.ToString());
var jToken = request.Property("events").Value;
var list = JArray.FromObject(jToken);
foreach (var item in list)
{
lineMessagingClient.ReplyMessageAsync(item["replyToken"].ToString(), "你好");
}
return Ok();
}
測試的部分留到明天
真的想要做LINEBOT可以參考這篇(https://ithelp.ithome.com.tw/articles/10217452)
介紹的很詳盡
我就爛0.0b