Pull to refresh

Comments 21

а что вы увидели у автора в «пупочке» и где прошу прощения
Вы мне написали сообщение, с вопросом что у меня в пупочке…
Отличный пост для моего сегодняшнего утра (: Спасибо, и весело, и увлекательно.
Занимаюсь сейчас похожей темой.
Расскажите, а как Вы организовали обмен данными и обработку диалогов с vk?
Все реализовано на базе стандартного vk api. Бот работает как обычное standalone приложение, с «долгоиграющим» токеном. Про обработку сообщений — наверно лучше на примере:
function loop() {
    $this->debug("started message loop.");
    $ts = $this->longpollsettings['ts']; //при запуске вызывается метод, получающий адрес сервера
    while ($data = json_decode(file_get_contents("http://{$this->longpollsettings['server']}?act=a_check&key={$this->longpollsettings['key']}&ts=$ts&wait=20&mode=2"), true)) {//если есть обновления
        if (rand(41, 49) == 42)
            $this->lazyChecks(); //иногда выполняются проверки, например - вывод песни в статус, если она закончила играть, или ответ на комментарии в паблике (да, бот еще умеет отвечать на комментарии)

        $ts = $data['ts'];
        $up = $data['updates'];
        if (count($up)) {
            foreach ($up as $u) {
                switch ($u[0]) {
                    case 4:// 4 - код события - "новое сообщение"
                        $this->receiveMessage($u[1], $u[2], $u[3], $u[4], $u[5], $u[6], $u[7]); // сама обработка сообщения
                        break;
                    default:
                        break;
                }
            }
        }

        if ($data['failed']) // если подключение не удалось, получаем новый адрес сервера
            $this->loadLPServerSettings();
    }
}

Ну и ссылки на эти два волшебных api-метода:
messages.getLongPollServer
messages.getLongPollHistory
Надеюсь, это вам поможет.
clever people think alike :)
думал, может быть есть какой-то другой способ, ан-нет.

Скажите, а Вы полученную таким образом базу сообщений как-либо дополнительно обрабатываете вручную или нет?
Полученное сообщение перерабатывается в список масок (все слова в предложении, больше двух символов и не состоящие из цифр) и отдается prolog-скрипту. Он выполняет свою работу и отдает список ответов. А далее пришедшее сообщение сохраняется в базе знаний вместе с ответом на него. Человек исключен из этого процесса :). Правда пару раз бывало, что писали иностранцы, на своем родном языке. Приходилось вручную чистить базу.
Это гениальная идея: провести тест Тьюринга ВКонтакте… интересно, много ли пользователей ВК смогут пройти тест на адекватность речи и сколько нужно времени среднему посетителю сайта, чтобы распознать в собеседнике робота:-)
Учитывая контингент, и основную цель общения («го вирт», «кидай фотки») — некоторые с ним общались долго. И переставали только после того, как в диалоге проскакивало сообщение от бота «я парень». А один даже завел с ботом роман в стиле «я так и знал, что ты парень, но мне без разницы… мне нравится как ты пишешь!» — и это продолжалось НЕДЕЛЮ, пришлось его добавить в черный список бота. А вот девушки в основном быстро определяли «плохой стиль общения» и переставали писать, или добавляли в чс. А идея со статистикой классная, запишу на будущее, спасибо.
UFO landed and left these words here
Я проводил такой эксперимет. Делал когда-то чат-бота для вконтакте.
Люди очень долго не могли понять, что с ними разговаривает бот.
А многие даже не представляют, что такое возможно в принципе.
Тоже когда-то давно сделал чат-бота xu.su

Хотел сделать его самообучающимся — не вышло, заспамили базу =)
и хссочки :)
"><img src = x onerror = alert(1)>
UFO landed and left these words here
А он всегда онлайн? Или ручками запускаете?
Если не сложно, скиньте в ЛС поиграться.
Ну по идее, она работает в бесконечном цикле обработки входящих сообщений. Но, из-за какого-то недопонимания api вконтакте или еще каких-то проблем — периодически вылетает с connection timeout. Так что изредка запускаю её сам. А так — обычный демон с запуском через sh скрипт.
Прикольно получился бот. Почитал дилоги, поржал наотлично.

П.С. виноград (с)
Sign up to leave a comment.

Articles