• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_messenger.php
  • Класс: CIMMessenger
  • Вызов: CIMMessenger::PrepareEventForPush
static function PrepareEventForPush($command, $event)
{
	$result = [
		'cmd' => (string)$command,
		'chatId' => (int)$event['chatId'],
		'dialogId' => (string)$event['dialogId'],
		'counter' => (int)$event['counter'],
	];

	if ($event['notify'] !== true)
	{
		$result['notify'] = $event['notify'];
	}

	if (!empty($event['chat'][$event['chatId']]))
	{
		$eventChat = $event['chat'][$event['chatId']];

		$chat = [
			'id' => (int)$eventChat['id'],
			'name' => (string)$eventChat['name'],
			'owner' => (int)$eventChat['owner'],
			'color' => (string)$eventChat['color'],
			'type' => (string)$eventChat['type'],
			'date_create' => (string)$eventChat['date_create'],
		];

		if (
			!empty($eventChat['avatar'])
			&& $eventChat['avatar'] !== '/bitrix/js/im/images/blank.gif'
		)
		{
			$chat['avatar'] = $eventChat['avatar'];
		}
		if ($eventChat['call'])
		{
			$chat['call'] = (string)$eventChat['call'];
		}
		if ($eventChat['call_number'])
		{
			$chat['call_number'] = (string)$eventChat['call_number'];
		}
		if ($eventChat['entity_data_1'])
		{
			$chat['entity_data_1'] = (string)$eventChat['entity_data_1'];
		}
		if ($eventChat['entity_data_2'])
		{
			$chat['entity_data_2'] = (string)$eventChat['entity_data_2'];
		}
		if ($eventChat['entity_data_3'])
		{
			$chat['entity_data_3'] = (string)$eventChat['entity_data_3'];
		}
		if ($eventChat['entity_id'])
		{
			$chat['entity_id'] = (string)$eventChat['entity_id'];
		}
		if ($eventChat['entity_type'])
		{
			$chat['entity_type'] = (string)$eventChat['entity_type'];
		}
		if ($eventChat['extranet'])
		{
			$chat['extranet'] = true;
		}

		$result['chat'] = $chat;
	}

	if (!empty($event['lines']))
	{
		$result['lines'] = $event['lines'];
	}

	if (!empty($event['users'][$event['message']['senderId']]))
	{
		$eventUser = $event['users'][$event['message']['senderId']];

		$user = [
			'id' => (int)$eventUser['id'],
			'name' => (string)$eventUser['name'],
			'first_name' => (string)$eventUser['first_name'],
			'last_name' => (string)$eventUser['last_name'],
			'color' => (string)$eventUser['color'],
		];

		if (
			!empty($eventUser['avatar'])
			&& $eventUser['avatar'] !== '/bitrix/js/im/images/blank.gif'
		)
		{
			$user['avatar'] = (string)$eventUser['avatar'];
		}

		if ($eventUser['absent'])
		{
			$user['absent'] = true;
		}
		if (!$eventUser['active'])
		{
			$user['active'] = $eventUser['active'];
		}
		if ($eventUser['bot'])
		{
			$user['bot'] = true;
		}
		if ($eventUser['extranet'])
		{
			$user['extranet'] = true;
		}
		if ($eventUser['network'])
		{
			$user['network'] = true;
		}
		if ($eventUser['birthday'])
		{
			$user['birthday'] = $eventUser['birthday'];
		}
		if ($eventUser['connector'])
		{
			$user['connector'] = true;
		}
		if ($eventUser['external_auth_id'] !== 'default')
		{
			$user['external_auth_id'] = $eventUser['external_auth_id'];
		}
		if ($eventUser['gender'] === 'F')
		{
			$user['gender'] = 'F';
		}
		if ($eventUser['work_position'])
		{
			$user['work_position'] = (string)$eventUser['work_position'];
		}

		$result['users'] = $user;
	}

	if (!empty($event['files']))
	{
		foreach ($event['files'] as $key => $value)
		{
			$file = [
				'id' => (int)$value['id'],
				'extension' => (string)$value['extension'],
				'name' => (string)$value['name'],
				'size' => (int)$value['size'],
				'type' => (string)$value['type'],
				'image' => $value['image'],
				'urlDownload' => '',
				'urlPreview' => (new BitrixMainWebUri($value['urlPreview']))->deleteParams(['fileName'])->getUri(),
				'urlShow' => '',
			];
			if ($value['image'])
			{
				$file['image'] = $value['image'];
			}
			if ($value['progress'] !== 100)
			{
				$file['progress'] = (int)$value['progress'];
			}
			if ($value['status'] !== 'done')
			{
				$file['status'] = $value['status'];
			}

			$result['files'][$key] = $file;
		}
	}

	if (!empty($event['message']))
	{
		$eventMessage = $event['message'];

		$message = [
			'id' => (int)$eventMessage['id'],
			'date' => (string)$eventMessage['date'],
			'params' => $eventMessage['params'],
			'prevId' => (int)$eventMessage['prevId'],
			'senderId' => (int)$eventMessage['senderId'],
		];

		if (isset($message['params']['ATTACH']))
		{
			unset($message['params']['ATTACH']);
		}

		if ($eventMessage['system'] === 'Y')
		{
			$message['system'] = 'Y';
		}

		$result['message'] = $message;
	}

	$indexToNameMap = [
		"chat" => 1,
		"chatId" => 2,
		"counter" => 3,
		"dialogId" => 4,
		"files" => 5,
		"message" => 6,
		"users" => 8,
		"name" => 9,
		"avatar" => 10,
		"color" => 11,
		"notify" => 12,
		"type" => 13,
		"extranet" => 14,

		"date_create" => 20,
		"owner" => 21,
		"entity_id" => 23,
		"entity_type" => 24,
		"entity_data_1" => 203,
		"entity_data_2" => 204,
		"entity_data_3" => 205,
		"call" => 201,
		"call_number" => 202,
		"manager_list" => 209,
		"mute_list" => 210,

		"first_name" => 40,
		"last_name" => 41,
		"gender" => 42,
		"work_position" => 43,
		"active" => 400,
		"birthday" => 401,
		"bot" => 402,
		"connector" => 403,
		"external_auth_id" => 404,
		"network" => 406,


		"textLegacy" => 65,
		"date" => 61,
		"prevId" => 62,
		"params" => 63,
		"senderId" => 64,
		"system" => 601,

		"extension" => 80,
		"image" => 81,
		"progress" => 82,
		"size" => 83,
		"status" => 84,
		"urlDownload" => 85,
		"urlPreview" => 86,
		"urlShow" => 87,
		"width" => 88,
		"height" => 89,
	];

	return self::PrepareEventForPushChangeKeys($result, $indexToNameMap);
}