3

我是 OTRS (3.2) 的新手,也是 PERL 的新手,但我被赋予了设置 OTRS 的任务,以便它可以调用我们的远程 Web 服务,以便在设置票证时在我们端创建记录作为“关闭”。我设置了各种动态字段,以便客户服务代表可以填写其他数据,这些数据将与工单详细信息一起传递到 Web 服务调用中。当工单“关闭”时,我无法触发 Web 服务调用,但我确实在“优先级”更改时触发了它,所以我现在只是使用它来测试 Web 服务。我只是在使用 OTRS 中包含的 Test.pm 和 TestSimple.pm 文件。

当我查看 Webserice 的调试器时,我可以看到正在进行调用:

   $VAR1 = {
      'TicketID' => '6'
   };

我的网络服务目前只有一种方法“create”,它只返回 true 进行测试。

但是我从 Test.pm 得到以下信息

“没有票号(2014-09-02 09:20:42,错误)”

以及来自 TestSimple.pm 的以下内容

“SOAP 调用中的错误:在 /TARGET/SHARE/var/otrs/Kernel/GenericInterface/Transport/HTTP/SOAP.pm 第 578 行找不到 404(2014-09-02 09:20:43,错误)

我在谷歌上花了无数个小时,但在这方面找不到任何东西。我能找到的只是 Test.pm 和 TestSimple.pm 的代码,但没有什么能真正帮助我根据需要创建自定义调用程序并在 OTRS 中配置 Web 服务以使其工作。

有没有人可以查看任何示例调用程序以了解如何设置它?

基本上我需要将票证信息与我的自定义动态字段一起传递给我的网络服务。从那里我可以创建我的记录并进行任何处理。我不确定如何设置 Invoker 以传递必要的票证字段和动态字段,以及如何使其调用我的远程 Web 服务中的特定方法。

我想让 Test.pm 和 TestSimple.pm 工作是第一步,然后我可以根据自己的需要修改它们。我根本没有使用过 PERL,因此非常感谢任何帮助。

4

1 回答 1

0

我也在为类似的要求而苦苦挣扎。我也从未在 PERL 中编程过,但我至少可以告诉您,Test.pm 中的“Got no TicketNumber”是来自 PrepareRequest 方法,您可以在其中看到以下代码块:

# we need a TicketNumber
if ( !IsStringWithData( $Param{Data}->{TicketNumber} ) ) {
   return $Self->{DebuggerObject}->Error( Summary => 'Got no TicketNumber' );
}

您应该将所有对 TicketNumber 的引用更改为 TicketID,或者删除任何验证(也有映射到 ReturnedData 变量)。

在您的 WS 接口上调用特定方法非常简单(但文档很少)。您在 Web 服务配置的“OTRS 作为请求者”部分中指定的调用者名称对应于将被调用的 WS 方法。因此,如果您的 WS 接口带有一个名为“create”的方法,只需将 Invoker 命名为“create”。

就动态领域的收集而言,还不能帮助你,对不起。

干杯

于 2014-09-04T12:22:08.113 回答