Obtendo o usuário de destino para eventos de webhook de notificação

Vejo que os webhooks agora suportam notificações, o que é fantástico. É algo que realmente precisamos. No entanto, o payload está faltando uma informação crítica: o usuário para quem a notificação é destinada. Neste exemplo de payload, podemos ver o autor da postagem que acionou a notificação, mas não o usuário que deve recebê-la.

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

Procurei se existe uma API para obter o usuário-alvo a partir do ID da notificação, mas não encontrei nada documentado. Existe alguma maneira de obter o nome de usuário ou ID do usuário-alvo no payload da notificação?

Para contextualizar, estamos tentando consolidar notificações de vários sistemas em uma experiência única para nossos usuários.

@Falco ou @blake, vocês têm alguma ideia de como posso descobrir para qual usuário uma notificação é destinada quando recebida através do novo webhook de notificações?

Acabei de dar uma olhada rápida para ver se havia uma resposta rápida, e você tem razão: não parece que temos um endpoint de API get para buscar uma notificação individual por ID, mas isso não seria muito eficiente de chamar a cada vez, de qualquer forma.

Muito provavelmente, isso exigirá uma alteração no código do serializador de notificações para incluir o user_id/username dentro do payload da notificação, para que uma solicitação de API separada não seja necessária.

Estamos usando o serviço hospedado no momento, caso contrário, eu mesmo criaria meu próprio plugin. Vocês considerariam adicionar o ID de usuário/nome de usuário ao payload de notificação no webhook?

Você verificou os cabeçalhos?

Eu fiz isso – esperando encontrar alguns metadados extras, mas não encontrei nada específico do usuário.

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

Passando para ver se vocês têm alguma opinião ou atualização. O webhook de notificação sem um usuário de destino não é muito útil.

E aí, pessoal, vocês tiveram a chance de revisar o problema? Há alguma esperança de conseguirmos o ID do usuário de destino no evento de notificação?

Criei um PR que adicionará o user_id ao payload JSON do webhook de notificação:

Olá @blake, seria possível adicionar também o external_id do usuário? Trabalhamos com o SSO do Discourse e não temos os IDs de usuário do Discourse no nosso sistema.

Olá, Albert!

Acho que essa é uma boa ideia e criei um commit que adicionará o external_id do usuário se o SSO estiver habilitado.

Espero que isso ajude! Ele será adicionado ao seu site na próxima vez que for implantado, o que deve acontecer ainda esta semana.

Uau, que rapidez! Muito obrigado, isso é muito apreciado :smiley: Você sabe qual é o ETA aproximado para que essas alterações cheguem aos servidores Discourse hospedados?

Ah, esquece, não li a última frase :sweat_smile:. Obrigada de novo!!