Ottenere l'utente di destinazione per gli eventi webhook di notifica

Vedo che gli webhook ora supportano le notifiche, il che è fantastico. È proprio ciò di cui avevamo bisogno. Tuttavia, nel payload manca un’informazione cruciale: l’utente destinatario della notifica. In questo esempio di payload possiamo vedere l’autore del post che ha attivato la notifica, ma non l’utente che dovrebbe riceverla.

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

Ho cercato se esiste un’API per ottenere l’utente destinatario partendo dall’ID della notifica, ma non ho trovato nulla di documentato. Esiste un modo per ottenere il nome utente o l’ID del destinatario direttamente nel payload della notifica?

Per contestualizzare, stiamo cercando di consolidare le notifiche provenienti da più sistemi in un’unica esperienza per i nostri utenti.

@Falco o @blake, avete qualche idea su come posso capire a quale utente è destinata una notifica quando viene ricevuta tramite il nuovo webhook delle notifiche?

Ho dato un’occhiata veloce per vedere se c’era una risposta rapida, e hai ragione: sembra che non abbiamo un endpoint API get per recuperare una singola notifica tramite ID, ma del resto non sarebbe molto efficiente chiamarlo ogni volta.

Molto probabilmente sarà necessaria una modifica al codice del serializzatore delle notifiche per includere user_id/username all’interno del payload della notifica, in modo da non dover effettuare una richiesta API separata.

Al momento stiamo utilizzando il servizio ospitato, altrimenti avrei già sviluppato il mio plugin. Potreste considerare di aggiungere l’ID utente o il nome utente al payload di notifica nel webhook?

Hai controllato gli header?

L’ho fatto - speravo di trovare alcuni metadati aggiuntivi, ma non ho trovato nulla di specifico per l’utente.

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

Ti scrivo per sapere se avete qualche opinione o aggiornamento. La webhook di notifica senza un utente di destinazione non è molto utile.

Ehi ragazzi, avete avuto modo di esaminare il problema? C’è qualche speranza di poter ottenere l’ID utente di destinazione nell’evento di notifica?

Ho creato una PR che aggiungerà user_id al payload JSON del webhook di notifica:

Ciao @blake, sarebbe possibile aggiungere anche l’external_id dell’utente? Lavoriamo con l’SSO di Discourse e nel nostro sistema non abbiamo davvero gli ID degli utenti di Discourse.

Ciao Albert!

Penso che sia un’ottima idea e ho creato un commit che aggiungerà l’external_id dell’utente se l’SSO è abilitato.

Spero ti sia utile! Verrà aggiunto al tuo sito alla prossima distribuzione, che dovrebbe avvenire entro questa settimana.

Wow, che velocità! Grazie mille, molto apprezzato :smiley: Sai quale sia l’ETA approssimativa per l’applicazione di queste modifiche ai server Discourse ospitati?

Oh, niente di che, non ho letto l’ultima frase :sweat_smile:. Grazie ancora!!