Linux 伺服器

n8n 搭建 Telegram AI 客服機器人:自託管部署、AI Agent、對話記憶與轉人工

7 個步驟 9 分鐘閱讀 34 次閱讀 0
本文目錄

很多團隊已經在 Telegram 上與客戶溝通。藉助開源工作流自動化工具 n8n,無需開發完整的應用,就能搭建一個 Telegram 機器人:用 AI 模型回答問題、記住對話上下文、按照你設定的語氣和範圍作答,並在需要時轉接人工。本文在伺服器上通過 HTTPS 部署 n8n,建立機器人,並使用 Ollama 本地模型或 AI 服務商的 API 搭建工作流。

Telegram 通過 webhook 把訊息推送給 n8n,這要求有一個配置了有效 HTTPS 證書的公網域名,請先完成 DNS 解析和證書配置。如果使用商業 AI API,請僅在服務商支援的地區使用,並遵守其使用政策;對於涉及機密的對話,建議優先使用本地模型。

步驟 1:建立 Telegram 機器人

在 Telegram 中與 @BotFather 對話,傳送 /newbot,設定名稱和以“bot”結尾的使用者名稱,然後複製 token。使用 /setdescription 和 /setuserpic 可以讓機器人看起來更專業。請妥善保管 token,任何拿到它的人都能控制這個機器人。

步驟 2:安裝 n8n

n8n 執行在 Docker 中(參見我們的 Docker 安裝教程)。請將域名和時區替換為你自己的。

docker volume create n8n_data
docker run -d --name n8n --restart always \
  -p 127.0.0.1:5678:5678 \
  --add-host=host.docker.internal:host-gateway \
  -e N8N_HOST=n8n.example.com \
  -e N8N_PROTOCOL=https \
  -e WEBHOOK_URL=https://n8n.example.com/ \
  -e GENERIC_TIMEZONE=Asia/Hong_Kong \
  -e TZ=Asia/Hong_Kong \
  -e N8N_PROXY_HOPS=1 \
  -v n8n_data:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n

WEBHOOK_URL 必須是公網 HTTPS 地址,n8n 向 Telegram 註冊 webhook 時會用到它。

步驟 3:為 n8n 配置 HTTPS

server {
    listen 443 ssl;
    http2 on;
    server_name n8n.example.com;

    ssl_certificate     /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;

    location / {
        proxy_pass         http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_buffering    off;
        proxy_read_timeout 300s;
    }
}

開啟 https://n8n.example.com 並立即建立所有者(owner)帳號。證書申請請參見使用 Certbot 或 acme.sh 申請免費 SSL 證書。

步驟 4:新增憑據

  • Telegram:使用步驟 1 獲得的機器人 token 建立 Telegram 憑據。
  • 本地模型:建立 Ollama 憑據,Base URL 填寫 http://host.docker.internal:11434(Ollama 需按照使用 Ollama 執行本地大模型完成部署,包括允許 Docker 容器連線的步驟及其防火牆規則)。
  • 或者使用 AI API:為你的服務商建立相應憑據;提供 OpenAI 相容 API 的服務商,可以使用 OpenAI 憑據並自定義 Base URL。

步驟 5:搭建工作流

新建一個工作流並新增以下節點(不同 n8n 版本的節點名稱可能略有差異):

  1. Telegram Trigger,監聽 message 類型的更新。
  2. AI Agent,使用者訊息取自觸發器,並設定一條描述機器人職責的系統訊息。
  3. 為 Agent 掛載一個對話模型(Ollama Chat Model 選擇 qwen2.5:7b,或你的服務商的對話模型),以及一個以 chat ID 為鍵的記憶節點(Simple Memory),讓每位客戶都有各自獨立的對話歷史。
  4. Telegram 節點,操作選擇 Send Message(傳送訊息),將 Agent 的輸出回覆到同一個會話。

節點欄位中使用的表示式如下:

AI Agent      - prompt (user message):  {{ $json.message.text }}
Simple Memory - session key:            {{ $('Telegram Trigger').item.json.message.chat.id }}
Telegram      - chat ID:                {{ $('Telegram Trigger').item.json.message.chat.id }}
Telegram      - text:                   {{ $json.output }}

好的系統訊息能讓回答簡短且不跑題,例如:

You are the customer service assistant of ACME Hosting.
Answer briefly and politely in the customer's language.
Only answer questions about our services, orders and technical support.
If you are not sure, or the customer asks for a refund or a person,
say that a colleague will reply soon. Never invent prices or promises.

步驟 6:啟用並測試

儲存並啟用工作流,n8n 隨後會向 Telegram 註冊 webhook。給你的機器人發一條訊息,如果沒有任何反應,請檢查 webhook 狀態:

curl -s "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getWebhookInfo"

url 應為你的 n8n 域名;last_error_message 會說明失敗原因,例如證書問題或伺服器無法訪問。

步驟 7:控制機器人使用許可權並新增轉人工

  • 白名單:如果是內部機器人,在觸發器後新增一個 If 節點,僅當 {{ $json.message.chat.id }} 屬於你團隊成員的 chat ID 時才繼續執行。
  • 轉人工:新增一個分支,當訊息包含“退款”“人工”或“投訴”等關鍵詞時,將對話轉發到你的客服群,並告知客戶稍後會有同事回覆。
  • 知識庫:如果希望根據你自己的文件作答,可結合使用 AnythingLLM 搭建私有 RAG 聊天機器人中介紹的知識庫使用。

常見問題

機器人原本正常,後來不再回覆

每個機器人 token 只能設定一個 webhook,使用同一 token 的其他工作流、測試執行或指令碼會將其覆蓋。請檢查 getWebhookInfo,每個機器人只保留一個啟用的工作流,測試時使用單獨的機器人。

回覆太慢

在 CPU 上,較小的模型響應更快。保持系統訊息簡短,將記憶視窗限製為最近 10 條訊息,並讓模型在 Ollama 中常駐記憶體。

n8n 除了聊天還能做什麼?

能做的還有很多。同一個工作流可以查詢資料庫中的訂單、建立客服工單、向群組發帖或傳送每日報告。n8n 的伺服器配置要求請參見 Dify、n8n 與 AI Agent 伺服器配置要求。

如果按以上步驟操作後問題仍未解決,請提交工單聯絡 IMIDC 7×24 技術支援,並附上伺服器 IP、n8n 域名、getWebhookInfo 的輸出以及 docker logs n8n 的輸出,方便工程師快速定位。

這篇文章有幫助嗎?

相關教程