Hướng dẫn gửi tin nhắn đến dịch vụ OA thông qua EzyOA và Chrome extension EzyConnector
Back to ezyoaEzyOA cho phép quản trị viên gửi tin nhắn đến người dùng của dịch vụ Official Account ngay trên trang quản trị. Với các trường hợp API chính thức không gửi được, hệ thống có thể chuyển những người nhận thất bại sang Chrome extension EzyConnector để thao tác trực tiếp trên giao diện quản trị OA.
Cơ chế này hiện được triển khai cho Zalo Official Account.
Cơ chế hoạt động
Khi bật tùy chọn gửi qua extension, EzyOA không chuyển toàn bộ tin nhắn trực tiếp sang Chrome ngay lập tức. Quá trình thực tế gồm hai giai đoạn:
sequenceDiagram
participant A as Quản trị viên
participant O as EzyOA
participant P as API của OA
participant C as EzyConnector
participant W as Giao diện quản trị OA
A->>O: Gửi danh sách người nhận
O->>P: Thử gửi qua API chính thức
P-->>O: Kết quả thành công và thất bại
loop Từng người nhận thất bại
O->>C: Gửi workflow qua socket
C->>W: Tìm người nhận và mở hội thoại
C->>W: Upload ảnh nếu có
C->>W: Nhập nội dung và nhấn Enter
W-->>C: Kết quả thao tác
C-->>O: Thành công hoặc lỗi
end
O-->>A: Hiển thị tiến trình và danh sách chưa gửi được
Cách làm này giúp ưu tiên API chính thức. Extension chỉ đóng vai trò dự phòng cho những người nhận mà API không xử lý thành công.
Điều kiện cần chuẩn bị
Trước khi gửi tin, cần bảo đảm các thành phần sau đã sẵn sàng:
- Dịch vụ Zalo OA đã được thêm và kích hoạt trong EzyOA.
- EzyChat và socket application đang hoạt động vì EzyConnector sử dụng kết nối socket để nhận nhiệm vụ.
- EzyConnector đã được cài trên Chrome.
- Extension đã đăng nhập vào đúng hệ thống EzyPlatform.
- Trạng thái kết nối của extension là
connected. - Quản trị viên đã đăng nhập giao diện quản trị Zalo OA trên cùng trình duyệt.
- Tài khoản đang đăng nhập Zalo OA có quyền gửi tin nhắn.
- Chrome cho phép extension truy cập trang
https://oa.zalo.me/.
EzyConnector đăng nhập vào hệ thống bằng địa chỉ trang quản trị, tài khoản và mật khẩu của quản trị viên. Sau khi lấy được access token, extension mở kết nối đến EzyChat để chờ workflow.

Workflow được định tuyến theo quản trị viên đang thực hiện thao tác. Vì vậy extension phải đăng nhập bằng chính tài khoản quản trị đang gửi tin trên EzyOA.
Chuẩn bị giao diện Zalo OA
Trước khi gửi qua extension:
- Mở Chrome đang cài EzyConnector.
- Đăng nhập vào Zalo OA.
- Truy cập giao diện chat tại:
https://oa.zalo.me/chat
- Chọn đúng OA cần gửi tin nếu tài khoản quản lý nhiều OA.
- Giữ phiên đăng nhập hoạt động trong suốt quá trình gửi.
EzyConnector có thể tự tìm hoặc mở tab phù hợp, nhưng đăng nhập trước giúp tránh workflow dừng lại ở màn hình đăng nhập hoặc chọn tài khoản.
Gửi tin nhắn từ EzyOA
Trong trang quản trị EzyPlatform:
- Mở phần quản lý EzyOA.
- Chọn dịch vụ Zalo OA cần sử dụng.
- Đi đến trang chi tiết dịch vụ.
- Tìm khu vực Gửi tin nhắn.
- Nhập danh sách mã người nhận.
- Nhập nội dung tin nhắn.
- Chọn ảnh nếu cần.
- Chọn phạm vi gửi.
- Đánh dấu Gửi qua trình mở rộng.
- Nhấn Gửi.
Danh sách người nhận
Trường Danh sách mã người nhận chấp nhận nhiều mã, phân tách bằng:
- Dấu phẩy.
- Dấu xuống dòng.
- Kết hợp dấu phẩy và xuống dòng.
Ví dụ:
843412345678 849012345678 849876543210
Mỗi giá trị phải là định danh mà giao diện chat của OA có thể dùng để tìm người nhận. Với luồng Zalo OA hiện tại, extension nhập giá trị này vào ô tìm kiếm hội thoại.
Nếu không chọn gửi cho tất cả người dùng, danh sách người nhận là bắt buộc.
Nội dung tin nhắn
Nội dung văn bản không được để trống. Khi chuyển sang extension, EzyOA bổ sung thời gian gửi vào cuối nội dung, giúp phân biệt các lần gửi và hạn chế việc gửi nhiều nội dung hoàn toàn giống nhau.
Ví dụ nội dung trên giao diện:
Xin chào, đơn hàng của bạn đã được bàn giao cho đơn vị vận chuyển.
Nội dung được extension gửi có dạng tương đương:
Xin chào, đơn hàng của bạn đã được bàn giao cho đơn vị vận chuyển. 04/10/2026 10:30:15
Định dạng thời gian cụ thể phụ thuộc vào cấu hình hiển thị của trang quản trị.
Gửi kèm ảnh
Có thể chọn một media từ thư viện của hệ thống. Khi extension xử lý người nhận thất bại, EzyOA chuyển địa chỉ ảnh cho EzyConnector.
Extension sẽ:
- Tải ảnh từ URL.
- Mở chức năng gửi ảnh trên giao diện OA.
- Gán ảnh vào file input.
- Chờ quá trình upload.
- Nhập và gửi nội dung văn bản.
URL ảnh cần truy cập được từ máy đang chạy Chrome. Nên sử dụng HTTPS. Mỗi tệp không nên vượt quá giới hạn 10 MiB của extension.
Gửi cho tất cả tài khoản OA
Khi bật Gửi tới tất cả tài khoản OA, EzyOA đọc danh sách người dùng đã lưu của dịch vụ và thử gửi lần lượt.
Đây là quá trình gửi tuần tự, phù hợp với vận hành hoặc một nhóm người nhận có quy mô vừa phải. Nó không phải hệ thống chiến dịch phân tán, lập lịch gửi hoặc broadcast tốc độ cao.
Gửi đến các tài khoản OA liên kết với người dùng
Tùy chọn này cho phép mở rộng phạm vi gửi sang các tài khoản OA khác đã được liên kết với cùng người dùng trong hệ thống.
Chỉ nên bật khi dữ liệu liên kết tài khoản đã được quản lý chính xác, tránh gửi lặp đến cùng một người qua nhiều định danh.
Extension xử lý một người nhận như thế nào?
Với mỗi người nhận không gửi được qua API, EzyOA tạo một workflow cho EzyConnector. Extension thực hiện lần lượt:
- Tìm tab Zalo OA đang mở hoặc mở trang chat.
- Chuyển tab thành tab đang hoạt động.
- Chờ giao diện sẵn sàng.
- Điền mã người nhận vào ô tìm kiếm.
- Chờ danh sách kết quả ổn định.
- Phát hiện thông báo không tìm thấy người nhận nếu có.
- Chọn hội thoại phù hợp.
- Kiểm tra quyền tương tác với người nhận.
- Chờ ô nhập tin nhắn xuất hiện.
- Upload ảnh nếu yêu cầu có media.
- Điền nội dung tin nhắn.
- Nhấn Enter để gửi.
- Trả kết quả về EzyOA.
Giữa các thao tác có những khoảng nghỉ ngẫu nhiên ngắn. Điều này giúp giao diện có thời gian cập nhật và tránh thực hiện chuỗi thao tác quá nhanh so với khả năng xử lý của trang.
Mỗi workflow chờ phản hồi tối đa khoảng 30 giây. Nếu trình duyệt, kết nối socket hoặc giao diện OA phản hồi quá chậm, lần gửi có thể bị đánh dấu thất bại.
Theo dõi quá trình gửi
Khi extension bắt đầu xử lý, EzyOA hiển thị:
- Tổng số người nhận cần gửi qua extension.
- Số người nhận đã xử lý.
- Số lượt thành công.
- Số lượt thất bại.
- Thời gian còn lại trước lượt gửi tiếp theo.
- Nút hủy quá trình gửi.
EzyOA gửi lần lượt từng người nhận, với khoảng nghỉ ngẫu nhiên khoảng 1–2 giây giữa các lượt. Sau mỗi nhóm 20 người nhận, hệ thống thêm một khoảng nghỉ ngắn.
Trong khi quá trình đang diễn ra:
- Không đóng trang EzyOA.
- Không tải lại trang.
- Không đăng xuất khỏi Zalo OA.
- Hạn chế thao tác thủ công trên tab Zalo OA.
- Không đóng Chrome hoặc tắt EzyConnector.
Trang quản trị sẽ cảnh báo nếu bạn cố rời trang trong lúc extension đang gửi.
Hủy quá trình gửi
Có thể nhấn Hủy trên khung tiến trình.
Thao tác hủy không thu hồi các tin đã gửi thành công. Nó chỉ ngăn EzyOA tiếp tục xử lý những người nhận còn lại sau lượt hiện tại.
Khi kết thúc, những người nhận sau đây được đưa vào danh sách chưa gửi được:
- Người nhận đã xử lý nhưng gặp lỗi.
- Người nhận chưa được xử lý do quá trình bị hủy.
Có thể sao chép danh sách này để kiểm tra và gửi lại sau.
Các lỗi thường gặp
Extension không kết nối
Biểu hiện:
- Yêu cầu chờ lâu rồi thất bại.
- Không có thao tác nào diễn ra trên Chrome.
Cách xử lý:
- Mở popup EzyConnector.
- Kiểm tra trạng thái
connected. - Đăng nhập lại extension.
- Kiểm tra EzyChat socket application.
- Kiểm tra URL quản trị và WebSocket URL.
- Xác nhận extension đăng nhập bằng đúng tài khoản quản trị đang gửi tin.
Không tìm thấy người nhận
Extension dừng workflow khi giao diện OA hiển thị thông báo không có kết quả.
Cần kiểm tra:
- Mã người nhận có chính xác không.
- Mã có thuộc đúng OA đang mở không.
- Người dùng có tồn tại trong dữ liệu EzyOA không.
- Giao diện Zalo OA có tìm được mã đó khi thao tác thủ công không.
Người nhận đã hết thời hạn tương tác
Zalo OA có thể không cho gửi tin nếu người dùng chưa từng tương tác hoặc lần tương tác gần nhất đã quá thời hạn cho phép.
Trong trường hợp này, extension phát hiện thông báo hạn chế trên giao diện và trả lỗi về EzyOA. Việc dùng extension không bỏ qua được chính sách tương tác của nền tảng.
Phiên đăng nhập Zalo OA hết hạn
Nếu tab OA chuyển về màn hình đăng nhập, extension sẽ không tìm thấy ô tìm kiếm hoặc ô nhập tin nhắn.
Hãy đăng nhập lại Zalo OA, mở giao diện chat rồi gửi lại những người nhận thất bại.
Giao diện OA thay đổi
Extension thao tác bằng các phần tử trên giao diện web. Nếu nhà cung cấp thay đổi:
- Ô tìm kiếm.
- Danh sách kết quả.
- Ô nhập tin nhắn.
- Nút chọn ảnh.
- Nội dung thông báo lỗi.
workflow có thể không tìm thấy phần tử tương ứng. Khi thao tác thủ công vẫn hoạt động nhưng extension liên tục báo lỗi, cần kiểm tra phiên bản EzyOA/EzyConnector hoặc cập nhật bộ nhận diện giao diện.
Ảnh không tải được
Nguyên nhân thường gặp:
- URL ảnh không sử dụng HTTPS.
- URL yêu cầu đăng nhập hoặc cookie riêng.
- Máy chạy Chrome không truy cập được URL.
- Tệp quá lớn.
- Định dạng tệp không được giao diện OA chấp nhận.
Nên thử mở trực tiếp URL ảnh trong một tab ẩn danh để xác nhận ảnh có thể truy cập công khai.
API gửi được nhưng extension không chạy
Đây là hành vi bình thường. Khi bật gửi qua extension, EzyOA chỉ chuyển những người nhận thất bại ở bước API sang EzyConnector. Người nhận đã được gửi thành công qua API sẽ không được gửi lại bằng extension.
Khuyến nghị vận hành an toàn
EzyConnector có khả năng thao tác trên các website mà quản trị viên đang đăng nhập. Vì vậy cần coi extension là một thành phần có quyền cao.
Nên áp dụng các nguyên tắc sau:
- Chỉ cài extension từ nguồn tin cậy.
- Dùng tài khoản riêng cho nhân viên được phép gửi tin.
- Không chia sẻ tài khoản quản trị giữa nhiều người.
- Chỉ cấp quyền quản lý OA cho người thực sự cần.
- Luôn sử dụng HTTPS và WSS ngoài môi trường phát triển.
- Không đưa access token hoặc mật khẩu vào log.
- Kiểm tra một nhóm người nhận nhỏ trước khi gửi số lượng lớn.
- Giữ nội dung đúng chính sách của nền tảng OA.
- Theo dõi danh sách gửi thất bại thay vì gửi lại toàn bộ danh sách.
- Không thao tác đồng thời trên tab OA trong khi workflow đang chạy.
Quy trình kiểm tra đề xuất
Trước khi sử dụng trong vận hành thực tế, nên kiểm tra theo thứ tự:
- Gửi một tin nhắn văn bản tới một tài khoản thử nghiệm.
- Kiểm tra tin có được gửi qua API hay không.
- Dùng một trường hợp API không gửi được để kiểm tra luồng extension.
- Thử gửi tin kèm một ảnh nhỏ.
- Kiểm tra trường hợp sai mã người nhận.
- Kiểm tra trường hợp hết thời hạn tương tác.
- Gửi thử cho một nhóm nhỏ từ 3–5 người.
- Kiểm tra số thành công, số thất bại và danh sách chưa gửi được.
- Thử hủy giữa chừng để xác nhận hệ thống giữ lại đúng danh sách chưa xử lý.
Giới hạn cần lưu ý
Cơ chế gửi qua Chrome extension phụ thuộc vào:
- Máy tính của quản trị viên đang hoạt động.
- Chrome đang mở.
- EzyConnector đang kết nối.
- Phiên đăng nhập OA còn hiệu lực.
- Cấu trúc giao diện web của nhà cung cấp chưa thay đổi.
- Chính sách tương tác và gửi tin của nền tảng.
- Chất lượng kết nối giữa backend, socket application và extension.
Do đó, extension phù hợp làm phương án hỗ trợ vận hành hoặc dự phòng cho API. Với nhu cầu gửi ổn định, số lượng lớn hoặc chạy không cần máy người dùng, nên ưu tiên API chính thức và một hệ thống hàng đợi gửi tin chuyên dụng.
Kết luận
EzyOA và EzyConnector tạo thành một quy trình gửi tin hai lớp: API chính thức được ưu tiên, còn Chrome extension xử lý các trường hợp API không gửi được bằng cách thao tác trực tiếp trên giao diện OA.
Để quá trình hoạt động ổn định, quản trị viên cần giữ extension kết nối, đăng nhập đúng tài khoản OA, không đóng trang trong lúc gửi và kiểm tra kỹ danh sách người nhận thất bại. Extension không vượt qua các giới hạn của nền tảng; nó chỉ tự động hóa những thao tác mà quản trị viên được phép thực hiện trên giao diện OA.