В современных CRM-системах, таких как Битрикс24, важной задачей становится обеспечение конфиденциальности клиентских данных. Одной из острых проблем является отображение номеров телефонов клиентов в названиях сущностей, что может приводить к несанкционированному доступу к информации. Чтобы предотвратить такие ситуации, возникает необходимость скрывать номера телефонов в названиях, оставляя доступ к полной информации только тем пользователям, которым это необходимо. Для этого воспользуемся кодом ниже.
Нужно привести файл /opt/itgrix_bx/customizer/actions/post_registration.php к виду:
<?php
/**
* @var string $action "post_registration"
*
* Подробное описание в документации Itgrix:
* https://docs.itgrix.ru/custom_bx
*
* Вывод в лог можно сделать так:
* $this->logDebug($message);
* Функции для вывода с другим уровнем логирования: logInfo, logWarn, logError.
*
* Запросы в Битрикс24 реализованы в классе Bitrix (lib/crm.php)
* Подробности и примеры в документации Itgrix:
* https://docs.itgrix.ru/custom_bx/zaprosy-v-bitriks-iz-kastomizacii
*
* Дла запросов в БД Asterisk предусмотрены функции (lib/Utils.php):
* Utils::mysqliQuery($sql, $getResult); - запрос через php-mysqli
* Utils::mysqlClcQuery($sql, $getResult); - запрос через MySQL Command-Line Client
*/
// Нужно вернуть только state, остальное игнорируется
$this->logDebug('params: ' . json_encode($params));
$newFields = array();
function makeErrorRetval($data) {
return array(
'state' => 'error',
'data' => $data,
);
}
if (isset($params['call_full']['registration']['created_lead_id']) &&
!empty($params['call_full']['registration']['created_lead_id'])) {
$leadId = $params['call_full']['registration']['created_lead_id'];
$this->logDebug('created_lead_id: ' . $leadId);
$this->logDebug('type: ' . json_encode($params['call_full']['channel']['type']));
$wasAnswered = isset($params['call_full']['channel']['was_answered'])
&& $params['call_full']['channel']['was_answered'];
if ($params['call_full']['channel']['type'] == 'incoming') {
$type = 'Входящий ';
if (!$wasAnswered) {
$type .= 'пропущенный ';
}
} else if ($params['call_full']['channel']['type'] == 'outgoing') {
$type = 'Исходящий ';
if (!$wasAnswered) {
$type .= 'неотвеченный ';
}
}
$newFields = array(
'TITLE' => $type . 'звонок', //изменяем название
);
$this->logDebug('newFields: ' . json_encode($newFields, JSON_UNESCAPED_UNICODE));
$updateResult = Bitrix::updateLead($leadId, $newFields, array());
if ($updateResult === false) {
return makeErrorRetval(sprintf("Failed to update lead ID '%s'", $leadId));
}
} else {
$this->logDebug("No lead was created, do nothing");
}
return array(
'state' => 'success',
);