Tích hợp AI Agent vào Facebook, Zalo OA, Instagram bằng FastAPI
Việc nhúng AI Agent vào các nền tảng nhắn tin như Facebook Messenger, Zalo OA hay Instagram Direct đang trở thành tiêu chuẩn mới trong việc tự động hóa chăm sóc khách hàng. Với mô hình này, Agent không chỉ phản hồi tự động mà còn có thể thực thi hành động thực, ví dụ như tạo đơn hàng, mở ticket CSKH hoặc cập nhật CRM.
Bài viết này dành cho developer, hướng dẫn chi tiết cách dùng FastAPI để:
- Nhận và xử lý webhook từ MXH.
- Kết nối dữ liệu với AI Agent nội bộ.
- Gọi API backend (CRM, CDP, Mail, Order…).
Kiến trúc tổng thể
Dưới đây là luồng dữ liệu cơ bản khi triển khai:
Client → MXH (Messenger / Zalo / Instagram)
→ FastAPI Webhook Endpoint
→ AI Agent (Xử lý intent / sinh phản hồi)
→ Internal API (CRM, Ticket, Order, Mail…)
→ Trả kết quả về MXH
Ví dụ: người dùng gửi “Tôi muốn đặt cà phê sữa đá”
→ webhook nhận event
→ gửi text sang AI Agent
→ Agent hiểu intent “đặt hàng”
→ gọi API tạo order
→ trả về Messenger: “Đơn hàng của bạn đã được ghi nhận!”
Thiết lập môi trường FastAPI
FastAPI là framework Python hiệu năng cao, hỗ trợ async/await, rất phù hợp để triển khai server webhook real-time.
Cài đặt:
pip install fastapi uvicorn python-dotenv requests
Cấu trúc thư mục mẫu:
project/
├── main.py
├── agent/
│ └── handler.py
└── .env
File .env:
FB_VERIFY_TOKEN=your_verify_token
BIZFLY_API_KEY=your_internal_api_key
Tạo Webhook Endpoint
from fastapi import FastAPI, Request
import os, uvicorn
app = FastAPI()
@app.get("/webhook")
async def verify(request: Request):
token = os.getenv("FB_VERIFY_TOKEN")
params = request.query_params
if params.get("hub.verify_token") == token:
return int(params.get("hub.challenge"))
return {"error": "Invalid token"}
@app.post("/webhook")
async def receive(request: Request):
payload = await request.json()
print("Webhook received:", payload)
# Gọi sang module xử lý AI Agent
# agent.handler.process(payload)
return {"status": "ok"}
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000)
Đăng ký Webhook với Facebook
- Truy cập Meta for Developers.
- Tạo app → thêm sản phẩm Messenger.
- Trong tab Webhook, nhập endpoint (vd: https://api.yourdomain.com/webhook).
- Điền Verify Token trùng với
.env. - Chọn các field cần nhận:
messages, messaging_postbacks, message_reactions,...
Payload mẫu khi có tin nhắn:
{
"object": "page",
"entry": [{
"messaging": [{
"sender": { "id": "USER_ID" },
"message": { "text": "Xin chào" }
}]
}]
}
Xử lý trong code:
message = data["entry"][0]["messaging"][0]["message"]["text"]
sender = data["entry"][0]["messaging"][0]["sender"]["id"]
response = agent.process_message(message, sender)
Tích hợp với Zalo Official Account (OA)
Đăng ký webhook:
- Vào Zalo Developer Console.
- Chọn OA → mục Cấu hình Webhook → nhập URL
/webhook.
Payload mẫu:
{
"event_name": "user_send_text",
"message": { "text": "Tôi muốn đặt bàn", "msg_id": "12345" },
"user_id_by_app": "zalo_ABC123"
}
Xử lý webhook:
if data.get("event_name") == "user_send_text":
msg = data["message"]["text"]
uid = data["user_id_by_app"]
intent = agent.detect_intent(msg)
agent.trigger_action(intent, uid)
Phản hồi lại Zalo:
POST https://openapi.zalo.me/v2.0/oa/message
Authorization: Bearer {ACCESS_TOKEN}
Body:
{
"recipient": { "user_id": "zalo_ABC123" },
"message": { "text": "Đặt bàn thành công!" }
}
Tích hợp với Instagram Direct
Instagram Direct hoạt động thông qua Facebook Graph API. Các bước:
- Liên kết tài khoản Instagram Business với Page.
- Cấp quyền instagram_manage_messages.
- Đăng ký webhook messages hoặc comments.
Payload ví dụ:
{
"entry": [{
"changes": [{
"value": {
"from": { "id": "178414xxxx" },
"message": { "text": "Hi shop!" }
}
}]
}]
}
Xử lý:
msg = data["entry"][0]["changes"][0]["value"]["message"]["text"]
sender = data["entry"][0]["changes"][0]["value"]["from"]["id"]
agent.generate_reply(msg, sender)
Gọi API nội bộ để thực thi hành động
Khi Agent xác định được intent (dat_hang, mo_ticket, hoi_cham_soc...), ta có thể tự động gọi API nội bộ.
import requests
def trigger_internal_action(intent, payload):
if intent == "dat_hang":
requests.post("https://api.bizfly.vn/create-order", json=payload)
elif intent == "mo_ticket":
requests.post("https://api.bizfly.vn/support/create-ticket", json=payload)
Các hệ thống có thể tích hợp:
- BizCRM: tự động thêm lead hoặc cập nhật trạng thái khách hàng.
- BizChatAI: lưu toàn bộ log hội thoại, phân tích cảm xúc và ý định.
- BizMail: gửi email xác nhận đơn hàng hoặc thông báo hỗ trợ.
- Bizfly CDP: cập nhật hành vi người dùng đa kênh trong hồ sơ khách hàng.
Bảo mật & giám sát
Để đảm bảo an toàn và ổn định:
- Sử dụng HTTPS với SSL hợp lệ.
- Xác thực Authorization Header hoặc Signature Validation (HMAC-SHA256).
- Ghi log toàn bộ request/response (MongoDB, PostgreSQL hoặc Redis Streams).
- Dùng Prometheus, Grafana hoặc Sentry để theo dõi health check, latency và lỗi webhook.
Mở rộng theo mô hình Multi-Agent
Khi hệ thống phát triển lớn hơn, nên tách Agent thành nhiều vai trò:
| Agent | Nhiệm vụ chính |
|---|---|
| Intent Analyzer | Phân tích câu chat, xác định mục đích người dùng. |
| Action Executor | Gọi API thực thi nghiệp vụ (đặt hàng, tạo ticket, tra cứu). |
| Reply Generator | Sinh phản hồi tự nhiên bằng LLM. |
Cách tiếp cận này giúp scale dễ dàng, tách logic rõ ràng, tối ưu cho load cao.
Kết luận
Việc tích hợp AI Agent vào Facebook, Zalo OA, Instagram bằng FastAPI không chỉ giúp phản hồi tự động mà còn là nền tảng cho các AI-driven workflows toàn diện trong doanh nghiệp. FastAPI đảm bảo tốc độ, bảo mật và khả năng mở rộng cao rất phù hợp cho hệ thống muốn đồng bộ hội thoại đa kênh với nền tảng nội bộ như BizCRM, BizChatAI, BizMail, Bizfly CDP.
Nguồn tham khảo: https://bizfly.vn/techblog/tich-hop-ai-agent-vao-facebook-zalo-oa-instagram-bang-fastapi.html
All rights reserved