- Подключение Callback API ВКонтакте
- Формат данных Callback API ВКонтакте
- Пример использования Callback API ВКонтакте
- Поддержка в SDK ВКонтакте
Callback API ВКонтакте — это инструмент для отслеживания активности пользователей в Вашем сообществе ВКонтакте. С его помощью Вы можете реализовать, например:
- Бота для отправки мгновенных ответов на поступающие сообщения.
- Систему автоматической модерации контента.
- Сервис для сбора и обработки показателей вовлеченности аудитории.
Чтобы начать использовать Callback API ВКонтакте, подключите свой сервер в настройках сообщества («Управление сообществом» → «Настройки» → «Работа с API»). Выберите типы событий, данные о которых требуется получать, например, новые комментарии и новые фотографии.
Когда в сообществе произойдет событие выбранного типа, ВКонтакте отправит на Ваш сервер запрос с данными в формате JSON с основной информацией об объекте, вызвавшем событие (например, добавленный комментарий).
В ответ на каждое уведомление о событии Ваш сервер должен отправить строку "ok".
Вам больше не нужно регулярно повторять запросы к API, чтобы отслеживать обновления ВКонтакте — теперь Вы будете получать их мгновенно.
1. Подключение Callback API ВКонтакте
Для подключения Callback API ВКонтакте нужно открыть раздел «Управление сообществом» («Управление страницей», если у Вас публичная страница), перейти во вкладку «Работа с API».
Далее необходимо указать и подтвердить конечный адрес сервера, куда будут направлены все запросы. Вы можете подключить до 10 серверов для Callback API ВКонтакте, задать каждому из них отдельный набор событий и версию API.
После указания адреса сервера и нажатия на кнопку «подтвердить» на указанный Вами адрес отправится запрос с уведомлением типа "confirmation". Ваш сервер должен вернуть заданную строку.
После подтверждения адреса сервера Вам станут доступны настройки уведомлений.
Во вкладке «Запросы» Вы сможете видеть историю событий и содержимое запросов, отправленных на Ваш сервер.
Обратите внимание:
После получения уведомления Ваш сервер должен возвращать строку "ok
" и статусHTTP 200
. Если сервер несколько раз подряд вернет ошибку, Callback API временно перестанет отправлять на него уведомления.
Добавлять, удалять и редактировать сервера для Callback API Вы также можете с помощью методов секции groups.
1.1. Версия API ВКонтакте
В зависимости от указанной версии объекты в событиях будут иметь разный формат. Ознакомиться с отличиями версий можно на этой странице.
1.2. Секретный ключ API ВКонтакте
В поле «Секретный ключ» Вы можете указать произвольную строку, которая будет передаваться в уведомлении на Ваш сервер в поле secret.
1.3. SSL-сертификат
Чтобы гарантировать безопасность передачи данных, рекомендуется загрузить SSL-сертификат в настройках Callback API Вашего сообщества ВКонтакте.
Подробная информация о сертификате доступна на этой странице.
1.4. Настройка через API ВКонтакте
Вы можете управлять настройками Callback API ВКонтакте в Вашем сообществе не только в веб-интерфейсе, но и с помощью методов API:
- groups.addCallbackServer — добавляет сервер Callback API в сообщество;
- groups.deleteCallbackServer — удаляет сервер Callback API;
- groups.editCallbackServer — редактирует данные сервера Callback API;
- groups.getCallbackConfirmationCode — получает код подтверждения для подключения сервера Callback API;
- groups.getCallbackServers — получает список подключенных серверов в сообществе;
- groups.getCallbackSettings — получает настройки событий для сервера Callback API;
- groups.setCallbackSettings — устанавливает настройки событий для сервера Callback API.
2. Формат данных API ВКонтакте
Когда происходит событие, Вы получаете данные в JSON, имеющем следующую структуру:
{"type": <тип события>, "object": <объект, инициировавший событие>, "group_id": <ID сообщества, в котором произошло событие>}
Например:
{"type": "group_join", "object": {"user_id": 1, "join_type" : "approved"}, "group_id": 1}
2.1. Типы событий API ВКонтакте
Структура объекта в поле object
зависит от типа уведомления. Полный список событий Вы найдёте на этой странице.
3. Пример использования API ВКонтакте
В примере ниже скрипт на PHP обрабатывает уведомления о новом сообщении и отправляет ответ его автору от имени сообщества.
<?php
if (!isset($_REQUEST)) {
return;
}
//Строка для подтверждения адреса сервера из настроек Callback API
$confirmation_token = 'd8v2ve07';
//Ключ доступа сообщества
$token = 'c0223f775444cf3d58a8a1442ec76a9571c8f58e3e24616d9440f73dc43022bbead9b2e576cb41d09c0a1';
//Получаем и декодируем уведомление
$data = json_decode(file_get_contents('php://input'));
//Проверяем, что находится в поле "type"
switch ($data->type) {
//Если это уведомление для подтверждения адреса...
case 'confirmation':
//...отправляем строку для подтверждения
echo $confirmation_token;
break;
//Если это уведомление о новом сообщении...
case 'message_new':
//...получаем id его автора
$user_id = $data->object->message->from_id;
//затем с помощью users.get получаем данные об авторе
$user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token={$token}&v=5.103"));
//и извлекаем из ответа его имя
$user_name = $user_info->response[0]->first_name;
//С помощью messages.send отправляем ответное сообщение
$request_params = array(
'message' => "Hello, {$user_name}!",
'peer_id' => $user_id,
'access_token' => $token,
'v' => '5.103',
'random_id' => '0'
);
$get_params = http_build_query($request_params);
file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
//Возвращаем "ok" серверу Callback API
echo('ok');
break;
}
?>
4. Поддержка в SDK ВКонтакте
Вы можете работать с Callback API средствами SDK:
По материалам:
https://vk.com/dev/callback_api
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)