Как я могу отправить данные о событиях в Google Measurement Protocol через cURL без созданного браузером пользовательского агента? - PullRequest
0 голосов
/ 05 ноября 2019

Я генерирую потенциальных клиентов с помощью рекламных объявлений в Facebook. Мой сервер принимает RTU от Facebook, и я могу передать данные в свою CRM, как требуется для моих нужд.

Я хочу отправить событие в GA, когда форма будет заполнена в Facebook.

Чтение по Справочнику по протоколу измерений Google , в котором говорится:

user_agent_string - Форматированная строка агента пользователя, используемая для вычисления следующих измерений: браузер, платформаи мобильные возможности.

Если это значение не установлено, приведенные выше данные не будут вычисляться.

Я полагаю, что это потому, что я пытаюсь отправить событие через веб-крючок PHPСценарий, в котором не задействован браузер, запрос не выполняется.

Вот соответствующая часть кода, который я запускаю (я изменил с POST на GET, думая, что это могло быть проблемой, изменит это обратноPOST, как только он заработает):

$eventData = [
      'v' => '1',
      't' => 'event',
      'tid' => 'UA-XXXXXXX-1',
      'cid' => '98a6a970-141c-4a26-b6j2-d42a253de37e',
      'ec' => 'my-category-here',
      'ea' => 'my-action-here',
      'ev' => 'my-value-here
  ];

  //Base URL for API submission
  $googleAnalyticsApiUrl = 'https://www.google-analytics.com/collect?';

  //Add vars from $eventData object
  foreach ($eventData as $key => $value) {
    $googleAnalyticsApiUrl .= "$key=$value&";
  }

  //Remove last comma for clean URL
  $googleAnalyticsApiUrl = substr($googleAnalyticsApiUrl, 0, -1);


  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $googleAnalyticsApiUrl);
  curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $response = curl_exec($ch);
  curl_close($ch);

Я полагаю, что именно пользовательский агент вызывает проблему, как будто я вручную помещаю тот же URL в браузерЯ пытаюсь попасть, событие мгновенно появляется в отслеживании в реальном времени в GA.

Примером указанного URL является:

https://www.google -аналитика. com / collect? v = 1 & t = event & tid = UA-XXXXX-1 & cid = 98a6a970-141c-4a26-b6j2-d42a253de37e & ec = my-category-here & ea = my-action-here & el = my-value-here

Я использовал как действующую конечную точку, так и / debug / endpoint. Мой код не будет отправляться без ошибок, но если я захожу на соответствующие URL-адреса через браузер, конечная точка отладки говорит, что все в порядке, а затем в действующей конечной точке событие достигает GA, как и ожидалось.

Я в курсеcurl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); пытается отправить пользовательский агент браузера. Я попытался заполнить эту опцию такими вещами, как

"Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit /537.36 (KHTML, как Gecko) Chrome / 78.0.3904.87 Safari / 537.36 "

, но он никогда не будет принят протоколом измерений.

Мои вопросы

  1. Могу ли я отправить эти события в GA без использования веб-браузера? Раньше Zapier передавал мне эти события, поэтому я предполагаю, что это возможно.

  2. Как мне отправить действительную строку user_agent_string через PHP? Я пытался подделать его с помощью CURLOPT_USERAGENT, но мне так и не удалось заставить их работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...