forked from teravoz/teravoz-client-example
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsalesforceApi.js
92 lines (72 loc) · 3.37 KB
/
salesforceApi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
require('dotenv').config();
var nforce = require('nforce');
// Salesforce API
var salesforceApi = module.exports = {};
var org = nforce.createConnection({
clientId: process.env.SALESFORCE_CLIENT_ID,
clientSecret: process.env.SALESFORCE_CLIENT_SECRET,
redirectUri: process.env.SALESFORCE_CALLBACK_URL,
apiVersion: process.env.SALESFORCE_API_VERSION, // optional, defaults to current salesforce API version
environment: process.env.SALESFORCE_ENVIRONMENT, // optional, salesforce 'sandbox' or 'production', production default
mode: 'single' // optional, 'single' or 'multi' user mode, multi default
});
salesforceApi.createCase = function(callId, phone, group) {
// single user mode
org.authenticate({ username: process.env.SALESFORCE_USERNAME, password: process.env.SALESFORCE_PASSWORD+process.env.SALESFORCE_SECURITY_TOKEN}, function(err, resp){
// the oauth object was stored in the connection object
if(!err) console.log('Cached Token: ' + org.oauth.access_token)
var caseTeravoz = nforce.createSObject('Case');
caseTeravoz.set('Subject', '[' + phone +'] Ticket by teravoz: ' + new Date().toLocaleString("pt-BR", {timeZone: "America/Sao_Paulo"}));
caseTeravoz.set('SuppliedEmail', 'no-reply@gradus-softwares.com.br');
caseTeravoz.set('Origin', 'Phone');
caseTeravoz.set('SuppliedPhone', phone);
caseTeravoz.set('call_id__c', callId);
caseTeravoz.set('Grupo__c', group);
org.insert({ sobject: caseTeravoz }, function(err, resp){
if(err) console.log(err);
});
});
};
salesforceApi.updateCase = function(callId, caseProps) {
console.log('update case:', callId, caseProps);
// single user mode
org.authenticate({ username: process.env.SALESFORCE_USERNAME, password: process.env.SALESFORCE_PASSWORD+process.env.SALESFORCE_SECURITY_TOKEN}, function(err, resp){
// the oauth object was stored in the connection object
if(!err) {
var q = "SELECT Id, Subject, CreatedDate FROM Case WHERE call_id__c = '" + callId.toString() + "' ORDER BY CreatedDate DESC LIMIT 1";
org.query({ query: q }, function(err, resp){
if(resp.records) {
var caseTeravoz = resp.records[0];
for(var propertyName in caseProps) {
caseTeravoz.set(propertyName, caseProps[propertyName]);
}
org.update({ sobject: caseTeravoz}, function(err, resp){
if(err) console.log(err);
});
}
});
} else {
console.log(err);
}
});
};
salesforceApi.searchAccount = function(contactNumber) {
org.authenticate({ username: process.env.SALESFORCE_USERNAME, password: process.env.SALESFORCE_PASSWORD+process.env.SALESFORCE_SECURITY_TOKEN}, function(err, resp){
// the oauth object was stored in the connection object
if(!err) console.log('Cached Token: ' + org.oauth.access_token);
var q = "SELECT Id, Subject FROM Case WHERE call_id__c = " + callId + " LIMIT 1";
org.query({ query: q }, function(err, resp){
if(!err && resp.records) {
var caseTeravoz = resp.records[0];
for(var propertyName in caseProps) {
// propertyName is what you want
// you can get the value like this: myObject[propertyName]
caseTeravoz.set(propertyName, caseProps[propertyName]);
}
org.update({ sobject: caseTeravoz}, function(err, resp){
if(!err) console.log('It worked!');
});
}
});
});
};