[Модуль] VK Bot

Разработка дополнительных модулей, подключение различных приложений.

Модераторы: Bagir, Ivan, Vit, immortal, PAV

Аватара пользователя
nick7zmail
Сообщения: 5466
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 110 раз
Поблагодарили: 1291 раз

[Модуль] VK Bot

Сообщение nick7zmail » Сб сен 01, 2018 9:19 pm

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

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

Далее необходимо получить апи-ключ. Расписывать не буду, всё уже расписано за меня 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 КБ) 496 просмотров
В общем и целом оно вроде как даже работает...
Если модуль будет интересен народу - он будет развиваться, ибо есть куда.

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

Собственно сам модуль на гитхабе https://github.com/nick7zmail/MD_vk_bot.
И проект в коннекте https://connect.smartliving.ru/tasks/257.html.
Пробуйте, отписывайтесь.
За это сообщение автора nick7zmail поблагодарили (всего 9):
Maks21 (Сб сен 01, 2018 10:20 pm) • C_3AXAPOB (Сб сен 01, 2018 10:52 pm) • Denis_k (Вс сен 02, 2018 11:31 am) • Vit (Пн сен 03, 2018 6:49 am) • Amarok (Пн сен 03, 2018 7:05 am) • directman66 (Пн сен 03, 2018 8:51 am) • Igor.P (Пн сен 03, 2018 9:12 am) • TurburatoR (Пн сен 03, 2018 8:17 pm) • SoulTaker (Ср сен 05, 2018 7:22 pm)
Рейтинг: 13.24%
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен
Аватара пользователя
Valphil
Сообщения: 10
Зарегистрирован: Пт авг 10, 2018 4:16 am
Благодарил (а): 9 раз
Поблагодарили: 2 раза

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

Сообщение Valphil » Пн сен 03, 2018 7:41 am

Это интересный модуль. Но... Не возникнет ли желание у ВК через какое то время заблокировать сообщество как спам?
За это сообщение автора Valphil поблагодарил:
piton_78 (Сб сен 22, 2018 6:15 pm)
Рейтинг: 1.47%
Если я говорю "ты" - это не от неуважения, а для поддержания дружеской обстановки 8-)
directman66
Сообщения: 1579
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 241 раз
Поблагодарили: 262 раза

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

Сообщение directman66 » Пн сен 03, 2018 8:55 am

Если апи предоставлен официально, а не обходными путями, то думаю врядли будут блокировать. Тема очень интересная, голосую за развитие модуля в качестве альтернативы (дополнения) телеграмм. Без вэбхуков нельзя реализовать?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
nick7zmail
Сообщения: 5466
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 110 раз
Поблагодарили: 1291 раз

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

Сообщение nick7zmail » Пн сен 03, 2018 11:11 am

Valphil писал(а):
Пн сен 03, 2018 7:41 am
Это интересный модуль. Но... Не возникнет ли желание у ВК через какое то время заблокировать сообщество как спам?
Врят ли. Сообщество могут заблокировать только по жалобам пользователей. Так что если уговорите свою семью не подавать жалобу в вк)) - заблочить ничего не должны.
directman66 писал(а):
Пн сен 03, 2018 8:55 am
Если апи предоставлен официально, а не обходными путями, то думаю врядли будут блокировать. Тема очень интересная, голосую за развитие модуля в качестве альтернативы (дополнения) телеграмм. Без вэбхуков нельзя реализовать?
Можно попробовать. Но тогда потеряется скорость реакции, а соответственно и вся суть модуля...сообщения придётся опрашивать раз в какой-то период времени, чем забивать трафик. В общем не айс.
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен
skysilver
Сообщения: 1730
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 264 раза
Поблагодарили: 1036 раз
Контактная информация:

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

Сообщение skysilver » Пн сен 03, 2018 12:23 pm

nick7zmail писал(а):
Пн сен 03, 2018 11:11 am
сообщения придётся опрашивать раз в какой-то период времени, чем забивать трафик. В общем не айс.
А лонгполлинга, как у телеги, у них в апи нет? Лонгполлинг телеги не уступает по скорости вебхуку.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
nick7zmail
Сообщения: 5466
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 110 раз
Поблагодарили: 1291 раз

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

Сообщение nick7zmail » Пн сен 03, 2018 12:27 pm

Есть. Только я не пробовал с ним сделать ничего))) из названия я понял что это работа с историей или что то в этом роде. Так что даже не пробовал копать в ту сторону))) Попробую глянуть доки.
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен
vitar78
Сообщения: 114
Зарегистрирован: Пт июл 15, 2016 3:12 am
Благодарил (а): 4 раза
Поблагодарили: 2 раза

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

Сообщение vitar78 » Вт сен 04, 2018 12:37 am

интересный модуль
newz20
Сообщения: 38
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 27 раз
Поблагодарили: 3 раза

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

Сообщение newz20 » Ср сен 05, 2018 3:46 pm

Сервер приходится полностью открывать на 80 порт, никакие адрессервера:порт не принимаются. А это немного неудобно сейчас для меня. Жаль буду ждать вариантов.
Аватара пользователя
nick7zmail
Сообщения: 5466
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 110 раз
Поблагодарили: 1291 раз

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

Сообщение nick7zmail » Ср сен 05, 2018 4:50 pm

Может через лонгполлинг получится сделать. Тогда не придётся открывать ничего. Постараюсь заняться на выходных этим вопросом.

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


Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен
Pr0gra2Mer
Сообщения: 2
Зарегистрирован: Ср янв 31, 2018 7:20 am
Откуда: Омск
Благодарил (а): 2 раза
Поблагодарили: 0

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

Сообщение Pr0gra2Mer » Чт сен 20, 2018 1:50 pm

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

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