@polupanov_ai

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

Вопрос актуален для лиц имеющим опыт в работе с api битрикс и модулями входящие в редакцию Корп. портал.

Нужно опубликовать сообщение в группе социальной сети с помощью api. Покопавшись я понял что сообщения в группе - есть сообщения блога пользователя. Блог при помощи CBlogPost::Add() создать получилось, а вот как сделать так что-бы этот блог отображался в ленте сообщений группы не могу понять.

При помощи CBlogPost::GetList() получилось вывести список сообщений и там есть сообщения которые уже есть в ленте группы и те которые я создал с помощью CBlogPost::Add().
  • Вопрос задан
  • 1182 просмотра
Решения вопроса 1
gromdron
@gromdron
Bitrix developer
Чтобы отправить сообщение в живую ленту нужно еще более изощренный метод.

Подключаем модуль Соц.сети:
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 например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы