- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/connectors/network.php
- Класс: BitrixImConnectorConnectorsNetwork
- Вызов: Network::processingInputNewMessage
public function processingInputNewMessage($message, $line): Result
{
$result = new Result();
$userId = 0;
if (empty($message['USER']) || empty($message['USER']['UUID']))
{
$result->addError(new Error(
'User data not transmitted',
'ERROR_IMCONNECTOR_NOT_TRANSMITTED_USER_DATA',
__METHOD__,
$message
));
}
if ($result->isSuccess())
{
$userId = $this->getUserId($message['USER'], true);
if (empty($userId))
{
$result->addError(new Error(
'Failed to create or update user',
'ERROR_IMCONNECTOR_FAILED_USER',
__METHOD__,
$message
));
}
}
if ($result->isSuccess())
{
$messageData = [
'id' => $message['MESSAGE_ID'],
'date' => '',
'text' => $message['MESSAGE_TEXT'],
'fileLinks' => $message['FILES'],
'attach' => $message['ATTACH'],
'params' => $message['PARAMS'],
];
if (isset($message['FILES_RAW']) && is_array($message['FILES_RAW']))
{
$filesIds = $this->createReceivedRawFiles($message['FILES_RAW']);
if (count($filesIds) && Loader::includeModule('imopenlines'))
{
$chatParams = [
'connector_id' => $this->idConnector,
'line_id' => $message['LINE_ID'],
'chat_id' => $message['GUID'],
'user_id' => $userId
];
$chat = new Chat();
$isLoaded = $chat->load([
'USER_CODE' => Connector::getUserCode($chatParams),
'ONLY_LOAD' => 'Y',
]);
if ($isLoaded && Loader::includeModule('disk'))
{
$diskFiles = CIMDisk::UploadFileFromMain(
$chat->getData('ID'),
$filesIds
);
if (!is_array($messageData['fileLinks']))
{
$messageData['fileLinks'] = [];
}
foreach ($diskFiles as $fileId)
{
$fileModel = File::loadById($fileId);
if ($fileModel)
{
$messageData['fileLinks'][] = [
'name' => $fileModel->getOriginalName(),
'link' => CIMDisk::GetFileLink($fileModel),
'size' => $fileModel->getSize(),
];
}
}
}
}
}
$message['USER']['FULL_NAME'] = CUser::FormatName(
CSite::GetNameFormat(false),
$message['USER'],
true,
false
);
$extraFields = [];
$description =
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_NAME')
. '[/B]: '
. $message['USER']['FULL_NAME']
. '[BR]';
if (
isset($message['USER']['WORK_POSITION'])
&& !empty($message['USER']['WORK_POSITION'])
)
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_POST')
. '[/B]: '
. $message['USER']['WORK_POSITION']
. '[BR]';
}
if (
isset($message['USER']['EMAIL'])
&& !empty($message['USER']['EMAIL'])
)
{
$description .= '[B]' . Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_EMAIL') . '[/B]: '.$message['USER']['EMAIL'] . '[BR]';
}
if (
isset($message['USER']['TARIFF_LEVEL'])
&& !empty($message['USER']['TARIFF_LEVEL'])
)
{
$description .=
'[BR][B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_TARIFF_LEVEL')
. '[/B]: '
. Loc::getMessage(
'IMCONNECTOR_CONNECTOR_NETWORK_TARIFF_LEVEL_'
. mb_strtoupper($message['USER']['TARIFF_LEVEL'])
)
. '[BR]';
}
if (
isset($message['USER']['TARIFF'])
&& !empty($message['USER']['TARIFF'])
)
{
if (!empty($message['USER']['TARIFF_NAME']))
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_TARIFF')
. '[/B]: '
. $message['USER']['TARIFF_NAME']
. ' ('
. $message['USER']['TARIFF']
. ')[BR]';
}
else
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_TARIFF')
. '[/B]: '
. $message['USER']['TARIFF']
. '[BR]';
}
$extraFields['EXTRA_TARIFF'] = $message['USER']['TARIFF'];
}
if (
isset($message['USER']['USER_LEVEL'])
&& in_array($message['USER']['USER_LEVEL'], ['ADMIN', 'INTEGRATOR'])
)
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_USER_LEVEL')
. '[/B]: '
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_USER_LEVEL_' . $message['USER']['USER_LEVEL'])
. '[BR]';
$extraFields['EXTRA_USER_LEVEL'] = $message['USER']['USER_LEVEL'];
}
if (
isset($message['USER']['BOT_VERSION'])
&& !empty($message['USER']['BOT_VERSION'])
)
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_BOT_VERSION')
. '[/B]: '
. $message['USER']['BOT_VERSION']
. '[BR]';
}
if (
isset($message['USER']['PORTAL_TYPE'])
&& in_array($message['USER']['PORTAL_TYPE'], ['PRODUCTION', 'STAGE', 'ETALON'])
)
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_PORTAL_TYPE')
. '[/B]: '
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_PORTAL_TYPE_' . $message['USER']['PORTAL_TYPE'])
. '[BR]';
$extraFields['EXTRA_PORTAL_TYPE'] = $message['USER']['PORTAL_TYPE'];
}
if (
isset($message['USER']['REGISTER'])
&& !empty($message['USER']['REGISTER'])
)
{
$daysAgo = (int)((time() - $message['USER']['REGISTER']) / 60 / 60 / 24);
$daysAgo = ($daysAgo > 0? $daysAgo: 1);
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_REGISTER')
. '[/B]: '
. $daysAgo
. '[BR]';
$extraFields['EXTRA_REGISTER'] = $daysAgo;
}
if (
isset($message['USER']['DEMO'])
&& !empty($message['USER']['DEMO'])
)
{
$daysAgo = (int)((time() - $message['USER']['DEMO']) / 60 / 60 / 24);
$daysAgo = ($daysAgo > 0? $daysAgo: 1);
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_DEMO')
. '[/B]: '
. $daysAgo
. '[BR]';
}
if (
isset($message['USER']['GEO_DATA'])
&& !empty($message['USER']['GEO_DATA'])
)
{
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_GEO_DATA')
. '[/B]: '
. $message['USER']['GEO_DATA']
. '[BR]';
}
$description .=
'[B]'
. Loc::getMessage('IMCONNECTOR_CONNECTOR_NETWORK_WWW')
. '[/B]: '
. $message['USER']['PERSONAL_WWW'];
$extraFields['EXTRA_URL'] = $message['USER']['PERSONAL_WWW'];
$result->setResult([
'user' => $userId,
'chat' => [
'id' => $message['GUID'],
'description' => $description
],
'message' => $messageData,
'extra' => $extraFields
]);
}
return $result;
}