Сделали интеграцию 7 сайтов с bitrix 24. Формы отправляются по 5 секунд в среднем.
Сначала идет запрос создание контакта, потом создание лида, потом устанавливаем цену сервису, потом некоторым добавляем комментарии.... И все это запросы в cURL
Можно ли как то сократить это?
/*
* Создаем лид
*/
public function createLeadAndSend(){
$queryUrl = 'https://XXXX.bitrix24.ru/rest/XXXX/XXXX/crm.lead.add.json';
$queryData = http_build_query(array(
'fields' => array(
'CONTACT_ID'=>$this->createContact(),
'TITLE' => $this->post['title'],
'NAME' => $this->post['fio'],
'EMAIL' => array(
array(
'VALUE' => $this->post['email'],
'VALUE_TYPE' => 'WORK'
)
),
'PHONE' => array(
array(
'VALUE' => $this->post['phone'],
'VALUE_TYPE' => 'WORK'
)
),
'COMMENTS' => $this->post['comments'],
'OPPORTUNITY' => $this->post['price'],
'UF_CRM_1571212572' => $this->post['inn'],
'UF_CRM_1571226484' => $this->post['tariff'],
'UF_CRM_1574428927' => $this->arr_product_and_manager['product_id'],
'CURRENCY_ID' => 'RUB',
'QUANTITY' => 1,
'SOURCE_ID' => $this->setIdSiteAppForm(),
'ADDRESS_CITY' => $this->post['city'],
'ASSIGNED_BY_ID' => $this->arr_product_and_manager['manager_id']
),
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
$this->curl_result = $this->curl($queryUrl, $queryData);
$result = json_decode($this->curl_result, 1);
$leadID = $result["result"];
//Добавляем цену к товару
$this->addPriceLead($leadID);
//Добавляем комментарии к определенному лиду
if ($this->post['product_id'] == 'elba' && $this->post['posted_data']['_wpcf7'] == 3124) {
$this->addCommentLead($leadID, '<b>КОММЕНТ</b>');
}
}
/*
* Добавляем цену к товару
*/
public function addPriceLead($leadID){
$queryUrl = 'https://XXXX.bitrix24.ru/rest/XXXX/XXXX/crm.lead.productrows.set.json';
$queryData = http_build_query(array(
'id' => $leadID,
'rows' => Array(
Array(
"PRODUCT_ID" => $this->arr_product_and_manager['product_id'],
"PRICE" => $this->post['price'],
"QUANTITY" => 1,
),
),
));
$this->curl($queryUrl, $queryData);
}
/*
* Создаем контакт
*/
public function createContact(){
$queryUrl = 'https://XXXX.bitrix24.ru/rest/XXXX/XXXX/crm.contact.add.json';
$queryData = http_build_query(array(
'fields' => array(
'NAME' => $this->post['fio'],
'EMAIL' => array(
array(
'VALUE' => $this->post['email'],
'VALUE_TYPE' => 'WORK'
)
),
'PHONE' => array(
array(
'VALUE' => $this->post['phone'],
'VALUE_TYPE' => 'WORK'
)
),
'UF_CRM_5DA6EF1A6B1F4' => $this->post['inn'],
'UF_CRM_1574428927' => $this->arr_product_and_manager['product_id'],
'SOURCE_ID' => $this->setIdSiteAppForm(),
'ADDRESS_CITY' => $this->post['city'],
'ASSIGNED_BY_ID' => $this->arr_product_and_manager['manager_id']
),
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
$this->curl_result = $this->curl($queryUrl, $queryData);
$result = json_decode($this->curl_result, 1);
return $result["result"];
}
/*
* Добавляем комментарии к определенному лиду
*/
public function addCommentLead($leadID, $comment){
$queryUrl = 'https://XXXX.bitrix24.ru/rest/XXXX/XXXX/crm.timeline.comment.add.json';
$queryData = http_build_query(array(
'fields' => Array(
"ENTITY_ID" => $leadID,
"ENTITY_TYPE" => "lead",
"COMMENT" => $comment
),
));
$this->curl($queryUrl, $queryData);
}
/*
* Отправляем данные с помощью cURL
*/
public function curl($queryUrl, $queryData){
$curl = curl_init();
$curl_array = [CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $queryUrl, CURLOPT_POSTFIELDS => $queryData];
curl_setopt_array($curl, $curl_array);
$result = curl_exec($curl);
$this->postCurl($result);
curl_close($curl);
return $result;
}