Segment.io HTTP API не собирает события

Документация и справка для этого конкретного Segment.io ограничены и скудны, поэтому я Надеюсь, здесь можно спросить.

Я только что настроил рабочее пространство Segment.io и источник HTTP API Источник API HTTP виден в пользовательском интерфейсе Segment.io

Согласно документам, я отправил несколько POST-запросов (с Postman) на https://api.segment.io/v1/track и https://api.segment.io/v1/page конечных точек. Запросы были структурированы следующим образом:

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
}

Однако, когда я добрался до своей приборной панели, никаких событий не было записано. Плоский график событий, как видно из пользовательского интерфейса Segment.io

Отладчик также пуст Пустая страница отладчика с текстом

Что мне здесь не хватает?


person Jessica Chambers    schedule 08.07.2019    source источник


Ответы (4)


Похоже, ваш ключ записи не закодирован в base64. Когда вы кодируете свой ключ записи, не забудьте добавить : в конце, прежде чем он будет закодирован.

Кроме того, для параметра Ключ авторизации:значение обязательно добавьте Basic перед закодированным ключом записи. Таким образом, ваш ключ авторизации: значение будет выглядеть так:

Авторизация: базовая {закодированный ключ записи}

Пример из документации по сегменту:

На практике это означает, что в качестве имени пользователя используется ключ записи источника сегмента, 'abc123', добавляется двоеточие, а затем поле пароля остается пустым. После кодирования base64 'abc123:' становится 'YWJjMTIzOg=='; и это передается в заголовке авторизации следующим образом: «Авторизация: Basic YWJjMTIzOg==».

person Todd Utterback    schedule 12.09.2019

Я занимаюсь той же проблемой. Я нашел решение, как сказал Тодд.

Вы должны добавить заголовок Authorization: Basic + base64 encoding write key.

Итак, вы ищете настройку Segment source и получаете ключ записи. После этого я использовал онлайн-инструмент кодирования base64 для кодирования моего ключа записи. Наконец, вы должны добавить этот заголовок (Авторизация) с «Основным» и закодированным ключом записи.

Вы должны увидеть отслеживаемое событие на панели «Отладка» на веб-странице «Сегмент».

Надеюсь, это поможет!

person Agus Trombotto    schedule 16.04.2020

Вы можете попробовать этот код

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,
  };
person Rafsan Uddin Beg Rizan    schedule 17.07.2020

Попробуйте очистить кеш браузера или используйте другой браузер. У меня была такая же проблема, и я работал на меня.

Надеюсь это поможет.

person alexperto    schedule 11.07.2019