微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 analytics.js 将通用数据地区、货币、语言传递给 segment.io

如何解决如何使用 analytics.js 将通用数据地区、货币、语言传递给 segment.io

对于某些背景,我们正在与电子商务网站上的 https://segment.com/docs/ 集成。

我们的网站目前有 3 个区域(美国、加利福尼亚和英国)。

区域由不同的url路径标识,(例如/*(美国)、/ca/*(CA)、/uk/*(英国))。

我们根据您访问的区域定义一个 locale 对象,例如

// A user who visits /uk/* will have this locale
const locale = {
    region: 'UK',currency: 'GBP',// one day this may be configurable
    language: window.navigator.language // en,en-US,en-GB etc.
}

// A user who visits /* will have this locale
const locale = {
    region: 'US',currency: 'USD',en-GB etc.
}

我们希望我们的 locale 数据与分段 API 调用(跟踪、页面、标识等)相关联


我可以看到 3 个可能的选项:

  1. regioncurrencylanguage* 添加context 对象。例如

    window.analytics.track('Button Clicked',{},{
      context: {
        region: locale.region,currency: locale.currency,language: locale.language
      }
    });
    
    • 这将允许所有 API 调用(跟踪、页面、识别等)将调用与当前区域设置相关联。
    • 我希望这应该通过 analytics.js 中间件来完成?
    • *我知道 context spec 已经定义了 locale 相当于我们的 locale.language(例如 en-US),所以我们可以设置 context.locale: locale.language 而不是 {{1 }}。

我对上述内容的主要担忧是我不能 100% 确定将我们自己的数据添加context.language: locale.language 对象是可以接受的,the documentation 只是说“因此规范之外的属性被忽略”,但是我希望我们的数据仓库仍然可以利用这些额外的属性

因此,另一种方法可能是将其视为用户 context

  1. 页面加载时匿名调用 trait,我们的语言环境为 identify 例如
    traits
    • 在对此进行测试后,似乎识别出的特征不会与后续事件(曲目、页面等)一起发送
      • 因此,我认为我们还必须通过一些中间件将 window.analytics.identify({ region: locale.region,language: locale.language }); 数据作为 context.traits 传递给所有其他调用

然而,我对第二种方法的担忧是,鉴于我们的 locale 数据是时间性的(用户可以随时导航到不同的区域/它不针对数据库中的用户记录存储),它可能不会'不属于用户'特征'?

  1. 为每个区域定义一个单独的 segment.io locale,例如
    source
    • 我不确定这是否安全,因为它们都住在同一个域中?

有推荐的设计吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。