Segment.io HTTP API无法收集事件

时间:2019-07-08 13:22:38

标签: httprequest httpresponse segment-io httpapi

此特定Segment.io的文档和帮助有限且稀疏,因此希望可以在此处提出要求。

我刚刚设置了Segment.io工作区和HTTP API源 HTTP API source visible in the Segment.io UI

对于docs,我(与邮递员一起)向https://api.segment.io/v1/trackhttps://api.segment.io/v1/page端点发送了一些POST请求。请求的结构如下:

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 1"
  }
}'

全部返回200响应和以下消息:

{
    "success": true
}

但是,当我到达仪表盘时,没有任何事件记录。 flat-lining events graph as seen on the Segment.io UI

调试器也为空 Empty debugger page with text "No Recent Events Seen. Make sure your source is configured correctly."

我在这里想念什么?

4 个答案:

答案 0 :(得分:0)

您的写入密钥似乎未经过base64编码。对写密钥进行编码时,请记住在编码之前在其末尾添加:

此外,对于Authorization key:value,请确保在编码的写密钥之前添加Basic。因此,您的授权key:value看起来像:

  

授权:基本{编码写密钥}

来自segment documentation的示例:

  

在实践中,这意味着将段源写密钥'abc123'作为用户名,添加冒号,然后将密码字段保留为空。 base64编码后,“ abc123:”变为“ YWJjMTIzOg ==”;并以如下方式在授权标头中传递:“授权:基本YWJjMTIzOg ==”。

答案 1 :(得分:0)

我一直在处理相同的问题。 我按托德所说的找到了解决方法。

您应该添加标题random_arr_func = lambda x:[list(np.random.permutation(your_list)) for i in range(2)] list(b(your_list))

因此,您需要查找“细分”源设置并获取写入密钥。 之后,我使用了online base64 encoding tool对我的写密钥进行编码。 最后,您应该将此标头(授权)添加为“基本”和编码后的写入密钥。

您应该能够在细分网页的“调试”面板中看到跟踪的事件。

我希望这会有所帮助!

答案 2 :(得分:0)

您可以尝试使用此代码

const { promisify } = require("util");

var Analytics = require("analytics-node");
var analytics = new Analytics("xxxxxxxxxxxxxxxxxxxxxxx", {
  flushAt: 1,
});

const [identify, track] = [
  analytics.identify.bind(analytics),
  analytics.track.bind(analytics),
].map(promisify);


 console.log("user id: ", req.body.event.app_user_id);
  let app_user_id = req.body.event.app_user_id;
  let period_type = req.body.event.period_type;
  let expiration_at_ms = req.body.event.expiration_at_ms;
  let ret = "Initial";
  try {
    await identify({
      userId: app_user_id,
      traits: {
        period_type: period_type,
        expiration_at_ms: expiration_at_ms,
      },
    });
    ret = "Done : Sengment done";
  } catch (err) {
    console.log("err: ", err);
    ret = "Error : " + err;
  }

  return {
    rafsan: ret,
  };

答案 3 :(得分:-1)

尝试清除浏览器的缓存或使用其他浏览器。我遇到了同样的问题,为我工作。

希望这会有所帮助。