Push-сповіщення в Telegram для чайників
Тепер по порядку, як усе це реалізувати з огляду на те, що в мене викликало складнощі.
Крок 1. Створення робота.
Якщо ще не зареєстровані, реєструємось у Telegram. Мені зручніше через веб-інтервейс: https://web.telegram.org.
Набираємо в пошуку BotFather - тато ботів)), шлемо йому команду створення нового бота /newbot. Далі дотримуючись інструкцій задаємо назву та ім'я бота. Також нагоді команди: /setdescription - змінити опис, /setuserpic - задати іконку. Тато видасть token бота, який потрібен буде далі.
Отже, є робота, але він нічого не вміє. Для мого сервісу особливо нічого і не потрібно, потрібно тільки щоб бот слав повідомлення користувачу, але для того щоб їх надсилати, потрібно дізнатися ID чата користувача з ботом. А для цього користувач повинен написати першим, а ми повинні обробити повідомлення і виудити ID.
Крок 2. Вибір способу обробки повідомлень роботу.
Тут потрібна документація з API Telegram. Все, що пишеться боту, можна обробляти двома способами:
Отже палю, халявний https у мене вийшов через https://www.cloudflare.com/ - нічого не стоїть, працює, правда заробив дня через 3, коли я вже все зробив. Далі описуватиму за першим методом.
Крок 3. Обробка повідомлень боту
Декілька пояснень за кодом. У методі getUpdates використовуємо параметр offset, щоб зчитувати лише нові події. Отримуємо дані curlом і перетворюємо отриманий json відповідь масив і перебираємо циклом повідомлення.
У повідомленні мене цікавлять:
- $message["update_id"] - номер події
- $message["message"]["text"] - текст повідомлення
- $message["message"]["chat"]["id"] - і найголовніше ID чату
Надсилання відповідей бота, а також повідомлень робиться зЗа допомогою методу sendMessage, який має два обов'язкові параметри: номер чату і текст повідомлення.
Ще залишилося дотримуватися користувальницьку угоду Телеграма і аналізуючи текст повідомлення навчити робота командам /start і /help , видаючи відповідні відповіді.