1

我正在尝试通过OTRS 票务系统请求一些票务详细信息。我试过在网上搜索OTRS API中的 'TicketSearch()' 运算符,但没有运气

我知道 SOAP 连接很好,因为以下 'User' 对象和 'GetUserData()' 运算符正在响应有效结果和所有用户数据:

try {
 $result = $client->__soapCall("Dispatch", array($user, $pass, "UserObject", "GetUserData", "UserID" , 2));
}

现在,当我将该 SOAP 调用从用户搜索更改为票证搜索时,我得到了响应“NULL”。

try {
 $result = $client->__soapCall("Dispatch", array($user, $pass, "TicketObject", "TicketSearch",  "Result", array("ARRAY","HASH","COUNT"), "QueueIDs", 10, "StateType", "Open"));
}

这对我来说并不奇怪,因为我不确定如何将以下所需值转换为 SOAP 请求:

结果 => '数组' || '哈希' || '数数'

您可以在此处查看相应的API 文档,然后搜索“TicketSearch()”。任何有关解决该请求的帮助将不胜感激。我的最终目标是获得 10 号队列中的工单列表。

4

1 回答 1

2

首先,the||是 perl 中的逻辑或运算符。因此,您显示的文档片段表示 COUNT 或 ARRAY 或 HASH;你必须选择一个。如果您使用 COUNT,您将获得符合您的搜索条件的门票数量。

其次,您需要提供进行搜索的代理的 UserID,如果您没有(因为您的脚本用于某种集成),您始终可以使用 ID 号 1;它可以访问所有队列。

最后 QueueIDs 参数采用队列 ID 数组;因此您可以使用单个参数搜索多个队列 ID。

$result = $client->__soapCall("Dispatch", array($user, $pass,
    "TicketObject", "TicketSearch",
    "UserID",    1, 
    "Result",    "ARRAY",
    "QueueIDs",  array(1), 
    "StateType", "Open"
));

请注意,RPC 接口有点低级,它暴露了原始的 OTRS API。它不是很精巧,有时您需要做很多工作才能获得所需的数据,另一方面它非常强大。

“新”接口是基于 WSDL 的 Web 服务接口;这更加封装和清洁。它有两个缺点,1;PHP 不像 .NET 或 Java 那样支持使用 WSDL,并且 2;它只公开了 OTRS API 的一小部分,仅用于创建/搜索/修改工单和处理常见问题解答(知识库)。诸如添加/删除队列、服务或客户之类的东西(尚)不可用。

于 2014-01-15T19:49:00.700 回答