• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_incoming.php
  • Класс: CVoxImplantIncoming
  • Вызов: CVoxImplantIncoming::SendPullEvent
static function SendPullEvent($params)
{
	// TODO check $params
	if (!CModule::IncludeModule('pull') || !CPullOptions::GetQueueServerStatus() || $params['USER_ID'] <= 0)
		return false;

	$config = Array();
	$push = Array();
	$callId = $params['CALL_ID'];
	if ($params['COMMAND'] == 'invite')
	{
		$config = Array(
			"callId" => $params['CALL_ID'],
			"callerId" => $params['CALLER_ID'],
			"phoneNumber" => $params['PHONE_NAME'],
			"chatId" => 0,
			"chat" => array(),
			"typeConnect" => $params['TYPE_CONNECT'],
			"portalCall" => $params['PORTAL_CALL'] == 'Y'? true: false,
			"portalCallUserId" => $params['PORTAL_CALL'] == 'Y'? $params['PORTAL_CALL_USER_ID']: 0,
			"portalCallData" => $params['PORTAL_CALL'] == 'Y'? $params['PORTAL_CALL_DATA']: Array(),
			"config" => $params['CONFIG']? $params['CONFIG']: Array(),
			"CRM" => $params['CRM'],
			"isCallback" => $params['CALLBACK_MODE']
		);

		$callName = $params['CALLER_ID'];
		if (isset($params['CRM']['CONTACT']['NAME']) && $params['CRM']['CONTACT']['NAME'] <> '')
		{
			$callName = $params['CRM']['CONTACT']['NAME'];
		}
		if (isset($params['CRM']['COMPANY']) && $params['CRM']['COMPANY'] <> '')
		{
			$callName .= ' ('.$params['CRM']['COMPANY'].')';
		}
		else if (isset($params['CRM']['CONTACT']['POST']) && $params['CRM']['CONTACT']['POST'] <> '')
		{
			$callName .= ' ('.$params['CRM']['CONTACT']['POST'].')';
		}

		$push['sub_tag'] = 'VI_CALL_'.$params['CALL_ID'];
		$push['send_immediately'] = 'Y';
		$push['sound'] = 'call.aif';
		$push['advanced_params'] = Array(
			"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
			"androidHighPriority" => true,
		);
		if ($params['PORTAL_CALL'] == 'Y')
		{
			$push['message'] = GetMessage('INCOMING_CALL', Array('#NAME#' => $params['PORTAL_CALL_DATA']['users'][$params['PORTAL_CALL_USER_ID']]['name']));
		}
		else
		{
			$push['message'] = GetMessage('INCOMING_CALL', Array('#NAME#' => $callName));
			$push['message'] = $push['message'].' '.GetMessage('CALL_FOR_NUMBER', Array('#NUMBER#' => $params['PHONE_NAME']));
		}
		$push['params'] = Array(
			'ACTION' => 'VI_CALL_'.$params['CALL_ID'],
			'PARAMS' => $config
		);
	}
	else if ($params['COMMAND'] == 'update_crm')
	{
		$call = VIModelCallTable::getByCallId($callId);
		$config = Array(
			"callId" => $params['CALL_ID'],
			"CRM" => $params['CRM'],
		);
		if(is_array($call))
		{
			$config["showCrmCard"] = ($call['CRM'] == 'Y');
			$config["crmEntityType"] = $call['CRM_ENTITY_TYPE'];
			$config["crmEntityId"] = $call['CRM_ENTITY_ID'];
			$config["crmActivityId"] = $call['CRM_ACTIVITY_ID'];
			$config["crmActivityEditUrl"] = CVoxImplantCrmHelper::getActivityEditUrl($call['CRM_ACTIVITY_ID']);
		}
	}
	else if ($params['COMMAND'] == 'timeout' || $params['COMMAND'] == 'answer_self')
	{
		$config = Array(
			"callId" => $params['CALL_ID'],
		);
		$push['send_immediately'] = 'Y';
		$push['advanced_params'] = Array(
			"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
		);
	}
	if (isset($params['MARK']))
	{
		$config['mark'] = $params['MARK'];
	}
	$userIds = is_array($params['USER_ID']) ? $params['USER_ID'] : array($params['USER_ID']);
	BitrixPullEvent::add($userIds,
		Array(
			'module_id' => 'voximplant',
			'command' => $params['COMMAND'],
			'params' => $config,
			'push' => $push
		)
	);

	return true;
}