- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/bot/support24.php
- Класс: BitrixImBotBotSupport24
- Вызов: Support24::onStartWriting
static function onStartWriting($params)
{
if (!self::checkTypingRestriction($params))
{
return false;
}
if (self::isActivePartnerSupport())
{
if (!self::isUserIntegrator($params['USER_ID']))
{
return false;
}
}
if (self::getSupportLevel() === self::SUPPORT_LEVEL_FREE)
{
if (self::isActiveFreeSupport())
{
if (!self::isActiveFreeSupportForUser($params['USER_ID']))
{
return false;
}
}
else if (!self::isUserIntegrator($params['USER_ID']))
{
return false;
}
}
else if (self::getSupportLevel() === self::SUPPORT_LEVEL_PAID)
{
if (!self::isActivePaidSupportForUser($params['USER_ID']))
{
return false;
}
}
if ($params['BOT_ID'] == $params['DIALOG_ID'])
{
$params['DIALOG_ID'] = (string)$params['USER_ID'];
}
$dialogId = (string)$params['DIALOG_ID'];
// ITR menu on before any dialog starts
if (self::hasBotMenu())
{
if ((int)self::instanceDialogSession(self::getBotId(), $dialogId)->getParam('CLOSED') == 1)
{
self::instanceDialogSession(self::getBotId(), $dialogId)->update(['MENU_STATE' => null]);
}
if (!self::isMenuTrackStarted($dialogId) && !self::isMenuTrackFinished($dialogId))
{
self::showMenu(['DIALOG_ID' => $dialogId]);
if (!self::isMenuTrackFinished($dialogId))
{
return false;//continue menu travel
}
}
elseif (self::isMenuTrackStarted($dialogId) && !self::isMenuTrackFinished($dialogId))
{
return false;//do nothing
}
}
// Show greeting message on before any dialog starts
elseif (self::allowSendStartMessage($params))
{
// Message for only three state: free, paid and partner.
$message = '';
if (self::getSupportLevel() == self::SUPPORT_LEVEL_FREE)
{
if (self::isUserIntegrator($params['USER_ID']))
{
$message = self::getMessage('DIALOG_START_INTEGRATOR', self::getSupportLevel());
}
else
{
$message = self::getMessage('DIALOG_START', self::getSupportLevel());
}
}
elseif (self::getSupportLevel() == self::SUPPORT_LEVEL_PAID)
{
if (self::isUserIntegrator($params['USER_ID']))
{
$message = self::getMessage('DIALOG_START_INTEGRATOR', self::getSupportLevel());
}
else
{
$message = self::getMessage('DIALOG_START', self::getSupportLevel());
}
}
if (!empty($message))
{
self::sendMessage([
'DIALOG_ID' => $dialogId,
'MESSAGE' => $message,
'SYSTEM' => 'N',
'URL_PREVIEW' => 'N'
]);
self::startDialogSession([
'BOT_ID' => self::getBotId(),
'DIALOG_ID' => $dialogId,
'GREETING_SHOWN' => 'Y',
]);
self::stopMenuTrack($dialogId);
}
}
return parent::onStartWriting($params);
}