Если вы когда-либо мечтали создать своего Телеграм-бота, но вас пугали технические сложности и необходимость программирования или рисования блок-схем, то у меня для вас отличные новости. Представляю вам Бот в блокноте — конструктор Телеграм-ботов, который я разработал специально для тех, кто далёк от мира IT, но хочет легко и быстро создать своего бота. В отличие от традиционных конструкторов с блок-схемами, я предлагаю более гибкий и удобный способ работы. Блок-схемы могут быть сложными и запутанными, особенно когда проект становится большим.

В этой статье я расскажу, как возникла идея создать Бот в блокноте, какие возможности и преимущества он предлагает, а также как вы можете начать использовать его уже сегодня. Если вы хотите создать своего телеграм-бота, но не знаете, с чего начать, или ищете способ упростить этот процесс, — эта статья для вас. В дальнейшем я планирую публиковать статьи с конкретными реализациями для разных областей, с примерами и советами, так что подписывайтесь, чтобы не пропустить.
Идея
Год назад, работая над телеграм-ботом для клиента, я задался вопросом: "Можно ли упростить процесс сборки типовых диалогов в боте и записи результата?" Часто при работе над проектами я использую блокнот для набора текста и Excel для сортировки и визуализации. Опираясь на этот опыт, я решил, что списки — это вполне удобный вариант.
Немного истории
В 2017 году, увидев бота в Telegram, я проникся идеей чат-ботов. Казалось, что это возрождение старой технологии станет успешным и облегчит множество рутинных операций. Так родился прототип CMS с рабочим названием "Core4". Основная идея заключалась в том, чтобы собрать все интерфейсы ботов к одному ядру, независимо от источника сообщения. Ядро должно было принимать, понимать и обрабатывать сообщения, давая ответ в понятной мессенджерам форме.
Результатом стал MVP, работающий с ныне запрещенным Фейсбуком, ушедшим Slack, Skype, Telegram, Viber, ВКонтакте, Яндекс.Алисой и даже WeChat. Все функции бота были разделены на плагины с единым интерфейсом обмена данными, что позволило упростить разработку и код. Однако блокировка Telegram в РФ и рост рабочей нагрузки заставили отложить идею в долгий ящик.
Начало
Я написал плагин для Core4, который обрабатывает текстовые каркасы и выводит квизы в боте. Начал с простого опроса:
Третья планета от Солнца?
> Земля
> Венера
> ЛунаВам понравился тест?
> Да
> нет
Как вас зовут?
Оцените сложность теста в баллах от 1 до 10?
Развитие
Задача не сложная, но хотелось большего: ветвлений, проверок. Конструктор стал понимать типы вопросов и ожидаемых ответов:
— «B» - ожидается ответ кнопкой
— «P:» — ожидание телефона через кнопку «Поделиться телефоном»,
— «G:» — ожидание геопозиции через кнопку «Поделиться геопозицией»,
— «#:» — ожидание отправки контакта или ручного ввода телефона +7(495)123-45-67, + и не менее 8 цифр, допустимы скобки и разделители
— «T:» — ожидание текстового ввода,
— «D:» — ожидание целого или десятичного числа,
— «E:» — ожидание ввода электронной почты
— «U:» — ожидание URL-адреса
— «Y:» — ожидание ввода даты DD-MM-YYYY или даты времени DD-MM-YYYY HH:II
— «H:» — ожидание ввода времени (часы и минуты) HH:MM
— «F:» — ожидание отправки файла,
— «X:» — любой тип ответа (но не кнопка)
Добавил возможность задавать оценку кнопочного ответа (Верно/Нет) и начислять баллы за ответ. Для ветвления придумал простой вариант: «Если ответили так, задать вопрос». Планирую добавить сегментацию пользователей на основе ответов (она уже есть в конструкторе, пользователи сегментируются, но в каркасе пока не реализована) .
После доработок каркас опроса стал выглядеть так:
Третья планета от Солнца?
> Земля||Y10
> Венера||N
> Луна||N
Вам понравился тест?
> Да||Y50
> нет||N
> X: Расскажу в сообщении|Опишите впечатление текстом, видео или голосовым
T: Как вас зовут?
D: Оцените сложность теста в баллах от 1 до 10?
Уровень ветвлений стал практически неограниченным, но появились сложности в обработке алгоритма. Решение этих вопросов заняло много времени, но в итоге всё получилось.
Допиливаем напильником и шлифуем
Параллельно был написан веб-интерфейс для пост-обработки каркаса. В конструкторах ботов обычно используются блок-схемы связанные друг с другом стрелками, каждый блок описывает действие, каждому ответу назначается переменная, но в блокноте такое не описать, поэтому я выбрал дерево. Дерево не позволяет делать сложные связи, но для опросов оно логически подходит гораздо лучше, вся схема опроса видна и понятна, возможности дерева позволяют легко переносить вопросы с уровня на уровень и менять их местами, в блочной схеме всё выходит гораздо сложнее.

Не текстом единым
К вопросам нужно добавлять картинки и мультимедиа, без этого красивый квиз не сделать. От идеи добавлять картинки в каркасе пришлось отказаться, т.к. любую реализацию будет не возможно объяснить не подготовленному пользователю. Перенес ее в веб-конструктор и квизы заиграли новыми красками.

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

В веб-интерфейсе можно сегментировать пользователя по ответам, что даст возможность рассылать информацию по пересечению сегментов. Сегментация уже работает, а рассылки пока в разработке
Полноценная работа
В веб-интерфейсе есть пункт «Клавиатуры бота», где можно создать стандартные клавиатуры для навигации с подключением к ним квизов, в них же можно задать сообщения при выводе клавиатуры. Используя эту возможность можно создавать сложные переходы и вариации. Конструктор на данном этапе предназначен для работы с квизами, но в планах создание привычных блок-схем с более удобными возможностями.

Общаемся с пользователями
Отлично! Квиз работает, вопросы задаются, типы контролируются, кнопку другого ответа бот не примет, полный контроль! И как хранить результаты? В базе данных, но каждый квиз разный по содержанию и объему, поэтому храним в JSON. Отслеживать результаты в админке приятно, но не интересно. Вот бы была возможность сразу ответить пользователю. Например, мы создали квиз-диалог по вопросам поддержки продукта, пользователь выбрал свой продукт, ответил на некоторые вопросы, мы получили заявку и… как ему ответить? Как задать уточняющие вопросы не покидая телеграм? Создадим закрытый форум в телеграм, добавим туда бота, дадим ему права на чтение сообщений и у нас появляется возможность общения с пользователем, причем общаться может не один наш сотрудник, а все кто состоит в закрытой группе (пользователь ее не видит, он общается с ботом)

Сохраняем и анализируем
Общение через бота важный и нужный формат, но хочется иметь общую картину, сортировать и фильтровать результаты. Таблицы Гугл то, что нужно, но мы не создаем переменные и как тогда записывать результаты… Обойдемся без переменных! Немного магии и все работает с таблицами, при первом прохождении генерируется лист с максимальным количеством колонок (все варианты ответов), каждый отдельный квиз это отдельный лист и ничто не мешает создавать нам несколько квизов, всё будет ясно и понятно. Если пользователь дал правильный ответ, подсветим эту ячейку зеленым, а количество баллов за ответ покажем в примечании, это даст возможность оценивать результаты не отвлекаясь на описание квиза, не нужно помнить правильные ответы и сразу видно, где ошибка в ответах.
Интеграция с Гугл Таблицами позволяет создать аналогичный Гугл Формам сервис, но без настроек и выхода из Телеграм.

Передаем диалог в CRM
В работе я использую российский сервис YouGile https://ru.yougile.com/, в свое время я делал бота для публикации задач из Телеграм на доску, он общедоступный и бесплатный, называется «YouGile unofficial bot». Переслали ему сообщение, он опубликовал его на доске и при необходимости отправил дубль на ваш Email — удобно! А квизы могут быть задачами? Могут! Делаю интеграцию результатов квиза с YouGile и получается — простая и легкая CRM! Можно дать ссылку на квиз и его результаты сразу будут переданы менеджерам, после обработки они перенесут их в нужные колонки, добро пожаловать в Agile-style

Для тех кто не хочет ничего подключать
Просто укажите в настройках квиза свою почту или ID аккаунта в Телеграм (должен быть подписан на бота), и получайте копии диалогов в почту или мессенджер. Ответить оттуда сложно, но не все задачи требуют ответа. Простая, полезная и удобная функция.

В таком виде результат приходит на email и в Телеграм
Для самых продвинутых
Мало возможностей? Укажите в настройках адрес своего сервера, на котором вы хотите самостоятельно обрабатывать результаты квизов и сразу после завершения диалога бот отправит вам все результаты в виде HTML и JSON, приготовьте их по своему или отправьте в другой сервис. Полезно!
Где использовать?
— Создание квизов и опросов
— Техническая поддержка клиентов
— Дерево решений (вопросы приводят к выбору единственного результата)
— Сбор лидов в CRM
— Оценка качества услуг, в том числе использование для тайных покупателей с обработкой отчетов
— Тесты на знание предмета
— Чекапы
— Сбор анкет-заявок в HR и создание предварительных тестов
— Онбординг сотрудников
— Регистрация участников на мероприятия с возможностью обсуждения деталей и проведения по CRM
— Бронирование через квиз
— Составление портрета гостя
— Сбор показаний приборов учета
— Учет рабочего времени и отчеты о проделанной работе
— Сбор заявок на подбор
— Сбор вопросов перед/на мероприятии
— Заполнение анкет на франшизу и т.п.
— Оформление брифов и ТЗ с обсуждением и проводкой в CRM
— Заявки на подбор помещений
— Заявки на расчет стоимости кейтереинга
— Бриф на расчет стоимости материалов
Ложка дёгтя
Проект находится в стадии финального тестирования, иногда вылезают баги, но в общем всё работает. Больше всего раздражает задержка на обработку результатов при прохождении квиза в боте. Это из-за того, что продукт молодой. Несколько секунд, но не приятно, но терпимо, это задержка из-за ответов внешних сервисов, без подключения интеграций она вообще не заметна. А в ближайшее время я переделаю обработчик и всё будет летать =)
После пополнения счета иногда выбивает из аккаунта и нужно входить повторно, это магическая ошибка, ищу причину. Ну и конечно, есть баги о которых я не знаю, но вы мне обязательно сообщите =)
Большие планы
Часть запланированного уже частично реализована, часть ещё только на бумаге.
В планах:
— Редактор бота в виде блок-схем, в не совсем привычном виде, но будет удобно
— Использование переменных для записи ответов с последующим подключением калькулятора (реализовано на 50%)
— Рассылки по сегментированным группам пользователей с персонификацией
— Работа бота в группах и каналах, проверка подписки, модерация, публикация оформленных сообщений
— Поддержка досок объявлений в форумах (публикация только через бота)
— Сбор статистики бота (статистика уже собирается, но пока не выводится)
— Подключение плагинов Core4, даст возможность использовать готовые модули для типовых решений (уже работает, вывод квиза и общение в боте это часть из плагинов системы)
— Реферальная программа для пассивного заработка (70%)
— и многое-многое другое
Как попробовать
Рабочая версия доступна на сайте. На ней можно отредактировать или создать квиз.
Посмотреть на результат можно создав свой диалог по ссылке выше или на уже ранее заполненный на странице.
Вот так результаты выглядят в CRM YouGile
Так менеджеры видят заявки в закрытом Телеграм форуме
Так результаты отображаются в Гугл.Таблицах