OTRS Web服务作为请求方测试



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

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

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

我的Web服务目前只有一个方法"create",它只返回true进行测试。

然而,我从Test.pm 中得到了以下内容

"没有TicketNumber(2014-09-02 09:20:42,错误)"

以及以下来自TestSimple.pm

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

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

有没有人有任何样本调用程序,我可以看看如何设置它?

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

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

我也在为类似的一组需求而挣扎。我也从来没有用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"部分中指定的Invoker名称对应于将被调用的WS方法。因此,如果您有一个名为"create"的方法的WS接口,只需将Invoker也命名为"create"即可。

就动态场的收集而言,对不起,在这一点上还帮不了你。

干杯

最新更新