Skip to content

Instantly share code, notes, and snippets.

@lesterjude
Last active August 29, 2015 14:06
Show Gist options
  • Save lesterjude/7d3c125484aca83cfba9 to your computer and use it in GitHub Desktop.
Save lesterjude/7d3c125484aca83cfba9 to your computer and use it in GitHub Desktop.
Zendesk Create Ticket with User Search
var credentials = {
"token": "{$zendesk_token}",
"base_url": "{$zendesk_base_url}",
"username": "{$zendesk_username}",
"api_path": "{$zendesk_api_path}",
"session_id": localSession.beatsession_guid
};
/*var credentials = {
"token": "jjx1OIWIKGrQdpJcLmHFEdPcrmuzx2ZW0BLgHVxa",
"base_url": "https://drumbi.zendesk.com/",
"username": "farsheed@drumbi.com",
"api_path": "api/v2",
"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": "",
"caller_number" : "",
"country_code" : sessionData.prefix
};
if(sessionData.caller_name)
callerInfo.name = sessionData.caller_name;
if(sessionData.caller_number)
callerInfo.caller_number = sessionData.caller_number.replace(/[^0-9]/g,"");
zendesk.customerSearch({
"caller": callerInfo,
"credentials": credentials
}, function(err, response) {
if(response && response.data && !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;
drumbi.set({'caller_name': callerInfo.name, 'email': callerInfo.email});
}
sessionData.caller_number = formatPhoneNumber(callerInfo.caller_number);
sessionData.caller_email = callerInfo.email;
sessionData.caller_name = callerInfo.name;
createTicket(sessionData);
});
}
function createTicket(sessionData) {
var number = sessionData.caller_number.replace(/[^0-9]/g,"");
var email = sessionData.caller_email || number + "@drumbi.com";
var body = 'Incoming Call From ' + sessionData.caller_number + ' \n'
+ 'Subject: ' + sessionData.subject + ' > New \n'
+ 'Name:' + sessionData.caller_name + '\n'
+ 'Email:' + email + '\n'
+ 'Platform: ' + sessionData.platform + ' \n'
+ 'Session ID: ' + localSession.beatsession_guid + '\n'
+ 'Dashbord: ' + dashboard_url;
//get email
zendesk.createTicket({
ticket: {
subject: sessionData.subject + ' > New',
status: 'open',
priority: 'normal',
comment: {
body: body,
public: false
},
via_id: 45
},
caller: {
name: sessionData.caller_name,
email: email,
number: sessionData.caller_number
},
credentials: 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,
caller_email:email
}, function(err, result) {
drumbi.connectCaller();
});
});
}
drumbi.set('set_attachment', "true", function() {});
drumbi.getAllVariables(function(err, sessionData) {
var json = {
caller_email: sessionData.email,
caller_name: sessionData.caller_name,
caller_number: sessionData.callback_number,
subject: sessionData.topic,
credentials: credentials,
session_id: localSession.beatsession_guid,
platform: sessionData.platform,
prefix: sessionData.prefix
};
drumbi.set('session_info', JSON.stringify(json), function() {
customerSearch(json);
// createTicket(json);
});
});
function formatPhoneNumber (s) {
var s2 = (""+s).replace(/\D/g, '');
var m = s2.match(/1{0,1}(\d{3})(\d{3})(\d{4})$/);
return (!m) ? '' : "(" + m[1] + ") " + m[2] + "-" + m[3];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment