我花了几天时间尝试通过SOAP在OTRS中创建或更新故障单的动态字段,但遗憾的是没有成功。我基本上尝试了所有命令的变体:
$response = $soapclient->__soapCall("Dispatch", array("user", "password",
"TicketObject", "TicketUpdate",
"DynamicField", array("name" => "fieldName", "value" => "Example"));
我倾向于认为这是不可能的(OTRS版本5.0.14)。我错了吗?有没有办法通过SOAP和php更新票证的动态字段?
答案 0 :(得分:0)
最后我设法让它发挥作用。我在这里发布我的解决方案。
首先,我们必须在OTRS文件bin / cgi-bin / rpc.pl中修复(一个错误?)并将这两行添加到“dispatch”子例程中:
$CommonObject{DynamicField} = $Kernel::OM->Get('Kernel::System::DynamicField');
$CommonObject{TicketDynamicObject}=$Kernel::OM->Get('Kernel::System::DynamicFieldValue');
然后我们必须获取所需动态字段的动态字段ID:
$dynfield = $soap_client->__soapCall("Dispatch", array($user, $pass,
"DynamicField", "DynamicFieldGet",
"Name", $dynamic_field_name));
使用$ value设置故障单的动态字段(假设已经存在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中修复?