Как получить данные из вебхука?
Мне приходит вебхук, вот такой:
https://webhook.site/#!/2231c244-be0b-416d-9fe9-2f...
Я хочу конкретно взять значение поля name.
spoiler
Пробую:
$json = file_get_contents('php://input'); $action = json_decode($json, true); $sName = strval($action['name']['value']);; |
$json = file_get_contents('php://input'); $action = json_decode($json, true); $sName = strval($action['name']['value']);;
Я наверное просто не понимаю, как в php обращаться к массивам json...
Дополнительно:
Это какой-то странный сайт, который зачем-то показывает данные в виде json, хотя в запросе он отсутствует.
А весь массив целиком передается в полях запроса.
То есть это будет $_POST['fields']['name']['value']
- Да, заработало.
С самого начала писал $_POST['name'], думая что в вебхуке просто данные с формы. - ну вот там есть раздел raw. берете его и идете на https://www.urldecoder.org/
и сразу становится видно, что никакого json там нет
Ответы:
Используйте json_decode
$data = json_decode($_REQUEST['fields'], true); echo $data['name']['value'] |
$data = json_decode($_REQUEST['fields'], true); echo $data['name']['value']
- Попробовал.
Потом я отправляю данные в другую программу (битрикс24).
С вашим примером даже отправляться перестало.spoiler
<?php $data = json_decode($_REQUEST['fields'], true); $sName = $data['name']['value']; $sPhone = $data['field_d3fa9a6']['value']; $b24Url = "https://metodika.bitrix24.ru"; // URL своего Битрикс24 $b24UserID = "6"; // ID пользователя, от имени которого будем добавлять лид $b24WebHook = "nichegointeresnogo"; // код вебхука, // формируем URL, на который будем отправлять запрос $queryURL = "$b24Url/rest/$b24UserID/$b24WebHook/crm.lead.add.json"; // формируем параметры для создания лида $queryData = http_build_query(array( "fields" => array( "TITLE" => "Лид с сайта ПТСнаб", // название лида "NAME" => $sName, // имя "PHONE" => array( // телефон в Битрикс24 "n0" => array( "VALUE" => $sPhone, // номер "VALUE_TYPE" => "MOBILE", // тип номера = мобильный ), ), //"UTM_SOURCE"=>$utm_source, //"UTM_MEDIUM"=>$utm_medium, //"UTM_CAMPAIGN"=>$utm_campaign, ), 'params' => array("REGISTER_SONET_EVENT" => "Y") // Y = произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид. )); // отправляем запрос в Б24 и обрабатываем ответ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $queryURL, CURLOPT_POSTFIELDS => $queryData, )); $result = curl_exec($curl); curl_close($curl); $result = json_decode($result,1); // если произошла какая-то ошибка - выведем её if(array_key_exists('error', $result)) { die("Ошибка при сохранении лида: ".$result['error_description']); } echo "Лид добавлен, отличная работа :)"; ?>
<?php $data = json_decode($_REQUEST['fields'], true); $sName = $data['name']['value']; $sPhone = $data['field_d3fa9a6']['value']; $b24Url = "https://metodika.bitrix24.ru"; // URL своего Битрикс24 $b24UserID = "6"; // ID пользователя, от имени которого будем добавлять лид $b24WebHook = "nichegointeresnogo"; // код вебхука, // формируем URL, на который будем отправлять запрос $queryURL = "$b24Url/rest/$b24UserID/$b24WebHook/crm.lead.add.json"; // формируем параметры для создания лида $queryData = http_build_query(array( "fields" => array( "TITLE" => "Лид с сайта ПТСнаб", // название лида "NAME" => $sName, // имя "PHONE" => array( // телефон в Битрикс24 "n0" => array( "VALUE" => $sPhone, // номер "VALUE_TYPE" => "MOBILE", // тип номера = мобильный ), ), //"UTM_SOURCE"=>$utm_source, //"UTM_MEDIUM"=>$utm_medium, //"UTM_CAMPAIGN"=>$utm_campaign, ), 'params' => array("REGISTER_SONET_EVENT" => "Y") // Y = произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид. )); // отправляем запрос в Б24 и обрабатываем ответ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $queryURL, CURLOPT_POSTFIELDS => $queryData, )); $result = curl_exec($curl); curl_close($curl); $result = json_decode($result,1); // если произошла какая-то ошибка - выведем её if(array_key_exists('error', $result)) { die("Ошибка при сохранении лида: ".$result['error_description']); } echo "Лид добавлен, отличная работа :)"; ?>
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для получения данных из вебхука вам необходимо создать обработчик запросов на вашем сервере. В зависимости от того, на каком языке программирования вы пишете серверную часть, пример реализации будет выглядеть по-разному. Вот пример на PHP:
// Получаем данные из вебхука $data = file_get_contents('php://input'); // Преобразуем данные из JSON в массив $data_array = json_decode($data, true); // Далее вы можете обработать полученные данные как вам необходимо
В данном примере мы используем функцию file_get_contents для получения данных из потока ввода php://input, который содержит тело запроса. Затем мы преобразуем полученные данные из формата JSON в массив с помощью функции json_decode. После этого вы можете обрабатывать полученные данные в соответствии с вашими потребностями.
Не забудьте учитывать безопасность при обработке данных из вебхука, так как недостаточная валидация и фильтрация данных может привести к уязвимостям в вашем приложении. Всегда проверяйте и очищайте данные перед их использованием.