很多團隊已經在 Telegram 上與客戶溝通。藉助開源工作流自動化工具 n8n,無需開發完整的應用,就能搭建一個 Telegram 機器人:用 AI 模型回答問題、記住對話上下文、按照你設定的語氣和範圍作答,並在需要時轉接人工。本文在伺服器上通過 HTTPS 部署 n8n,建立機器人,並使用 Ollama 本地模型或 AI 服務商的 API 搭建工作流。
在 Telegram 中與 @BotFather 對話,傳送 /newbot,設定名稱和以“bot”結尾的使用者名稱,然後複製 token。使用 /setdescription 和 /setuserpic 可以讓機器人看起來更專業。請妥善保管 token,任何拿到它的人都能控制這個機器人。
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 時會用到它。
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 證書。
http://host.docker.internal:11434(Ollama 需按照使用 Ollama 執行本地大模型完成部署,包括允許 Docker 容器連線的步驟及其防火牆規則)。新建一個工作流並新增以下節點(不同 n8n 版本的節點名稱可能略有差異):
qwen2.5:7b,或你的服務商的對話模型),以及一個以 chat ID 為鍵的記憶節點(Simple Memory),讓每位客戶都有各自獨立的對話歷史。節點欄位中使用的表示式如下:
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.
儲存並啟用工作流,n8n 隨後會向 Telegram 註冊 webhook。給你的機器人發一條訊息,如果沒有任何反應,請檢查 webhook 狀態:
curl -s "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getWebhookInfo"
url 應為你的 n8n 域名;last_error_message 會說明失敗原因,例如證書問題或伺服器無法訪問。
{{ $json.message.chat.id }} 屬於你團隊成員的 chat ID 時才繼續執行。每個機器人 token 只能設定一個 webhook,使用同一 token 的其他工作流、測試執行或指令碼會將其覆蓋。請檢查 getWebhookInfo,每個機器人只保留一個啟用的工作流,測試時使用單獨的機器人。
在 CPU 上,較小的模型響應更快。保持系統訊息簡短,將記憶視窗限製為最近 10 條訊息,並讓模型在 Ollama 中常駐記憶體。
能做的還有很多。同一個工作流可以查詢資料庫中的訂單、建立客服工單、向群組發帖或傳送每日報告。n8n 的伺服器配置要求請參見 Dify、n8n 與 AI Agent 伺服器配置要求。
如果按以上步驟操作後問題仍未解決,請提交工單聯絡 IMIDC 7×24 技術支援,並附上伺服器 IP、n8n 域名、getWebhookInfo 的輸出以及 docker logs n8n 的輸出,方便工程師快速定位。