【问题标题】:OTRS CreateTicketOTRS 创建票
【发布时间】:2018-03-15 16:49:47
【问题描述】:

我正在尝试创建 OTRS 票证。

Web 服务类型HTTP:REST

var data = {
  Ticket: {
    Title: "123123",
    TypeID: "2",
    QueueID: "1",
    State: "open",
    PriorityID: "2",
    ServiceID: "1"
  },
  Article: {
    Subject: "123123",
    Body: "Trololo",
    ContentType: "text/plain; charset=utf8"
  },
  SessionID: 123
};

$.ajax({
  url: url,
  type: 'POST',
  dataType: 'json',
  data: JSON.stringify(data),
  success: function(res) {
    ...
  },
  error: function(res) {
    ...
  }
});

提交后出现错误:Could not read input data.

如果我尝试将方法更改为 GET 并将数据类型更改为 JS obj 我还有另一个

error:
ErrorCode:"TicketCreate.MissingParameter"
ErrorMessage:"TicketCreate: Ticket parameter is missing in or not valid!"

我做错了什么?

【问题讨论】:

    标签: javascript rest otrs


    【解决方案1】:

    这是因为 CORS;这基本上意味着您不允许从浏览器向任何 URL 发送 POST 请求。如果您想被允许这样做,您必须更改您的 Web 服务器配置。

    顺便说一下,您很可能希望从服务器端发送请求到 OTRS REST API,而不是从客户端。如果您从客户端发送它,您还需要在客户端上存储访问令牌或类似的东西,这在大多数情况下是一个坏主意。这样做的一个很好的副作用是它也可以解决您的 CORS 问题。

    有关 CORS 的解释,请查看:

    How does Access-Control-Allow-Origin header work?

    对于为什么在某些情况下纯 JS 可以在 jQuery 不工作的情况下工作的具体解释:

    A CORS POST request works from plain javascript, but why not with jQuery?

    【讨论】:

      【解决方案2】:

      你的有效载荷似乎很容易。 :-D OTRS 的 REST 接口有限,不太好用。例如,如果您想通过 curl 创建票证,则有效负载需要看起来像这样:

      curl -X POST -H "Content-Type: application/json" --data '{"UserLogin" :“ZnunyAgent”,“密码”:“znuny4otrs”,“票证”:{“标题”:“一些 工单标题","Queue" : "Postmaster","State" : "new","PriorityID" : “3”,“客户用户”:“znuny@znuny.com”},“文章”:{“主题”:“一些 主题”,“正文”:“某些正文”,“内容类型”:“文本/纯文本; charset=ISO-8859-15","MimeType" : "text/plain", "Charset" : “ISO-8859-15”}}' http://localhost/otrs/nph-genericinterface.pl/Webservice/1/TicketCreate

      如您所见,您需要注意/采用以下 Ajax 请求:

      1) 将用于身份验证的用户放入有效负载(或先创建用户会话)

      2) 使用正确的 url 和 url 中配置的 webserice id

      【讨论】:

        【解决方案3】:

        以下内容对我有用。

        我还为 CORS 添加了一个 Chrome 扩展程序来解决 localhost CORS 限制。

        var data =
        {
            "Ticket": {
                "Title": "Rest Create",
                "Type": "Support",
                "Queue": "{some queue here}",
                "State": "New",
                "Priority": "3 Important",
                "CustomerUser": "{some email here}"
            },
                "Article": {
                "Subject": "Rest Create",
                "Body": "Test",
                "ContentType": "text/plain; charset=utf8"
            }
        };
        
        
        $.ajax({
            url: "http://dev-otrs-1/otrs/nph-genericinterface.pl/Webservice/{CONNECTORNAME}/Ticket?UserLogin={USERNAME}&Password={PASSWORD}",
            type: "post",
            data: JSON.stringify(data),
            success: function (response) {
                console.debug(response);
            }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-19
          • 2017-01-17
          • 1970-01-01
          • 1970-01-01
          • 2020-06-02
          • 1970-01-01
          • 1970-01-01
          • 2016-11-12
          相关资源
          最近更新 更多