使用「LINE Messaging API」發送 line 訊息
一、介紹
LINE 是由LINE株式會社所開發的即時通訊平台,也是目前台灣目前最高使用率的社群平台。
二、登入 LINE console
圖、打開瀏覽器,進到LINE Developers Console 登入頁
三、建立 Provider 和 Channel
圖、按下 Create,輸入 Provider name,再按下 Create
圖、按下 Create a Message API Channel
圖、輸入 Channel name
圖、Channel 資訊
四、webhook
每當LINE用戶加您的Channel為好友或是發送訊息,LINE平台透過HTTP POST發送webhook 事件資訊至您 LINE Developers Console 中所指定的webhook URL。
圖、點 Messaging API,往下拉即可看到 webhook 相關設定
webhook 事件資訊
webhook 事件資訊為JSON格式的資料
- 點 webhook 的 Verify 按鈕,則會收到如下格式的 webhook 事件資訊。
圖、Verify 按鈕
{“events”:[],“destination”:“XXX”}
- 被加入好友,則會收到如下格式的 webhook 事件資訊。
{“events”:[{“type”:“follow”,“replyToken”:“XXX”,“source”:{“userId”:“XXX”,“type”:“user”},“timestamp”:XXX,“mode”:“active”}],“destination”:“XXX”}
其中 userId為 加入您好友的用戶ID,此ID會使用於發送訊息。
- 發送訊息時,則會收到如下格式的 webhook 事件資訊。
{“events”:[{“type”:“message”,“replyToken”:“XXX”,“source”:{“userId”:“XXX”,“type”:“user”},“timestamp”:XXX,“mode”:“active”,“message”:{“type”:“sticker”,“id”:“XXX”,“stickerId”:“XXX”,“packageId”:“XXX”,“stickerResourceType”:“STATIC”}}],“destination”:“XXX”}
接收 webhook 事件程式範例
範例為 C# 語言,將接收到的 webhook 事件暫存至記憶體快取
// Api
public class LineController : ApiController
{
//以 Post 接收 webhook 事件
[HttpPost]
public void Webhook(JToken tk)
{
//Newtonsoft.Json 套件,將 JSON 物件轉成字串
var str = JsonConvert.SerializeObject(tk);
//System.Runtime.Caching 組件,記憶體內部快取
var cache = MemoryCache.Default;
//將 JSON 字串暫存起來
cache.Set(DateTime.Now.ToString("line_yyyyMMddHHmmss"), str, DateTime.Now.AddDays(1));
}
}
五、加入 Channel 為好友
圖、點 Messaging API,即可看到QRCODE,用LINE掃描此QRCODE即可加入Channel為好友。
六、發送 LINE 訊息
圖、點 Messaging API,往下拉即可看到Channel access token,點 Issue 產生一組 token,此 token 使用於發送訊息
發送 LINE 訊息程式範例
範例為 C# 語言,寫在ApiController裡,將 JSON 格式的訊息,透過HTTP POST發送至 LINE 平台。
[HttpGet]
public string Push()
{
try {
//JSON訊息
var data = new
{
// 填入 Webhook 接收到的 userId
to = "XXX",
messages = new List<object>(){
new {
type = "text",
text = "Hellow World",
}
},
};
//傳送訊息
using (var wc = new WebClient())
{
//Channel access token
var channelAccessToken = "XXX";
wc.Headers.Add("Authorization", $"Bearer {channelAccessToken}");
wc.Headers.Add("Content-Type", $"application/json");
wc.Encoding = Encoding.UTF8;
var dataStr = JsonConvert.SerializeObject(data);
var dataBytes = Encoding.UTF8.GetBytes(dataStr);
var ret = wc.UploadData($"https://api.line.me/v2/bot/message/push", "post", dataBytes);
}
return "OK";
}
catch (Exception e) {
return "ERROR";
}
}
圖、執行 上述程式碼後即會在LINE得到訊息
留言
張貼留言