Подписка на события
Для игр и приложений доступна возможность получать информацию о происходящих в ОК событиях в режиме реального времени.
В момент, когда конкретное событие происходит в ОК, на специальный URL (называемый webhook) будет отправляться сообщение (через HTTP POST запрос), которое содержит в себе информацию о произошедшнем событии.
Также вы можете получать информацию о событиях через long polling API. Метод: events.updates;
Как подключить
Управление данной возможностью производится в настройках приложения в блоке Настройки подписки на события:
Для того, чтобы отправка событий заработала, вам нужно:
- в поле Ссылка webhook нужно указать адрес сервиса, который будет принимать запросы с событиями;
- пройти процесс подтверждения вашего webhook с помощью специального запроса на подтверждение (см. ниже);
- выбрать список событий, которые вы хотите получать на webhook;
- сохранить настройки вашего приложения.
Через несколько минут выбранные события начнут приходить на ваш webhook.
Подтверждение webhook
Чтобы мы начали отправлять вам сообщения о происходящих событиях, вам нужно подтвердить webhook.
Для подтверждения нужно:
- указать адрес в поле Ссылка webhook;
- подготовить webhook к получению верификационного запроса;
- нажать на кнопку Подтвердить для проверки webhook.
При обработке запроса на верификацию убедитесь, что запрос на ваш webhook не блокируется из-за CORS. Нужно разрешить запросы на ваш webhook с домена nap.okapps.ru. Для этого нужно при запросах с этого домена передавать в ответе заголовки Access-Control-Allow-Origin и Access-Control-Allow-Headers.
При валидации мы производим следующий запрос:
- POST-запрос
- Content-type: application/json
- Тело запроса: {“webhookType”: “CONFIRMATION”}
Ответ ожидается следующий:
- код отклика: 200
- Content-type: application/html или application/text
- Тело ответа: указанная в настройках строка
Получение сообщений
При выполнении события в ОК, на которое вы подписались в настройках игры, будет отправлено сообщение в виде HTTP-запроса. Мы отправляем следующие запросы:
- POST-запрос
- Content-type: application/json
- UserAgent запроса: OK/1.0 Webhook API
- Тело запроса: определяется типом события
В ответ на наш запрос ваш сервис должен вернуть 200 код отклика.
Типы событий
В зависимости от типа события вам на webhook будут приходить сообщения с разными телами, которые определяются типом события.
В данный момент доступны следующие типы событий:
- события о вступлении в группу / выходе из группы
- события о разрешении / запрете отправки сообщений от группы
Обрабатываются события, которые произошли в официальной группе игры или приложения.
Для подключения данной возможности вам надо:
- иметь группу в ОК;
- иметь приложение / игру в ОК;
- привязать вашу группу к игре / приложению в качестве официальной группы игры.
Привязка группы производится в настройках приложения в поле Официальная группа.
Вступление / выход из группы игры
Тело сообщения при вступлении пользователя в группу
{
"type": "JOIN",
"timestamp": 1618250409915,
"userId": "user:1234567890",
"userName": "Имя Фамилия",
"groupId": "group:1234567890123456",
"webhookType": "GROUP"
}
Тело сообщения при выходе пользователя из группы
{
"type": "LEAVE",
"timestamp": 1618250409915,
"userId": "user:1234567890",
"userName": "Имя Фамилия",
"groupId": "group:1234567890123456",
"webhookType": "GROUP"
}
Подписка на сообщения от группы игры
Тело сообщения при включении пользователем сообщений от группы
{
"type": "MESSAGES_ON",
"timestamp": 1618250409915,
"userId": "user:1234567890",
"userName": "Имя Фамилия",
"groupId": "group:1234567890123456",
"webhookType": "GROUP"
}
Тело сообщения при отключении пользователем сообщений от группы
{
"type": "MESSAGES_OFF",
"timestamp": 1618250409915,
"userId": "user:1234567890",
"userName": "Имя Фамилия",
"groupId": "group:1234567890123456",
"webhookType": "GROUP"
}
Подписка на отзывы игре
Тело сообщения при добавлении отзыве игре пользователем
{
"prevComment": "",
"webhookType": "APP",
"prevRating": 0,
"appId": "app:123123123",
"type": "RATING_COMMENT",
"timestamp": 1691947736017,
"rating": 5,
"userName": "Имя Фамилия",
"comment": "Отличная игра!",
"userId": "user:123123123"
}