Esempio n. 1
0
 public static function GetConfigByUserId($userId)
 {
     $userId = intval($userId);
     if ($userId > 0) {
         $viUser = new CVoxImplantUser();
         $userInfo = $viUser->GetUserInfo($userId);
         if ($userInfo['user_backphone'] == '') {
             $userInfo['user_backphone'] = CVoxImplantConfig::LINK_BASE_NUMBER;
         }
     } else {
         $userInfo = array();
         $userInfo['user_backphone'] = CVoxImplantConfig::GetPortalNumber();
         $userInfo['user_extranet'] = false;
     }
     if ($userInfo['user_extranet']) {
         $result = array('error' => array('code' => 'EXTRANAET', 'msg' => 'Extranet user can not use telephony'));
     } else {
         if ($userInfo['user_backphone'] == CVoxImplantPhone::GetLinkNumber() || $userInfo['user_backphone'] == CVoxImplantConfig::LINK_BASE_NUMBER) {
             $result = self::GetLinkConfig();
         } else {
             $result = CVoxImplantConfig::GetConfigBySearchId($userInfo['user_backphone']);
             if (isset($result['ERROR']) && strlen($result['ERROR']) > 0) {
                 $result = self::GetLinkConfig();
             }
         }
     }
     $result['USER_ID'] = $userId;
     return $result;
 }
Esempio n. 2
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (isset($_REQUEST['AJAX_CALL']) && $_REQUEST['AJAX_CALL'] == 'Y') {
    return;
}
if (!CModule::IncludeModule('voximplant')) {
    return;
}
if (check_bitrix_sessid() && $_POST['vi_link_form']) {
    CVoxImplantConfig::SetLinkCallRecord(isset($_POST['vi_link_call_record']));
    CVoxImplantConfig::SetLinkCheckCrm(isset($_POST['vi_link_check_crm']));
}
$arResult = CVoxImplantPhone::GetCallerId();
$arResult['LINK_CALL_RECORD'] = CVoxImplantConfig::GetLinkCallRecord();
$arResult['LINK_CHECK_CRM'] = CVoxImplantConfig::GetLinkCheckCrm();
if (!(isset($arParams['TEMPLATE_HIDE']) && $arParams['TEMPLATE_HIDE'] == 'Y')) {
    $this->IncludeComponentTemplate();
}
return $arResult;
Esempio n. 3
0
 public static function DeletePhoneConfig($configId)
 {
     $configId = intval($configId);
     $result = VI\ConfigTable::getList(array('select' => array('ID', 'SEARCH_ID'), 'filter' => array('=ID' => $configId)));
     $config = $result->fetch();
     if (!$config) {
         return false;
     }
     $needChangePortalNumber = false;
     VI\ConfigTable::delete($configId);
     if ($config['SEARCH_ID'] == CVoxImplantConfig::GetPortalNumber()) {
         $needChangePortalNumber = true;
     }
     $result = VI\QueueTable::getList(array('select' => array('ID'), 'filter' => array('=CONFIG_ID' => $configId)));
     while ($row = $result->fetch()) {
         VI\QueueTable::delete($row['ID']);
     }
     $firstPhoneNumber = '';
     $result = VI\ConfigTable::getList(array('select' => array('ID', 'SEARCH_ID')));
     while ($row = $result->fetch()) {
         if (!$firstPhoneNumber) {
             $firstPhoneNumber = $row['SEARCH_ID'];
         }
     }
     if (!$firstPhoneNumber) {
         CVoxImplantConfig::SetModeStatus(CVoxImplantConfig::MODE_RENT, false);
     }
     if ($needChangePortalNumber) {
         if ($firstPhoneNumber) {
             CVoxImplantConfig::SetPortalNumber($firstPhoneNumber);
         } else {
             CVoxImplantConfig::SetPortalNumber(CVoxImplantConfig::LINK_BASE_NUMBER);
         }
     }
     return true;
 }
Esempio n. 4
0
 public static function GetConfigBySearchId($searchId)
 {
     if (strlen($searchId) <= 0) {
         return array('ERROR' => 'Config is`t found for undefined number');
     }
     $orm = VI\ConfigTable::getList(array('filter' => array('=SEARCH_ID' => (string) $searchId)));
     $config = $orm->fetch();
     if (!$config) {
         $result = array('ERROR' => 'Config is`t found for number: ' . $searchId);
     } else {
         $result = $config;
         $result['PHONE_TITLE'] = $result['PHONE_NAME'];
         if ($result['PORTAL_MODE'] == self::MODE_SIP) {
             $viSip = new CVoxImplantSip();
             $sipResult = $viSip->Get($config["ID"]);
             $result['PHONE_NAME'] = preg_replace("/[^0-9\\#\\*]/i", "", $result['PHONE_NAME']);
             $result['PHONE_NAME'] = strlen($result['PHONE_NAME']) >= 4 ? $result['PHONE_NAME'] : '';
             $result['SIP_SERVER'] = $sipResult ? $sipResult['SERVER'] : '';
             $result['SIP_LOGIN'] = $sipResult ? $sipResult['LOGIN'] : '';
             $result['SIP_PASSWORD'] = $sipResult ? $sipResult['PASSWORD'] : '';
         }
         if (strlen($result['FORWARD_NUMBER']) > 0) {
             $result["FORWARD_NUMBER"] = NormalizePhone($result['FORWARD_NUMBER'], 1);
         }
         if (strlen($result['WORKTIME_DAYOFF_NUMBER']) > 0) {
             $result["WORKTIME_DAYOFF_NUMBER"] = NormalizePhone($result['WORKTIME_DAYOFF_NUMBER'], 1);
         }
         // check work time
         $result['WORKTIME_SKIP_CALL'] = 'N';
         if ($config['WORKTIME_ENABLE'] == 'Y') {
             $timezone = !empty($config["WORKTIME_TIMEZONE"]) ? new DateTimeZone($config["WORKTIME_TIMEZONE"]) : null;
             $numberDate = new Bitrix\Main\Type\DateTime(null, null, $timezone);
             if (!empty($config['WORKTIME_DAYOFF'])) {
                 $daysOff = explode(",", $config['WORKTIME_DAYOFF']);
                 $allWeekDays = array('MO' => 1, 'TU' => 2, 'WE' => 3, 'TH' => 4, 'FR' => 5, 'SA' => 6, 'SU' => 7);
                 $currentWeekDay = $numberDate->format('N');
                 foreach ($daysOff as $day) {
                     if ($currentWeekDay == $allWeekDays[$day]) {
                         $result['WORKTIME_SKIP_CALL'] = "Y";
                     }
                 }
             }
             if ($result['WORKTIME_SKIP_CALL'] !== "Y" && !empty($config['WORKTIME_HOLIDAYS'])) {
                 $holidays = explode(",", $config['WORKTIME_HOLIDAYS']);
                 $currentDay = $numberDate->format('d.m');
                 foreach ($holidays as $holiday) {
                     if ($currentDay == $holiday) {
                         $result['WORKTIME_SKIP_CALL'] = "Y";
                     }
                 }
             }
             if ($result['WORKTIME_SKIP_CALL'] !== "Y" && !empty($config['WORKTIME_FROM']) && !empty($config['WORKTIME_TO'])) {
                 $currentTime = $numberDate->format('G.i');
                 if (!($currentTime >= $config['WORKTIME_FROM'] && $currentTime <= $config['WORKTIME_TO'])) {
                     $result['WORKTIME_SKIP_CALL'] = "Y";
                 }
             }
             if ($result['WORKTIME_SKIP_CALL'] === "Y") {
                 $result['WORKTIME_DAYOFF_MELODY'] = CVoxImplantConfig::GetMelody('WORKTIME_DAYOFF_MELODY', $config['MELODY_LANG'], $config['WORKTIME_DAYOFF_MELODY']);
             }
         }
         if (CVoxImplantHttp::GetPortalType() == CVoxImplantHttp::TYPE_BITRIX24) {
             $result['PORTAL_URL'] = CVoxImplantHttp::GetServerAddress() . '/settings/info_receiver.php?b24_action=phone&b24_direct=y';
         } else {
             $result['PORTAL_URL'] = CVoxImplantHttp::GetServerAddress() . '/services/telephony/info_receiver.php?b24_direct=y';
         }
         $result['PORTAL_SIGN'] = CVoxImplantHttp::GetPortalSign();
         $result['MELODY_WELCOME'] = CVoxImplantConfig::GetMelody('MELODY_WELCOME', $config['MELODY_LANG'], $config['MELODY_WELCOME']);
         $result['MELODY_VOICEMAIL'] = CVoxImplantConfig::GetMelody('MELODY_VOICEMAIL', $config['MELODY_LANG'], $config['MELODY_VOICEMAIL']);
         $result['MELODY_HOLD'] = CVoxImplantConfig::GetMelody('MELODY_HOLD', $config['MELODY_LANG'], $config['MELODY_HOLD']);
         $result['MELODY_WAIT'] = CVoxImplantConfig::GetMelody('MELODY_WAIT', $config['MELODY_LANG'], $config['MELODY_WAIT']);
     }
     return $result;
 }
	public static function GetTemplateJS($arParams, $arTemplate)
	{
		global $USER;

		$ppStatus = 'false';
		$ppServerStatus = 'false';
		$updateStateInterval = 'auto';
		if (CModule::IncludeModule("pull"))
		{
			$ppStatus = CPullOptions::ModuleEnable()? 'true': 'false';
			$ppServerStatus = CPullOptions::GetNginxStatus()? 'true': 'false';
			$updateStateInterval = CPullOptions::GetNginxStatus()? self::GetSessionLifeTime(): 80;
			if ($updateStateInterval > 100)
			{
				if ($updateStateInterval > 3600)
					$updateStateInterval = 3600;
				
				if ($arTemplate['DESKTOP'] == 'true')
					$updateStateInterval = intval($updateStateInterval/2);
				else
					$updateStateInterval = $updateStateInterval-60;
			}
		}

		$diskStatus = CIMDisk::Enabled();

		if ($arTemplate['INIT'] == 'Y')
		{
			$phoneSipAvailable = 0;
			$phoneEnabled = self::CheckPhoneStatus();
			if ($phoneEnabled && CModule::IncludeModule('voximplant'))
			{
				$phoneSipAvailable = CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_SIP);
			}

			$pathToIm = isset($arTemplate['PATH_TO_IM'])? $arTemplate['PATH_TO_IM']: '';
			$pathToCall = isset($arTemplate['PATH_TO_CALL'])? $arTemplate['PATH_TO_CALL']: '';
			$pathToFile = isset($arTemplate['PATH_TO_FILE'])? $arTemplate['PATH_TO_FILE']: '';

			$sJS = "
				BX.ready(function() {
					BXIM = new BX.IM(BX('bx-notifier-panel'), {
						'mailCount': ".$arTemplate["MAIL_COUNTER"].",
						'notifyCount': ".$arTemplate["NOTIFY_COUNTER"].",
						'messageCount': ".$arTemplate["MESSAGE_COUNTER"].",
						'counters': ".(empty($arTemplate['COUNTERS'])? '{}': CUtil::PhpToJSObject($arTemplate['COUNTERS'])).",
						'ppStatus': ".$ppStatus.",
						'ppServerStatus': ".$ppServerStatus.",
						'updateStateInterval': '".$updateStateInterval."',
						'xmppStatus': ".(CIMMessenger::CheckXmppStatusOnline()? 'true': 'false').",
						'bitrixNetworkStatus': ".(CIMMessenger::CheckNetworkStatus()? 'true': 'false').",
						'bitrix24Status': ".(IsModuleInstalled('bitrix24')? 'true': 'false').",
						'bitrix24Admin': ".(CModule::IncludeModule('bitrix24') && CBitrix24::IsPortalAdmin($USER->GetId())? 'true': 'false').",
						'bitrix24net': ".(IsModuleInstalled('b24network')? 'true': 'false').",
						'bitrixIntranet': ".(IsModuleInstalled('intranet')? 'true': 'false').",
						'bitrixXmpp': ".(IsModuleInstalled('xmpp')? 'true': 'false').",
						'desktop': ".$arTemplate["DESKTOP"].",
						'desktopStatus': ".(CIMMessenger::CheckDesktopStatusOnline()? 'true': 'false').",
						'desktopVersion': ".CIMMessenger::GetDesktopVersion().",
						'desktopLinkOpen': ".$arTemplate["DESKTOP_LINK_OPEN"].",
						'language': '".LANGUAGE_ID."',

						'smile': ".CUtil::PhpToJSObject($arTemplate["SMILE"]).",
						'smileSet': ".CUtil::PhpToJSObject($arTemplate["SMILE_SET"]).",
						'settings': ".CUtil::PhpToJSObject($arTemplate['SETTINGS']).",
						'settingsNotifyBlocked': ".(empty($arTemplate['SETTINGS_NOTIFY_BLOCKED'])? '{}': CUtil::PhpToJSObject($arTemplate['SETTINGS_NOTIFY_BLOCKED'])).",

						'notify': ".(empty($arTemplate['NOTIFY']['notify'])? '{}': CUtil::PhpToJSObject($arTemplate['NOTIFY']['notify'])).",
						'unreadNotify' : ".(empty($arTemplate['NOTIFY']['unreadNotify'])? '{}': CUtil::PhpToJSObject($arTemplate['NOTIFY']['unreadNotify'])).",
						'flashNotify' : ".(empty($arTemplate['NOTIFY']['flashNotify'])? '{}': CUtil::PhpToJSObject($arTemplate['NOTIFY']['flashNotify'])).",
						'countNotify' : ".intval($arTemplate['NOTIFY']['countNotify']).",
						'loadNotify' : ".($arTemplate['NOTIFY']['loadNotify']? 'true': 'false').",

						'recent': ".CUtil::PhpToJSObject($arTemplate['RECENT']).",
						'users': ".(empty($arTemplate['CONTACT_LIST']['users'])? '{}': CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['users'])).",
						'groups': ".(empty($arTemplate['CONTACT_LIST']['groups'])? '{}': CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['groups'])).",
						'userInGroup': ".(empty($arTemplate['CONTACT_LIST']['userInGroup'])? '{}': CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['userInGroup'])).",
						'woGroups': ".(empty($arTemplate['CONTACT_LIST']['woGroups'])? '{}': CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['woGroups'])).",
						'woUserInGroup': ".(empty($arTemplate['CONTACT_LIST']['woUserInGroup'])? '{}': CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['woUserInGroup'])).",
						'chat': ".(empty($arTemplate['CHAT']['chat'])? '{}': CUtil::PhpToJSObject($arTemplate['CHAT']['chat'])).",
						'userInChat': ".(empty($arTemplate['CHAT']['userInChat'])? '{}': CUtil::PhpToJSObject($arTemplate['CHAT']['userInChat'])).",
						'userChatBlockStatus': ".(empty($arTemplate['CHAT']['userChatBlockStatus'])? '{}': CUtil::PhpToJSObject($arTemplate['CHAT']['userChatBlockStatus'])).",
						'message' : ".(empty($arTemplate['MESSAGE']['message'])? '{}': CUtil::PhpToJSObject($arTemplate['MESSAGE']['message'])).",
						'files' : ".(empty($arTemplate['MESSAGE']['files'])? '{}': CUtil::PhpToJSObject($arTemplate['MESSAGE']['files'])).",
						'showMessage' : ".(empty($arTemplate['MESSAGE']['usersMessage'])? '{}': CUtil::PhpToJSObject($arTemplate['MESSAGE']['usersMessage'])).",
						'unreadMessage' : ".(empty($arTemplate['MESSAGE']['unreadMessage'])? '{}': CUtil::PhpToJSObject($arTemplate['MESSAGE']['unreadMessage'])).",
						'flashMessage' : ".(empty($arTemplate['MESSAGE']['flashMessage'])? '{}': CUtil::PhpToJSObject($arTemplate['MESSAGE']['flashMessage'])).",
						'history' : {},
						'openMessenger' : ".(isset($_GET['IM_DIALOG'])? "'".CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_DIALOG']))."'": 'false').",
						'openHistory' : ".(isset($_GET['IM_HISTORY'])? "'".CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_HISTORY']))."'": 'false').",
						'openNotify' : ".(isset($_GET['IM_NOTIFY']) && $_GET['IM_NOTIFY'] == 'Y'? 'true': 'false').",
						'openSettings' : ".(isset($_GET['IM_SETTINGS'])? $_GET['IM_SETTINGS'] == 'Y'? "'true'": "'".CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_SETTINGS']))."'": 'false').",
						'currentTab' : '".CUtil::JSEscape($arTemplate['CURRENT_TAB'])."',
						'userId': ".$USER->GetID().",
						'userEmail': '".CUtil::JSEscape($USER->GetEmail())."',
						'webrtc': {'turnServer' : '".CUtil::JSEscape($arTemplate['TURN_SERVER'])."', 'turnServerFirefox' : '".CUtil::JSEscape($arTemplate['TURN_SERVER_FIREFOX'])."', 'turnServerLogin' : '".CUtil::JSEscape($arTemplate['TURN_SERVER_LOGIN'])."', 'turnServerPassword' : '".CUtil::JSEscape($arTemplate['TURN_SERVER_PASSWORD'])."', 'mobileSupport': false, 'phoneEnabled': ".($phoneEnabled? 'true': 'false').", 'phoneSipAvailable': ".($phoneSipAvailable? 'true': 'false')."},
						'disk': {'enable' : ".($diskStatus? 'true': 'false')."},
						'path' : {'profile' : '".CUtil::JSEscape($arTemplate['PATH_TO_USER_PROFILE'])."', 'profileTemplate' : '".CUtil::JSEscape($arTemplate['PATH_TO_USER_PROFILE_TEMPLATE'])."', 'mail' : '".CUtil::JSEscape($arTemplate['PATH_TO_USER_MAIL'])."', 'im': '".CUtil::JSEscape($pathToIm)."', 'call': '".CUtil::JSEscape($pathToCall)."', 'file': '".CUtil::JSEscape($pathToFile)."'}
					});
				});
			";
		}
		else
		{
			$sJS = "
				BX.ready(function() {
					BXIM = new BX.IM(BX('bx-notifier-panel'), {
						'init': false,
						'settings': ".CUtil::PhpToJSObject($arTemplate['SETTINGS']).",
						'updateStateInterval': '".$updateStateInterval."',
						'desktop': ".$arTemplate["DESKTOP"].",
						'ppStatus': ".$ppStatus.",
						'ppServerStatus': ".$ppServerStatus.",
						'xmppStatus': ".(CIMMessenger::CheckXmppStatusOnline()? 'true': 'false').",
						'bitrix24Status': ".(IsModuleInstalled('bitrix24')? 'true': 'false').",
						'bitrixIntranet': ".(IsModuleInstalled('intranet')? 'true': 'false').",
						'bitrixXmpp': ".(IsModuleInstalled('xmpp')? 'true': 'false').",
						'notify' : {},
						'users' : {},
						'userId': ".$USER->GetID().",
						'userEmail': '".CUtil::JSEscape($USER->GetEmail())."',

						'openMessenger' : ".(isset($_GET['IM_DIALOG'])? "'".CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_DIALOG']))."'": 'false').",
						'openHistory' : ".(isset($_GET['IM_HISTORY'])? "'".CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_HISTORY']))."'": 'false').",
						'openSettings' : ".(isset($_GET['IM_SETTINGS']) && $_GET['IM_SETTINGS'] == 'Y'? "'true'": 'false').",

						'disk': {'enable' : '".($diskStatus? 'true': 'false')."'},
						'path' : {'profile' : '".$arTemplate['PATH_TO_USER_PROFILE']."', 'profileTemplate' : '".$arTemplate['PATH_TO_USER_PROFILE_TEMPLATE']."', 'mail' : '".$arTemplate['PATH_TO_USER_MAIL']."'}
					});
				});
			";
		}

		return $sJS;
	}
Esempio n. 6
0
 private static function executeSaveOption(&$error)
 {
     $error = !CVoxImplantConfig::SetPortalNumber($_REQUEST["portalNumber"]);
     return array();
 }
Esempio n. 7
0
 public function SendChatMessage($dialogId, $incomingType, $message)
 {
     if (strlen($message) <= 0 || strlen($dialogId) <= 0) {
         return false;
     }
     if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_NONE) {
         return false;
     }
     if (!CModule::IncludeModule('im')) {
         return false;
     }
     // TODO CHECK NULL USER BEFORE SEND
     $chatId = 0;
     if (substr($dialogId, 0, 4) == 'chat') {
         $chatId = intval(substr($dialogId, 4));
         CIMChat::AddMessage(array("FROM_USER_ID" => $incomingType == CVoxImplantMain::CALL_OUTGOING ? $this->userId : 0, "TO_CHAT_ID" => $chatId, "MESSAGE" => $message, "SYSTEM" => 'Y'));
     } else {
         if (intval($dialogId) > 0) {
             CIMMessage::Add(array("FROM_USER_ID" => $incomingType == CVoxImplantMain::CALL_OUTGOING ? $this->userId : intval($dialogId), "TO_USER_ID" => $incomingType == CVoxImplantMain::CALL_OUTGOING ? intval($dialogId) : $this->userId, "MESSAGE" => $message, "SYSTEM" => 'Y'));
         }
     }
     return true;
 }
Esempio n. 8
0
         }
     }
     foreach (GetModuleEvents("voximplant", "onCallInit", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array(array('CALL_ID' => $params['CALL_ID'], 'CALL_TYPE' => 2, 'ACCOUNT_SEARCH_ID' => $params['ACCOUNT_SEARCH_ID'], 'PHONE_NUMBER' => $params['PHONE_NUMBER'], 'CALLER_ID' => $params['CALLER_ID'])));
     }
     echo json_encode($result);
 } elseif ($params["COMMAND"] == "OutgoingGetConfig") {
     $result = CVoxImplantOutgoing::GetConfigByUserId($params['USER_ID']);
     CVoxImplantHistory::WriteToLog($result, 'PORTAL GET OUTGOING CONFIG');
     echo json_encode($result);
 } elseif ($params["COMMAND"] == "AddPhoneNumber") {
     $result = CVoxImplantConfig::AddConfigBySearchId($params['PHONE_NUMBER'], $params['COUNTRY_CODE']);
     CVoxImplantHistory::WriteToLog($result, 'CONTROLLER ADD NEW PHONE NUMBER');
     echo json_encode($result);
 } elseif ($params["COMMAND"] == "UnlinkExpirePhoneNumber") {
     $result = CVoxImplantConfig::DeleteConfigBySearchId($params['PHONE_NUMBER']);
     CVoxImplantHistory::WriteToLog($result, 'CONTROLLER UNLINK EXPIRE PHONE NUMBER');
     echo json_encode($result);
 } elseif ($params["COMMAND"] == "UpdateOperatorRequest") {
     $params['OPERATOR_CONTRACT'] = \Bitrix\Main\Text\Encoding::convertEncodingToCurrent($params['OPERATOR_CONTRACT']);
     CVoxImplantPhoneOrder::Update($params);
     $result = array('RESULT' => 'OK');
     CVoxImplantHistory::WriteToLog($result, 'UPDATE OPERATOR REQUEST');
     echo json_encode($result);
 } else {
     if ($params["COMMAND"] == "ExternalHungup") {
         $res = Bitrix\Voximplant\CallTable::getList(array('filter' => array('=CALL_ID' => $params['CALL_ID_TMP'])));
         if ($call = $res->fetch()) {
             Bitrix\Voximplant\CallTable::delete($call['ID']);
             CVoxImplantOutgoing::SendPullEvent(array('COMMAND' => 'timeout', 'USER_ID' => $call['USER_ID'], 'CALL_ID' => $call['CALL_ID'], 'FAILED_CODE' => intval($params['CALL_FAILED_CODE']), 'MARK' => 'timeout_hit_7'));
             CVoxImplantHistory::WriteToLog($call, 'EXTERNAL CALL HANGUP');
Esempio n. 9
0
 public static function GetMobileTemplateJS($arParams, $arTemplate)
 {
     global $USER;
     $ppStatus = 'false';
     $ppServerStatus = 'false';
     $updateStateInterval = 'auto';
     if (CModule::IncludeModule("pull")) {
         $ppStatus = CPullOptions::ModuleEnable() ? 'true' : 'false';
         $ppServerStatus = CPullOptions::GetNginxStatus() ? 'true' : 'false';
         $updateStateInterval = CPullOptions::GetNginxStatus() ? self::GetSessionLifeTime() : 80;
         if ($updateStateInterval > 100) {
             if ($updateStateInterval > 3600) {
                 $updateStateInterval = 3600;
             }
             $updateStateInterval = $updateStateInterval - 60;
         }
     }
     $diskStatus = CIMDisk::Enabled();
     $phoneSipAvailable = false;
     $phoneDeviceActive = false;
     $phoneEnabled = self::CheckPhoneStatus() && CModule::IncludeModule('mobileapp') && \Bitrix\MobileApp\Mobile::getInstance()->isWebRtcSupported();
     if ($phoneEnabled && CModule::IncludeModule('voximplant')) {
         $phoneSipAvailable = CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_SIP);
         $phoneDeviceActive = CVoxImplantUser::GetPhoneActive($USER->GetId());
     }
     $mobileAction = isset($arTemplate["ACTION"]) ? $arTemplate["ACTION"] : 'none';
     $mobileCallMethod = isset($arTemplate["CALL_METHOD"]) ? $arTemplate["CALL_METHOD"] : 'device';
     $userColor = isset($arTemplate['CONTACT_LIST']['users'][$USER->GetID()]['color']) ? $arTemplate['CONTACT_LIST']['users'][$USER->GetID()]['color'] : '';
     $sJS = "\n\t\t\tBX.ready(function() {\n\t\t\t\tBXIM = new BX.ImMobile({\n\t\t\t\t\t'mobileAction': '" . $mobileAction . "',\n\t\t\t\t\t'mobileCallMethod': '" . $mobileCallMethod . "',\n\n\t\t\t\t\t'colors': " . (IM\Color::isEnabled() ? CUtil::PhpToJSObject(IM\Color::getSafeColorNames()) : 'false') . ",\n\t\t\t\t\t'mailCount': " . intval($arTemplate["MAIL_COUNTER"]) . ",\n\t\t\t\t\t'notifyCount': " . intval($arTemplate["NOTIFY_COUNTER"]) . ",\n\t\t\t\t\t'messageCount': " . intval($arTemplate["MESSAGE_COUNTER"]) . ",\n\t\t\t\t\t'counters': " . (empty($arTemplate['COUNTERS']) ? '{}' : CUtil::PhpToJSObject($arTemplate['COUNTERS'])) . ",\n\t\t\t\t\t'ppStatus': " . $ppStatus . ",\n\t\t\t\t\t'ppServerStatus': " . $ppServerStatus . ",\n\t\t\t\t\t'updateStateInterval': '" . $updateStateInterval . "',\n\t\t\t\t\t'openChatEnable': " . (CIMMessenger::CheckEnableOpenChat() ? 'true' : 'false') . ",\n\t\t\t\t\t'xmppStatus': " . (CIMMessenger::CheckXmppStatusOnline() ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrixNetwork': " . (CIMMessenger::CheckNetwork() ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrixNetwork2': " . (CIMMessenger::CheckNetwork2() ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrix24': " . (IsModuleInstalled('bitrix24') ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrix24Admin': " . (CModule::IncludeModule('bitrix24') && CBitrix24::IsPortalAdmin($USER->GetId()) ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrix24net': " . (IsModuleInstalled('b24network') ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrixIntranet': " . (IsModuleInstalled('intranet') ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrixXmpp': " . (IsModuleInstalled('xmpp') ? 'true' : 'false') . ",\n\t\t\t\t\t'bitrixMobile': " . (IsModuleInstalled('mobile') ? 'true' : 'false') . ",\n\t\t\t\t\t'desktopStatus': " . (CIMMessenger::CheckDesktopStatusOnline() ? 'true' : 'false') . ",\n\t\t\t\t\t'desktopVersion': " . CIMMessenger::GetDesktopVersion() . ",\n\t\t\t\t\t'language': '" . LANGUAGE_ID . "',\n\n\t\t\t\t\t'smile': " . (empty($arTemplate['SMILE']) ? '{}' : CUtil::PhpToJSObject($arTemplate["SMILE"])) . ",\n\t\t\t\t\t'smileSet': " . (empty($arTemplate['SMILE_SET']) ? '{}' : CUtil::PhpToJSObject($arTemplate["SMILE_SET"])) . ",\n\t\t\t\t\t'settings': " . (empty($arTemplate['SETTINGS']) ? '{}' : CUtil::PhpToJSObject($arTemplate['SETTINGS'])) . ",\n\t\t\t\t\t'settingsNotifyBlocked': " . (empty($arTemplate['SETTINGS_NOTIFY_BLOCKED']) ? '{}' : CUtil::PhpToJSObject($arTemplate['SETTINGS_NOTIFY_BLOCKED'])) . ",\n\n\t\t\t\t\t'notify': " . (empty($arTemplate['NOTIFY']['notify']) ? '{}' : CUtil::PhpToJSObject($arTemplate['NOTIFY']['notify'])) . ",\n\t\t\t\t\t'unreadNotify' : " . (empty($arTemplate['NOTIFY']['unreadNotify']) ? '{}' : CUtil::PhpToJSObject($arTemplate['NOTIFY']['unreadNotify'])) . ",\n\t\t\t\t\t'flashNotify' : " . (empty($arTemplate['NOTIFY']['flashNotify']) ? '{}' : CUtil::PhpToJSObject($arTemplate['NOTIFY']['flashNotify'])) . ",\n\t\t\t\t\t'countNotify' : " . intval($arTemplate['NOTIFY']['countNotify']) . ",\n\t\t\t\t\t'loadNotify' : " . ($arTemplate['NOTIFY']['loadNotify'] ? 'true' : 'false') . ",\n\n\t\t\t\t\t'recent': " . (empty($arTemplate['RECENT']) && $arTemplate['RECENT'] !== false ? '[]' : CUtil::PhpToJSObject($arTemplate['RECENT'])) . ",\n\t\t\t\t\t'users': " . (empty($arTemplate['CONTACT_LIST']['users']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['users'])) . ",\n\t\t\t\t\t'groups': " . (empty($arTemplate['CONTACT_LIST']['groups']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['groups'])) . ",\n\t\t\t\t\t'userInGroup': " . (empty($arTemplate['CONTACT_LIST']['userInGroup']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['userInGroup'])) . ",\n\t\t\t\t\t'woGroups': " . (empty($arTemplate['CONTACT_LIST']['woGroups']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['woGroups'])) . ",\n\t\t\t\t\t'woUserInGroup': " . (empty($arTemplate['CONTACT_LIST']['woUserInGroup']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CONTACT_LIST']['woUserInGroup'])) . ",\n\t\t\t\t\t'chat': " . (empty($arTemplate['CHAT']['chat']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CHAT']['chat'])) . ",\n\t\t\t\t\t'userInChat': " . (empty($arTemplate['CHAT']['userInChat']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CHAT']['userInChat'])) . ",\n\t\t\t\t\t'userChatBlockStatus': " . (empty($arTemplate['CHAT']['userChatBlockStatus']) ? '{}' : CUtil::PhpToJSObject($arTemplate['CHAT']['userChatBlockStatus'])) . ",\n\t\t\t\t\t'message' : " . (empty($arTemplate['MESSAGE']['message']) ? '{}' : CUtil::PhpToJSObject($arTemplate['MESSAGE']['message'])) . ",\n\t\t\t\t\t'files' : " . (empty($arTemplate['MESSAGE']['files']) ? '{}' : CUtil::PhpToJSObject($arTemplate['MESSAGE']['files'])) . ",\n\t\t\t\t\t'showMessage' : " . (empty($arTemplate['MESSAGE']['usersMessage']) ? '{}' : CUtil::PhpToJSObject($arTemplate['MESSAGE']['usersMessage'])) . ",\n\t\t\t\t\t'unreadMessage' : " . (empty($arTemplate['MESSAGE']['unreadMessage']) ? '{}' : CUtil::PhpToJSObject($arTemplate['MESSAGE']['unreadMessage'])) . ",\n\t\t\t\t\t'flashMessage' : " . (empty($arTemplate['MESSAGE']['flashMessage']) ? '{}' : CUtil::PhpToJSObject($arTemplate['MESSAGE']['flashMessage'])) . ",\n\t\t\t\t\t'history' : {},\n\t\t\t\t\t'openMessenger' : " . (isset($_GET['IM_DIALOG']) ? "'" . CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_DIALOG'])) . "'" : 'false') . ",\n\t\t\t\t\t'openHistory' : " . (isset($_GET['IM_HISTORY']) ? "'" . CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_HISTORY'])) . "'" : 'false') . ",\n\t\t\t\t\t'openNotify' : " . (isset($_GET['IM_NOTIFY']) && $_GET['IM_NOTIFY'] == 'Y' ? 'true' : 'false') . ",\n\t\t\t\t\t'openSettings' : " . (isset($_GET['IM_SETTINGS']) ? $_GET['IM_SETTINGS'] == 'Y' ? "'true'" : "'" . CUtil::JSEscape(htmlspecialcharsbx($_GET['IM_SETTINGS'])) . "'" : 'false') . ",\n\n\t\t\t\t\t'currentTab' : '" . ($arTemplate['CURRENT_TAB'] ? CUtil::JSEscape($arTemplate['CURRENT_TAB']) : 0) . "',\n\t\t\t\t\t'generalChatId': " . CIMChat::GetGeneralChatId() . ",\n\t\t\t\t\t'canSendMessageGeneralChat': " . (CIMChat::CanSendMessageToGeneralChat($USER->GetID()) ? 'true' : 'false') . ",\n\t\t\t\t\t'userId': " . $USER->GetID() . ",\n\t\t\t\t\t'userEmail': '" . CUtil::JSEscape($USER->GetEmail()) . "',\n\t\t\t\t\t'userColor': '" . IM\Color::getCode($userColor) . "',\n\t\t\t\t\t'userGender': '" . IM\User::getInstance()->getGender() . "',\n\t\t\t\t\t'userExtranet': " . (IM\User::getInstance()->isExtranet() ? 'true' : 'false') . ",\n\t\t\t\t\t'webrtc': {'turnServer' : '" . (empty($arTemplate['TURN_SERVER']) ? '' : CUtil::JSEscape($arTemplate['TURN_SERVER'])) . "', 'turnServerLogin' : '" . (empty($arTemplate['TURN_SERVER_LOGIN']) ? '' : CUtil::JSEscape($arTemplate['TURN_SERVER_LOGIN'])) . "', 'turnServerPassword' : '" . (empty($arTemplate['TURN_SERVER_PASSWORD']) ? '' : CUtil::JSEscape($arTemplate['TURN_SERVER_PASSWORD'])) . "', 'mobileSupport': " . ($arTemplate['WEBRTC_MOBILE_SUPPORT'] ? 'true' : 'false') . ", 'phoneEnabled': " . ($phoneEnabled ? 'true' : 'false') . ", 'phoneSipAvailable': " . ($phoneSipAvailable ? 'true' : 'false') . "},\n\t\t\t\t\t'disk': {'enable' : " . ($diskStatus ? 'true' : 'false') . "},\n\t\t\t\t\t'path' : {'profile' : '" . (empty($arTemplate['PATH_TO_USER_PROFILE']) ? '' : CUtil::JSEscape($arTemplate['PATH_TO_USER_PROFILE'])) . "', 'profileTemplate' : '" . (empty($arTemplate['PATH_TO_USER_PROFILE_TEMPLATE']) ? '' : CUtil::JSEscape($arTemplate['PATH_TO_USER_PROFILE_TEMPLATE'])) . "', 'mail' : '" . (empty($arTemplate['PATH_TO_USER_MAIL']) ? '' : CUtil::JSEscape($arTemplate['PATH_TO_USER_MAIL'])) . "'}\n\t\t\t\t});\n\t\t\t});\n\t\t";
     return $sJS;
 }
Esempio n. 10
0
 public static function Add($params)
 {
     if (strlen($params["CALL_ID"]) > 0) {
         $res = VI\CallTable::getList(array('select' => array('ID', 'DATE_CREATE', 'CRM', 'CONFIG_ID', 'USER_ID', 'TRANSFER_USER_ID'), 'filter' => array('=CALL_ID' => $params["CALL_ID"])));
         if ($call = $res->fetch()) {
             VI\CallTable::delete($call['ID']);
         }
     }
     $arFields = array("ACCOUNT_ID" => $params["ACCOUNT_ID"], "APPLICATION_ID" => $params["APPLICATION_ID"], "APPLICATION_NAME" => $params["APPLICATION_NAME"], "INCOMING" => $params["INCOMING"], "CALL_START_DATE" => $call ? $call['DATE_CREATE'] : new Bitrix\Main\Type\DateTime(), "CALL_DURATION" => $params["CALL_DURATION"], "CALL_STATUS" => $params["CALL_STATUS"], "CALL_FAILED_CODE" => $params["CALL_FAILED_CODE"], "CALL_FAILED_REASON" => $params["CALL_FAILED_REASON"], "COST" => $params["COST_FINAL"], "COST_CURRENCY" => $params["COST_CURRENCY"], "CALL_VOTE" => intval($params["CALL_VOTE"]), "CALL_ID" => $params["CALL_ID"], "CALL_CATEGORY" => $params["CALL_CATEGORY"]);
     if (intval($params["PORTAL_USER_ID"]) > 0) {
         $arFields["PORTAL_USER_ID"] = intval($params["PORTAL_USER_ID"]);
     }
     if (strlen($params["PHONE_NUMBER"]) > 0) {
         $arFields["PHONE_NUMBER"] = $params["PHONE_NUMBER"];
     }
     if (strlen($params["CALL_DIRECTION"]) > 0) {
         $arFields["CALL_DIRECTION"] = $params["CALL_DIRECTION"];
     }
     if (strlen($params["PORTAL_NUMBER"]) > 0) {
         $arFields["PORTAL_NUMBER"] = $params["PORTAL_NUMBER"];
     }
     if (strlen($params["ACCOUNT_SEARCH_ID"]) > 0) {
         $arFields["PORTAL_NUMBER"] = $params["ACCOUNT_SEARCH_ID"];
     }
     if (strlen($params["CALL_LOG"]) > 0) {
         $arFields["CALL_LOG"] = $params["CALL_LOG"];
     }
     $orm = Bitrix\VoxImplant\StatisticTable::add($arFields);
     if (!$orm) {
         return false;
     }
     if ($call && intval($arFields["PORTAL_USER_ID"]) <= 0) {
         $res = VI\QueueTable::getList(array('select' => array('ID', 'USER_ID'), 'order' => array('LAST_ACTIVITY_DATE' => 'asc'), 'filter' => array('=CONFIG_ID' => $call['CONFIG_ID']), 'limit' => 1));
         $queueUser = $res->fetch();
         if ($queueUser) {
             $arFields["PORTAL_USER_ID"] = $queueUser['USER_ID'];
         }
     }
     if (strlen($arFields["PHONE_NUMBER"]) > 0 && $arFields["PORTAL_USER_ID"] > 0 && $params["CALL_FAILED_CODE"] != 423) {
         $plusSymbol = strlen($arFields["PHONE_NUMBER"]) >= 10 ? '+' : '';
         if ($arFields["INCOMING"] == CVoxImplantMain::CALL_OUTGOING) {
             if ($arFields['CALL_FAILED_CODE'] == '603-S') {
                 $message = GetMessage('VI_OUT_CALL_DECLINE_SELF', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"]));
             } else {
                 if ($arFields['CALL_FAILED_CODE'] == 603) {
                     $message = GetMessage('VI_OUT_CALL_DECLINE', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"]));
                 } else {
                     if ($arFields['CALL_FAILED_CODE'] == 486) {
                         $message = GetMessage('VI_OUT_CALL_BUSY', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"]));
                     } else {
                         if ($arFields['CALL_FAILED_CODE'] == 480) {
                             $message = GetMessage('VI_OUT_CALL_UNAVAILABLE', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"]));
                         } else {
                             if ($arFields['CALL_FAILED_CODE'] == 404 || $arFields['CALL_FAILED_CODE'] == 484) {
                                 $message = GetMessage('VI_OUT_CALL_ERROR_NUMBER', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"]));
                             } else {
                                 if ($arFields['CALL_FAILED_CODE'] == 402) {
                                     $message = GetMessage('VI_OUT_CALL_NO_MONEY', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"]));
                                 } else {
                                     $message = GetMessage('VI_OUT_CALL_END', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"], '#INFO#' => '[PCH=' . $orm->getId() . ']' . GetMessage('VI_CALL_INFO') . '[/PCH]'));
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             if ($arFields['CALL_FAILED_CODE'] == 304) {
                 if (strlen($params['URL']) > 0) {
                     $subMessage = GetMessage('VI_CALL_VOICEMAIL', array('#LINK_START#' => '[PCH=' . $orm->getId() . ']', '#LINK_END#' => '[/PCH]'));
                 } else {
                     $subMessage = '[PCH=' . $orm->getId() . ']' . GetMessage('VI_CALL_INFO') . '[/PCH]';
                 }
                 $message = GetMessage('VI_IN_CALL_SKIP', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"], '#INFO#' => $subMessage));
             } else {
                 $message = GetMessage('VI_IN_CALL_END', array('#NUMBER#' => $plusSymbol . $arFields["PHONE_NUMBER"], '#INFO#' => '[PCH=' . $orm->getId() . ']' . GetMessage('VI_CALL_INFO') . '[/PCH]'));
             }
         }
         self::SendMessageToChat($arFields["PORTAL_USER_ID"], $arFields["PHONE_NUMBER"], $arFields["INCOMING"], $message);
     }
     if ($call['CRM'] == 'Y') {
         CVoxImplantCrmHelper::UpdateCall($arFields);
     }
     if (strlen($params['URL']) > 0) {
         $attachToCrm = $call['CRM'] == 'Y';
         $startDownloadAgent = false;
         $recordLimit = COption::GetOptionInt("voximplant", "record_limit");
         if ($recordLimit > 0 && !CVoxImplantAccount::IsPro()) {
             $sipConnectorActive = CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_SIP);
             if ($params['PORTAL_TYPE'] == CVoxImplantConfig::MODE_SIP && $sipConnectorActive) {
                 $startDownloadAgent = true;
             } else {
                 $recordMonth = COption::GetOptionInt("voximplant", "record_month");
                 if (!$recordMonth) {
                     $recordMonth = date('Ym');
                     COption::SetOptionInt("voximplant", "record_month", $recordMonth);
                 }
                 $recordCount = CGlobalCounter::GetValue('vi_records', CGlobalCounter::ALL_SITES);
                 if ($recordCount < $recordLimit) {
                     CGlobalCounter::Increment('vi_records', CGlobalCounter::ALL_SITES, false);
                     $startDownloadAgent = true;
                 } else {
                     if ($recordMonth < date('Ym')) {
                         COption::SetOptionInt("voximplant", "record_month", date('Ym'));
                         CGlobalCounter::Set('vi_records', 1, CGlobalCounter::ALL_SITES, false);
                         CGlobalCounter::Set('vi_records_skipped', 0, CGlobalCounter::ALL_SITES, false);
                         $startDownloadAgent = true;
                     } else {
                         CGlobalCounter::Increment('vi_records_skipped', CGlobalCounter::ALL_SITES, false);
                     }
                 }
                 CVoxImplantHistory::WriteToLog(array('limit' => $recordLimit, 'saved' => CGlobalCounter::GetValue('vi_records', CGlobalCounter::ALL_SITES), 'skipped' => CGlobalCounter::GetValue('vi_records_skipped', CGlobalCounter::ALL_SITES), 'save to portal' => $startDownloadAgent ? 'Y' : 'N'), 'STATUS OF RECORD LIMIT');
             }
         } else {
             $startDownloadAgent = true;
         }
         if ($startDownloadAgent) {
             self::DownloadAgent($orm->getId(), $params['URL'], $attachToCrm);
         }
     }
     if (strlen($params["ACCOUNT_PAYED"]) > 0 && in_array($params["ACCOUNT_PAYED"], array('Y', 'N'))) {
         CVoxImplantAccount::SetPayedFlag($params["ACCOUNT_PAYED"]);
     }
     foreach (GetModuleEvents("voximplant", "onCallEnd", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array(array('CALL_ID' => $arFields['CALL_ID'], 'CALL_TYPE' => $arFields['INCOMING'], 'PHONE_NUMBER' => $arFields['PHONE_NUMBER'], 'PORTAL_NUMBER' => $arFields['PORTAL_NUMBER'], 'PORTAL_USER_ID' => $arFields['PORTAL_USER_ID'], 'CALL_DURATION' => $arFields['CALL_DURATION'], 'CALL_START_DATE' => $arFields['CALL_START_DATE'], 'COST' => $arFields['COST'], 'COST_CURRENCY' => $arFields['COST_CURRENCY'], 'CALL_FAILED_CODE' => $arFields['CALL_FAILED_CODE'], 'CALL_FAILED_REASON' => $arFields['CALL_FAILED_REASON'])));
     }
     return true;
 }
Esempio n. 11
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
/**
 * @var $arParams array
 * @var $arResult array
 * @var $this CBitrixComponent
 * @var $APPLICATION CMain
 * @var $USER CUser
 */
if (!CModule::IncludeModule('voximplant')) {
    return;
}
$arResult['INTERFACE_CHAT_OPTIONS'] = array(CVoxImplantConfig::INTERFACE_CHAT_ADD, CVoxImplantConfig::INTERFACE_CHAT_APPEND, CVoxImplantConfig::INTERFACE_CHAT_NONE);
$arResult['INTERFACE_CHAT_ACTION'] = CVoxImplantConfig::GetChatAction();
if (!(isset($arParams['TEMPLATE_HIDE']) && $arParams['TEMPLATE_HIDE'] == 'Y')) {
    $this->IncludeComponentTemplate();
}
return $arResult;
Esempio n. 12
0
define("PUBLIC_AJAX_MODE", true);
define("NO_KEEP_STATISTIC", "Y");
define("NO_AGENT_STATISTIC", "Y");
define("NOT_CHECK_PERMISSIONS", true);
define("DisableEventsCheck", true);
define("NO_AGENT_CHECK", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);
if (!CModule::IncludeModule("voximplant")) {
    echo CUtil::PhpToJsObject(array('ERROR' => 'VI_MODULE_NOT_INSTALLED'));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
    die;
}
if (!CVoxImplantMain::CheckAccess()) {
    echo CUtil::PhpToJsObject(array('ERROR' => 'AUTHORIZE_ERROR'));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
    die;
}
if (check_bitrix_sessid()) {
    if ($_POST['VI_NOTICE_HIDE']) {
        $arSend['ERROR'] = '';
        $arSend['RESULT'] = true;
        CVoxImplantConfig::HideNoticeOldConfigOfficePbx();
        echo CUtil::PhpToJsObject($arSend);
    } else {
        echo CUtil::PhpToJsObject(array('ERROR' => 'UNKNOWN_ERROR'));
    }
} else {
    echo CUtil::PhpToJsObject(array('BITRIX_SESSID' => bitrix_sessid(), 'ERROR' => 'SESSION_ERROR'));
}
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
Esempio n. 13
0
 public static function AddConfigBySearchId($phone, $country = 'RU')
 {
     $melodyLang = 'EN';
     $country = strtoupper($country);
     if (in_array($country, array('RU', 'UA', 'DE'))) {
         $melodyLang = $country;
     }
     $arFields = array('SEARCH_ID' => $phone, 'PHONE_NAME' => $phone, 'MELODY_LANG' => $melodyLang);
     $result = VI\ConfigTable::add($arFields);
     if ($result) {
         if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER) {
             CVoxImplantConfig::SetPortalNumber($arFields['SEARCH_ID']);
         }
     }
     CVoxImplantConfig::SetModeStatus(CVoxImplantConfig::MODE_RENT, true);
     return true;
 }
Esempio n. 14
0
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die;
}
/**
 * @var $arParams array
 * @var $arResult array
 * @var $arResult['NAV_OBJECT'] CAllDBResult
 * @var $APPLICATION CMain
 * @var $USER CUser
 */
$APPLICATION->SetAdditionalCSS("/bitrix/components/bitrix/voximplant.main/templates/.default/telephony.css");
$numbersC = CVoxImplantConfig::GetPortalNumbers();
$portalNumber = CVoxImplantConfig::GetPortalNumber();
$numbers = array('' => GetMessage("VI_NUMBERS_DEFAULT")) + $numbersC;
?>
<div class="bx-vi-block bx-vi-filter">
	<form id="search_form" action="<?php 
echo POST_FORM_ACTION_URI;
?>
" method="GET">
		<input type="hidden" name="act" value="search">
		<span class="filter-field">
			<input name="FILTER" type="text" value="<?php 
echo htmlspecialcharsbx($arResult['FILTER']);
?>
" class="tel-set-inp" placeholder="<?php 
echo GetMessage('VI_NUMBERS_SEARCH');
?>
" />
Esempio n. 15
0
 public static function AddLead($params)
 {
     if (!CModule::IncludeModule('crm')) {
         return false;
     }
     if (strlen($params['PHONE_NUMBER']) <= 0 || intval($params['USER_ID']) <= 0) {
         return false;
     }
     $dateNow = new Bitrix\Main\Type\DateTime();
     $title = GetMessage($params['INCOMING'] ? 'VI_CRM_CALL_INCOMING' : 'VI_CRM_CALL_OUTGOING');
     $arFields = array('TITLE' => $title . ' ' . $dateNow->format('H:i d.m.Y'), 'OPENED' => 'Y', 'PHONE_WORK' => $params['PHONE_NUMBER']);
     $statuses = CCrmStatus::GetStatusList("SOURCE");
     if (isset($statuses['CALL'])) {
         $arFields['SOURCE_ID'] = 'CALL';
     }
     $portalNumbers = CVoxImplantConfig::GetPortalNumbers();
     $portalNumber = isset($portalNumbers[$params['SEARCH_ID']]) ? $portalNumbers[$params['SEARCH_ID']] : '';
     if ($portalNumber) {
         $arFields['SOURCE_DESCRIPTION'] = GetMessage('VI_CRM_CALL_TO_PORTAL_NUMBER', array('#PORTAL_NUMBER#' => $portalNumber));
     }
     $arFields['FM'] = CCrmFieldMulti::PrepareFields($arFields);
     $CCrmLead = new CCrmLead(false);
     $ID = $CCrmLead->Add($arFields, true, array('CURRENT_USER' => $params['USER_ID'], 'DISABLE_USER_FIELD_CHECK' => true));
     $arErrors = array();
     CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Lead, $ID, CCrmBizProcEventType::Create, $arErrors);
     CVoxImplantHistory::WriteToLog($arFields, 'LEAD CREATED');
     return $ID;
 }
Esempio n. 16
0
    }
    $arResult = array("ERROR" => $error, "ITEM" => array_merge($arResult["ITEM"], $arFields), "QUEUE" => array_flip($queue["U"]), "SIP_CONFIG" => array_merge($arResult["SIP_CONFIG"], $arFieldsSip));
}
foreach (array("MELODY_WELCOME", "MELODY_WAIT", "MELODY_HOLD", "MELODY_VOICEMAIL", "WORKTIME_DAYOFF_MELODY") as $id) {
    if ($arResult["ITEM"][$id] > 0) {
        $res = CFile::GetFileArray($arResult["ITEM"][$id]);
        if ($res) {
            $arResult["ITEM"]["~" . $id] = $res;
        } else {
            $arResult["ITEM"][$id] = 0;
        }
    }
}
$arResult["ITEM"]["MELODY_LANG"] = empty($arResult["ITEM"]["MELODY_LANG"]) ? strtoupper(LANGUAGE_ID) : $arResult["ITEM"]["MELODY_LANG"];
$arResult["ITEM"]["MELODY_LANG"] = in_array($arResult["ITEM"]["MELODY_LANG"], array("RU", "EN", "DE")) ? $arResult["ITEM"]["MELODY_LANG"] : "EN";
$arResult["DEFAULT_MELODIES"] = CVoxImplantConfig::GetDefaultMelodies(false);
if (IsModuleInstalled('bitrix24')) {
    $arResult['LINK_TO_DOC'] = in_array(LANGUAGE_ID, array("ru", "kz", "ua", "by")) ? 'https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=52&CHAPTER_ID=02564' : 'https://www.bitrixsoft.com/support/training/course/index.php?COURSE_ID=55&LESSON_ID=6635';
} else {
    $arResult['LINK_TO_DOC'] = in_array(LANGUAGE_ID, array("ru", "kz", "ua", "by")) ? 'https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=48&CHAPTER_ID=02699' : 'https://www.bitrixsoft.com/support/training/course/index.php?COURSE_ID=26&LESSON_ID=6734';
}
//for work time block
$arResult["TIME_ZONE_ENABLED"] = CTimeZone::Enabled();
$arResult["TIME_ZONE_LIST"] = CTimeZone::GetZones();
if (empty($arResult["ITEM"]["WORKTIME_TIMEZONE"])) {
    if (LANGUAGE_ID == "ru") {
        $arResult["ITEM"]["WORKTIME_TIMEZONE"] = "Europe/Moscow";
    } elseif (LANGUAGE_ID == "de") {
        $arResult["ITEM"]["WORKTIME_TIMEZONE"] = "Europe/Berlin";
    } elseif (LANGUAGE_ID == "ua") {
        $arResult["ITEM"]["WORKTIME_TIMEZONE"] = "Europe/Kiev";
Esempio n. 17
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (isset($_REQUEST['AJAX_CALL']) && $_REQUEST['AJAX_CALL'] == 'Y') {
    return;
}
if (!CModule::IncludeModule('voximplant')) {
    return;
}
$mode = '';
if (in_array($_REQUEST['MODE'], array(CVoxImplantConfig::MODE_LINK, CVoxImplantConfig::MODE_RENT, CVoxImplantConfig::MODE_SIP))) {
    if (isset($_POST['MODE'])) {
        $mode = $_POST['MODE'];
    } else {
        if (isset($_GET['MODE'])) {
            $mode = $_GET['MODE'];
        }
    }
}
$arResult = array('MODE_LINK' => CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_LINK), 'MODE_RENT' => CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_RENT), 'MODE_SIP' => CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_SIP), 'MODE_ACTIVE' => $mode);
if (!(isset($arParams['TEMPLATE_HIDE']) && $arParams['TEMPLATE_HIDE'] == 'Y')) {
    $this->IncludeComponentTemplate();
}
return $arResult;
Esempio n. 18
0
 public static function GetConfigBySearchId($searchId)
 {
     return CVoxImplantConfig::GetConfigBySearchId($searchId);
 }
Esempio n. 19
0
 public function GetUserInfo($userId, $getPhoneAccess = false)
 {
     $userId = intval($userId);
     if ($userId <= 0) {
         $this->error = new CVoxImplantError(__METHOD__, 'USER_ID_NULL', 'UserId is not correct');
         return false;
     }
     $userPassword = '';
     $userBackphone = '';
     $phoneEnable = false;
     $phonePassword = '';
     $arExtParams = array('FIELDS' => array("ID"), 'SELECT' => array('UF_VI_PASSWORD', 'UF_VI_BACKPHONE', 'UF_VI_PHONE', 'UF_VI_PHONE_PASSWORD', 'UF_PHONE_INNER', 'UF_DEPARTMENT'));
     $dbUsers = CUser::GetList($sort_by = '', $dummy = '', array('ID' => $userId), $arExtParams);
     if ($arUser = $dbUsers->Fetch()) {
         if (strlen($arUser['UF_VI_PASSWORD']) > 0) {
             $userPassword = $arUser['UF_VI_PASSWORD'];
         }
         if (strlen($arUser['UF_VI_PHONE_PASSWORD']) > 0) {
             $phonePassword = $arUser['UF_VI_PHONE_PASSWORD'];
         }
         $userInnerPhone = $arUser['UF_PHONE_INNER'];
         $userBackphone = $arUser['UF_VI_BACKPHONE'];
         if ($arUser['UF_VI_PHONE'] == 'Y') {
             $phoneEnable = true;
             $getPhoneAccess = true;
         }
         $arUser['IS_EXTRANET'] = self::IsExtranet($arUser);
         unset($arUser['UF_DEPARTMENT']);
     }
     if ($userPassword == '' || $getPhoneAccess && $phonePassword == '') {
         $result = $this->GetUser($userId, $getPhoneAccess, true);
         if (!$result || $this->GetError()->error) {
             $this->error = new CVoxImplantError(__METHOD__, $this->GetError()->code, $this->GetError()->msg);
             return false;
         }
         $userPassword = $result->result->user_password;
         $phonePassword = $result->result->phone_password;
         global $USER_FIELD_MANAGER;
         $USER_FIELD_MANAGER->Update("USER", $userId, array('UF_VI_PASSWORD' => $userPassword, 'UF_VI_PHONE_PASSWORD' => $phonePassword));
     }
     if ($userBackphone) {
         $portalPhones = CVoxImplantConfig::GetPortalNumbers();
         if (!isset($portalPhones[$userBackphone])) {
             $userBackphone = '';
         }
     }
     if ($userBackphone == '') {
         $userBackphone = CVoxImplantConfig::GetPortalNumber();
         if ($userBackphone == CVoxImplantConfig::LINK_BASE_NUMBER) {
             $userBackphone = '';
         }
     }
     $viAccount = new CVoxImplantAccount();
     return array('call_server' => str_replace('voximplant.com', 'bitrixphone.com', $viAccount->GetCallServer()), 'user_login' => 'user' . $userId, 'user_password' => $userPassword, 'user_backphone' => $userBackphone, 'user_innerphone' => $userInnerPhone, 'phone_enable' => $phoneEnable, 'phone_login' => $phonePassword ? 'phone' . $userId : "", 'phone_password' => $phonePassword, 'user_extranet' => $arUser['IS_EXTRANET']);
 }
Esempio n. 20
0
}
$arResult['LINK_TO_BUY'] = '';
if (IsModuleInstalled('bitrix24')) {
    if (LANGUAGE_ID != 'kz') {
        $arResult['LINK_TO_BUY'] = '/settings/license_phone_sip.php';
    }
} else {
    if (LANGUAGE_ID == 'ru') {
        $arResult['LINK_TO_BUY'] = 'http://www.1c-bitrix.ru/buy/intranet.php#tab-call-link';
    } else {
        if (LANGUAGE_ID == 'ua') {
            $arResult['LINK_TO_BUY'] = 'http://www.1c-bitrix.ua/buy/intranet.php#tab-call-link';
        } else {
            if (LANGUAGE_ID == 'kz') {
            } else {
                if (LANGUAGE_ID == 'de') {
                    $arResult['LINK_TO_BUY'] = 'https://www.bitrix24.de/prices/calls.php';
                } else {
                    $arResult['LINK_TO_BUY'] = 'https://www.bitrix24.com/prices/calls.php';
                }
            }
        }
    }
}
$viAccount = new CVoxImplantAccount();
$arResult['ACCOUNT_NAME'] = $viAccount->GetAccountName();
$arResult['SIP_NOTICE_OLD_CONFIG_OFFICE_PBX'] = CVoxImplantConfig::GetNoticeOldConfigOfficePbx();
if (!(isset($arParams['TEMPLATE_HIDE']) && $arParams['TEMPLATE_HIDE'] == 'Y')) {
    $this->IncludeComponentTemplate();
}
return $arResult;
Esempio n. 21
0
 public function Update($configId, $fields)
 {
     $configId = intval($configId);
     if ($configId <= 0) {
         $this->error = new CVoxImplantError(__METHOD__, 'CONFIG_ID_NULL', GetMessage('VI_SIP_CONFIG_ID_NULL'));
         return false;
     }
     $arUpdate = $this->PrepareFiedls($fields, self::CHECK_UPDATE);
     if (!$arUpdate) {
         return false;
     }
     if (isset($arUpdate['SEARCH_ID'])) {
         $orm = VI\ConfigTable::getList(array('filter' => array('=SEARCH_ID' => $arUpdate['SEARCH_ID'], '!=ID' => $configId)));
         if ($orm->fetch()) {
             $this->error = new CVoxImplantError(__METHOD__, 'SEARCH_ID_EXISTS', GetMessage('VI_SIP_SEARCH_ID_EXISTS'));
             return false;
         }
     }
     if (isset($arUpdate['PHONE_NAME'])) {
         $orm = VI\ConfigTable::getList(array('filter' => array('=PHONE_NAME' => $arUpdate['PHONE_NAME'], '!=ID' => $configId)));
         if ($orm->fetch()) {
             $this->error = new CVoxImplantError(__METHOD__, 'TITLE_EXISTS', GetMessage('VI_SIP_TITLE_EXISTS'));
             return false;
         }
     }
     if (isset($arUpdate['SEARCH_ID'])) {
         $result = \Bitrix\Voximplant\ConfigTable::getById($configId);
         $currentConfig = $result->fetch();
         if ($currentConfig['SEARCH_ID'] == CVoxImplantConfig::GetPortalNumber()) {
             COption::SetOptionString("voximplant", "portal_number", $arUpdate['SEARCH_ID']);
         }
         VI\ConfigTable::update($configId, array('SEARCH_ID' => $arUpdate['SEARCH_ID']));
     }
     if (isset($arUpdate['PHONE_NAME'])) {
         VI\ConfigTable::update($configId, array('PHONE_NAME' => $arUpdate['PHONE_NAME']));
     }
     unset($arUpdate['SEARCH_ID']);
     unset($arUpdate['PHONE_NAME']);
     unset($arUpdate['CONFIG_ID']);
     if (empty($arUpdate)) {
         return true;
     }
     $orm = VI\SipTable::getList(array('filter' => array('=CONFIG_ID' => $configId)));
     $entity = $orm->fetch();
     if (!$entity) {
         $this->error = new CVoxImplantError(__METHOD__, 'CONFIG_NOT_FOUND', GetMessage('VI_SIP_CONFIG_NOT_FOUND'));
         return false;
     }
     VI\SipTable::update($entity['ID'], $arUpdate);
     if (isset($arUpdate['SERVER']) || isset($arUpdate['LOGIN']) || isset($arUpdate['PASSWORD'])) {
         $orm = VI\SipTable::getById($entity['ID']);
         $sipConfig = $orm->fetch();
         if ($entity['SERVER'] != $sipConfig['SERVER'] || $entity['LOGIN'] != $sipConfig['LOGIN'] || $entity['PASSWORD'] != $sipConfig['PASSWORD'] || $fields['NEED_UPDATE'] == 'Y') {
             $this->UpdateSipRegistration($sipConfig['REG_ID'], $sipConfig['SERVER'], $sipConfig['LOGIN'], $sipConfig['PASSWORD']);
         }
     }
     return true;
 }
Esempio n. 22
0
 public static function GetRecordLimit($mode = false)
 {
     $sipConnectorActive = CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_SIP);
     $recordLimit = COption::GetOptionInt("voximplant", "record_limit");
     if ($recordLimit > 0 && !CVoxImplantAccount::IsPro()) {
         if ($mode == CVoxImplantConfig::MODE_SIP && $sipConnectorActive) {
             $recordLimitEnable = false;
         } else {
             $recordLimitEnable = true;
             $recordLimitRemaining = $recordLimit - CGlobalCounter::GetValue('vi_records', CGlobalCounter::ALL_SITES);
             $result = array('ENABLE' => $recordLimitEnable, 'LIMIT' => $recordLimit, 'REMAINING' => $recordLimitRemaining);
         }
     } else {
         $recordLimitEnable = false;
     }
     if (!$recordLimitEnable) {
         $result = array('ENABLE' => $recordLimitEnable, 'DEMO' => CVoxImplantAccount::IsDemo() && !$sipConnectorActive);
     }
     return $result;
 }
Esempio n. 23
0
 public static function lineOutgoingSipSet($arParams)
 {
     if (!CVoxImplantMain::CheckAccess()) {
         throw new \Bitrix\Rest\AccessException();
     }
     $arParams = array_change_key_case($arParams, CASE_UPPER);
     $result = CVoxImplantConfig::SetPortalNumberByConfigId($arParams['CONFIG_ID']);
     if (!$result) {
         throw new Bitrix\Rest\RestException('Specified CONFIG_ID is not found', Bitrix\Rest\RestException::ERROR_ARGUMENT, CRestServer::STATUS_WRONG_REQUEST);
     }
     return 1;
 }
Esempio n. 24
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (isset($_REQUEST['AJAX_CALL']) && $_REQUEST['AJAX_CALL'] == 'Y') {
    return;
}
if (!CModule::IncludeModule('voximplant')) {
    return;
}
$arResult = array();
$arResult['SIP_ENABLE'] = CVoxImplantConfig::GetModeStatus(CVoxImplantConfig::MODE_SIP);
$arResult['LIST_SIP_NUMBERS'] = array();
$arResult['LINK_TO_BUY'] = '';
if (IsModuleInstalled('bitrix24')) {
    if (LANGUAGE_ID != 'kz') {
        $arResult['LINK_TO_BUY'] = '/settings/license_phone_sip.php';
    }
    $arResult['LINK_TO_DOC'] = in_array(LANGUAGE_ID, array("ru", "kz", "ua", "by")) ? 'https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=52&CHAPTER_ID=02564' : 'https://www.bitrixsoft.com/support/training/course/index.php?COURSE_ID=55&LESSON_ID=6635';
} else {
    if (LANGUAGE_ID == 'ru') {
        $arResult['LINK_TO_BUY'] = 'http://www.1c-bitrix.ru/buy/intranet.php#tab-call-link';
    } else {
        if (LANGUAGE_ID == 'ua') {
            //$arResult['LINK_TO_BUY'] = 'http://www.1c-bitrix.ua/buy/intranet.php#tab-call-link';
        } else {
            if (LANGUAGE_ID == 'kz') {
            } else {
                if (LANGUAGE_ID == 'de') {
                    $arResult['LINK_TO_BUY'] = 'https://www.bitrix24.de/prices/calls.php';
Esempio n. 25
0
 public static function AddLead($params)
 {
     if (!CModule::IncludeModule('crm')) {
         return false;
     }
     if (strlen($params['PHONE_NUMBER']) <= 0 || intval($params['USER_ID']) <= 0) {
         return false;
     }
     $result = VI\PhoneTable::getList(array('select' => array('USER_ID', 'PHONE_MNEMONIC'), 'filter' => array('=PHONE_NUMBER' => $params['PHONE_NUMBER'])));
     if ($row = $result->fetch()) {
         return false;
     }
     $title = GetMessage($params['INCOMING'] ? 'VI_CRM_CALL_INCOMING' : 'VI_CRM_CALL_OUTGOING');
     $arFields = array('TITLE' => $params['PHONE_NUMBER'] . ' - ' . $title, 'OPENED' => 'Y', 'PHONE_WORK' => $params['PHONE_NUMBER']);
     $statuses = CCrmStatus::GetStatusList("SOURCE");
     if (isset($statuses[$params['CRM_SOURCE']])) {
         $arFields['SOURCE_ID'] = $params['CRM_SOURCE'];
     } else {
         if (isset($statuses['CALL'])) {
             $arFields['SOURCE_ID'] = 'CALL';
         } else {
             if (isset($statuses['OTHER'])) {
                 $arFields['SOURCE_ID'] = 'OTHER';
             }
         }
     }
     $portalNumbers = CVoxImplantConfig::GetPortalNumbers();
     $portalNumber = isset($portalNumbers[$params['SEARCH_ID']]) ? $portalNumbers[$params['SEARCH_ID']] : '';
     if ($portalNumber) {
         $arFields['SOURCE_DESCRIPTION'] = GetMessage('VI_CRM_CALL_TO_PORTAL_NUMBER', array('#PORTAL_NUMBER#' => $portalNumber));
     }
     $arFields['FM'] = CCrmFieldMulti::PrepareFields($arFields);
     $CCrmLead = new CCrmLead(false);
     $ID = $CCrmLead->Add($arFields, true, array('CURRENT_USER' => $params['USER_ID'], 'DISABLE_USER_FIELD_CHECK' => true));
     $arErrors = array();
     CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Lead, $ID, CCrmBizProcEventType::Create, $arErrors);
     CVoxImplantHistory::WriteToLog($arFields, 'LEAD CREATED');
     return $ID;
 }
Esempio n. 26
0
 public static function Complete($callId, $device = 'WEBRTC')
 {
     $res = VI\CallTable::getList(array('select' => array('ID', 'CALL_ID', 'CRM_LEAD', 'CALLER_ID', 'USER_ID', 'TRANSFER_USER_ID', 'ACCESS_URL', 'CRM', 'CONFIG_ID'), 'filter' => array('=CALL_ID' => $callId)));
     $call = $res->fetch();
     if (!$call) {
         return false;
     }
     VI\CallTable::update($call['ID'], array('USER_ID' => $call['TRANSFER_USER_ID'], 'TRANSFER_USER_ID' => 0));
     CVoxImplantHistory::TransferMessage($call['USER_ID'], $call['TRANSFER_USER_ID'], $call['CALLER_ID']);
     self::SendPullEvent(array('COMMAND' => 'completeTransfer', 'USER_ID' => $call['USER_ID'], 'TRANSFER_USER_ID' => $call['TRANSFER_USER_ID'], 'CALL_ID' => $call['CALL_ID']));
     $crmDataSend = false;
     if ($call['CRM'] == 'Y' && $call['CONFIG_ID'] > 0) {
         $config = CVoxImplantConfig::GetConfig($call['CONFIG_ID']);
         if (isset($config['CRM_TRANSFER_CHANGE']) && $config['CRM_TRANSFER_CHANGE'] == 'Y') {
             if ($call['CRM_LEAD'] > 0) {
                 $crmData = array('LEAD_DATA' => array('ID' => $call['CRM_LEAD'], 'ASSIGNED_BY_ID' => 0));
             } else {
                 $crmData = CVoxImplantCrmHelper::GetDataForPopup($call['CALL_ID'], $call['CALLER_ID']);
             }
             if (isset($crmData['LEAD_DATA']) && $crmData['LEAD_DATA']['ASSIGNED_BY_ID'] >= 0 && $call['TRANSFER_USER_ID'] > 0 && $crmData['LEAD_DATA']['ASSIGNED_BY_ID'] != $call['TRANSFER_USER_ID']) {
                 CVoxImplantCrmHelper::UpdateLead($crmData['LEAD_DATA']['ID'], array('ASSIGNED_BY_ID' => $call['TRANSFER_USER_ID']));
                 $crmDataSend = CVoxImplantCrmHelper::GetDataForPopup($call['CALL_ID'], $call['CALLER_ID'], $call['TRANSFER_USER_ID']);
             }
         }
     }
     self::SendPullEvent(array('COMMAND' => 'completeTransfer', 'USER_ID' => $call['TRANSFER_USER_ID'], 'TRANSFER_USER_ID' => $call['TRANSFER_USER_ID'], 'CALL_DEVICE' => $device, 'CALL_ID' => $call['CALL_ID'], 'CRM' => $crmDataSend));
     return true;
 }
Esempio n. 27
0
define("IM_AJAX_INIT", true);
define("PUBLIC_AJAX_MODE", true);
define("NO_KEEP_STATISTIC", "Y");
define("NO_AGENT_STATISTIC", "Y");
define("NOT_CHECK_PERMISSIONS", true);
define("DisableEventsCheck", true);
define("NO_AGENT_CHECK", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
if (!CModule::IncludeModule("voximplant")) {
    echo CUtil::PhpToJsObject(array('ERROR' => 'VI_MODULE_NOT_INSTALLED'));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
    die;
}
if (!CVoxImplantMain::CheckAccess()) {
    echo CUtil::PhpToJsObject(array('ERROR' => 'AUTHORIZE_ERROR'));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
    die;
}
if (!check_bitrix_sessid()) {
    echo CUtil::PhpToJsObject(array('BITRIX_SESSID' => bitrix_sessid(), 'ERROR' => 'SESSION_ERROR'));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
    die;
}
if ($_POST['VI_SET_CHAT_ACTION'] == 'Y') {
    $arSend['ERROR'] = '';
    CVoxImplantConfig::SetChatAction($_POST['ACTION']);
    echo CUtil::PhpToJsObject($arSend);
} else {
    echo CUtil::PhpToJsObject(array('ERROR' => 'UNKNOWN_ERROR'));
}
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";