使用「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 架構的網站

留言

這個網誌中的熱門文章

使用「Google API Console」取得 OAuth 2.0 client credentials

使用「Visual Studio 2019」建置 Windows 服務

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

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

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

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

使用 Visual Studio 2019 實作「RESTful API」

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