web-services - OTRS Webservice 作为请求者测试

标签 web-services perl otrs

我是 OTRS (3.2) 的新手,也是 PERL 的新手,但我被赋予了设置 OTRS 的任务,以便它调用我们的远程网络服务,以便在我们这边创建记录门票设置为“已关闭”。 我设置了各种动态字段,以便客户服务代表可以填写其他数据,这些数据将连同工单详细信息一起传递到 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 调用错误:404 Not Found at/TARGET/SHARE/var/otrs/Kernel/GenericInterface/Transport/HTTP/SOAP.pm line 578 (2014-09-02 09:20:43, error)

我已经在 Google 上花费了无数个小时,但在这方面找不到任何东西。我所能找到的只是 Test.pm 和 TestSimple.pm 的代码,但没有什么能真正帮助我根据需要创建自定义调用程序并在 OTRS 中配置 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 接口(interface)上调用特定方法非常简单(但文档很少)。您在 Web 服务配置的“OTRS 作为请求者”部分中指定的调用者名称对应于将调用的 WS 方法。因此,如果您的 WS 接口(interface)带有一个名为“create”的方法,只需将 Invoker 命名为“create”即可。

关于动态场的收集,暂时还帮不了你,抱歉。

干杯

关于web-services - OTRS Webservice 作为请求者测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628871/

相关文章:

web-services - Web API 和 Web 服务有什么区别?

java - 如何创建简单的网络服务

php - 收集、管理数据并通过 API 提供

arrays - 如何在 perl 中将数组值拆分为单独的数组

perl - 为什么是 Perl 的 $?为 fork 进程的退出代码返回错误的值?

database - 通过数据库删除队列

nginx/fcgiwrapper 错误 "Cannot get script name, ..."

mysql - OTRS fatal error

json - 如何在ajax调用中压缩web服务响应json

perl - 如何限制perl中的子进程?