Built motion from commit (unavailable).|2.5.1
[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 _0x61dd=['idField','variable','variableName','push','customVariable','Variable','name','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','newTab','user:%s','trigger:browser:url','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','destcalleridname','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','toUpperCase','lastevent','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','Tags','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','token','%s/token:%s','username','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','string','nameField','customField','toLowerCase','content','type','custom_fields'];(function(_0x482326,_0x414a20){var _0x46d357=function(_0x1f243c){while(--_0x1f243c){_0x482326['push'](_0x482326['shift']());}};_0x46d357(++_0x414a20);}(_0x61dd,0x9d));var _0xd61d=function(_0x213c63,_0x420de6){_0x213c63=_0x213c63-0x0;var _0x300bfb=_0x61dd[_0x213c63];return _0x300bfb;};'use strict';var _=require('lodash');var rp=require(_0xd61d('0x0'));var md5=require(_0xd61d('0x1'));var util=require(_0xd61d('0x2'));var Redis=require('ioredis');var intUtil=require(_0xd61d('0x3'));var config=require(_0xd61d('0x4'));var logger=require(_0xd61d('0x5'))(_0xd61d('0x6'));config['redis']=_[_0xd61d('0x7')](config[_0xd61d('0x8')],{'host':_0xd61d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd61d('0x8')]));function emit(_0x2c55a4,_0x234833,_0x401c82){io['to'](_0x2c55a4)[_0xd61d('0xa')](_0x234833,_0x401c82);}var headers={'Content-Type':_0xd61d('0xb'),'Accept':'application/json'};function getTicket(_0x3f453d,_0x3cb34a,_0x2f464f,_0xb9911f,_0x2649b4){logger[_0xd61d('0xc')](_0xd61d('0xd'));return request({'uri':util[_0xd61d('0xe')](_0xd61d('0xf'),_0x3f453d[_0xd61d('0x10')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x2f464f['id'],'submitter_id':_0x3cb34a?_0x3cb34a['id']:undefined,'assignee_id':_0x3cb34a?_0x3cb34a['id']:undefined,'tags':getTags(_0xb9911f[_0xd61d('0x11')],'name'),'subject':intUtil[_0xd61d('0x12')](_0xb9911f[_0xd61d('0x13')],_0x2649b4,'\x20'),'description':intUtil['getString'](_0xb9911f[_0xd61d('0x14')],_0x2649b4,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0xb9911f[_0xd61d('0x14')],_0x2649b4,'\x0a')}},getCustomFields(_0xb9911f[_0xd61d('0x15')],_0x2649b4))}})[_0xd61d('0x16')](function(_0x36124d){logger[_0xd61d('0xc')]('Ticket\x20created!');return _0x36124d[_0xd61d('0x17')];});}function getUser(_0x1516d4,_0x556cdb){if(intUtil[_0xd61d('0x18')](_0x556cdb)){logger[_0xd61d('0xc')]('Getting\x20agent\x20with\x20email',_0x556cdb);return request({'uri':util['format'](_0xd61d('0x19'),_0x1516d4[_0xd61d('0x10')]),'qs':{'query':util[_0xd61d('0xe')](_0xd61d('0x1a'),_0x556cdb)}})[_0xd61d('0x16')](function(_0x489170){if(_0x489170[_0xd61d('0x1b')]){logger[_0xd61d('0xc')]('Agent\x20found!');return _[_0xd61d('0x1c')](_0x489170['results'],{'email':_0x556cdb,'role':_0xd61d('0x1d')});}else{logger[_0xd61d('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd61d('0xe')](_0xd61d('0x1e'),_0x1516d4[_0xd61d('0x10')])})['then'](function(_0x2f6639){logger[_0xd61d('0xc')](_0xd61d('0x1f'));return _0x2f6639[_0xd61d('0x20')];});}});}else{logger[_0xd61d('0xc')](_0xd61d('0x21'));return request({'uri':util[_0xd61d('0xe')](_0xd61d('0x1e'),_0x1516d4[_0xd61d('0x10')])})[_0xd61d('0x16')](function(_0x87da9b){logger[_0xd61d('0xc')](_0xd61d('0x1f'));return _0x87da9b[_0xd61d('0x20')];});}}function getEndUser(_0x18fa4a,_0x36da50,_0x54ee56){logger['info'](_0xd61d('0x22'),_0x54ee56);return request({'uri':util[_0xd61d('0xe')](_0xd61d('0x19'),_0x18fa4a['remoteUri']),'qs':{'query':util['format'](_0xd61d('0x23'),_0x54ee56)}})[_0xd61d('0x16')](function(_0x11a1e8){var _0x5698ba;if(_0x11a1e8[_0xd61d('0x24')][_0xd61d('0x25')]){_0x11a1e8[_0xd61d('0x24')]=_['filter'](_0x11a1e8[_0xd61d('0x24')],{'suspended':![],'role':'end-user'});if(_0x11a1e8[_0xd61d('0x24')][_0xd61d('0x25')]){_0x5698ba=_[_0xd61d('0x26')](_0x11a1e8['results']);}}if(_0x5698ba){logger[_0xd61d('0xc')](_0xd61d('0x27'));return _0x5698ba;}else{logger['info'](_0xd61d('0x28'));return request({'uri':util[_0xd61d('0xe')]('%s/users.json',_0x18fa4a[_0xd61d('0x10')]),'method':'POST','body':{'user':{'role':_0xd61d('0x29'),'name':util[_0xd61d('0xe')](_0xd61d('0x2a'),_0x36da50||_0x54ee56),'phone':_0x54ee56}}})[_0xd61d('0x16')](function(_0x48272b){logger[_0xd61d('0xc')](_0xd61d('0x2b'));return _0x48272b[_0xd61d('0x20')];});}});}function getAuth(_0x32e0db){var _0x3f463a;if(_0x32e0db[_0xd61d('0x2c')]==='password'){_0x3f463a=util[_0xd61d('0xe')]('%s:%s',_0x32e0db['username'],_0x32e0db[_0xd61d('0x2d')]);}else if(_0x32e0db[_0xd61d('0x2c')]===_0xd61d('0x2e')){_0x3f463a=util[_0xd61d('0xe')](_0xd61d('0x2f'),_0x32e0db[_0xd61d('0x30')],_0x32e0db[_0xd61d('0x2e')]);}return util[_0xd61d('0xe')](_0xd61d('0x31'),new Buffer(_0x3f463a)[_0xd61d('0x32')](_0xd61d('0x33')));}function request(_0x143fd9){logger[_0xd61d('0x34')](_0xd61d('0x35'),JSON[_0xd61d('0x36')](_0x143fd9));return rp(_[_0xd61d('0x7')](_0x143fd9,{'method':_0xd61d('0x37'),'headers':headers,'json':!![]}));}function getTags(_0xd0f49e,_0x4463d4){var _0x5e0eb8=[];if(_0xd0f49e&&_0xd0f49e['length']>0x0){_0x5e0eb8=_[_0xd61d('0x38')](_0xd0f49e,_0x4463d4);}return _0x5e0eb8;}function getCustomFields(_0x4ff312,_0x185342){var _0x5b7258=[];var _0x5bdb8f={'custom_fields':[]};if(_0x4ff312['length']>0x0){_[_0xd61d('0x39')](_0x4ff312,function(_0x2181f6){if(_0x2181f6['type']===_0xd61d('0x3a')&&_0x2181f6[_0xd61d('0x3b')]&&!_0x2181f6[_0xd61d('0x3c')]){_0x5bdb8f[_0x2181f6[_0xd61d('0x3b')][_0xd61d('0x3d')]()]=_0x2181f6[_0xd61d('0x3e')]['toString']();}else if(_0x2181f6[_0xd61d('0x3f')]===_0xd61d('0x3a')&&_0x2181f6['idField']&&_0x2181f6[_0xd61d('0x3c')]){_0x5bdb8f[_0xd61d('0x40')]['push']({'id':_0x2181f6[_0xd61d('0x41')],'value':_0x2181f6[_0xd61d('0x3e')][_0xd61d('0x32')]()});}else if(_0x2181f6[_0xd61d('0x3f')]===_0xd61d('0x42')&&_0x2181f6[_0xd61d('0x43')]&&_0x2181f6[_0xd61d('0x41')]&&_0x2181f6['customField']){_0x185342[_0x2181f6[_0xd61d('0x43')]]&&_0x5bdb8f[_0xd61d('0x40')][_0xd61d('0x44')]({'id':_0x2181f6['idField'],'value':_0x185342[_0x2181f6[_0xd61d('0x43')]]['toString']()});}else if(_0x2181f6[_0xd61d('0x3f')]===_0xd61d('0x45')&&_0x2181f6['Variable']&&_0x2181f6[_0xd61d('0x46')][_0xd61d('0x47')]&&_0x2181f6[_0xd61d('0x41')]&&_0x2181f6[_0xd61d('0x3c')]){_0x185342[_0x2181f6[_0xd61d('0x46')][_0xd61d('0x47')][_0xd61d('0x3d')]()]&&_0x5bdb8f['custom_fields']['push']({'id':_0x2181f6[_0xd61d('0x41')],'value':_0x185342[_0x2181f6[_0xd61d('0x46')][_0xd61d('0x47')][_0xd61d('0x3d')]()]['toString']()});}});}return _0x5bdb8f;}exports[_0xd61d('0x48')]=function(_0x33b923,_0x3055c6,_0x4d579b,_0x15a9e2,_0x2a6226,_0x4960b1){var _0x583bb0,_0x2c9c05;_0x4960b1['remoteUri']=intUtil['stripTrailingSlash'](_0x4960b1[_0xd61d('0x10')]);_0x4960b1[_0xd61d('0x49')]=intUtil[_0xd61d('0x4a')](_0x4960b1['serverUrl']);if(_0x2a6226&&_0x2a6226[_0xd61d('0x4b')]){logger[_0xd61d('0xc')](_0xd61d('0x4c'),_0xd61d('0x4d'));_0x3055c6[_0xd61d('0x4e')]=util[_0xd61d('0xe')](_0xd61d('0x4f'),_0x4960b1['serverUrl'],_0x3055c6[_0xd61d('0x50')],md5(_0x3055c6[_0xd61d('0x50')]));}else{_0x3055c6[_0xd61d('0x4e')]='';}headers[_0xd61d('0x51')]=getAuth(_0x4960b1);return getUser(_0x4960b1,_0x15a9e2[_0xd61d('0x52')])[_0xd61d('0x16')](function(_0x18cb9e){_0x583bb0=_0x18cb9e;logger[_0xd61d('0xc')](_0xd61d('0x53'),_0x583bb0['id']);return getEndUser(_0x4960b1,_0x3055c6[_0xd61d('0x54')],_0x3055c6[_0xd61d('0x55')]);})[_0xd61d('0x16')](function(_0x29ecdf){_0x2c9c05=_0x29ecdf;logger[_0xd61d('0xc')](_0xd61d('0x56'),_0x2c9c05['id']);return getTicket(_0x4960b1,_0x583bb0,_0x2c9c05,_0x4d579b,_0x3055c6);})['then'](function(_0x7344a5){if(_0x7344a5){logger[_0xd61d('0xc')](_0xd61d('0x57'),_0x7344a5['id']);switch(_0x4960b1[_0xd61d('0x3f')]){case _0xd61d('0x58'):logger[_0xd61d('0xc')](_0xd61d('0x4c'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0xd61d('0x59'),_0x4960b1[_0xd61d('0x10')],_0x583bb0['id'],_0x7344a5['id']),'method':_0xd61d('0x5a')});case _0xd61d('0x5b'):logger[_0xd61d('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd61d('0xe')](_0xd61d('0x5c'),_0x15a9e2[_0xd61d('0x47')]),_0xd61d('0x5d'),{'uri':util['format']('%s/agent/tickets/%s',_0x4960b1[_0xd61d('0x10')]['replace'](_0xd61d('0x5e'),''),_0x7344a5['id'])});break;default:logger[_0xd61d('0x5f')]('[QUEUE]',_0xd61d('0x60'));}}})[_0xd61d('0x61')](function(_0x1e374f){logger[_0xd61d('0x5f')](_0xd61d('0x62'),util[_0xd61d('0x63')](_0x1e374f,{'showHidden':!![],'depth':null}));});};exports[_0xd61d('0x64')]=function(_0x5008a5,_0x3d2e4e,_0x430949,_0xdb35e5,_0x5ee3e9,_0x25f56e,_0x5d5d56){var _0x10efaf,_0x4f8fa0;_0x25f56e[_0xd61d('0x10')]=intUtil[_0xd61d('0x4a')](_0x25f56e[_0xd61d('0x10')]);_0x25f56e[_0xd61d('0x49')]=intUtil[_0xd61d('0x4a')](_0x25f56e[_0xd61d('0x49')]);if(_0x5d5d56&&_0x5d5d56['recordingFormat']&&_0x5d5d56[_0xd61d('0x65')]!==_0xd61d('0x66')){logger['info']('[OUTBOUND]',_0xd61d('0x4d'));_0x3d2e4e['recordingURL']=util[_0xd61d('0xe')](_0xd61d('0x4f'),_0x25f56e[_0xd61d('0x49')],_0x3d2e4e[_0xd61d('0x50')],md5(_0x3d2e4e['uniqueid']));}headers[_0xd61d('0x51')]=getAuth(_0x25f56e);return getUser(_0x25f56e,_0xdb35e5[_0xd61d('0x52')])['then'](function(_0x42ce1a){_0x10efaf=_0x42ce1a;logger[_0xd61d('0xc')]('The\x20User\x20ID\x20is:',_0x10efaf['id']);return getEndUser(_0x25f56e,_0x3d2e4e[_0xd61d('0x67')],_0x3d2e4e['destcalleridnum']);})['then'](function(_0xbae79a){_0x4f8fa0=_0xbae79a;logger[_0xd61d('0xc')](_0xd61d('0x56'),_0x4f8fa0['id']);return getTicket(_0x25f56e,_0x10efaf,_0x4f8fa0,_0x430949,_0x3d2e4e);})[_0xd61d('0x16')](function(_0x43ba62){if(_0x43ba62){logger[_0xd61d('0xc')](_0xd61d('0x57'),_0x43ba62['id']);switch(_0x25f56e[_0xd61d('0x3f')]){case'integrationTab':logger[_0xd61d('0xc')](_0xd61d('0x68'),_0xd61d('0x69'));return request({'uri':util['format'](_0xd61d('0x59'),_0x25f56e['remoteUri'],_0x10efaf['id'],_0x43ba62['id']),'method':_0xd61d('0x5a')});case'newTab':logger[_0xd61d('0xc')]('[OUTBOUND]',_0xd61d('0x6a'));emit(util['format']('user:%s',_0xdb35e5[_0xd61d('0x47')]),'trigger:browser:url',{'uri':util[_0xd61d('0xe')]('%s/agent/tickets/%s',_0x25f56e['remoteUri']['replace'](_0xd61d('0x5e'),''),_0x43ba62['id'])});break;default:logger[_0xd61d('0x5f')](_0xd61d('0x68'),_0xd61d('0x60'));}}})[_0xd61d('0x61')](function(_0x136f7f){logger[_0xd61d('0x5f')](_0xd61d('0x6b'),util[_0xd61d('0x63')](_0x136f7f,{'showHidden':!![],'depth':null}));});};exports[_0xd61d('0x6c')]=function(_0xdf9daf,_0x57def1,_0x5f503d,_0xc853a9,_0x1de555,_0x243501){var _0x1c4a07,_0x218e9d;_0x243501[_0xd61d('0x10')]=intUtil['stripTrailingSlash'](_0x243501['remoteUri']);_0x243501[_0xd61d('0x49')]=intUtil[_0xd61d('0x4a')](_0x243501[_0xd61d('0x49')]);if(_0x1de555&&_0x1de555['monitor_format']){logger['info']('['+_0x57def1['lastevent'][_0xd61d('0x6d')]()+']',_0xd61d('0x4d'));_0x57def1[_0xd61d('0x4e')]=util['format'](_0xd61d('0x4f'),_0x243501[_0xd61d('0x49')],_0x57def1['uniqueid'],md5(_0x57def1['uniqueid']));}else{_0x57def1['recordingURL']='';}headers['Authorization']=getAuth(_0x243501);return getUser(_0x243501)[_0xd61d('0x16')](function(_0x182c08){_0x1c4a07=_0x182c08;logger[_0xd61d('0xc')](_0xd61d('0x53'),_0x1c4a07['id']);return getEndUser(_0x243501,_0x57def1[_0xd61d('0x54')],_0x57def1[_0xd61d('0x55')]);})[_0xd61d('0x16')](function(_0x48bef5){_0x218e9d=_0x48bef5;logger[_0xd61d('0xc')](_0xd61d('0x56'),_0x218e9d['id']);return getTicket(_0x243501,_0x1c4a07,_0x218e9d,_0x5f503d,_0x57def1);})[_0xd61d('0x16')](function(_0x2a8451){if(_0x2a8451){logger[_0xd61d('0xc')](_0xd61d('0x57'),_0x2a8451['id']);}})[_0xd61d('0x61')](function(_0x1c0c93){logger[_0xd61d('0x5f')]('['+_0x57def1[_0xd61d('0x6e')][_0xd61d('0x6d')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xd61d('0x63')](_0x1c0c93,{'showHidden':!![],'depth':null}));});};