• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/ChatFactory.php
  • Класс: BitrixImV2ChatChatFactory
  • Вызов: ChatFactory::initChat
public function initChat(?array $params = null): Chat
{
	$type = $params['TYPE'] ?? $params['MESSAGE_TYPE'] ?? '';
	$entityType = $params['ENTITY_TYPE'] ?? '';
	switch (true)
	{
		case $entityType === Chat::ENTITY_TYPE_FAVORITE:
		case $entityType === 'PERSONAL':
			$chat = new FavoriteChat($params);
			break;

		case $entityType === Chat::ENTITY_TYPE_GENERAL:
			$chat = new GeneralChat($params);
			break;

		case $type === Chat::IM_TYPE_OPEN_LINE:
		case $entityType === Chat::ENTITY_TYPE_LINE:
			$chat = new OpenLineChat($params);
			break;

		case $entityType === Chat::ENTITY_TYPE_LIVECHAT:
			$chat = new OpenLineLiveChat($params);
			break;

		case $entityType === Chat::ENTITY_TYPE_VIDEOCONF:
			$chat = new VideoConfChat($params);
			break;

		case $entityType === Chat::IM_TYPE_CHANNEL:
			$chat = new ChannelChat($params);
			break;

		case $type === Chat::IM_TYPE_OPEN:
			$chat = new OpenChat($params);
			break;

		case $type === Chat::IM_TYPE_SYSTEM:
			$chat = new NotifyChat($params);
			break;

		case $type === Chat::IM_TYPE_PRIVATE:
			$chat = new PrivateChat($params);
			break;

		case $type === Chat::IM_TYPE_CHAT:
			$chat = new GroupChat($params);
			break;

		case $type === Chat::IM_TYPE_COMMENT:
			$chat = new CommentChat($params);
			break;

		default:
			$chat = new NullChat();
			break;
	}

	$chat->setContext($this->context);

	return $chat;
}