Задать вопрос
@SevenShots

Не отправляется webhook из Wordpress?

Нужно отправить webhook через curl в wordpress для добавления заявок в AmoCRM

Для этого в Wordpress в файл function добавил код

/ Вызываем функцию для перехвата данных
function your_wpcf7_mail_sent_function($contact_form){

    // Перехватываем данные из Contact Form 7
    $title = $contact_form->title;
    $posted_data = $contact_form->posted_data;

    //Вместо "Контактная форма 1" необходимо указать название вашей контактной формы
    if ('Записаться в салон' == $title) {
        $submission = WPCF7_Submission::get_instance();
        $posted_data = $submission->get_posted_data();

        // Далее перехватываем введенные данные в полях Contact Form 7:
        // 1. Перехватываем поле [your-name] - Имя
        $AmoCRM['name'] = $posted_data['your-name'];
        // 2. Перехватываем поле [your-message] - Телефон
        $AmoCRM['phone'] = $posted_data['your-phone'];
    }
    if ('Подобрать программу' == $title) {
        $submission = WPCF7_Submission::get_instance();
        $posted_data = $submission->get_posted_data();

        // Далее перехватываем введенные данные в полях Contact Form 7:
        // 1. Перехватываем поле [your-name] - Имя
        $AmoCRM['name'] = $posted_data['your-name'];
        // 2. Перехватываем поле [your-message] - Телефон
        $AmoCRM['phone'] = $posted_data['your-phone'];

    }
    if ('Узнать больше'== $title) {
        $submission = WPCF7_Submission::get_instance();
        $posted_data = $submission->get_posted_data();

        // Далее перехватываем введенные данные в полях Contact Form 7:
        // 1. Перехватываем поле [your-name] - Имя
        $AmoCRM['name'] = $posted_data['your-name'];
        // 2. Перехватываем поле [your-message] - Телефон
        $AmoCRM['phone'] = $posted_data['your-phone'];
    }

    $AmoCRM['cookie'] = $_COOKIE; #Добавляем куки с UTM в массив

    $post_data = array(
        "contact" => array(
            "phone" => $AmoCRM['phone'], #Телефон клиента
            "name" => $AmoCRM['name'], #Имя клиента
            "email" => "direct@yandex.ru", #Email клиента
            "message" => "Новая сборка интеграции AmoCRM", #Сообщение от клиента
        ),
    );
    
    $url_hook = "url сайта";
    if ($AmoCRM['phone'] != "") {

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url_hook);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 5);
        // указываем, что у нас POST запрос
        curl_setopt($ch, CURLOPT_POST, 1);
        // добавляем переменные
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $post_data = json_encode($post_data);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($post_data)));

        $output_amo = curl_exec($ch);
        curl_close($ch);

    }
    



}
add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );


Который спокойно кидает хук на тестировщик webhook.site

Но не получается его принять и запустить скрипт на обработкиче. Хотя если запускаю с другого сервера, всё работает. Вот сам код:

#Принимаем Вебхук
$post_data = file_get_contents('php://input'); #Принимаем webhook
$post_data = json_decode($post_data, true); #Раскодируем из json

http_response_code(200); #Отправка положительного ответа


И дальше его обрабатываем... Но почему то хук туда не приходит. В чём может быть причина?
  • Вопрос задан
  • 858 просмотров
Подписаться 1 Средний 31 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы