Программный продукт предназначен для создания телеграм-ботов на платформе 1С:Предприятие 8 в интерактивном режиме с помощью блок-схем. Позволяет создать ботов с минимальными трудозатратами в любой конфигурации на платформе 1С:Предприятие 8.3.
Снятие конфигурации с поддержки не требуется.
Есть уже множество решений, как платных так и бесплатных, для создания телеграм-ботов (их легко найти на Инфостарт). Однако ГрафиБот отличается от всех прочих конструкторов. Главные отличительные особенности этого конструктора - это:
- методология разработки: как известно, разработка программного обеспечения представляет собой циклический процесс состоящий из множества итераций этапов проектирования, согласования с заказчиком, прототипирования и непосредственно разработки. Причём для проектирования и согласования с заказчиком довольно плохо подходят естественные языки, очень часто оказывается так, что заказчик и разработчик плохо понимают друг друга. В этом случае на помощь приходят графические языки проектирования, например такие как UML или язык блок-схем. ГрафиБот реализует технологию "разработка через проектирование", то есть достаточно просто нарисовать блок-схему бота и он уже будет работать.
- уровень абстракции максимально адаптирован для разработчиков 1С: при разработке телеграм-бота не надо задумываться как устроен Telegram Bot API, какие у него методы и структуры данных. ГрафиБот позволяет разработчику оперировать привычными типами, такими как СписокЗначений, Дата, Структура, Ссылки объектов БД, ...
- минимальное количество каких-либо свойств и галочек: чем меньше галочек, тем проще помнить их назначение.
- реализация справочной системы: никто не любит читать документацию, а я не люблю её писать. Вся требуемая документация интегрирована непосредственно в конструктор в виде мастеров, подсказок и примеров. А также есть обучающие видео.
- скорость и наглядность разработки: естественный результат сочетания предыдущих пунктов. Создание бота с использованием ГрафиБота очень простая задача для любого программиста 1С.
- перед покупкой можно "пощупать" конструктор на нашем демо-сервере.
- доступны демо-боты, созданные на базе ГрафиБот:
- Заказ пиццы: http://t.me/GBC_PizzaDemoBot
- Демонстрация ввода даты, периода, времени: http://t.me/GBC_DateTimeDemoBot
- Бот для TMS Легкая Логистика: Планирование доставки, прототип: http://t.me/GBC_LL_ADP_DemoBot
- Личный кабинет сотрудника для ЗУП 3.1
- Бот поддержки пользователей курса DevOps портала ”Инфостарт”: http://t.me/InfostartEduBot
- конструктор представляет собой расширение для любой конфигурации на платформе 1С предприятия 8.3. Это значит что для интеграции бота в вашу информационную систему, вам не придется менять менять конфигурацию вашей системы.
Видео
Ниже будет много букв, поэтому предлагаю ознакомительный ролик - как создать работающего бота, которого не стыдно показать заказчику, менее чем за 20 минут:
Большой обзор (не вдаваясь в детали, про отдельные функции - видео ниже):
Чат с оператором:
Чат с администратором:
Инлайн-клавиатуры:
Ввод даты, периода, времени:
Обработка команд и внешнее управление ботом:
Вложенные блок-схемы:
Как попробовать?
Вы можете ознакомиться с конструктором ботов на нашем демо-сервере. В соответствии с информационным письмом № 21502 "О правомерном предоставлении удаленного демо-доступа к программам "1С:Предприятие", демо-доступ предоставляется по запросу.
Создание бота
Конструктор реализован в виде расширения для 1С:Предприятия 8.3 для совершенно любой конфигурации. Работа с конструктором начинается с установки расширения в конфигурацию. Этот этап я рассматривать не буду.
После установки расширения в системе появляется новая подсистема 'Конструктор телеграм ботов'. В интерфейс подсистемы выведены только 2 объекта - боты и алгоритмы. Бот создается путем создания элемента справочника 'Боты'. Если вы никогда не создавали ботов - имеет смысл нажать кнопку со знаком вопроса и в этом случае на форме появляются подсказки.
Следуя инструкциям на экране, переходим по ссылке и создаём телеграм бота:
Надо знать только токен - вводим его в соответствующее поле и нажимаем кнопку 'Получить информацию'. Если бот работоспособен - 'Имя' и 'Наименование' будут заполнены автоматически.
Далее бота надо сохранить.
Бот как MVP*
*wiki/Минимально_жизнеспособный_продукт
Бот создан, теперь надо описать его логику работы. Нажимаем кнопку 'Конструктор блок-схемы'.
Откроется уже заполненная блок-схема. Это такой базовый вариант, который позволяет ознакомиться с методикой описания бизнес-логики бота.
Этот бот:
- Приветствует пользователя по имени.
- Показывает меню и реагирует на нажатие кнопок меню (расположение кнопок зависит от их расположения на блок-схеме);
- Умеет ожидать ввода данных от пользователя;
- Умеет выводить эхо
- Реагирует на неожиданный ввод (то есть когда мы ожидаем нажатия кнопки, а собеседник вводит текст или присылает какой-нибудь документ, например).
- Запускает фоновый поток и выводит из него сообщение.
Если нажать кнопку со знаком вопроса, появятся подсказки, что здесь к чему. Нажатие на маленький знак вопроса выводит подробное описание функций кнопок.
На этом этапе уже можно проверить, как это всё выглядит в телефоне. Закройте блок-схему и запустите бота. Для теста вполне отлично работает режим 'long polling' - выберите его и нажмите кнопку 'Установить'. Индикатор 'Задание' должен перейти в статус 'активно'.
Теперь можно найти бота, ввести команду /start и можно тыкать куда ни попадя:
Заказ пиццы
В текущем виде бот мало что умеет, но мы очень быстро его обучим.
Откройте блок-схему и для первых двух кнопок укажите соответствующие действия путем двойного клика на кнопке - кнопка должна изменить цвет. Текст блока - это текст, который будет выведен пользователю на кнопке. Таким образом первые две кнопки имеют специальное назначение и при нажатии отправляют соответственно данные собеседника (включая имя и номер телефона) и географические координаты. С помощью этих кнопок покупатель пиццы может представиться и сообщить куда доставить заказ. Перед отправкой личной информации телеграм запрашивает пользователя подтверждения отправки этих данных.
На кнопку 4 Мы повесим вывод списка каталога пиццы. Для этого мы добавим блок список, перенесем стрелку от блока кнопки 4 к блоку списка.
И опишем реакцию бота на действия со списком. Основные действия собеседника могут быть:
- он может выбрать элемент списка;
- может набрать произвольный текст или прислать файл;
- если в блоке списка более чем два варианта реакции - у собеседника появляется нижнее меню и соответственно возможность выбора из этого меню.
Разберёмся сначала с двумя последними.
Если собеседник вводит текст, напомним ему, что мы ждём от него выбор из списка. Для этого добавим блок действия и в тексте блока напишем 'Выберите пиццу'. Исходящую стрелку блока действия перетащим на вход блока списка.
При нажатии на кнопку 'Отмена' перейдем в основное меню, перетащив соответствующую стрелочку к входу блока 'Действие' с пустым текстом и алгоритмом - этот блок ничего не делает, но ведет к блоку 'Выберите действие' - так легче не запутаться в стрелках. При нажатии на другие кнопки меню - выполним нужное действие.
Таким образом при любом вводе кроме выбора из списка или нажатия на кнопку меню мы попадаем снова в выбор из списка.
Теперь осталось сформировать список выбора. Конструктор поддерживает два вида списков:
- без картинок - список формируется как набор кнопок, привязанных к одному сообщению.
- с картинками - список формируется как набор сообщений с картинками с единственной кнопкой под каждым сообщением.
Для формирования списка выбора необходимо указать алгоритм создания этого списка. Двойным кликом на блоке списка откроем список алгоритмов и добавим новый.
При вводе нового алгоритма, текст алгоритма заполняется примером создания списка с картинками - каталог пиццы. Таким образом для знакомства с поведением конструктора необходимо всего лишь указать название алгоритма и сохранить элемент справочника. При выборе алгоритма текст блока меняется на название алгоритма. Если собеседник бота выберет пункт списка, то в переменную 'Данные' будет помещен этот элемента списка. Далее его можно обрабатывать.
Получим:
При выборе собеседником пункта меню или пункта списка - меню, список и выбор пользователя удаляются с экрана. Если мы хотим показать собеседнику его выбор - мы должны сделать это явно отправив ему соответствующее сообщение. Сейчас мы выведем пользователю его выбранный вариант пиццы.
Получим:
Создание и модификация меню
Теперь разберёмся с меню. Как мы уже знаем - меню собирается из жёлтых блоков. Такие блоки могут быть как самостоятельными меню с одной кнопкой, так и могут быть сгруппированы в блок. Количество строк меню и количество кнопок в каждой строке определяется расположение жёлтых блоков на блок-схеме - сколько строк таких блоков в группе и сколько элементов в каждой строке столько будет и на экране телефона. Иногда бывают ситуации, когда мы хотим генерировать структуру меню на лету. Этот конструктор так тоже умеет, в тексте нового алгоритма есть пример создания меню. Но так же он умеет скрывать часть пунктов меню по условию. Для этого надо просто добавить блок условия перед блоком меню.
И вот что получилось:
Документы, фото, ...
Теперь разберём работу с документами, фото и видео. Пользователь может прислать нам всё это, а мы можем всё получить.
Учитывая что файлы могут быть большие - лучше их загружать в фоновом потоке, отдельно от потока общения с собеседником. Для создания фонового потока используются блоки 'Разделение' и 'Фоновая обработка'. В фоновом потоке доступен контекст в реальном времени, переменная 'Данные' фиксируется на момент создания фонового потока.
Фоновые потоки могут также использоваться для подготовки данных передаваемых собеседнику. Например это могут быть отчёты которые формируются долго или любая другая информация. Вероятный сценарий:
- Бот получает от собеседника задачу на формирование отчета
- Бот сразу отвечает: 'Всё будет сделано в лучшем виде через примерно ХХ единиц времени'
- Бот запускает фоновый поток
- Фоновый поток формирует данные и передаёт их потребителю
API
Для хранения данных чата предназначена переменная 'Контекст'. Тип этой переменной - Структура или ФиксированнаяСтруктура в зависимости от возможности изменения контекста. Изменение этой переменной возможно только в блоках 'Действие' у которых установлена галочка 'Изменяет контекст'. Алгоритм таких блоков выполняется в транзакции.
Для удобства редактирования алгоритмов в редакторе текста алгоритма можно использовать объект 'ч.' (сокращение от 'Чат'):
Отладка
Для минимизации ошибок в редакторе блок-схемы предусмотрен непрерывный контроль корректности блок-схемы. Если допущена какая-либо ошибка - ошибочный блок или стрелка будет выделен красным цветом и слева появится список ошибок. Двойным кликом в списке ошибок можно перейти к ошибочному блоку:
Однако не все ошибки на блок-схеме критичны для логического потока бота. Поэтому сохранение блок-схемы с ошибками не заблокировано.
При возникновении ошибки при общении с собеседником, бот сообщит ему краткое описание ошибки, и продублирует это сообщение в чат указанный в свойствах бота как 'Чат уведомления об ошибках', но уже с возможностью показать подробную информацию (или скрыть ее):
Все ошибки фиксируются в журнале регистрации:
Эмодзи
Поддержка эмодзи кодов в меню и списках (например: 'U+1F6AB+ Отмена'). Но конечно можно и без кодов, вставляя нужный символ в текст: '🚫 Отмена'.
Поддержка многоколоночных списков - если значением элемента списка является список значений, то элементы вложенного списка выстраиваются в строку.
Webhook - великий и ужасный...
В интернете и на инфостарте есть множество инструкций по настройке webhook для телеграм (как настраивать apache, создавать сертификаты, ...). Но я напишу свою - как настроить webhook менее чем за 1 минуту...
Немного теории
Телеграм умеет передавать данные тремя способами:
- short polling - это мы должны часто (например раз в секунду) запрашивать новые данные. Я считаю этот способ неприемлемым в промышленной среде, поэтому в данном конструкторе он не реализован.
- long polling - мы отправляем запрос, а телеграм отвечает на этот запрос только когда появляются новые данные. Считаю что этот способ имеет право на жизнь в промышленной среде, но реализация этого способа требует компромиссных решений (например есть ограничения в файловой базе). Вместе с тем этот способ может быть единственно приемлемым если не допустимо открывать порты на вход снаружи.
- webhook - телеграм сам присылает нам новые данные по мере их появления. Этот способ требует наибольших усилий по настройке на стороне владельца бота.
Настройка webhook
Хотелось бы ограничить инструкцию следующей фразой:
"Откройте "Помощник настройки webhook" в меню Сервис, проверьте параметры и нажмите желтую кнопку"
Но так не получится.
- Для начала надо установить web сервер apache с поддержкой ssl - его можно скачать в этой публикации. Просто установить, ничего настраивать не надо. Далее этот компьютер будем называть "web-сервер".
- Затем надо разобраться с внешним адресом:
- если у вас статический IP - отлично.
- если динамический - надо настроить динамический DNS. В интернете множество бесплатных сервисов для этого, а так же поддержка этой технологии может быть у вас в роутере.
- Надо настроить переадресацию портов - внешний порт 443 (или 8443, 80, 88) надо перенаправить на порт 443 web-сервера. Это настраивается в параметрах роутера.
- И только теперь запускаем 1С на web-сервере от имени администратора, открываем "Помощник настройки webhook" в меню Сервис, проверяем параметры и нажимаем желтую кнопку...
"Помощник настройки webhook" все проверит, настроит apache, сгенерирует сертификат, создаст публикацию HTTP сервиса, ...
Если у вас уже настроен apache - так же можно использовать помощник - ничего не сломается. Но на всякий случай перед изменением файла 'httpd.conf' помощник создаст его бекап-копию с уникальным именем.
О системе
Решение содержит заимствованные (с явным согласием их авторов) элементы публикаций:
//4098.ru/public/1266087/
Система разработана для платформы 1С Предприятие 8.3.16 (режим совместимости 8.3.14).
Конфигурация не содержит закрытых модулей. Для использования системы требуется лицензионный ключ, который вы получите при покупке системы.
Одна копия конструктора лицензируется на одну компанию - владельца ботов. Иными словами - не допускается тиражирование конструктора компанией-интегратором. На каждое внедрение должна быть приобретена отдельная поставка.
Вознаграждение за каждый реальный отзыв 3$m, за отрицательный 5$m.
Гарантия возврата денег
ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Для возврата оплаты просто свяжитесь с нами.