Regional platforms
Zalo
狀態:實驗性。已實作私訊與群組聊天;下方的功能表格反映在 Zalo Bot Creator/Marketplace 機器人上經驗證的行為。
內建外掛
目前的 OpenClaw 版本已內建 Zalo 外掛,因此封裝版本不需要另外安裝。
若使用較舊的版本,或使用排除 Zalo 的自訂安裝,請直接安裝 npm 套件:
- 安裝:
openclaw plugins install @openclaw/zalo - 鎖定版本:
openclaw plugins install @openclaw/zalo@2026.6.11 - 從本機簽出版本安裝:
openclaw plugins install ./path/to/local/zalo-plugin - 詳細資訊:外掛
快速設定
- 在 https://bot.zaloplatforms.com 建立機器人權杖(登入、建立機器人並配置設定)。權杖為
numeric_id:secret;若是 Marketplace 機器人,可用的執行階段權杖可能會顯示在機器人的歡迎訊息中。 - 設定權杖,可以使用環境變數
ZALO_BOT_TOKEN=...(僅限預設帳號),也可以在設定檔中配置。 - 重新啟動閘道。
- 首次收到私訊時核准配對碼(預設私訊政策為配對)。
最小設定:
{ channels: { zalo: { enabled: true, accounts: { default: { botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }, },}多帳號:在 channels.zalo.accounts.<id> 下新增更多項目,每個項目都有自己的 botToken/name。channels.zalo.botToken(扁平結構,不含 accounts)是舊版的單帳號簡寫;新設定請優先使用 accounts.<id>.*。
這是什麼
Zalo 是一款以越南市場為主的通訊應用程式。其 Bot API 可讓閘道為 1:1 對話和群組聊天執行機器人,並以確定性方式將訊息路由回 Zalo(模型絕不會選擇頻道)。
本頁說明 Zalo Bot Creator/Marketplace 機器人。Zalo Official Account (OA) 機器人屬於不同的產品介面,其行為可能不同;本頁不涵蓋該類機器人。
運作方式
- 傳入訊息會連同媒體預留位置正規化為共用的頻道信封。
- 回覆一律路由回相同的 Zalo 聊天;不使用引用回覆(
replyToMode固定為關閉)。 - 預設使用長輪詢(
getUpdates);也可透過channels.zalo.webhookUrl使用網路鉤子模式。 - 群組必須透過 @提及才能觸發機器人;無法針對個別頻道配置此行為。
限制
| 限制 | 值 |
|---|---|
| 傳出文字分段大小 | 2000 個字元(Zalo API 限制) |
| 媒體大小(傳入/傳出) | channels.zalo.mediaMaxMb,預設 5 MB |
| 網路鉤子要求本文 | 1 MB,讀取逾時 30 秒 |
| 網路鉤子速率限制 | 每個路徑+用戶端 IP 每 60 秒 120 個要求,之後回傳 HTTP 429 |
| 網路鉤子重播墓碑 | 30 天,每個帳號最多 20,000 個已完成事件(以訊息 ID 為鍵) |
存取控制
私訊
channels.zalo.dmPolicy:pairing(預設)|allowlist|open|disabled。- 配對:未知傳送者會收到配對碼;核准前會忽略其訊息。配對碼會在 1 小時後到期。
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- 詳細資訊:配對
channels.zalo.allowFrom接受數字形式的 Zalo 使用者 ID(不支援使用者名稱查詢)。open需要"*"。
群組
此外掛支援群組聊天(chatTypes: ["direct", "group"]),並由提及和群組政策共同管控:
channels.zalo.groupPolicy:open|allowlist|disabled。channels.zalo.groupAllowFrom限制哪些傳送者 ID 可在群組中觸發機器人;未設定時會改用allowFrom。- 預設解析方式:配置
channels.zalo時,未設定的groupPolicy會解析為open。若完全缺少channels.zalo,執行階段會採用失敗關閉原則,設為allowlist。 - 實際使用中回報的注意事項:在部分 Marketplace 機器人設定中,機器人完全無法加入群組。如果遇到此問題,請檢查機器人的 Zalo Bot Platform 設定;這是平台端的限制,而非 OpenClaw 政策。
長輪詢與網路鉤子比較
- 預設:長輪詢(不需要公開 URL)。
- 網路鉤子模式:設定
channels.zalo.webhookUrl和channels.zalo.webhookSecret。- 網路鉤子 URL 必須使用 HTTPS。
- 網路鉤子密鑰必須為 8-256 個字元。
- Zalo 透過
X-Bot-Api-Secret-Token標頭傳送事件,並使用固定時間比較進行檢查。 - 閘道 HTTP 會在
channels.zalo.webhookPath處理網路鉤子要求(預設為網路鉤子 URL 的路徑)。 - 要求必須使用
Content-Type: application/json(或+json媒體類型)。 - 只有在原始事件已持久儲存後才會回傳 HTTP 200;儲存失敗時會回傳 HTTP 500。
- 依據 Zalo API 文件,每個機器人的 getUpdates 輪詢與網路鉤子互斥。
支援的訊息類型
- 文字:完整支援,分段上限為 2000 個字元。
- 媒體:支援傳入/傳出,上限由
mediaMaxMb設定。 - 回應、討論串、投票、原生命令:此外掛不支援。
- 串流:此外掛宣告支援區塊串流,但 Zalo 沒有專用的傳出佇列/文字合併調整選項(不同於部分其他區域性頻道);如果這對你的使用案例很重要,請在你的環境中驗證目前的行為。
功能
| 功能 | 狀態 |
|---|---|
| 私訊 | 支援 |
| 群組 | 支援(需提及才能觸發) |
| 媒體(傳入/傳出) | 支援,上限由 mediaMaxMb 設定 |
| 回應 | 不支援 |
| 討論串 | 不支援 |
| 投票 | 不支援 |
| 原生命令 | 不支援 |
| 回覆至/引用 | 不使用(固定為關閉) |
傳送目標(命令列介面/排程)
使用聊天 ID 作為目標:
openclaw message send --channel zalo --target 123456789 --message "hi"疑難排解
機器人沒有回應:
- 檢查權杖:
openclaw channels status --probe - 確認傳送者已獲核准(配對或
allowFrom) - 檢查閘道記錄:
openclaw logs --follow
網路鉤子未收到事件:
- 確認網路鉤子 URL 使用 HTTPS
- 確認密鑰為 8-256 個字元
- 確認可透過已配置的路徑連線到閘道 HTTP 端點
- 確認 getUpdates 輪詢未同時執行(兩者互斥)
- 大量突發要求可能會收到 HTTP 429(每個路徑+IP 每 60 秒 120 個要求);請降低要求頻率後重試
設定參考
完整設定:設定
| 設定 | 說明 | 預設值 |
|---|---|---|
channels.zalo.enabled |
啟用/停用頻道啟動 | true |
channels.zalo.accounts.<id>.botToken |
來自 Zalo Bot Platform 的機器人權杖 | - |
channels.zalo.accounts.<id>.tokenFile |
從檔案讀取權杖(拒絕符號連結) | - |
channels.zalo.accounts.<id>.name |
顯示名稱 | - |
channels.zalo.accounts.<id>.enabled |
啟用/停用此帳號 | true |
channels.zalo.accounts.<id>.dmPolicy |
個別帳號的私訊政策 | pairing |
channels.zalo.accounts.<id>.allowFrom |
私訊允許清單(使用者 ID) | - |
channels.zalo.accounts.<id>.groupPolicy |
個別帳號的群組政策 | 請參閱群組 |
channels.zalo.accounts.<id>.groupAllowFrom |
群組傳送者允許清單;未設定時改用 allowFrom |
- |
channels.zalo.accounts.<id>.mediaMaxMb |
傳入/傳出媒體上限(MB) | 5 |
channels.zalo.accounts.<id>.webhookUrl |
啟用網路鉤子模式(必須使用 HTTPS) | - |
channels.zalo.accounts.<id>.webhookSecret |
網路鉤子密鑰(8-256 個字元) | - |
channels.zalo.accounts.<id>.webhookPath |
閘道 HTTP 伺服器上的網路鉤子路徑 | 網路鉤子 URL 路徑 |
channels.zalo.accounts.<id>.proxy |
API 要求的 Proxy URL | - |
channels.zalo.accounts.<id>.responsePrefix |
覆寫傳出回應前置字串 | - |
channels.zalo.defaultAccount |
配置多個帳號時的預設帳號 | default |
channels.zalo.botToken、channels.zalo.dmPolicy 和其他扁平的頂層鍵,是上述欄位的舊版單帳號簡寫;兩種形式皆受支援。
環境變數選項:ZALO_BOT_TOKEN=... 僅會解析預設帳號的權杖。
相關內容
Was this useful?