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

Buddha

Client
Joined
Mar 10, 2019
Messages
125
Reaction score
18
Points
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"=>"test@bail.com", "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
Joined
Sep 18, 2020
Messages
53
Reaction score
19
Points
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"=>"test@bail.com", "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);
 
  • Thank you
Reactions: Buddha

Buddha

Client
Joined
Mar 10, 2019
Messages
125
Reaction score
18
Points
18
Шикарно! Благодарю, lavachik, все работает)
 

bizzon

Client
Joined
Sep 8, 2015
Messages
1,104
Reaction score
132
Points
63
  • Thank you
Reactions: djaga and Buddha

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)