乐趣区

使用nodejs对Marketing-Cloud的contact主数据进行修改操作

假设在 Marketing Cloud 有这样一个 contact 主数据:

现在需求是使用编程语言比如 nodejs 修改这个 contact 实例的高亮属性。

代码如下:


var config = require("./mcConfig");
var request = require('request');

var url = config.tokenURL;

console.log("user:" + config.user + "password:" + config.password); 
var getTokenOptions = {
        url: url,
        method: "GET",
        json:true,     
        headers: {'Authorization': 'Basic' + new Buffer(config.user + ":" + config.password).toString('base64'),
            "content-type": "application/json",
            "x-csrf-token" :"fetch"
        }
};

function getToken() {return new Promise(function(resolve,reject){var requestC = request.defaults({jar: true});
      console.log("Step1: get csrf token via url:" + url);

      requestC(getTokenOptions,function(error,response,body){var csrfToken = response.headers['x-csrf-token'];
       if(!csrfToken){reject({message:"token fetch error:" + error});
          return;
       }
       console.log("Step1: csrf token got:" + csrfToken);
       resolve(csrfToken);
      }); 
     });
}

function updateContact(token){return new Promise(function(resolve, reject){
        var sPostData = "--batch_1f7d-bd35-caed" + "\n" + 
  "Content-Type: multipart/mixed; boundary=changeset_8f9e-9a44-9f9e" + "\n" + 
  "\n" + 
  "--changeset_8f9e-9a44-9f9e" + "\n" + 
  "Content-Type: application/http" + "\n" + 
  "Content-Transfer-Encoding: binary" + "\n" + 
  "\n" + 
  "MERGE Consumers('02000A21209F1EE99CDF1A1FC9AA8065')?sap-client=100 HTTP/1.1" + "\n" + 
  "Cache-Control: max-age=360" + "\n" + 
  "sap-contextid-accept: header" + "\n" + 
  "Accept: application/json" + "\n" + 
  "Accept-Language: en" + "\n" + 
  "DataServiceVersion: 2.0" + "\n" + 
  "MaxDataServiceVersion: 2.0" + "\n" + 
  "x-csrf-token: fQ2Pwfmf0K_LVYoKV9QYUw==" + "\n" + 
  "Content-Type: application/json" + "\n" + 
  //"Content-Length: 215" + "\n" + 
  "\n" + 
  "{\"YY1_CustomerType_ENH\":\"Jerry 测试 1\"}" + "\n" + 
  "--changeset_8f9e-9a44-9f9e--" + "\n" + 
  "\n" + 
  "--batch_1f7d-bd35-caed--";

        var requestC = request.defaults({jar: true});
    var createOptions = {
              url: config.updateContactURL,
              method: "POST",
              json:false,
              headers: {
                  "content-type": "multipart/mixed;boundary=batch_1f7d-bd35-caed",
                  'x-csrf-token': token
              },
              body:sPostData
        };
        requestC(createOptions,function(error,response,data){if(error){reject(error.message);
            }else {
               debugger;
               console.log("Contact updated successfully");
               resolve(data);
            }
        });
    });
}

getToken().then(updateContact).catch((error) =>{console.log("error:" + error.message);
});

我在 nodejs 代码里把需要更改的字段值赋为 ”Jerry 测试 1”:

执行之后这个属性被成功更新了:

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版