Я провел несколько дней, пытаясь создать или обновить динамическое поле заявки в OTRS через SOAP, но, к сожалению, безуспешно. Я в основном перепробовал все варианты команд:
$response = $soapclient->__soapCall("Dispatch", array("user", "password",
"TicketObject", "TicketUpdate",
"DynamicField", array("name" => "fieldName", "value" => "Example"));
Я склонен полагать, что это невозможно (версия OTRS 5.0.14). Я ошибся? Есть ли способ обновить динамические поля заявки через SOAP и php?
В конце концов мне удалось заставить его работать. Я публикую здесь свое решение.
Во-первых, мы должны исправить (ошибку?) В файле OTRS bin / cgi-bin / rpc.pl и добавить в подпрограмму «dispatch» эти две строки:
$CommonObject{DynamicField} = $Kernel::OM->Get('Kernel::System::DynamicField');
$CommonObject{TicketDynamicObject}=$Kernel::OM->Get('Kernel::System::DynamicFieldValue');
Затем мы должны получить идентификатор динамического поля нужного динамического поля:
$dynfield = $soap_client->__soapCall("Dispatch", array($user, $pass,
"DynamicField", "DynamicFieldGet",
"Name", $dynamic_field_name));
Установите динамическое поле для заявки (при условии, что заявка с ticketId уже существует) со значением $:
$result = $soap_client->__soapCall("Dispatch", array($user, $pass,
"TicketDynamicObject", "ValueSet",
"FieldID", $dynfield->ID,
"ObjectID", $ticketId,
"Value", array("0" => array("ValueText" => (string) $value)),
"UserID", $userId,
));
Если заявка создана, мы можем впоследствии установить динамическое поле для этой заявки.
Кто-нибудь знает, почему эти две строки отсутствуют в OTRS? Будет ли это исправлено в новой версии OTRS?
Других решений пока нет …