openclaw-zalo-mod 2.29.0 → 2.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.vi.md +1 -1
- package/dashboard.js +1 -1
- package/index.html +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/src/agent/tool-surface.js +22 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://openclaw.ai)
|
|
7
|
-
[](./CHANGELOG.md)
|
|
8
8
|
|
|
9
9
|
**[🇺🇸 English](./README.md)**
|
|
10
10
|
|
package/README.vi.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://openclaw.ai)
|
|
7
|
-
[](./CHANGELOG.md)
|
|
8
8
|
|
|
9
9
|
**[🇺🇸 English](./README.md)**
|
|
10
10
|
|
package/dashboard.js
CHANGED
|
@@ -10,7 +10,7 @@ const modalBody = document.getElementById('modalBody');
|
|
|
10
10
|
const modalCancel = document.getElementById('modalCancel');
|
|
11
11
|
const modalConfirm = document.getElementById('modalConfirm');
|
|
12
12
|
const token = window.ZALO_DASHBOARD_TOKEN || '';
|
|
13
|
-
const pluginVersion = '2.
|
|
13
|
+
const pluginVersion = '2.30.0';
|
|
14
14
|
let state = null;
|
|
15
15
|
let activeGroupId = '';
|
|
16
16
|
let lang = localStorage.getItem('zaloDashboardLang') || 'vi';
|
package/index.html
CHANGED
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
log.</span>
|
|
128
128
|
</div>
|
|
129
129
|
<div class="plugin-meta">
|
|
130
|
-
<strong>zalo-mod <span id="pluginVersion">v2.
|
|
130
|
+
<strong>zalo-mod <span id="pluginVersion">v2.30.0</span></strong>
|
|
131
131
|
<span>Được làm ❤️ bởi tuanminhole</span>
|
|
132
132
|
<div class="socials" aria-label="Author links">
|
|
133
133
|
<a href="https://www.facebook.com/holeminhtuan.it/" target="_blank" rel="noreferrer"
|
package/openclaw.plugin.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "OpenClaw Zalo Mod",
|
|
4
4
|
"description": "Zero-token Zalo group moderation — slash commands, anti-spam, warn system, memory integration. Blocks LLM for non-mention messages.",
|
|
5
5
|
"icon": "https://cdn.simpleicons.org/zalo",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.30.0",
|
|
7
7
|
"enabledByDefault": false,
|
|
8
8
|
"activation": {
|
|
9
9
|
"onStartup": true,
|
package/package.json
CHANGED
|
@@ -67,6 +67,18 @@ export const AGENT_SAFE_ACTIONS = Object.freeze([
|
|
|
67
67
|
// `crm-task-delete` — xoá dữ liệu khách không bao giờ đi qua đường chat, kể cả với allowDestructive.
|
|
68
68
|
'crm-tasks-list', 'crm-tasks-board', 'crm-task-status', 'crm-task-approve',
|
|
69
69
|
'crm-task-approve-move', 'crm-task-reject',
|
|
70
|
+
// P16 (27/08/2026 — sự cố thật trên bot "Thu Chung Thịnh Vượng"): owner nhờ "gửi lại skill cho
|
|
71
|
+
// Trần Thu Phương", bot trả lời "không tìm được", rồi tự suy diễn ra lý do ("zalo-mod chỉ quản lý
|
|
72
|
+
// nhóm", "tài khoản mặc định chưa đăng nhập"). Đối soát `context.db`: chị ấy NẰM SẴN trong
|
|
73
|
+
// `contacts` + có nguyên đoạn DM trong `messages`. Bot không bịa — nó MÙ:
|
|
74
|
+
// · `zalo_mod_history` chỉ đọc lịch sử NHÓM đang follow, không có DM;
|
|
75
|
+
// · `get-friends` là đường duy nhất tới người, mà khách này `is_friend = 0` nên không có trong đó;
|
|
76
|
+
// · `crm-contacts-list` / `chat-*` đã tồn tại và dashboard vẫn dùng, chỉ là agent không được gọi.
|
|
77
|
+
// Bốn action dưới đây ĐỀU CHỈ ĐỌC (SELECT trên context.db, không gọi mạng, không đụng Zalo),
|
|
78
|
+
// nên mở cho agent không thêm rủi ro nào mà bịt đúng chỗ mù. Đường dùng:
|
|
79
|
+
// `crm-contacts-list {search:"Phương"}` → lấy `zalo_uid` → `chat-messages {conversationId}`.
|
|
80
|
+
'crm-contacts-list', 'crm-contact-get',
|
|
81
|
+
'chat-conversations', 'chat-messages',
|
|
70
82
|
]);
|
|
71
83
|
|
|
72
84
|
/**
|
|
@@ -913,6 +925,16 @@ export function createZaloModAgentTools(host) {
|
|
|
913
925
|
'ĐỌC: report-jobs (danh sách lịch báo cáo + danh sách nhóm), journal-data, get-templates,',
|
|
914
926
|
'get-group-info, get-permissions, generate-summary.',
|
|
915
927
|
'',
|
|
928
|
+
'TÌM NGƯỜI + ĐỌC TIN NHẮN RIÊNG (DM) — dùng khi owner nhắc tới một người bằng TÊN:',
|
|
929
|
+
'• crm-contacts-list, payload { search: "Tên hoặc số" } → trả danh bạ đã lưu, có zalo_uid.',
|
|
930
|
+
' Đây là đường ĐÚNG để tìm người; get-friends CHỈ có người đã kết bạn nên thường thiếu.',
|
|
931
|
+
'• chat-conversations, payload { accountId } → danh sách hội thoại (DM + nhóm) đã đồng bộ.',
|
|
932
|
+
'• chat-messages, payload { conversationId: "<accountId>|<zalo_uid>", limit } → nội dung DM.',
|
|
933
|
+
' VD: tìm "Trần Thu Phương" → crm-contacts-list {search:"Thu Phương"} → lấy zalo_uid',
|
|
934
|
+
' → chat-messages {conversationId:"<accountId>|<zalo_uid>"} để xem đã trao đổi những gì.',
|
|
935
|
+
'KHÔNG kết luận "không tìm thấy" khi chưa gọi crm-contacts-list — bốn action trên đọc',
|
|
936
|
+
'thẳng dữ liệu đã lưu, không tốn lượt gọi Zalo và không phụ thuộc việc đã kết bạn hay chưa.',
|
|
937
|
+
'',
|
|
916
938
|
'GHI — dùng ĐÚNG action này, đừng truyền field cấu hình vào action đọc (sẽ bị từ chối):',
|
|
917
939
|
'• Lịch báo cáo: report-job-save, payload { job: { id, time, kind, groups, deliver } } —',
|
|
918
940
|
' chỉ cần id + field muốn đổi. VD đổi giờ: { job: { id: "job-x", time: "09:00" } }.',
|