Built motion from commit d6d69adf.|2.6.33
[motion2.git] / server / services / ami / trigger / integration / zendesk.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xcaba=['/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','../../../../config/environment','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','remoteUri','POST','Tags','name','Subjects','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','%s/users/me.json','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','Enduser\x20found!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes','string','nameField','customField','picklist','type','idField','push','content','variableName','customVariable','Variable','toLowerCase','custom_fields','queue','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','trigger:browser:url','%s/agent/tickets/%s','replace'];(function(_0x2613ae,_0x182ecd){var _0x36c1fe=function(_0x3693e2){while(--_0x3693e2){_0x2613ae['push'](_0x2613ae['shift']());}};_0x36c1fe(++_0x182ecd);}(_0xcaba,0x168));var _0xacab=function(_0x34b8c4,_0x5c5b3e){_0x34b8c4=_0x34b8c4-0x0;var _0x25159a=_0xcaba[_0x34b8c4];return _0x25159a;};'use strict';var _=require('lodash');var rp=require(_0xacab('0x0'));var md5=require(_0xacab('0x1'));var util=require(_0xacab('0x2'));var Redis=require(_0xacab('0x3'));var intUtil=require('./util');var config=require(_0xacab('0x4'));var logger=require('../../../../config/logger')(_0xacab('0x5'));config[_0xacab('0x6')]=_[_0xacab('0x7')](config[_0xacab('0x6')],{'host':_0xacab('0x8'),'port':0x18eb});var io=require(_0xacab('0x9'))(new Redis(config[_0xacab('0x6')]));function emit(_0x2e3971,_0x4e0582,_0x1932dd){io['to'](_0x2e3971)[_0xacab('0xa')](_0x4e0582,_0x1932dd);}var headers={'Content-Type':_0xacab('0xb'),'Accept':_0xacab('0xb')};function getTicket(_0x53f8a7,_0x146b79,_0x5b9120,_0x581272,_0x42306d){logger[_0xacab('0xc')](_0xacab('0xd'));return request({'uri':util['format']('%s/tickets.json',_0x53f8a7[_0xacab('0xe')]),'method':_0xacab('0xf'),'body':{'ticket':_['merge']({'requester_id':_0x5b9120['id'],'submitter_id':_0x146b79?_0x146b79['id']:undefined,'assignee_id':_0x146b79?_0x146b79['id']:undefined,'tags':getTags(_0x581272[_0xacab('0x10')],_0xacab('0x11')),'subject':intUtil['getString'](_0x581272[_0xacab('0x12')],_0x42306d,'\x20'),'description':intUtil[_0xacab('0x13')](_0x581272[_0xacab('0x14')],_0x42306d,'\x0a'),'comment':{'public':![],'body':intUtil[_0xacab('0x13')](_0x581272['Descriptions'],_0x42306d,'\x0a')}},getCustomFields(_0x581272[_0xacab('0x15')],_0x42306d))}})[_0xacab('0x16')](function(_0x16df4d){logger[_0xacab('0xc')](_0xacab('0x17'));return _0x16df4d[_0xacab('0x18')];});}function getUser(_0x2e490a,_0x55908e){if(intUtil['validateEmail'](_0x55908e)){logger['info'](_0xacab('0x19'),_0x55908e);return request({'uri':util[_0xacab('0x1a')](_0xacab('0x1b'),_0x2e490a[_0xacab('0xe')]),'qs':{'query':util[_0xacab('0x1a')](_0xacab('0x1c'),_0x55908e)}})['then'](function(_0x562aec){if(_0x562aec[_0xacab('0x1d')]){logger['info'](_0xacab('0x1e'));return _[_0xacab('0x1f')](_0x562aec[_0xacab('0x20')],{'email':_0x55908e,'role':_0xacab('0x21')});}else{logger['info'](_0xacab('0x22'));return request({'uri':util[_0xacab('0x1a')]('%s/users/me.json',_0x2e490a[_0xacab('0xe')])})[_0xacab('0x16')](function(_0x5c2818){logger['info'](_0xacab('0x23'));return _0x5c2818['user'];});}});}else{logger[_0xacab('0xc')](_0xacab('0x22'));return request({'uri':util['format'](_0xacab('0x24'),_0x2e490a[_0xacab('0xe')])})[_0xacab('0x16')](function(_0x5e5213){logger[_0xacab('0xc')](_0xacab('0x23'));return _0x5e5213[_0xacab('0x25')];});}}function getEndUser(_0x4c976f,_0x842dbb,_0x2f4250){logger[_0xacab('0xc')](_0xacab('0x26'),_0x2f4250);return request({'uri':util[_0xacab('0x1a')]('%s/search.json',_0x4c976f[_0xacab('0xe')]),'qs':{'query':util['format'](_0xacab('0x27'),_0x2f4250)}})['then'](function(_0x209b6d){var _0x4ffae0;if(_0x209b6d[_0xacab('0x20')]['length']){_0x209b6d['results']=_[_0xacab('0x28')](_0x209b6d['results'],{'suspended':![],'role':_0xacab('0x29')});if(_0x209b6d[_0xacab('0x20')][_0xacab('0x2a')]){_0x4ffae0=_['first'](_0x209b6d[_0xacab('0x20')]);}}if(_0x4ffae0){logger['info'](_0xacab('0x2b'));return _0x4ffae0;}else{logger[_0xacab('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xacab('0x1a')]('%s/users.json',_0x4c976f['remoteUri']),'method':_0xacab('0xf'),'body':{'user':{'role':_0xacab('0x29'),'name':util[_0xacab('0x1a')](_0xacab('0x2c'),_0x842dbb||_0x2f4250),'phone':_0x2f4250}}})[_0xacab('0x16')](function(_0x2eae69){logger[_0xacab('0xc')](_0xacab('0x2d'));return _0x2eae69[_0xacab('0x25')];});}});}function getAuth(_0x15a75c){var _0x5b5f87;if(_0x15a75c[_0xacab('0x2e')]===_0xacab('0x2f')){_0x5b5f87=util['format'](_0xacab('0x30'),_0x15a75c[_0xacab('0x31')],_0x15a75c['password']);}else if(_0x15a75c['authType']==='token'){_0x5b5f87=util['format'](_0xacab('0x32'),_0x15a75c[_0xacab('0x31')],_0x15a75c['token']);}return util[_0xacab('0x1a')](_0xacab('0x33'),new Buffer(_0x5b5f87)[_0xacab('0x34')](_0xacab('0x35')));}function request(_0x59bcf6){logger[_0xacab('0x36')]('[HTTP]',JSON[_0xacab('0x37')](_0x59bcf6));return rp(_['defaults'](_0x59bcf6,{'method':_0xacab('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x57a90f,_0x2777e2){var _0x12dcf9=[];if(_0x57a90f&&_0x57a90f[_0xacab('0x2a')]>0x0){_0x12dcf9=_[_0xacab('0x39')](_0x57a90f,_0x2777e2);}return _0x12dcf9;}function getCustomFields(_0x49213f,_0x2b8a97){var _0x5f28f6=[];var _0x555365={'custom_fields':[]};if(_0x49213f[_0xacab('0x2a')]>0x0){_[_0xacab('0x3a')](_0x49213f,function(_0x2a7446){if(_[_0xacab('0x3b')]([_0xacab('0x3c'),'picklist'],_0x2a7446['type'])&&_0x2a7446[_0xacab('0x3d')]&&!_0x2a7446[_0xacab('0x3e')]){_0x555365[_0x2a7446[_0xacab('0x3d')]['toLowerCase']()]=_0x2a7446['content'][_0xacab('0x34')]();}else if(_[_0xacab('0x3b')]([_0xacab('0x3c'),_0xacab('0x3f')],_0x2a7446[_0xacab('0x40')])&&_0x2a7446[_0xacab('0x41')]&&_0x2a7446[_0xacab('0x3e')]){_0x555365['custom_fields'][_0xacab('0x42')]({'id':_0x2a7446[_0xacab('0x41')],'value':_0x2a7446[_0xacab('0x43')][_0xacab('0x34')]()});}else if(_0x2a7446[_0xacab('0x40')]==='variable'&&_0x2a7446['variableName']&&_0x2a7446[_0xacab('0x41')]&&_0x2a7446['customField']){_0x2b8a97[_0x2a7446['variableName']]&&_0x555365['custom_fields']['push']({'id':_0x2a7446[_0xacab('0x41')],'value':_0x2b8a97[_0x2a7446[_0xacab('0x44')]][_0xacab('0x34')]()});}else if(_0x2a7446[_0xacab('0x40')]===_0xacab('0x45')&&_0x2a7446[_0xacab('0x46')]&&_0x2a7446[_0xacab('0x46')][_0xacab('0x11')]&&_0x2a7446['idField']&&_0x2a7446[_0xacab('0x3e')]){_0x2b8a97[_0x2a7446[_0xacab('0x46')][_0xacab('0x11')][_0xacab('0x47')]()]&&_0x555365[_0xacab('0x48')]['push']({'id':_0x2a7446['idField'],'value':_0x2b8a97[_0x2a7446[_0xacab('0x46')][_0xacab('0x11')][_0xacab('0x47')]()][_0xacab('0x34')]()});}});}return _0x555365;}exports[_0xacab('0x49')]=function(_0xe2ddc7,_0x576175,_0x51b541,_0x2ad670,_0x191659,_0x4ca546){var _0x20cd47,_0x2eca18;_0x4ca546[_0xacab('0xe')]=intUtil[_0xacab('0x4a')](_0x4ca546[_0xacab('0xe')]);_0x4ca546[_0xacab('0x4b')]=intUtil[_0xacab('0x4a')](_0x4ca546[_0xacab('0x4b')]);if(_0x191659&&_0x191659[_0xacab('0x4c')]){logger[_0xacab('0xc')]('[QUEUE]','Recording\x20is\x20enabled!');_0x576175[_0xacab('0x4d')]=util[_0xacab('0x1a')](_0xacab('0x4e'),_0x4ca546[_0xacab('0x4b')],_0x576175[_0xacab('0x4f')],md5(_0x576175[_0xacab('0x4f')]));}else{_0x576175[_0xacab('0x4d')]='';}headers['Authorization']=getAuth(_0x4ca546);return getUser(_0x4ca546,_0x2ad670[_0xacab('0x50')])[_0xacab('0x16')](function(_0x2bc196){_0x20cd47=_0x2bc196;logger[_0xacab('0xc')](_0xacab('0x51'),_0x20cd47['id']);return getEndUser(_0x4ca546,_0x576175[_0xacab('0x52')],_0x576175[_0xacab('0x53')]);})[_0xacab('0x16')](function(_0x1c3ca4){_0x2eca18=_0x1c3ca4;logger[_0xacab('0xc')](_0xacab('0x54'),_0x2eca18['id']);return getTicket(_0x4ca546,_0x20cd47,_0x2eca18,_0x51b541,_0x576175);})[_0xacab('0x16')](function(_0x497af2){if(_0x497af2){logger[_0xacab('0xc')]('The\x20Ticket\x20ID\x20is:',_0x497af2['id']);switch(_0x4ca546[_0xacab('0x40')]){case _0xacab('0x55'):logger[_0xacab('0xc')](_0xacab('0x56'),_0xacab('0x57'));return request({'uri':util[_0xacab('0x1a')](_0xacab('0x58'),_0x4ca546[_0xacab('0xe')],_0x20cd47['id'],_0x497af2['id']),'method':_0xacab('0xf')});case'newTab':logger[_0xacab('0xc')](_0xacab('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xacab('0x1a')]('user:%s',_0x2ad670[_0xacab('0x11')]),_0xacab('0x59'),{'uri':util[_0xacab('0x1a')](_0xacab('0x5a'),_0x4ca546[_0xacab('0xe')][_0xacab('0x5b')](_0xacab('0x5c'),''),_0x497af2['id'])});break;default:logger[_0xacab('0x5d')](_0xacab('0x56'),_0xacab('0x5e'));}}})[_0xacab('0x5f')](function(_0x3c390a){logger[_0xacab('0x5d')](_0xacab('0x60'),util[_0xacab('0x61')](_0x3c390a,{'showHidden':!![],'depth':null}));});};exports[_0xacab('0x62')]=function(_0x47ff5b,_0x247bcc,_0x519e25,_0x37d909,_0x52306e,_0x3a01af,_0x2135a3){var _0x21eb0e,_0x158e3e;_0x3a01af[_0xacab('0xe')]=intUtil['stripTrailingSlash'](_0x3a01af[_0xacab('0xe')]);_0x3a01af['serverUrl']=intUtil['stripTrailingSlash'](_0x3a01af[_0xacab('0x4b')]);if(_0x2135a3&&_0x2135a3[_0xacab('0x63')]&&_0x2135a3[_0xacab('0x63')]!==_0xacab('0x64')){logger[_0xacab('0xc')](_0xacab('0x65'),'Recording\x20is\x20enabled!');_0x247bcc[_0xacab('0x4d')]=util[_0xacab('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3a01af['serverUrl'],_0x247bcc['uniqueid'],md5(_0x247bcc['uniqueid']));}headers[_0xacab('0x66')]=getAuth(_0x3a01af);return getUser(_0x3a01af,_0x37d909[_0xacab('0x50')])[_0xacab('0x16')](function(_0x49fdfd){_0x21eb0e=_0x49fdfd;logger['info']('The\x20User\x20ID\x20is:',_0x21eb0e['id']);return getEndUser(_0x3a01af,_0x247bcc['destcalleridname'],_0x247bcc[_0xacab('0x67')]);})[_0xacab('0x16')](function(_0x776248){_0x158e3e=_0x776248;logger[_0xacab('0xc')](_0xacab('0x54'),_0x158e3e['id']);return getTicket(_0x3a01af,_0x21eb0e,_0x158e3e,_0x519e25,_0x247bcc);})[_0xacab('0x16')](function(_0x2788ce){if(_0x2788ce){logger[_0xacab('0xc')](_0xacab('0x68'),_0x2788ce['id']);switch(_0x3a01af[_0xacab('0x40')]){case _0xacab('0x55'):logger[_0xacab('0xc')](_0xacab('0x65'),_0xacab('0x57'));return request({'uri':util[_0xacab('0x1a')](_0xacab('0x58'),_0x3a01af[_0xacab('0xe')],_0x21eb0e['id'],_0x2788ce['id']),'method':'POST'});case'newTab':logger[_0xacab('0xc')](_0xacab('0x65'),_0xacab('0x69'));emit(util[_0xacab('0x1a')](_0xacab('0x6a'),_0x37d909['name']),_0xacab('0x59'),{'uri':util[_0xacab('0x1a')](_0xacab('0x5a'),_0x3a01af['remoteUri']['replace'](_0xacab('0x5c'),''),_0x2788ce['id'])});break;default:logger['error'](_0xacab('0x65'),_0xacab('0x5e'));}}})[_0xacab('0x5f')](function(_0x29e137){logger[_0xacab('0x5d')](_0xacab('0x6b'),util[_0xacab('0x61')](_0x29e137,{'showHidden':!![],'depth':null}));});};exports[_0xacab('0x6c')]=function(_0x1fb521,_0x59c49,_0x4eb884,_0x127985,_0x37b525,_0xe4208e){var _0x28e21b,_0x21c388;_0xe4208e['remoteUri']=intUtil[_0xacab('0x4a')](_0xe4208e[_0xacab('0xe')]);_0xe4208e[_0xacab('0x4b')]=intUtil[_0xacab('0x4a')](_0xe4208e[_0xacab('0x4b')]);if(_0x37b525&&_0x37b525['monitor_format']){logger[_0xacab('0xc')]('['+_0x59c49[_0xacab('0x6d')][_0xacab('0x6e')]()+']',_0xacab('0x6f'));_0x59c49['recordingURL']=util['format'](_0xacab('0x4e'),_0xe4208e[_0xacab('0x4b')],_0x59c49[_0xacab('0x4f')],md5(_0x59c49[_0xacab('0x4f')]));}else{_0x59c49['recordingURL']='';}headers[_0xacab('0x66')]=getAuth(_0xe4208e);return getUser(_0xe4208e)[_0xacab('0x16')](function(_0x222aa4){_0x28e21b=_0x222aa4;logger[_0xacab('0xc')]('The\x20User\x20ID\x20is:',_0x28e21b['id']);return getEndUser(_0xe4208e,_0x59c49['calleridname'],_0x59c49['calleridnum']);})[_0xacab('0x16')](function(_0x5cec05){_0x21c388=_0x5cec05;logger['info'](_0xacab('0x54'),_0x21c388['id']);return getTicket(_0xe4208e,_0x28e21b,_0x21c388,_0x4eb884,_0x59c49);})['then'](function(_0x1f9e5c){if(_0x1f9e5c){logger[_0xacab('0xc')](_0xacab('0x68'),_0x1f9e5c['id']);}})[_0xacab('0x5f')](function(_0x1c470e){logger[_0xacab('0x5d')]('['+_0x59c49[_0xacab('0x6d')][_0xacab('0x6e')]()+']'+_0xacab('0x70'),util[_0xacab('0x61')](_0x1c470e,{'showHidden':!![],'depth':null}));});};