Чистим телефоны от скобок, тире в Битрикс24

в 1:17, , рубрики: api, php, метки: , ,

Всем привет! Решил поделиться небольшим полезным скриптом для 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);
}

Сам скрипт ограничен во времени, поэтому с этим еще можно поиграть.

Автор: Чёрный властелин

Источник

Поделиться

* - обязательные к заполнению поля