Приветствую тебя читатель, эта статья является первой в цикле о разработке чат-ботов на базе нового инструмента БотоВод.
В цикле хочется поднять следующие темы:
- Знакомство с системой.
- Установка и настройка файловой версии
- Публикация и запуск на примере бота "Привет Мир!".
- Попробуем понять что такое "Управляемый режим".
- Разработка сервисного чат-бота для перевода голосовых сообщений в текст.
Знакомство.
Ботовод не является чат-ботом или конструктором, это комбайн, содержащий всё необходимое для разработки и запуска мобильного приложения на базе чат-бота, а так же массу сопутствующих инструментов.
БотоВод позволяет быстро и просто создавать, отлаживать и обеспечивать параллельную работу любого количества чат-ботов любой сложности. Архитектурно конфигурация состоит из двух подсистем: сервер и визуальный редактор.
В редакторе создаются "Алгоритмы" — логика приложения , а сервер исполняет заданную логику и обеспечивает взаимодействие с мессенджером.
Важная особенность Ботовода — это подход к чат-боту как к микросервису с чётко обозначенными границам, что позволяет, как из кубиков, собирать и поддерживать большие, сложные и стабильные системы.
Полноценная работа уже обеспечена установкой системы в файловом режиме. При работе с WebHook не требуется SSL и фиксированный IP. Бот «hello» из набора примеров готов к работе сразу после развёртывания файловой базы и регистрации чат-бота в мессенджере.
Ботовод обеспечивает параллельную работу множества алгоритмов и чат-ботов.
Среда разработки имеет следующие инструменты:
- Визуальный редактор блок-схем для создания общей логики приложения.
- Редактор кода с подсветкой синтаксиса и автокомплитом, для описания более сложной логики.
- Управляемый режим, в котором Ботовод по сути является посредником между информационной системой (к примеру 1С:ERP или сайтом) клиента и конечным пользователем.
Пример: «управляющей системе» (УС) требуется получить от пользователя подтверждение регистрации. УС, через API «просит» Ботовод запустить соответствующий алгоритм. Ботовод начинает общение с клиентом по указанной логике - запрашивает данные, проверяет, уточняет, после чего передаёт результат в управляющую систему. - Возможность обмена разработками.
- Хранение истории версий разработки с возможностью отката.
- И многое другое, облегчающее и ускоряющее разработку.
Преимущества:
- высокая скорость разработки
- наглядность
- интуитивность
- масштабируемость
- универсальность
- низкая стоимость разработки и поддержки
На данный момент поддерживается Telegram API, но модуль поддержки API может быть адаптирован под работу с любым мессенджером. Телеграм был выбран из-за богатства API и простоты запуска чат-ботов.
Разработчику:
Общее описание:
Архитектура чат-бота создаётся, путём декомпозиции основной задачи на завершённые по смыслу алгоритмы.
Важная особенность Ботовода это диалоговый режим работы с пользователем происходящего по следующему сценарию:
1) Старт диалога:
· Инициируется Пользователем отправкой команды в чат-боте, к примеру «/start», или простого обращения, начинает диалог в мессенджере.
· Инициируется Управляющей системой - через API Ботоводу приходит команда запустить указанный алгоритм для одного или группы пользователей. При этом УС может инициализировать ходящие данные алгоритма.
· Стартует по таймеру, который может устанавливаться и управляющей системой или предыдущим диалогом.
2) При старте диалога открывается «сессия» и до завершения диалога сохраняет данные о пользователе и все накопленные данные.
3) Диалог: происходит обмен, накопление и преобразование данных, для этого приложение может использовать как нативный функционал мессенджера, так и любые, уже созданные алгоритмы. К примеру, движок «Карусель», «Презентация», «Ввод даты» т. д., данные алгоритмы входят в стандартную поставку.
4) Завершение: происходит обработка накопленных данных по заданной логике. В случае запуска диалога управляющей системой данные возвращаются ей.
Инструменты для разработчика:
- Редактор блок схем: Логика приложения описывается предопределёнными блоками. Каждый блок имеет свойства, многие блоки позволяют исполнять код для расширения своего функционала. К примеру блок «Условие» позволяет обрабатывать полученный ответ и осуществлять условный переход. Палитра свойств визуально организована схоже с любым IDE.
- Редактор кода: Свойство «код», позволяющее описывать любое поведение. В данном свойстве доступны экспортные процедуры серверных модулей конфигурации и управление всеми данными сессии, а так же «глобальными данными» ( нем чуть позже). Код в Ботоводе пишется на привычном зыке 1С. Но для повышения читаемости и скорости разработки разработан инструмент «Сокращений». Объяснять долго, приведу пример: «Сессия.ДанныеСессии.ИДЗаявки» в редакторе выглядит так: «!%ИДЗаявки». Разработчик может самостоятельно добавлять/изменять сокращения.
Редактор имеет подсветку синтаксиса как в конфигураторе 1С, «сокращения» выделяются желты цветом. Так же присутствует автокомплит с учётом «сокращений», вызываемый по Ctrl+Space. - Журнал событий: это отладочный инструмент, здесь ведётся подробный лог работы и ошибок. При возникновении ошибки разработчик может понять, в каком алгоритме, на каком шаге появилась ошибка, видит описание ошибки и код её вызвавший.
- Управляемый режим: Выше уже описан, но есть один плюс, непосредственно для разработчика. Очень часто разработчик сталкивается с нечестным заказчиком, который под видом тестирования присваивает исходный код, а дальше торгуется, уменьшая гонорар. Управляемый режим позволяет продемонстрировать взаимодействие с системами заказчика без передачи исходников. Так же вы можете сдавать вашу разработку в аренду, просто подключая к API Ботовода, новых заказчиков.
- Ссылки: Каждый алгоритм это микросервис с чётко обозначенными границами. Плюсы данной архитектуры: простая поддержка, масштабирование и управление. Однажды создав алгоритм вы можете использовать его в разных приложениях, просто создавая на него ссылки и передавая в него необходимые параметры. В стандартной поставке уже присутствует ряд часто используемых алгоритмов таких как: Ввод даты, Ввод данных, Презентация, Карусель...
- Переходы: Ботовод позволяет осуществлять переходы из алгоритма в алгоритм, для чего существует отдельный блок схемы «Подпрограмма». Переход может быть просто передачей управления, а может быть вызовом подпрограммы, по завершении её работы управление и данные будут переданы в вызывающий алгоритм, вложенность таких вызовов не ограничивается.
- Права: Ботовод позволяет назначать роли пользователям чат-бота и в соответствии с ними разделять доступ к различным алгоритмам и веткам алгоритмов.
- Глобальные данные: Инструмент, позволяющий хранить данные между сессиями, такие как настройки, историю. По сути это аналог регистра сведений, но управляемый из пользовательского режима. Механизм предназначен для хранения небольших массивов простых данных и не поддерживает запросов. Создание структуры данных доступно разработчику, наполнение и управление глобальными данными происходит из кода алгоритмов. Глобальные данные могут храниться в разрезе мессенджеров, ботов, алгоритмов и пользователей. Хранить и обрабатывать большие массивы данных следует в управляющей системе.
Здесь перечислены только основные возможности и инструменты. - Общие алгоритмы: это предопределённая группа, содержащая библиотеку часто используемых алгоритмов. В процессе развития проекта содержимое группы будет увеличиваться, также разработчик может наполнять её самостоятельно.
Бизнесу:
Ботовод расширяет функционал ваших информационных систем, интегрируется с любыми системами, это называется «Управляемый режим». Как его использовать?
- Заказываете разработку требуемого приложения к примеру «Личный кабинет клиента», которое позволит вашим клиентам самостоятельно создавать заказы и следить за их движением. Согласование логики работы упрощается использованием легко читаемых блок-схем.
- Принимаете разработку. Разработчик присылает вам «Пакет» с вашим приложением, Либо подключает вашу систему к своему Ботоводу и демонстрирует его работу.
- Вы настраивает свою систему для работы с Ботоводом чрез API, как правило это 10-30 строк кода.
На этом всё. Данная разработка позволит избавить ваших сотрудников от рутинной работы и оптимизировать затраты на персонал.
Бизнес-кейсы:
- Продажа услуги - интересный пример, в котором ИТ компания разрабатывает чат-ботов и предоставляет к ним доступ на коммерческой основе. Примером такого бота может являться чат-бот "интернет магазин", единожды разработанный он может использоваться любым количеством «управляющих систем». На данный момент биллинговой системы, управляющей реализацией услуг, Ботовод не содержит, но её создание планируется.
- Call-центр - автономный бот, обрабатывающий обращения клиентов и ,при необходимости, переадресовывающий их на соответствующего сотрудника. Позволяет снять до 80% нагрузки с ваших операторов.
- Личный кабинет - о нем писалось выше, работает в управляемом режиме.
- Интернет-магазин - классический интернет магазин, с витриной, подбором по параметрам корзиной оформлением и оплатой заказа, работает в управляемом режиме.
- Служба Поддержки - позволяет автоматизировать сбор, ранжирование обращений пользователей, а так же информировать о ходе исполнения заявки. Работает автономно.
- Документооборот - согласование документов через мессенджер. Работает в управляемом режиме, интегрируется с 1С:ЭДО.
Экономия:
- Если работу сотрудника можно формализовать значит её можно автоматизировать, в целом это позволит сэкономить расходы на персонал.
- Ботовод позволяет сэкономить на лицензиях 1С, вся работа с мессенджером построена через HTTP сервис, требующий столько лицензий, сколько пользователей обслуживаются одновременно. Как показывает практика, Бот «Личный кабинет», на обслуживающий 100 пользователей в активном режиме использует только одну клиентскую лицензию! В планах доработка, позволяющая принудительно ограничивать очередь входящих запросов заданным количеством потоков, что не позволит занимать более указанного количества клиентских лицензий.
- Ботовод может работать без стороннего софта, что освобождает вас от трат на лицензий WindowsServer и MSSQL Server.
- Разработку на Ботоводе может вести специалист с минимальным опытом в 1С.
- Ботовод позволяет собирать ваше решение из готовых алгоритмов (аналог подключаемых библиотек прочих языков программирования), с каждым днём библиотека «Общих алгоритмов» расширяется.
Из опыта использования чат-бот запрашивающий местоположение, статус и документы по перевозке у водителя экспедитора, позволяет экономить 200-400 тысяч рублей в месяц, избавляя логистов от рутины, минимизируя человеческий фактор, ускоряя оборачиваемость средств за счет оперативности движения документов.
Краткий экскурс по интерфейсу:
Контрольные показатели позволяют отслеживать состояние системы в реальном времени. Отображать в читаемых пиктограммах текущие события
Автоматизировать реакцию на нештатные ситуации к примеру при проблемах с API-gate мессенджера оповестить Администратора или самостоятельно предпринять какие-либо действия.
Журнал событий аналог журнала регистрации но интерактивный и с более расширенной аналитикой.
Инструмент клонирования позволяет подключать единожды созданный алгоритм к любому количество чат-ботов.
Глобальные данные позволяют интерактивно создавать структуры данных (аналог регистров сведений и констант) и сохранять в них данные между сессиями пользователей. К примеру Бот "Конкурс", привлекающий в канал клиентов на базе реферальных ссылок, использует этот механизм для хранения настроек и подсчета победителя.
Важно: механизм не является заменой регистрам, а предназначен для хранения небольших массивов данных т.к. имеет ряд ограничений в силу своей архитектуры.
Данные могут храниться в разрезе ботов, алгоритмов и клиентов.
Редактор кода помогает описать сложную логику. Содержит инструменты "Сокращения" и "Шаблоны" помогающие ускорить разработку и сделать код максимально читаемым.
Редактор блок-схем позволяет описывать общую логику приложений.
На данный момент доступны такие блоки как: сообщение, меню, процедура, функция, вложенный процесс, задержка.
Коротко о каждом блоке.
Сообщение - текст сообщения может быть задан жестко или вычисляться динамически.
Меню - один из самых используемых блоков, организует диалог с пользователем и ожидает ответ. По результатам происходит условный переход. Поддерживается инлайн и обычная клавиатура. Возможно управление строками и столбцами кнопок. Позволяет создавать вычисляемые сообщения и меню.
Поддерживает обработку таймаута ввода.
Процедура - выполняет вычисления. Часто используется в начале алгоритма для инициализации и в конце для подготовки результата.
Функция - классический условный переход в зависимости от выполненных вычислений.
Вложенный процесс - вызов вложенного алгоритма, или безусловный переход, в другой алгоритм. Часто используется при переходе из меню. Незаменим для улучшения читаемости алгоритма, и структурирования работы в целом.
Задержка - величина задержки может быть или абсолютной, при указании конкретной даты и времени, или относительной.
Резюме:
- Ботовод это простая мощная и гибкая система
- Не требует знания API мессенджера
- Микросервисная архитектура позволяет реализовать и запустить идею любой сложности
- Позволяет легко интегрироваться с любыми системами
- Распространяется свободно
- Демо-версия не ограничена по функционалу
- Проект пережил 2 серьезных реинкарнации и архитектура решения вполне зрелая.