Ebot Server — различия между версиями

Материал из боты telegram - ebot.one - редактор ботов
Перейти к: навигация, поиск
(Отправка нескольких сообщений пользователю (Демо 2))
(Голосовое управление (Демо 3))
 
Строка 210: Строка 210:
 
== Голосовое управление (Демо 3)==
 
== Голосовое управление (Демо 3)==
  
Раздел появился с версией 1.1.4 и описан на [[Голосовое управление|странице]].
+
Раздел появился с версией 1.1.5 и описан на [[Голосовое управление|странице]].
  
 
== Модуль Вопросов ==
 
== Модуль Вопросов ==

Текущая версия на 06:13, 8 сентября 2018

Ebot Server - серверная библиотека для обработки пользовательских фраз.

Если в разработке ботов на редакторе ebot.one Вы используете Внешние скрипты то этот фреймворк создан для того чтобы работать с ними было максимально удобно. Перед началом работы с любым ботом, который будет использовать внешние скрипты в количестве большем чем одна штука имеет смысл поставить Ebot Server - он облегчит логирование, подскажет каких переменных не хватает для работы и покажет какие данные вы принимаете с редактора.

Помимо этого файлы могут использоваться как базовый набор файлов админки для клиента (в ней, например, он сможет просматривать активность пользователей, т.к. система ведет учет этих данных автоматически). Данное руководство подскажет как быстро создавать дополнительные страницы; библиотека писалась именно как универсальный стартовый набор, а не итоговый продукт.


Ebot server w logo.png

Установка

Для установки необходимо:

  • Скачать файлы последней версии библиотеки.
  • Распаковать архив и положить файлы на сервер хостинга который будет обрабатывать ответ. Пример пути для файлов: ВАШ_СЕРВЕР/public_html/all/ebot_server/ (Если вы хотите выбрать другой путь - не забудтье изменить тогда значение переменной $dir_project главного конфигурационного файла settings.php в корне файловой структуры по пути all/ebot_server/)
  • Указать в конфигурационном файле settings.php реквизиты подключения к базе данных
  • Открыть стартовую страницу фреймворка по пути http://ВАШ_СЕРВЕР/all/ebot_server/index.php и нажать на кнопку "Создать таблицы":


Ebot server w init.png


Далее установочные скрипты сами создадут в базе данных необходимые таблицы для работы фреймворка

Ebot server w init done.png

После установке в Вашей базе данных появятся следующие таблицы:

Ebot server w init tables.png

Если необходимо - в главном конфигурационном файле 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 добавлен системой во время инициализации таблицы пользователей, остальные же добавляются по мере общения с ботом автоматически.

Ebot server admin 1.png

Зайдя по ссылке пользователя можно увидеть его диалог с ботом. Например:

Ebot server admin 2.png

Модуль proxy (для ботов в группах Вконтакте) [1.1.3]

Этот модуль позволяет стать перенаправить трафик данных ботов, созданных для групп Вконтакте "от Вконтакте к редактору и обратно" через Ваш сервер, на котором установлен Ebot Server.

Достоинства этого перенаправления:

  • Повышенная самостоятельность и независимость от переменных величин. В случае если по каким-то причинам Вконтакте заблокирует доступ к какому либо (не обязательно Вашему) боту по домену (это может случиться в случае ошибки или сознательного решения Вконтакте) - Ваш бот также может стать недоступным (пока вы не переключите его согласно текущей настройке). В случае использования проксирующего файла Ваш бот будет работать вне зависимости от вышеперечисленных рисков.

Недостатки этого перенаправления:

  • Снижается скорость пинга бота на несколько миллисекунд.
  • Не все хостинги поддерживают прием данных через POST на бесплатных тарифах. Например, чтобы воспользоваться хостингом beget.com придется оплатить минимальный тариф (порядка 4 рублей в день) - их бесплатный тариф для этой задачи не подойдет. Если же у Вас будет на примете другой, более подходящий хостинг, пропускающий POST запросы на бесплатном тарифе - просьба написать нам и мы выложим тут список из подходящих для работы хостингов.

Ссылка на модуль:

Proxy 1.png

Для включения проксирования необходимо скопировать ссылку на проксирующий скрипт:

Proxy 2.png

И указать его перед получением ссылки на подтверждающий сервер (Инструкция без прокси):

Proxy 3.png

Модули

Модули представляют собой однотипные структуры в фреймворке, которые имеют:

  • папку в корневой папке modules
  • описание в виде набора свойств в массиве $modules_list главного конфигурационного файла settings.php (корень фреймворка)
  • название в файле locale_data.php в корневой папке locale

Все видимые страницы фреймфорка так или иначе соотносятся с одним из модулей. Например, если система не находит запрашиваемый в ссылке модуль - она загрузит модуль 404 (его папку можно обнаружить среди модулей в корневой директории modules). А если, например, модуль найден, но не доступен пользователю с текущим статусом - то загрузится модуль 401.

Структура модулей фреймворка:

Ebot server w init dirs.png

Для того чтобы добавить новый модуль в систему необходимо:

  • Скопировать в каталоге 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

В результате доступ к панелям управления ботами будет, например, такой:

http://ХОСТИНГ/all/bot_1

http://ХОСТИНГ/all/bot_2

Модуль url_resp (1.1.3)

Для работы с внешними скриптами Вы можете взять готовый модуль url_resp и складывать скрипты в его папку scripts. Но если проект сложный и внешних скриптов много, то тогда имеет смысл группировать внешние скрипты по нескольким модулям.

Пример настройки команды:

Module url resp 1.png

Пример логирования работы скрипта в Ebot Server (красным подчеркнута ссылка, которую можно скопировать в поле URL resp команды):

Module url resp 2.png

Демо примеры

После установки фреймворка в системе будет доступно несколько демо примеров. Для их корректной работы необходимо заполнить требуемые переменные в файле settings.php и импортировать файл структуры команд в редакторе ботов. Файл находится в корневой директории фреймворка demos.

После импорта поменяйте в редакторе ботов в структуре команд пути к демо скриптам. Модифицировать нужно будет значения URL Resp следующих команд:

  • Demo
  • Demo2
  • Demo3
  • Заказ

Внешние скрипты (Демо 1)

После того как вы установили систему и авторизовались в стартовом наборе файлов фреймворка на главной странице вам будут доступны ссылки на несколько демо модулей.

Ebot server w logo.png

Что из себя представляет модуль demo? Пользователям редактора ботов, которые уже знакомы с понятием внешнего скрипта будет проще всего - модуль демо это и есть внешний скрипт, обернутый в оболочку модуля - т.е. Это обычный внешний скрипт (он находится в папке scripts директории модуля), к которому подключено пару файлов с функциями ведения логов, локализация (языки) и т.д..

Для тех кто не знаком с таким понятием редактора ботов как внешний скрипт следует уделить немного времени и почитать нашу Вики. Но если коротко - это скрипт, который обработает ответ пользователя. Т.е. это скрипт, который лежит на сервере, и к которому обратится редактор в случае если он указан в структуре редактора как отвечающий на некоторую конкретную команду. Допустим, есть команда Demo и пользователь бота вводит ее боту (или нажимает на кнопку с надписью Demo). Если у команды с именем Demo в редакторе указан в поле URL Resp http путь к скрипту на сервере - то редактор как только получит от пользователя бота текст Demo вызовет указанный скрипт и передаст пользователю то, что получил от скрипта. Таким образом можно создавать динамичных и интерактивных ботов, а не выдавать скучные неизменные от запроса к запросу фразы.

Ebot server demo 1.png

Пример вызова команды Demo (структуру демо бота можно найти среди файлов фреймворка в корневой директории demos - файл export_2018-06-09_00-27-33.ebot). Про импорт ботов можно прочесть в разделе Импорт ботов.

Результат общения с внешним скриптом /modules/demo/scripts/get_demo.php (именно к этому скрипту прописано http обращение редактора в структуре редактора в настройках команды Demo) будет зафиксирован в логе системы и отражен на странице модуля:

Также на странице можно увидеть полученные от редактора в последнем запросе данные. Настроить этот вид лога можно в конфигурационном файле settings.php самого модуля.

Ebot server log data from file.png


Если для работы модуля недостаточно определения каких-либо переменных в конфигурационном файле settings.php - система даст об этом знать:

Ebot server errors.png

Отправка нескольких сообщений пользователю (Демо 2)

Второе демо демонстрирует работу Рассылочных механизмов, а именно - Отправка произвольного сообщения пользователю. Для этого используется класс sys_sender, файл которого лежит в корневой папке фреймворка sys.

Демо модуль проверяет подключенность к рассылочному механизму (он платный) и проверяет не пусты ли переменные, отвечающие за работу библиотеки sys_sender.

Ebot server demo2 1.png
Ebot server demo2 2.png

Голосовое управление (Демо 3)

Раздел появился с версией 1.1.5 и описан на странице.

Модуль Вопросов

Модуль вопросов позволяет упростить последовательный ввод данных от пользователя. Даже если в вашей цепочке вопросов будет 100 вопросов их обработает не 100 файлов а всего один. Ограничением на текущий момент этого механизма является то, что ответом пользователя может быть только строка (на текущий момент). Т.е. Ни изображение, ни файл, механизм принять не сможет. В дальнейшем возможно механизм дополнится и этими возможностями.

После установки фреймворка из верхней панели Вам будет доступен модуль Вопросы и демо группа вопросов с примером настроек того какие файлы задействованы при ответах:

Ebot server questions 1.png


Ebot server questions 2.png


Под каждый вопрос система создаст поле в таблице пользователей и туда будет складывать ответы если пользователь активирует цепочку вопросов.


Ebot server questions 3.png

Пользователи админки

При установке в созданную таблицу пользователей система автоматически добавит администратора со статусом 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

Импорт файл с командами бота можно скачать по ссылке

Пользователи бота и диалоги

Количество пользователей, а также их переписку с ботом можно посмотреть в модуле "Админ панель"

Module admin 1.png
Module admin 2.png

Языки

Перечень языков которые вы хотите иметь в системе следует указать в 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.

Читать на других языках: eng / deu