• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/tracker.php
  • Класс: BitrixImOpenLinesTracker
  • Вызов: Tracker::trackMessage
public function trackMessage(array $params): Result
{
	$result = new Result();
	$result->setResult(false);
	$session = $this->getSession();

	self::loadPhrases();

	if (empty($session))
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NO_SESSION'), Crm::ERROR_IMOL_NO_SESSION, __METHOD__));
	}

	if (empty($params['ID']) || empty($params['TEXT']))
	{
		$result->addError(new Error(Loc::getMessage('IMOL_TRACKER_ERROR_NO_REQUIRED_PARAMETERS'), self::ERROR_IMOL_TRACKER_NO_REQUIRED_PARAMETERS, __METHOD__));
	}

	if (
		$result->isSuccess()
		&& Loader::includeModule('crm')
		&& $session->getConfig('CRM') === 'Y'
		&& $session->getConfig('CRM_CHAT_TRACKER') === 'Y'
	)
	{
		$messageOriginId = (int)$params['ID'];
		$messageText = self::prepareMessage($params['TEXT']);

		if ($messageOriginId == 0 || $messageText == '')
		{
			$result->addError(new Error(Loc::getMessage('IMOL_TRACKER_ERROR_NO_REQUIRED_PARAMETERS'), self::ERROR_IMOL_TRACKER_NO_REQUIRED_PARAMETERS, __METHOD__));
		}

		if ($result->isSuccess())
		{
			$entitiesSearch = self::checkMessage($messageText);
			$phones = $entitiesSearch['PHONES'];
			$emails = $entitiesSearch['EMAILS'];

			if (!empty($phones) || !empty($emails))
			{
				$crmManager = new Crm($session);
				if ($crmManager->isLoaded())
				{
					$crmFieldsManager = $crmManager->getFields();
					if (!empty($phones))
					{
						$crmFieldsManager->setPhones($phones);
					}

					if (!empty($emails))
					{
						$crmFieldsManager->setEmails($emails);
					}

					$crmManager
						->setModeCreate($session->getConfig('CRM_CREATE'))
						->search()
					;

					$crmFieldsManager->setTitle($session->getChat()->getData('TITLE'));

					$crmManager->registrationChanges();
					$crmManager->sendCrmImMessages();
				}
			}
		}
	}

	return $result;
}