- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用GS实施通知系统
基本上,相关模型为:Organizations
(组织);User
,org的成员。用户可以在org中拥有管理权限;
管理员用户可以创建且普通用户可以购买的Entity
,并且实体也属于组织。
在GS中,有以下供稿:notification:$userId-$orgId
----重复使用的默认供稿,某些组织中用户的个人通知供稿Org:$orgId
----所有组织成员的共享供稿AdminEntity:$entityId
----关于用户对管理员用户在实体上的操作的通知UserEntity:$entityId
----有关普通用户对实体的管理/系统操作的通知
让我简要解释一下提要之间的基本关系:
1)Admin
创建Entity
:
将有关此事件的活动推送到Org:$orgId
。活动将user:$userId
作为Actor
,将entity:$entityId
作为Object
。
将他的notification:$userId-$orgId
订阅到AdminEntity:$entityId
2)User
加入Organization
:
将有关此事件的活动推送到Org:$orgId
将他的notification:$userId-$orgId
订阅到Org:$orgId
。
3)User
购买Entity
:
将有关此事件的活动推送到AdminEntity:$entityId
。
将他的notification:$userId-$orgId
订阅到UserEntity:$entityId
等等。
所描述模型的问题在于,在第一种情况下,作为User
创建者的Entity
还将通过Org:$orgId
接收到他与其他Entity
成员一起创建Organization
的通知。第二种情况也是一样。
这是通知系统的有害行为。
理想情况下,我们不应将User
自己在“共享”供稿中的活动通知给Org:$orgId
,例如Aggregation Format
。问题是-如何实现这一目标?也许GS提要应该以不同的方式进行组织,或者可以通过Org
语法来完成?
编辑:如我所见,可能的解决方案可以是:
删除所有共享的提要,例如AdminEntity
,UserEntity
,notification:$userId-org$id
;
通过add_to_many
调用将有关用户在组织中的角色,与实体之间的关系等活动直接推送到
我不确定这是否是用于GS的惯用解决方案。
最佳答案
我认为您的结构可能比您最初设计的要简单,并且更接近您在文章底部提到的内容。我还建议您通读http://blog.getstream.io/best-practices-for-instagram-style-feeds/,这听起来与您想要在此处进行的操作类似。
为了简化我们的Feed类型的细分:
通知供稿用于内容的创建者(“有15个人喜欢您的帖子”)。
汇总的供稿用于关注者(“添加了12个帖子”)。
固定供稿是添加核心活动(在您的情况下是“实体”?)的好地方,但是您也可以使用活动模型上的“收件人”字段将这些活动的其他副本保存到其他汇总供稿和通知供稿中,类似于抄送电子邮件
任何Feed类型都可以使用Flat Feed,但我们通常建议仅Flat Feed和汇总Feed跟随其他Flat Feed。通知供稿通常独立存在,我将在下面进行描述。
让我们做以下假设:
有一个名为“ Silverthorne”的管理员用户,其ID为12
组织ID 56
是“ Acme Inc”
Ian是ID为74
的常规用户。
Silverthorne准备一些实体内容,将其保存到自己的数据库中后,其ID为63
让我们创建一个称为org
的平面供稿,在其中进行实体活动,并为聚合数据创建一个称为org_aggregated
的聚合供稿,一个名为notifications
的通知供稿,为用户timeline
的统一供稿。如果您的用户可以看到另一个用户(而不是组织)创作的所有内容的供稿,那么我建议您使用另一个称为usercontent
的固定供稿。
为了使Silverthorne将该活动发布到GetStream,活动参与者是"user:12"
,动词可以是"post"
,对象是"entity:63"
对此进行伪编码,因为我不知道您使用的是哪个SDK,因此将类似于:
# acme inc gets created as an organization, and so its aggregated feed
# should follow the org's flat feed
acme_org_feed = getstreamClient->feed('org', '56')
acme_org_agg_feed = getstreamClient->feed('org_aggregated', '56')
acme_org_agg_feed->follow(acme_org_feed)
org
统一供稿中的每个实体也将被汇总。您可以设置如何在GetStream仪表板上汇总这些内容。
# ian is a member of Acme Inc, so follow their entity feed
ian_feed = getstreamClient->feed('timeline', '74')
ian_feed->follow(acme_org_feed)
acme_notif_feed = getstreamClient->feed('org_notification', '56')
acme_notif_feed->addActivity({
'actor': 'user:74',
'verb': 'registration',
'object': 'user:74'
})
org
)的
org:56
固定供稿中
user:74
遵循
org:56
的固定供稿
usercontent:12
);这是完全可选的
org_aggregated:56
)的聚合提要中,因为聚合提要遵循平面提要
timeline:74
供稿,其中应包含Entity#63的副本
ian_feed->followed()
以获得Ian关注的每个供稿的列表
org_aggregated:56
,而Ian可以看到
one new entity added in the past day
)
org_notification:56
,所有用户都可以看到“ Ian liked实体63”,或者您的UI需要显示该内容。
$userId-$orgId
...我们的某些SDK(例如Rails和Django)会自动尝试“丰富”数据库中的这些值,因此您需要其他稍后尝试拆分这些值的逻辑。我们建议将UUID用作无冲突标识符,但这完全由您控制。如果一个用户确实可以属于多个组织,则只需让该用户“关注”组织的供稿即可。
关于getstream-io - 使用GetStream实现通知系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595704/
我有一个现有的通知提要,但我正在考虑迁移到 GetStream。 目前,我正在使用 Laravel 通知来通知用户和其他对象。 我目前有如下内容: 1) 用户 2) 团体 3) 组员 因此,当我 CR
我想知道我是否可以直接使用 getstream.io 管理用户配置文件和用户身份验证? 我看了一眼样本,但我不明白用户是如何创建的。 最佳答案 目前无法在 Stream 中管理用户帐户、个人资料和授权
您能否解释一下我们如何在 Getstream.io API 中发布视频等资源。从文档中我知道我们如何在提要中存储文本。我需要知道我们如何在流中上传图像/视频。 最佳答案 您不能在 Getstream.
getstream 是否提供了一种方法来检索提要中的事件数量?我有一个通知提要设置。我可以使用分页 get 检索事件。但是,我想显示 Feed 中的项目数。 最佳答案 很遗憾,没有 API 端点可以检
我想使用 Getstream.io API 在 Twitter 上创建类似于主题标签的功能。用户将使用特定主题标签将消息发布到他们自己的平面提要。然后我希望能够根据某个主题标签过滤所有事件。 最佳答案
我正在尝试将 getstream 与 Lumen 一起使用,但他们创建的 laravel 包似乎与 Lumen 不兼容。这里有人使用 getstream 和 Lumen 吗? 最佳答案 我也看到了您关
文档中说,一个activity的唯一性要么由时间决定,要么由时间加外来id决定。 我们希望禁止类似的事件(例如“用户 1 更新了文章 2”),例如一天中的同一时间,以防止向关注者发送垃圾邮件。 我们尝
我已经遵循了这里的建议 stackoverflow aggregate answer 我将帖子组合在一起 (将同一个帖子分享在一起,对同一个帖子点赞,将常规帖子作为单个事件)。然而,我注意到的是我最终
每当我尝试在我的平面提要中评论帖子并重新加载评论部分时。出现了一组重复的评论单元格,所以如果我有一个评论并重新加载,我现在将有两个重复的评论。这种情况一直发生,直到我关闭并重新打开该评论线程。然后它将
在此页面上显示“要启用开发 token ,您需要更改应用程序配置。” https://getstream.io/chat/docs/tokens_and_authentication/?languag
我想要一个 rake 任务来设置 GetStream 环境,其中包含我们平台中的所有 6 个提要组,但找不到用于管理提要组的文档化 API。 是否有我遗漏的 API?有没有我可以同时使用的未记录的?
我是 getstream 新手 - 我正在编写一些客户端代码 var StreamClient = Stream.connect('xxxxxxxx', null, '11111'); var fee
我目前正在开发一个使用事件流的网络应用程序。起初 getstream 看起来可以挽救我的一天,但我很快发现了一个障碍:在我的系统中,用户可以关注其他用户、组织和组(多态 Actor 类),到目前为止一
Facebook 上的一个简单功能是显示您 friend 的帖子,以及您的 friend 分享的帖子。在共享帖子的情况下,它的标题为“Kelly 和 4 个其他人”共享的 XYZ 帖子。此外,如果您的
您好,我有一个带有所有者的 Post 模型,以及一个包含该 Post 的所有答案的 Answer 模型。我如何使用 Getstream.io 创建将产生以下结果的流: “Julie、Frank 和另外
我试图通过 false 但它似乎没有做任何事情。无论如何,我真正想要的是未读/未见。在这一点上,它主要用于测试目的,但我可以看到这成为我们系统中的一个功能。 mark_read Comma sep
如何过滤事件,例如如果我想根据某些内容过滤事件,它应该列出包含该内容的所有事件。 getstream 是否提供了任何此类功能? 你能提出建议吗? 最佳答案 我正在寻找同样的东西。如果我们假设 GetS
我正在尝试使用GS实施通知系统 基本上,相关模型为: Organizations(组织); User,org的成员。用户可以在org中拥有管理权限; 管理员用户可以创建且普通用户可以购买的Entity
我正在构建一个事件提要应用程序,用户可以在其中对每个事件提要点赞/评论。我浏览了 GetStream.io 文档,看起来我必须发送带有对象 ID 的事件。 { id:"ef696c12-69a
我正在使用 stream-laravel 添加流,但我看到它配置为使用 user.那么,我该如何着手使用该方法来读取网站上的每一个事件呢? 最佳答案 在应用中使用单独的全局提要以及所有独特的主题或用户
我是一名优秀的程序员,十分优秀!