• Как опубликовать сообщение в группе с помощью API?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Чтобы отправить сообщение в живую ленту нужно еще более изощренный метод.

    Подключаем модуль Соц.сети:
    CModule::IncludeModule("socialnetwork");

    Чтобы отправить сообщение в ленту, нужно чтобы существовал пост, который будет отправлен в ленту, поэтому создаем сначала пост:

    $arFields = array(
     "TITLE" => "Заголовок записи",
     "DETAIL_TEXT" => "Тело сообщения",
     "BLOG_ID" => 1, //ID отправителя
     "AUTHOR_ID" => 1, //ID блога, в котором будет запись
     "DATE_PUBLISH" => '11.02.2014 09:08', // дада
     "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, // Читаем в API
     "ENABLE_TRACKBACK" => 'N',
     "ENABLE_COMMENTS" => 'Y'
    );


    При успешном добавлении ($ID = CBlogPost::Add($arFields);) получим ID blogPost записи

    Затем необходимо отправить это сообщение в ленту, для нам нужен фрагмент кода (заменить соответствующим образом):

    $arEvent = array (
    	'EVENT_ID'     => 'blog_post',
    	'=LOG_DATE'    => 'now()',
    	'TITLE_TEMPLATE' => '#USER_NAME# добавил(а) сообщение "#TITLE#" в блог',
    	'TITLE'    => "Заголовок записи",
    	'MESSAGE'  => "Текст записи",
    	'TEXT_MESSAGE'  => "Текст записи",
    	'MODULE_ID'     => 'blog',
    	'CALLBACK_FUNC' => false,
    	'SOURCE_ID'     => $ID,
    	'ENABLE_COMMENTS'  => 'Y',
    	'RATING_TYPE_ID'   => 'BLOG_POST',
    	'RATING_ENTITY_ID' => $newID,
    	'ENTITY_TYPE' => 'U',
    	'ENTITY_ID'   => '1',
    	'USER_ID'     => '1',
    	'URL' => '/company/personal/user/1/blog/'.$ID.'/',
    );


    Создаём запись в ленте через: CSocNetLog::Add, на выходе получаем eventID (в случае успеха)

    Если все прошло хорошо, то выставляем права на пост (в премере отправляем ВСЕМ ПОЛЬЗОВАТЕЛЯМ G3)

    // Выдает права
    CSocNetLogRights::Add ( $eventID, array ("G3") );
    // Отправляет уведомление о новом сообщении
    CSocNetLog::SendEvent ( $eventID, 'SONET_NEW_EVENT' );


    Радуемся =)

    Все параметры получаются по средствам GetList например.
    Ответ написан
    4 комментария
  • Битрикс24 Коробочная версия, как реализровать через PHP код создание события - напоминания в календаре на опреденно число и время?

    @elov4anin Автор вопроса
    Frontend developer
    Ребят всем спасибо за ответы, но решил по другому выкладываю код если кому нибудь понадобиться
    //Устанавливаем дело-звонок и напоминание для сделки
                            $arFieldsDelo = array(
                                'TYPE_ID' => CCrmActivityType::Call,
                                'PROVIDER_ID' => 'VOXIMPLANT_CALL',
                                'ASSOCIATED_ENTITY_ID' => $_GET['deal'],
                                'SUBJECT' => "Тема",
                                'COMPLETED' => 'N',
                                'RESPONSIBLE_ID' => "ID отвественного",
                                'NOTIFY_TYPE' => \CCrmActivityNotifyType::Min,
                                'NOTIFY_VALUE' => 20,                            
                                'DESCRIPTION' => "Описание",
                                'START_TIME' => $_GET['datetime'],
                                'END_TIME' => $_GET['datetime'],
                                'PRIORITY' => CCrmActivityPriority::Medium,
                                'AUTHOR_ID' => $_GET['assigned'],
                                'ORIGIN_ID' => 'XYZ_1',
                                'DIRECTION' => CCrmActivityDirection::Outgoing,
                                'OWNER_ID' => $_GET['deal'],
                                'OWNER_TYPE_ID' => CCrmOwnerType::Deal,
                            );
    
                            $arComms = array(
                                           array(
                                              'ID' => 0,
                                              'TYPE' => 'PHONE',
                                              'VALUE' =>  $_GET['contactTel'],
                                              'ENTITY_ID' => $_GET['deal'],
                                              'ENTITY_TYPE_ID' => 'DEAL'
                                           )
                                        );
    
                            $ID = CCrmActivity::Add($arFieldsDelo, false, true, array('REGISTER_SONET_EVENT' => false));
                               
                            if($ID > 0)
                            {
                                //сохраняем дело в календарь
                               CCrmActivity::SaveCommunications($ID, $arComms, $arFieldsDelo, true, false);
                               
                            }
                            
                           }
    Ответ написан
    Комментировать