Приведение телефонов в CRM к единому формату
Для правильного определения номеров приложению требуется, чтобы все заведенные номера телефонов соответствовали единому формату: содержали только цифры. Без пробелов, запятых, скобок и других знаков.
Для приведения базы телефонов к единому формату существует готовое решение:
https://www.bitrix24.ru/apps/?app=shum.tel
Важно! Мы не несем ответственности за работу решений сторонних разработчиков.
Для того, чтобы расширение преобразовывало номера в произвольный формат, необходимо кастомизировать наше решение. Для этого нужно в файле bx24asterisk_parser.php, заменить, или добавить методы getActiveCallsFromStatus, convertHistoryEntryToCall, getMissedCalls:
public function getActiveCallsFromStatus(array $status)
{
$calls = parent::getActiveCallsFromStatus($status);
foreach($calls as &$call){
foreach(array('to', 'from') as $t){
$this->_phone_replace($call[$t]);
}
}
return $calls;
}
public function convertHistoryEntryToCall(array $entry)
{
$call = parent::convertHistoryEntryToCall($entry);
foreach(array('to', 'from') as $t){
$this->_phone_replace($call[$t]);
}
return $call;
}
public function getMissedCalls()
{
$missedCalls = parent::getMissedCalls();
foreach($missedCalls as &$call){
$this->_phone_replace($call['from']);
}
return $missedCalls;
}
В методе _phone_replace указываем формат, в который нужно преобразовывать номера телефонов. В данном примере установлен формат номера +7 (999) 999-9999
protected function _phone_replace(&$phone){
$p = preg_replace('~[^\d]~', '', $phone);
if(preg_match('~(?P<code>\d{3})(?P<one>\d{3})(?P<two>\d{2})(?P<three>\d{2})$~', $p, $m)){
$code = $m['code'];
$one = $m['one'];
$two = $m['two'];
$three = $m['three'];
$phone = "+7 ($code) $one-$two$three";
}
}
Сервис поддержки клиентов работает на платформе UserEcho