Поддержка серверов

CIMMessenger::PreparePushForChat: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=360509

//    CIMMessenger::PreparePushForChat()
//    /bitrix/modules/im/classes/general/im_messenger.php:3762

    public static function PreparePushForChat($params)
    {
        $pushText = self::PrepareMessageForPush($params['params']);
        unset($params['params']['message']['text_push']);

        $chatTitle = substr(htmlspecialcharsback($params['params']['chat'][$params['params']['chatId']]['name']), 0, 32);
        $chatType = $params['params']['chat'][$params['params']['chatId']]['type'];
        $chatAvatar = $params['params']['chat'][$params['params']['chatId']]['avatar'];
        $chatTypeLetter = $params['params']['chat'][$params['params']['chatId']]['message_type'];


        if ($params['params']['system'] == 'Y' || $params['params']['message']['senderId'] <= 0)
        {
            $avatarUser = '';
            $userName = '';
        }
        else
        {
            $userName = \Bitrix\Im\User::getInstance($params['params']['message']['senderId'])->getFullName(false);
            $avatarUser = \Bitrix\Im\User::getInstance($params['params']['message']['senderId'])->getAvatar();
            if ($avatarUser && strpos($avatarUser, 'http') !== 0)
            {
                $avatarUser = \Bitrix\Im\Common::getPublicDomain().$avatarUser;
            }
        }

        if ($params['params']['users'][$params['params']['message']['senderId']])
        {
            $params['params']['users'] = Array(
                $params['params']['message']['senderId'] => $params['params']['users'][$params['params']['message']['senderId']]
            );
        }
        else
        {
            $params['params']['users'] = Array();
        }

        if ($chatAvatar == '/bitrix/js/im/images/blank.gif')
        {
            $chatAvatar = '';
        }
        else if ($chatAvatar && strpos($chatAvatar, 'http') !== 0)
        {
            $chatAvatar = \Bitrix\Im\Common::getPublicDomain().$chatAvatar;
        }

        unset($params['extra']);

        array_walk_recursive($params, function(&$item, $key)
        {
            if (is_null($item))
            {
                $item = false;
            }
            else if ($item instanceof \Bitrix\Main\Type\DateTime)
            {
                $item = date('c', $item->getTimestamp());
            }
        });

        $result = Array();
        $result['module_id'] = 'im';
        $result['push']['type'] = $chatType;
        $result['push']['tag'] = 'IM_CHAT_'.intval($params['params']['chatId']);
        $result['push']['sub_tag'] = 'IM_MESS';
        $result['push']['app_id'] = 'Bitrix24';
        $result['push']['message'] = ($userName? $userName.': ': '').$pushText;
        $result['push']['advanced_params'] = array(
            "group"=> $chatType == 'lines'? 'im_lines_message': 'im_message',
            "avatarUrl"=> $chatAvatar? $chatAvatar: $avatarUser,
            "senderName" => $chatTitle,
            "senderMessage" => ($userName? $userName.': ': '').$pushText,
            "senderCut" => strlen($userName? $userName.': ': ''),
            "data" => self::PrepareEventForPush($params['command'], $params['params'])
        );
        $result['push']['params'] = Array(
            'TAG' => 'IM_CHAT_'.$params['params']['chatId'],
            'CHAT_TYPE' => $chatTypeLetter? $chatTypeLetter: 'C',
            'CATEGORY' => 'ANSWER',
            'URL' => SITE_DIR.'mobile/ajax.php?mobile_action=im_answer',
            'PARAMS' => Array(
                'RECIPIENT_ID' => 'chat'.$params['params']['chatId']
            ),
        );

        return $result;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение