Obtener el usuario objetivo para eventos de webhook de notificación

Veo que los webhooks ahora admiten notificaciones, lo cual es fantástico. Es algo que realmente necesitamos. Sin embargo, el payload carece de una pieza crítica de información: el usuario para el que está destinada la notificación. En este ejemplo de payload podemos ver al autor del post que activó la notificación, pero no al usuario que debería recibirla.

{
  "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 should get a notice about this",
    "slug": "phallguy-should-get-a-notice-about-this",
    "data": {
      "topic_title": "Phallguy should get a notice about this",
      "original_post_id": 111,
      "original_post_type": 1,
      "original_username": "Paul_Alexander",
      "revision_number": null,
      "display_username": "Paul_Alexander"
    }
  }
}

He revisado si existe una API para obtener el usuario destinatario a partir del ID de la notificación, pero no he encontrado nada documentado. ¿Existe alguna forma de obtener el nombre de usuario o ID del destinatario en el payload de la notificación?

Para dar contexto, estamos intentando consolidar las notificaciones de varios sistemas en una experiencia única para nuestros usuarios.

@Falco o @blake, ¿tienen alguna idea sobre cómo puedo averiguar para qué usuario es una notificación cuando se recibe a través del nuevo webhook de notificaciones?

Solo lo revisé brevemente para ver si había una respuesta rápida, y tienes razón, parece que no tenemos un punto final de API get para obtener una notificación individual por ID, pero llamarlo cada vez no sería muy eficiente de todos modos.

Lo más probable es que esto requiera un cambio en el serializador de notificaciones para incluir el user_id/username dentro del payload de la notificación, de modo que no sea necesaria una solicitud de API separada.

En este momento estamos utilizando el servicio alojado, de lo contrario crearía mi propio plugin. ¿Considerarían ustedes agregar el ID de usuario o el nombre de usuario al contenido de la notificación en el webhook?

¿Ya revisaste las cabeceras?

Lo hice, con la esperanza de encontrar algunos metadatos adicionales allí, pero no encontré nada específico del usuario.

URL de la solicitud: https://XXX
Método de solicitud: 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

Solo quería consultar si tienen alguna opinión o actualización. La notificación de webhook sin un usuario de destino no es muy útil.

¡Hola a todos! ¿Han tenido la oportunidad de revisar el problema? ¿Existe alguna posibilidad de que podamos obtener el ID de usuario objetivo en el evento de notificación?

He creado una PR que añadirá el user_id al payload JSON del webhook de notificaciones:

Hola @blake, ¿sería posible añadir también el user_external_id? Trabajamos con el SSO de Discourse y no tenemos realmente los user_ids de Discourse en nuestro sistema.

¡Hola Albert!

Creo que es una buena idea y he creado un commit que añadirá el external_id del usuario si SSO está habilitado.

¡Espero que esto ayude! Se añadirá a tu sitio la próxima vez que se implemente, lo cual debería ser en algún momento de esta semana.

¡Vaya, qué rápido! Muchas gracias, se agradece mucho :smiley: ¿Sabes cuál es el tiempo estimado aproximado para que esos cambios lleguen a los servidores de Discourse alojados?

Oh, olvídalo, no leí la última frase :sweat_smile:. ¡Gracias de nuevo!!