[開發環境] ngrok 外部網路連開發環境神器 (LINE Messaging 為例)

在開發上有時候會有串接外部服務,如 OAuth、Webhook 的需求,再加上目前各大服務平台都已要求再回 Call 的網址都必須提供 https 憑證才行,這也造成了本地開發階段時的不便,ngrok 就是為了解決此問題而存在的服務。

ngrok 是個知名的內網穿透雲端服務,意思是說你的設備不需要Public IP,透過他的Agent建立Tunnel將服務暴露到外網上

 

紀錄使用步驟

使用 net core 6.0 開發的 LINE Bot 機器人的站台為例,範例程式

LINE Bot 設定

僅第一次使用須執行此步驟,先到 LINE 開發者 後台取得 Channel secret (如下圖紅框處),並將該值貼到程式 

public class LineWebHookController : isRock.LineBot.LineWebHookControllerBase
{
    [Route("api/LineBotWebHook")]
    [HttpPost]
    public IActionResult POST()
    {
        var AdminUserId = "要通知的管理者 ID,通常是你自己的 User ID";

        //設定ChannelAccessToken
        this.ChannelAccessToken = "APP 的 Channel secret";
	}
    
}


執行開發站台

完成上述設定後即可開啟本地開發站台,如下圖範例使用 http://localhost:5001


Ngrok 設定

第一次使用請先到 ngrok 後台取得 AuthToken


到 ngrok 的目錄,使用 Command Line 執行底下的指令,目的是要使用 ngrok proxy 所接收到的請求轉到本地開發環境,啟動後可以看到底下的畫面。

d C:\Software\ngrok
ngrok config add-authtoken 你的 AuthToken
ngrok http 5001

成功啟動後可以得到一個臨時的對外服務的網址,也可以到後台到 ngrok 後台取得本次啟動後取得的臨時網址。


LINE Bot Webhook 設定

將該臨時網址貼到 LINE Bot 的 Webhook 設定中。



成果展示

在 LINE Bot 機器人發送訊息,可以看到 ngrok 已成功請求轉傳到開發環境,並將執行結果回傳。



本文範例下載 : Github,使用 NetCore 6。

參考連結

用C#開發 LINE Bot (33) - 以.net core 3.1在30秒內建立WebHook

沒有Public IP也能架站(1) — ngrok

LINE 官方帳號進階功能,打造免費的LINE 預約機器人

水利會資訊人員教育訓練LineBot課程

留言