首頁

目前文章總數:255 篇

  

最後更新:2026年 10月 24日

0107. 2026 實戰教學:從零打造 C# Line Bot 並免費部署至 Azure App Service

日期:2026年 03月 28日

標籤: Asp.NET Core Asp.NET Core Web MVC Microsoft Azure Web C# LineBot dotnet runtime

摘要:C# 學習筆記


範例所需:Visual Studio 2022~2026 版本
     2. .NET 6.0 ~ 10.0
解決問題:在 2026 年如何 [快速啟用] Line Message API ,並且實現 Line Bot (Line 機器人)自動回覆訊息的實作
     2. 如何架設免費的 Azure App Service 並且綁定 Line Bot Message API 的 Webhook
範例檔案:本篇範例代碼(.NET 9.0)
相關參考:LineBOT 系列文章仙草奶綠的程式筆記本 - - 點部落(此為早期在點部落撰寫的 LineBot 系列文章)
基本介紹:本篇分為四大部分。
第一部分:雲端環境:手把手配置 Azure 免費版 App Service
第二部分:專案實作:C# Line Bot 範例程式碼詳解
第三部分:關鍵設定:2026 Line Messaging API 啟用流程
第四部分:成果驗收:跨平台測試與 Demo 展示






第一部分:雲端環境:手把手配置 Azure 免費版 App Service

Step 1:登入 Azure

訪問 Azure入口網站 或熟系的雲服務,目的是建立一個 WebHook 的可訪問資源
本篇用 2026 年 Azure 服務的方式說明


Step 2:建立 App 服務

建立 Web 應用,資源、費用配置省略,依照自己所需規格設定


Step 3:啟用基本驗證

開啟已建立的 Web 應用 -> 設定(預覽) -> SCM基本驗證發佈認證 -> 打勾
補充說明:開啟此功能,密碼外洩風險較高,不符合現代資安規範。
但用於 Demo 測試在用完後立即刪除不造成影響,現代主流使用 GitHub Actions / Azure Pipeline


Step 4:下載設定檔案

開啟已建立的 Web 應用 -> 概觀 -> 下載發行設定檔案
後續用於部署 App 服務,用於 LineBot Message API 的 Webhook 對象。




第二部分:專案實作:C# Line Bot 範例程式碼詳解

Step 1:範例專案

本篇範例代碼(.NET 9.0) 有以下專案架構

1. 初始化配置 : LineBot SDK、Service、MiddleWare 所需的依賴注入
2. 設定 : 存入 LineBot Channel Secret, Channle Token
3. 背景服務 : 訂閱事件,實現消費者,處理 SubScribe Publish 到消費者的工作
4. Web控制器 : 提供 LineBotMessageAPI 使用的 Webhook 的介接 API & 推播機器人 API
5. Html 畫面 : MiddleWare 捕捉 LineBot 的例外錯誤,讓 Controller 層乾淨 & 解耦合




Step 2:所需安裝相依套件

Nuget 需安裝 Line.Messaging.NETCore .NET 6.0 以上都支援


Step 3:Web控制器 - 取得對象ID - WebHook

我們提供一個 API 要提供給 LineBot Message API 的 WebHook 交互用
主要邏輯在 await _lineBotService.HandleEventsAsync(events); 方法中

[HttpPost]
[Route("api/LineBotApi/Post")]
public async Task<IActionResult> LineBotWebHook()
{
    // 1. 取得並驗證 Webhook 事件(GetWebhookEventsAsync 內部自動驗簽)
    var events = await HttpContext.Request.GetWebhookEventsAsync(_channelSecret);
    await _lineBotService.HandleEventsAsync(events);
    return Ok();
}



Step 4:Web控制器 - 取得對象ID - WebHook - 續

目前飯粒有 2 種邏輯

1. 輸入特定文字 : MilkTeaGreen_GetGroupId 會讓機器人回覆 ID, 用於推撥用
2. 其他內容 : 返回相同訊息,驗證機器人具可用性


/// <summary>
/// 依照收到的事件類型進行處理,目前僅處理文字訊息事件,並回覆相同的文字內容。
/// </summary>
public async Task HandleEventsAsync(IEnumerable<WebhookEvent> events)
{
    foreach (var ev in events)
    {
        if (ev is MessageEvent messageEvent &&
            messageEvent.Message.Type == EventMessageType.Text)
        {
            var textMessage = (TextEventMessage)messageEvent.Message;
            string userMessage = textMessage.Text;
            string replyToken = messageEvent.ReplyToken;
            // 如果收到特定指令,回覆來源 ID;否則回覆相同的文字內容
            if (userMessage == "MilkTeaGreen_GetGroupId")
            {
                var (userId, groupId, roomId) = GetSourceIds(ev);
                await _lineClient.ReplyMessageAsync(replyToken,
                    $"您的 UserId : {userId} , GroupId : {groupId} , RoomId : {roomId}");
            }
            else
            {
                await _lineClient.ReplyMessageAsync(replyToken, userMessage);
            }
        }
    }
}



Step 5:Web控制器 - 機器人推播

另一隻 API 則是獨立使用,當專案運行時,呼叫 HandleEventsPublishAsync()
只要傳入正確的 Id 即可讓 LineBot 機器人推播訊息

/// <summary>
/// 用於 LineBot 推播訊息至指定群組
/// <para>https://chat.line.biz/</para>
/// </summary>
[HttpGet]
public async Task<IActionResult> LinePublish(string message, string groupId)
{
    try
    {
        await _lineBotService.HandleEventsPublishAsync(message, groupId);
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "推播失敗");
        return BadRequest("推播失敗");
    }
    
    return Ok("推播成功");
}



Step 6:Web控制器 - 機器人推播 - 續

實際業務邏輯很單純,負責轉拋訊息

/// <summary>
/// 進行推播
/// </summary>
public async Task HandleEventsPublishAsync(string message, string groupId)
{
    // 推播訊息至指定群組
    await _lineClient.PushMessageAsync(groupId, $@"推播訊息 : {message}");
}





第三部分:關鍵設定:2026 Line Messaging API 啟用流程

Step 1:LineBot 入口網站

https://manager.line.biz/,選擇 建立帳號
※已建立可跳過 1~4


Step 2:建立提供者

建立帳號名稱


Step 3:選擇用途 - LineBot

進入後預設沒有任何 Channel 開通,選擇 Create a Message API Channel


Step 4:建立帳號流程 + 認證

依序照步驟建立帳號 & 驗證










Step 5:啟用 Line Message API - 設定

登入後選擇右上角 設定


Step 5:啟用 Line Message API - 啟用

選擇 -> Messageing API -> 啟用按鈕點擊 -> 確定



Step 6:啟用 Line Message API - 取得 Channel secret

將 Channle secret 資訊複製, 還缺 Channel Token


Step 7:設定 Webhook 網址

此時也可先將自己的 域名 + API 位置貼上,並且保存,本篇範例API 路徑:

https://{您的域名}/api/LineBotApi/Post




Step 8:啟用 Line Message API - 進入 Line Console Developer

因為我們要透過程式與機器人互動,因此要進入 Line 的開發者模式 https://developers.line.biz/console/
進入後 -> 選擇帳號 -> Message API


Step 9:啟用 Line Message API - 取得 Channel Access Token

拉到最下方 -> 點擊 Channel Access Token -> 將 Channel Access Token 資訊複製
※至此 Channel Access Token 與 Channel secret 都已取得


Step 10:貼上金鑰到專案設定檔

開啟專案,點開 appsetting.json 貼上自己的 此 Channel Access Token 與 Channel secret

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "LineBot": {
    "ChannelSecret": "貼上,
    "ChannelAccessToken": "貼上"
  }
}





第四部分:成果驗收:跨平台測試與 Demo 展示

Step 1:LineBot 機器人加好友 - 加入群組

用自己的一般用戶 Line 加機器人好友,或者開一個群組加入


Step 2:群組聊天室 - 發送訊息

在預設的情況下,發送任意訊息,機器人只會回覆相同內容,表示 WebHook 成功接收我們的訊息


Step 3:群組聊天室 - 取得 GroupId

輸入特定字元 MilkTeaGreen_GetGroupId ,可以讓機器人回傳當前 發送者UserId 與 群組Id


Step 4:開啟範例專案

我們嘗試將 UserId 填入到 Web 頁面上,並且輸入訊息,進行機器人推播發送


Step 5:LineBot 推播成功

機器人可以針對某個用戶直接傳入訊息,後續可以結合 N8N、Jenkins、…等 CICD 工具搭配使用
至此,成功實現讓機器人回覆訊息 + 推播功能