首頁

目前文章總數:223 篇

  

最後更新:2026年 03月 14日

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 工具搭配使用
至此,成功實現讓機器人回覆訊息 + 推播功能