| Задача: Есть сделка. 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")
));
}
}
} |