simon
1
此主题组件允许您将有关网站使用情况的数据发送到 Segment。
该组件支持在用户首次登录网站时调用 segment.identify。对于使用 SSO 的网站,您可以将用户的 Discourse ID 或其 external_id 发送到 Segment。该组件允许您跟踪 Discourse 的“最新”页面、分类列表、分类页面、标签页面和主题页面的浏览量。此外,它还可以跟踪主题和帖子的创建、点赞、标记和书签操作。
安装
请按照 Installing a theme or theme component 中的指南安装该组件。您也可以直接从其 Git 仓库使用 https://github.com/scossar/discourse-segment-theme-component 进行安装。或者,您可以从 此处 下载。
配置
将您的 Segment 写入密钥添加到 segment write key 设置中。然后选择您希望跟踪的事件:
该组件会扩展您网站的内容安全策略,以添加 https://cdn.segment.com/analytics.js/。
如果您在使用该组件时遇到任何问题,或者认为发送到 Segment 的数据有改进空间,请随时告知。
13 个赞
感谢您开发这个工具,太棒了!它也会向匿名用户发送数据吗?
simon
3
Segment 的 page 方法会为匿名用户调用,但 Segment 的 identify 方法仅针对已登录用户调用。
1 个赞
paigen11
(Paige N)
4
你好!
我知道我来得太晚了,但我有一个请求,希望你能帮忙。
能否在用户登录 Discourse 时,除了显示用户 ID 外,还显示用户的电子邮件地址?
在 Segment 中,我试图将 Discourse 的数据与我公司网站上可能是同一用户的数据进行合并,以了解哪些用户正在访问 Discourse 和浏览网站。但目前我无法匹配用户,因为 Discourse 的用户 ID 与网站的用户 ID 不一致。
如果能够通过匹配 Discourse 和网站上的相同电子邮件地址来关联这些用户,那将非常有帮助。
请问这是否可行?
2 个赞
插件太棒了,感谢 @simon!我使用它已经几个月了,但发现它偶尔会漏掉 topic_created 事件。我似乎无法找出这些漏报的任何规律,所以决定来这里发帖请教。有什么建议吗?有没有可以检查错误的日志?
1 个赞
simon
6
这在技术上是可行的。不过,我对将电子邮件地址添加到有效载荷中有一些安全和隐私方面的顾虑。我会仔细考虑一下,并咨询 Discourse 团队的看法。如果决定将电子邮件地址添加到有效载荷中,将会提供一个主题设置选项,默认情况下不包含电子邮件地址。
我会调查这个问题。如果你发现了任何规律,请告诉我。
我尽量在下周抽出时间测试该组件并进行一些更新。完成后,我会将其从我的个人 GitHub 仓库迁移到 Discourse 的 GitHub 仓库。
1 个赞
paigen11
(Paige N)
8
@simon 我理解你的观点,也认同安全方面的顾虑。不过,我是正在从中提取数据的 Discourse 论坛的管理员,因此只需使用提供的 ID 进入用户记录,就能手动将 ID 与对应的邮箱地址关联起来。这些数据其实已经存在,只是需要手动操作。
此外,在与组织内的其他人沟通后,我们可能会选择等待 OAuth 配置完成,这样我们的用户在登录我们的系统和 Discourse 系统时就会使用相同的 ID。
无论如何,我认为这仍然是一个值得拥有的功能——以防社区中的其他人无法获得类似的解决方案。
谢谢。
simon
10
这似乎是最理想的方案。Segment 主题组件可以更新,以添加一个选项,用于包含由您的身份验证提供商提供的 provider_uid。
很高兴你提出了这个问题。Segment 跟踪组件目前有一个选项,可以为使用 DiscourseConnect 的网站添加用户的 external_id。现在查看它,我发现它正在使用 DiscourseConnect 的旧设置名称——它在检查 enable_sso 设置是否已启用。这需要更改为 enable_discourse_connect。我明天会修复这个问题。
2 个赞
paigen11
(Paige N)
11
非常感谢,拥有一个 provider_uid 字段将非常棒——这将使我们在将数据发送到 Segment 后,能够关联用户在我们网站和 Discourse 上的操作。
感谢您的帮助。
simon
12
我已修复了当 DiscourseConnect 作为 Discourse 站点的身份验证提供商启用时,基于 external_id 跟踪用户的问题。
目前,我尚未查明导致主题创建有时无法被跟踪的原因。在我这边,该功能运行正常,没有任何问题。
我已更新了“主题书签”事件所使用的名称。此前,发送到 Segment 的事件名称为“线程书签”。我不记得当时这样命名的具体原因。希望将事件名称更改为“主题书签”不会给任何人的数据分析带来问题。
当我在 Segment 中检查调试器屏幕时,identify 调用仅发送了用户 ID 和 IP 地址。是否也可以在 identify 调用中传递电子邮件地址?
simon
14
这是两个关于在 identify 调用中传递电子邮件地址的请求。我会看看能否实现这一功能。
simon
15
我已添加了一个“包含用户邮箱”的设置:
启用后,用户的邮箱地址将随 identify 调用一起传递。如果您将 Discourse 站点上的主题组件更新到最新版本,该设置即可供您使用。
测试时发现一个小问题:如果禁用该设置,当前用户的邮箱地址在其会话期间仍会显示在 Segment 中。这与 Segment 自身的处理机制有关。当设置被禁用时,Discourse 会立即停止向 Segment 传递用户邮箱地址。
我并未忘记关于将 provider_uid 传递给 Segment 的请求。但在研究此功能时,我在想是否传递其他标识符给 Segment 会更有用。具体来说,我考虑是否应将用户的 name 和 username 也包含在 identify 调用中。
3 个赞
对我来说时机恰到好处 @simon,谢谢。
关于姓名和用户名,是的,它们也会很有帮助。一个长期的解决方案是实现一种方法,将基础包含的所有内容以及 Discourse 中创建的任何附加用户字段推送出去。
原因是,某些目标需要特定的数据才能工作。拥有一个在 Discourse 内部构建有效负载的 UI 会非常有帮助。即使它仅限于段文档中的标准字段 https://segment.com/docs/connections/spec/identify/。
1 个赞
simon
17
抱歉回复晚了。我对此进行了更多研究。目前无法通过主题组件设置 provider_uid,因为 Discourse 不会将 provider_uid 发送到客户端。未来可能可以通过站点设置启用此功能,但要使其正常工作,需要对 Discourse 核心代码进行一些更改。
1 个赞
paigen11
(Paige N)
18
没问题。感谢您的跟进和对此事的调查。希望我们能找到另一种方法,在 Discourse 和我们的网站上连接我们的 Discourse 用户。
1 个赞