我们是否可以使用Twilio创建Salesforce平台事件,而不使用Twilio for Salesforce应用程序?

我们是否可以使用Twilio创建Salesforce平台事件,而不使用Twilio for Salesforce应用程序?,salesforce,twilio,twilio-api,Salesforce,Twilio,Twilio Api,我们创建了一个Twilio函数来在Salesforce中创建一个平台事件;但是,它只返回500或502个提示身份验证问题的错误。Salesforce有一个付费的Twilio应用程序,但我认为这是为那些不想自己编写API的人设计的。是否有可能在没有此应用程序的情况下创建平台事件功能?我不确定我们错过了什么 //================================================================================ // Modules

我们创建了一个Twilio函数来在Salesforce中创建一个平台事件;但是,它只返回500或502个提示身份验证问题的错误。Salesforce有一个付费的Twilio应用程序,但我认为这是为那些不想自己编写API的人设计的。是否有可能在没有此应用程序的情况下创建平台事件功能?我不确定我们错过了什么

  //================================================================================
  // 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);
  }
};```