Архитектура
Обработка входящих запросов
Коммуникация сервисов
Руководство пользователя
Получение данных из сервисов
Использование Панели управления
Использование инструментов из комплекта
Работа с Theia
Мониторинг Netdata
Работа с Jupyter
Работа с ClickHouse
Основные принципы
Модификация схемы
Подключение к VPN
Справочная информация
HTTP Redirect
Каналы получения данных
WebSocket
Загрузка больших файлов
JSON-RPC 2.0 RST
API сервисов
Director API
Front API
RockMe Framework (TypeScript)
Переменные окружения
Маппинг путей
Сетевая инфраструктура
Схема хранилища ClickHouse
Создание сервисов
Python + Band Framework
Организация сервиса
Коммуникация с другими сервисами
Работа с ClickHouse
Другие возможности
TypeScript + Rockme Framework
Организация сервиса
Туториалы
Получение данных из других сервисов
Сбор сырых данных Google Analytics
Создание динамического Calltracking
Построение истории отдельного пользователя
Классические модели атрибуции
Вероятностное прохождение воронки
Атрибуция по индексу активности
Воронки
Реализация Cookie-Sync
Сегментация пользователей
X
Выберите раздел

Получение HTTP запросов: webhook / postback

Это обычные HTTP запросы от сервера к серверу. В некоторых сервисах может называться HTTP нотификацией, как в случае с CoMagic. Поддерживаются повсеместно:

  • CRM системы: AmoCRM, PipeDrive...
  • Коллтрекинги: CoMagic, CallTouch...
  • CPA-трекеры: Affise, HasOffers...
  • Мобильные трекеры: Yandex Metrika, AppsFlyer...
  • И множество других

Endpoint

POST https://yourdomain/<service>/<event_name>/<project_id>
GET  https://yourdomain/<service>/<event_name>/<project_id>?param=values&...

или без id проекта (будет записан 0)

POST https://yourdomain/<service>/<event_name>

часть значений могут быть переданы GET параметрами, в т.ч. имя события и id проекта

GET  https://yourdomain/<service>/<event_name>?param=values&...
GET  https://yourdomain/<service>/<event_name>?projectId=<project_id>&...
GET  https://yourdomain/<service>?name=<event_name>&projectId=<project_id>&...

даже при POST запросе

POST https://yourdomain/<service>?name=<event_name>&projectId=<project_id> <<< {data: "mydaa"}

Формат входящих данных

  • GET запросы
  • POST с данными в JSON или URLEncoded
  • Одновременно можно и POST и параметры url

Пример с использованием Curl

Обычный GET запрос

$ curl https://test.rstat.org/calltrack/call/99?param=myparamvalue
{"key":"in.gen.calltrack.call","id":"6462462774336290816"}

Значения name и projectId можно передать GET параметрами

$ curl https://test.rstat.org/calltrack?name=call
{"key":"in.gen.calltrack.call","id":"6462463595723620353"}

POST запрос с передачей данных в виде JSON

$ curl -X POST -H "Content-Type: application/json" https://yourdomain/calltrack/call \\
    -d '{"key1":"value1", "key2":"value2"}'
{"key":"in.gen.calltrack.call","id":"6462462774336290816"}

POST запрос с передачей данных в виде urlencoded

$ curl -X POST -H "Content-Type: application/x-www-form-urlencoded" https://yourdomain/calltrack/call \\
    -d "param1=value1&param2=value26"
{"key":"in.gen.calltrack.call","id":"6462462774336290816"}

В сервисы попадет сообщение

{ 
  "key": "in.gen.calltrack.call", 
  "channel": "http", 
  "service": "calltrack", 
  "name": "call", 
  "projectId": 0, 
  "uid": "6462464730849083392", 
  "td": { "ip": "109.252.93.158", "ua": "curl/7.60.0" }, 
  "data": { 
    "param1": "value1", 
    "param2": "value26" 
  }, 
  "id": "6462464730849083393", 
  "time": 1540771658623 
}