Чат бот Киса. Открытый проект секретной лаборатории bot.su и hottabych.net
Описание для разработчиков
Чат бот Киса состоит из четырёх логических частей - инициализирующей программы, пользовательского интерфейса, чат бота Киса и серверных программ.
Составные части проекта написаны, с клиентской стороны, на языке 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.
 
Если мы допустили ошибки, или Вы считаете, что настоящее описание можно (нужно) улучшить, присылайте свои предложения по адресу
 
Дизайн: какой-то человек ™
Координация: bot.su