MadKudu - Account scoring
var jsforce = require("jsforce")
var madkudu = require("@madkudu/madkudu-node")(process.env.madkudu_api_key)
const sequential = require('promise-sequential');
const get_scores = function(objects) {
return sequential(objects.map(item => {
return function(previousResponse, responses, count) {
// console.log(item)
return madkudu.company.find({ domain: item.Website })
}
}))
.then(res => {
// console.log(res)
const scores = []
for (var i = 0; i<objects.length ; i++) {
let score = _.find(res, {domain: objects[i].Website})
score = score ? score.properties.customer_fit : null
console.log(score)
scores.push({
Id: objects[i].Id,
MK_customer_fit_score__c: score ? score.score : null,
MK_customer_fit_segment__c: score ? score.segment : null,
MK_customer_fit_signals_JSON__c: score ? JSON.stringify(score.top_signals) : null,
})
}
// console.log(scores)
return scores
})
.catch(console.log)
}
const main = function() {
var conn = new jsforce.Connection()
return conn.login(process.env.salesforce_username, process.env.salesforce_password + process.env.salesforce_security_token)
.then((user_info) => {
return conn.query("SELECT Id, website FROM Account WHERE website <> null AND MK_customer_fit_score__c = null LIMIT 100")
.then( res => {
return get_scores(res.records)
.then(scores => {
return conn.sobject("Account").update(scores)
})
})
})
.catch(console.log)
}
exports.endpoint = function(request, response) {
return main()
.then(() => {response.end("success")})
.catch(() => {response.end("error")})
}
no comments