За последние 24 часа нас посетили 22554 программиста и 1116 роботов. Сейчас ищут 655 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем alexey.772, 4 окт 2022.

  1. alexey.772

    alexey.772 Новичок

    С нами с:
    4 окт 2022
    Сообщения:
    3
    Симпатии:
    0
    В 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"}]​
     
  2. alexey.772

    alexey.772 Новичок

    С нами с:
    4 окт 2022
    Сообщения:
    3
    Симпатии:
    0
    Забыл самое главное... в чем вопрос

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

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

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    json_decode() на полученные эл-ты массива.
     
    alexey.772 нравится это.
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    https://php.net/json_decode

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

    alexey.772 Новичок

    С нами с:
    4 окт 2022
    Сообщения:
    3
    Симпатии:
    0
    Спасибо!
    Да, я с горем пополам нашел что {} это означало 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: знаю чуть чуть, минимум, который был необходим на простейших сайтах
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    бред это....
    фигурные скобки -это объект .... с полями в нем....