Создание мини чат-бота в Telegram

Содержание:



Реализовать чат-бот можно двумя способами: первый через IF-условия, второй через PHP-модуль. В данной статье пойдет речь о первом варианте, но при наличии большого количества условий будет удобнее воспользоваться вторым.


Предположим, что у нас магазин по продаже цветов. Мы хотим создать чат-бот, который будет отвечать на следующие вопросы клиентов:


- сколько стоят розы;

- где вы находитесь;

- другие вопросы, которые будут поступать оператору.


1. Создание входящего вебхука в APInita


Создадим новый сценарий в APInita, назовем его "Обработка сообщений из Telegram" (1) и добавим модуль Webhook (2):


Создание мини чат-бота в Telegram


Скопируем полученный URL (3):


Создание мини чат-бота в Telegram


2. Настройка Telegram


Для создания бота у Вас должно быть установлено приложение Телеграм (https://telegram.org) на мобильном и/или десктопном ПК. Вести настройку удобнее с ПК.


2.1. Находим BotFather


Открываем Telegram и в строке поиска (1) вводим "BotFather":


Создание мини чат-бота в Telegram


2.2. Создаем Телеграм-бот


В окне ввода (1) введите команду "/new_bot" (2) и нажмите Enter:


Создание мини чат-бота в Telegram


Далее в том же окне (1) введите название Вашего бота (3), например "Лучшие цветы!" или любое другое имя (позже его можно будет изменить). После ввода имени - введите название ссылки для бота (4): название должно быть на латинице и в конце указано Bot или _bot, например - FlowersApinitaBot. В дальнейшем Вы сможете отправлять данную ссылку своим клиентам в виде: http://t.me/FlowersApinitaBot


После ввода ссылки бот будет создан, скопируйте полученный токен (5), он понадобится позже.


2.3. Теперь нам нужно связать бот и входящий вебхук APInita. Для этого берем ссылку:


https://api.telegram.org/bot{bot_token}/setWebhook?url={webhook_url}

- вместо "bot_token" вставляем токен, полученный на шаге 2.2. (5), а вместо "webhook_url" вставляем ссылку, полученную на шаге 1 (3), в итоге должно получиться примерно так:


https://api.telegram.org/bot12345:AevSe/setWebhook?url=https://wh.apinita.ru/28d2aa017d6e3f1163

Полученную ссылку вставляем в браузерную строку и переходим по ней. В качестве корректного ответа увидим следующее:


Создание мини чат-бота в Telegram


3. Проверка работы связи бота и APInita


Возвращаемся в сценарий, созданный на шаге 1. Проверим корректность связи - включим сценарий (1):


Создание мини чат-бота в Telegram


Далее перейдем в наш созданный бот (2):


Создание мини чат-бота в Telegram


И нажмем кнопку "Start" в открывшемся окне:


Создание мини чат-бота в Telegram


Теперь вернемся в наш сценарий, созданный на шаге 1, и увидим, что справа от модуля появилась дата и время входящих данных, а также зеленый кружок (4):


Создание мини чат-бота в Telegram


Это означает, что данные успешно поступили в систему и с ними можно начинать работу. Нажмите на модуль (4), а затем на вкладку "Входящие" (5) - Вы увидите поступившие данные и пользователя, кто отправил сообщение:


Создание мини чат-бота в Telegram


4. Создание подключения


В APInita переходим в раздел "Подключения" и жмем "+", выбираем тип подключения "Custom", указываем название, например "Telegram Bot Flowers", указываем ключ "bot_id" (1), а значение берем из пункта 2.2. (5), сохраняем:


Создание мини чат-бота в Telegram


5. Создание сценария


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


5.1. Первое условие


Выключаем сценарий и создаем первое условие - добавляем новый модуль IF (1):


Создание мини чат-бота в Telegram


Прописываем условие обработки текста (2):


{{
(
   'стои' in s1.body.message.text or
   'стоя' in s1.body.message.text or
   'цен' in s1.body.message.text
) and
   'роз' in s1.body.message.text
}}

В данном условии мы берем все слова содержащие "стои" или "стоя" или "цен" и "роз". То есть предложение "сколько стоят розы?" пройдет условие, а предложение "сколько стоят ромашки" - нет.


5.2. Второе условие


Аналогичным образом создаем второе IF-условие для "где вы находитесь". Можно использовать разные слова или части слов, чтобы более точно идентифицировать вопрос и направить в выполнение правильного условия:


Создание мини чат-бота в Telegram


{{
   'адрес' in s1.body.message.text or
   'находитесь' in s1.body.message.text or
   'нахождение' in s1.body.message.text or
   'добраться' in s1.body.message.text
}}

Вы можете потренироваться в составлении условий в разделе "Валидатор" в Вашем личном кабинете.


5.3. Третье условие


Чтобы сделать обработку третьего условия, нужно в нем собрать первое и второе, и добавить отрицание:


{{ not (
((
   'стои' in s1.body.message.text or
   'стоя' in s1.body.message.text or
   'цен' in s1.body.message.text
) and
   'роз' in s1.body.message.text
) or (
   'адрес' in s1.body.message.text or
   'находитесь' in s1.body.message.text or
   'нахождение' in s1.body.message.text or
   'добраться' in s1.body.message.text
)
) }}

В итоге у Вас получится три условия - поставьте их в один ряд, перетянув каждый модуль за правый нижний угол:


Создание мини чат-бота в Telegram


Создавать множество условий, а тем более конструкций if/else может быть не совсем удобным через IF модули, поэтому вместо этого можно воспользоваться одним PHP-модулем и сформировать все условия в нем, об этом мы рассказываем в другой статье.


5.4. Отправка ответа


Для каждого из условий создаем HTTP-модуль:


Создание мини чат-бота в Telegram


Для примера рассмотрим вариант после IF "Отвечаем на вопрос о адресе". Вводим название (1), например "Отправляем адрес". В поле "URL запроса" (2) вставляем как есть:


https://api.telegram.org/bot{{ connection.body.bot_id }}/sendMessage

Метод и тип данных (4): POST, application/json


Поля запроса:


chat_id: {{ s1.body.message.chat.id }}
parse_mode: HTML
disable_web_page_preview: true
text: Мы находимся по адресу: г. Москва, улица Прекрасная 100

Указываем подключение (5), созданное на шаге 4. По результату всех настроек у Вас получится: 1 входящий вебхук, 3 условия и по 1 запросу на каждое из условий. Включите сценарий (6):


Создание мини чат-бота в Telegram


6. Тестируем


Открываем наш бот в Телеграм и проверяем работу:


Создание мини чат-бота в Telegram

Попробуйте бесплатно

При регистрации Вы бесплатно получаете 14 дней и 1.000 запусков сценариев:

Нажимая кнопку «Регистрация» Вы принимаете условия лицензионного соглашения и даете согласие на обработку своих персональных данных. Если у Вас уже есть аккаунт, войдите в систему. Сайт защищен технологией reCAPTCHA и к нему применяются Google политика конфиденциальности и условия использования.
  • Техподдержка

    Ответим на Ваши вопросы, подскажем по настройкам модулей.

  • Доступные тарифы

    От 1000р. в месяц за полный функционал без ограничений.

  • Безопасность

    Сервера расположены на территории РФ, а все подключения дополнительно шифруются.