static function register(array $params = Array())
{
if (!BitrixMainLoader::includeModule('im'))
return false;
$language = null;
if (isset($params['LANG']))
{
$language = $params['LANG'];
Loc::loadLanguageFile(__FILE__, $language);
}
$language = in_array($language, Array('ru', 'en'))? $language: 'ru';
$agentMode = isset($params['AGENT']) && $params['AGENT'] == 'Y';
if (self::getBotId())
return $agentMode? "": self::getBotId();
$birthday = new BitrixMainTypeDateTime(Loc::getMessage('IMBOT_BOT_BIRTHDAY', null, $language).' 19:45:00', 'Y-m-d H:i:s');
$birthday = $birthday->format(BitrixMainTypeDate::convertFormatToPhp(CSite::GetDateFormat('SHORT')));
$botId = BitrixImBot::register(Array(
'CODE' => self::BOT_CODE,
'TYPE' => BitrixImBot::TYPE_HUMAN,
'MODULE_ID' => self::MODULE_ID,
'CLASS' => __CLASS__,
'LANG' => $language,
'OPENLINE' => 'Y',
'INSTALL_TYPE' => BitrixImBot::INSTALL_TYPE_SILENT,
'METHOD_MESSAGE_ADD' => 'onMessageAdd',
'METHOD_WELCOME_MESSAGE' => 'onChatStart',
'METHOD_BOT_DELETE' => 'onBotDelete',
'PROPERTIES' => Array(
'NAME' => Loc::getMessage('IMBOT_BOT_NAME', null, $language),
'COLOR' => Loc::getMessage('IMBOT_BOT_COLOR', null, $language),
//'EMAIL' => Loc::getMessage('IMBOT_BOT_EMAIL', null, $language),
'PERSONAL_BIRTHDAY' => $birthday,
'WORK_POSITION' => Loc::getMessage('IMBOT_BOT_WORK_POSITION', null, $language),
'PERSONAL_WWW' => Loc::getMessage('IMBOT_BOT_SITE', null, $language),
'PERSONAL_GENDER' => Loc::getMessage('IMBOT_BOT_GENDER', null, $language),
'PERSONAL_PHOTO' => self::uploadAvatar($language),
)
));
if ($botId)
{
self::setBotId($botId);
$eventManager = BitrixMainEventManager::getInstance();
$eventManager->registerEventHandlerCompatible("timeman", "OnAfterTMDayStart", self::MODULE_ID, __CLASS__, "onAfterTmDayStart");
BitrixImCommand::register(Array(
'MODULE_ID' => self::MODULE_ID,
'BOT_ID' => $botId,
'COMMAND' => 'tictactoe',
'CLASS' => __CLASS__,
'HIDDEN' => 'Y',
'METHOD_COMMAND_ADD' => 'onCommandAdd'
));
BitrixImCommand::register(Array(
'MODULE_ID' => self::MODULE_ID,
'BOT_ID' => $botId,
'COMMAND' => 'lang',
'HIDDEN' => 'Y',
'CLASS' => __CLASS__,
'METHOD_COMMAND_ADD' => 'onLocalCommandAdd'
));
BitrixImCommand::register(Array(
'MODULE_ID' => self::MODULE_ID,
'BOT_ID' => $botId,
'COMMAND' => 'disable',
'HIDDEN' => 'Y',
'CLASS' => __CLASS__,
'METHOD_COMMAND_ADD' => 'onSettingsCommandAdd'
));
BitrixImCommand::register(Array(
'MODULE_ID' => self::MODULE_ID,
'BOT_ID' => $botId,
'COMMAND' => 'enable',
'HIDDEN' => 'Y',
'CLASS' => __CLASS__,
'METHOD_COMMAND_ADD' => 'onSettingsCommandAdd'
));
if (BitrixMainLoader::includeModule('bitrix24'))
{
BitrixImCommand::register(Array(
'MODULE_ID' => "bitrix24",
'BOT_ID' => $botId,
'HIDDEN' => 'Y',
'COMMAND' => 'supportAccess',
'CLASS' => "CBitrix24EventHandlers",
'METHOD_COMMAND_ADD' => 'OnSupportAccess'
));
if (!CBitrix24::isDomainChanged())
{
RegisterModuleDependences("bitrix24", "OnDomainChange", self::MODULE_ID, __CLASS__, "onRenamePortalDomainChange");
CAgent::AddAgent('\Bitrix\ImBot\Bot\Marta::addRenameMessageAgent();', "imbot", "N", 86400, "", "Y", ConvertTimeStamp(time()+CTimeZone::GetOffset()+86400, "FULL"));
}
}
BitrixImApp::register(Array(
'MODULE_ID' => 'imbot',
'BOT_ID' => $botId,
'CODE' => 'play',
'ICON_ID' => self::uploadIcon('play'),
'CLASS' => __CLASS__,
'METHOD_LANG_GET' => 'onAppLang',
'JS' => 'BXIM.sendMessage("/play")',
'CONTEXT' => 'bot',
));
}
return $agentMode? "": $botId;
}