Webhook là tin nhắn một ứng dụng gửi cho ứng dụng khác ngay khi có sự kiện. Tìm hiểu cách webhook hoạt động, cách xác minh và những gì sona.to gửi.
Webhook là một tin nhắn mà ứng dụng này gửi cho ứng dụng khác ngay khi có chuyện xảy ra, để ứng dụng thứ hai không phải hỏi đi hỏi lại. Bạn đưa cho ứng dụng thứ nhất một địa chỉ, và nó gửi chi tiết của từng sự kiện tới đó ngay khi sự kiện diễn ra. Bài này giải thích webhook hoạt động thế nào, cách kiểm tra một webhook có phải thật không và sona.to gửi những gì, cũng được tóm tắt trên trang Webhooks.
Webhook là gì?
Phần lớn ứng dụng chia sẻ dữ liệu theo hai cách. Với API, hệ thống của bạn hỏi: "bài đã được đăng chưa?", và lát sau hỏi lại nếu câu trả lời là chưa. Với webhook, ứng dụng chủ động báo cho bạn: khi bài được đăng, nó gửi một request tới địa chỉ bạn chọn, kèm chi tiết của bài.
Vì vậy, webhook là một HTTP request, thường là POST với body JSON, gửi tới một URL do bạn kiểm soát. URL đó có thể là máy chủ của bạn, hoặc một địa chỉ webhook do n8n, Zapier, Make, Slack hay một dịch vụ khác cung cấp để chạy một quy trình khi request tới nơi.
Webhook và API khác nhau thế nào
API dùng để hỏi và thay đổi: liệt kê bài đăng, tạo bài, đọc số liệu. Webhook dùng để được báo tin. Phần lớn tích hợp dùng cả hai: API để tạo bài và webhook để biết khi nào bài được đăng hoặc bị lỗi. Hỏi API liên tục vừa tốn request vừa vẫn biết muộn, còn webhook đến ngay khi sự kiện xảy ra.
Cách xác minh webhook
Bất kỳ ai biết địa chỉ webhook của bạn đều có thể gửi request giả tới đó, nên một webhook được làm cẩn thận sẽ có chữ ký. Bên gửi tính chữ ký từ body và một secret dùng chung, thường bằng HMAC SHA-256, rồi đặt nó vào header. Phía bạn tính cùng chữ ký đó với cùng secret và so sánh hai chữ ký bằng phép so sánh thời gian hằng định. Nếu khác nhau, request bị bỏ qua.
Đưa timestamp vào dữ liệu được ký cũng ngăn tấn công phát lại: một request đã bị bắt được không thể gửi lại sau đó, vì timestamp của nó đã quá cũ.
Webhook trong sona.to
sona.to gửi webhook cho bốn sự kiện: bài đã được đăng, bài bị lỗi, kiểm tra website đã xong và kiểm tra website bị lỗi. Bạn chọn những sự kiện mà mỗi webhook nhận, nên một bot báo tin trong chat có thể chỉ nghe các lỗi, trong khi bảng báo cáo nhận tất cả. Payload dùng cùng tên trường với API của sona.to.
Thiết lập. Trên trang API trong bảng điều khiển, dán địa chỉ, đánh dấu các sự kiện và lưu. Secret dùng để ký chỉ hiện một lần vào lúc đó, nên hãy sao chép ngay.
Chữ ký. Mỗi lần gửi đều kèm một header chứa timestamp và mã HMAC SHA-256 của timestamp cùng body, được tạo bằng secret của bạn. Hãy từ chối những request có timestamp cũ hơn vài phút.
Gửi lại. Nếu địa chỉ của bạn không hoạt động hoặc trả về lỗi, lần gửi sẽ được thử lại sau 60 giây, 5 phút và 30 phút. Mỗi lần thử đều được ghi log kèm mã trạng thái và thời lượng. Địa chỉ liên tục lỗi sẽ bị tắt, và bạn có thể bật lại sau khi sửa xong.
An toàn. Địa chỉ phải dùng https và trỏ tới một máy chủ công khai. Địa chỉ trong mạng nội bộ bị từ chối khi bạn lưu và một lần nữa lúc gửi, và các chuyển hướng không được đi theo.
Webhook với n8n, Zapier và Make
Các ứng dụng sona.to cho n8n, Zapier và Make có sẵn trigger cho đúng bốn sự kiện này, nên bạn không cần tự dán địa chỉ: chỉ cần thêm trigger và ứng dụng sẽ thiết lập webhook. Xem tự động hóa mạng xã hội với n8n, Zapier và Make.
Chi tiết đầy đủ, kèm ví dụ kiểm tra chữ ký, có trong tài liệu API.
Câu hỏi thường gặp
Webhook có giống API không?
Không. API trả lời khi bạn hỏi. Webhook gửi tin cho bạn khi có chuyện xảy ra.
Webhook của sona.to có miễn phí không?
Webhook có trong mọi gói, cùng với API.
Nếu máy chủ của tôi ngừng hoạt động thì sao?
sona.to thử lại ba lần trong khoảng nửa tiếng. Nếu việc gửi vẫn tiếp tục lỗi, webhook sẽ bị tắt cho đến khi bạn bật lại.
Sẵn sàng dùng thử?
Bắt đầu miễn phí, không cần thẻ tín dụng.