Задача: Есть сделка. Cоздавать лид на менеджера по входящему звонку, который прикрепился к сделке, если лида нет, если лид есть, то писать инфу о звонке туда Облачный Битрикс24 настроила
|
function CurlBitrix24($method, $arData=array()){ $queryUrl = "https://nikaverro.bitrix24.ru/rest/[userId]/[код]/".$method; $curl = curl_init(); curl_setopt_array($curl,[ CURLOPT_URL => $queryUrl, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, ]); if(!empty($arData)){ curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($arData)); } $result = curl_exec($curl); curl_close($curl); return json_decode($result,true); } if(isset($_REQUEST['event']) && ($_REQUEST['event']=="ONVOXIMPLANTCALLEND") && in_array($_REQUEST['data']["CALL_TYPE"],[2,3])){ //CALL_TYPE 2 - входящий, 3 Входящий с перенаправлением (на мобильный или стационарный телефон). $activityId = $_REQUEST['data']["CRM_ACTIVITY_ID"]; $phone = $_REQUEST['data']["PHONE_NUMBER"]; $code = $_REQUEST['data']['CALL_FAILED_CODE']; $result = CurlBitrix24('crm.activity.get.json', array( 'id' => $activityId, )); if(!empty($result["result"]["OWNER_TYPE_ID"]) && $result["result"]["OWNER_TYPE_ID"]==2){//если активити-собственник сделка //если есть лиды в работе $dealId = $result["result"]["OWNER_ID"]; sleep(2); $batch = []; $batch["leads"] = 'crm.lead.list?'.http_build_query([ 'order' => ["ID" => "ASC"], 'filter' => [ 'STATUS_ID' => ["NEW", "IN_PROCESS",1], "UF_CRM_1648053268" => "D_".$dealId ], "select" => ["ID","STATUS_ID"], ]); $batch["deal"] = "crm.deal.get?id=".$dealId; $arData = [ "halt" => 0, "cmd" => $batch ]; $result2 = CurlBitrix24("batch.json", $arData); $arCodes = [ "200" => "Успешный звонок", "304" => "Пропущенный звонок", "603" => "Отклонено", "603-S"=> "Вызов отменен", "404" => "Неверный номер", "486" => "Занято", "484" => "Данное направление не доступно", "503" => "Данное направление не доступно", "480" => "Временно не доступен", "480" => "Недостаточно средств на счете", "402" => "Заблокировано", ]; if($result2["result"]["result_total"]["leads"]>0){//если есть $leadId = $result2["result"]["result"]["leads"][0]["ID"]; //echo $leadId; $batch = []; if($code == 200){ $title = "Успешный звонок по текущей сделке"; } elseif($code == 304){ $title = "Пропущенный звонок по текущей сделке"; } else{ $title = "Звонок по текущей сделке:". $arCodes[$code]; } $batch["comment_add"] = 'crm.timeline.comment.add?' . http_build_query([ "fields" => [ "ENTITY_ID" => $leadId, "ENTITY_TYPE"=> "lead", "COMMENT"=> $title ] ]); if($result2["result"]["result"]["leads"][0]["STATUS_ID"]!="NEW"){ $batch["lead_status_new"] = 'crm.lead.update?' . http_build_query([ "id" => $leadId, "fields" => [ "STATUS_ID" => "NEW" ] ]); } $arData = [ "halt" => 0, "cmd" => $batch ]; sleep(2); $result = CurlBitrix24("batch.json", $arData); } else{ //создаем лид по звонку $userId = $result2["result"]["result"]["deal"]["ASSIGNED_BY_ID"]; //на кого сделка $title = "Лид по текущей сделке"; if($code == 200){ $title .= " усп. звонок"; } elseif($code == 304){ $title .= " пропущ. звонок"; } $arFields = [ "TITLE" => $title, "STATUS_ID" => "NEW", "ASSIGNED_BY_ID" => $userId ?? 44,//$result["result"]["RESPONSIBLE_ID"], "UF_CRM_1648053268" => "D_".$dealId, "PHONE" => [ ["VALUE"=> $phone, "VALUE_TYPE"=> "WORK" ] ], "COMMENTS"=> $arCodes[$code] ?? "неизвестный статус" ]; sleep(2); $result = CurlBitrix24('crm.lead.add.json', array( 'fields' => $arFields, 'params' => array("REGISTER_SONET_EVENT" => "Y") )); } } } |