Telegram Bot

Website

Hướng dẫn khởi tạo Telegram Bot, kết nối và điều khiển Telegram Bot

Tạo Telegram Bot và lấy HTTP API

  1. Truy cập vào link sau và bắt đầu Chat với BotFather: https://t.me/botfather
  2. Gõ lệnh /newbot, BotFather yêu cầu bạn đặt tên cho Bot.
  3. Gõ tên cho Bot, BotFather yêu cầu bạn chọn username cho Bot.
  4. Gõ username cho Bot, nếu username bị trùng BotFather sẽ yêu cầu bạn chọn tên khác, bạn cứ thử gõ các cho đến khi nào BotFather thông báo Done thì thôi. Khi đó BotFather sẽ lập tức gửi cho bạn HTTP API.

Telegram Bot

Sau khi thực hiện 4 bước trên, bạn cần ghi nhớ lại 2 thông tin quan trọng nhất:

  1. username mà bạn đã đặt cho Bot.
  2. HTTP API mà BotFather đã gửi cho bạn.

Bạn cũng có thể gõ lệnh /help để được BotFather hướng dẫn thêm bằng cách hiển thị menu gồm các lựa chọn.

Khai báo thư viện

$soc->use_telegram($bot_username, $http_api);

Tạo link chat

Mặc định Bot của bạn không thể chủ động gửi tin nhắn cho thành viên trước, hiển nhiên vì đây là cơ chế chống spam của Telegram. Như vậy thành viên cần chủ động liên lạc với Bot của bạn trước.

Hàm này sẽ trả về liên kết mà khi người dùng truy cập vào sẽ mở ra ứng dụng Telegram và cũng mở sẵn cửa sổ chat với Bot của bạn, lúc này người dùng chỉ cần bấm nút "Start" là xong.

// Người dùng truy cập vào link này, bấm nút "Start" tức là đã chủ động gửi 1 tin nhắn cho Bot với nội dung ẩn do bạn chủ động truyền vào
$soc->telegram->getStartLink($hidden_text='');

Đọc lịch sử chat

Khi người dùng gửi tin nhắn cho Bot thì tất cả tin nhắn này đều sẽ được Telegram lưu trữ lại trong vòng 24h. Bạn cần thực hiện đọc lịch sử chat để biết được người dùng của mình gửi lên những yêu cầu gì, từ đó đưa ra hướng xử lý thích hợp. Kết quả trả về sẽ là JSON, bạn chỉ cần chuyển JSON trở về mảng bằng hàm json_decode là được. Trong mảng dữ liệu lấy về bạn sẽ tìm thấy message_id, đây chính là chat_id của người dùng, sau này nếu bạn muốn gửi tin nhắn cho người dùng nào thì cần phải điền chính xác chat_id của người dùng đó vào hàm.

Ngoài việc đọc lịch sử thì hàm này còn cho phép bạn chủ động yêu cầu Telegram xóa bớt đi những lịch sử có update_id nhỏ hơn giá trị mà bạn truyền vào. Đối với dữ liệu lịch sử thì update_id chính là khóa chính, việc xóa bớt dữ liệu lịch sử sẽ rất cần thiết cho trường hợp lượng tin nhắn gửi cho Bot quá nhiều. Bạn cũng nên biết là hàm này chỉ trả về cho bạn 100 dòng chat đầu tiên trong lịch sử, như vậy tốt nhất bạn nên xây dựng cơ chế lưu lại lịch sử chat vào database, khi đã lưu đến update_id nào rồi thì tiến hành gọi hàm xóa luôn lịch sử của Telegram từ update_id đó trở về trước.

// Đọc lịch sử chat đồng thời xóa sạch lịch sử chat có update_id nhỏ hơn giá trị truyền vào
$soc->telegram->getHistoryClear($keep_update_id_from='KEEP ALL');

Hiển thị nút bấm lấy thông tin cá nhân

Bạn có thể cài đặt để Bot gửi cho người dùng 1 nút bấm mà khi bấm vào đó thì người dùng sẽ cung cấp thông tin cá nhân của họ cho bạn, trong đó thông tin quan trọng nhất chính là số điện thoại. Khi người dùng đăng ký tài khoản Telegram thì họ đã thực hiện xác minh số điện thoại qua tin nhắn OTP nên số điện thoại mà bạn nhận được là số điện thoại đã xác minh, thật quá tiện lợi đúng không nào?

$soc->telegram->sendButtonGetContact($chat_id, $message='Please press SEND PHONE NUMBER', $button_text='SEND PHONE NUMBER');

Gửi tin nhắn

Hàm quan trọng nhất và chắc chắn bạn sẽ sử dụng thường xuyên để Bot gửi tin nhắn tương tác với người dùng. Lưu ý rằng việc gửi tin nhắn này là gửi cho từng người dùng cụ thể.

Từ hàm này bạn có thể xây dựng công cụ để gửi tin nhắn cùng lúc cho nhiều người dùng hoặc cho tất cả người dùng. Tuy nhiên, bạn nên biết Telegram giới hạn không cho phép Bot gửi nhiều hơn 30 tin nhắn cho 30 người dùng khác nhau mỗi giây, nếu vượt qua giới hạn này bạn sẽ nhận về lỗi 429.

$soc->telegram->sendMessage($chat_id, $message);

Hiển thị các nút bấm menu

Các nút bấm dạng menu cho phép người dùng nhắn tin cho bot nhanh chóng chỉ bằng cách bấm nút. Từ tin nhắn này, bạn có thể xét dựa trên nội dung tin mà bot nhận được để xử lý và trả về chính xác yêu cầu của người dùng.

Telegram Bot

$soc->telegram->sendButton($chat_id, $message="Please choose a command at the bottom.", $reply_markup='{"keyboard":[[{"text":"Button 1"},{"text":"Button 2"}]],"resize_keyboard":true}');

Tinh Nguyen

Gia nhập: 27-01-2016 Tinh Nguyen

Chuyên thiết kế mọi loại website.