Получение целевого пользователя для событий вебхуков уведомлений

Я вижу, что вебхуки теперь поддерживают уведомления, что просто замечательно. Это именно то, что нам нужно. Однако в полезной нагрузке отсутствует один критически важный элемент — пользователь, для которого предназначено уведомление. В этом примере полезной нагрузки мы видим автора поста, вызвавшего уведомление, но не пользователя, который должен его получить.

{
  "notification": {
    "id": 119,
    "notification_type": 9,
    "read": false,
    "created_at": "2019-09-18T13:42:21.248Z",
    "post_number": 1,
    "topic_id": 75,
    "fancy_title": "Phallguy должен получить уведомление об этом",
    "slug": "phallguy-should-get-a-notice-about-this",
    "data": {
      "topic_title": "Phallguy должен получить уведомление об этом",
      "original_post_id": 111,
      "original_post_type": 1,
      "original_username": "Paul_Alexander",
      "revision_number": null,
      "display_username": "Paul_Alexander"
    }
  }
}

Я искал, есть ли API для получения целевого пользователя по идентификатору уведомления, но не нашёл ничего документированного. Есть ли способ получить целевое имя пользователя или его идентификатор в полезной нагрузке уведомления?

Для контекста: мы пытаемся объединить уведомления из нескольких систем в единый опыт для наших пользователей.

@Falco или @blake, у вас есть какие-то мысли о том, как я могу определить, для какого пользователя предназначено уведомление, полученное через новый вебхук уведомлений?

Я быстро посмотрел на это, чтобы узнать, есть ли быстрый ответ, и вы правы: похоже, у нас нет get-конечной точки API для получения отдельного уведомления по ID, но в любом случае вызывать это каждый раз было бы неэффективно.

Скорее всего, потребуется изменение кода в сериализаторе уведомлений, чтобы включить user_id/username в полезную нагрузку уведомления, чтобы не требовалось отдельного API-запроса.

В данный момент мы используем размещённый сервис, иначе я бы создал свой собственный плагин. Не могли бы вы добавить идентификатор пользователя или имя пользователя в полезную нагрузку уведомления в вебхуке?

Вы проверили заголовки?

Я проверил — надеялся найти там какие-то дополнительные метаданные, но ничего специфичного для пользователя не обнаружил.

Request URL: https://XXX
Request method: POST
Accept: */*
Connection: close
Content-Length: 420
Content-Type: application/json
Host: XXX
User-Agent: Discourse/2.4.0.beta4
X-Discourse-Instance: https://XXX
X-Discourse-Event-Id: 11
X-Discourse-Event-Type: notification
X-Discourse-Event: notification_created
X-Discourse-Event-Signature: sha256=XXX

Проверяю, есть ли у вас какие-то мысли или обновления. Уведомляющий вебхук без целевого пользователя не представляет особой ценности.

Привет, ребята! Удалось ли вам ознакомиться с проблемой? Есть ли надежда, что мы сможем получить ID целевого пользователя в событии уведомления?

Я создал pull-запрос, который добавляет user_id в JSON-нагрузку вебхука уведомлений:

Привет @blake, возможно ли также добавить внешний идентификатор пользователя (external_id)? Мы работаем с SSO Discourse, и у нас в системе нет идентификаторов пользователей Discourse.

Привет, Альберт!

Я считаю, что это отличная идея, и я создал коммит, который добавит external_id пользователя, если включен SSO.

Надеюсь, это поможет! Это будет добавлено на ваш сайт при следующем развертывании, которое, скорее всего, состоится на этой неделе.

Вау, это было быстро! Большое спасибо, очень ценю :smiley: Вы знаете, какой примерно срок реализации этих изменений на хостинговых серверах Discourse?

Ой, ладно, я не дочитал последнее предложение :sweat_smile:. Ещё раз спасибо!!