Ebot Server — различия между версиями
Var null (обсуждение | вклад) (→Отправка нескольких сообщений пользователю (Демо 2)) |
Var null (обсуждение | вклад) (→Голосовое управление (Демо 3)) |
||
Строка 210: | Строка 210: | ||
== Голосовое управление (Демо 3)== | == Голосовое управление (Демо 3)== | ||
− | Раздел появился с версией 1.1. | + | Раздел появился с версией 1.1.5 и описан на [[Голосовое управление|странице]]. |
== Модуль Вопросов == | == Модуль Вопросов == |
Текущая версия на 06:13, 8 сентября 2018
Ebot Server - серверная библиотека для обработки пользовательских фраз.
Если в разработке ботов на редакторе ebot.one Вы используете Внешние скрипты то этот фреймворк создан для того чтобы работать с ними было максимально удобно. Перед началом работы с любым ботом, который будет использовать внешние скрипты в количестве большем чем одна штука имеет смысл поставить Ebot Server - он облегчит логирование, подскажет каких переменных не хватает для работы и покажет какие данные вы принимаете с редактора.
Помимо этого файлы могут использоваться как базовый набор файлов админки для клиента (в ней, например, он сможет просматривать активность пользователей, т.к. система ведет учет этих данных автоматически). Данное руководство подскажет как быстро создавать дополнительные страницы; библиотека писалась именно как универсальный стартовый набор, а не итоговый продукт.
Содержание
- 1 Установка
- 2 Хостинг
- 3 Вход в систему
- 4 Админ панель
- 5 Модуль proxy (для ботов в группах Вконтакте) [1.1.3]
- 6 Модули
- 7 Внешние скрипты
- 8 Несколько ботов на одном Ebot Server
- 9 Модуль url_resp (1.1.3)
- 10 Демо примеры
- 11 Внешние скрипты (Демо 1)
- 12 Отправка нескольких сообщений пользователю (Демо 2)
- 13 Голосовое управление (Демо 3)
- 14 Модуль Вопросов
- 15 Пользователи админки
- 16 Регистрация пользователей web "морды"
- 17 Пользователи бота и диалоги
- 18 Языки
- 19 Иконки
Установка
Для установки необходимо:
- Скачать файлы последней версии библиотеки.
- Распаковать архив и положить файлы на сервер хостинга который будет обрабатывать ответ. Пример пути для файлов: ВАШ_СЕРВЕР/public_html/all/ebot_server/ (Если вы хотите выбрать другой путь - не забудтье изменить тогда значение переменной $dir_project главного конфигурационного файла settings.php в корне файловой структуры по пути all/ebot_server/)
- Указать в конфигурационном файле settings.php реквизиты подключения к базе данных
- Открыть стартовую страницу фреймворка по пути http://ВАШ_СЕРВЕР/all/ebot_server/index.php и нажать на кнопку "Создать таблицы":
Далее установочные скрипты сами создадут в базе данных необходимые таблицы для работы фреймворка
После установке в Вашей базе данных появятся следующие таблицы:
Если необходимо - в главном конфигурационном файле settings.php в переменной $db_pre можно указать префикс для таблиц фреймворка.
Хостинг
- Если Вы устанавливаете Ebot Server для бота в telegram - то вполне подойдет хостинг, например, beget.com. Можно воспользоваться бесплатным тарифом (для этого в подвале сайта есть ссылка "Бесплатный хостинг")
- Если Вы устанавливаете Ebot Server для бота в группу Вконтакте - то beget.com подойдет только в случае если вы перейдете на хотя бы минимальный платный тариф (порядка 4 рублей в день).
Вход в систему
После установки система предложить авторизоваться.
Зайти в систему можно под пользователем с со статусом root
login admin
password ebot
После авторизации в системе вы сможете сменить пароль в разделе Профиль
В случае если вы забыли пароль вы сможете вручную установить новые значения логина (переменная $admin_login_new) и пароль (переменная $admin_password_new) в конфигурационном файле settings.php каталога login
Админ панель
После авторизации под администратором (дефолтный администратор имеет в базе данных пользователей статус root) Вас перекинет на модуль (страницу), которая в settings.php в массиве $modules_list у пользователя со статусом root указана стартовой. Эта "стартовость" задается в ключе modules_list. В нашем случае это страница (модуль) admin. Иными словами после авторизации Вас перекинет на страницу index.php?module=admin
Модуль (страница) admin Выводит количество пользователей системы и список из нескольких последних добавленных пользователей. Пользователь admin добавлен системой во время инициализации таблицы пользователей, остальные же добавляются по мере общения с ботом автоматически.
Зайдя по ссылке пользователя можно увидеть его диалог с ботом. Например:
Модуль proxy (для ботов в группах Вконтакте) [1.1.3]
Этот модуль позволяет стать перенаправить трафик данных ботов, созданных для групп Вконтакте "от Вконтакте к редактору и обратно" через Ваш сервер, на котором установлен Ebot Server.
Достоинства этого перенаправления:
- Повышенная самостоятельность и независимость от переменных величин. В случае если по каким-то причинам Вконтакте заблокирует доступ к какому либо (не обязательно Вашему) боту по домену (это может случиться в случае ошибки или сознательного решения Вконтакте) - Ваш бот также может стать недоступным (пока вы не переключите его согласно текущей настройке). В случае использования проксирующего файла Ваш бот будет работать вне зависимости от вышеперечисленных рисков.
Недостатки этого перенаправления:
- Снижается скорость пинга бота на несколько миллисекунд.
- Не все хостинги поддерживают прием данных через POST на бесплатных тарифах. Например, чтобы воспользоваться хостингом beget.com придется оплатить минимальный тариф (порядка 4 рублей в день) - их бесплатный тариф для этой задачи не подойдет. Если же у Вас будет на примете другой, более подходящий хостинг, пропускающий POST запросы на бесплатном тарифе - просьба написать нам и мы выложим тут список из подходящих для работы хостингов.
Ссылка на модуль:
Для включения проксирования необходимо скопировать ссылку на проксирующий скрипт:
И указать его перед получением ссылки на подтверждающий сервер (Инструкция без прокси):
Модули
Модули представляют собой однотипные структуры в фреймворке, которые имеют:
- папку в корневой папке modules
- описание в виде набора свойств в массиве $modules_list главного конфигурационного файла settings.php (корень фреймворка)
- название в файле locale_data.php в корневой папке locale
Все видимые страницы фреймфорка так или иначе соотносятся с одним из модулей. Например, если система не находит запрашиваемый в ссылке модуль - она загрузит модуль 404 (его папку можно обнаружить среди модулей в корневой директории modules). А если, например, модуль найден, но не доступен пользователю с текущим статусом - то загрузится модуль 401.
Структура модулей фреймворка:
Для того чтобы добавить новый модуль в систему необходимо:
- Скопировать в каталоге modules с наиболее подходящего модуля структуру (для внутренних страниц лучше всего подойдет модуль page, а для внешних скриптов модуль demo)
- Описать в виде набора свойств в массиве $modules_list главного конфигурационного файла settings.php (корень фреймворка). Там же можно установить значок для модуля, отображается ли он в верхней панели и то какие пользователи (с каким статусом) будут иметь к модулю доступ.
- Назвать модуль (это имя будет отображаться в заголовке страницы) по аналогии с другими в файле locale_data.php в корневой папке locale
- Переименовать в файле locale_data.php папки locale Вашего нового модуля (именно внутри, т.к. у каждого модуля своя папка locale) функцию чтобы она имела вид function getModuleMas() где Module - название Вашего модуля с заглавной буквы (верхний регистр).
- Открыть страницу модуля в браузере по ссылке http://ВАШ_СЕРВЕР/all/ebot_server/index.php?module=your_module где your_module - название папки модуля в директории modules.
Для внешних скриптов может оказаться достаточно одного модуля, но никто не мешает под каждый внешний скрипт выделять новый модуль.
- После того как вы создали новый модуль, внутри папки scripts во внешних скриптах скорректируйте массив locale_includes (в него должен добавляться единственный ключ - имя модуля)
Внешние скрипты
Внешние скрипты необходимо класть в директорию scripts ваших модулей. В принципе не обязательно создавать для каждого скрипта отдельный модуль, но вы можете взять готовый модуль url_resp, который появился в версии 1.1.3:
Несколько ботов на одном Ebot Server
Конечно же, нет никакой необходимости для каждого бота иметь отдельный хостинг. Несколько экземпларов Ebot Server могут отлично сосуществовать рядом на одном хостинге и работать независимо друг от друга.
Для того, чтобы два и более экземпларов работали рядом с друг другом достаточно:
- складывать копии библиотеки следующим образом (например):
в корневой папке all создать под каждого бота папку с копией файлов библиотеки. Например:
/all/bot_1/тут файлы (inde.php, settings.php, data_utils.php и т.д.)
/all/bot_2/тут файлы (inde.php, settings.php, data_utils.php и т.д.)
- прописать в главном конфигурационном файле settings.php каждого бота путь в переменной $dir_project. Например:
$dir_project = '/all/bot_1';//В /all/bot_1/settings.php файле первого бота
$dir_project = '/all/bot_2';//В /all/bot_1/settings.php файле второго бота
- в настройках каждой копии указать префикс таблиц в базе данных, чтобы таблицы ботов в базе были у каждого свои. Это задается в переменной $db_pre. Например:
$db_pre = "bot_1_";//Префикс таблиц в базе данных первого бота
$db_pre = "bot_2_";//Префикс таблиц в базе данных второго бота
- если вы используете локальные шрифты - то папку со шрифтами имеет смысл вынести на уровень all и поменять путь к ним в файлах index.php каждого бота. Но если не понимаете о чем речь или как это сделать - просто проставьте у переменной $fonts_local в главном конфигурационном файле settings.php каждого бота значение false
В результате доступ к панелям управления ботами будет, например, такой:
Модуль url_resp (1.1.3)
Для работы с внешними скриптами Вы можете взять готовый модуль url_resp и складывать скрипты в его папку scripts. Но если проект сложный и внешних скриптов много, то тогда имеет смысл группировать внешние скрипты по нескольким модулям.
Пример настройки команды:
Пример логирования работы скрипта в Ebot Server (красным подчеркнута ссылка, которую можно скопировать в поле URL resp команды):
Демо примеры
После установки фреймворка в системе будет доступно несколько демо примеров. Для их корректной работы необходимо заполнить требуемые переменные в файле settings.php и импортировать файл структуры команд в редакторе ботов. Файл находится в корневой директории фреймворка demos.
После импорта поменяйте в редакторе ботов в структуре команд пути к демо скриптам. Модифицировать нужно будет значения URL Resp следующих команд:
- Demo
- Demo2
- Demo3
- Заказ
Внешние скрипты (Демо 1)
После того как вы установили систему и авторизовались в стартовом наборе файлов фреймворка на главной странице вам будут доступны ссылки на несколько демо модулей.
Что из себя представляет модуль demo? Пользователям редактора ботов, которые уже знакомы с понятием внешнего скрипта будет проще всего - модуль демо это и есть внешний скрипт, обернутый в оболочку модуля - т.е. Это обычный внешний скрипт (он находится в папке scripts директории модуля), к которому подключено пару файлов с функциями ведения логов, локализация (языки) и т.д..
Для тех кто не знаком с таким понятием редактора ботов как внешний скрипт следует уделить немного времени и почитать нашу Вики. Но если коротко - это скрипт, который обработает ответ пользователя. Т.е. это скрипт, который лежит на сервере, и к которому обратится редактор в случае если он указан в структуре редактора как отвечающий на некоторую конкретную команду. Допустим, есть команда Demo и пользователь бота вводит ее боту (или нажимает на кнопку с надписью Demo). Если у команды с именем Demo в редакторе указан в поле URL Resp http путь к скрипту на сервере - то редактор как только получит от пользователя бота текст Demo вызовет указанный скрипт и передаст пользователю то, что получил от скрипта. Таким образом можно создавать динамичных и интерактивных ботов, а не выдавать скучные неизменные от запроса к запросу фразы.
Пример вызова команды Demo (структуру демо бота можно найти среди файлов фреймворка в корневой директории demos - файл export_2018-06-09_00-27-33.ebot). Про импорт ботов можно прочесть в разделе Импорт ботов.
Результат общения с внешним скриптом /modules/demo/scripts/get_demo.php (именно к этому скрипту прописано http обращение редактора в структуре редактора в настройках команды Demo) будет зафиксирован в логе системы и отражен на странице модуля:
Также на странице можно увидеть полученные от редактора в последнем запросе данные. Настроить этот вид лога можно в конфигурационном файле settings.php самого модуля.
Если для работы модуля недостаточно определения каких-либо переменных в конфигурационном файле settings.php - система даст об этом знать:
Отправка нескольких сообщений пользователю (Демо 2)
Второе демо демонстрирует работу Рассылочных механизмов, а именно - Отправка произвольного сообщения пользователю. Для этого используется класс sys_sender, файл которого лежит в корневой папке фреймворка sys.
Демо модуль проверяет подключенность к рассылочному механизму (он платный) и проверяет не пусты ли переменные, отвечающие за работу библиотеки sys_sender.
Голосовое управление (Демо 3)
Раздел появился с версией 1.1.5 и описан на странице.
Модуль Вопросов
Модуль вопросов позволяет упростить последовательный ввод данных от пользователя. Даже если в вашей цепочке вопросов будет 100 вопросов их обработает не 100 файлов а всего один. Ограничением на текущий момент этого механизма является то, что ответом пользователя может быть только строка (на текущий момент). Т.е. Ни изображение, ни файл, механизм принять не сможет. В дальнейшем возможно механизм дополнится и этими возможностями.
После установки фреймворка из верхней панели Вам будет доступен модуль Вопросы и демо группа вопросов с примером настроек того какие файлы задействованы при ответах:
Под каждый вопрос система создаст поле в таблице пользователей и туда будет складывать ответы если пользователь активирует цепочку вопросов.
Пользователи админки
При установке в созданную таблицу пользователей система автоматически добавит администратора со статусом root. У такого пользователя есть свой логин и пароль для авторизации в системе.
Также в таблицу пользователей будут добавляться все те кто общается с ботом. Они добавляются в таблицу без логинов и паролей и имеют статус user.
С версии 1.1.5 появилась поддержка множественных сессий. При авторизации пользователя старая сессия не стирается, а добавляется новая. Сессии пользователей хранятся в таблице $name_table_sessions
Регистрация пользователей web "морды"
Помимо того что сам Ebot Server позволяет удобно хранить внешние скрипты, вести логи диалогов с пользователями бота - web интервейс можно использовать и как площадку для профилей пользователей бота. Например, если бот предполагает сложный интерфейс, часть можно вынести в web и в этом случае Ebot Server будет выступать в роли сайта, где можно разместить личный кабинет пользователей бота.
Вам нужно будет чтобы в вашей системе люди регистрировались и могли зайти под своим логином и паролем - поменяйте значение переменной $registration в главном конфигурационном файле settings.php на true и в системе станут доступными два модуля (registration и remind).
Регистрация в системе возможна несколькими способами. Способы можно указать в массиве $registration_mas, раскомментировав соответствующие элементы массива.
Регистрация через вк:
В этом случае также придется указать переменные $vk_apiId и $vk_APP_SHARED_SECRET. Их значения можно получить тут.
Регистрация через telegram:
В этом случае также придется указать имя бота через которого вы планируете регистрацию пользователей. Это можно сделать в переменной $Registration_bot_name того же конфигурационного файла.
Чтобы пользователи могли получить регистрационный код от бота или код для восстановления пароля необходимо добавить в боте 2 команды. Имена их не имеют особого значения, главное чтбы они ссылались на нужные скрипты. Например:
Имя команды: Получить ключ
Url Resp: http://ВАШ_СЕРВЕР/all/ebot_server/modules/registration/scripts/get_hash.php
и
Имя команды: Восстановление пароля
Url Resp: http://ВАШ_СЕРВЕР/all/ebot_server/modules/remind/scripts/get_remind.php
Импорт файл с командами бота можно скачать по ссылке
Пользователи бота и диалоги
Количество пользователей, а также их переписку с ботом можно посмотреть в модуле "Админ панель"
Языки
Перечень языков которые вы хотите иметь в системе следует указать в locale_utils.php в функции getLangs
Базовые слова системы (и их перевод), такие как названия базовых модулей (разделов) и т.д. хранятся в файле locale_data.php корневой директории locale
Фразы модулей хранятся в locale_data.php по пути modules/ИМЯ МОДУЛЯ
Русскоязычные (и другие языки) имена модулей находятся в файле locale_data.php корневой директории locale.
Иконки
По умолчанию файлы иконок загружаются с fontawesome.com но можно пожертвовать местом на хостинге (19,4 Mb) ради скорости загрузки иконок и скачать их (всю библиотеку) файл fonts.zip (см. страницу скачки Ebot Server). В этом случае папку fonts следует положить в корень проекта и прописать в файле конфига settings.php в переменной $fonts_local = true.