public static function RegisterCall($config, $params) { Bitrix\Voximplant\CallTable::add(array('CONFIG_ID' => $config['ID'], 'CALL_ID' => $params['CALL_ID'], 'USER_ID' => 0, 'CALLER_ID' => $params['CALLER_ID'], 'STATUS' => Bitrix\Voximplant\CallTable::STATUS_CONNECTING, 'CRM' => $config['CRM'], 'ACCESS_URL' => $params['ACCESS_URL'], 'DATE_CREATE' => new Bitrix\Main\Type\DateTime())); if ($config['WORKTIME_SKIP_CALL'] == 'Y') { $config['WORKTIME_USER_ID'] = 0; if ($config['CRM'] == 'Y') { $existsLead = false; $crmData = CVoxImplantCrmHelper::GetDataForPopup($params['CALL_ID'], $params['CALLER_ID']); if (isset($crmData['RESPONSIBILITY']['ID']) && $crmData['RESPONSIBILITY']['ID'] > 0) { $config['WORKTIME_USER_ID'] = $crmData['RESPONSIBILITY']['ID']; $existsLead = true; } else { $res = VI\QueueTable::getList(array('select' => array('ID', 'USER_ID'), 'filter' => array('=CONFIG_ID' => $config['ID']), 'order' => array('LAST_ACTIVITY_DATE' => 'asc'), 'limit' => 1)); $queueUser = $res->fetch(); if ($queueUser) { VI\QueueTable::update($queueUser['ID'], array('LAST_ACTIVITY_DATE' => new FieldType\DateTime())); $config['WORKTIME_USER_ID'] = $queueUser["USER_ID"]; } if ($config['WORKTIME_USER_ID'] > 0 && $crmData['FOUND'] == 'N' && $config['CRM_CREATE'] == CVoxImplantConfig::CRM_CREATE_LEAD) { $id = CVoxImplantCrmHelper::AddLead(array('USER_ID' => $config['WORKTIME_USER_ID'], 'PHONE_NUMBER' => $params['CALLER_ID'], 'SEARCH_ID' => $params['SEARCH_ID'], 'CRM_SOURCE' => $config['CRM_SOURCE'], 'INCOMING' => true)); if ($id) { $existsLead = true; } } } if ($existsLead) { CVoxImplantCrmHelper::AddCall(array('CALL_ID' => $params['CALL_ID'], 'PHONE_NUMBER' => $params['CALLER_ID'], 'INCOMING' => CVoxImplantMain::CALL_INCOMING, 'USER_ID' => $config['WORKTIME_USER_ID'], 'DATE_CREATE' => new FieldType\DateTime())); CVoxImplantCrmHelper::UpdateCall(array('CALL_ID' => $params['CALL_ID'], 'PHONE_NUMBER' => $params['CALLER_ID'], 'INCOMING' => CVoxImplantMain::CALL_INCOMING, 'USER_ID' => $config['WORKTIME_USER_ID'], 'DESCRIPTION' => GetMessage("WORKTIME_CALL"))); } } else { $res = VI\QueueTable::getList(array('select' => array('ID', 'USER_ID'), 'filter' => array('=CONFIG_ID' => $config['ID']), 'order' => array('LAST_ACTIVITY_DATE' => 'asc'), 'limit' => 1)); $queueUser = $res->fetch(); if ($queueUser) { $config['WORKTIME_USER_ID'] = $queueUser["USER_ID"]; } } } return $config; }