• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/secretary.php
  • Класс: BitrixIntranetSecretary
  • Вызов: Secretary::createTaskChat
static function createTaskChat($taskData, $userId): int
{
	if (!self::checkAccessForIm() || !self::checkAccessForCalendar())
	{
		throw new BitrixMainSystemException('create task chat: failed to load modules');
	}

	$chat = new CIMChat(0);
	$chatFields = [
		'TITLE' => $taskData['TITLE'],
		'TYPE' => IM_MESSAGE_CHAT,
		'ENTITY_TYPE' => 'TASKS',
		'ENTITY_ID' => $taskData['ID'],
		'SKIP_ADD_MESSAGE' => 'Y',
		'AUTHOR_ID' => $userId,
		'USERS' => $taskData['USER_IDS']
	];

	$chatId = $chat->add($chatFields);

	if ($chatId)
	{
		$pathToTask = SITE_DIR . 'company/personal/user/' . $taskData['CREATED_BY'] . '/tasks/task/view/' . $taskData['ID'] . '/';
		$entryLinkTitle = '[url=' . $pathToTask . ']' . $taskData['TITLE'] . '[/url]';
		$chatMessageFields = [
			'FROM_USER_ID' => $userId,
			'MESSAGE' => Loc::getMessage(
				'INTRANET_CONTROL_BUTTON_TASK_CHAT_FIRST_MESSAGE',
				[
					'#TASK_TITLE#' => $entryLinkTitle,
				]
			),
			'SYSTEM' => 'Y',
			'INCREMENT_COUNTER' => 'N',
			'PUSH' => 'Y',
			'TO_CHAT_ID' => $chatId,
			'SKIP_USER_CHECK' => 'Y',
			'SKIP_COMMAND' => 'Y'
		];

		CIMChat::addMessage($chatMessageFields);
	}

	return $chatId;
}