Created
February 19, 2015 02:23
-
-
Save lesterjude/d3cadb21f9d333904c20 to your computer and use it in GitHub Desktop.
Service Now Create Ticket
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var credentials = { | |
"service_uri": "https://dev240.service-now.com", | |
"username": "admin", | |
"password": "lO6Z23lMlUFp" | |
} | |
var dashboard_url = "https://dashboard.drumbi.com/v1/notification/"; | |
function createCaller(formData){ | |
servicenow.createCaller({ | |
credentials : credentials, | |
caller : { | |
"email" : formData.caller_email, | |
"number" : formData.caller_number, | |
"name" : formData.caller_name | |
} | |
}, function(err, data){ | |
formData.servicenow_caller_id = data.data.caller_id; | |
//get tickets and send templates | |
drumbi.set({'session_info': JSON.stringify(formData)}, function() { | |
createTicket(formData); | |
}) | |
}); | |
} | |
function createTicket(sessionData) { | |
var createMessage = 'Session ID: ' + localSession.beatsession_guid; | |
var body = 'Incoming Call From ' + sessionData.caller_number + ' \n' | |
+ 'Subject: ' + sessionData.subject + ' > New \n' | |
+ 'Name: ' + sessionData.caller_name + ' \n' | |
+ 'Email: ' + sessionData.caller_email + ' \n' | |
+ 'Browser: ' + sessionData.browser + ' \n' | |
+ 'Platform: ' + sessionData.platform + ' \n' | |
+ 'IP: ' + sessionData.ip + ' \n' | |
+ 'Page: ' + sessionData.page + ' \n' | |
+ 'Referrer: ' + sessionData.referrer + ' \n' | |
+ 'Session ID: ' + localSession.beatsession_guid + '\n' | |
+ 'Drumbi Details: ' + dashboard_url + localSession.beatsession_guid; | |
//get email | |
servicenow.createTicket({ | |
ticket: { | |
subject: "Phone Call > " + sessionData.subject + ' > New', | |
comment : {"body": body} | |
}, | |
caller: { | |
name: sessionData.caller_name, | |
email: sessionData.caller_email, | |
number: sessionData.caller_number, | |
caller_id : sessionData.servicenow_caller_id | |
}, | |
credentials: credentials | |
}, function(err, result) { | |
if(err || !result.data.ticket) | |
{ | |
drumbi.hangup({ | |
"entity": "both" // [caller,agent,both] | |
}, function(err, response) { | |
}); | |
return; | |
} | |
else | |
{ | |
drumbi.set({ | |
notification_url: result.data.ticket.ticket, | |
topic: sessionData.subject, | |
ticket_created : true | |
}, function(err, result) { | |
drumbi.hangup({ | |
"entity": "both" // [caller,agent,both] | |
}, function(err, response) { | |
}); | |
}) | |
} | |
}); | |
} | |
function checkCaller(formData){ | |
servicenow.getCaller({ | |
search_by : { | |
email : formData.caller_email, | |
phone : formData.caller_number | |
}, | |
credentials :credentials | |
}, function(err, data){ | |
if(data && data.data && data.data.caller_id == ''){ | |
//if no caller | |
//create caller | |
createCaller(formData); | |
} | |
else | |
{ | |
formData.servicenow_caller_id = data.data.caller_id; | |
//get tickets and send templates | |
drumbi.set({'session_info': JSON.stringify(formData)}, function() { | |
createTicket(formData); | |
}) | |
} | |
}); | |
} | |
drumbi.addListeners({ | |
hangup_client: function(data) | |
{ | |
drumbi.playAudio({ | |
"type": "file", //[file,text] | |
"file_name": "custom/CSUFThankYouPasswordReset01", | |
"text":"", | |
"entity": "caller", //[caller,agent,both] | |
"repeat": 0, | |
"repeat_delay":0, | |
"response_type": "voice", //[voice,digits,none] | |
"response_digits":"0123456789", | |
"number_of_digits":"1" | |
}, function(err, response) { | |
drumbi.getAllVariables(function(err, sessionData) { | |
var number = ""; | |
if(sessionData.caller_number) | |
number = sessionData.caller_number.toString().replace(/[^0-9]/g,""); | |
else if(sessionData.callback_number) | |
number = sessionData.callback_number.toString().replace(/[^0-9]/g,""); | |
if(!sessionData.callback_number && sessionData.caller_number) | |
sessionData.callback_number = sessionData.caller_number; | |
// This will create email if the caller does not have email address. | |
var email = number + "@drumbi.com"; | |
if(sessionData.caller_email) | |
email = sessionData.caller_email; | |
else if(sessionData.email) | |
sessionData.email = email; | |
//checkCaller(sessionData); | |
var json = { | |
caller_email: email, | |
caller_name: sessionData.caller_name, | |
caller_number: sessionData.caller_number, | |
subject: sessionData.topic, | |
credentials: credentials, | |
session_id: localSession.beatsession_guid, | |
ip: sessionData.ip, | |
platform: sessionData.platform, | |
browser: sessionData.browser, | |
url: decodeURIComponent(sessionData.url), | |
tickets: [] | |
}; | |
checkCaller(json); | |
}); | |
}); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment