a1a8c33ee1f7d50a479aa37481aa24e2dc651ca1
[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 _0xcc06=['getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','remoteUri','Ticket\x20created!','validateEmail','length','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','apiKey','toString','base64','debug','[HTTP]','stringify','GET','includes','picklist','nameField','toLowerCase','content','string','type','idField','customField','push','variableName','customVariable','Variable','queue','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','unmanaged','lastevent','Recording\x20is\x20enabled!','catch','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname'];(function(_0x3043fe,_0x2793a3){var _0x568bbf=function(_0x3a3c21){while(--_0x3a3c21){_0x3043fe['push'](_0x3043fe['shift']());}};_0x568bbf(++_0x2793a3);}(_0xcc06,0xab));var _0x6cc0=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xcc06[_0x47e7cb];return _0x2a8874;};'use strict';var _=require(_0x6cc0('0x0'));var rp=require(_0x6cc0('0x1'));var md5=require(_0x6cc0('0x2'));var util=require(_0x6cc0('0x3'));var Redis=require(_0x6cc0('0x4'));var intUtil=require(_0x6cc0('0x5'));var config=require('../../../../config/environment');var logger=require(_0x6cc0('0x6'))(_0x6cc0('0x7'));config[_0x6cc0('0x8')]=_[_0x6cc0('0x9')](config[_0x6cc0('0x8')],{'host':_0x6cc0('0xa'),'port':0x18eb});var io=require(_0x6cc0('0xb'))(new Redis(config[_0x6cc0('0x8')]));var headers={'Content-Type':_0x6cc0('0xc'),'Accept':_0x6cc0('0xc')};function emit(_0x23ade8,_0x5f327b,_0x18253c){io['to'](_0x23ade8)[_0x6cc0('0xd')](_0x5f327b,_0x18253c);}function getTicket(_0xcf4f28,_0xd10af4,_0x2868f4,_0x1ad7af,_0x597c28){logger[_0x6cc0('0xe')](_0x6cc0('0xf'));var _0x335f3f=_['merge']({'responder_id':_0xd10af4['id'],'requester_id':_0x2868f4['id'],'name':util[_0x6cc0('0x10')](_0x6cc0('0x11'),_0x597c28[_0x6cc0('0x12')]),'phone':_0x597c28['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x6cc0('0x13')](_0x1ad7af[_0x6cc0('0x14')],_0x597c28,'\x20'),'description':intUtil['getString'](_0x1ad7af[_0x6cc0('0x15')],_0x597c28,_0x6cc0('0x16')),'tags':getTags(_0x1ad7af[_0x6cc0('0x17')],_0x6cc0('0x18'))},getCustomFields(_0x1ad7af[_0x6cc0('0x19')],_0x597c28));_0x335f3f[_0x6cc0('0x1a')]=_[_0x6cc0('0x1b')](_[_0x6cc0('0x1c')](_0x335f3f[_0x6cc0('0x1a')],'id'),_0x6cc0('0x1d'));return request({'uri':util[_0x6cc0('0x10')]('%s/api/v2/tickets',_0xcf4f28[_0x6cc0('0x1e')]),'method':'POST','body':_0x335f3f})['then'](function(_0xae2a1e){logger['info'](_0x6cc0('0x1f'));return _0xae2a1e;});}function getUser(_0x259871,_0x44c3c4){if(intUtil[_0x6cc0('0x20')](_0x44c3c4)){return request({'uri':util['format']('%s/api/v2/agents',_0x259871[_0x6cc0('0x1e')]),'qs':{'email':_0x44c3c4}})['then'](function(_0x2ecffd){if(_0x2ecffd[_0x6cc0('0x21')]){logger[_0x6cc0('0xe')]('Agent\x20found!');return _['find'](_0x2ecffd,function(_0x9c3fe6){return _0x9c3fe6[_0x6cc0('0x22')]['email']===_0x44c3c4;});}else{logger['info'](_0x6cc0('0x23'));return request({'uri':util[_0x6cc0('0x10')](_0x6cc0('0x24'),_0x259871[_0x6cc0('0x1e')])})[_0x6cc0('0x25')](function(_0x302281){logger[_0x6cc0('0xe')](_0x6cc0('0x26'));return _0x302281;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x6cc0('0x10')](_0x6cc0('0x24'),_0x259871[_0x6cc0('0x1e')])})['then'](function(_0x3ac287){logger[_0x6cc0('0xe')](_0x6cc0('0x26'));return _0x3ac287;});}}function getEndUser(_0x5d5ad7,_0x5dea9b,_0x4b313b){logger[_0x6cc0('0xe')](_0x6cc0('0x27'),_0x4b313b);return request({'uri':util['format'](_0x6cc0('0x28'),_0x5d5ad7[_0x6cc0('0x1e')]),'qs':{'phone':_0x4b313b}})[_0x6cc0('0x25')](function(_0x3c5f3a){if(_0x3c5f3a[_0x6cc0('0x21')]){logger[_0x6cc0('0xe')](_0x6cc0('0x29'));return _[_0x6cc0('0x2a')](_0x3c5f3a,{'phone':_0x4b313b});}else{logger[_0x6cc0('0xe')](_0x6cc0('0x2b'));return request({'uri':util['format']('%s/api/v2/contacts',_0x5d5ad7['remoteUri']),'method':_0x6cc0('0x2c'),'body':{'name':_0x5dea9b,'phone':_0x4b313b}})['then'](function(_0x19e6e8){logger[_0x6cc0('0xe')](_0x6cc0('0x2d'));return _0x19e6e8;});}});}function getAuth(_0x3eb9e4){return util[_0x6cc0('0x10')]('Basic\x20%s',new Buffer(_0x3eb9e4[_0x6cc0('0x2e')]+':X')[_0x6cc0('0x2f')](_0x6cc0('0x30')));}function request(_0x568119){logger[_0x6cc0('0x31')](_0x6cc0('0x32'),JSON[_0x6cc0('0x33')](_0x568119));return rp(_['defaults'](_0x568119,{'method':_0x6cc0('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x1b1a13,_0xcac6d){var _0x157055=[];if(_0x1b1a13&&_0x1b1a13[_0x6cc0('0x21')]>0x0){_0x157055=_['map'](_0x1b1a13,_0xcac6d);}return _0x157055;}function getCustomFields(_0x4c9faf,_0x4ace46){var _0x10d04f=[];var _0x21c4e8={'custom_fields':[]};if(_0x4c9faf['length']>0x0){_['forEach'](_0x4c9faf,function(_0x841572){if(_[_0x6cc0('0x35')](['string',_0x6cc0('0x36')],_0x841572['type'])&&_0x841572[_0x6cc0('0x37')]&&!_0x841572['customField']){_0x21c4e8[_0x841572[_0x6cc0('0x37')][_0x6cc0('0x38')]()]=_0x841572[_0x6cc0('0x39')][_0x6cc0('0x2f')]();}else if(_['includes']([_0x6cc0('0x3a'),'picklist'],_0x841572[_0x6cc0('0x3b')])&&_0x841572[_0x6cc0('0x3c')]&&_0x841572[_0x6cc0('0x3d')]){_0x21c4e8[_0x6cc0('0x1a')][_0x6cc0('0x3e')]({'id':_0x841572[_0x6cc0('0x3c')],'value':_0x841572['content'][_0x6cc0('0x2f')]()});}else if(_0x841572[_0x6cc0('0x3b')]==='variable'&&_0x841572[_0x6cc0('0x3f')]&&_0x841572[_0x6cc0('0x3c')]&&_0x841572[_0x6cc0('0x3d')]){_0x4ace46[_0x841572[_0x6cc0('0x3f')]]&&_0x21c4e8[_0x6cc0('0x1a')][_0x6cc0('0x3e')]({'id':_0x841572[_0x6cc0('0x3c')],'value':_0x4ace46[_0x841572['variableName']][_0x6cc0('0x2f')]()});}else if(_0x841572[_0x6cc0('0x3b')]===_0x6cc0('0x40')&&_0x841572[_0x6cc0('0x41')]&&_0x841572[_0x6cc0('0x41')][_0x6cc0('0x18')]&&_0x841572[_0x6cc0('0x3c')]&&_0x841572[_0x6cc0('0x3d')]){_0x4ace46[_0x841572[_0x6cc0('0x41')][_0x6cc0('0x18')][_0x6cc0('0x38')]()]&&_0x21c4e8[_0x6cc0('0x1a')][_0x6cc0('0x3e')]({'id':_0x841572['idField'],'value':_0x4ace46[_0x841572[_0x6cc0('0x41')]['name'][_0x6cc0('0x38')]()][_0x6cc0('0x2f')]()});}});}return _0x21c4e8;}exports[_0x6cc0('0x42')]=function(_0x3f57e4,_0x10b70b,_0x552167,_0x5a76df,_0x3756c1,_0x332b69){var _0x1a5396,_0x161501;_0x332b69[_0x6cc0('0x1e')]=intUtil['stripTrailingSlash'](_0x332b69[_0x6cc0('0x1e')]);_0x332b69[_0x6cc0('0x43')]=intUtil['stripTrailingSlash'](_0x332b69[_0x6cc0('0x43')]);if(_0x3756c1&&_0x3756c1[_0x6cc0('0x44')]){logger['info'](_0x6cc0('0x45'),'Recording\x20is\x20enabled!');_0x10b70b[_0x6cc0('0x46')]=util[_0x6cc0('0x10')](_0x6cc0('0x47'),_0x332b69['serverUrl'],_0x10b70b[_0x6cc0('0x48')],md5(_0x10b70b['uniqueid']));}else{_0x10b70b[_0x6cc0('0x46')]='';}headers['Authorization']=getAuth(_0x332b69);return getUser(_0x332b69,_0x5a76df[_0x6cc0('0x49')])['then'](function(_0x5ed938){_0x1a5396=_0x5ed938;logger[_0x6cc0('0xe')]('The\x20User\x20ID\x20is:',_0x1a5396['id']);return getEndUser(_0x332b69,_0x10b70b['calleridname'],_0x10b70b[_0x6cc0('0x4a')]);})['then'](function(_0x51673c){_0x161501=_0x51673c;logger['info'](_0x6cc0('0x4b'),_0x161501['id']);return getTicket(_0x332b69,_0x1a5396,_0x161501,_0x552167,_0x10b70b);})[_0x6cc0('0x25')](function(_0x401881){if(_0x401881&&_0x401881['id']){logger[_0x6cc0('0xe')](_0x6cc0('0x1f'));logger[_0x6cc0('0xe')]('The\x20Ticket\x20ID\x20is:',_0x401881['id']);logger['info'](_0x6cc0('0x45'),_0x6cc0('0x4c'));emit(util[_0x6cc0('0x10')](_0x6cc0('0x4d'),_0x5a76df[_0x6cc0('0x18')]),_0x6cc0('0x4e'),{'uri':util[_0x6cc0('0x10')](_0x6cc0('0x4f'),_0x332b69[_0x6cc0('0x1e')],_0x401881['id'])});}})['catch'](function(_0x5781a5){logger[_0x6cc0('0x50')](_0x6cc0('0x45'),JSON[_0x6cc0('0x33')](_0x5781a5));});};exports[_0x6cc0('0x51')]=function(_0x383438,_0x1675f4,_0x4b8ae6,_0x9cc604,_0x4b5762,_0x1410e9,_0x1fe0f9){var _0xf7e01c,_0x294575;_0x1410e9['remoteUri']=intUtil['stripTrailingSlash'](_0x1410e9[_0x6cc0('0x1e')]);_0x1410e9['serverUrl']=intUtil[_0x6cc0('0x52')](_0x1410e9[_0x6cc0('0x43')]);if(_0x1fe0f9&&_0x1fe0f9[_0x6cc0('0x53')]&&_0x1fe0f9[_0x6cc0('0x53')]!==_0x6cc0('0x54')){logger[_0x6cc0('0xe')](_0x6cc0('0x55'),'Recording\x20is\x20enabled!');_0x1675f4[_0x6cc0('0x46')]=util[_0x6cc0('0x10')](_0x6cc0('0x47'),_0x1410e9['serverUrl'],_0x1675f4[_0x6cc0('0x48')],md5(_0x1675f4[_0x6cc0('0x48')]));}headers['Authorization']=getAuth(_0x1410e9);return getUser(_0x1410e9,_0x9cc604['email'])['then'](function(_0x5716d8){_0xf7e01c=_0x5716d8;logger['info'](_0x6cc0('0x56'),_0xf7e01c['id']);return getEndUser(_0x1410e9,_0x1675f4[_0x6cc0('0x57')],_0x1675f4[_0x6cc0('0x58')]);})['then'](function(_0x584962){_0x294575=_0x584962;logger['info'](_0x6cc0('0x4b'),_0x294575['id']);return getTicket(_0x1410e9,_0xf7e01c,_0x294575,_0x4b8ae6,_0x1675f4);})[_0x6cc0('0x25')](function(_0x89a750){if(_0x89a750&&_0x89a750['id']){logger[_0x6cc0('0xe')]('Ticket\x20created!');logger['info'](_0x6cc0('0x59'),_0x89a750['id']);logger[_0x6cc0('0xe')]('[OUTBOUND]',_0x6cc0('0x4c'));emit(util['format'](_0x6cc0('0x4d'),_0x9cc604[_0x6cc0('0x18')]),_0x6cc0('0x4e'),{'uri':util[_0x6cc0('0x10')]('%s/helpdesk/tickets/%d',_0x1410e9[_0x6cc0('0x1e')],_0x89a750['id'])});}})['catch'](function(_0x53f208){logger[_0x6cc0('0x50')](_0x6cc0('0x55'),JSON[_0x6cc0('0x33')](_0x53f208));});};exports[_0x6cc0('0x5a')]=function(_0x4a518b,_0x9be7e4,_0x3e71a1,_0x1f9839,_0x1badb4,_0xdc0066){var _0x51b79c,_0x43942b;_0xdc0066[_0x6cc0('0x1e')]=intUtil[_0x6cc0('0x52')](_0xdc0066[_0x6cc0('0x1e')]);_0xdc0066[_0x6cc0('0x43')]=intUtil['stripTrailingSlash'](_0xdc0066['serverUrl']);if(_0x1badb4&&_0x1badb4[_0x6cc0('0x44')]){logger['info']('['+_0x9be7e4[_0x6cc0('0x5b')]['toUpperCase']()+']',_0x6cc0('0x5c'));_0x9be7e4[_0x6cc0('0x46')]=util['format'](_0x6cc0('0x47'),_0xdc0066[_0x6cc0('0x43')],_0x9be7e4[_0x6cc0('0x48')],md5(_0x9be7e4['uniqueid']));}else{_0x9be7e4[_0x6cc0('0x46')]='';}headers['Authorization']=getAuth(_0xdc0066);return getUser(_0xdc0066,'')[_0x6cc0('0x25')](function(_0x1876c1){_0x51b79c=_0x1876c1;logger[_0x6cc0('0xe')](_0x6cc0('0x56'),_0x51b79c['id']);return getEndUser(_0xdc0066,_0x9be7e4[_0x6cc0('0x12')],_0x9be7e4[_0x6cc0('0x4a')]);})[_0x6cc0('0x25')](function(_0x327d96){_0x43942b=_0x327d96;logger['info']('The\x20Enduser\x20ID\x20is:',_0x43942b['id']);return getTicket(_0xdc0066,_0x51b79c,_0x43942b,_0x3e71a1,_0x9be7e4);})[_0x6cc0('0x25')](function(_0x211abf){if(_0x211abf){logger[_0x6cc0('0xe')](_0x6cc0('0x1f'));logger[_0x6cc0('0xe')](_0x6cc0('0x59'),_0x211abf['id']);}})[_0x6cc0('0x5d')](function(_0x19427e){logger[_0x6cc0('0x50')]('['+_0x9be7e4[_0x6cc0('0x5b')][_0x6cc0('0x5e')]()+']',JSON['stringify'](_0x19427e));});};