3namespace Bitrix\Im\V2\Application;
5use Bitrix\Im\Call\Integration\Zoom;
6use Bitrix\Im\Integration\Disk\Documents;
8use Bitrix\Im\V2\Chat\CopilotChat;
9use Bitrix\Im\V2\Integration\AiAssistant\AiAssistantService;
10use Bitrix\Im\V2\Integration\Extranet\CollaberService;
11use Bitrix\Im\V2\Integration\HumanResources\Structure;
12use Bitrix\Im\V2\Integration\Intranet\Invitation;
13use Bitrix\Im\V2\Integration\Sign\DocumentSign;
14use Bitrix\Im\V2\Integration\Socialnetwork\Collab\Collab;
15use Bitrix\ImBot\Bot\Giphy;
16use Bitrix\Main\Config\Option;
17use Bitrix\Main\DI\ServiceLocator;
18use Bitrix\Main\Loader;
22 private static self $currentFeatures;
25 public readonly
bool $chatV2,
26 public readonly
bool $chatDepartments,
27 public readonly
bool $copilotActive,
28 public readonly
bool $copilotAvailable,
29 public readonly
bool $sidebarLinks,
30 public readonly
bool $sidebarFiles,
31 public readonly
bool $sidebarBriefs,
32 public readonly
bool $zoomActive,
33 public readonly
bool $zoomAvailable,
34 public readonly
bool $openLinesV2,
35 public readonly
bool $giphyAvailable,
36 public readonly
bool $collabAvailable,
37 public readonly
bool $collabCreationAvailable,
38 public readonly
bool $enabledCollabersInvitation,
39 public readonly
bool $inviteByPhoneAvailable,
40 public readonly
bool $inviteByLinkAvailable,
41 public readonly
bool $documentSignAvailable,
42 public readonly
bool $intranetInviteAvailable,
43 public readonly
bool $changeInviteLanguageAvailable,
44 public readonly
bool $voteCreationAvailable,
45 public readonly
bool $messagesAutoDeleteEnabled,
46 public readonly
bool $isNotificationsStandalone,
47 public readonly
bool $isCopilotSelectModelAvailable,
48 public readonly
bool $teamsInStructureAvailable,
49 public readonly
bool $isDesktopRedirectAvailable,
50 public readonly
bool $aiAssistantAvailable,
51 public readonly
bool $aiAssistantChatCreationAvailable,
54 public static function get(): self
56 if (!isset(self::$currentFeatures))
58 self::$currentFeatures = self::createCurrent();
61 return self::$currentFeatures;
64 private static function createCurrent(): self
71 Option::get(
'im',
'im_link_url_migration',
'N') ===
'Y',
72 Option::get(
'im',
'im_link_file_migration',
'N') ===
'Y',
76 self::isImOpenLinesV2Available(),
77 self::isGiphyAvailable(),
78 Collab::isAvailable(),
79 Collab::isCreationAvailable(),
81 self::isInviteByPhoneAvailable(),
82 self::isInviteByLinkAvailable(),
86 self::isVoteCreationAvailable(),
88 self::isNotificationsStandalone(),
97 private static function isGiphyAvailable(): bool
99 return Loader::includeModule(
'imbot')
100 && method_exists(Giphy::class,
'isAvailable')
101 && Giphy::isAvailable()
105 private static function isInviteByPhoneAvailable(): bool
107 return Loader::includeModule(
"bitrix24")
108 && Option::get(
'bitrix24',
'phone_invite_allowed',
'N') ===
'Y'
112 private static function isInviteByLinkAvailable(): bool
117 private static function isImOpenLinesV2Available(): bool
119 if (Loader::includeModule(
'imopenlines'))
121 return \Bitrix\ImOpenLines\V2\Settings\Settings::isV2Available();
127 private static function isVoteCreationAvailable(): bool
129 return Loader::includeModule(
'vote')
130 && class_exists(
'\\Bitrix\\Vote\\Config\\Feature')
131 && \Bitrix\Vote\Config\Feature::instance()->isImIntegrationEnabled()
135 private static function isNotificationsStandalone(): bool
137 return Option::get(
'im',
'~is_notifications_standalone',
'N') ===
'Y';
142 return Option::get(
'im',
'isAutoDeleteMessagesEnabled',
'Y') ===
'Y';
147 return Option::get(
'im',
'copilot_select_model_activated',
'N') ===
'Y';
152 return Option::get(
'im',
'desktop_redirect_available',
'N') ===
'Y';
157 return ServiceLocator::getInstance()->get(AiAssistantService::class)->isAiAssistantAvailable();
162 return ServiceLocator::getInstance()->get(AiAssistantService::class)->isAiAssistantChatCreationAvailable();
static getResumesOfCallStatus()
static isLegacyChatActivated($userId=false)
static isAiAssistantChatCreationAvailable()
__construct(public readonly bool $chatV2, public readonly bool $chatDepartments, public readonly bool $copilotActive, public readonly bool $copilotAvailable, public readonly bool $sidebarLinks, public readonly bool $sidebarFiles, public readonly bool $sidebarBriefs, public readonly bool $zoomActive, public readonly bool $zoomAvailable, public readonly bool $openLinesV2, public readonly bool $giphyAvailable, public readonly bool $collabAvailable, public readonly bool $collabCreationAvailable, public readonly bool $enabledCollabersInvitation, public readonly bool $inviteByPhoneAvailable, public readonly bool $inviteByLinkAvailable, public readonly bool $documentSignAvailable, public readonly bool $intranetInviteAvailable, public readonly bool $changeInviteLanguageAvailable, public readonly bool $voteCreationAvailable, public readonly bool $messagesAutoDeleteEnabled, public readonly bool $isNotificationsStandalone, public readonly bool $isCopilotSelectModelAvailable, public readonly bool $teamsInStructureAvailable, public readonly bool $isDesktopRedirectAvailable, public readonly bool $aiAssistantAvailable, public readonly bool $aiAssistantChatCreationAvailable,)
static isDesktopRedirectAvailable()
static isMessagesAutoDeleteEnabled()
static isCopilotSelectModelAvailable()
static isAiAssistantAvailable()
static isTeamsAvailable()
static isChangeLanguageAvailable()