• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Send/PushService.php
  • Класс: BitrixImV2MessageSendPushService
  • Вызов: PushService::preparePushForChat
private function preparePushForChat(array $params): array
{
	$pushText = $this->prepareMessageForPush($params['params']);
	unset($params['params']['message']['text_push']);

	$chatTitle = mb_substr(htmlspecialcharsback($params['params']['chat'][$params['params']['chatId']]['name']), 0, 32);
	$chatType = $params['params']['chat'][$params['params']['chatId']]['type'];
	$chatAvatar = $params['params']['chat'][$params['params']['chatId']]['avatar'];
	$chatTypeLetter = $params['params']['chat'][$params['params']['chatId']]['message_type'];


	if (($params['params']['system'] ?? null) === 'Y' || $params['params']['message']['senderId'] <= 0)
	{
		$avatarUser = '';
		$userName = '';
	}
	else
	{
		$userName = User::getInstance($params['params']['message']['senderId'])->getFullName(false);
		$avatarUser = User::getInstance($params['params']['message']['senderId'])->getAvatar();
		if ($avatarUser && mb_strpos($avatarUser, 'http') !== 0)
		{
			$avatarUser = BitrixImCommon::getPublicDomain().$avatarUser;
		}
	}

	if (
		isset(
			$params['params']['message']['senderId'],
			$params['params']['users'][$params['params']['message']['senderId']]
		)
		&& $params['params']['users'][$params['params']['message']['senderId']]
	)
	{
		$params['params']['users'] = [
			$params['params']['message']['senderId'] => $params['params']['users'][$params['params']['message']['senderId']]
		];
	}
	else
	{
		$params['params']['users'] = [];
	}

	if ($chatAvatar == '/bitrix/js/im/images/blank.gif')
	{
		$chatAvatar = '';
	}
	else if ($chatAvatar && mb_strpos($chatAvatar, 'http') !== 0)
	{
		$chatAvatar = BitrixImCommon::getPublicDomain().$chatAvatar;
	}

	unset($params['extra']);

	array_walk_recursive($params, function(&$item, $key)
	{
		if (is_null($item))
		{
			$item = false;
		}
		else if ($item instanceof DateTime)
		{
			$item = date('c', $item->getTimestamp());
		}
	});

	$result = [];
	$result['module_id'] = 'im';
	$result['push']['type'] = ($chatType === 'open'? 'openChat': $chatType);
	$result['push']['tag'] = 'IM_CHAT_'.intval($params['params']['chatId']);
	$result['push']['sub_tag'] = 'IM_MESS';
	$result['push']['app_id'] = 'Bitrix24';
	$result['push']['message'] = ($userName? $userName.': ': '').$pushText;
	$result['push']['advanced_params'] = [
		'group' => $chatType == 'lines'? 'im_lines_message': 'im_message',
		'avatarUrl' => $chatAvatar? $chatAvatar: $avatarUser,
		'senderName' => $chatTitle,
		'senderMessage' => ($userName? $userName.': ': '').$pushText,
		'senderCut' => mb_strlen($userName? $userName.': ' : ''),
		'data' => $this->prepareEventForPush($params['command'], $params['params'])
	];
	$result['push']['params'] = [
		'TAG' => 'IM_CHAT_'.$params['params']['chatId'],
		'CHAT_TYPE' => $chatTypeLetter? $chatTypeLetter: 'C',
		'CATEGORY' => 'ANSWER',
		'URL' => SITE_DIR.'mobile/ajax.php?mobile_action=im_answer',
		'PARAMS' => [
			'RECIPIENT_ID' => 'chat'.$params['params']['chatId'],
			'MESSAGE_ID' => $params['params']['message']['id']
		],
	];

	return $result;
}