Описание для разработчиков
Чат бот Киса состоит из четырёх логических частей - инициализирующей программы,
пользовательского интерфейса, чат бота Киса и серверных программ.
Составные части проекта написаны, с клиентской стороны, на языке
JavaScript, c использованием стандартов
HTML, CSS, а с
серверной стороны на языке Perl, с использованием технологии SSI.
Взаимодействие серверной и клиентской сторон использует стандарт XML.
Все фалы проекта располагаются согласно классическому применению
пространства имён с базой /library для public-html файлов и /cgi-bin/library для серверных исполняемых
файлов. Все файлы имеют общепринятое для их типов расширение, которое не включается в строку пространства имён.
Однако, все файлы группируются по языкам программирования в явном виде.
Например, класс с именем su.bot.javascript.chatbot.console.Monitor находится
по адресу /library/su/bot/javascript/chatbot/console/Monitor.js.
Все версии файлов (классов) находятся относительно текущей в директории с именем искомого класса написанного в нижнем регистре,
директорией-смещением builds, и директорией версией
для данного класса. Т.е. версия 20070223 для класса su.bot.javascript.chatbot.console.Monitor находится в
директории
/library/su/bot/javascript/chatbot/console/monitor/builds/20070223/Monitor.js
В настоящее время в проекте используются три главные ветки пространства имён:
- com.oclib - для классов и файлов общего пользования в соответствии с Open Class Libary.
- su.bot - для классов и файлов, общих для всех создаваемых роботов или групп (например, su.bot.javascript.chatbot - фундаментальные и общие классы для всех чат ботов).
- su.bot.kisa - для классов и файлов, специфических для проекта чат бот Киса.
Опишем далее основные части чат бота Киса.
Инициализирующая программа (su.bot.kisa.javascript.demo или
su.bot.kisa.javascript.demo-lite, далее demo.js) дожидается загрузки страницы,
подгружает необходимые дополнительные классы, инициализирует их подгружаемыми данными,
запускает классы пользовательского интерфейса на слушание друг-друга, ожидает реакции на
вводимые пользователем данные для передачи их в пользовательский интерфейс.
Пользовательский интерфейс состоит из класса пользовательской консоли
(su.bot.javascript.chatbot.console.UserConsole)
и класса монитора вывода сообщений (su.bot.javascript.chatbot.console.Monitor).
Текущая реализация чат бота построена по принципу конкуренции
элементарных чат-ботов, центральной частью, которой является менеджер роботов
(su.bot.javascript.chatbot.botsmanager.BotsManager),
который, при поступлении пользовательского сообщения
опрашивает зарегистрированные у него элементарные чат боты через метод getResponse(message) и получает
от них ответ. Ответ с максимальной релевантностью становится главным ответом и передаётся в монитор
вывода сообщений для вывода. Релевантность и загружаемая таблица для каждого элементарного чат бота
настраивается в файле demo.js. Следует отметить, что для правильной работы чат бота необходима
правильная настройка релевантности ответов каждого элементарного чат бота с целью недопущения вывода
менее качественного ответа при наличии более качественного.
Каждый элементарный чат-бот происходит от суперкласса
(su.bot.javascript.chatbot.chatbots.ChatBot).
И должен реализовать методы getFirstMessage(language) - для получения первого сообщения на указанном языке (language) и/или
getResponse(message) для получения ответа на введённое пользователем сообщение (message).
В текущей версии элементарыне чат боты делятся на программные (те, которые генерируют ответ только
исходя из вопроса пользователя и собственного программного кода, например реализация математических функций),
табличные (те, которые генерируют ответ только сравнивая каким-либо образом данные введённые пользователем с таблицей ответов),
таблично программные (те, которые генерируют ответ после анализа сообщения пользователя выбирая ответ в зависимости от
определённого ими состояния, например, генерация ответа на пустой или повторный ввод).
Текущая реализация чаб бота Киса содержит реализации следующих элементарных чат ботов:
- Класс калькулятор (su.bot.kisa.javascript.chatbots.Calculator) - анализирует вводимую пользователем информацию на соответствие приказу произвести вычисления, и, в случае соответствия проводит их.
- Класс дата-время (su.bot.kisa.javascript.chatbots.DateTime) - анализирует вводимую пользователем информацию на соответствие вопросу о текущих времени и дате, и, в случае соответствия отвечает на поставленный вопрос
- Класс универсального ответчика (su.bot.kisa.javascript.chatbots.EmptyQuestionLoadTab) - анализирует сообщение пользователя на знак вопроса и выводит ответ случайно выбирая его из загружаемой таблицы. Таблица для универсального ответчика должна содержать варианты ответом, которые могут подойти под любой вопрос (нейтральные, побуждающие к продолжению общения и т.д.
- Класс универсального разговорщика (su.bot.kisa.javascript.chatbots.LoadTab) - независимо от введённого пользователем сообщения отвечает случайно выбранной фразой из таблицы. Таблица для универсального разговорщика должна содержать фразы, которые могут подойти под любое сообщение пользователя (нейтральные, побуждающие к продолжению общения и т.д.
- Класс единиц измерения (su.bot.kisa.javascript.chatbots.MeasuringSystem) - анализирует сообщение пользователя на предмет запроса перевода из одних единиц измерения в другие, и, в случае соответствия, осуществляет перевод
- Класс попугая (su.bot.kisa.javascript.chatbots.Parrot) - эхо чат бот, выводящий эхо сообщения пользователя. В существующей реализации после анализа на просьбу типа "скажи".
- Класс обратного поиска из таблицы в сообщении пользователя (su.bot.kisa.javascript.chatbots.SearchLoadTab) - последовательно проверяет наличие в сообщении пользователя фраз из загружаемой таблицы, а также отсутствия исключающих фраз и, в случае совпадения, и подходящей задаваемой вероятности выбирает один из предлагаемых вариантов ответа случайным образом.
- Класс обратного поиска из таблицы в ответе робота (su.bot.kisa.javascript.chatbots.SearchResLoadTab) - последовательно проверяет наличие в последнем ответе чат бота (выбранного менеджером роботов и показанного пользователю) фраз из таблицы и, в случае совпадения, случайным образом выбирает предлагаемый в таблице вариант ответа.
- Класс вариантной таблицы (su.bot.javascript.chatbot.chatbots.VariantLoadTab) - проверяет наличие точного совпадения сообщения пользователя с фразами из загружаемой таблицы и выводит случайным образом выбранный вариант ответа в случае совпадения.
- Класс ситуационной таблицы (su.bot.kisa.javascript.chatbots.SituationLoadTab) - проверяет наличие определённой ситуации (пустое сообщение, слишком длинное сообщение, повторное сообщение и т.д.) и в случае наличия случайным образом выбирает вариант ответа для такой ситуации.
Текущее версии классов и загружаемых таблиц можно обнаружить проанализировав хтмл страницу (список классов внизу страницы demo.html)
и содержание текущего файла demo.js.
Если мы допустили ошибки, или Вы считаете, что настоящее описание можно (нужно) улучшить, присылайте
свои предложения по адресу