phallguy
(Paul Alexander)
1
我看到 webhook 现在支持通知功能,这太棒了,正是我们迫切需要的。不过,负载中缺少一个关键信息——通知所针对的用户。在此示例负载中,我们可以看到触发通知的帖子作者,但无法看到应接收通知的用户。
{
"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"
}
}
}
我查找了是否有通过通知 ID 获取目标用户的 API,但未找到任何相关文档。请问是否有一种方法可以在通知负载中获取目标用户名或 ID?
背景说明:我们正试图将来自多个系统的通知整合起来,为用户提供统一的通知体验。
phallguy
(Paul Alexander)
2
@Falco 或 @blake,你们对于如何通过新的通知 webhook 确定通知所属的用户有什么想法吗?
blake
(Blake Erickson)
3
刚才粗略看了一下,想看看有没有快速的答案。你说得对,我们似乎没有用于通过 ID 获取单个通知的 get API 端点,而且无论如何,每次都调用这样的接口效率也不高。
最有可能的是,这需要修改通知序列化器的代码,以便在通知负载中包含 user_id 或 username,这样就不需要额外的 API 请求了。
phallguy
(Paul Alexander)
4
我们目前使用的是托管服务,否则我会自己构建插件。你们是否考虑在 Webhook 的通知负载中添加用户 ID/用户名?
phallguy
(Paul Alexander)
6
我试过了——希望能从中找到一些额外的元数据,但没发现任何与用户相关的内容。
请求 URL: https://XXX
请求方法: 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
phallguy
(Paul Alexander)
7
跟进一下,看看大家是否有任何想法或更新。没有目标用户的通知 webhook 其实没什么用处。
phallguy
(Paul Alexander)
8
嘿,大家有机会查看这个问题了吗?我们有没有希望在通知事件中获得目标用户 ID?
blake
(Blake Erickson)
9
我已经创建了一个拉取请求,该请求将在通知 Webhook 的 JSON 负载中添加 user_id:
你好 @blake,是否也可以添加用户 external_id?我们使用 Discourse 的 SSO,在我们的系统中并没有 Discourse 用户 ID。
blake
(Blake Erickson)
11
你好,Albert!
我认为这是一个很好的想法,我已经提交了一个 commit,如果启用了 SSO,将会添加用户的外部 ID(external_id)。
希望这能帮到你!它将在你的站点下次部署时加入,预计本周内就会完成。
哇,真快!非常感谢,太感激了
你知道这些更改大概什么时候能部署到托管的 Discourse 服务器上吗?