Telegram và kênh gửi/nhận thông báo tức thì

Telegram và kênh gửi/nhận thông báo tức thì

Vấn đề

Có thể bạn đã biết về ứng dụng nhắn tin Telegram, nó cho phép chúng ta gọi điện, nhắn tin qua mạng internet rất nhanh chóng mà không bị giới hạn gì ảnh hưởng đến những chức năng liên lạc cơ bản. Cá nhân mình thấy Telegram tập trung hỗ trợ vấn đề nhắn tin rất tốt. Tốc độ gửi tin nhanh và chưa bao giờ gặp tình trạng "miss" tin nhắn hay thông báo nào cả.

Ngoài gọi điện, nhắn tin trao đổi đôi bên, Telegram còn hỗ trợ trao đổi thông qua Nhóm (Group) hoặc Kênh (Channel). Group thì quá quen thuộc rồi, nơi chúng ta có thể thêm nhiều người một lúc để cùng trò truyện. Còn đối với Channel thì khác hơn một tí, nơi mọi người đăng kí theo dõi kênh để nhận tin mỗi khi Quản trị viên của kênh thực hiện hành động gửi tin nhắn.

Những tiện ích mà Channel mang lại cộng với hiệu năng ứng dụng tốt. Nếu tận dụng được Telegram để gửi những "cảnh báo" chẳng hạn như API lỗi, hệ thống bị downtime… bất kì thông tin gì mà cần được cảnh báo ngay lập tức trong hệ thống thông tin/phần mềm khi xảy ra sự cố thì quả là tuyệt vời.

Giới thiệu về Channel và Telegram BOT

Telegram cung cấp API và tài liệu cho việc tích hợp API của họ. Bạn đọc có thể xem tại Telegram APIs. Trong mục này, đáng chú ý là Telegram Bot API. Bởi vì bài viết này tôi sẽ hướng dẫn mọi người cách sử dụng BOT của Telegram để gửi tin nhắn đến Channel.

BOT trong Telegram có vai trò gần giống như một người thông thường, nó được tạo ra từ tài khoản người dùng. Khi được thêm vào Channel, BOT có thể gửi tin nhắn vào Channel thông qua API.

Mô phỏng quá trình thông báo rất đơn giản. Bạn tạo ra một Channel dưới dạng Private (kênh bí mật) phục vụ cho mục đích gửi/nhận thông báo, thêm những tài khoản muốn nhận thông báo vào và cuối cùng là thêm một chú BOT vừa tạo ở trên để phục vụ cho mục gửi tin.

Trong thực tế có nhiều trường hợp mà chúng ta mong muốn nhận được thông báo ngay lập tức. Chẳng hạn như bạn muốn nhận được thông báo khi việc gọi sang API của một bên thứ 3 bị lỗi, hay là muốn theo dõi thông báo quan trọng trong một hệ thống để kịp thời hành động nào đó… Dĩ nhiên bạn vẫn triển khai dịch vụ tracking hay logging, nhưng hãy phân biệt hai việc đó với nhận thông báo tức thì. Logging là hành động ghi chép lại những thay đổi sử dụng cho truy vết còn thông báo tức thì đòi hỏi việc nhận được thông tin quan trọng ngay lập tức.

Triển khai BOT gửi tin nhắn đến Channel

Các bước triển khai rất đơn giản. Bạn cần có một tài khoản Telegram là được.

Đầu tiên chat với @BotFather bấm vào "Bắt đầu" rồi nhập vào khung chat /newbot và làm theo hướng dẫn để hoàn thành việc tạo BOT.

Telegram BotFather

Sau khi tạo BOT thành công bạn sẽ lấy được token của BOT, hãy sao chép lại nó để lúc gửi tin nhắn sẽ cần dùng.

Telegram BOT token

Tiếp theo, Bấm vào nút để thêm mới một kênh.

Tạo kênh mới

Thêm BOT vào channel bằng cách bấm vào Tên channel > Subscribers > Add Subscribers > Thêm bot vừa tạo vào Channel.

Tiếp theo cần lấy được liên kết của kênh bằng cách từ Channel > Edit > Invite Links > Copy lại Invite Link.

Lấy Invite Link

Gửi link vừa copy vào @usernametoid_bot để xem được ID của Channel. Chúng ta cần ID của kênh để sử dụng trong API gửi tin nhắn.

Lấy ID kênh

Bây giờ đã có thể gọi API sendMessage để BOT gửi tin nhắn đến kênh.

$ curl --location --request POST 'https://api.telegram.org/bot5907053822:AAHUed6Tp_XUqnweDYc8ghuZJihf6mtG_X0/sendMessage' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chat_id": "-1001828347283",
    "text": "Hello World",
    "parse_mode": "html"
}'

{"ok":true,"result":{"message_id":3,"sender_chat":{"id":-1001828347283,"title":"2COFFEE DEMO","type":"channel"},"chat":{"id":-1001828347283,"title":"2COFFEE DEMO","type":"channel"},"date":1669134411,"text":"Hello World"}}

Ngay lập tức bạn sẽ thấy tin nhắn gửi đến kênh.

tin nhắn đầu tiên đến kênh

Bạn có thể tạo một hàm sendMessage đơn giản rồi dùng nó trong dự án của bạn.

sendMessage(token: string, chatId: string, message: string) {
  return this.http.post({
    path: `/bot${token}/sendMessage`,
    data: {
      chat_id: chatId,
      text: message,
      parse_mode: "html",
    }
  });
}

Limit

Vì là một dịch vụ nhắn tin cho nên Telegram đặt ra một số giới hạn với BOT và khi gọi API của họ. Ví dụ như không thể tạo quá 20 BOTs, tránh gửi hơn 1 tin nhắn trong vòng 1s, và tránh gửi quá 20 tin nhắn trong mỗi phút cho cùng một group/channel…

Bạn đọc có thể tham khảo thêm tại Bots FAQ hoặc Telegram Limits.

Tổng kết

Trong bài viết này tôi hy vọng mang đến cho mọi người một cách để nhận thông báo thúc đẩy hành động tức thì khi quản lý các dịch vụ internet/máy chủ… Đây chỉ là một tricks nhỏ chứ không hoàn toàn thay thế được nhu cầu theo dõi (tracking) hay ghi logs chuyên nghiệp, vì thế hãy cân nhắc sử dụng sao cho hợp lý. Ngoài Telegram ra vẫn còn một số nền tảng bạn có thể làm được tương tự như Slack, Discord…

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.
Author

Xin chào, tôi tên là Hoài - một anh Dev kể chuyện bằng cách viết ✍️ và làm sản phẩm 🚀. Với nhiều năm kinh nghiệm lập trình, tôi đã đóng góp một phần công sức cho nhiều sản phẩm mang lại giá trị cho người dùng tại nơi đang làm việc, cũng như cho chính bản thân. Sở thích của tôi là đọc, viết, nghiên cứu... Tôi tạo ra trang Blog này với sứ mệnh mang đến những bài viết chất lượng cho độc giả của 2coffee.dev.Hãy theo dõi tôi qua các kênh LinkedIn, Facebook, Instagram, Telegram.

Bạn thấy bài viết này có ích?
Không

Bình luận (2)

Avatar
Trần Huy Hoàng1 năm trước
Oh cảm ơn đã chia sẻ một cách hay
Trả lời
Avatar
Tuan Nguyen1 năm trước
Đọc các bài viết của bạn từ hồi viết về EventLoop. Cảm ơn bạn về những kiến thức đã chia sẻ. Keep it up and enjoy your coffee!
Trả lời
Avatar
Xuân Hoài Tống1 năm trước
Cảm ơn, đọc đc bình luận của bạn mình rất vui. Hy vọng bạn tiếp tục ủng hộ mình trong tương lai 😄