Инструкция: Создание бота для Telegram без навыков программирования

Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 6 шагов.

Материал подготовлен при поддержке Selectel

После бурных обсуждений в ИТ-прессе по поводу эффективности чат-ботов, они заняли свою нишу в экосистеме пользователей и компаний. Например, часто проекты внедряют ботов для оповещения о каких-либо событиях, а службы поддержки используют их для того, чтобы быстро отвечать на часто задаваемые вопросы клиентов.

В этой инструкции мы рассмотрим наиболее простой способ создать бота собственными руками и объясним, как он работает.

919c493bff421b.jpg

Начнем с разработки бота, который сможет автоматически отправлять в Telegram-канал новости компании, опубликованные на сайте или в Facebook.

Шаг 1. Создаём бота в Telegram

Бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот для DTF» с адресом «dtf_news_bot».

Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.

1b28d2e0b91a8e.png
Через BotFather также можно добавить аватарку для бота, описание и прочее.

Шаг 2. Создаём канал в Telegram

Теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется — добавить в список администраторов созданного нами бота — именно он будет публиковать заметки в канал. 

aa804b5c0c1a61.png
Для поиска бота можно использовать его адрес. Например, «dtf_news_bot».

Шаг 3. Создание условия

Следующий этап — научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT.

С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram.

fb31c36c7d3717.png
IFTTT расшифровывается как If This Then That

Переходим в раздел IFTTT «My Applets», нажимаем на кнопку «New Applet» и далее на ссылку «This». Находим в списке функций триггер Feed, New feed item и указываем URL-адрес нашей RSS-ленты. Например, у Wordpress-сайтов она обычно расположена по адресу example.com/feed/. 

739e62e7ce9c02.png

Вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook-аккаунте — для каждой функции в IFTTT предусмотрены отдельные модули.

Теперь переходим ко второму шагу — выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на «That» и ищем Maker Webhook, «Make a web request» — с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае — к боту в Telegram.

d104510a060a92.png

В открывшейся форме в поле URL нужно указать ссылку https://api.telegram.org/botТОКЕН/sendMessage, подставив в неё токен, сгенерированный на первом шаге. Метод: POST, тип контента: application/json.

Body — поле для шаблона запроcа, который будет отправляться в Telegram. В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано:

{«chat_id»:»@адрес_канала», «text»:»{{EntryTitle}} {{FeedUrl}}»}

  • chat_id — адрес канала, в который необходимо отправить сообщение. Таким образом одного бота можно подключить сразу к нескольким каналам. В качестве адресата можно указать и конкретного пользователя. В таком случае вместо адреса канала необходимо указать его ID (можно получить при помощи бота).
  • text — содержание сообщения. Например, заголовок материала из RSS (EntryTitle), его содержание (EntryContent) и ссылка (FeedUrl). Список доступных опций можно посмотреть по кнопке Ingredient.

Если всё настроено верно, бот отправит сообщение из RSS-ленты в канал. У триггера в IFTTT есть задержка, поэтому сообщение, появившееся в RSS-ленте, отправится в Telegram не сразу, а спустя 30–60 минут.

В качестве условия для отправки сообщения можно выбрать любой другой сценарий, доступный на IFTTT. Например, Weather Underground умеет каждый день отправлять сообщение с прогнозом погоды на завтра. Триггер Stocks можно настроить на отправку стоимости акций при закрытии торгов. 

Теперь решим более сложную задачу — научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.

Шаг 4. Подключаем сервер

На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let’s Encrypt. 

Удобнее всего создать отдельный поддомен для бота — например, bot.example.com — и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegram.

Если у вас хостинг Vscale, то можно создать для бота отдельный сервер. Это делается при помощи одного клика в панели управления.

42d5dbe6e66743.png

В код бота нужно внести всего два изменения:

  • в строке define ('BOT_TOKEN', '12345678: replace-me-with-real-token'); вместо 12345678: replace-me-with-real-token написать токен, полученный на первом шаге;
  • в строке 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-бота и сервер

Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт.

Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена.

После ввода пароля, печатаем для нашего поддомена простую команду:

php -f /var/www/bot.example.com/index.php

a0498d7952924d.png

Если всё сделано правильно, бот сразу отправит в Telegram сообщение «Hello».

1c4c52be5c4f29.png

Шаг 6. Настраиваем текст автоответов бота

Добавим различные сценарии для ответов бота. Открываем созданный ранее файл index.php и находим в нём строчку:

} else if ($text === «Hello» || $text === «Hi») { apiRequest («sendMessage», array ('chat_id' => $chat_id, «text» => 'Nice to meet you'));

  • Hello и Hi — текст пользователя, на который бот должен отреагировать.
  • Nice to meet you — ответ бота на отправленное пользователем сообщением.​

Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в боте vc.ru для «ВКонтакте»):

} else if ($text === «Цены») { apiRequest («sendMessage», array ('chat_id' => $chat_id, «text» => 'Прайс-лист можно скачать по ссылке example.com/price')); } else if ($text === «Контакты») { apiRequest («sendMessage», array ('chat_id' => $chat_id, «text» => 'Контактный адрес для связи — secret@vc.ru'));

Можем указать любое количество фраз и ответов на них. Также можно изменить кнопки, доступные пользователю во время работы с ботом. Находим строчку кода 'keyboard' => array (array ('Hello', 'Hi')) и вместо Hello и Hi указываем «Цены» и «Контакты».

После сохранения файла изменения сразу вступят в силу.

Промокод

Специально для читателей vc.ru доступен промокод на 250 рублей при заказе хостинга Vscale. Укажите «VC250» в виджете с балансом. Промокод действует до 1 июня 2017 года.

Заказать хостинг для бота

©  vc.ru