private function prepareEventForPush(string $command, array $event): array
{
$result = [
'cmd' => $command,
'chatId' => (int)$event['chatId'],
'dialogId' => (string)$event['dialogId'],
'counter' => (int)$event['counter'],
];
if ($event['notify'] !== true)
{
$result['notify'] = $event['notify'];
}
if (!empty($event['chat'][$event['chatId']]))
{
$eventChat = $event['chat'][$event['chatId']];
$chat = [
'id' => (int)$eventChat['id'],
'name' => (string)$eventChat['name'],
'owner' => (int)$eventChat['owner'],
'color' => (string)$eventChat['color'],
'type' => (string)$eventChat['type'],
'date_create' => (string)$eventChat['date_create'],
];
if (
!empty($eventChat['avatar'])
&& $eventChat['avatar'] !== '/bitrix/js/im/images/blank.gif'
)
{
$chat['avatar'] = $eventChat['avatar'];
}
if ($eventChat['call'])
{
$chat['call'] = (string)$eventChat['call'];
}
if ($eventChat['call_number'])
{
$chat['call_number'] = (string)$eventChat['call_number'];
}
if ($eventChat['entity_data_1'])
{
$chat['entity_data_1'] = (string)$eventChat['entity_data_1'];
}
if ($eventChat['entity_data_2'])
{
$chat['entity_data_2'] = (string)$eventChat['entity_data_2'];
}
if ($eventChat['entity_data_3'])
{
$chat['entity_data_3'] = (string)$eventChat['entity_data_3'];
}
if ($eventChat['entity_id'])
{
$chat['entity_id'] = (string)$eventChat['entity_id'];
}
if ($eventChat['entity_type'])
{
$chat['entity_type'] = (string)$eventChat['entity_type'];
}
if ($eventChat['extranet'])
{
$chat['extranet'] = true;
}
$result['chat'] = $chat;
}
if (!empty($event['lines']))
{
$result['lines'] = $event['lines'];
}
if (!empty($event['users'][$event['message']['senderId']]))
{
$eventUser = $event['users'][$event['message']['senderId']];
$user = [
'id' => (int)$eventUser['id'],
'name' => (string)$eventUser['name'],
'first_name' => (string)$eventUser['first_name'],
'last_name' => (string)$eventUser['last_name'],
'color' => (string)$eventUser['color'],
];
if (
!empty($eventUser['avatar'])
&& $eventUser['avatar'] !== '/bitrix/js/im/images/blank.gif'
)
{
$user['avatar'] = (string)$eventUser['avatar'];
}
if ($eventUser['absent'])
{
$user['absent'] = true;
}
if (!$eventUser['active'])
{
$user['active'] = $eventUser['active'];
}
if ($eventUser['bot'])
{
$user['bot'] = true;
}
if ($eventUser['extranet'])
{
$user['extranet'] = true;
}
if ($eventUser['network'])
{
$user['network'] = true;
}
if ($eventUser['birthday'])
{
$user['birthday'] = $eventUser['birthday'];
}
if ($eventUser['connector'])
{
$user['connector'] = true;
}
if ($eventUser['external_auth_id'] !== 'default')
{
$user['external_auth_id'] = $eventUser['external_auth_id'];
}
if ($eventUser['gender'] === 'F')
{
$user['gender'] = 'F';
}
if ($eventUser['work_position'])
{
$user['work_position'] = (string)$eventUser['work_position'];
}
$result['users'] = $user;
}
if (!empty($event['files']))
{
foreach ($event['files'] as $key => $value)
{
$file = [
'id' => (int)$value['id'],
'extension' => (string)$value['extension'],
'name' => (string)$value['name'],
'size' => (int)$value['size'],
'type' => (string)$value['type'],
'image' => $value['image'],
'urlDownload' => '',
'urlPreview' => (new BitrixMainWebUri($value['urlPreview']))->deleteParams(['fileName'])->getUri(),
'urlShow' => '',
];
if ($value['image'])
{
$file['image'] = $value['image'];
}
if ($value['progress'] !== 100)
{
$file['progress'] = (int)$value['progress'];
}
if ($value['status'] !== 'done')
{
$file['status'] = $value['status'];
}
$result['files'][$key] = $file;
}
}
if (!empty($event['message']))
{
$eventMessage = $event['message'];
$message = [
'id' => (int)$eventMessage['id'],
'date' => (string)$eventMessage['date'],
'params' => $eventMessage['params'],
'prevId' => (int)$eventMessage['prevId'],
'senderId' => (int)$eventMessage['senderId'],
];
if (isset($message['params']['ATTACH']))
{
unset($message['params']['ATTACH']);
}
if ($eventMessage['system'] === 'Y')
{
$message['system'] = 'Y';
}
$result['message'] = $message;
}
$indexToNameMap = [
'chat' => 1,
'chatId' => 2,
'counter' => 3,
'dialogId' => 4,
'files' => 5,
'message' => 6,
'users' => 8,
'name' => 9,
'avatar' => 10,
'color' => 11,
'notify' => 12,
'type' => 13,
'extranet' => 14,
'date_create' => 20,
'owner' => 21,
'entity_id' => 23,
'entity_type' => 24,
'entity_data_1' => 203,
'entity_data_2' => 204,
'entity_data_3' => 205,
'call' => 201,
'call_number' => 202,
'manager_list' => 209,
'mute_list' => 210,
'first_name' => 40,
'last_name' => 41,
'gender' => 42,
'work_position' => 43,
'active' => 400,
'birthday' => 401,
'bot' => 402,
'connector' => 403,
'external_auth_id' => 404,
'network' => 406,
'textLegacy' => 65,
'date' => 61,
'prevId' => 62,
'params' => 63,
'senderId' => 64,
'system' => 601,
'extension' => 80,
'image' => 81,
'progress' => 82,
'size' => 83,
'status' => 84,
'urlDownload' => 85,
'urlPreview' => 86,
'urlShow' => 87,
'width' => 88,
'height' => 89,
];
return $this->changeKeysPushEvent($result, $indexToNameMap);
}