Некоторое время назад я разработал бесплатного Телеграм-бота для отправки задач в YouGile, российский аналог ушедшего из РФ Trello. Сегодня этот бот получил неожиданное расширение функционала. Изначально бот был создан для удобной постановки задач через Телеграм, но после общения с одним из пользователей, возникла идея расширить его возможности. Пользователь пожелал, чтобы бот мог одновременно отправлять задачи как в YouGile, так и в Trello.
Изначально я предложил использовать API YouGile и указать адрес колонки в Trello для дублирования задач. Однако, возникла проблема: Trello не принимал задачи, отправленные через email. Как выяснилось, пользователь настроил интеграцию с YouGile через email и указал почту Trello для двойной интеграции, на что бот не был рассчитан. Внесение небольших изменений в алгоритм позволило решить эту задачу. Теперь бот отправляет задачи на оба адреса, обеспечивая пользователя необходимым функционалом.
Сейчас я работаю над проектом «Бот в блокноте». Это конструктор, позволяющий без специальных знаний создавать сложные диалоги для Телеграм-ботов, включая подсчет баллов и отслеживание правильных ответов. В проекте предусмотрена возможность отправки результатов в различные сторонние сервисы, такие как Google Таблицы, группы в Телеграм, и, конечно же, в YouGile. Теперь, с пониманием почтовой интеграции, я вижу возможность отправки данных также и в Trello, а возможно, и в другие сервисы, поддерживающие прием задач через email.
Эта статья получилась небольшой, но может быть полезной для тех, кто использует одновременно YouGile и Trello.
Если вы когда-либо мечтали создать своего телеграм-бота, но вас пугали технические сложности и необходимость программирования или рисования блок-схем, то у меня для вас отличные новости. Представляю вам Бот в блокноте — конструктор телеграм-ботов, который я разработал специально для тех, кто далёк от мира 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%) — и многое-многое другое
Как попробовать
Рабочая версия доступна на сайте https://botpad.ru/landing/ На ней можно отредактировать или создать квиз.