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

	$config = Array();
	$push = Array();
	if ($params['COMMAND'] == 'start')
	{
		$config = Array(
			"callId" => $params['CALL_ID'],
			"callDevice" => $params['CALL_DEVICE'] == 'PHONE'? 'PHONE': 'WEBRTC',
			"CRM" => $params['CRM']? $params['CRM']: false,
		);
		$push['send_immediately'] = 'Y';
		$push['advanced_params'] = Array(
			"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
		);
	}
	else if ($params['COMMAND'] == 'timeout')
	{
		$config = Array(
			"callId" => $params['CALL_ID'],
		);
		$push['send_immediately'] = 'Y';
		$push['advanced_params'] = Array(
			"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
		);
	}
	else if($params['COMMAND'] == 'answer_phone')
	{
		$config = Array(
			"callId" => $params['CALL_ID'],
		);
		$push['send_immediately'] = 'Y';
		$push['advanced_params'] = Array(
			"notificationsToCancel" => array('VI_CALL_'.$params['CALL_ID']),
		);
	}
	else if($params['COMMAND'] == 'showExternalCall')
	{
		$config = Array(
			'callId' => $params['CALL_ID'],
			'phoneNumber' => $params['PHONE_NUMBER'],
			'lineNumber' => $params['LINE_NUMBER'],
			'companyPhoneNumber' => $params['COMPANY_PHONE_NUMBER'],
			'isCallback' => $params['INCOMING'] == CVoxImplantMain::CALL_CALLBACK,
			'showCrmCard' => $params['SHOW_CRM_CARD'],
			'crmEntityType' => $params['CRM_ENTITY_TYPE'],
			'crmEntityId' => $params['CRM_ENTITY_ID'],
			'crmBindings' => $params['CRM_BINDINGS'],
			'crmActivityId' => $params['CRM_ACTIVITY_ID'] ?? null,
			'crmActivityEditUrl' => $params['CRM_ACTIVITY_EDIT_URL'] ?? null,
			'config' => $params['CONFIG'],
			"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(),
			"CRM" => $params["CRM"] ?: array()
		);
		if($params['INCOMING'] == self::CALL_INCOMING)
			$config['toUserId'] = $params['USER_ID'];
		else if($params['INCOMING'] == self::CALL_OUTGOING)
			$config['fromUserId'] = $params['USER_ID'];
	}
	else if($params['COMMAND'] == 'hideExternalCall')
	{
		$config = Array(
			'callId' => $params['CALL_ID']
		);
	}

	if (isset($params['MARK']))
	{
		$config['mark'] = $params['MARK'];
	}
	$userId = is_array($params['USER_ID']) ? $params['USER_ID'] : array($params['USER_ID']);
	BitrixPullEvent::add($userId,
		Array(
			'module_id' => 'voximplant',
			'command' => $params['COMMAND'],
			'params' => $config,
			'push' => $push
		)
	);

	return true;
}