Страница 1 из 5

[Модуль] VK Bot (vk_bot)

Добавлено: Сб сен 01, 2018 9:19 pm
nick7zmail
Всем привет.
Не знаю почему никому ещё не пришла эта идея на фоне проблем с телегой, отсутствием возможности в модуле вайбера отправить картинку и т.п. Решил набросать бота для всем известного ВК.
Единственная оговорочка - сервер должен быть доступен извне (по ссылке или по ip адресу). Только таким образом он сможет моментально реагировать на сообщения.
Модуль пока настраивается немного через пень-колоду...но если на него будет спрос - естественно всё доработаем.
Настройка не сильно сложная, просто много букав, потому что максимально подробно пытался расписать.

Итак сперва нужно настроить ВК.
Настройка ВК
Бот будет общаться с нами от имени сообщества. По-этому создаём это самое сообщество (группу в простонародии). Создаём по максимуму закрытым и приватным.
Обязательно разрешаем ему сообщения
scr2.jpg
scr2.jpg (20.86 КБ) 8248 просмотров
Естественно подписываемся на него.

Далее необходимо получить апи-ключ. Расписывать не буду, всё уже расписано за меня https://vk.com/dev/access_token (раздел Ключ доступа сообщества, самое простое - через настройки сообщества). Лично я выбрал все доступные опции при получении ключа, но можно ограничиться возможностями сообщений и прикрепления файлов. Далее залазим в настройки сообщества - Работа с API. Нас интересуют Ключи доступа (его мы получили ранее) и Callback API, а именно ответ который должен отправить сервер. Так же стоит поставить галочку в типах событий хотя бы на входящее сообщения.

Настройка МД
Теперь немного настройки через "пень-колоду" про которую я говорил.
Идём в корневую директорию МД и в файле config.php в конец дописываем несколько переменных

Код: Выделить всё

define('CALLBACK_API_CONFIRMATION_TOKEN', 'ответ сервера'); //Строка для подтверждения адреса сервера из настроек Callback API
define('VK_API_ACCESS_TOKEN', 'ключ доступа'); //Ключ доступа сообщества
define('BOT_LOGS_DIRECTORY', '/var/www/html/cms/debmes');
Так же нужно создать свойство в системе у объекта ThisComputer под названием vk_answer_id, и вписать туда id вашего пользователя (именно ID вашей страницы ВК, не сообщества) на который будут приходить ответы. Можно заменять эти цифры, если у вас несколько пользователей, и ответы нужны нескольким.
На этом настройка МД закончена, вернемся в ВК.

Продолжение настройки ВК
Возвращаемся на нашу вкладку Callback API и вписываем туда http://адрес_или_URL_МД/modules/vk_bot/callback_api.php. После нажатия подтвердить - если всё правильно - должна появиться зелёная галочка. Всё. Да, так просто.

Дополнительно
Один момент который позволяет это сделать так просто - файл config.php лежащий в директории с модулем. Он пустой, соответственно снимает все пароли на мд (конкретно для этой папки!!) при попытке доступа к другим папкам пароль будет так же запрашиваться. С одной стороны да, плохо, почти открытая дыра в системе. С другой стороны там нет ничего чем бы можно было воспользоваться для заливки вредоносных скриптов или для доступа к другим частям системы. Но если таки боитесь - удалите этот файл, или поставьте в него пароль, так же, как в основном файле.

Использование
После этих настроек вы можете пользоваться модулем.
В панели управления рабочая только 1 опция - MSG LEVEL. Остальное всё пока ненужное и нерабочее.
Ботом можно пользоваться несколькими способами:
- В режиме онлайн чата (выставить MSG LEVEL в минимальное значение в системе (чаще всего 0)). Тогда все ответы системы будут приходить в чат с ботом. А отправленные боту сообщения - непосредственно в систему.
- В режиме оповещалки (выставить MSG LEVEL в уровень важных сообщений). Боту будут приходить только сообщения выше или равной выставленной важности. Таким образом получите пуш-оповещения в режиме реального времени о важных событиях. Все отправленные боту сообщения так же будут приходить в систему.
- В режиме отдельных сообщений. В системе станет доступна опция

Код: Выделить всё

bot_sendMessage(gg('vk_answer_id'), 'Привет');
Так же к сообщениям можно прикреплять картинки расположенные где-то в системе (не обязательно в открытых папках на сервере).

Код: Выделить всё

bot_sendMessage(gg('vk_answer_id'), 'Ну привет. Как оно?', '/var/www/html/cms/scenes/backgrounds/600x400.jpg');
scr.jpg
scr.jpg (45.43 КБ) 8248 просмотров
В общем и целом оно вроде как даже работает...
Если модуль будет интересен народу - он будет развиваться, ибо есть куда.

Варианты развития
Перво-наперво конечно сделать адекватные настройки через систему, а не через config.php.
Далее - авто определение от какого пользователя пришло сообщение, так же ответы определённым пользователям.
А ещё с недавнего времени в ВК появилась интерактивная клавиатура
oNH64Ml20Jw.jpg
oNH64Ml20Jw.jpg (28.11 КБ) 8248 просмотров
Правда я пока не придумал как её применить. Скорее всего записи придётся создавать вручную.

Собственно сам модуль на гитхабе https://github.com/nick7zmail/MD_vk_bot.
И проект в коннекте https://connect.smartliving.ru/tasks/257.html.
Пробуйте, отписывайтесь.

Re: [Модуль] VK Bot

Добавлено: Пн сен 03, 2018 7:41 am
Valphil
Это интересный модуль. Но... Не возникнет ли желание у ВК через какое то время заблокировать сообщество как спам?

Re: [Модуль] VK Bot

Добавлено: Пн сен 03, 2018 8:55 am
directman66
Если апи предоставлен официально, а не обходными путями, то думаю врядли будут блокировать. Тема очень интересная, голосую за развитие модуля в качестве альтернативы (дополнения) телеграмм. Без вэбхуков нельзя реализовать?

Re: [Модуль] VK Bot

Добавлено: Пн сен 03, 2018 11:11 am
nick7zmail
Valphil писал(а):
Пн сен 03, 2018 7:41 am
Это интересный модуль. Но... Не возникнет ли желание у ВК через какое то время заблокировать сообщество как спам?
Врят ли. Сообщество могут заблокировать только по жалобам пользователей. Так что если уговорите свою семью не подавать жалобу в вк)) - заблочить ничего не должны.
directman66 писал(а):
Пн сен 03, 2018 8:55 am
Если апи предоставлен официально, а не обходными путями, то думаю врядли будут блокировать. Тема очень интересная, голосую за развитие модуля в качестве альтернативы (дополнения) телеграмм. Без вэбхуков нельзя реализовать?
Можно попробовать. Но тогда потеряется скорость реакции, а соответственно и вся суть модуля...сообщения придётся опрашивать раз в какой-то период времени, чем забивать трафик. В общем не айс.

Re: [Модуль] VK Bot

Добавлено: Пн сен 03, 2018 12:23 pm
skysilver
nick7zmail писал(а):
Пн сен 03, 2018 11:11 am
сообщения придётся опрашивать раз в какой-то период времени, чем забивать трафик. В общем не айс.
А лонгполлинга, как у телеги, у них в апи нет? Лонгполлинг телеги не уступает по скорости вебхуку.

Re: [Модуль] VK Bot

Добавлено: Пн сен 03, 2018 12:27 pm
nick7zmail
Есть. Только я не пробовал с ним сделать ничего))) из названия я понял что это работа с историей или что то в этом роде. Так что даже не пробовал копать в ту сторону))) Попробую глянуть доки.

Re: [Модуль] VK Bot

Добавлено: Вт сен 04, 2018 12:37 am
vitar78
интересный модуль

Re: [Модуль] VK Bot

Добавлено: Ср сен 05, 2018 3:46 pm
newz20
Сервер приходится полностью открывать на 80 порт, никакие адрессервера:порт не принимаются. А это немного неудобно сейчас для меня. Жаль буду ждать вариантов.

Re: [Модуль] VK Bot

Добавлено: Ср сен 05, 2018 4:50 pm
nick7zmail
Может через лонгполлинг получится сделать. Тогда не придётся открывать ничего. Постараюсь заняться на выходных этим вопросом.

Отправлено с моего Xperia XZ1 Compact через Tapatalk



Re: [Модуль] VK Bot

Добавлено: Чт сен 20, 2018 1:50 pm
Pr0gra2Mer
У меня доступ к серверу только по логину и паролю + проброска на 81 порт...
http://login:password@domen.dlinkddns.c ... ck_api.php
в CallBack API пишет Недопустимый адрес...
или Сервер вернул неправильный ответ: Timeout was reached

и ThisComputer.vk_answer_id должен быть с id или просто цифры?
Версия API какую выбирать?