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

	if (empty($messageData['SUBJECT']))
	{
		$messageData['SUBJECT'] = Loc::getMessage(
			'INTRANET_CONTROL_BUTTON_MAIL_CHAT_EMPTY_SUBJECT',
			['#MESSAGE_ID#' => $messageData['ID']]
		);
	}

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

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

	if (
		$chatId
		&& BitrixMailIntegrationIntranetSecretary::provideAccessToMessage(
			$messageData['ID'],
			Message::ENTITY_TYPE_IM_CHAT,
			$chatId,
			$userId
		)
	)
	{
		$message = BitrixMailItemMessage::fromArray($messageData);
		self::postMailChatWelcomeMessage($message, $chatId, $userId);
		return $chatId;
	}

	return null;
}