Принимаем weebhook от zadarma, не могу разобраться..

В PHP дилетант… задача принять вебхук от сервиса и упорядочить данные.

Вот что говорит инструкция по Api сервиса:

CALL_TRACKING

информацию о звонках на номера, подключенные к коллтрекингу

Отправляется раз в 8 минут, при наличии новых звонков.
Параметры, которые отправляются на ссылку для уведомлений:

  • event – событие (CALL_TRACKING)
  • result — массив
    • tracker — ID трекера (можно узнать на странице установки кода);
    • start — время начала звонка;
    • duration — длительность звонка в секундах;
    • caller_id — номер звонящего;
    • caller_did — номер, на который позвонили;
    • source — название источника посетителя;
    • country — (опционально) страна, из которой был совершен звонок;
    • ga_id — (опционально, если в настройках указан Id Google Analytics) id посетителя в Google Analytics;
    • metrika_id — (опционально, еcли в настройках указан Id Yandex.Metrika) id посетителя в Yandex.Metrika;
    • url — адрес страницы, с которой был звонок;
    • utm_source, utm_medium, utm_campaign, utm_term, utm_content — (опционально, если при переходе на сайт были указаны utm метки) utm метки, по которым посетитель перешел на сайт в последний раз;
    • first_utm — (опционально, если при первом переходе на сайт были указаны utm метки, отличные от тех, по которым произведен переход в последний раз) массив с utm метками указанными выше, по которым посетитель перешел на сайт в первый раз;
    • pbx_call_id — id звонка (кроме Toll Free).

вот код, которым я принимаю вебхук

Код (Text):
  1. <?php if (isset($_GET[‘zd_echo’])) exit($_GET[‘zd_echo’]);
  2.  
  3. $text_log = print_r($_POST[‘result’], true);
  4.  
  5. http_response_code(200);
  6. exit;
  7. ?>

вот то, что получаю в результате в переменной $text_log

[{«source»:»Внешний (offline) источник: ТЕСТОВЫЙ»,»tracker»:»44a59bae22b48d156792c580a6f046c2″,»start»:1664824217,»duration»:3,»caller_id»:»79277097772″,»caller_did»:»78482944031″,»country»:»RU»,»pbx_call_id»:»in_6ca9853be04b2a5924f34abc77c34206baab1275″}]​
 

Забыл самое главное… в чем вопрос

получаемый результат в [] — я так понимаю массив где списком в {} , {} , {} идут значения, которые видимо тоже являются массивом..
Но прочитать массив $_POST[‘result’] через цикл foreach не получается…

как вытащить данные?
В идеале хочу чтобы каждый звонок залетал в цикл
foreach ($xxx as $value) {
$caller_id = $…..;
$caller_did = $…..;
…записываю в БД
}

 

json_decode() на полученные эл-ты массива.

 

https://php.net/json_decode

Но дилетанты в PHP не должны лезть в приём веб-хуков. Сначала надо программировать научиться… Если это коммерческая задача, лучше отдайте на фриланс.

 

Спасибо!
Да, я с горем пополам нашел что {} это означало JSON…

Решил вопрос

Код (Text):
  1.     // декодировал запрос
  2. $in = json_decode($json);
  3.  
  4.  
  5.      // записал массив со звонками
  6. $array = $in->result;
  7.  
  8.     // выводим все звонки
  9. foreach ($array as $v) {
  10.     echo $v->caller_id;
  11.     echo ‘<br />’;
  12. }

— Добавлено —
Не прям дилетант :rolleyes: знаю чуть чуть, минимум, который был необходим на простейших сайтах

 

бред это….
фигурные скобки -это объект …. с полями в нем….

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *