Sales Force Sphero
First, let's import Cylon:
var Cylon = require('cylon');
With that done, let's define the Robot we'll use to communicate with Salesforce:
Cylon.robot({ name: 'salesforce', connections: { sfcon: { adaptor: 'force', sfuser: process.env.SF_USERNAME, sfpass: process.env.SF_SECURITY_TOKEN, orgCreds: { clientId: process.env.SF_CLIENT_ID, clientSecret: process.env.SF_CLIENT_SECRET, redirectUri: 'http://localhost:3000/oauth/_callback' } } }, devices: { salesforce: { driver: 'force' } }, work: function(my) { my.salesforce.on('start', function() { my.salesforce.subscribe('/topic/SpheroMsgOutbound', function(data) { var msg = "Sphero: " + data.sobject.Sphero_Name__c + ","; msg += "Bucks: " + data.sobject.Bucks__c + ","; msg += "SM_Id: " + data.sobject.Id; console.log(msg); var sphero = Cylon.robots[data.sobject.Sphero_Name__c]; sphero.react(); }); }); } });
Next up, the shape our Sphero Robot will take:
Cylon.robot({ name: 'ROY', connections: { sphero: { adaptor: 'sphero' } }, devices: { sphero: { driver: 'sphero' } }, react: function() { this.sphero.setRGB(0x00FF00); this.sphero.roll(90, Math.floor(Math.random() * 360)); }, work: function(my) { console.log('Setting up collision detection.'); my.sphero.detectCollisions(); my.sphero.stop(); my.sphero.setRGB(0x00FF00); my.sphero.roll(90, Math.floor(Math.random() * 360)); my.sphero.on('collision', function() { my.sphero.setRGB(0x0000FF, my); my.sphero.stop(); var data = JSON.stringify({ spheroName: my.name, bucks: "" + (my.totalBucks++) }); var sf = Cylon.robots.salesforce; sf.devices.salesforce.push('SpheroController', 'POST', data); }); } });
Now that our robot knows what work to do, and the work it will be doing that hardware with, we can start it:
Cylon.start();