Здравствуйте, Сергей Вакуленко. Пишет вам студент факультета кибернетики МИФИ, начинающий программист, Кузнецов Савва. Если у вас найдется время на ответ, я бы хотел задать вопрос.
У меня тоже есть чатбот. Он умней Кисы, намного. Первоначально написан на с++, затем, когда я решил вывести его в сеть, я переписал его на PHP. Возможно, это моя ошибка. Нужно было выбрать JS. Но мне посоветовали именно PHP.
У меня возникло несколько проблем. Быть может, если вам не трудно, вы подскажите мне что-нибудь.
Мой бот держит базу тэгов, которые ищет во фразе пользователя. Каждому набору Тэгов соответствует набор ответов. Ответы выбираются определенным образом, учитывая настроение бота, тему разговора.
Проблема вот в чем. Проблема с вводом реплик через форму. Дело в том, что при вводе реплики, страница на php неизбежно обновляется, что вызывает выполнение всего скрипта заново, т.е. обновление его базы. Фактически это означает стирание всех воспоминаний о разговоре с пользователем.
Я задавал вопросы на форумах. Мне ввехзде говорили использовать AJAX, но ничего конкретного не подсказывали. До аякса я еще не дорос. Я посмотрел исходник php чатбота кисы, который вы написали.
Как вы реализовали ввод реплики чатботу? без стирания памяти и выполнения всего скрипта заново? Чтение из файла? Т.е. нужно сначала записать реплику в файл, а потом прочесть из скрипта? Но цикл то бесконечный? Помогите пожалуйста чем-нибудь.
Добрый день, Савва! Для простоты я сознательно не стал возиться с реализацией бота в виде веб-страницы. Мой вариант Кисы работает только как автономная программа.
Веб-страница принципиально не умеет хранить состояние программы. Что PHP, что JS - непринципиально. AJAX тоже не поможет, он про другое. Единственный выход - самостоятельно организовать сохранение и восстановление полного состояния программы при начале выполнения (загрузке страницы). Причём для каждой сессии (каждого пользователя, читающего страницу) надо хранить своё состояние. Например, можно все глобальные переменные программы записывать в cookies юзера. Я бы делал именно так. Или в локальную базу MYSQL, а в cookies - только ключик, уникальный идентификатор сессии.
Теперь мне все понятно. Автономно и у меня все прекрасно работает на с++. Все, кто отвечал мне в различный форумах, советовали каждый свое, и я учил много чего лишнего, и тратил время, и переписывал бота на php, и почти на JS...И в конце оказывалось, что все это не может помочь и нужно искать другой ответ. И что туча часов потрачено зря). На время придется забыть о боте. Не хватает знаний. Еще раз спасибо за сэкономленное время и силы.
Зря ничего не бывает: появляется ценный опыт . :) Если есть версия на PHP - осталось научиться в начале работы получать значения глобальных переменных из cookies и в конце каждого раунда сохранять их в cookies. Удачи и новых красивых программных решений!
Чатбот Киса и мой чатбот. Вопрос по PHP
Date: 2010-08-08 17:11 (UTC)Пишет вам студент факультета кибернетики МИФИ, начинающий программист, Кузнецов Савва.
Если у вас найдется время на ответ, я бы хотел задать вопрос.
У меня тоже есть чатбот. Он умней Кисы, намного. Первоначально написан на с++, затем, когда я решил вывести его в сеть, я переписал его на PHP. Возможно, это моя ошибка. Нужно было выбрать JS. Но мне посоветовали именно PHP.
У меня возникло несколько проблем. Быть может, если вам не трудно, вы подскажите мне что-нибудь.
Мой бот держит базу тэгов, которые ищет во фразе пользователя. Каждому набору Тэгов соответствует набор ответов. Ответы выбираются определенным образом, учитывая настроение бота, тему разговора.
Проблема вот в чем. Проблема с вводом реплик через форму. Дело в том, что при вводе реплики, страница на php неизбежно обновляется, что вызывает выполнение всего скрипта заново, т.е. обновление его базы. Фактически это означает стирание всех воспоминаний о разговоре с пользователем.
Я задавал вопросы на форумах. Мне ввехзде говорили использовать AJAX, но ничего конкретного не подсказывали. До аякса я еще не дорос. Я посмотрел исходник php чатбота кисы, который вы написали.
Как вы реализовали ввод реплики чатботу? без стирания памяти и выполнения всего скрипта заново? Чтение из файла? Т.е. нужно сначала записать реплику в файл, а потом прочесть из скрипта? Но цикл то бесконечный?
Помогите пожалуйста чем-нибудь.
no subject
Date: 2010-08-08 18:25 (UTC)Для простоты я сознательно не стал возиться с реализацией бота в виде веб-страницы. Мой вариант Кисы работает только как автономная программа.
Веб-страница принципиально не умеет хранить состояние программы. Что PHP, что JS - непринципиально. AJAX тоже не поможет, он про другое. Единственный выход - самостоятельно организовать сохранение и восстановление полного состояния программы при начале выполнения (загрузке страницы). Причём для каждой сессии (каждого пользователя, читающего страницу) надо хранить своё состояние. Например, можно все глобальные переменные программы записывать в cookies юзера. Я бы делал именно так. Или в локальную базу MYSQL, а в cookies - только ключик, уникальный идентификатор сессии.
Спасибо большое за ответ.
Date: 2010-08-08 18:46 (UTC)Автономно и у меня все прекрасно работает на с++.
Все, кто отвечал мне в различный форумах, советовали каждый свое, и я учил много чего лишнего, и тратил время, и переписывал бота на php, и почти на JS...И в конце оказывалось, что все это не может помочь и нужно искать другой ответ. И что туча часов потрачено зря).
На время придется забыть о боте. Не хватает знаний.
Еще раз спасибо за сэкономленное время и силы.
no subject
Date: 2010-08-08 20:10 (UTC)Если есть версия на PHP - осталось научиться в начале работы получать значения глобальных переменных из cookies и в конце каждого раунда сохранять их в cookies. Удачи и новых красивых программных решений!