Skip to content

Instantly share code, notes, and snippets.

@lesterjude
Created September 23, 2014 09:52
Show Gist options
  • Save lesterjude/d0990f71198882655b9a to your computer and use it in GitHub Desktop.
Save lesterjude/d0990f71198882655b9a to your computer and use it in GitHub Desktop.
Zendesk Create Ticket After Hours
var credentials = {
"token": "{$zendesk_token}",
"base_url": "{$zendesk_base_url}",
"username": "{$zendesk_username}",
"api_path": "{$zendesk_api_path}",
"session_id": localSession.beatsession_guid
}
var dashboard_url = "https://dashboard.drumbi.com/v1/notification/" + localSession.beatsession_guid;
function customerSearch(sessionData) {
var callerInfo = {
"name": "No Name",
"email": "noemail@drumbi.com",
"caller_number" : ""
}
if(sessionData.caller_name)
callerInfo.name = sessionData.caller_name;
if(sessionData.caller_email)
callerInfo.email = sessionData.caller_email;
callerInfo.caller_number = sessionData.caller_number;
zendesk.customerSearch({
"caller": callerInfo,
"credentials": credentials
}, function(err, response) {
if(!response.data.error){
callerInfo.name = response.data.caller_info.name;
callerInfo.email = response.data.caller_info.email;
callerInfo.caller_number = response.data.caller_info.phone;
}
sessionData.caller_number = callerInfo.caller_number;
sessionData.caller_email = callerInfo.email;
sessionData.caller_name = callerInfo.name;
createTicket(sessionData);
});
}
function createTicket(sessionData) {
var body = 'Incoming Call From ' + sessionData.caller_number + ' (After Hours) \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;
//get email
zendesk.createTicket({
ticket: {
subject: sessionData.subject + ' > New',
status: 'open',
priority: 'normal',
comment: {
body: body,
public: false
},
via_id: 44
},
caller: {
name: sessionData.caller_name,
email: sessionData.caller_email,
number: sessionData.caller_number
},
credentials: sessionData.credentials
}, function(err, result) {
drumbi.set({
notification_url: sessionData.credentials.base_url + 'agent/#/tickets/'+ result.data.ticket.id,
zendesk: sessionData.credentials.base_url + 'agent/#/tickets/'+ result.data.ticket.id,
zenid: result.data.ticket.id,
topic: sessionData.subject,
ticket_id: result.data.ticket.id,
requester_id: result.data.ticket.requester_id
}, function(err, result) {
drumbi.connectCaller();
})
});
}
drumbi.getAllVariables(function(err, sessionData) {
var json = {
caller_email: sessionData.email,
caller_name: sessionData.caller_name,
caller_number: sessionData.caller_number,
subject: sessionData.topic,
credentials: credentials,
page: decodeURIComponent(sessionData.url),
referrer: decodeURIComponent(sessionData.referrer),
session_id: localSession.beatsession_guid,
ip: sessionData.ip,
platform: sessionData.platform,
browser: sessionData.browser,
url: decodeURIComponent(sessionData.url),
tickets: []
};
drumbi.set({'session_info': JSON.stringify(json),
caller_name: sessionData.caller_name,
email: sessionData.email
}, function() {
customerSearch(json);
})
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment