API, планировщик и (multiple actions)

~Storm~

New member
Всем привет! Подскажите пожалуйста, как правильно добавить в планировщик задание, выполняющее несколько действий, используя API. С одиночными проблем нет, все добавляется, редактируется и отрабатывает. Но вот с '(multiple actions)' - проблема. Планировщик ни в какую не хочет видеть переводы строк в xml и лепит все команды в одну, разделяя их пробелами. Вот пример задания:
Код:
<item EnabledEvent="True" UseDate="False" EveryYear="False" Imm="False" Above="False" FileName="scheduler on
 clr break
 next
 next" MuteLev="50" DelPrev="True" DoNotRunIfStopped="False" bRepeat="False" nRepeatPer="10" DoNotMarkAsScheduled="False" nRepeat="1" RepeatLimit="False" TimeToStart="10:55:31" NextRunStr="22:09:00" Shuffle="False" PausePlaylist="False" UseWeeks="False" Enqueue="False" DelTaskAction="0" DelTaskUseDate="False" TaskName="ResumePlay" ClearMainPlaylist="False" UseDaysOfWeek="True" Hours="000000000000000000000000" Minutes="0" Seconds="0" TimeType="0" TaskNameAsTitle="False" IntTimeToStart="0,45522655093373" ItemImageIndex="62" FontColor="-16777208" BackColor="-16777211" GroupName="" DTMFOn="False" DTMFString="" DTMFOnly="False" DTMFExitOn="False" DTMFExitString="" MaxTimeWaitOn="False" MaxTimeWaitSec="0" MaxTimeWaitAction="0" UseFillers="False" FillersSource="" FillersRecurse="True" FillerMaxAmount="120" Id="QBEQJHVWDPKUSWQRWVOA" Days="1111111" Weeks="00000" Time="2018-06-21 22:09:00" DelTaskTime="2018-06-21 00:00:00"/>
Пробовал в параметрах запроса менять переводы строк на %0A%0D - не помогает. Замена на &#10;&#13 вообще ломает задание, воспринимается только первая команда, а все остальные параметры в xml просто обрезаются. Уже весь мозг сломал...
 

Вложения

  • SheduleAfterUpdate.png
    SheduleAfterUpdate.png
    80,3 КБ · Просмотры: 435
Редактировать XML нужно с использованием библиотеки, тогда переносы строк будут корректно переведены в XML. Перенос строк стандартный для Windows - \r\n (#13#10).
 
Какой именно библиотеки? XML получаю, редактирую посредством PHP, используя SimpleXML. Параметры менял вручную уже после того, как ничего не получалось. Если не затруднит, поделитесь кусочком кода, который отправляет корректный XML планировщику.
Заранее спасибо!
 
~Storm~ сказал(а):
Какой именно библиотеки? XML получаю, редактирую посредством PHP, используя SimpleXML.
Да, так и нужно - из вашего сообщения показалось, что вы вручную создаете XML, а это обычно приводит к ошибкам или некорректной работе. Через SimpleXML должно работать через обычное присваивание вроде $event->Filename = $fn, где $fn это строка с несколькими командами, разделенными переводами строк \r\n. Что происходит, если вы получите задание с несколькими действиями через API и сохраните его без изменений, корректно ли оно сохраняется?
 
В первом сообщении - задание, полученное из планировщика через API. На скрине - оно же, залитое обратно без изменений. Как видим, сохраняется некорректно, хотя отладчик показывает правильный $event и переносы строк в Filename в момент отправки присутствуют. Однако в планировщике они опять таки волшебным образом превращаются в пробелы. Магия какая-то...
 
Вохможно, это ошибка в программе, проверим.
 
Ошибка не воспроизводится, задание с несколькими действиями корректно загружается и сохраняется через API.

Пример кода для PHP с использованием SimpleXML: редактируется первое задание - устанавливаются 2 действия "test1" и "test2" после чего задание загружается в RadioBOSS.

Код:
$a = file_get_contents('http://.../?pass=&action=schedule&type=list');
$x = simplexml_load_string($a);
$eid = $x->item['Id'];

$x->item['FileName'] = "test1\r\ntest2";

$ev = $x->item->asXML();
$exml = '<?xml version="1.0" encoding="utf-8"?>' . "\n" . $ev;
file_get_contents("http://.../?pass=&action=schedule&type=update&event=".urlencode($exml)."&id=$eid");
 
Назад
Верх