Приведение телефонов в 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