Force


Repository| Issues

This modules provides an adaptor + driver combination for communicating with the Salesforce Force.com platform.

It uses the official jsforce module.

For more info about the Force platform, click here.

How to Install

$ npm install cylon cylon-force

How to Use

var Cylon = require('cylon');

Cylon.robot({
  connections: {
    sfcon: {
      adaptor: 'force',
      sfuser: process.env.SF_USERNAME,
      sfpass: process.env.SF_SECURITY_TOKEN
    }
  },

  devices: {
    salesforce: { driver: 'force' }
  },

  work: function(me) {
    me.salesforce.subscribe('SpheroMsgOutbound', function(data) {
      console.log(data);
    });

    var i = 0 ;
    every((2).seconds(), function() {
      var toSend = {spheroName: 'globo', bucks: i++}
      me.salesforce.push('/SpheroController/', toSend);
    });
  }
});

Cylon.start();

To run the above example:

SF_USERNAME='yourusername' SF_SECURITY_TOKEN='yourpasswordandtoken' node examples/salesforce.js

How to Connect

To setup Salesforce connection, authentication, app/object creation and streaming follo the instructions in: https://github.com/hybridgroup/cylon-force/blob/master/salesforce-setup.md

Connecting to Salesforce using cylon-force

If you are using a Salesforce developer account(or personal account), you only need to provide sfuser (username) and sfpass (password + security_token to connect to the API as explain in Salesforce site) in the robot connection, as shown here:

  connections: {
    sfcon: {
      adaptor: 'force',
      sfuser: process.env.SF_USERNAME,
      sfpass: process.env.SF_SECURITY_TOKEN
    }
  },

However if you are part of an organization, and having trouble querying/updating objects and streaming events, you probably need to provide the organization credentials for authorization, this are the orgCreds/oauth2 credentials, you can either pass orgCreds or oauth2 parameter to the connection, as shown below and explain in the JSForce Docs:

var cylon = require('cylon');

cylon.robot({
  connections: {
    sfcon: {
      adaptor: 'force',
      sfuser: process.env.SF_USERNAME,
      sfpass: process.env.SF_SECURITY_TOKEN,
      // orgCreds and oauth2 are interchangeable here, you can use either.
      orgCreds: {
        clientId: 'CLIENT_ID',
        clientSecret: 'CLIENT_SECRET',
        redirectUri: 'http://localhost:3000/oauth/_callback'
      }
    }
  },

  devices: {
    salesforce: { driver: 'force' }
  },

  work: function(me) {
    me.salesforce.subscribe('SpheroMsgOutbound', function(err, data) {
      console.log('arguments: ', arguments);
      cylon.Logger.info('err received:', err);
      cylon.Logger.info('data received:', data);
    });

    var counter = 0;

    every((2).seconds(), function() {
      var toSend = { spheroName: 'globo' + counter, bucks: counter };

      me.salesforce.push('/SpheroController/', toSend, function(err, data) {
        cylon.Logger.info('Sphero globo' + counter + ' has been sent to Salesforce.');
      });

      counter++;
    });
  }
});

cylon.start();

If you provide all credentials and still have problems to create/query/update objects and stream info from salesforce please create an issue here: cylon-force issues.

Drivers

There is only a single driver as listed below for cylon-force: