尝试创建商机时发生Vtiger Web服务API错误

问题描述

我正在尝试创建一个JavaScript处理程序以推送到vTiger CRM实例。我已经能够登录到Web服务,并且可以正常查询和执行其他功能,但是当我尝试在CRM中创建新的“机会”时遇到了障碍。

这是处理ajax帖子的代码部分:

this.create = function (module,data) {

    var postdata = {
        'operation': 'create','sessionName': sessionName,'elementType': module,'element': JSON.stringify(data)
    };

    $.ajax({
        url: vTigerRESTurl,type: 'POST',contentType: 'application/x-www-form-urlencoded',crossDomain: true,data: postdata,success: function (data) {
            console.log(data);
            return data;
        },error: function (errorText) {
            console.log("AJAX Error: " + JSON.stringify(errorText));
        }
    });
};

此POST的结果是以下错误

错误代码:“ MANDATORY_FIELDS_MISSING” 消息:“ potentialname没有值” 成功:错误

鉴于我要在数据中发送的元素是:

potentialname = Test08162020&potential_no = TEST&related_to = PRO + TEST + CO&closingdate = 00-00-0000&leadsource =-None-&sales_stage = Prospecting&assigned_user_id = 19x1&cf_704 =-None-

错误对我来说没有任何意义。因为该必填字段已提供给API。

我一直在根据我的编码不正确的理论进行研究,但是根据我已经找到的文档,这似乎是正确的。

为了确定起见,我尝试了多种不同的编码,例如$ .Param()或对JSON字符串执行URI编码,但是这两种方法都只会导致权限错误,这似乎是认的API无法理解发送的数据。

是否有人在使用vTiger Web服务方面有任何经验,或者有成功的例子说明他们如何使用Web服务处理记录?

vTiger实例的版本为5.4。

在此先感谢您提供的见解。

解决方法

因此,事实证明,当我使用$ .Param(data)编码数据时,会收到Missing必填字段消息。当我使用JSON.stringify(data)时,会收到拒绝访问的消息。

这两个消息实际上都是非常令人误解的,因为实际问题是我正在设置必填字段related_to = PRO + TEST + CO,而该字段实际上正在查找看起来像“ 11x4567”的vtiger客户帐户ID

所以解决方法是更改​​:

related_to = PRO + TEST + CO

收件人:

related_to = 11x4567

vTiger格式化其ID的方式是模块x ID,因此第11个模块(帐户)x帐户ID#。

希望这可以帮助其他遇到此问题的人继续前进。