Node SDK

在使用前,请先阅读数据模型的介绍。

1. 集成神策分析 SDK

在 NodeJS 中集成 神策分析 SDK,使用神策分析采集并分析用户数据。

我们推荐使用 npm 管理 Node 模块并获取神策分析 SDK:

  npm install sa-sdk-node --save

注: 目前只支持 4.x 及以上 Node 版本

2. 注意事项

在1.0.8及之后版本中,添加了一个 allowReNameOption 选项,默认值为 true,在此情况下将属性值和键值格式化为下划线风格命名格式,例如:

sa.track('user-id', 'userHappy', {
  '$appVersion': '1.0.0',
  'orderId': '123'
})

//then we get data

{
...
'event': 'user_happy'
'properties': {
  '$app_version': '1.0.0',
  'order_id': '123'
}
...
}

可以通过调用 sa.disableReNameOption() 来设置 allowReNameOptionfalse。这种情况下,传递默认属性时,需要传递如 $app_version 风格的命名规范的键值和属性值,自定义属性如 orderId 会被保留当前驼峰的命名风格。默认属性格式规范请查看数据格式的介绍。

3. 使用 Node SDK

3.1 导入 SDK

在程序中初始化的代码段中构造神策分析 SDK 的实例:

3.2 追踪事件

用户通过 track() 接口记录事件,对于任何事件,必须包含用户标志符(distinct_id)和事件名(event_name)两个参数。同时,用户可以在 track() 的第三个参数为事件添加自定义事件属性,在自定义属性中需要包含 $is_login_id 属性来说明 distinct_id 是否为登录 ID。以电商产品为例,可以这样追踪一次购物行为:

3.2.1 系统预置属性

如前文中样例,事件属性中以 '$' 开头的属性为系统预置属性,在自定义事件属性中填入对应 '$' 开头的属性值可以覆盖这些预置属性:

  • $ip - 填入该属性,神策分析会自动根据 IP 地址解析用户的省份、城市信息,该属性值为 str 类型;

  • $time - 填入该属性,神策分析将事件时间设置为属性值的时间,该属性值必须为 datetime.datetimedatetime.date 类型。请注意,神策分析默认会过滤忽略 365 天前或 3 天后的数据,如需修改请联系我们。

关于其他更多预置属性,请参考 数据格式 中 '预置属性' 一节。

3.2.2 事件公共属性

特别地,如果某个事件的属性,在所有事件中都会出现,可以通过 registerSuperProperties() 将该属性设置为事件公共属性。例如,应用版本设置为所有事件共有属性方法如下:

成功设置事件公共属性后,再通过 track() 追踪事件时,事件公共属性会被添加进每个事件中。

4. 用户识别

在服务端应用中,神策分析也要求为每个事件设置用户的 Distinct Id,这有助于神策分析提供更准确的留存率等数据。

对于注册用户,推荐使用系统中的用户 ID 作为 Distinct Id,不建议使用用户名、Email、手机号码等可以被修改的信息。

4.1 用户注册/登录

当同一个用户的 Distinct Id 发生变化时(一般情况为匿名用户注册行为),可以通过 trackSignup() 将旧的 Distinct Id 和新的 Distinct Id 关联,以保证用户分析的准确性。例如:

注意,对同一个用户,trackSignup() 一般情况下建议只调用一次(通常在用户 注册 时调用),用户 登录 前后的行为的关联建议在业务端实现。在神策分析 1.13 版本之前,多次调用 trackSignup() 时,只有第一次关联行为是有效的。神策分析 1.13 版本之后提供了多设备 id 关联的方法。更详细的说明请参考 如何准确的标识用户,并在必要时联系我们的技术支持人员。

5. 设置用户属性

为了更准确地提供针对人群的分析服务,神策分析 SDK 可以设置用户属性,如年龄、性别等。用户可以在留存分析、分布分析等功能中,使用用户属性作为过滤条件或以用户属性作为维度进行多维分析。

使用 profileSet() 设置用户属性:

对于不再需要的用户属性,可以通过 profileUnset() 接口将属性删除。

用户属性中,属性名称与属性值的约束条件与事件属性相同,详细说明请参考 数据格式

5.1 记录初次设定的属性

对于只在首次设置时有效的属性,我们可以使用 profileSetOnce() 记录这些属性。与 profileSet() 接口不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据>,如果属性不存在则会自动创建。因此,profileSetOnce() 比较适用于为用户设置首次激活时间、首次注册时间等属性。例如:

6. 设置 Node SDK

6.1 设置数据发送参数

ES6

采用自定义配置项目

6.2 批量发送

Batch Submit

WARN 批量发送不支持 debugdryRun,会出现 400 错误。

按照数量大包发送

按时间发送

时间和数据量结合

7. 使用LoggingConsumer

Node SDK 中还提供了 LoggingConsumer ,如果启用,将不通过 Node 模块进行数据发送,而将所有数据都写到本地的日志文件里,然后用户再使用 LogAgent 读取日志文件,将数据导入我们的系统。

WARN 注意在生产环境下使用 pm2 的情况下,需要初始化时添加pm2Mode(bool),设置为true。另外,还需要执行pm2 install pm2-intercom

调用 LoggingConsumer 初始化语句后,后续数据发送仍然调用原有模式下的接口,如 track 等,SDK 将自动将数据写入当前设置的日志路径里面。 对应的 SDK 版本最低为 sdk-sa-node@1.0.11sa-sdk-node@1.1.1

8. 更多信息

更多信息请访问 Github主页

Last updated

Was this helpful?