Bộ tài liệu Hermes Agent · Phần 5 · Facebook & Meta Ads

Hermes Agent với Facebook, Instagram và Meta Ads

Hermes chưa có kết nối Facebook dựng sẵn. Tài liệu chỉ cách nối từng phần theo mức rủi ro: đọc số liệu quảng cáo, đăng bài Fanpage, trả lời khách — tiền và nội dung công khai luôn chờ bạn duyệt. Tài liệu nội bộ Aduca, chia sẻ cho học viên.

Cập nhật 02/10/2026⏱ 1–3 giờ (+ thời gian Meta duyệt ứng dụng)Quy trìnhTrung cấp → Nâng cao

Chọn cách nối phù hợp

CáchLàm đượcĐộ khóRủi ro
A. Không cần APIGửi ảnh chụp / file xuất từ Trình quản lý quảng cáo → agent phân tích, viết quảng cáo, viết bàiDễThấp
B. Meta Ads MCP (chính thức, beta)Hỏi số liệu quảng cáo bằng tiếng Việt, gợi ý tối ưu; tạo chiến dịch ở trạng thái tạm dừngTrung bìnhTrung bình — loại bỏ công cụ bật quảng cáo
C. Kỹ năng Graph APIBáo cáo quảng cáo theo lịch; đăng bài, hẹn giờ, trả lời bình luận Fanpage (chờ duyệt)Trung bìnhTrung bình
D. Cầu nối webhookBot trả lời inbox Messenger và bình luận 24/7 bằng agent tiếp kháchKhó — cần tên miền, duyệt ứng dụng của MetaCao nhất — nói chuyện với người lạ

Đi lần lượt A → B/C → D. Cách A làm được ngay theo Phần 3. Tài liệu dùng Graph API và Marketing API v26.0 (phát hành 29/07/2026).

Nguồn: Graph API Changelog · Graph API v26

Chuẩn bị chung: ứng dụng Meta và token tối thiểu quyền

Thứ cần cóGhi chú
Business Portfolio (business.facebook.com) có Fanpage và tài khoản quảng cáoBạn là quản trị viên
Ứng dụng Meta loại Businessdevelopers.facebook.com → My Apps → Create App → gắn vào Business Portfolio
Agent ads, content, cskhTạo theo Phần 1 Bước 9; cskh tắt quyền chạy lệnh (Phần 8)
Giới hạn chi tiêu tài khoản quảng cáoThanh toán → Giới hạn chi tiêu tài khoản. Bắt buộc trước khi nối API

Tạo người dùng hệ thống và token (cho cách B, C)

  1. Business Settings → Người dùng hệ thống → Thêm → vai trò Nhân viên (Employee), không chọn Admin.
  2. Chỉ định tài sản: tài khoản quảng cáo (quyền xem hiệu quả; thêm quyền quản lý nếu muốn agent tạm dừng chiến dịch) và Fanpage cần dùng.
  3. Bấm Tạo token → chọn ứng dụng → chọn hạn 60 ngày (Meta khuyến nghị) → tick đúng quyền cần: báo cáo ads_read; Fanpage pages_show_list, pages_read_engagement, pages_manage_posts, pages_manage_engagement.
  4. Copy token vào trình quản lý mật khẩu. Đặt nhắc lịch gia hạn trước 60 ngày.
Hai token, hai agent: agent ads chỉ giữ token quảng cáo; agent content chỉ giữ token Fanpage. Agent cskh không giữ token nào — cầu nối giữ thay. Lộ một token thì thiệt hại chỉ trong phạm vi token đó.

Nguồn: System users – tokens · Permissions

Cách B — Meta Ads MCP (chính thức, đang beta)

Meta mở máy chủ MCP chính thức tại https://mcp.facebook.com/ads (beta từ 29/04/2026) cho mọi AI Agent hỗ trợ MCP. Có 7 nhóm công cụ: báo cáo, tạo và quản lý quảng cáo, danh mục sản phẩm, tín hiệu – dataset, trợ giúp, thử nghiệm A/B, nhật ký hoạt động. Mọi thứ tạo mới đều ở trạng thái tạm dừng; bật chạy là một công cụ riêng (ads_activate_entity).

Theo tài liệu Meta: trong ứng dụng, thêm trường hợp sử dụng "Create & manage ads with ads MCP server"; token cần các quyền ads_mcp_management, ads_read, ads_management, business_management, pages_show_list, instagram_basic (thêm catalog_management nếu dùng danh mục).

Nhập mã bí mậtChạy riêng dòng này trên VPS → dán mã → Enter. Không gửi mã qua Telegram
read -rsp "Dán META_ADS_TOKEN rồi Enter (chữ sẽ không hiện): " V; echo; hermes -p ads config set META_ADS_TOKEN "$V"; unset V   # dùng chung tên cho cách B và C

Thêm vào cuối ~/.hermes/profiles/ads/config.yaml (nano ~/.hermes/profiles/ads/config.yaml):

Thêm vào config.yaml của agent adsDán vào nano
mcp_servers:
  meta-ads:
    url: "https://mcp.facebook.com/ads"
    headers:
      Authorization: "Bearer ${META_ADS_TOKEN}"   # Hermes tự lấy từ file bí mật, không ghi token vào đây
    tools:
      exclude: ["ads_activate_entity", "*delete*"]   # agent không có công cụ bật quảng cáo / xoá
Lệnh TermiusCopy cả khối → dán vào Termius → Enter
hermes -p ads mcp list          # thấy meta-ads
hermes -p ads mcp test meta-ads    # kiểm tra kết nối
hermes gateway restart
Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Dùng Meta Ads MCP: tổng hợp chi tiêu, kết quả, giá mỗi kết quả 7 ngày qua theo chiến dịch; chỉ ra 3 nhóm quảng cáo có dấu hiệu bất thường và đề xuất xử lý. Không tạo, không sửa gì.
Lưu ý của Aduca: Meta Ads MCP đang beta. Tài liệu Meta hướng dẫn gọi bằng token Bearer như trên nhưng chưa nói rõ người dùng hệ thống có được cấp quyền ads_mcp_management hay không; quyền này cần Meta duyệt ứng dụng và xác minh doanh nghiệp khi dùng cho người ngoài ứng dụng. Nếu chưa cấp được, dùng Cách C để báo cáo.

Nguồn: Ads MCP – Overview · Ads MCP – Get started · Ads MCP – Creation tools · Hermes MCP – headers ${VAR}, tools.exclude

Cách C — Kỹ năng Graph API: báo cáo quảng cáo và Fanpage

C1. Agent ads: báo cáo Meta Ads (chỉ đọc)

Nhập token quảng cáo (nếu chưa làm ở Cách B) và ID tài khoản quảng cáo:

Nhập mã bí mậtChạy riêng dòng này trên VPS → dán mã → Enter. Không gửi mã qua Telegram
read -rsp "Dán META_ADS_TOKEN rồi Enter (chữ sẽ không hiện): " V; echo; hermes -p ads config set META_ADS_TOKEN "$V"; unset V
Lệnh TermiusCopy cả khối → dán vào Termius → Enter
hermes -p ads config set META_AD_ACCOUNT act_<số tài khoản quảng cáo>
Lệnh TermiusCopy cả khối → dán vào Termius → Enter (tạo file kỹ năng)
mkdir -p ~/.hermes/profiles/ads/skills/marketing/meta-ads-bao-cao
cat > ~/.hermes/profiles/ads/skills/marketing/meta-ads-bao-cao/SKILL.md <<'EOF'
---
name: meta-ads-bao-cao
description: Lấy số liệu Meta Ads qua Marketing API v26.0, phân tích và đề xuất — chỉ đọc, được tạm dừng khi chủ duyệt.
required_environment_variables:
  - name: META_ADS_TOKEN
    prompt: Token người dùng hệ thống (quyền ads_read)
  - name: META_AD_ACCOUNT
    prompt: ID tài khoản quảng cáo dạng act_123
---
# Meta Ads – báo cáo
G=https://graph.facebook.com/v26.0 ; gửi token bằng -H "Authorization: Bearer $META_ADS_TOKEN"
- Hôm qua theo chiến dịch: curl -s "$G/$META_AD_ACCOUNT/insights?level=campaign&date_preset=yesterday&fields=campaign_name,spend,impressions,reach,clicks,ctr,cpc,cpm,actions,cost_per_action_type" -H "Authorization: Bearer $META_ADS_TOKEN"
- 7 ngày: thay date_preset=last_7d ; khoảng tuỳ chọn: time_range={"since":"YYYY-MM-DD","until":"YYYY-MM-DD"}
- Danh sách chiến dịch: curl -s "$G/$META_AD_ACCOUNT/campaigns?fields=id,name,status,effective_status,daily_budget,lifetime_budget,objective" -H "Authorization: Bearer $META_ADS_TOKEN"
- Tiền VND: daily_budget=500000 nghĩa là 500.000đ (VND không có đơn vị lẻ).
- Tạm dừng 1 chiến dịch (CHỈ khi chủ trả lời "DUYỆT TẠM DỪNG <tên>"): curl -s -X POST "$G/<campaign_id>" -H "Authorization: Bearer $META_ADS_TOKEN" -d status=PAUSED
QUY TẮC BẮT BUỘC
1. Không bao giờ bật (ACTIVE) quảng cáo, không tăng ngân sách, không tạo chiến dịch — chỉ đề xuất để chủ tự làm trong Trình quản lý quảng cáo.
2. Mọi số liệu ghi rõ khoảng ngày và đơn vị; không đoán số.
EOF

Khai báo required_environment_variables giúp Hermes chỉ đưa đúng token này vào lệnh của kỹ năng; các mã bí mật khác vẫn bị chặn.

Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Mỗi ngày 8h dùng kỹ năng meta-ads-bao-cao: báo cáo chi tiêu, kết quả, giá mỗi kết quả hôm qua theo chiến dịch, so với 7 ngày trước. Cuối báo cáo đề xuất Tăng / Giữ / Tạm dừng, chờ tôi quyết.

C2. Agent content: đăng bài Fanpage chờ duyệt

Lấy token Fanpage từ token người dùng hệ thống và lưu thẳng vào file bí mật của agent content, không hiện ra màn hình (đây là cách làm phổ biến; Meta mô tả việc lấy token Trang qua /me/accounts):

Lệnh TermiusChạy cả khối trên VPS; dán token khi được hỏi (chữ không hiện)
hermes -p content config set META_PAGE_ID <ID Fanpage>
read -rsp "Dán token người dùng hệ thống rồi Enter: " SU; echo
T=$(curl -s "https://graph.facebook.com/v26.0/<ID Fanpage>?fields=access_token" -H "Authorization: Bearer $SU" | python3 -c 'import sys,json; print(json.load(sys.stdin).get("access_token",""))')
[ -n "$T" ] && hermes -p content config set META_PAGE_TOKEN "$T" && echo "Đã lưu token Fanpage" || echo "Không lấy được token — kiểm tra quyền và ID Fanpage"
unset SU T
Lệnh TermiusCopy cả khối → dán vào Termius → Enter (tạo file kỹ năng)
mkdir -p ~/.hermes/profiles/content/skills/social-media/meta-fanpage
cat > ~/.hermes/profiles/content/skills/social-media/meta-fanpage/SKILL.md <<'EOF'
---
name: meta-fanpage
description: Đăng bài, hẹn giờ đăng, đọc và trả lời bình luận Fanpage qua Graph API v26.0 — luôn chờ chủ duyệt.
required_environment_variables:
  - name: META_PAGE_ID
    prompt: ID Fanpage
  - name: META_PAGE_TOKEN
    prompt: Page access token
---
# Fanpage qua Graph API
Dùng: G=https://graph.facebook.com/v26.0 và gửi token bằng header -H "Authorization: Bearer $META_PAGE_TOKEN".
Không đưa token vào URL, không in token ra màn hình hay tin nhắn.
- Đăng bài chữ/link: curl -s -X POST "$G/$META_PAGE_ID/feed" -H "Authorization: Bearer $META_PAGE_TOKEN" --data-urlencode "message=..." [--data-urlencode "link=..."]
- Đăng ảnh: curl -s -X POST "$G/$META_PAGE_ID/photos" -H "Authorization: Bearer $META_PAGE_TOKEN" --data-urlencode "url=<link ảnh>" --data-urlencode "caption=..."
- Hẹn giờ: thêm -d published=false -d scheduled_publish_time=<unix time>, trong khoảng 10 phút tới 30 ngày
- 10 bài gần nhất: curl -s "$G/$META_PAGE_ID/posts?fields=id,message,created_time&limit=10" -H "Authorization: Bearer $META_PAGE_TOKEN"
- Bình luận của bài: curl -s "$G/<post_id>/comments?fields=id,from,message,created_time" -H "Authorization: Bearer $META_PAGE_TOKEN"
- Trả lời bình luận: curl -s -X POST "$G/<comment_id>/comments" -H "Authorization: Bearer $META_PAGE_TOKEN" --data-urlencode "message=..."
QUY TẮC BẮT BUỘC
1. Mọi bài đăng và trả lời công khai: gửi bản nháp cho chủ trước, chỉ đăng khi chủ trả lời "DUYỆT".
2. Không xoá bài, không ẩn/xoá bình luận nếu chủ không yêu cầu rõ ràng.
3. Không bịa giá, khuyến mãi, cam kết; không dùng từ ngữ vi phạm chính sách quảng cáo.
EOF
Lệnh TermiusCopy cả khối → dán vào Termius → Enter
hermes gateway restart
Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Soạn 3 bài Fanpage giới thiệu <sản phẩm> cho tuần này, gửi tôi duyệt từng bài. Bài nào tôi trả lời "DUYỆT" thì hẹn giờ đăng lúc 20h các ngày thứ 3, 5, 7.
Hiểu đúng về "chờ duyệt": quy tắc trong kỹ năng là lời dặn — agent tuân theo nhưng không phải khoá cứng. Khoá cứng là quyền của token (không có ads_management thì không sửa được quảng cáo) và giới hạn chi tiêu của tài khoản. Vì vậy chỉ tick quyền thật sự cần.

Nguồn: Ads Insights · Currencies – VND · Pages API – Posts · Comments · Hermes Skills – required_environment_variables

Cách D — Bot trả lời inbox và bình luận Fanpage

Luồng: khách nhắn Fanpage → Meta gọi webhook (qua HTTPS) → cầu nối trên VPS kiểm tra chữ ký → hỏi agent cskh qua API nội bộ → gửi câu trả lời cho khách. Khách để lại số điện thoại → ghi vào danh sách và báo bạn qua Telegram.

Điều kiện của Meta: để bot trả lời khách thật (không chỉ người có vai trò trong ứng dụng), ứng dụng cần Advanced Access cho quyền pages_messaging: xác minh doanh nghiệp + gửi Meta duyệt ứng dụng. Trước khi được duyệt, chỉ người có vai trò trong ứng dụng nhắn thử được.

D1. Chuẩn bị

D2. Thêm đường dẫn /meta/ vào Caddy (tài khoản quản trị)

Caddyfile (sudo nano /etc/caddy/Caddyfile)Rồi chạy: sudo systemctl reload caddy
<hook.tenmien.vn> {
    handle /webhooks/* {
        reverse_proxy 127.0.0.1:8644
    }
    handle /meta/* {
        reverse_proxy 127.0.0.1:3001
    }
    handle {
        respond 404
    }
}

D3. Khai báo bí mật cho cầu nối (tài khoản hermes)

Lệnh TermiusChạy cả khối; dán App Secret và token Fanpage khi được hỏi
mkdir -p ~/.config && (umask 077; touch ~/.config/meta-bridge.env)
for K in APP_SECRET PAGE_TOKEN; do read -rsp "Dán $K rồi Enter (chữ không hiện): " V; echo; echo "$K=$V" >> ~/.config/meta-bridge.env; done; unset V
echo "PAGE_ID=<ID Fanpage>" >> ~/.config/meta-bridge.env
echo "VERIFY_TOKEN=$(openssl rand -hex 16)" >> ~/.config/meta-bridge.env
echo "GIOI_THIEU=Dạ em là trợ lý tự động của <tên shop>, nhân viên sẽ hỗ trợ thêm khi cần ạ." >> ~/.config/meta-bridge.env
grep '^API_SERVER_KEY=' ~/.hermes/profiles/cskh/.env | sed 's/^API_SERVER_KEY=/CSKH_API_KEY=/' >> ~/.config/meta-bridge.env
grep '^VERIFY_TOKEN=' ~/.config/meta-bridge.env     # copy chuỗi này cho bước D5

PAGE_TOKEN lấy giống bước C2 (dán vào đây thay vì lưu cho agent content). Có thể dùng token riêng chỉ có quyền nhắn tin và trả lời bình luận.

D4. Tạo cầu nối và chạy 24/7

Cầu nối viết bằng Python có sẵn trên Ubuntu, không cần cài thêm. Chỉ nghe ở 127.0.0.1:3001 (Caddy chuyển vào), từ chối mọi yêu cầu sai chữ ký, báo Meta "đã nhận" ngay rồi mới xử lý.

Lệnh TermiusCopy cả khối → dán vào Termius → Enter (tạo file cầu nối)
mkdir -p ~/meta-bridge && cat > ~/meta-bridge/cau_noi.py <<'EOF'
#!/usr/bin/env python3
"""Cầu nối Fanpage → Hermes (agent cskh). Aduca viết, dùng tự do.
Nhận webhook Messenger + bình luận, kiểm tra chữ ký, hỏi agent cskh qua API nội bộ, trả lời khách."""
import hashlib, hmac, json, os, re, threading, time, urllib.request
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from urllib.parse import urlparse, parse_qs

E = dict(l.strip().split('=', 1) for l in open(os.path.expanduser('~/.config/meta-bridge.env')) if '=' in l and not l.startswith('#'))
G = 'https://graph.facebook.com/v26.0'
HERMES = 'http://127.0.0.1:8642/p/cskh/v1/chat/completions'
KHACH = os.path.expanduser('~/meta-bridge/khach-de-lai-sdt.txt')
SDT = re.compile(r'(?:\+?84|0)(?:\d[\s.-]?){8,10}')
lan_cuoi = {}  # người gửi → lần nhắn gần nhất (để giới thiệu là trợ lý tự động)

def post(url, data, token, them=None):
    h = {'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token, **(them or {})}
    with urllib.request.urlopen(urllib.request.Request(url, json.dumps(data).encode(), h), timeout=90) as r:
        return json.load(r)

def hoi_cskh(phien, noi_dung):
    try:
        j = post(HERMES, {'model': 'cskh', 'messages': [{'role': 'user', 'content': noi_dung}]},
                 E['CSKH_API_KEY'], {'X-Hermes-Session-Id': phien})
        return j['choices'][0]['message']['content'].strip()
    except Exception as e:
        print('Loi goi Hermes:', e, flush=True)
        return 'Dạ shop đã nhận tin nhắn, nhân viên sẽ phản hồi anh/chị sớm nhất ạ!'

def ghi_khach(nguon, ten, noi_dung):
    if SDT.search(noi_dung):
        with open(KHACH, 'a') as f:
            f.write(time.strftime('%d/%m %H:%M') + ' | ' + nguon + ' | ' + ten + ' | ' + noi_dung[:300].replace('\n', ' ') + '\n')

def xu_ly(body):
    for entry in body.get('entry', []):
        for m in entry.get('messaging', []):
            msg = m.get('message') or {}
            if not msg.get('text') or msg.get('is_echo'):
                continue
            nguoi = m['sender']['id']
            ghi_khach('Messenger', nguoi, msg['text'])
            tra_loi = hoi_cskh('fb-' + nguoi, msg['text'])
            if time.time() - lan_cuoi.get(nguoi, 0) > 86400:
                tra_loi = E.get('GIOI_THIEU', 'Dạ em là trợ lý tự động của shop.') + '\n' + tra_loi
            lan_cuoi[nguoi] = time.time()
            try:
                post(G + '/' + E['PAGE_ID'] + '/messages', {'recipient': {'id': nguoi}, 'messaging_type': 'RESPONSE',
                     'message': {'text': tra_loi[:1900]}}, E['PAGE_TOKEN'])
            except Exception as e:
                print('Loi gui tin:', e, flush=True)
        for c in entry.get('changes', []):
            v = c.get('value', {})
            tu = v.get('from') or {}
            if c.get('field') != 'feed' or v.get('item') != 'comment' or v.get('verb') != 'add' or not tu.get('id') or tu['id'] == E['PAGE_ID']:
                continue
            ghi_khach('Bình luận', tu.get('name', ''), v.get('message', ''))
            tra_loi = hoi_cskh('cmt-' + tu['id'], 'Khách bình luận công khai: "' + v.get('message', '') +
                               '". Viết 1 câu trả lời công khai ngắn, lịch sự, mời nhắn tin riêng; không nêu giá chi tiết hay thông tin cá nhân.')
            try:
                post(G + '/' + v['comment_id'] + '/comments', {'message': tra_loi[:1000]}, E['PAGE_TOKEN'])
            except Exception as e:
                print('Loi tra loi binh luan:', e, flush=True)

class H(BaseHTTPRequestHandler):
    def do_GET(self):  # Meta kiểm tra địa chỉ webhook
        q = parse_qs(urlparse(self.path).query)
        if q.get('hub.mode') == ['subscribe'] and hmac.compare_digest(q.get('hub.verify_token', [''])[0], E['VERIFY_TOKEN']):
            self.send_response(200); self.end_headers(); self.wfile.write(q.get('hub.challenge', [''])[0].encode())
        else:
            self.send_response(403); self.end_headers()

    def do_POST(self):
        raw = self.rfile.read(int(self.headers.get('Content-Length', 0)))
        ky = 'sha256=' + hmac.new(E['APP_SECRET'].encode(), raw, hashlib.sha256).hexdigest()
        if not hmac.compare_digest(ky, self.headers.get('X-Hub-Signature-256', '')):
            self.send_response(401); self.end_headers(); return
        self.send_response(200); self.end_headers()  # báo Meta đã nhận ngay (Meta yêu cầu dưới 5 giây)
        threading.Thread(target=xu_ly, args=(json.loads(raw),), daemon=True).start()

    def log_message(self, *a):
        pass

ThreadingHTTPServer(('127.0.0.1', 3001), H).serve_forever()
EOF
Lệnh TermiusCopy cả khối → dán vào Termius → Enter
mkdir -p ~/.config/systemd/user && cat > ~/.config/systemd/user/meta-bridge.service <<'EOF'
[Unit]
Description=Cau noi Fanpage - Hermes
After=network-online.target
[Service]
ExecStart=/usr/bin/python3 %h/meta-bridge/cau_noi.py
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload && systemctl --user enable --now meta-bridge
systemctl --user status meta-bridge --no-pager     # thấy active (running) là được

D5. Khai báo webhook với Meta

  1. Ứng dụng → Webhooks → chọn đối tượng Page → Callback URL: https://<hook.tenmien.vn>/meta/webhook, Verify token: chuỗi ở bước D3 → Verify and save.
  2. Đăng ký các trường messages và feed (bình luận). Chỉ muốn bot trả lời inbox, không trả lời bình luận công khai: chỉ đăng ký messages và bỏ ,feed ở lệnh dưới.
  3. Gắn Fanpage vào ứng dụng (chạy trên VPS):
Lệnh TermiusCopy cả khối → dán vào Termius → Enter
T=$(grep '^PAGE_TOKEN=' ~/.config/meta-bridge.env | cut -d= -f2-)
curl -s -X POST "https://graph.facebook.com/v26.0/<ID Fanpage>/subscribed_apps" -H "Authorization: Bearer $T" -d subscribed_fields=messages,feed; echo; unset T   # thấy {"success":true}

D6. Báo bạn khi khách để lại số điện thoại (không tốn tiền AI)

Lệnh TermiusCopy cả khối → dán vào Termius → Enter
cat > ~/.hermes/scripts/khach-fanpage.sh <<'EOF'
#!/bin/bash
F=~/meta-bridge/khach-de-lai-sdt.txt; M=~/.hermes/scripts/.khach-fanpage.dem
[ -f "$F" ] || exit 0
n=$(wc -l < "$F"); c=$(cat "$M" 2>/dev/null || echo 0)
[ "$n" -gt "$c" ] && { echo "📞 Khách để lại số điện thoại trên Fanpage:"; tail -n $((n-c)) "$F"; }
echo "$n" > "$M"
EOF
chmod +x ~/.hermes/scripts/khach-fanpage.sh
hermes cron create "every 10m" --no-agent --script khach-fanpage.sh --deliver telegram --name "Khách Fanpage"

D7. Thử và theo dõi

Dùng tài khoản Facebook có vai trò trong ứng dụng nhắn thử Fanpage và bình luận thử một bài. Xem nhật ký: journalctl --user -u meta-bridge -n 50. Tạm tắt bot: systemctl --user stop meta-bridge.

Quy định Messenger phải tuân thủ

Nguồn: Messenger webhooks · Page webhooks – feed · Send API · Messenger Policy · Human Agent · Access levels · Hermes API Server

Instagram

Tài khoản Instagram chuyên nghiệp liên kết với Fanpage dùng được cùng cách làm qua Messenger API cho Instagram: thêm quyền instagram_basic, instagram_manage_messages, bật "Cho phép truy cập tin nhắn" trong cài đặt Instagram, đăng ký webhook đối tượng Instagram. Cầu nối cần chỉnh để xử lý sự kiện Instagram — nhờ agent Tổng đọc tài liệu Meta và đề xuất bản sửa, bạn duyệt trước khi chạy.

Báo cáo quảng cáo Instagram đã nằm trong số liệu Meta Ads (Cách B, C).

Nguồn: Messenger API for Instagram

Lỗi thường gặp

Hiện tượngCách xử lý
Lỗi (#200) / (#10) thiếu quyềnTạo lại token có đủ quyền; với khách thật cần Advanced Access (duyệt ứng dụng)
Error validating access tokenToken hết hạn (60 ngày) hoặc bị thu hồi → tạo token mới, nhập lại bằng khung đỏ
Verify and save thất bạiKiểm tra cầu nối đang chạy, Caddy có đường dẫn /meta/, VERIFY_TOKEN khớp, mở thử https://<tên miền>/meta/webhook
Khách nhắn không thấy bot trả lờiỨng dụng chưa được duyệt; journalctl --user -u meta-bridge -n 50; agent cskh có API_SERVER_KEY chưa
Bot trả lời chậmChọn model nhanh hơn cho agent cskh; rút gọn kỹ năng của cskh
Báo cáo tiền sai đơn vịTài khoản VND: số trả về là đồng; tài khoản USD: chia 100
Lỗi 613 (giới hạn tốc độ)Giảm tần suất lịch báo cáo, giãn lệnh

Tài liệu liên quan

Xem tất cả tài liệu hướng dẫn →

Học trực tiếp cùng Aduca

Muốn có đội AI Agent chạy thật cho doanh nghiệp?

Khóa Meta Ads AI Automation do Nguyễn Đức – Chủ tịch Aduca Group đào tạo trực tiếp 3 ngày: dựng AI Agent quảng cáo, nội dung, chăm sóc khách trên chính tài khoản của bạn, chọn công cụ (OpenClaw hoặc Hermes) phù hợp với đội của bạn.

Nguồn tham khảo

Thông tin kỹ thuật trong bài lấy từ các tài liệu dưới đây (đã ghi nguồn ngay dưới từng mục). Phần diễn giải, ví dụ và quy trình là của Aduca.

Lịch sử cập nhật

Miễn trừ trách nhiệm

Tài liệu này thuộc bộ tài liệu nội bộ Aduca dùng để triển khai AI Agent và giảng dạy, được chia sẻ công khai miễn phí cho mục đích học tập. Nội dung do Aduca viết mới, đối chiếu với tài liệu chính thức của Hermes Agent (Hermes v0.21.5 (24/09/2026)) và của các nền tảng liên quan tại ngày cập nhật; những chỗ là nhận định riêng của Aduca được ghi rõ.

  • Phần mềm của bên thứ ba: Hermes Agent là phần mềm mã nguồn mở (giấy phép MIT) do Nous Research phát triển. Aduca không phải đơn vị phát triển, đối tác hay đại diện của Nous Research. Telegram, Meta, Google, Zalo, TikTok, nhà cung cấp VPS và nhà cung cấp model AI là dịch vụ của bên thứ ba; lệnh, giao diện, giá và chính sách có thể thay đổi so với tài liệu.
  • Trách nhiệm của người áp dụng: bạn tự chịu trách nhiệm về VPS, tài khoản, mã bí mật, dữ liệu, chi phí phát sinh (VPS, API AI, ngân sách quảng cáo) và mọi hành động do Agent của bạn thực hiện. Đọc kỹ từng lệnh trước khi chạy, sao lưu trước khi thay đổi lớn.
  • Tuân thủ: khi Agent xử lý dữ liệu khách hàng, bạn có trách nhiệm tuân thủ điều khoản của từng nền tảng và pháp luật Việt Nam, bao gồm quy định về bảo vệ dữ liệu cá nhân. Các cách kết nối không chính thức (ví dụ Zalo cá nhân) có thể khiến tài khoản bị khoá.
  • Giới hạn trách nhiệm: trong phạm vi pháp luật cho phép, Aduca không chịu trách nhiệm cho thiệt hại trực tiếp hay gián tiếp (mất dữ liệu, lộ thông tin, khoá tài khoản, chi phí quảng cáo, gián đoạn kinh doanh…) phát sinh từ việc sử dụng tài liệu.
  • Không phải tư vấn chuyên sâu: tài liệu không thay thế đánh giá bảo mật chuyên nghiệp. Hệ thống quan trọng nên được chuyên gia rà soát riêng.
  • Không thu thập thông tin bí mật: Aduca không bao giờ yêu cầu bạn gửi token, mật khẩu, mã OTP hay file bí mật.
  • Bản quyền: © 2026 Công ty Cổ phần Giáo dục Aduca. Được trích dẫn khi ghi rõ nguồn aduca.vn. Hermes Agent, Nous Research và các nhãn hiệu nêu trên thuộc về chủ sở hữu tương ứng.