Hướng dẫn sử dụng n8n tạo workflow monitor tên miền gửi tin nhắn cảnh báo về Telegram
Ở trong bài viết trước, iNET đã hướng dẫn Quý vị cách tạo 1 app monior tên miền hoàn toàn miễn phí sử dụng Google sheet để quản lý tình trạng hoạt động của 1 danh sách website cần theo dõi và gửi cảnh báo về Email mỗi khi có website trong danh sách bị lỗi.
>>> Xem lại bài viết tại: [Tips] - Tạo App Monitor để quản lý tình trạng website với Google Sheet
Trong bài viết hôm nay iNET sẽ hướng dẫn Quý vị cách để gửi cảnh báo về tin nhắn Telegram, để đảm bảo chúng ta nhận được tin cảnh báo sớm nhất mỗi khi có website trong danh sách không hoạt động.
1. Chuẩn bị:
- Tài khoản Google (miễn phí) để tạo file google sheet chứa danh sách tên miền cần monitor.
- Tài khoản Telegram (miễn phí) để tạo nhận tin nhắn thông báo
- Tài khoản n8n Cloud hoặc tự host theo hướng dẫn (xem TẠI ĐÂY)
2. Cách làm:
- Bước 1:Tạo file Google Sheet mới => Thêm danh sách các tên miền cần theo dõi vào cột B bắt đầu từ cột B2 (B1 để đặt tiêu đề cột: DOMAIN chẳng hạn, tương tự ô C1 đặt tiêu đề cột STATUS để show trạng thái của danh sách tên miền tương ứng của cột B và ô D1 đặt tiêu đề cột là TIME để show thời gian cập nhật trạng thái.
- Bước 2: Chọn mục Extention ở menu trên => Apps Script => cửa sổ code hiện lên => xóa hết code (nếu có) => nhập đoạn script dưới đây:
function checkWebsitesStatus() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // Thay đổi tên 'Sheet1' thành tên sheet của bạn
const domains = sheet.getRange("B2:B" + sheet.getLastRow()).getValues(); // Lấy danh sách domain từ cột B
const results = [];
const timestamps = [];
const inactiveDomains = [];
domains.forEach((row, index) => {
const url = "http://" + row[0]; // Thêm http:// nếu domain không có
try {
const response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
const statusCode = response.getResponseCode(); // Lấy mã trạng thái HTTP
results.push([statusCode]);
if (statusCode >= 400) { // Kiểm tra nếu mã trạng thái là 400 trở lên
inactiveDomains.push(url); // Thêm domain không hoạt động vào danh sách
}
} catch (e) {
results.push(["Error"]); // Thêm "Error" nếu không thể truy cập website
inactiveDomains.push(url); // Thêm domain vào danh sách không hoạt động
}
const timestamp = new Date(); // Lấy thời gian hiện tại
timestamps.push([Utilities.formatDate(timestamp, "GMT+07:00", "yyyy-MM-dd'T'HH:mm:ss'Z'")]); // Định dạng ngày giờ
});
sheet.getRange(2, 3, results.length, 1).setValues(results); // Ghi kết quả vào cột C
sheet.getRange(2, 4, timestamps.length, 1).setValues(timestamps); // Ghi thời gian cập nhật vào cột D
}
function createTimeDrivenTriggers() {
// Tạo một trigger định kỳ mỗi 1 tiếng
ScriptApp.newTrigger('checkWebsitesStatus')
.timeBased()
.everyHours(1)
.create();
}
- Bước 3: Sửa thông tin 1 số chỗ trong các hàm như sau:
+ Hàm checkWebsitesStatus sửa “Sheet1” thành tên sheet của bạn
+ Hàm createTimeDrivenTriggers sửa tham số trong .everyHours (2) thành số giờ mà bạn muốn check định kỳ (ở đây để 1 nghĩa là mỗi 1 giờ sẽ thực thi script app 1 lần). Nếu muốn check theo định kỳ phút thì có thể sửa .everyHours (1) thành .everyMinutes(1).
- Bước 4: Chọn hàm createTimeDrivenTriggers và bấm nút Run để chạy hàm này nhằm set thời gian thực thi tự động => Hệ thống cảnh báo và yêu cầu quyền truy cập => Cho phép.

- Bước 5: Cấu hình trên Telegram
+ Tạo 1 con bot trên Telegram
+ Tạo 1 chanel để chuyên nhận tin nhắn từ bot và set cho bot làm quản trị viên chanel => Lưu lại Bot ID và Chat ID của chanel để sử dụng trong workflow trên n8n (Xem hướng dẫn cách tạo bot trên Telegram, cách lấy Bot ID và Chat ID nếu chưa biết: TẠI ĐÂY)

- Bước 6: Tạo workflow trên n8n
+ Tạo 1 workflow mới trên n8n với các node:
- Trigger: có thể tạo Schedule Trigger (nếu muốn thông báo theo lịch trình cố định) hoăc Google Sheet on Row Update Trigger (nếu muốn mỗi lần trên file Google sheet thực hiện kiểm tra) sẽ chạy workflow.
- Google sheet => chọn sự kiện Get row(s) in sheet để đọc dữ liệu theo từng hàng trên Google sheet (Xem thêm cách kết nối đến API Google: TẠI ĐÂY). Cấu hình giống những khung màu đỏ trong hình dưới.

- If: Nhập cấu hình như hình dưới: (Giải thích: Kiểm tra trạng thái từng dòng nếu trả về mã lớn hơn hoặc bằng 400 là tên miền không hoạt động)

- Code: Nối từ nhánh True của node If trước đó. Nhập đoạn code Javascript để gửi đến tele theo định dạng như hình:

- Telegram: Cấu hình như hình dưới. Lưu ý phần kết nối đến Bot ID và Chat ID đã lưu lại ở bước 5 phía trên:

Như vậy là xong, bạn có thể lưu lại workflow và test thử trước khi active cho nó chạy tự động!

Link tải template workflow: TẠI ĐÂY
Hãy để lại bình luận xuống dưới nếu bạn cần hỗ trợ thêm!
Chúc các bạn thành công!
————————————
Nhà Đăng Ký Tên Miền iNET
Hà Nội: Số 247 Cầu Giấy, Phường Dịch Vọng, Quận Cầu Giấy
HCM: Số 40 Hoàng Việt, Phường 4, Quận Tân Bình
Hotline: 1900 9250
Email: tenmien@inet.vn
Website: https://inet.vn