Тестовый бот
В этом гайде, за 6 шагов, сделаем простого бота. У него будет всего 2 функции: публикация новостей из ФБ в телеграм + автоматические ответы на вопросы.
Шаг 1: Батя ботов
Бот в Telegram создается при помощи другого отца ботов @BotFather.
Алгоритм прост:
1. Открываем бота @BotFather
2. Отправляем команду /newbot
3. Создаём имя бота и адрес (например, «Бот для Диджиталов» с адресом «dgtlsnewsbot»)
Если всё окей, BotFather выдаст токен — ключ для доступа к боту. Его лучше не терять и никому не передавать.
Дополнительно:
Через BotFather можно установить аватар бота, добавить описание, изменить имя бота, и всё прочее по мелочам оформления.
Шаг 2: Назначаем администратора
Бот готов, теперь ему нужен канал, в котором он будет работать.
После создания канала нужно добавить бота в список администраторов — тогда он сможет публиковать заметки в канал
Шаг 3: Обучение бота
Бот работает по алгоритму, который нужно создавать вручную. Для этого нам подойдёт популярный сервис создания алгоритмов IFTTT.
Наш алгоритм:
Если в RSS-ленте сайта появляется новая запись, бот дублирует её в указанный Telegram-канал.
Инструкция по IFTTT (1 этап):
1. открываем раздел «My Applets»
2. нажимаем на кнопку «New Applet»
3. далее жмём на ссылку «This».
4. выбираем в списке функций триггер Feed
5. клацаем New feed item и указываем URL-адрес RSS-ленты
Вместо RSS-ленты можно выбрать репостинг из Twitter или Facebook — для каждой соцсети в IFTTT есть отдельные модули (ссылки на модули вставлены в названия соцсетей).
Инструкция по IFTTT (2 этап):
Теперь выбираем действие, которое бот будет делать при обнаружении новой записи в RSS.
1. нажимаем на «That»
2. выбираем Maker Webhook
3. там клацаем «Make a web request» (модуль помогает задать параметр, что при выполненном условии IF делать боту и в какой веб-источник)
4. в открывшейся форме в поле URL пишем ссылку https://api.telegram.org/bot[ТОКЕН]/sendMessage
5. выбираем «Метод: POST», «тип контента: application/json»
Примечание:
Body — поле для шаблона запроcа, который будет отправляться в Telegram.
В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано:
{«chat_id»:»@адрес_канала», «text»:»{{EntryTitle}} {{FeedUrl}}»}
1. chat_id — адрес канала, в который полетит сообщение. Одного бота можно подключить сразу к нескольким каналам. В качестве адресата можно указать и конкретного пользователя.
2. text — содержание сообщения. Например, заголовок материала из RSS (EntryTitle), его содержание (EntryContent) и ссылка (FeedUrl).
Больше функций можно посмотреть в кнопке +Ingredient.
Если всё сделано без ошибок, бот перешлёт пост из RSS-ленты в канал. В IFTTT есть небольшая задержка, поэтому репосты из RSS-ленты попадают в Telegram в среднем через 30-60 минут.
Следующая задача
Научим бота автоматическим ответам по сценарию.
Шаг 4: Сервер
Теперь нам нужен веб-хостинг и сертификат SSL. Для этого воспользуемся бесплатным сервисом «Let’s Encrypt».
Для бота лучше сделать отдельный поддомен — например, bot.example.com — и разместить на нём один файл index.php. Так проще не запутаться.
Внутри файла размещаем код бота c сайта Telegram.
На хостинге Vscale можно создать отдельный сервер для бота. Это делается при помощи одного клика в панели управления»
В код бота нужно внести всего два изменения:
1. в строке define(‘BOT_TOKEN’, ‘12345678:replace-me-with-real-token’); вместо «12345678:replace-me-with-real-token» написать токен своего бота;
2. в строке define(‘WEBHOOK_URL’, ‘https://my-site.example.com/secret-path-for-webhooks/’); вместо «https://my-site.example.com/secret-path-for-webhooks/» указать URL-адрес файла с кодом для бота: https://bot.example.com/index.php.
Шаг 5: Подключаем бота к серверу
Чтобы бот работал, нужно связать Telegram и файл на сервере. Тогда скрипт будет обрабатывать все сообщения, отправленные боту.
Для этого понадобится консоль.
У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом.
Альтернатива для macOS: можно воспользоваться программой Terminal, ввести через неё команду [ssh имя_пользователя@адрес_домена].
После ввода пароля, печатаем для нашего поддомена простую команду:
php -f /var/www/bot.example.com/index.php
Если всё сделано правильно, бот напишет в Telegram сообщение «Hello».
Шаг 6: Настраиваем текст автоответов бота
Добавим различные сценарии для ответов бота. Открываем созданный ранее файл index.php и находим в нём строчку:
} else if ($text === «Hello» || $text === «Hi») {
apiRequest(«sendMessage», array(‘chat_id’ => $chat_id, «text» => ‘Nice to meet you’));
1. Hello и Hi — текст, на который бот должен реагировать
2. Nice to meet you — реакция бота на текст
Ниже в коде можно дописать сценарий и на другие ответы:
} else if ($text === «Цены») {
apiRequest(«sendMessage», array(‘chat_id’ => $chat_id, «text» => ‘Прайс-лист можно скачать по ссылке example.com/price’));
Ограничений по количеству фраз и ответов на них нет. Можно изменить кнопки для работы с ботом. Для этого в строчке кода ‘keyboard’ => array(array(‘Hello’, ‘Hi’)) вместо «Hello» и «Hi» пишем «Цены» и «Контакты».
Изменения вступят в силу сразу после сохранения файла.
Источник: О Бизнесе