Первым делом, при создании бота для VK, необходимо настроить Webhooks. Webhooks это ссылка, на которую Вконтакте будет передавать все события, которые будет получать бот ВК. В дальнейшем эти данные можно будет сохранять и обрабатывать.
С ВК ботом, можно автоматизировать процессы или сделать автоответчик для коммуникации с клиентами или друзьями. VK JSON передает через бота запросы о (сообщения, новости, запросы и т.д). Как настроить и авторизовать адрес сервера для VK бота.
Зайдите в группу VK.com — Нажмите Управление сообществом, далее Работа с Api.
Подключение CallBack Api бота
Нажмите кнопку Создать Токен. Готово!
Установка и подтверждение VK.com Webhooks
Откройте PHP файл и скопируйте скрипт ниже
$confirmation_token = «************»; // Строка, которую должен вернуть сервер.
$data = json_decode(file_get_contents(‘php://input’));
$conf = $data->;
if($conf == «confirmation»)
echo «$confirmation_token»;
>
Скопируйте код: «Строка, которую должен вернуть сервер», от ВК и вставьте его, как параметр $confirmation_token. Загрузите файл vk.php на ваш сервер и вставьте ссылку в поле Адрес Вашего сервера. Нажмите кнопку Подтвердить. Готово! Webhooks для VK.com подтвержден.
Теперь все данные в формате JSON, можно получить в автоматическом режиме в данной ссылке.
Нажмите на меню Типы событий, для того, чтобы указать, какие данные о каких события будете получать от ВК,
Раскрутка группы в ВК: Как подключить CallBack API и не потерять клиентов ВКонтакте
Реклама
Источник: aaronsmith-rustech.blogspot.com
Как настроить callback api вконтакте. Отслеживание активности сообщества вконтакте
Сообщества Вконтакте уже давно стали не просто способами развлечений, но и отличным инструментом для бизнеса и продаж. Команда разработчиков Вконтакте сделала для сообществ отличную функцию 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 кнопку «Обновить» , после чего должно получится что-то такое:
Если у вас все получилось,то все что осталось сделать настроить какие Типы событий будет отсылать Вконтакте в 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 запрос когда пользователь отправляет сообщение, в данном случае он нажал на кнопку:
Тут есть несколько интересных полей, которые можно обработать: id пользователя, текст сообщения(text), полезная нагрузка кнопки(payload).
Отправка сообщений пользователю происходит с помощью метода messages.send . Если вы отправляете клавиатуру, то после всех стандартных параметров вы добавляете параметр keyboard, который содержит json кнопок, вот как он выглядит:
Работа с библиотекой
Для работы бота мы используем самописную библиотеку на 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»], » «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) == «начать») < //Если нажата кнопка начать или 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; > > > > ?>
//Подключаем библиотеку для работы с api vk
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» ] , » // Код кнопки » «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 пришедший из ВК
exit (ACCESS_KEY ) ; //Завершаем скрипт отправкой ключа
$vk -> sendOK () ; //Говорим vk, что мы приняли callback
$id = $data -> object -> from_id ; //Получаем id пользователя, который написал сообщение
$message = $data -> object -> text ;
if (isset ($data -> object -> peer_id ) )
$peer_id = $data -> object -> peer_id ; // Получаем peer_id чата, откуда прилитело сообщение
if (isset ($data -> object -> payload ) ) < //получаем payload
$payload = json_decode ($data -> object -> payload , True ) ;
if (isset ($payload [ «command» ] ) or mb_strtolower ($message ) == «начать» ) < //Если нажата кнопка начать или
Вредоносное ПО (malware) — это назойливые или опасные программы.
Лучшие программы для восстановления данных с любых носителей информации.
Здравствуйте.Одна из самых распространенных причин, по которым тормозит.
Источник: cdd-evo.ru
Callback-кнопки для бота ВК
Callback-кнопки позволяют отслеживать нажатие кнопки пользователем и выполнять какие-либо действий без отправки сообщения. Как ими пользоваться и как их сделать — разберем в этой статье. Плюсом добавим боту кнопки для отправки своего местоположения, перевода денег и link-кнопку.
Шаг 1: Скрипт
Обычно я начинаю с настройки группы, но сегодня отложу это на потом — на конец статьи.
Так-с, и для начала качаем последний бета-релиз библиотеки SimpleVK:
Либо подключаем через composer:
composer require digitalstars/simplevk:dev-testing —ignore-platform-reqs
Теперь нужно создать файл php и написать несколько строк кода. Пока нам нужно подключить библиотеки, авторизоваться и инициализировать нужные нам переменные:
setConfirm( ‘Строка, которую должен вернуть сервер’ ) // Подтверждение callback-сервера ->setUserLogError( 294485732 ) // Установка айди юзера ВК, которому будут отправляться уведы об ошибках ->initType( $type ) // Инициализация типа события ->initText( $text ) // Инициализация текста сообщения ->initPayload( $payload ); // Инициализация пэйлоулда
В предыдущих статьях мы инициализировали переменные методом initVars(), однако в текущей версии библиотеки появилась возможность «точечной» инициализации каждой переменной по отдельности. Мне пригодится тип события initType( $type ), тест сообщения initText( $text ) и payload initPayload( $payload ).
Тут можно заметить ещё один метод — метод setUserLogError( $id ). Используется для отправки уведомлений об ошибках конкретному человеку ($id — айди страницы ВКонтакте). Метод необязателен, поэтому можно оставить, а можно и убрать. Мне лично удобнее оставлять
Далее создам команду ‘/кнопки’ для отправки ботом клавиатуры пользователям:
if ( $type == ‘message_new’ ) < if ( $text == ‘/кнопки’ ) < // Тут продолжим писать код >>
Чтобы инициализировать Callback-кнопку нужно воспользоваться методом buttonCallback( $text, $color, $payload ). Принимает 3 параметра — текст кнопки, её цвет, а также payload в виде ассоциативного массива:
$btn_callback = $vk->buttonCallback( ‘Callback-кнопка’, ‘green’, [ ‘command’ => ‘btn_callback’ ] );
Есть ещё несколько методов для создания кнопок, рассмотрим их тоже:
- Метод buttonLocation( $payload ) — кнопка для отправки своего местоположения, в кач-ве параметра может принимать только payload;
- Метод buttonOpenLink( $link, $label, $payload ) — кнопка-ссылка, в качестве параметров используется ссылка (обязательно с http или https), текст кнопки и payload;
- Метод buttonPayToGroup( $group_id, $amount, $descriptionl, $datal, $payload ) — кнопка для перевода фиксированной суммы сообщетсву, в кач-ве параметров используется ID сообщества, сумма в ₽, комментарий к переводу, словарь с произвольными параметрами и payload;
- Метод buttonPayToUser( $user_id, $amount, $description, $payload ) — кнопка для перевода фиксированной суммы пользователю, в качестве параметров указывается ID юзера, сумма в рублях, комментарий к платежу и payload;
- Метод buttonDonateToGroup( $group_id, $payload ) — кнопка для перевода денег сообществу, в параметрах указывается ID группы и payload;
- Метод buttonDonateToUser( $user_id, $payload ) — кнопка для перевода денег юзеру, метод принимает на вход айди пользователя и payload;
- Метод buttonApp( $text, $app_id, $owner_id, $hash, $payload ) — кнопка VK Apps, принимает на вход текст кнопки, айди приложения, айди группы, хэш и payload.
Я же много кнопок клепать не буду, сделаю только 4:
$btn_callback = $vk->buttonCallback( ‘Callback-кнопка’, ‘green’, [ ‘command’ => ‘btn_callback’ ] ); $btn_donate = $vk->buttonDonateToUser( 123 ); $btn_location = $vk->buttonLocation(); $btn_link = $vk->buttonOpenLink( ‘https://kotoff.net’, ‘Перейти’ );
Ну, и осталось отправить клавиатуру пользователю:
$vk->msg( ‘Твои кнопки:’ )->kbd( [ [ $btn_callback ], [ $btn_donate ], [ $btn_location ], [ $btn_link ] ] )->send();
С помощью метода msg() формируем текст сообщения, метод kbd() создаёт «сетку» с кнопками, а метод send() отправляет всё это дело юзеру. Кстати для метода kbd( $keyboard = array(), $inline = false, $one_time = false ) в данном случае можно указать ещё и второй параметр ($inline = true), чтобы кнопки отправились в inline-формате.
При нажатии на кнопку будем отправлять пользователю всплывающие уведомление с помощью метода eventAnswerSnackbar( $text ). Чтобы отследить нажатие на кнопку создадим через elseif (после проверки на message_new) такую же проверку, но уже не на входящее, а на действие с сообщением (message_event). Также делаю проверку по payload (напомню, у нас он такой: [ ‘command’ => ‘btn_callback’ ]):
else if ( $type == ‘message_event’ ) < if ( $payload[‘command’] == ‘btn_callback’ ) < $vk->eventAnswerSnackbar( ‘Привет!’ ); > >
setConfirm( ‘Строка, которую должен вернуть сервер’ ) // Подтверждение callback-сервера ->setUserLogError( 294485732 ) // Установка айди юзера ВК, которому будут отправляться уведы об ошибках ->initType( $type ) // Инициализация типа события ->initText( $text ) // Инициализация текста сообщения ->initPayload( $payload ); // Инициализация пэйлоулда if ( $type == ‘message_new’ ) < if ( $text == ‘/кнопки’ ) < $btn_callback = $vk->buttonCallback( ‘Callback-кнопка’, ‘green’, [ ‘command’ => ‘btn_callback’ ] ); $btn_donate = $vk->buttonDonateToUser( 294485732 ); $btn_location = $vk->buttonLocation(); $btn_link = $vk->buttonOpenLink( ‘https://kotoff.net’, ‘Перейти’ ); $vk->msg( ‘Твои кнопки:’ )->kbd( [ [ $btn_callback ], [ $btn_donate ], [ $btn_location ], [ $btn_link ] ] )->send(); > > else if ( $type == ‘message_event’ ) < if ( $payload[‘command’] == ‘btn_callback’ ) < $vk->eventAnswerSnackbar( ‘Привет!’ ); > >
Шаг 2: Настройки группы
1. Создаём токен, выставляем права доступа на сообщения сообщества и вставляем его в код:
2. Выбираем версию API, указываем ссылку на бота, копируем и вставляем в код строку, которую должен вернуть сервер. После сохранения скрипта у себя на сервере — жмём кнопку подтвердить:
3. Выбираем необходимые нам типы событий (входящие и действия с сбщ):
4. Не забываем включить сообщения сообщества и возможности для ботов:
Шаг 3: Заключение
- 5id15
- 22.07.2022
- 3 345
- 8
- 3
Источник: kotoff.net