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

    Я столкнулся с тем что пост создавался но не отображался в ленте, что было связано с правами. В итоге пришел с такому варианту:
    function postToGroup($blogid, $authorid, $message_title, $message_body){
        CModule::IncludeModule("blog");
        $arFields = array (
          'TITLE' => $message_title,
          'DETAIL_TEXT' => $message_body,
          'DETAIL_TEXT_TYPE' => 'text',
          'DATE_PUBLISH' => ConvertTimeStamp(time() + CTimeZone::GetOffset(), "FULL"),
          'PUBLISH_STATUS' => 'P',
          'PATH' => '/company/personal/user/4438/blog/#post_id#/',
          'URL' => 'u4438-blog-s11',
          'BACKGROUND_CODE' => false,
          'PERMS_POST' => 
          array (
          ),
          'PERMS_COMMENT' => 
          array (
          ),
          'MICRO' => 'N',
          'CATEGORY_ID' => '',
          'SOCNET_RIGHTS' => 
          array (
            0 => 'SG48',
          ),
          'UF_BLOG_POST_FILE' => 
          array (
            0 => '',
          ),
          'UF_BLOG_POST_IMPRTNT' => '0',
          'UF_IMPRTANT_DATE_END' => null, //  Bitrix\Main\Type\DateTime::__set_state
          'UF_BLOG_POST_VOTE' => 'n0',
          'SEARCH_GROUP_ID' => '1',
          '=DATE_CREATE' => 'now()',
          'AUTHOR_ID' => $authorid,
          'BLOG_ID' => $blogid,
        );
    
        $ID = CBlogPost::Add($arFields);
    
        $arEvent = array (
          'EVENT_ID' => 'blog_post',
          '=LOG_DATE' => 'now()',
          'TITLE_TEMPLATE' => '#USER_NAME# добавил(а) сообщение "#TITLE#" в блог',
          'TITLE' => $message_title,
          'MESSAGE' => $message_body,
          'TEXT_MESSAGE' => $message_body,
          'MODULE_ID' => 'blog',
          'CALLBACK_FUNC' => false,
          'SOURCE_ID' => $ID,
          'ENABLE_COMMENTS' => 'Y',
          'RATING_TYPE_ID' => 'BLOG_POST',
          'RATING_ENTITY_ID' => $ID,
          'ENTITY_TYPE' => 'U',
          'ENTITY_ID' => $authorid,
          'URL' => '/company/personal/user/4438/blog/'.$ID.'/',
          'USER_ID' => $authorid,
          'TAG' => 
          array (
          ),
        );
    
        $logID = CSocNetLog::Add($arEvent, false);
    
        $rights = array (
          0 => 'OSG48_L',
          1 => 'SG48',
          2 => 'SG48_A',
          3 => 'SG48_E',
          4 => 'SG48_K',
          5 => 'U4438',
          6 => 'SA',
        );
    
        if (intval($logID) > 0)
        {
            CSocNetLog::Update($logID, array('TMP_ID' => $logID));
            CSocNetLogRights::Add($logID, $rights);
            CSocNetLog::SendEvent($logID, 'SONET_NEW_EVENT');
        }
    }
    Ответ написан
    Комментировать