Skip to content

Instantly share code, notes, and snippets.

@lesterjude
Created February 19, 2015 02:23
Show Gist options
  • Save lesterjude/d3cadb21f9d333904c20 to your computer and use it in GitHub Desktop.
Save lesterjude/d3cadb21f9d333904c20 to your computer and use it in GitHub Desktop.
Service Now Create Ticket
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