Бот в блокноте — как я написал конструктор Телеграм-ботов для гуманитариев
Если вы когда-либо мечтали создать своего Телеграм-бота, но вас пугали технические сложности и необходимость программирования или рисования блок-схем, то у меня для вас отличные новости. Представляю вам Бот в блокноте — конструктор Телеграм-ботов, который я разработал специально для тех, кто далёк от мира 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 и в Телеграм
В таком виде результат приходит на email и в Телеграм
Для самых продвинутых
Мало возможностей? Укажите в настройках адрес своего сервера, на котором вы хотите самостоятельно обрабатывать результаты квизов и сразу после завершения диалога бот отправит вам все результаты в виде HTML и JSON, приготовьте их по своему или отправьте в другой сервис. Полезно!
Где использовать?
— Создание квизов и опросов
— Техническая поддержка клиентов
— Дерево решений (вопросы приводят к выбору единственного результата)
— Сбор лидов в CRM
— Оценка качества услуг, в том числе использование для тайных покупателей с обработкой отчетов
— Тесты на знание предмета
— Чекапы
— Сбор анкет-заявок в HR и создание предварительных тестов
— Онбординг сотрудников
— Регистрация участников на мероприятия с возможностью обсуждения деталей и проведения по CRM
— Бронирование через квиз
— Составление портрета гостя
— Сбор показаний приборов учета
— Учет рабочего времени и отчеты о проделанной работе
— Сбор заявок на подбор
— Сбор вопросов перед/на мероприятии
— Заполнение анкет на франшизу и т.п.
— Оформление брифов и ТЗ с обсуждением и проводкой в CRM
— Заявки на подбор помещений
— Заявки на расчет стоимости кейтереинга
— Бриф на расчет стоимости материалов
Ложка дёгтя
Проект находится в стадии финального тестирования, иногда вылезают баги, но в общем всё работает. Больше всего раздражает задержка на обработку результатов при прохождении квиза в боте. Это из-за того, что продукт молодой. Несколько секунд, но не приятно, но терпимо, это задержка из-за ответов внешних сервисов, без подключения интеграций она вообще не заметна. А в ближайшее время я переделаю обработчик и всё будет летать =)
После пополнения счета иногда выбивает из аккаунта и нужно входить повторно, это магическая ошибка, ищу причину. Ну и конечно, есть баги о которых я не знаю, но вы мне обязательно сообщите =)
Большие планы
Часть запланированного уже частично реализована, часть ещё только на бумаге.
В планах:
— Редактор бота в виде блок-схем, в не совсем привычном виде, но будет удобно
— Использование переменных для записи ответов с последующим подключением калькулятора (реализовано на 50%)
— Рассылки по сегментированным группам пользователей с персонификацией
— Работа бота в группах и каналах, проверка подписки, модерация, публикация оформленных сообщений
— Поддержка досок объявлений в форумах (публикация только через бота)
— Сбор статистики бота (статистика уже собирается, но пока не выводится)
— Подключение плагинов Core4, даст возможность использовать готовые модули для типовых решений (уже работает, вывод квиза и общение в боте это часть из плагинов системы)
— Реферальная программа для пассивного заработка (70%)
— и многое-многое другое
Как попробовать
Рабочая версия доступна на сайте https://botpad.ru/landing/ На ней можно отредактировать или создать квиз.
Посмотреть на результат можно создав свой диалог по ссылке выше или на уже ранее заполненный на странице https://botpad.ru/landing/demo.php? q=11224
Вот так результаты выглядят в CRM YouGile
Так менеджеры видят заявки в закрытом Телеграм форуме
Так результаты отображаются в Гугл.Таблицах
Начать работу в конструкторе можно на странице: https://botpad.ru/cp/
Подписывайтесь на телеграм-канал «Бот в блокноте», чтобы узнавать о новостях и новинках проекта, смотреть кейсы и разборы.