e449645c2908d94b5986e84d35b489568b3ba077
[motion2.git] / server / services / ami / trigger / integration / freshdesk.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 _0x78c7=['info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','<br>','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','variable','variableName','Variable','push','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','user:%s','lastevent','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit'];(function(_0x298b53,_0x3f830d){var _0x370c14=function(_0x16a8d7){while(--_0x16a8d7){_0x298b53['push'](_0x298b53['shift']());}};_0x370c14(++_0x3f830d);}(_0x78c7,0xb2));var _0x778c=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x78c7[_0x87b0ff];return _0x3bc0b2;};'use strict';var _=require(_0x778c('0x0'));var rp=require(_0x778c('0x1'));var md5=require(_0x778c('0x2'));var util=require(_0x778c('0x3'));var Redis=require(_0x778c('0x4'));var intUtil=require(_0x778c('0x5'));var config=require(_0x778c('0x6'));var logger=require('../../../../config/logger')(_0x778c('0x7'));config[_0x778c('0x8')]=_[_0x778c('0x9')](config[_0x778c('0x8')],{'host':_0x778c('0xa'),'port':0x18eb});var io=require(_0x778c('0xb'))(new Redis(config['redis']));var headers={'Content-Type':_0x778c('0xc'),'Accept':_0x778c('0xc')};function emit(_0x3e9f27,_0x514d55,_0x331997){io['to'](_0x3e9f27)[_0x778c('0xd')](_0x514d55,_0x331997);}function getTicket(_0x139cdb,_0x5cd23a,_0x8a739c,_0x55c8e2,_0x41093f){logger[_0x778c('0xe')](_0x778c('0xf'));var _0x4d0643=_[_0x778c('0x10')]({'responder_id':_0x5cd23a['id'],'requester_id':_0x8a739c['id'],'name':util[_0x778c('0x11')](_0x778c('0x12'),_0x41093f['calleridname']),'phone':_0x41093f[_0x778c('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x778c('0x14')](_0x55c8e2['Subjects'],_0x41093f,'\x20'),'description':intUtil[_0x778c('0x14')](_0x55c8e2['Descriptions'],_0x41093f,_0x778c('0x15')),'tags':getTags(_0x55c8e2['Tags'],_0x778c('0x16'))},getCustomFields(_0x55c8e2[_0x778c('0x17')],_0x41093f));_0x4d0643[_0x778c('0x18')]=_[_0x778c('0x19')](_[_0x778c('0x1a')](_0x4d0643['custom_fields'],'id'),_0x778c('0x1b'));return request({'uri':util[_0x778c('0x11')](_0x778c('0x1c'),_0x139cdb['remoteUri']),'method':_0x778c('0x1d'),'body':_0x4d0643})[_0x778c('0x1e')](function(_0x502933){logger[_0x778c('0xe')](_0x778c('0x1f'));return _0x502933;});}function getUser(_0x3697d7,_0x4e1ea5){if(intUtil[_0x778c('0x20')](_0x4e1ea5)){return request({'uri':util[_0x778c('0x11')](_0x778c('0x21'),_0x3697d7['remoteUri']),'qs':{'email':_0x4e1ea5}})[_0x778c('0x1e')](function(_0x1c7bb5){if(_0x1c7bb5['length']){logger[_0x778c('0xe')](_0x778c('0x22'));return _[_0x778c('0x23')](_0x1c7bb5,function(_0x130991){return _0x130991[_0x778c('0x24')][_0x778c('0x25')]===_0x4e1ea5;});}else{logger[_0x778c('0xe')](_0x778c('0x26'));return request({'uri':util[_0x778c('0x11')](_0x778c('0x27'),_0x3697d7[_0x778c('0x28')])})['then'](function(_0x469f55){logger[_0x778c('0xe')](_0x778c('0x29'));return _0x469f55;});}});}else{logger[_0x778c('0xe')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x778c('0x11')]('%s/api/v2/agents/me',_0x3697d7['remoteUri'])})['then'](function(_0x31d59c){logger[_0x778c('0xe')](_0x778c('0x29'));return _0x31d59c;});}}function getEndUser(_0x7533d1,_0xb9940e,_0x2d3769){logger[_0x778c('0xe')](_0x778c('0x2a'),_0x2d3769);return request({'uri':util[_0x778c('0x11')](_0x778c('0x2b'),_0x7533d1['remoteUri']),'qs':{'phone':_0x2d3769}})[_0x778c('0x1e')](function(_0x13c36c){if(_0x13c36c[_0x778c('0x2c')]){logger[_0x778c('0xe')](_0x778c('0x2d'));return _['find'](_0x13c36c,{'phone':_0x2d3769});}else{logger['info'](_0x778c('0x2e'));return request({'uri':util[_0x778c('0x11')](_0x778c('0x2b'),_0x7533d1[_0x778c('0x28')]),'method':_0x778c('0x1d'),'body':{'name':_0xb9940e,'phone':_0x2d3769}})['then'](function(_0x543e7e){logger[_0x778c('0xe')](_0x778c('0x2f'));return _0x543e7e;});}});}function getAuth(_0x7f27ae){return util[_0x778c('0x11')](_0x778c('0x30'),new Buffer(_0x7f27ae[_0x778c('0x31')]+':X')[_0x778c('0x32')](_0x778c('0x33')));}function request(_0x19bd21){logger[_0x778c('0x34')](_0x778c('0x35'),JSON[_0x778c('0x36')](_0x19bd21));return rp(_[_0x778c('0x9')](_0x19bd21,{'method':_0x778c('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x1daaeb,_0x2a376d){var _0x964c9f=[];if(_0x1daaeb&&_0x1daaeb[_0x778c('0x2c')]>0x0){_0x964c9f=_[_0x778c('0x38')](_0x1daaeb,_0x2a376d);}return _0x964c9f;}function getCustomFields(_0xfff6f0,_0x171820){var _0x13f944=[];var _0x85af81={'custom_fields':[]};if(_0xfff6f0['length']>0x0){_[_0x778c('0x39')](_0xfff6f0,function(_0xb5a0de){if(_[_0x778c('0x3a')]([_0x778c('0x3b'),_0x778c('0x3c')],_0xb5a0de[_0x778c('0x3d')])&&_0xb5a0de[_0x778c('0x3e')]&&!_0xb5a0de[_0x778c('0x3f')]){_0x85af81[_0xb5a0de['nameField'][_0x778c('0x40')]()]=_0xb5a0de[_0x778c('0x41')][_0x778c('0x32')]();}else if(_[_0x778c('0x3a')]([_0x778c('0x3b'),'picklist'],_0xb5a0de['type'])&&_0xb5a0de[_0x778c('0x42')]&&_0xb5a0de[_0x778c('0x3f')]){_0x85af81[_0x778c('0x18')]['push']({'id':_0xb5a0de['idField'],'value':_0xb5a0de[_0x778c('0x41')][_0x778c('0x32')]()});}else if(_0xb5a0de['type']===_0x778c('0x43')&&_0xb5a0de[_0x778c('0x44')]&&_0xb5a0de[_0x778c('0x42')]&&_0xb5a0de[_0x778c('0x3f')]){_0x171820[_0xb5a0de[_0x778c('0x44')]]&&_0x85af81[_0x778c('0x18')]['push']({'id':_0xb5a0de['idField'],'value':_0x171820[_0xb5a0de[_0x778c('0x44')]][_0x778c('0x32')]()});}else if(_0xb5a0de[_0x778c('0x3d')]==='customVariable'&&_0xb5a0de[_0x778c('0x45')]&&_0xb5a0de['Variable'][_0x778c('0x16')]&&_0xb5a0de['idField']&&_0xb5a0de['customField']){_0x171820[_0xb5a0de['Variable'][_0x778c('0x16')]['toLowerCase']()]&&_0x85af81[_0x778c('0x18')][_0x778c('0x46')]({'id':_0xb5a0de[_0x778c('0x42')],'value':_0x171820[_0xb5a0de[_0x778c('0x45')][_0x778c('0x16')]['toLowerCase']()]['toString']()});}});}return _0x85af81;}exports['queue']=function(_0x31409a,_0x364de3,_0xb051d4,_0x2fe8aa,_0xea804,_0x4d3b29){var _0x1175fc,_0x41154c;_0x4d3b29[_0x778c('0x28')]=intUtil[_0x778c('0x47')](_0x4d3b29[_0x778c('0x28')]);_0x4d3b29[_0x778c('0x48')]=intUtil['stripTrailingSlash'](_0x4d3b29[_0x778c('0x48')]);if(_0xea804&&_0xea804[_0x778c('0x49')]){logger['info'](_0x778c('0x4a'),'Recording\x20is\x20enabled!');_0x364de3[_0x778c('0x4b')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4d3b29[_0x778c('0x48')],_0x364de3[_0x778c('0x4c')],md5(_0x364de3[_0x778c('0x4c')]));}else{_0x364de3[_0x778c('0x4b')]='';}headers['Authorization']=getAuth(_0x4d3b29);return getUser(_0x4d3b29,_0x2fe8aa['email'])['then'](function(_0x180e57){_0x1175fc=_0x180e57;logger[_0x778c('0xe')]('The\x20User\x20ID\x20is:',_0x1175fc['id']);return getEndUser(_0x4d3b29,_0x364de3[_0x778c('0x4d')],_0x364de3[_0x778c('0x13')]);})['then'](function(_0x4a15e1){_0x41154c=_0x4a15e1;logger[_0x778c('0xe')](_0x778c('0x4e'),_0x41154c['id']);return getTicket(_0x4d3b29,_0x1175fc,_0x41154c,_0xb051d4,_0x364de3);})[_0x778c('0x1e')](function(_0x564e05){if(_0x564e05&&_0x564e05['id']){logger[_0x778c('0xe')]('Ticket\x20created!');logger[_0x778c('0xe')](_0x778c('0x4f'),_0x564e05['id']);logger[_0x778c('0xe')]('[QUEUE]',_0x778c('0x50'));emit(util[_0x778c('0x11')]('user:%s',_0x2fe8aa[_0x778c('0x16')]),_0x778c('0x51'),{'uri':util[_0x778c('0x11')](_0x778c('0x52'),_0x4d3b29[_0x778c('0x28')],_0x564e05['id'])});}})[_0x778c('0x53')](function(_0x345f6a){logger[_0x778c('0x54')](_0x778c('0x4a'),JSON['stringify'](_0x345f6a));});};exports[_0x778c('0x55')]=function(_0x8d4f85,_0x1d419c,_0x1c461b,_0x3bc1cb,_0x25ee53,_0x45d1cc,_0x53c12f){var _0x4a406d,_0x583b2c;_0x45d1cc[_0x778c('0x28')]=intUtil[_0x778c('0x47')](_0x45d1cc[_0x778c('0x28')]);_0x45d1cc[_0x778c('0x48')]=intUtil[_0x778c('0x47')](_0x45d1cc[_0x778c('0x48')]);if(_0x53c12f&&_0x53c12f[_0x778c('0x56')]&&_0x53c12f[_0x778c('0x56')]!=='none'){logger[_0x778c('0xe')](_0x778c('0x57'),_0x778c('0x58'));_0x1d419c[_0x778c('0x4b')]=util[_0x778c('0x11')](_0x778c('0x59'),_0x45d1cc['serverUrl'],_0x1d419c[_0x778c('0x4c')],md5(_0x1d419c[_0x778c('0x4c')]));}headers[_0x778c('0x5a')]=getAuth(_0x45d1cc);return getUser(_0x45d1cc,_0x3bc1cb[_0x778c('0x25')])[_0x778c('0x1e')](function(_0x2e4435){_0x4a406d=_0x2e4435;logger[_0x778c('0xe')]('The\x20User\x20ID\x20is:',_0x4a406d['id']);return getEndUser(_0x45d1cc,_0x1d419c[_0x778c('0x5b')],_0x1d419c['destcalleridnum']);})[_0x778c('0x1e')](function(_0x4e1bf4){_0x583b2c=_0x4e1bf4;logger['info'](_0x778c('0x4e'),_0x583b2c['id']);return getTicket(_0x45d1cc,_0x4a406d,_0x583b2c,_0x1c461b,_0x1d419c);})[_0x778c('0x1e')](function(_0x3258ac){if(_0x3258ac&&_0x3258ac['id']){logger[_0x778c('0xe')]('Ticket\x20created!');logger['info'](_0x778c('0x4f'),_0x3258ac['id']);logger['info'](_0x778c('0x57'),_0x778c('0x50'));emit(util[_0x778c('0x11')](_0x778c('0x5c'),_0x3bc1cb['name']),'trigger:browser:url',{'uri':util[_0x778c('0x11')](_0x778c('0x52'),_0x45d1cc[_0x778c('0x28')],_0x3258ac['id'])});}})[_0x778c('0x53')](function(_0x41f425){logger[_0x778c('0x54')](_0x778c('0x57'),JSON[_0x778c('0x36')](_0x41f425));});};exports['unmanaged']=function(_0x429966,_0x228ef8,_0x513e54,_0x55382e,_0xb764fe,_0x15fa87){var _0x491612,_0x22a73f;_0x15fa87['remoteUri']=intUtil[_0x778c('0x47')](_0x15fa87[_0x778c('0x28')]);_0x15fa87[_0x778c('0x48')]=intUtil[_0x778c('0x47')](_0x15fa87[_0x778c('0x48')]);if(_0xb764fe&&_0xb764fe['monitor_format']){logger[_0x778c('0xe')]('['+_0x228ef8[_0x778c('0x5d')][_0x778c('0x5e')]()+']',_0x778c('0x58'));_0x228ef8[_0x778c('0x4b')]=util['format'](_0x778c('0x59'),_0x15fa87[_0x778c('0x48')],_0x228ef8['uniqueid'],md5(_0x228ef8[_0x778c('0x4c')]));}else{_0x228ef8[_0x778c('0x4b')]='';}headers['Authorization']=getAuth(_0x15fa87);return getUser(_0x15fa87,'')[_0x778c('0x1e')](function(_0x5cf043){_0x491612=_0x5cf043;logger['info'](_0x778c('0x5f'),_0x491612['id']);return getEndUser(_0x15fa87,_0x228ef8[_0x778c('0x4d')],_0x228ef8[_0x778c('0x13')]);})['then'](function(_0x263657){_0x22a73f=_0x263657;logger[_0x778c('0xe')](_0x778c('0x4e'),_0x22a73f['id']);return getTicket(_0x15fa87,_0x491612,_0x22a73f,_0x513e54,_0x228ef8);})['then'](function(_0xa45a5e){if(_0xa45a5e){logger[_0x778c('0xe')](_0x778c('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0xa45a5e['id']);}})['catch'](function(_0x2ffdaf){logger[_0x778c('0x54')]('['+_0x228ef8[_0x778c('0x5d')][_0x778c('0x5e')]()+']',JSON['stringify'](_0x2ffdaf));});};