• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_incoming.php
  • Класс: CVoxImplantIncoming
  • Вызов: CVoxImplantIncoming::GetConfig
static function GetConfig($params)
{
	if (!VILimits::canCall())
	{
		return [
			'error' => ['code' => 'PAID_PLAN_REQUIRED']
		];
	}
	$result = CVoxImplantConfig::GetConfigBySearchId($params['PHONE_NUMBER']);

	if(!$result['ID'])
	{
		return $result;
	}

	$result['TYPE_CONNECT'] = self::TYPE_CONNECT_CONFIG;
	if($result["PORTAL_MODE"] == CVoxImplantConfig::MODE_GROUP)
	{
		$result["SEARCH_ID"] = $params["PHONE_NUMBER"];
	}
	$result = CVoxImplantIncoming::RegisterCall($result, $params);

	$isNumberInBlacklist = CVoxImplantIncoming::IsNumberInBlackList($params["CALLER_ID"], $result['NUMBER_COUNTRY_CODE']);
	$isBlacklistAutoEnable = BitrixMainConfigOption::get("voximplant", "blacklist_auto", "N") === "Y";

	if ($result["WORKTIME_SKIP_CALL"] === "Y" && !$isNumberInBlacklist && $isBlacklistAutoEnable)
	{
		$isNumberInBlacklist = CVoxImplantIncoming::CheckNumberForBlackList($params["CALLER_ID"]);
	}

	if ($isNumberInBlacklist)
	{
		$result["NUMBER_IN_BLACKLIST"] = "Y";
	}

	if (!VILimits::canSelectCallSource())
	{
		$result["CRM_SOURCE"] = 'CALL';
	}
	if (!VILimits::canVote())
	{
		$result["CALL_VOTE"] = 'N';
	}
	if ($result["QUEUE_TYPE"] === CVoxImplantConfig::QUEUE_TYPE_ALL && !VILimits::isQueueAllAllowed())
	{
		$result["QUEUE_TYPE"] = CVoxImplantConfig::QUEUE_TYPE_EVENLY;
	}
	if ($result["NO_ANSWER_RULE"] === self::RULE_NEXT_QUEUE && !VILimits::isRedirectToQueueAllowed())
	{
		$result["NO_ANSWER_RULE"] = self::RULE_VOICEMAIL;
	}

	foreach(GetModuleEvents("voximplant", "onCallInit", true) as $arEvent)
	{
		ExecuteModuleEventEx($arEvent, Array(Array(
			'CALL_ID' => $params['CALL_ID'],
			'CALL_TYPE' => CVoxImplantMain::CALL_INCOMING,
			'ACCOUNT_SEARCH_ID' => $params['ACCOUNT_SEARCH_ID'],
			'PHONE_NUMBER' => $params['PHONE_NUMBER'],
			'CALLER_ID' => $params['CALLER_ID'],
		)));
	}

	return $result;
}