我们是否可以使用Twilio创建Salesforce平台事件,而不使用Twilio for Salesforce应用程序?
我们创建了一个Twilio函数来在Salesforce中创建一个平台事件;但是,它只返回500或502个提示身份验证问题的错误。Salesforce有一个付费的Twilio应用程序,但我认为这是为那些不想自己编写API的人设计的。是否有可能在没有此应用程序的情况下创建平台事件功能?我不确定我们错过了什么我们是否可以使用Twilio创建Salesforce平台事件,而不使用Twilio for Salesforce应用程序?,salesforce,twilio,twilio-api,Salesforce,Twilio,Twilio Api,我们创建了一个Twilio函数来在Salesforce中创建一个平台事件;但是,它只返回500或502个提示身份验证问题的错误。Salesforce有一个付费的Twilio应用程序,但我认为这是为那些不想自己编写API的人设计的。是否有可能在没有此应用程序的情况下创建平台事件功能?我不确定我们错过了什么 //================================================================================ // Modules
//================================================================================
// Modules
//================================================================================
var querystring = require("querystring");
var request = require("request");
//================================================================================
// Context Variables
//================================================================================
// Are we using a sandbox or not
var isSandbox = context.SF_IS_SANDBOX == "false";
//Consumer Key from Salesforce Connected app
//var clientId = context.SF_CONSUMER_KEY;
var clientId =
"123456"
//Consumer Secrect from Salesforce Connected app
//var clientSecret = context.SF_CONSUMER_SECRET;
var clientSecret =
"45678";
//The salesforce username;
//var sfUserName = context.SF_USERNAME;
var sfUserName = "sflogin@login.com";
//The salesforce password
//var sfPassword = context.SF_PASSWORD;
var sfPassword = "12345";
//The salesforce user token
//var sfToken = context.SF_TOKEN;
var sfToken = "logintoken";
//================================================================================
// End Context Variables
//================================================================================
// Use namespace is to tell the code to apply the package namespace or not.
// The default should be true. If you are getting the requested resource
// does not exist then try setting value to false.
var useNameSpace = false;
//The salesforce managed package namespace
var nameSpace = "TwilioSF__";
//The login url
var salesforceUrl = "https://login.salesforce.com";
if (isSandbox === true) {
salesforceUrl = "https://test.salesforce.com";
}
run();
function run() {
var form = {
grant_type: "authorization_code",
client_id: clientId,
client_secret: clientSecret,
// username: sfUserName,
// password: sfPassword + sfToken,
};
var formData = querystring.stringify(form);
var contentLength = formData.length;
request(
{
headers: {
"Content-Length": contentLength,
"Content-Type": "application/x-www-form-urlencoded",
},
uri: salesforceUrl + "/services/oauth2/token",
body: formData,
method: "POST",
},
function (err, res, body) {
if (res.statusCode == 200) {
console.log("Success Getting Token");
var sfAuthReponse = JSON.parse(body);
var platformEvent = buildPlatformEvent(event);
postPlatformEvent(sfAuthReponse, platformEvent);
} else {
/* finishWithError("Error Getting Token:" + body); */
console.log("Executed else statement");
}
}
);
}
function postPlatformEvent(sfAuthReponse, platformEvent) {
console.log("Posting Platform Event:", platformEvent);
var options = {
uri: sfAuthReponse.instance_url + getPlatformEventUrl(),
headers: {
Authorization: "Bearer " + sfAuthReponse.access_token,
},
body: platformEvent,
json: true,
method: "POST",
};
request(options, processEventResponse);
}
function processEventResponse(error, response, body) {
if (!error && response.statusCode == 201) {
console.log(
"Success Posting Platform Event: Server responded with:",
body
);
finishSuccess();
} else {
console.error("Error Posting Platform Event:", body);
finishWithError("Error Posting Platform Event:" + body);
}
}
function buildPlatformEvent(event) {
//Object map that maps Twilio Field to Salesforce Field
var eventToPEMap = {
Body: "Body__c",
To: "To__c",
From: "From__c",
AccountSid: "AccountSid__c",
SmsSid: "MessageSid__c",
MessagingServiceSid: "MessagingServiceSid__c",
SmsStatus: "SmsStatus__c",
ErrorCode: "ErrorCode__c",
"testfield__c": event.mturkid_entry,
};
var platformEvent = {};
//Loop through event and build platform event
for (var property in event) {
if (eventToPEMap.hasOwnProperty(property)) {
var eventProp;
if (useNameSpace) {
eventProp = nameSpace + eventToPEMap[property];
} else {
eventProp = eventToPEMap[property];
}
platformEvent[eventProp] = event[property];
}
}
return platformEvent;
}
function getPlatformEventUrl() {
if (useNameSpace) {
return (
"/services/data/v43.0/sobjects/" +
nameSpace +
"Twilio_Message_Status__e"
);
} else {
return "/services/data/v43.0/sobjects/Twilio_Message_Status__e";
}
}
function finishSuccess(body) {
callback();
}
function finishWithError(body) {
callback(body);
}
};```