尝试创建机会时 Vtiger Web 服务 API 错误

Vtiger Web Services API error when trying to create Opportunity

我正在尝试创建一个 javascript 处理程序来推送到 vTiger CRM 实例。我已经能够登录到网络服务并且可以很好地查询和其他功能,但是当我尝试在 CRM 中创建新的 'Opportunity' 时遇到了障碍。

这是处理 ajax post 的代码部分:

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 的结果是以下错误:

error: code: "MANDATORY_FIELDS_MISSING" message: "potentialname does not have a value" success: false

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

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 网络服务的经验,或者是否有成功的例子说明他们如何处理使用网络服务创建记录?

vTiger 实例是 5.4 版本。

提前感谢您提供的任何见解。

事实证明,当我使用 $.Param(data) 对数据进行编码时,我会收到 Missing mandatory fields 消息。当我使用 JSON.stringify(data) 时,我会收到拒绝访问的消息。

这两条消息实际上都非常具有误导性,因为实际问题是我正在设置必填字段 related_to=PRO+TEST+CO,而该字段实际上是在寻找 vtiger 客户帐户 ID看起来像“11x4567”。

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

related_to=PRO+测试+CO

至:

related_to=11x4567

vTiger 格式化它的 id 的方式是模块 x id,所以第 11 个模块(帐户)x 帐户 id #。

希望这可以帮助其他人 运行 解决这个问题。