Segment.io的人员在构建analytics.js方面做得非常出色,可以通过一个开源的JavaScript库轻松加载大量的javascript片段(Intercom,GA,Kissmetrics等).
存储库:https://github.com/segmentio/analytics.js
它们提供托管版本,具有用于实现集成的良好UI,这是一种付费产品.但是,analytics.js是开源的,因此您也可以免费使用它(作为自托管解决方案).
太糟糕了,没有什么好的设置文件可用.
有一些关于此的博客,但这些都是过时的:
谁知道我们可以找到关于如何实现开源版本analytics.js的优秀文档的地方?
如果这些文档不存在,我们应该开始编写它们,因为它确实使开发人员的生活变得更容易.
我正在努力在现有的.NET电子商务应用程序上实现Segment分析中心,以便与其他一些服务中的Mixpanel一起使用.我理解Analytics.js和Segment .NET API的API文档,但我很困惑如何将匿名事件连接到同一个用户.
例如,假设我正在跟踪项目是否已添加到购物车中.我正在这个服务器端,因为有多个页面可以将项目添加到购物车但只有一个控制器.用户可以在不登录的情况下执行此操作,我们已经为他们分配了客户ID,因此我的代码如下所示:
Analytics.Client.Track(cartItem.CustomerId, "Added Product", new Properties() {
{ "sku", cartItem.Sku },
{ "quantity", quantity }
});
Run Code Online (Sandbox Code Playgroud)
然后,假设用户查看产品类别页面.由于这是一个相对简单的操作,我目前正在客户端,所以我的代码看起来像这样:
analytics.track('Viewed Product Category', {
category: '@Model.CategoryName',
subCategory: '@Model.SubCategoryName'
});
Run Code Online (Sandbox Code Playgroud)
我在Analytics.js规范中看到:
您无需为您网站的匿名访问者打电话.我们会自动为它们分配一个anonymousId,所以只是调用页面和轨道仍然可以正常工作而无需识别.
我的主要问题是,如何告诉Segment它是执行这两个操作的同一个(当前是匿名的)用户?作为次要问题,我是否需要在服务器端呼叫之前呼叫识别,即使Track呼叫包含用户ID?
我一直在剖析以下代码片段,它用于异步加载Segment.io分析包装器脚本:
// Create a queue, but don't obliterate an existing one!
var analytics = analytics || [];
// Define a method that will asynchronously load analytics.js from our CDN.
analytics.load = function(apiKey) {
// Create an async script element for analytics.js.
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = ('https:' === document.location.protocol ? 'https://' : 'http://') +
'd2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/' + apiKey + '/analytics.min.js';
// Find the first script element on the page and insert our …Run Code Online (Sandbox Code Playgroud) 使用细分分析 javascript 库时,如何或必须做什么才能将所有分析数据发送到我自己的服务器?
当我尝试使用来自segment.io网站的示例"入门"javascript代码加载网页时,我遇到了跨源资源共享(CORS)错误.下面是html本身.我没有在我的播放2.1.3服务器上设置任何标题出售此页面,但我认为没有必要,因为其他用户已经向我保证他们已经运行了这个没有问题:
<html>
<head>
<script type="text/javascript">
window.analytics=window.analytics||[],window.analytics.methods=["identify","group","track","page","pageview","alias","ready","on","once","off","trackLink","trackForm","trackClick","trackSubmit"],window.analytics.factory=function(t){return function(){var a=Array.prototype.slice.call(arguments);return a.unshift(t),window.analytics.push(a),window.analytics}};for(var i=0;i<window.analytics.methods.length;i++){var key=window.analytics.methods[i];window.analytics[key]=window.analytics.factory(key)}window.analytics.load=function(t){if(!document.getElementById("analytics-js")){var a=document.createElement("script");a.type="text/javascript",a.id="analytics-js",a.async=!0,a.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.io/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n)}},window.analytics.SNIPPET_VERSION="2.0.9",
window.analytics.load("**my_key_here**");
window.analytics.page();
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我用浏览器加载此页面时,我在javascript控制台上看到以下错误:
[Error] Failed to load resource: Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin. (p, line 0)
[Error] XMLHttpRequest cannot load http://api.segment.io/v1/p. Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin. (localhost, line 0)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?即使在segment.io网站上,也没有提到CORS应该只是用javascript客户端发布事件的问题.
尽管遵循以下指示,但我似乎无法使Segment正常工作:https : //segment.com/docs/platforms/chrome-extension/
运行时analytics.track,我看不到任何跟踪像素的网络请求,但也看不到任何错误。该analytics对象存在,但似乎没有任何作用。
在这里需要特别注意的一点是,我想从页面的上下文中运行细分。我的扩展程序将新的DOM元素和CSS样式注入到网页中,我想跟踪用户与这些元素的交互。因此,Segment根本不在扩展的上下文中运行。它head作为注入到页面的中script。
这个特定Segment.io的文档和帮助是有限且稀疏的,所以我希望可以在这里询问。
我刚刚设置了一个 Segment.io 工作区和一个 HTTP API 源

根据文档,我向https://api.segment.io/v1/track和https://api.segment.io/v1/page端点发送了一些 POST 请求(使用 Postman)。请求的结构如下:
curl -X POST \
https://api.segment.io/v1/track \
-H 'Accept: */*' \
-H 'Authorization: My4w3s0m3k3y' \
-H 'Cache-Control: no-cache' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json' \
-H 'Host: api.segment.io' \
-H 'Postman-Token: 474d7fbe-15af-43d2-b629-61e15945e662,2c3d5fbe-2c09-4fe6-b7ea-a04e3221201b' \
-H 'User-Agent: PostmanRuntime/7.11.0' \
-H 'accept-encoding: gzip, deflate' \
-H 'cache-control: no-cache' \
-H 'content-length: 117' \
-d '{
"userId": "abc123",
"event": "My tests",
"properties": {
"name": "test …Run Code Online (Sandbox Code Playgroud) 我是 Golang 和 Kafka 的新手,我正在使用 Segmentio kafka-go 使用 Golang 连接到 Kafka 服务器。截至目前,我想推送 Kafka 中用户的每个事件,所以我想推送单个消息(而不是批量),但由于该库提供的写入操作对于批量或单个消息需要相同的时间,因此需要很多时间。有没有什么方法可以快速编写单条消息,以便我可以在更短的时间内推送卡夫卡中的数百万个事件?
我已经对单条消息和批量消息进行了测试,它花费相同的时间(最短为 10 毫秒)。
segment-io ×8
javascript ×6
analytics ×2
apache-kafka ×1
asp.net-mvc ×1
asynchronous ×1
c# ×1
cors ×1
go ×1
httpapi ×1
httprequest ×1
httpresponse ×1