Hi,
Are you looking for a contractor to help with the work or are you asking for sample code showing how to implement that? If you need sample code, let me know what programming language do you expect.
+ Phong
I was just asking for sample code; really any language would be fine. But if you could get this up and working for me very quickly we might be able to pay for it.
Hi,
Here is the working code in Node JS.
You need to install the RingCentral SDK for Node JS
npm install ringcentral --save
and install the dotenv so you can use the .env to keep your app and login credentials
Code:
var RC = require('ringcentral')
require('dotenv').load()
var rcsdk = new RC({
server:process.env.SERVER,
appKey: process.env.APP_KEY,
appSecret:process.env.APP_SECRET
})
var platform = rcsdk.platform()
login()
function login() {
platform.login({
username:process.env.USERNAME,
password:process.env.PASSWORD
})
.then(function(resp){
readCallLog()
setInterval(function(){
readCallLog()
}, 60 * 15 * 1000); // repeat reading call-log every 15 mins
})
.catch(function(e){
throw e
})
}
function readCallLog(){
var date = new Date()
var time = date.getTime()
// 15-min period
var less15Min = time - (60 * 15 * 1000)
var from = new Date(less15Min)
var dateFrom = from.toISOString()
var dateTo = date.toISOString()
var params = {}
// See the API reference for more request parameters
params['type'] = 'Voice'
params['view'] = 'Detailed'
params['dateFrom'] = dateFrom.replace('/', ':')
params['dateTo'] = dateTo.replace('/', ':')
console.log(params.dateFrom)
console.log(params.dateTo)
platform.get('/account/~/extension/~/call-log', params)
.then(function(resp){
var json = resp.json()
if (json.records.length > 0){
// Check the API documentation for call log data fields then add whatever you are interested
var cvs = 'uri,startTime,duration,type,direction,action,result,to_name,from_name,transport'
for (var record of json.records){
cvs += "
"
cvs += record.uri + ','
cvs += record.startTime + ','
cvs += record.duration + ','
cvs += record.type + ','
cvs += record.direction + ','
cvs += record.action + ','
cvs += record.result + ','
if (record.to.name != undefined)
cvs += record.to.name + ','
else
cvs += 'null,'
if (record.from.name != undefined)
cvs += record.from.name + ','
else
cvs += 'null,'
cvs += record.transport
}
var fs = require('fs')
// add to your CRM db
// for demo, I write the data to a file
fs.writeFile('call_log_'+dateTo+'.csv', cvs, function(err) {
if(err)
console.log(err);
else
console.log("call log is saved.");
})
}
})
.catch(function(e){
throw e
})
}
I am here to help you. So no payment :)
Bests,
Phong
Thank you so much for this you're Awesome.
Hello, this is very helpful. The code appears to run by displaying the date to console, however a CSV file never saves.
Thank you all for the help we are working to implement this into our CRM. Thank you again for your help.
Phong Vu, this is working great, but it only pulls down 100 records maximum. I increase the time to more than 15 minutes and I sometimes have more than 100 calls in the time period. How do set the number of records to pull?