Как проверить события

Выберите платформу:

Measurement Protocol для Google Аналитики не возвращает HTTP-код ошибки, даже если событие имеет некорректный формат или не содержит обязательных параметров. Поэтому перед развертыванием в рабочей версии обязательно протестируйте события с помощью сервера валидации Measurement Protocol. Если проверка показала, что структура событий корректна, проверьте реализацию и убедитесь, что используете правильные ключи.

Вы можете вызывать сервер валидации напрямую или использовать интерактивный сборщик событий Google Аналитики, Конструктор событий Google Аналитики позволяет интерактивно конструировать события и проверять их с помощью сервера валидации Measurement Protocol.

Далее описано, как отправлять события на сервер валидации Measurement Protocol для Google Аналитики и интерпретировать ответ сервера.

Отправка событий на сервер валидации

Запросы для отправки событий на саму платформу Measurement Protocol и на ее сервер валидации отличаются только URL.

Сервер URL
Measurement Protocol /mp/collect
Сервер валидации Measurement Protocol /debug/mp/collect

Остальные поля в этих запросах совпадают.

Мы рекомендуем следующий подход к проверке:

  • Используйте строгие проверки во время разработки, выбрав один из следующих вариантов:
    • Проверьте запросы с помощью Event Builder.
    • Отправьте запросы на сервер валидации, задав для параметра validation_behavior значение ENFORCE_RECOMMENDATIONS.
  • В рабочей среде отправляйте запросы без параметра validation_behavior, чтобы минимизировать объем данных, отклоненных Measurement Protocol.

Пример недействительного события

Пример запроса к серверу валидации Measurement Protocol, содержащего недействительное событие:

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

fetch(`https://www.google-analytics.com/debug/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    app_instance_id: "APP_INSTANCE_ID",
    validation_behavior: "ENFORCE_RECOMMENDATIONS",
    events: [{
      // Event names must start with an alphabetic character.
      name: "_badEventName",
      params: {},
    }]
  })
});

Пример действительного события

Пример запроса к серверу валидации Measurement Protocol, содержащего действительное событие: Этот запрос вернет пустой массив validationMessages в ответе, как показано в разделе Ответ на запрос проверки.

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

fetch(`https://www.google-analytics.com/debug/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    app_instance_id: "APP_INSTANCE_ID",
    validation_behavior: "ENFORCE_RECOMMENDATIONS",
    events: [{
      name: "level_up",
      params: {
        level: 2,
        character: "MyHero"
      },
    }]
  })
});

Ответ сервера валидации

Ниже приведен ответ сервера валидации на запрос из примера выше.

{
  "validationMessages": [
    {
      "fieldPath": "events",
      "description": "Event at index: [0] has invalid name [_badEventName]. Names must start with an alphabetic character.",
      "validationCode": "NAME_INVALID"
    }
  ]
}

Вот ответ сервера валидации на запрос, в котором не обнаружено проблем:

{
  "validationMessages": []
}

Ответ

Ключ Тип Описание
validationMessages Массив <ValidationMessage> Массив сообщений от сервера валидации.

ValidationMessage

Ключ Тип Описание
fieldPath string Путь к недействительному полю.
description string Описание ошибки.
validationCode ValidationCode Код ошибки.

ValidationCode

Значение Описание
VALUE_INVALID Недействительное значение параметра fieldPath. См. ограничения.
VALUE_REQUIRED Не указано значение обязательного параметра fieldPath.
NAME_INVALID Недействительное название. См. ограничения.
NAME_RESERVED Указано название из списка зарезервированных.
VALUE_OUT_OF_BOUNDS Превышена максимальная длина значения. См. ограничения.
EXCEEDED_MAX_ENTITIES Превышено максимальное количество параметров. См. ограничения.
NAME_DUPLICATED Название встречается в запросе более одного раза.