Всем привет! Решил поделиться небольшим полезным скриптом для Bitrix24. Часто бывает, что при импорте заносятся телефоны со скобками, тире и прочее: +7 (999) 123-33-44
Битрикс24 при звонках распознает номера формата 79991233344. И потому появляется куча дубликатов, неразберихи и каша. Простой скрипт на php проходит по всем контактам и "чистит их".
$start = 600;
for($i=$start;$i<($start+50);$i++) {
echo "<br> >> ".($i*2)."<br>";
$get = bx_call_webhook("crm.contact.get",array("id"=>$i*2));
// print_r($get);
$phone = array();
foreach($get["PHONE"] as $k => $row) {
$num = str_replace(" ","",$row["VALUE"]);
$num = str_replace("+","",$num);
$num = str_replace("-","",$num);
$num = str_replace("(","",$num);
$num = str_replace(")","",$num);
$s = bx_call_webhook("crm.contact.update",array("id"=>$i*2,"fields"=>array("PHONE"=>array($k => array("ID"=>$row["ID"],"VALUE"=>$num))),"params"=>array("REGISTER_SONET_EVENT"=>"N")));
print_r($s);
echo "<br> ".$num."<br>";
}
sleep(1);
}
Сразу говорю: есть что доработать, но уверен и это сэкономит вам время. Sleep'ы как паузы нужны, чтобы Битрикс24 нас не заблокировал — в 1 секунду не больше 2 запросов. Контакты в битриксе только четные, поэтому умножается на 2.
bx_call_webhook — функция выполняющая запросы и возвращает ответ
Используется вебхук.
function bx_call_webhook($method,$arr){
$queryUrl = 'https://**********.bitrix24.ru/rest/***/*************/'.$method.'/';
$queryData = http_build_query($arr);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryUrl,
CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, 1);
$result = $result["result"];
return $result;
sleep(1);
}
Сам скрипт ограничен во времени, поэтому с этим еще можно поиграть.
Автор: Чёрный властелин