Вредоносное ПО (malware) - это назойливые или опасные программы,...
Сообщества Вконтакте уже давно стали не просто способами развлечений, но и отличным инструментом для бизнеса и продаж. Команда разработчиков Вконтакте сделала для сообществ отличную функцию CallBack API смысл которой в отправке событий происходящих в Вашем сообществе.
Мы сделали в U-CRM инструмент отслеживания происходящих событий в Ваших сообществах. Все уведомления о комментариях, новых постах, сообщениях сообщества и прочего приходят в систему и удобно распределены по разделам, которые можно оперативно просматривать.
Чем это Вам поможет?
Если у вас есть сообщество, которое вы используете как бизнес инструмент для взаимодействия с вашей ЦА, которая находится Вконтакте, то эта функция просто необходима вам! И вот почему...
1. Вы всегда будете в курсе любого события вашего сообщества комментарий, отзыв или новый пост не будет пропущен.
2. Мгновенная реакция ваших менеджеров на любой вопрос ваших клиентов заданный в сообществе.
3. Увеличение продаж за счет быстрой реакции на вопросы участников сообщества.
4. Контроль нежелательных комментариев которые портят имидж вашей компании (происки конкурентов).
Настройка отслеживания сообщества
Настройка отслеживания очень проста и займет у вас не больше 5 минут. Мы постарались сделать все достаточно удобно и понятно.
Добавление сообщества в U-CRM
1 - скопируйте адрес вашего сообщества, id или короткое имя, например: http://vk.com/ucrmru короткое имя выделено жирным. И вставьте в поле добавления сообщества.
2 - нажмите добавить сообщество, после чего система попросит вас перейти в настройки.
После успешного добавления группы, вы перейдете в раздел настройки группы, здесь очень важно все делать по порядку и следовать данной инструкции.
1 - Скопируйте URL-адрес показанный в поле "Адрес Вашего сервера", после чего вставьте его в Настройках сообщества >> работа с API >> Callback API в поле "Адрес Вашего сервера" .
2 - в этом поле нужно указать Код указанный в Настройках сообщества >> работа с API >> Callback API в поле "Строка, которую должен вернуть сервер" .
Настройки в сообществе
Теперь вам надо сделать настройки в самом сообществе вконтакте, для этого перейдите в сообщество и зайдите в "Управление сообществом"
Сразу после этого идем в правом меню в раздел "Работа с API"
1 - Заходим в Callback API.
2 - В поле "Адрес Вашего сервера" вставляем URL-адрес, который выдала система U-CRM после добавления сообщества (было описано выше).
3 - Копируем Код указанный "Строка, которую должен вернуть сервер" и вставляем его в одноименное поле в U-CRM.
После сохранения настроек в U-CRM возвращаемся к настройкам сообщества Вконтакте и нажимаем во вкладке CallBack API кнопку "Обновить"<.b>, после чего должно получится что-то такое:
Если у вас все получилось,то все что осталось сделать настроить какие Типы событий будет отсылать Вконтакте в U-CRM. Для этого переходим в вкладку "Типы событий" , отмечаем все галочки (чтобы не париться)
Вы можете настроить уведомления о событиях в сообществе через VK Bot (удобнее) или через Telegram Bot. Уведомления будут приходить вам в личные сообщения.
Настроить интеграцию с Vk Bot или Telegram Bot вы можете в Личном профиле >> Настройки уведомлений .
На этом все настройки завершены уведомления должны приходить, потестируйте, если у вас не получилось, пишите в чат справа в углу - поможем!
Писать будем используя Сallback api(отправляет каждое действие в сообществе по отдельности на сервер). Поэтому его тоже следует настроить. Переходим в
«Управление сообществом» →»Работа с API». Для работы бота нужно зарегистрировать ключ доступа. Нажимаете «Создать ключ» и выбираете необходимые права доступа, для этого бота нужны только права на сообщения. Подтверждаем номер телефона и сохраняем куда нибудь ключ доступа. Теперь переходим во вкладку Callback API. Ставим свое название сервера и выбираем последнюю версию API(на данный момент она 5.80, и именно с ней ниже представленный бот будет работать 100%) . Во вкладке «Типы запросов» выбираем только входящие сообщения.
Настройка сервера
Теперь вам понадобится сервер для хостинга своего бота. Вы можете использовать бесплатные хостинги, например 000webhost.
Если вы будете использовать дешевые/бесплатные хостинги, то вероятнее всего на них будет отключен cURL(вы не сможете отправлять ботом медиа файлы, только текст), и его нельзя включить. У 000webhost все с этим нормально, можете использовать. Если у вас свой сервер или хороший купленный, то вам надо подключить cURL для полноценной работы бота из нашего примера.
Как работает Callback API и keyboard
Проведу краткий экскурс как все работает. Сallback API отсылает на ваш сервер любое событие, которое происходит в группе виде JSON. Полный список событий можно посмотреть во вкладке «Сallback API» → «Типы событий». Вот так выглядит JSON запрос когда пользователь отправляет сообщение, в данном случае он нажал на кнопку:
{"type":"message_new","object":{"date":1529668584,"from_id":89846036,"id":1522,"out":1,"peer_id":89846036,"text":"Золотая рыбка","conversation_message_id":305,"fwd_messages":,"important":false,"random_id":0,"attachments":,"payload":"{\"animals\":\"Goldfish\"}","is_hidden":false},"group_id":101461081}
{ "type" : "message_new" , "object" : { "date" : 1529668584 , "from_id" : 89846036 , "id" : 1522 , "out" : 1 , "peer_id" : 89846036 , "text" : "Золотая рыбка" , "conversation_message_id" : 305 , "fwd_messages" : , "important" : false , "random_id" : 0 , "attachments" : , "payload" : "{\"animals\":\"Goldfish\"}" , "is_hidden" : false } , "group_id" : 101461081 } |
Тут есть несколько интересных полей, которые можно обработать: id пользователя, текст сообщения(text), полезная нагрузка кнопки(payload).
Отправка сообщений пользователю происходит с помощью метода messages.send . Если вы отправляете клавиатуру, то после всех стандартных параметров вы добавляете параметр keyboard, который содержит json кнопок, вот как он выглядит:
Keyboard: { "one_time": false, "buttons": [ [{ "action": { "type": "text", "payload": "{\"button\": \"1\"}", "label": "Red" }, "color": "negative" }, { "action": { "type": "text", "payload": "{\"button\": \"2\"}", "label": "Green" }, "color": "positive" }]
keyboard : { "one_time" : false , "buttons" : [ "action" : { "type" : "text" , "payload" : "{\"button\": \"1\"}" , "label" : "Red" "color" : "negative" "action" : { "type" : "text" , "payload" : "{\"button\": \"2\"}" , "label" : "Green" "color" : "positive" |
Работа с библиотекой
Для работы бота мы используем самописную библиотеку на PHP. (Если ссылка не работает, то вот архив)вы можете найти документацию к библиотеке и скачать саму библиотеку. Вот короткий листинг готовых функций для написания бота, подробнее ищите по ссылке выше. Если вы хотите узнавать об изменениях в библиотеке, то напишите хотя бы одно сообщение нашему боту в ВК , через него мы будет вас оповещать об изменениях.
$vk = new vk_api(vk_key, version_api) — инициализация бота. Параметры: ключ сообщества(vk_key), версия API(version_api).
sendMessage(id, text) — функция отправки сообщений юзеру. Параметры: id пользователя(id), текст сообщения(text).
sendImage(id, patch) — функция отправки изображений. Параметры: id пользователя(id), путь до изображения(patch).
sendButton(id, text, buttons, one_time) — функция отправки сообщения с кнопками. Параметры: id пользователя(id), текст сообщения(не может быть пустым)(text), массив с кнопками(buttons), не обязательный параметр one_time, по дефолту false, если поставить true, то после нажатия на любую кнопку клавиатура скроется.
request(method, array_arguments) — универсальная функция работы с методами. Параметры: method — название метода из официального api, array_arguments — массив параметров.
sendOK() — Бета функция. Используется вместо echo «ok», помогает в тех случаях, когда время работы скрипта долгое, и бот начинает повторять сообщения по несколько раз.
ВАЖНО: есть использовать эту функцию, то у вас не будет отображаться вывод ошибок. Во время дебага заменяйте на echo «ok»
Полный код бота на PHP
Теперь перейдем собственно к коду, где прокомментирована почти каждая строка.
Данный код поддерживается на PHP 5.6+
В блоке CONFIG укажите свой ключ доступа сообщества, ключ для подтверждения сервера а так же выбранную вами версию API.
Полный код бота
"Fish"], "А какие бывают?", "blue"]; //Код кнопки "Fish" const BTN_BACK = [["command" => "start"], "<< Назад", "red"]; // Код кнопки "<< Назад" const BTN_SALMON = [["animals" => "Pink_salmon"], "Горбуша", "white"]; // Код кнопки "Горбуша" const BTN_GOLDFISH = [["animals" => "Goldfish"], "Золотая рыбка", "blue"]; // Код кнопки "Золотая рыбка" const BTN_PLOTVA = [["animals" => "Plotva"], "Плотва", "green"]; // Код кнопки "Плотва" $vk = new vk_api(VK_KEY, VERSION); // создание экземпляра класса работы с api, принимает ключ и версию api $data = json_decode(file_get_contents("php://input")); //Получает и декодирует JSON пришедший из ВК if ($data->type == "confirmation") { //Если vk запрашивает ключ exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа } $vk->sendOK(); //Говорим vk, что мы приняли callback if (isset($data->type) and $data->type == "message_new") { //Проверяем, если это сообщение от пользователя $id = $data->object->from_id; //Получаем id пользователя, который написал сообщение $message = $data->object->text; if (isset($data->object->peer_id)) $peer_id = $data->object->peer_id; // Получаем peer_id чата, откуда прилитело сообщение else $peer_id = $id; if (isset($data->object->payload)){ //получаем payload $payload = json_decode($data->object->payload, True); } else { $payload = null; } if (isset($payload["command"]) or mb_strtolower($message) == "начать") { //Если нажата кнопка начать или << назад $vk->sendButton($peer_id, "Хочешь посмотреть на рыбок?", []); //Отправляем кнопку пользователю } else { if ($payload != null) { // если payload существует switch ($payload["animals"]) { //Смотрим что в payload кнопках case "Fish": //Если это Fish $vk->sendButton($peer_id, "Вот такие, выбирай", [ //Отправляем кнопки пользователю , ]); break; case "Pink_salmon": //Если это Горбуша $vk->sendMessage($peer_id, "Держи свою горбушу!"); //отправляем сообщение $vk->sendImage($peer_id, "img/pink_salmon.jpg"); //отправляем картинку break; case "Goldfish": //Если это Золотая рыбка $vk->sendMessage($peer_id, "Она исполнит твои желания..."); $vk->sendImage($peer_id, "img/goldfish.jpg"); break; case "Plotva": //Если это Плотва $vk->sendMessage($peer_id, "Ой, похоже картинку перепутали)"); $vk->sendImage($peer_id, "img/plotva.jpg"); break; default: break; } } } } ?>
include "vk_api.php" ; //Подключаем библиотеку для работы с api vk //**********CONFIG************** const VK_KEY = "your_key" ; //тот самый длинный ключ доступа сообщества const ACCESS_KEY = "your_key" ; //например c40b9566, введите свой const VERSION = "5.80" ; //ваша версия используемого api //****************************** const BTN_FISH = [ [ "animals" = > "Fish" ] , "А какие бывают?" , "blue" ] ; //Код кнопки "Fish" const BTN_BACK = [ [ "command" = > "start" ] , "<< Назад" , "red" ] ; // Код кнопки "<< Назад" const BTN_SALMON = [ [ "animals" = > "Pink_salmon" ] , "Горбуша" , "white" ] ; // Код кнопки "Горбуша" const BTN_GOLDFISH = [ [ "animals" = > "Goldfish" ] , "Золотая рыбка" , "blue" ] ; // Код кнопки "Золотая рыбка" const BTN_PLOTVA = [ [ "animals" = > "Plotva" ] , "Плотва" , "green" ] ; // Код кнопки "Плотва" $vk = new vk_api (VK_KEY , VERSION ) ; // создание экземпляра класса работы с api, принимает ключ и версию api $data = json_decode (file_get_contents ("php://input" ) ) ; //Получает и декодирует JSON пришедший из ВК if ($data -> type == "confirmation" ) { //Если vk запрашивает ключ exit (ACCESS_KEY ) ; //Завершаем скрипт отправкой ключа $vk -> sendOK () ; //Говорим vk, что мы приняли callback if (isset ($data -> type ) and $data -> type == "message_new" ) { //Проверяем, если это сообщение от пользователя $id = $data -> object -> from_id ; //Получаем id пользователя, который написал сообщение $message = $data -> object -> text ; if (isset ($data -> object -> peer_id ) ) $peer_id = $data -> object -> peer_id ; // Получаем peer_id чата, откуда прилитело сообщение else $peer_id = $id ; if (isset ($data -> object -> payload ) ) { //получаем payload $payload = json_decode ($data -> object -> payload , True ) ; } else { $payload = null ; if (isset ($payload [ "command" ] ) or mb_strtolower ($message ) == "начать" ) { //Если нажата кнопка начать или << назад |
Чтобы включить интеграцию на Вашем аккаунте Webim , выполните следующие шаги:
- Зайдите в Личный кабинет сервиса Webim и проверьте номер своей версии сервиса. Номер версии отображается слева внизу каждой страницы ЛК:
- Отправьте в запрос на активацию функции интеграции с сообществами ВКонтакте.
- После того как версия Webim обновлена, войдите в сеть ВКонтакте и откройте страницу сообщества, которое хотите связать с учётной записью Webim.
- Нажмите кнопку Управление сообществом
(Manage community):
Откроется страница Настройки выбранного сообщества.
- Вам нужно использовать для входа такую учётную запись ВКонтакте, которая имеет статус Владелец
, Администратор
или Редактор
в этом сообществе.Чтобы увидеть статус аккаунтов руководства сообществом, выберите вкладку Участники
(Members), на ней Руководители
(Management):
- Убедитесь, что в этом сообществе включен сервис сообщений. Для этого перейдите на страницу Сообщения выбранного сообщества:
- Найдите опцию Сообщения сообщества (выделена красным на иллюстрации выше). Если сообщения выключены, включите их.
- На странице настроек сообщества перейдите к разделу Работа с API
. Там выберите вкладку Ключи доступа
и нажмите кнопку Создать ключ
:
Вкладка работы с API сообщества ВКонтакте:
Откроется форма Создание ключа доступа .
- В этой форме выберите пункт Разрешить приложению доступ к сообщения сообщества
и нажмите кнопку Создать
:
Форма создания ключа доступа:
Откроется форма Подтверждение действия .
- Вид и функциональность этой формы зависят от персональных настроек аккаунта и мобильного устройства. Если система предлагает выбор, то выберите удобный и доступный способ подтверждения, например, через SMS:
Форма подтверждения действия:
- Дождитесь короткого сообщения на телефон с кодом подтверждения:
- Введите его в поле Код подтверждения
и нажмите кнопку Отправить код
:
Ввод кода подтверждения:
В случае ввода правильного кода Вы вернётесь на страницу Работа с API .
- На этой странице обратите внимание на появление сведений о только что созданном ключе. Выделите этот ключ доступа и скопируйте его в буфер обмена:
- Не закрывая вкладки браузера с открытой страницей сообщества ВКонтакте, откройте новую вкладку браузера с сервиса Webim
, страница , раздел Каналы общения
:
- В блоке настроек каналов ВКонтакте нажмите кнопку Добавить сообщество . Откроется форма Добавление сообщества ВКонтакте :
- Найдите поле Название сообщества и введите там наименование, под которым этот канал будет отображаться в Личном кабинете оператора.
- Найдите поле Ключ доступа
и вставьте в него ключ из буфера обмена:
- Далее, найдите в той же форме поле Адрес сервера
- Не закрывая вкладки браузера с открытой страницей ЛК Webim, перейдите обратно к странице настроек API сообщества ВКонтакте и выберите вкладку Callback API / Настройки .
- Найдите поле Адрес Вашего сервера
и вставьте в него адрес сервера из буфера обмена, не нажимая кнопку "Подтвердить"
:
- Ниже на странице настроек найдите поле Строка, которую должен вернуть сервер
и скопируйте её в буфер обмена:
- Вернитесь на вкладку ЛК Webim, найдите поле Код подтверждения
и вставьте в него содержимое буфера обмена:
- Ниже на странице настроек Webim найдите поле Секретный ключ
и скопируйте его содержимое в буфер обмена:
- Вернитесь на страницу настроек сообщества ВКонтакте, найдите поле Секретный ключ
, вставьте в него содержимое буфера обмена и нажмите Сохранить
:
- Переключитесь на страницу ЛК Webim. В нижней части формы выберите отдел из выпадающего списка, если пользователи данного канала должны попадать только на специалистов одного отдела, или оставьте значение Без отдела
:
- В самом низу формы Webim нажмите кнопку Сохранить (см. иллюстрацию выше). Введённые значения полей будут проверены и сохранены. В случае успешной проверки и сохранения настроек форма закроется, на экране снова появится страница настроек каналов общения, на которой в списке появится только что созданный канал.
- Переключитесь на страницу настроек сообщества ВКонтакте и нажмите кнопку Подтвердить
(если настройки вводятся повторно, кнопка будет называться Обновить
). После этого данные проверяются, и в случае успеха настройки сохранятся, а ниже появится надпись Адрес сервера успешно сохранён
:
В ином случае на этом же месте появится сообщение об ошибке:
- Выберите вкладку Callback API / Типы событий
. На ней в разделе Сообщения
отметьте флажок в поле Входящее сообщение
, чтобы сервер Webim начал получать от сети ВКонтакте уведомления о новых личных сообщениях в Вашем сообществе:
Если у Вас Webim старее версии 8.14, обратитесь, пожалуйста, в для обновления сервиса.
На этом настройка интеграции между сервисами Webim и ВКонтакте завершена.