使用「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格式的資料

  1. 點 webhook 的 Verify 按鈕,則會收到如下格式的 webhook 事件資訊。
    圖、Verify 按鈕

{“events”:[],“destination”:“XXX”}

  1. 被加入好友,則會收到如下格式的 webhook 事件資訊。

{“events”:[{“type”:“follow”,“replyToken”:“XXX”,“source”:{“userId”:“XXX”,“type”:“user”},“timestamp”:XXX,“mode”:“active”}],“destination”:“XXX”}

其中 userId為 加入您好友的用戶ID,此ID會使用於發送訊息。

  1. 發送訊息時,則會收到如下格式的 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得到訊息

四、參考

  1. LINE Developers Console 登入頁
  2. LINE Developers
  3. LINE receiving-messages
  4. LINE send push message
  5. 使用「Visual Studio 2019」建置一個有 Mvc 和 Web Api 架構的網站

留言

這個網誌中的熱門文章

使用「NLog」來記錄應用程式的大小事吧

如何傳送訊息至「Teams」的 Channel

「Katalon Recorder」簡化測試腳本撰寫的工具

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

「Selenium」前端 UI 自動化測試、爬蟲程式 最佳利器

好用的資料庫管理工具「SQL Server 資料庫專案」

使用 Visual Studio 2019 實作「RESTful API」

「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行