Подписка на события

Для игр и приложений доступна возможность получать информацию о происходящих в ОК событиях в режиме реального времени.

В момент, когда конкретное событие происходит в ОК, на специальный 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"
}