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ì

Tin ngắn hàng ngày dành cho bạn
  • Vừa gia hạn tên miền cho 2coffee.dev. Vậy là em nó đã 3 tuổi rồi đó mọi người. Sẵn đây nói luôn...

    Mọi người chắc cũng biết về ý nghĩa của cái tên rồi đúng không. Ấy thế mà nó lại đang dính vào "lời nguyền cà phê" bởi vì tên miền có chứa từ khoá "coffee" rất "hot", làm nhiều người hoặc công cụ tìm kiếm đánh giá sai lệch về nội dung của trang web 🥲. Nhiều lúc mình muốn tìm cách để "khai tử" cái tên này đi, thay bằng tên khác thì con đường bớt chông gai hơn.

    Tiền thân của 2coffee.dev là estacks.icu, ấy thế mà sao lại bỏ được cái tên cũ không chút đắn đo? Là vì 2coffee.dev đánh dấu sự trưởng thành trong tư duy làm sản phẩm của mình, ý là nghiêm túc hơn á. Còn stacks.icu vẫn mãi mãi là tiền thân của "Xin chào, một tách cà phê dành cho mấy ông lập trình viên đây".

    » Xem thêm
  • Privacy Guides là một dự án phi lợi nhuận nhằm cung cấp cho người dùng các hiểu biết về quyền riêng tư, đồng thời khuyến nghị những phương pháp hay công cụ để giúp đòi lại quyền riêng tư trong thế giới Internet.

    Có nhiều bài viết hay tại đây, mình lấy ví dụ 3 khái niệm hay nhầm lẫn hoặc bị đánh tráo là Quyền riêng tư (privacy), Bảo mật (security) và Ẩn danh (anonymity). Trong khi nhiều người phản đối quyền riêng tư cho rằng một người không cần quyền riêng tư nếu họ "không có gì để che giấu". "Đây là một quan niệm sai lầm nguy hiểm, vì nó tạo ra cảm giác rằng những người đòi hỏi quyền riêng tư phải là những kẻ lệch lạc, tội phạm hoặc sai trái." - Why Privacy Matters.

    » Xem thêm
  • Có một nơi rất tuyệt vời để học hoặc đang kẹt trong suy nghĩ không còn gì để học nữa thì phần bình luận ở bển Hacker News là thứ dành cho bạn.

    Y Combinator - Công ty đứng sau Hacker News tập trung vào các khoản đầu tư mạo hiểm cho các Startup tại Thung lũng Silicon, nên không ngạc nhiên khi có rất nhiều bộ óc thiên tài bình luận dạo ở trên đây. Nhưng cái dạo của họ cũng đủ cung cấp từ khoá mở ra cho chúng ta nhiều điều mới.

    Không tin ư? Chỉ cần lướt một tí, bấm bài viết nào phù hợp với thị hiếu của bạn, xem bình luận và nhớ thêm một cốc cà phê bên cạnh nhé ☕️

    » Xem thêm

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 @username_to_id_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...

Cao cấp
Hello

Tôi & khao khát "chơi chữ"

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

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.

Bình luận (2)

Nội dung bình luận...
Avatar
Trần Huy Hoàng2 năm trước
Oh cảm ơn đã chia sẻ một cách hay
Trả lời
Avatar
Tuan Nguyen2 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ống2 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 😄