iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
Software Development

建構跨平台AI對話機器人:從LINE到Telegram實踐SDGs推廣的30天專案紀實系列 第 16

Day 16【Webhook 接收】 如何在 Colab 上接收來自 LINE 的訊息?

  • 分享至 

  • xImage
  •  

HI!大家好,我是 Shammi 😊

接續昨天的 LINE API 申請,我們可以想像一下:使用者在 LINE 上發送了一則訊息,這則訊息要如何穿越網路的千山萬水,精準地傳送到我們在 Colab 上運行的程式呢?

答案就是:Webhookngrok

👉 Webhook:LINE 平台會使用一個「回呼網址」(Webhook URL),當有人傳訊息給你的機器人時,它就會自動將這則訊息以 POST 請求的形式,發送到這個網址。

👉 ngrok:我們的 Colab 筆記本位於一個私密的內部網路,無法被 LINE 直接存取。ngrok 的作用就像一個「隧道」,它會為我們在 Colab 上的程式,建立一個可以被公開存取的網址。

今天,我將完成以下步驟,讓 LINE 和 Colab 之間建立起這條神奇的連結:

🌐 一、安裝 ngrok 套件

再最開始的時候,需要在 Colab 環境中安裝 ngrok

#安裝 ngrok 套件
!pip install pyngrok

🌐 二、設定 ngrok 認證金鑰 (Auth Token)

ngrok 服務需要認證金鑰才能運作。

1️⃣ 取得 Auth Token

👉 前往 ngrok 官網 註冊一個免費帳號。

👉 登入後,在左側選單點擊「Your Authtoken」,把眼睛打開會看到一串英數字。

👉 點選「copy」 Auth Token 字串。

2️⃣ 在 Colab 中設定金鑰

將以下程式碼貼到筆記本中,並將 YOUR_NGROK_AUTH_TOKEN 替換成你剛剛複製的金鑰。

NGROK_AUTH_TOKEN = "YOUR_NGROK_AUTH_TOKEN" #替換成你的 ngrok Auth Token

from pyngrok import ngrok
ngrok.set_auth_token(NGROK_AUTH_TOKEN)

這段可以優化至存入金鑰。

🌐 三、建立一個簡單的 Web 伺服器

在我們把 RAG 邏輯整合進去之前,我們先建立一個最簡單的伺服器來測試 Webhook 是否能正常運作。我們將使用輕量級的 Flask 框架。

#安裝 Flask 套件
!pip install Flask

接著,將以下程式碼貼到一個新的儲存格,這段程式碼將啟動一個 Web 伺服器,並將它運行在 Colab 的內部 Port 5000。

rom flask import Flask, request, jsonify
from pyngrok import ngrok
import threading
import sys

app = Flask(__name__)

#定義接收LINE Webhook請求的路由
@app.route("/callback", methods=['POST'])
def callback():
    
    data = request.json #接收訊息
    
    print("收到來自 LINE 的訊息:", data, file=sys.stdout, flush=True)

    return jsonify({"status": "ok"}), 200 #確認訊息

#啟動 Flask 伺服器
def run_flask():
    app.run(port=5000)

flask_thread = threading.Thread(target=run_flask)
flask_thread.start()

🌐 四、啟動 ngrok 隧道

現在,我們要使用 ngrok,將上面運行的 Port 5000 伺服器,暴露成一個公開的 HTTPS 網址。

#啟動ngro隧道,將 Port 5000 暴露出來
public_url = ngrok.connect(5000)
print("ngrok public URL:", public_url)

執行這個儲存格後,會看到類似 https://xxxxxx-xxxx-xxxx-xxxx-xxxx.ngrok-free.app 這樣的網址,請複製它

🌐 五、在 LINE Developers 上設定 Webhook

最後,回到 Day 15 的 LINE Developers 頁面。

1️⃣ 登入 LINE Developers,進入 LINE Bot 頻道管理頁面。

2️⃣ 點擊上方的「Messaging API」分頁。

3️⃣ 找到「Webhook URL」這個區塊,點擊「Edit」按鈕。

4️⃣ 將你從 ngrok 取得的公開網址貼上,並記得在網址後方加上 /callback,例如:
https://xxxxxx-xxxx.ngrok-free.app/callback

5️⃣ 點擊「Verify」按鈕,如果顯示「Success」,代表你的 Webhook 網址設定成功!

6️⃣ 重要! 記得將下方的「Use webhook」選項打開

參考結果:
https://ithelp.ithome.com.tw/upload/images/20250910/20151627GuQj0zboeC.png

https://ithelp.ithome.com.tw/upload/images/20250910/20151627CqTaxurxg1.jpg

🌐 六、測試 LINE 的 Webhook 功能是否正常啟用

以上步驟執行完後,就可以測試 LINE 的聊天室了!
回到 Colab 筆記本,如果在伺服器的輸出中看到 收到來自 LINE 的訊息 的字樣,就代表成功運作囉!

總結

今天的篇幅成功在 Colab 上建立了一個能夠接收 LINE 訊息的伺服器,並使用 ngrok 將它暴露在網路上。這是讓 AI 對話機器人能夠與使用者互動的關鍵一步!

下一篇文章,我將會在 Day 1-13 辛苦建構的 RAG 核心程式碼,與這個 LINE Webhook 伺服器結合,讓「阿米 AI 對話機器人」能夠真正開始回答使用者的問題!


上一篇
Day 15【LINE 整合】 建立你的 LINE Bot
系列文
建構跨平台AI對話機器人:從LINE到Telegram實踐SDGs推廣的30天專案紀實16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言