Автоматическая отправка формы (скрипт php, REST API Битрикс 24)

Buddha

Client
Регистрация
10.03.2019
Сообщения
121
Благодарностей
18
Баллы
18
Приветствую, коллеги. Бьюсь над созданием сделки серез рест Битрикс 24. Нарыл скрипт, который отрабатывает, как нужно, но в нем отправка данных осуществляется через кнопку. Можно ли сделать так, чтобы скрипт отрабатывал сразу при загрузке страницы? Без нажатия "Отправить".
PHP:
<?php
if (array_key_exists('saved', $_REQUEST)) {
    /**Добавляем сделку*/
    $queryUrl = 'https://xxxxxx.bitrix24.ru/rest/1xxx1/xxxxxxxxxxx/crm.deal.add.json';
    $qr = array(
        'fields' => array(),
        'params' => array("REGISTER_SONET_EVENT" => "Y")
    );
    $qr['fields']['TITLE'] = 'Бронирование он-лайн'; // Название лида
    $qr['fields']['OPPORTUNITY'] = '1';
    $qr['fields']['CATEGORY_ID'] = '13';
    
    $queryData = http_build_query($qr);

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => FALSE,
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $queryUrl,
        CURLOPT_POSTFIELDS => $queryData,
    ));

    if(!$result = curl_exec($curl))
    {
        $result = curl_error($curl);
    }
    curl_close($curl);

    $result = json_decode($result, true);
    $dealID = $result["result"];
    var_dump($result);


    /**Добавляем контакт*/
    $queryUrl = 'https://xxxxx.bitrix24.ru/rest/1xxx1/xxxxxxxxxxx/crm.contact.add.json';
    $qr = array(
        'fields' => array(),
        'params' => array()
    );
    $qr['fields']['NAME'] = 'Глеб';
    $qr['fields']['SECOND_NAME'] = 'Егорович';
    $qr['fields']['LAST_NAME'] = 'Титов';
    $qr['fields']['OPENED'] = 'Y'; //открыто для других пользователей
    $qr['fields']['ASSIGNED_BY_ID'] = 1xxx1; //id ответственного менеджера
    $qr['fields']['PHONE']['n1'] = array("VALUE"=>"31231231200", "VALUE_TYPE"=>"WORK");
    $qr['fields']['EMAIL']['n1'] = array("VALUE"=>"[email protected]", "VALUE_TYPE"=>"WORK");

    $queryData = http_build_query($qr);

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => FALSE,
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $queryUrl,
        CURLOPT_POSTFIELDS => $queryData,
    ));

    if(!$result = curl_exec($curl))
    {
        $result = curl_error($curl);
    }
    curl_close($curl);

    $result = json_decode($result, true);
    $contactId = $result["result"];
    var_dump($result);

    /**Добавляем контакт к указанной сделке*/
    $queryUrl = 'https://xxxxx.bitrix24.ru/rest/1xxx1/xxxxxxxxxx/crm.deal.contact.add.json';
    $qr = array(
        'id' => $dealID,
        'fields' => array()
    );
    $qr['fields']['CONTACT_ID'] = $contactId;//Идентификатор контакта (обязательное поле)

    $queryData = http_build_query($qr);

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => FALSE,
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $queryUrl,
        CURLOPT_POSTFIELDS => $queryData,
    ));

    if(!$result = curl_exec($curl))
    {
        $result = curl_error($curl);
    }
    curl_close($curl);

    $result = json_decode($result, true);
    var_dump($result);

}

?>
<form method="post" action="">
    <input type="hidden" name="saved" value="yes">
    <input type="submit" value="Отправить">
Заранее благодарю за любую помощь.

Кстати, если получится отправить хотя бы данные по лиду (сделке) через post-запрос из зенки, будет вообще огонь! (от коммента **Добавляем сделку* до момента добавления контакта) Пробовал передавать массив полей в кубике, но сделка создается не в той категории (13) и данные не передаются, просто появляется сделка без параметров.
 

lavachik

Client
Регистрация
18.09.2020
Сообщения
52
Благодарностей
19
Баллы
8
Просто убрал
if (array_key_exists('saved', $_REQUEST)) { /** ***/ }


Код:
<?php
   
   
    /**Добавляем сделку*/
    $queryUrl = 'https://xxxxxx.bitrix24.ru/rest/1xxx1/xxxxxxxxxxx/crm.deal.add.json';
    $qr = array(
        'fields' => array(),
        'params' => array("REGISTER_SONET_EVENT" => "Y")
    );
    $qr['fields']['TITLE'] = 'Бронирование он-лайн'; // Название лида
    $qr['fields']['OPPORTUNITY'] = '1';
    $qr['fields']['CATEGORY_ID'] = '13';
   
    $queryData = http_build_query($qr);

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => FALSE,
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $queryUrl,
        CURLOPT_POSTFIELDS => $queryData,
    ));

    if(!$result = curl_exec($curl))
    {
        $result = curl_error($curl);
    }
    curl_close($curl);

    $result = json_decode($result, true);
    $dealID = $result["result"];
    var_dump($result);


    /**Добавляем контакт*/
    $queryUrl = 'https://xxxxx.bitrix24.ru/rest/1xxx1/xxxxxxxxxxx/crm.contact.add.json';
    $qr = array(
        'fields' => array(),
        'params' => array()
    );
    $qr['fields']['NAME'] = 'Глеб';
    $qr['fields']['SECOND_NAME'] = 'Егорович';
    $qr['fields']['LAST_NAME'] = 'Титов';
    $qr['fields']['OPENED'] = 'Y'; //открыто для других пользователей
    $qr['fields']['ASSIGNED_BY_ID'] = 1xxx1; //id ответственного менеджера
    $qr['fields']['PHONE']['n1'] = array("VALUE"=>"31231231200", "VALUE_TYPE"=>"WORK");
    $qr['fields']['EMAIL']['n1'] = array("VALUE"=>"[email protected]", "VALUE_TYPE"=>"WORK");

    $queryData = http_build_query($qr);

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => FALSE,
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $queryUrl,
        CURLOPT_POSTFIELDS => $queryData,
    ));

    if(!$result = curl_exec($curl))
    {
        $result = curl_error($curl);
    }
    curl_close($curl);

    $result = json_decode($result, true);
    $contactId = $result["result"];
    var_dump($result);

    /**Добавляем контакт к указанной сделке*/
    $queryUrl = 'https://xxxxx.bitrix24.ru/rest/1xxx1/xxxxxxxxxx/crm.deal.contact.add.json';
    $qr = array(
        'id' => $dealID,
        'fields' => array()
    );
    $qr['fields']['CONTACT_ID'] = $contactId;//Идентификатор контакта (обязательное поле)

    $queryData = http_build_query($qr);

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_SSL_VERIFYHOST => FALSE,
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $queryUrl,
        CURLOPT_POSTFIELDS => $queryData,
    ));

    if(!$result = curl_exec($curl))
    {
        $result = curl_error($curl);
    }
    curl_close($curl);

    $result = json_decode($result, true);
    var_dump($result);
 
  • Спасибо
Реакции: Buddha

Buddha

Client
Регистрация
10.03.2019
Сообщения
121
Благодарностей
18
Баллы
18
Шикарно! Благодарю, lavachik, все работает)
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
  • Спасибо
Реакции: djaga и Buddha

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)