- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/voximplant/eventhandler.php
- Класс: Bitrix\Crm\Integration\VoxImplant\EventHandler
- Вызов: EventHandler::onCallRegisteredInCrm
static function onCallRegisteredInCrm(Event $event): void
{
$data = $event->getParameters();
$isIncoming = !isset($data['INCOMING'])
|| in_array((int)$data['INCOMING'], [CVoxImplantMain::CALL_INCOMING, CVoxImplantMain::CALL_INCOMING_REDIRECT], true);
if (empty($data) || empty($data['CRM_DATA']) || !$isIncoming)
{
return; // nothing event data
}
if (isset($data['CALL_ID']))
{
$logMessageId = LogMessageEntry::detectIdByParams(
$data['CALL_ID'],
LogMessageType::CALL_INCOMING
);
if (isset($logMessageId))
{
return; // record already created
}
}
$createdEntities = array_values(
array_filter(
$data['CRM_DATA'],
static fn($row) => in_array((int)$row['OWNER_TYPE_ID'], [CCrmOwnerType::Lead, CCrmOwnerType::Deal], true)
)
);
$baseEntities = array_values(
array_filter(
$data['CRM_DATA'],
static fn($row) => in_array((int)$row['OWNER_TYPE_ID'], [CCrmOwnerType::Contact, CCrmOwnerType::Company], true)
)
);
if (empty($createdEntities))
{
return;
}
$input = [
"ENTITY_TYPE_ID" => $createdEntities[0]['OWNER_TYPE_ID'],
"ENTITY_ID" => $createdEntities[0]['OWNER_ID'],
];
if (!empty($baseEntities))
{
$input['BASE_ENTITY_TYPE_ID'] = $baseEntities[0]['OWNER_TYPE_ID'];
$input['BASE_ENTITY_ID'] = $baseEntities[0]['OWNER_ID'];
if (isset($data['CALLER_ID']))
{
$input['BASE_SOURCE'] = $data['CALLER_ID'];
}
if (isset($data['CALL_ID']))
{
$input['BASE_SOURCE_ID'] = $data['CALL_ID'];
}
}
LogMessageController::getInstance()->onCreate(
$input,
LogMessageType::CALL_INCOMING,
$data['USER_ID'] ?? null
);
}