Skip to main content
使用产品事件记录应用中已命名的用户操作,例如打开结账页面或完成购买。SDK 不会安装点击监听器,也不会收集表单内容。每个事件都由你的代码记录。 计数规则和报告类型请参阅产品分析。

准备测试

使用 Node.js 18 或更高版本的应用,以及一个你有读取权限的 LogBrew 项目。如果你之前没有发送过遥测数据,先从快速入门开始。不要让此测试混入客户活动。 在应用目录中安装以下包:
为项目使用服务端接入密钥。把它保存在 LOGBREW_SERVER_API_KEY 中,不要纳入源码管理。切勿把服务端密钥放进浏览器打包文件。账号访问令牌用于读取结果,不用于配置 SDK。

确定一个事件代表什么

从一个产品问题出发。例如:用户打开结账页面后,会提交吗?为每个事件指定一个固定名称、一个明确的触发条件,以及应用中唯一一个记录它的位置。 在不同版本和语言之间保持事件名称不变。不要用电子邮件地址、订单号、URL 或用户输入的文本拼接名称。 自定义属性只使用一小组经过批准的值。例如,checkout_mode 可以是 guest 或 signed_in。不要为每个值新增一个事件名称。不要发送表单内容。 每个业务操作只在一个位置记录。如果浏览器和服务器都记录同一个操作,总数会翻倍。

使用正确的活动类型

createProductActionAttributes 会在事件元数据中设置 analyticsSchemaVersion: 1 和 analyticsKind: "interaction"。它的路由模板或屏幕名称决定 analyticsSurface。使用路由模板(例如 /orders/:id),而不是具体的 URL。 事件名称不决定类型。名为 page_view 的互动仍然是互动。日志、问题和 Span(一次计时操作)都不是产品事件。其他运行时请参阅 SDK 接入。

为每个事件设置用户和会话

  • 对于已登录用户,将 context.subject 设为稳定的 ID,并设置 kind: "user"。
  • 对于匿名访客,使用另一个 ID,并设置 kind: "anonymous"。
  • 把应用的会话 ID 放进 context.session.id。在整个会话中重复使用它。
切勿使用姓名、电子邮件地址、IP 地址或访问令牌作为 ID。稳定的 ID 会把同一用户的操作关联起来,但不会让数据变成匿名数据。 不要在共享的服务端客户端上设置默认用户或会话。为每个事件传入产生它的那个请求的主体和会话。SDK 不会创建这些 ID,也不会检测登录、退出登录或账号切换。登录后,LogBrew 不会把匿名主体合并到用户中。

在本地运行示例

将此示例保存为 product-events.mjs。它记录 5 个测试操作,涵盖匿名访问、登录和 2 个用户。客户端只保存共享的服务和部署上下文。此测试关闭了自动投递。
运行脚本时不要加 --send。此命令不会发送任何请求:
预期输出:
版本和环境标记不是产品操作。此结果只反映本地队列,不代表 LogBrew 已收到这些事件。在包含真实客户上下文的应用中,不要打印 previewJson()。

处理登录和退出登录

  • 登录前,每个事件都发送当前的匿名主体。
  • 登录后,发送该用户的稳定 ID,类型为 user。
  • 退出登录时,停止使用该用户的上下文。按照你的隐私政策创建新的匿名主体。
  • 切换账号时,使用新用户的 ID。
示例在身份变化时会开始一个新会话。选择你自己的会话规则,并应用到每个事件。事件上下文会在该事件中替换客户端的主体和会话。如果事件省略了其中一项,就使用客户端的值。因此,示例没有为客户端设置主体或会话。对于稍后运行的任务,保留发起它的用户的身份。

发送一次并查看结果

在进程环境中设置测试项目的服务端密钥。只运行一次此命令:
每次运行都会创建新的事件 ID,所以第二次运行会再增加 5 个事件。如果进程失败,输出中会包含 SDK 错误码。密钥被拒绝时会输出:
确保接入密钥处于有效状态,并且属于测试项目。登录账号并不能修复 SDK 密钥。其他故障请参阅 API 错误和故障排除。 LogBrew 接受这批数据后,在控制台中查找这些事件:
  1. 打开分析。
  2. 在项目下选择测试项目。
  3. 在时间范围下选择 24 小时。
  4. 在热门事件下找到这 3 个事件名称,在热门页面下找到 /checkout。
项目中的其他活动会改变这些总数。要精确核对服务、版本和环境,使用已登录的 CLI 读取概览:
如果该时间范围内只有这一次运行,预期结果为:
  • 5 次互动,全部带有会话上下文,页面均为 /checkout。
  • 3 个事件来自用户,2 个来自匿名主体。
  • 2 个用户、2 个匿名主体和 4 个会话。
去重后的用户数、主体数和会话数都是近似值。事件总数在所选时间范围内是精确值。此测试不衡量转化或留存。

在应用中测试事件

把采集调用移到应用的处理函数中。保持每个事件的含义、类型和身份规则不变。先用虚构的测试账号验证。 本地预览检验的是采集,被接受的批次检验的是投递。两者都不能证明采集调用在应用中的正确位置运行。