Публикация в живую ленту
 
Публикация в живую ленту
09.09.2014 09:05:52
Разработка
1026
Иногда нам нужно из какого-нибудь модуля сделать пост в живую ленту. Рассмотрим по шагам, как это делается.

1. Идем Админка->Сервисы->Внешние источники данных->Публикация в живую ленту->Добавить подключение (POST запрос).

2. Если нужно это создавать через АПИ из модуля, то смотрим код, который я приложил ниже. Важно учесть, что после создания подключения нужно его обновить, видимо чтобы создался хеш, иначе работать не будет.

<? CModule::IncludeModule("xdimport"); 
$ob = new CXDILFScheme; 
$arFields = array( 
"ACTIVE" => "Y", 
"ENABLE_COMMENTS" => "Y", 
"SORT" => "500", 
"NAME" => GetMessage("CONGRATS"), 
"TYPE" => "POST", 
"LID" => "s1", 
"ENTITY_TYPE" => "P", 
"EVENT_ID" => "data", 
"ENABLE_COMMENTS"=>"Y", 
"IS_HTML"=>"Y" ); 
$res = $ob->Add($arFields); 
if ($res > 0) 
     $res = $ob->Update($res, array("ENTITY_ID" => $res)); 
if ($res > 0) { 
     $obSchemeRights = new CXDILFSchemeRights(); 
     $obSchemeRights->Set( $res, array("U" => array(1)), 
      array( "ENTITY_TYPE" => "P", "ENTITY_ID" => $res, 
      "EVENT_ID" => "data" ) ); } 
?>
			
3. Название POST запроса будет фигурировать в живой ленте вот тут

Screenshot_2.jpg

4. Получаем адрес и хеш.

Screenshot_1.jpg

5. Далее создаем POST запрос по этому адресу, и используем полученный хеш. Можно получать этот хеш по API, но поскольку мы не владеем уникальным идентификатором что это именно наше подключение (за исключением названия на русском языке), то можно при создании сохранять хеш в файле, и его инклудить.

Пример POST запроса из кода:

<? 
$data = array( 
      'title' => $arFields["PROPERTIES"]["TITLE"]["VALUE"], 
      'message' => $arFields["DETAIL_TEXT"], 
      'hash'=>$hash 
); 
$postdata = http_build_query($data); 
$options = array(
  'http' =>   array( 
     'method' => 'POST', 
     'header' => 'Content-type: application/x-www-form-urlencoded', 
     'content' => $postdata   
   ) 
); 
$context = stream_context_create($options); 
$result = file_get_contents(
'https://'.SITE_SERVER_NAME.'/bitrix/tools/xdi_livefeed.php',
 false, 
$context); 
?>
			

Загрузка...