使用nodejs实现OData的batch操作在Marketing Cloud里读取
对 Marketing Cloud 的功能模块有了基本的了解,我们接下来可以学习如何使用编程的方式,消费 Marketing Cloud 系统的主数据。
我们先来看看笔者 Marketing Cloud系统里的contact信息:
一共1218374条数据。
我们用如下的nodejs代码通过OData来获取这些数据:
var request = require('request'); var config = require("./mcConfig"); var url = config.getContactBatchURL; var sBody = "--batch_c914-a60c-1877" + "\n" + "Content-Type: application/http" + "\n" + "Content-Transfer-Encoding: binary" + "\n" + "\n" + "GET InteractionContacts?sap-client=100&$skip=0&$top=2&$select=ImageURL%2cName%2cContactLevelName%2cCountryName%2cCity%2cEMailAddress%2cPhoneNumber%2cMobilePhoneNumber%2cCorporateAccountName%2cInteractionContactUUID%2cRelationship%2cType&$inlinecount=allpages HTTP/1.1" + "sap-cancel-on-close: true" + "\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" + "\n" + "\n" + "--batch_c914-a60c-1877--"; var getContactOptions = { url: url, method: "POST", json:false, headers: { "content-type": "multipart/mixed;boundary=batch_c914-a60c-1877", 'Authorization': 'Basic ' + new Buffer(config.user + ":" + config.password).toString('base64') }, body: sBody }; function getContact() { return new Promise(function(resolve,reject){ var requestC = request.defaults({jar: true}); console.log("Step1: get contact via url: " + url ); requestC(getContactOptions,function(error,response,body){ if( error){ console.log("error occurred: " + error); reject(error); } console.log("response:" + body); var nStartIndex = body.indexOf("{"); var nLastIndex = body.lastIndexOf("}"); if( nStartIndex < 0 || nLastIndex < 0) return; var sPayload = body.substring(nStartIndex, ++nLastIndex); resolve(JSON.parse(sPayload)); }); }); } function displayResult(oResult){ console.log(oResult); } getContact().then(displayResult);
使用node命令直接执行这个.js文件:
得到与浏览器上观察相一致的结果:
使用postman创建Marketing Cloud的Contact
除了 Node.js 等代码之外,我们也可以使用 Postman 这种常规的 Restful API 测试工具,来创建 Marketing Cloud 的 Contact 数据。
首先在Marketing Cloud的UI上创建一个contact:
观察Chrome开发者工具network标签页里的HTTP请求:
https://jerry.hybris.com/sap/opu/odata/sap/CUAN_COMMON_SRV/?sap-client=100
这个请求用于读取CSRF token:
点击保存,会发送一个新的HTTP post请求:
请求url:
https://jerry.hybris.com/sap/opu/odata/sap/CUAN_COMMON_SRV/ContactPersons?sap-client=100
再看下重要的请求头部字段:
把第一步获得的CSRF token填到Postman里的header字段里,如图:
body:
{"CountryCode":"CN","City":"Chengdu","FirstName":"Jerry1","LastName":"Wang1","PostalCode":"610093","RegionCode":"","Street":"天府软件园","HouseNumber":"天府软件园","DateofBirth":null,"ContactPersonFacets":[{"Id":"jerry1@sap.com","IdOrigin":"EMAIL","Obsolete":false,"Invalid":false},{"Id":"","IdOrigin":"PHONE","Obsolete":false,"Invalid":false},{"Id":"","IdOrigin":"MOBILE","Obsolete":false,"Invalid":false},{"Id":"","IdOrigin":"FAX","Obsolete":false,"Invalid":false}],"IsConsumer":true,"Filter":{"MarketingAreaId":"CXXGLOBAL"}}
状态码201,证明创建成功了:
可以在前端看到创建成功的contact:
总结
本文作为该系列的最后一篇文章,介绍了 SAP Marketing Cloud 的营销计划模块,以及如何使用 Node.js 和 Postman 这两种工具,来创建 Marketing Cloud Contact 主数据的方法。