Kinh doanh trực tuyến đòi hỏi nhiều ứng dụng web của bạn phải duy trì giao tiếp thường xuyên. Cần phải tích hợp tất cả các thực thể khác nhau này hệ thống thanh toán, ngân hàng, phần mềm quản lý hàng tồn kho , hệ thống quản lý quan hệ khách hàng (CRM) và nhiều hơn nữa để chúng có thể chia sẻ dữ liệu và thực hiện hành động bất cứ khi nào sự kiện kích hoạt xảy ra.
Webhooks làm cho quy trình làm việc đầu cuối này trở nên liền mạch. Chúng đẩy thông tin qua lại bằng các thông báo tự động, đơn giản và an toàn. Sau đây là lý do tại sao webhooks là phương pháp đáng tin cậy để thực hiện các chức năng công nghệ internet (IT), lý do tại sao chúng cần thiết và khi nào chúng hữu ích nhất.
I. Webhooks là gì?
Webhooks là các dịch vụ web chuyên biệt kết nối các ứng dụng. Các dịch vụ này tự động gửi dữ liệu qua web từ ứng dụng này sang ứng dụng khác bất cứ khi nào một sự kiện cụ thể xảy ra.
Webhook cho phép các ứng dụng web nói chung một ngôn ngữ để chúng có thể thực hiện các yêu cầu HTTP cần thiết (yêu cầu từ trình duyệt web đến máy chủ để lấy nội dung) và chia sẻ dữ liệu mới theo thời gian thực. Thay vì liên tục kiểm tra các bản cập nhật, webhook cho phép ứng dụng tự động gửi thông tin đến ứng dụng khác khi có sự cố xảy ra.
Bạn có thể sử dụng tích hợp webhook cho nhiều hoạt động kinh doanh thương mại điện tử khác nhau , bao gồm:
- Cập nhật hàng tồn kho: Khi lượng hàng tồn kho của sản phẩm đạt đến mức cụ thể, sự kiện này sẽ kích hoạt tin nhắn thông báo tới nhà cung cấp.
- Xác nhận thanh toán: Khi hành động kích hoạt là thanh toán thành công, bộ phận kế toán và hỗ trợ khách hàng sẽ nhận được thông báo.
- Khách hàng trả lại: Webhooks có thể cập nhật dữ liệu hàng tồn kho và kích hoạt quy trình hoàn tiền.
- Tạo khách hàng tiềm năng: Khi một nhân viên thêm khách hàng tiềm năng mới vào nền tảng tiếp thị, webhook có thể gửi thông tin về khách hàng tiềm năng đó đến hệ thống quản lý quan hệ khách hàng (CRM) , tự động tạo hồ sơ khách hàng tiềm năng mới.
- Hỗ trợ khách hàng: Hệ thống hỗ trợ khách hàng có thể sử dụng webhooks để nhận thông báo về các cuộc gọi đến, lấy dữ liệu khách hàng dựa trên ID người gọi, chuyển cuộc gọi đến các tổng đài viên thích hợp hoặc kích hoạt khảo sát sau cuộc gọi hoặc hành động theo dõi.
Webhooks hoạt động như thế nào?
Về mặt kỹ thuật, webhooks là các triển khai đặc biệt của cái gọi là HTTP push API hay push API. Đây là cấu hình cho phép giao tiếp dựa trên push giữa các ứng dụng web và máy chủ. Webhooks là các lệnh gọi lại HTTP do người dùng xác định, truyền thông tin đến điểm cuối nhận, được gọi là máy khách. Máy khách cũng được gọi là hệ thống đích hoặc ứng dụng nhận.
Khi một sự kiện kích hoạt xảy ra, hệ thống khởi tạo sẽ gửi một thông báo tự động webhook qua HTTP. Trọng tâm của chức năng này là một trường URL được gọi là URL gọi lại. Hãy nghĩ về nó giống như địa chỉ hộp thư bưu điện. Dữ liệu tin nhắn di chuyển dưới dạng yêu cầu gửi, mà webhook đẩy ra các ứng dụng khác bằng URL gọi lại cụ thể.
Thay vì yêu cầu, chờ đợi và kiểm tra dữ liệu được yêu cầu, máy khách ứng dụng hoặc dịch vụ mục tiêu nhận được dữ liệu - sẽ tự động nhận được thông báo bất cứ khi nào dữ liệu thay đổi.
Để webhook hoạt động, bạn cần lập trình cho máy khách xử lý mã đến và dữ liệu thời gian thực. Webhook thường sử dụng JSON hoặc XML làm mã trao đổi định dạng dữ liệu, mặc dù JSON đã trở thành tiêu chuẩn phổ biến hơn.
II. Các thuật ngữ liên quan đến Webhook
Sau khi qua phần khái niệm về Webhook, bạn cần tìm hiểu các thuật ngữ liên quan đến Webhook để có thể ứng dụng được tính năng này một cách tốt nhất.
1. Consume một Webhook
Đầu tiên, bạn phải cho nhà cung cấp Webhook một URL để gửi yêu cầu đến. Thông thường việc này được thực hiện qua một panel backend hay một API. Điều này cũng có nghĩa là bạn cần lập một URL trong ứng dụng của mình để truy cập từ public web.
Phần lớn các Webhook sẽ POST dữ liệu cho bạn theo một trong hai cách: dưới dạng JSON hoặc XML, ngoài ra dữ liệu cũng có thể ở dạng biểu mẫu. Nhà cung cấp sẽ cho biết cách họ cung cấp, hoặc bạn có thể tùy chọn. Thường thì các web framework sẽ tự động làm các công việc này cho bạn.
2. Debug một Webhook
Việc debug một Webhook có thể tương đối phức tạp, vì cơ chế của Webhook là không đồng bộ. Vì vậy, bạn phải trigger chúng và chờ đợi để nhận được phản hồi. Và sau đây tôi sẽ chia sẻ cách để có thể debug webhook dễ dàng hơn nếu:
- Hiểu rõ những gì Webhook cung cấp, bạn có thể sử dụng các công cụ như RequestBin để thu thập request của Webhook.
- Giả lập các request bằng các công cụ như cURL hay Postman.
- Kiểm tra code trên máy của bạn (có thể sử dụng ngrok).
- Theo dõi toàn bộ flow với Runscope hay các công cụ tương tự.
3. Securing một Webhook
Khi webhook cung cấp dữ liệu đến các URL có sẵn công khai, có nguy cơ người khác tìm thấy URL đó rồi cung cấp các dữ liệu sai. Để ngăn chặn việc này, bạn có thể sử dụng một số kỹ thuật. Điều dễ làm nhất (và nên làm trước tiên) là buộc các kết nối đến phải là TLS (https). Sau đó, bạn có thể tham khảo thêm các bước sau để tiếp tục bảo mật kết nối của mình:
- Cách đầu tiên, và cũng được hỗ trợ nhiều nhất, là thêm token vào URL với vai trò như một nhận dạng duy nhất. Lấy ví dụ như ?auth=TK
- Thứ hai, bạn có thể triển khai Basic Auth. Cách này cũng được hỗ trợ rộng rãi, và rất đơn giản để thực hiện.
- Hai giải pháp đầu tiên có thể ngăn chặn hầu hết các cuộc tấn công. Tuy nhiên, nhược điểm chung là phải gửi token cùng với yêu cầu. Vì vậy, giải pháp thứ ba là yêu cầu nhà cung cấp sign mỗi request gửi tới bạn rồi xác minh chúng. Dù vậy, nhược điểm của cách này là yêu cầu nhà cung cấp triển khai request signing. Nếu nó không có sẵn, thì cách này hoàn toàn không thể được sử dụng.
4. Lưu ý quan trọng khi tạo webhook consumer
Cuối cùng, có một số điều cần lưu ý khi tạo webhook consumer như sau:
- Webhook cung cấp dữ liệu đến ứng dụng của bạn và có thể “đường ai nấy đi” sau khi tạo request. Điều này đồng nghĩa với việc mất dữ liệu nếu ứng dụng của bạn gặp lỗi. Tuy nhiên, nhiều webhook sẽ để ý đến các phản hồi và gửi lại nó nếu ứng dụng gặp lỗi. Nếu ứng dụng của bạn đã xử lý yêu cầu nhưng vẫn gửi lỗi, có thể đã xuất hiện dữ liệu trùng lặp trong ứng dụng. Do đó, việc hiểu cách nhà cung cấp webhook xử lý các phản hồi sẽ giúp bạn chuẩn bị tốt hơn nếu xảy ra lỗi ứng dụng.
- Webhook có thể tạo ra rất nhiều request. Việc nhà cung cấp có quá nhiều event có thể dẫn đến DDoS (Tấn công từ chối dịch vụ). Vì vậy, hãy đảm bảo ứng dụng của bạn có thể xử lý quy mô webhook trong dự tính của bạn.
III. Ví dụ về Webhook
Webhooks có thể giúp cải thiện tốc độ vận chuyển và giảm thiểu sai sót của con người khi thực hiện đơn hàng trực tuyến .
Ví dụ, giả sử bạn có một cửa hàng quần áo trực tuyến và sử dụng bộ xử lý thanh toán. Một khách hàng tạo đơn hàng, kích hoạt webhook, mà hệ thống của nhà cung cấp dịch vụ vận chuyển nhận được tại URL duy nhất được xác định trước. Dữ liệu của webhook hoặc tải trọng bao gồm các chi tiết đơn hàng như địa chỉ giao hàng, mục sản phẩm, số tiền thanh toán và các thông tin liên quan khác.
Khi nhận được yêu cầu gửi đến, hệ thống của nhà cung cấp dịch vụ vận chuyển sẽ thực hiện một hành động cụ thể, trong trường hợp này là tạo nhãn vận chuyển, tự động in ngay khi giao dịch hoàn tất.
IV. Webhooks so với API: Sự khác biệt là gì?
Mọi người thường nhầm lẫn webhook với giao diện lập trình ứng dụng (API), một giao thức cho phép bạn truy xuất dữ liệu và trao đổi chức năng giữa các ứng dụng phần mềm và dịch vụ trực tuyến. Mặc dù chúng có chung chức năng, nhưng có sự khác biệt đáng kể giữa webhook và API:
API | Webhooks | |
Mục đích | Kết nối các hệ thống khác nhau. Các nhà phát triển cắm API (có hàng nghìn API) vào ứng dụng của họ để thêm bất kỳ chức năng nào họ cần | Các thông báo tự động được đẩy sau một sự kiện kích hoạt |
Loại giao tiếp | Giao tiếp hai chiều | Giao tiếp một chiều do sự kiện kích hoạt |
Luồng dữ liệu | Hoạt động theo đúng chuẩn luồng dữ liệu thông thường | Giao tiếp theo sự kiện, thời gian thực độc đáo |
Độ phức tạp | Phức tạp hơn, phải sửa đổi cả hệ thống nguồn và hệ thống đích trong chu kỳ yêu cầu-phản hồi của chúng | Dễ chỉnh sửa trên sự kiện kích hoạt |
Mặc dù chúng là những cơ chế riêng biệt, webhook và API có thể hoạt động cùng nhau. Ví dụ, một ứng dụng dựa trên vị trí có thể sử dụng webhook để thông báo cho máy chủ khi vị trí của người dùng thay đổi. Sau đó, máy chủ có thể sử dụng API Google Maps để tổng hợp danh sách các địa điểm quan tâm gần đó dựa trên vị trí mới.
FAQ - Giải đáp thắc mắc liên quan đến Webhooks
1. Sự khác biệt giữa API và webhooks là gì?
API và webhook là cơ chế kết nối các ứng dụng để chúng có thể giao tiếp và chia sẻ dữ liệu, nhưng chúng hoạt động khác nhau. API cho phép giao tiếp hai chiều, trong khi webhook kích hoạt giao tiếp một chiều khi sự kiện xảy ra.
2. Khi nào bạn nên sử dụng webhooks?
Webhooks có thể là giải pháp nhẹ cho các tình huống mà bạn cần kết nối nhiều ứng dụng và dịch vụ khác nhau theo thời gian thực, giải pháp một chiều để gửi dữ liệu (so với giao tiếp hai chiều) là đủ và hiệu quả xử lý rất quan trọng vì webhooks sẽ không làm tăng tải xử lý của máy chủ web.
3. Làm thế nào để thêm webhooks?
Để thêm webhook, hãy vào phần cài đặt của ứng dụng sẽ đẩy dữ liệu. Cấu hình các sự kiện cụ thể sẽ kích hoạt yêu cầu webhook và thêm URL gọi lại duy nhất. Sau đó, hãy vào phần cài đặt của ứng dụng sẽ nhận dữ liệu. Tại đó, bạn sẽ thêm URL webhook để ứng dụng có thể nhận dữ liệu. Các nền tảng như Zapier và Make cung cấp các công cụ tích hợp để thiết lập điểm cuối webhook, cấu hình trình kích hoạt và các cài đặt liên quan khác.