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
  • Đợt trước có nhắc đến openai/codex - một dạng agent nhưng chạy trong Terminal rất tiện lợi đến từ nhà OpenAI, đặc biệt đây là mã nguồn mở và đến nay họ đã hỗ trợ thêm các nhà cung cấp khác thay vì chỉ sử dụng model chatgpt như trước.

    Mới đây Anthropic cũng đã giới thiệu Claude Code gần như Codex, chỉ có điều không phải là mã nguồn mở và buộc phải sử dụng API của họ. Vì không có tiền trải nghiệm nên chỉ nghe nói dân trình khen nó quá trời, có khi còn bá hơn cả Cursor. Đổi lại là nguy cơ cháy ví bất kỳ lúc nào 😨

    » Xem thêm
  • Từ lâu rồi suy nghĩ làm thế nào để tăng sự hiện diện thương hiệu, cũng như người dùng cho blog. Nghĩ đi nghĩ lại thì chỉ có cách chia sẻ lên mạng xã hội hoặc trông chờ họ tìm kiếm, cho đến khi...

    In cái áo này được cái tắc đường khỏi phải lăn tăn, càng đông càng vui vì hàng trăm con mắt nhìn thấy cơ mà 🤓

    (Có tác dụng thật nha 🤭)

    » Xem thêm
  • Một vòng của sự phát triển nhiều dự án khá là thú vị. Tóm tắt lại trong 3 bước: Thấy một cái gì đó phức tạp -> Làm cho nó đơn giản đi -> Thêm thắt tính năng cho đến khi nó phức tạp... -> Quay trở lại vòng lặp mới.

    Tại sao lại như vậy? Để mình lấy 2 ví dụ cho các bạn thấy.

    Markdown ra đời với mục tiêu tạo ra một định dạng văn bản thô "dễ viết, dễ đọc, dễ dàng chuyển thành một dạng gì đó như HTML". Vì thời đó chẳng ai đủ kiên nhẫn mà vừa ngồi viết vừa thêm định dạng cho văn bản hiển thị ở trên web như thế nào. Ấy vậy mà giờ đây người ta đang "nhồi nhét" hoặc tạo ra các biến thể dựa trên markdown để bổ sung thêm nhiều định dạng mới đến mức... chẳng nhớ nổi hết cú pháp.

    React cũng là một ví dụ. Từ thời PHP, việc khát khao tạo ra một cái gì đó tách biệt hẳn giao diện người dùng và phần xử lý logic chính của ứng dụng thành 2 phần riêng biệt cho dễ đọc, dễ viết. Kết quả là các thư viện UI/UX phát triển rất mạnh mẽ, mang lại khả năng tương tác với người dùng rất tốt, còn phần logic ứng dụng thì nằm ở một máy chủ riêng biệt. Bộ đôi Front-end, Back-end cũng từ đấy mà thịnh hành, không thể thiếu anh bồi bàn REST API. Ấy vậy mà giờ đây React trông cũng không khác biệt gì so với PHP là mấy, kéo theo là cả Vue, Svelte... lại cùng quy tất cả về một mối.

    Cơ mà không phải vòng lặp là xấu, ngược lại vòng lặp này mang tính tiến hoá nhiều hơn là "cải lùi". Nhiều khi lại tạo ra được cái hay hơi cái cũ thế là người ta lại dựa trên cái hay đó để tiếp tục lặp. Nói cách khác là chắc lọc tinh hoa từng tí một tí một á 😁

    » Xem thêm

Vấn đề

Telegram - một ứng dụng nhắn tin phổ biến rất nhiều người biết đến. Cá nhân sử dụng Telegram từ nhiều năm về trước, ngay từ lần đầu tiên dùng, Telegram đã chiếm trọn cảm tình vì giao diện đơn giản, tập trung vào gọi điện, nhắn tin, nhanh và hỗ trợ đa nền tảng.

Ngoài gọi điện, nhắn tin trao đổi đôi bên, Telegram còn có chức năng trò chuyện qua Nhóm (Group) hoặc Kênh (Channel). Group thì quá quen thuộc rồi, thêm nhiều người vào cuộc hội thoại để cùng nhau trò truyện. Còn Channel là nơi một người nói, vạn người nghe, tham gia vào một kênh để liên tục cập nhật thông tin mới nhất từ người chủ của kênh đó.

Một điều đặc biệt ở Telegram mà nhiều ứng dụng nhắn tin khác không có là hỗ trợ API. Tức là thay vì trò chuyện trực tiếp qua ứng dụng, có thể gọi API để tương tác với cuộc hội thoại, thậm chí là cả Grop hoặc Channel. Không quá ngạc nhiên khi Telegram sản sinh ra rất nhiều con "BOT" - khái niệm để chỉ người dùng không phải là người thật, mà chỉ được lập trình để thực hiện một tác vụ nào đó.

Là một ứng dụng nhắn tin miễn phí, hỗ trợ API, nhanh, không giới hạn dung lượng. Nếu có thể "biến" Telegram thành một kênh thông báo lỗi, theo dõi hệ thống, hay bất kỳ thông tin gì muốn gửi đi ngay lập tức cho nhiều người thì thật là hữu ích. Thật vậy, ngay từ những ngày đầu lập trình tôi đã tham gia vào nhiều hệ thống có sử dụng cảnh báo thông qua Telegram. Vì thế hôm nay, chúng ta hãy cùng nhau tìm hiểu cách tận dụng Telegram trở thành một kênh gửi nhận thông báo tức thì nhé.

Channel và BOT trong Telegram

Như đã nói Telegram có sẵn API và tài liệu cho việc tích hợp. Bạn đọc tham khảo Telegram APIs. Trong mục này, đáng chú ý là phần Telegram Bot API. Bởi vì sử dụng BOT là cách nhanh nhất để tương tác với Group hoặc Channel. Về cơ bản, bạn có thể điều khiển được BOT thông qua API để gửi tin nhắn. Nhưng để BOT gửi được tin nhắn, trước tiên phải thêm nó vào một nhóm chat hoặc kênh.

BOT có vai trò 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. Thông thường trong hệ thống cảnh báo chỉ cần một người nói và nhiều người nghe, điều này rất phù hợp với tính chất của Channel trong Telegram. Chỉ cần tạo một kênh, đặt tên cho nó, thêm tất cả những người muốn nhận thông báo nào, thêm BOT vào, cho nó quyền gửi tin nhắn và bắt đầu viết mã để BOT tự động gửi thông báo vào kênh.

Các bước thực hiện

Các bước thực hiện rất đơn giản. Bạn cần có một tài khoản Telegram.

Đầu tiên cần phải tạo ra một con BOT. Bấm vào @BotFather, chọn "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, sao chép lại cất ở đâu đó.

Telegram BOT token

Tiếp theo 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 > Chọn BOT vừa tạo.

Tiếp theo cần lấy được id của kênh bằng cách vào Channel > Edit > Invite Links > Sao chép lại Invite Link.

Lấy Invite Link

Gửi địa chỉ vừa sao chép vào @username_to_id_bot để xem 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

id-1001828347283.

Vậy là xong. Bây giờ hãy thử gọi API sendMessage thử xem.

$ 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

Tạo một hàm sendMessage để dùng trong dự á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",
    }
  });
}

Giới hạn API

Vì là một dịch vụ nhắn tin cho nên Telegram có một số giới hạn đối với BOT đối với API. Ví dụ như mỗi tài khoản người dùng không thể tạo quá 20 BOTs. Tránh gửi hơn 1 tin nhắn trong vòng 1 giây, tránh gửi quá 20 tin nhắn mỗi phút đến cùng một nhóm hoặc kênh...

Để biết thêm thông tin chi tiết, bạn đọc tham khảo Bots FAQ hoặc Telegram Limits.

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào 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 😄