我有一个在debian wheezy上运行的nginx服务器.我有工作OTRS安装.但是我们旧的perl-fcgi包装器干扰了其他一些重要的过程,所以我们决定选择fcgiwrap包:http://www.haschmi.de/de/otrs/otrs-on-nginx.html
所以我删除了旧的包装器并安装了新的包装器.旧包装有了
fastcgi_pass 127.0.0.1:8999;
Run Code Online (Sandbox Code Playgroud)
和新的
fastcgi_pass unix:/var/run/fcgiwrap.socket;
Run Code Online (Sandbox Code Playgroud)
这是完整的配置
server {
listen ip:80;
server_name support.test.com;
root /opt/otrs/var/httpd/htdocs;
index index.html;
location /otrs-web {
gzip on;
alias /opt/otrs/var/httpd/htdocs;
}
location ~ ^/otrs/(.*\.pl)(/.*)?$ {
#try_files $uri =404;
gzip off;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME /opt/otrs/bin/fcgi-bin/$1;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri; …Run Code Online (Sandbox Code Playgroud) 我尝试与otrs-ticketsystem进行交互,以制作一些图片并计算一些统计数据。我想这样做haskell-我使用了包装soap。
忽略导入语句的代码非常简单,我创建了一个带配置文件的SOAP-Transport soap.cfg(请参见下文)。然后构造SOAP-Body并使用调用Web服务"Dispatch"。
{-# LANGUAGE OverloadedStrings #-}
import Network (withSocketsDo)
import Network.SOAP
import Network.SOAP.Transport.HTTP
import Text.XML.Writer
import Text.XML.Stream.Parse as Parse
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.ByteString.Lazy.Char8 as BS
import Data.Configurator (load, Worth(Required))
main :: IO ()
main = withSocketsDo $ do
transport <- confTransport "soap" =<< load [Required "./src/SOAP/soap.cfg"]
let body = do element "TicketObject" ("TicketSearch" :: Text)
element "OwnerID" ("owner" :: Text)
xmlresult <- invokeWS transport "#TicketObject" …Run Code Online (Sandbox Code Playgroud) 向下滚动@ OTRS管理员文档:在这里您可以找到搜索票证操作的curl语句.
curl "http://localhost/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket?UserLogin=agent&Password=123&Queue=Postmaster"
Run Code Online (Sandbox Code Playgroud)
有人知道如何在一个curl语句中搜索2个不同的队列吗?是的我可以做2个卷曲请求,但是如果可能的话,一个请求会更好.
我尝试了一些URL查询参数数组的东西,但没有任何作用,例如
//just second Queue is used!!!
curl "http://localhost/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket?UserLogin=agent&Password=123&Queue=Postmaster&Queue=Postmaster2"
//
curl "http://localhost/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket?UserLogin=agent&Password=123&Queue[]=Postmaster&Queue[]=Postmaster2"
//
curl "http://localhost/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket?UserLogin=agent&Password=123&Queue=Postmaster,Postmaster2"
//
curl "http://localhost/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket?UserLogin=agent&Password=123&Queue=[Postmaster,Postmaster2]"
Run Code Online (Sandbox Code Playgroud) 我们正在使用这个正则表达式来过滤主题中的票号。
这是我们使用的正则表达式: \\[\\#(.*)\\]
主题通常是这样的: "[#20160708-0020] Hello blah blah"
正则表达式得到我们"20160708-0020",我们可以进一步使用它。
公司里有人开始写这样的邮件: "[#20160708-0020] Hello [SQL] blah blah"
所以正则表达式会让我们知道"20160708-0020] Hello [SQL"这显然是不正确的。
有没有办法告诉正则表达式在第一场比赛后停止?谢谢!:)
我正在尝试使用Perl(OTRS)编写的服务的Web API.数据以JSON格式发送.
JSON结构中的一个字符串值包含一个井号,显然在JSON中用作注释字符.这会导致解析错误:
解析JSON字符串时意外结束字符串
我找不到如何转义字符以便成功解析字符串.明显的斜线逃逸导致:
字符串中的非法反斜杠转义序列
任何想法如何逃脱它?
更新: 我尝试使用的URL看起来像这样(简化但仍导致错误):
http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket#100000] Test Ticket from OTRS"}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Cent OS 6.5(最终版)上安装OTRS Help Desk 3.3.2.初始安装(yum install)进展顺利.下一步是重新启动httpd,但重启仍然失败.我没有在控制台中收到错误,但是当我检查错误日志时,我可以看到它每次失败都是出于同样的原因:
[Mon Dec 09 15:59:42 2013] [error] Can't locate
/opt/otrs/scripts/apache2-perl-startup.pl in @INC
(@INC contains: /usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5 . /etc/httpd) at (eval 2) line 1
[Mon Dec 09 15:59:42 2013] [error] Can't load Perl file:
/opt/otrs/scripts/apache2-perl-startup.pl
for server vsvrotrsdev.companydomain.com:0, exiting...
Run Code Online (Sandbox Code Playgroud)
我是Linux/Apache/OTRS菜鸟,所以我不知道如何处理错误.到目前为止,搜索并没有产生太大的影响.
编辑
我发现了一些@INC关于它是什么以及如何工作的帖子.我已经尝试将/ opt/otrs/scripts添加到@INC,但这似乎没有帮助.
我需要将OTRS 3.3的SOAP请求发送到我正在实现的WCF服务,当OTRS中的故障单被创建,更改或删除时.我需要它来发送包含有关已更改票证的信息的电子邮件.因此,这个SOAP请求包含有关票证的完整信息会很好.
我在谷歌搜索后可以找到的是OTRS具有调用者机制,可以配置为在触发期望事件时调用SOAP服务,包括创建,更改或删除票证.
但是当我进入Admin - > Web Services - > My service时,OTRS下的Add Invoker下拉列表中没有调用者作为请求者部分.
接下来我应该做什么来附加一个调用SOAP请求的调用者以及有关已更改票证的信息?或者最新的OTRS版本不包含开箱即用的调用程序,我必须使用Perl编程语言自己实现它?
有人知道一个好的Java客户端OTRS或者我可以指向一些信息页面来编写我自己的客户端吗?我对OTRS完全不熟悉,但我听说有一个外部接口(Webservice)来完成大部分OTRS与java REST客户端的工作.
有人可以链接一些信息页面吗?也许一个例子如何使用OTRS创建REST WS以及一些curl示例如何使用它?
已找到链接:
我用这个yaml文件创建了一个web服务:
---
Debugger:
DebugThreshold: debug
TestMode: '0'
Description: The description of WS
FrameworkVersion: 4.0.5
Provider:
Operation:
TicketGet:
Description: ''
MappingInbound:
Type: Simple
MappingOutbound:
Type: Simple
Type: Ticket::TicketGet
Transport:
Config:
KeepAlive: ''
MaxLength: '20000000'
RouteOperationMapping:
TicketGet:
Route: /Ticket/:TicketID
Type: HTTP::REST
RemoteSystem: ''
Requester:
Transport:
Type: ''
Run Code Online (Sandbox Code Playgroud)
然后我尝试卷曲到WS:
curl -i -H "Content-Type: application/json" -d {UserLogin:"user",Password="userpass",Ticket={Title="test"}} http://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Ticket/1
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我目前有以下通过调用链接 /otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket 更新 OTRS 票证
它工作得很好,但是当票证也更新时,我怎样才能让它向客户发送电子邮件?
var body = JSON.stringify ({
"Ticket":{
"StateID":params.state},
"Article":{
"ArticleTypeID":params.noteType,
"Subject":params.subject,
"Body":params.bodyText,
"ContentType":params.contentType
}
}
);
//Build the full URL for our webservice query.
var LoginURL = authenticate.URL + "/" +
TicketID +
"?UserLogin=" + authenticate.UserLogin +
"&Password=" + authenticate.Password;
//Perform the actual work. As well as the URL of the webservoce
var client = new apiclient.ApiClient({ serverid: this.serverid });
var resp = client.invoke( "formutils", "httpRequest", {
"url": LoginURL,
"method": "POST",
"headers": {
"ContentType":"application/json"},
"body": …Run Code Online (Sandbox Code Playgroud)