Built motion from commit (unavailable).|2.5.21
[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 _0x2cf0=['defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','Tags','Fields','custom_fields','mapValues','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Basic\x20%s','apiKey','toString','base64','debug','map','forEach','type','string','nameField','customField','toLowerCase','idField','push','content','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','error','unmanaged','monitor_format','calleridnum','lastevent','toUpperCase','stringify','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis'];(function(_0x5e1679,_0x11995e){var _0xaef649=function(_0x12d00a){while(--_0x12d00a){_0x5e1679['push'](_0x5e1679['shift']());}};_0xaef649(++_0x11995e);}(_0x2cf0,0x1c9));var _0x02cf=function(_0x18220b,_0x1129e0){_0x18220b=_0x18220b-0x0;var _0x2a7887=_0x2cf0[_0x18220b];return _0x2a7887;};'use strict';var _=require(_0x02cf('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x02cf('0x1'));var Redis=require(_0x02cf('0x2'));var intUtil=require(_0x02cf('0x3'));var config=require(_0x02cf('0x4'));var logger=require(_0x02cf('0x5'))(_0x02cf('0x6'));config[_0x02cf('0x7')]=_[_0x02cf('0x8')](config['redis'],{'host':_0x02cf('0x9'),'port':0x18eb});var io=require(_0x02cf('0xa'))(new Redis(config[_0x02cf('0x7')]));var headers={'Content-Type':_0x02cf('0xb'),'Accept':'application/json'};function emit(_0x3a212d,_0x53bef9,_0x54c31e){io['to'](_0x3a212d)['emit'](_0x53bef9,_0x54c31e);}function getTicket(_0xcd1d2a,_0x2f5dda,_0x1cb295,_0x272402,_0x289225){logger[_0x02cf('0xc')](_0x02cf('0xd'));var _0x3f3683=_['merge']({'responder_id':_0x2f5dda['id'],'requester_id':_0x1cb295['id'],'name':util[_0x02cf('0xe')](_0x02cf('0xf'),_0x289225[_0x02cf('0x10')]),'phone':_0x289225['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x02cf('0x11')](_0x272402[_0x02cf('0x12')],_0x289225,'\x20'),'description':intUtil[_0x02cf('0x11')](_0x272402[_0x02cf('0x13')],_0x289225,'<br>'),'tags':getTags(_0x272402[_0x02cf('0x14')],'name')},getCustomFields(_0x272402[_0x02cf('0x15')],_0x289225));_0x3f3683[_0x02cf('0x16')]=_[_0x02cf('0x17')](_['keyBy'](_0x3f3683[_0x02cf('0x16')],'id'),_0x02cf('0x18'));return request({'uri':util[_0x02cf('0xe')](_0x02cf('0x19'),_0xcd1d2a[_0x02cf('0x1a')]),'method':_0x02cf('0x1b'),'body':_0x3f3683})[_0x02cf('0x1c')](function(_0x48f120){logger['info'](_0x02cf('0x1d'));return _0x48f120;});}function getUser(_0x38e838,_0xf360aa){if(intUtil[_0x02cf('0x1e')](_0xf360aa)){return request({'uri':util['format'](_0x02cf('0x1f'),_0x38e838[_0x02cf('0x1a')]),'qs':{'email':_0xf360aa}})[_0x02cf('0x1c')](function(_0x583cea){if(_0x583cea[_0x02cf('0x20')]){logger[_0x02cf('0xc')](_0x02cf('0x21'));return _[_0x02cf('0x22')](_0x583cea,function(_0x34918a){return _0x34918a[_0x02cf('0x23')][_0x02cf('0x24')]===_0xf360aa;});}else{logger[_0x02cf('0xc')](_0x02cf('0x25'));return request({'uri':util[_0x02cf('0xe')](_0x02cf('0x26'),_0x38e838[_0x02cf('0x1a')])})['then'](function(_0x14fc67){logger[_0x02cf('0xc')]('Admin\x20account\x20selected.');return _0x14fc67;});}});}else{logger['info'](_0x02cf('0x27'));return request({'uri':util[_0x02cf('0xe')](_0x02cf('0x26'),_0x38e838[_0x02cf('0x1a')])})[_0x02cf('0x1c')](function(_0x32d0b3){logger[_0x02cf('0xc')](_0x02cf('0x28'));return _0x32d0b3;});}}function getEndUser(_0x3cc805,_0x2a3e8f,_0x24dea4){logger[_0x02cf('0xc')](_0x02cf('0x29'),_0x24dea4);return request({'uri':util[_0x02cf('0xe')](_0x02cf('0x2a'),_0x3cc805[_0x02cf('0x1a')]),'qs':{'phone':_0x24dea4}})[_0x02cf('0x1c')](function(_0x3f12ea){if(_0x3f12ea[_0x02cf('0x20')]){logger[_0x02cf('0xc')](_0x02cf('0x2b'));return _[_0x02cf('0x22')](_0x3f12ea,{'phone':_0x24dea4});}else{logger[_0x02cf('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x02cf('0xe')](_0x02cf('0x2a'),_0x3cc805[_0x02cf('0x1a')]),'method':_0x02cf('0x1b'),'body':{'name':_0x2a3e8f,'phone':_0x24dea4}})[_0x02cf('0x1c')](function(_0x3605d7){logger[_0x02cf('0xc')]('Enduser\x20created.');return _0x3605d7;});}});}function getAuth(_0x4fdd31){return util[_0x02cf('0xe')](_0x02cf('0x2c'),new Buffer(_0x4fdd31[_0x02cf('0x2d')]+':X')[_0x02cf('0x2e')](_0x02cf('0x2f')));}function request(_0x4a2c98){logger[_0x02cf('0x30')]('[HTTP]',JSON['stringify'](_0x4a2c98));return rp(_['defaults'](_0x4a2c98,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x2c3aab,_0x42df6e){var _0x3fe5a4=[];if(_0x2c3aab&&_0x2c3aab[_0x02cf('0x20')]>0x0){_0x3fe5a4=_[_0x02cf('0x31')](_0x2c3aab,_0x42df6e);}return _0x3fe5a4;}function getCustomFields(_0x1336a8,_0x302115){var _0x287378=[];var _0x327c10={'custom_fields':[]};if(_0x1336a8[_0x02cf('0x20')]>0x0){_[_0x02cf('0x32')](_0x1336a8,function(_0x4a5b3){if(_0x4a5b3[_0x02cf('0x33')]===_0x02cf('0x34')&&_0x4a5b3[_0x02cf('0x35')]&&!_0x4a5b3[_0x02cf('0x36')]){_0x327c10[_0x4a5b3[_0x02cf('0x35')][_0x02cf('0x37')]()]=_0x4a5b3['content'][_0x02cf('0x2e')]();}else if(_0x4a5b3[_0x02cf('0x33')]===_0x02cf('0x34')&&_0x4a5b3[_0x02cf('0x38')]&&_0x4a5b3[_0x02cf('0x36')]){_0x327c10['custom_fields'][_0x02cf('0x39')]({'id':_0x4a5b3[_0x02cf('0x38')],'value':_0x4a5b3[_0x02cf('0x3a')][_0x02cf('0x2e')]()});}else if(_0x4a5b3['type']===_0x02cf('0x3b')&&_0x4a5b3[_0x02cf('0x3c')]&&_0x4a5b3[_0x02cf('0x38')]&&_0x4a5b3['customField']){_0x302115[_0x4a5b3['variableName']]&&_0x327c10[_0x02cf('0x16')]['push']({'id':_0x4a5b3[_0x02cf('0x38')],'value':_0x302115[_0x4a5b3['variableName']][_0x02cf('0x2e')]()});}else if(_0x4a5b3[_0x02cf('0x33')]===_0x02cf('0x3d')&&_0x4a5b3[_0x02cf('0x3e')]&&_0x4a5b3[_0x02cf('0x3e')]['name']&&_0x4a5b3[_0x02cf('0x38')]&&_0x4a5b3[_0x02cf('0x36')]){_0x302115[_0x4a5b3['Variable'][_0x02cf('0x3f')][_0x02cf('0x37')]()]&&_0x327c10[_0x02cf('0x16')]['push']({'id':_0x4a5b3[_0x02cf('0x38')],'value':_0x302115[_0x4a5b3[_0x02cf('0x3e')][_0x02cf('0x3f')][_0x02cf('0x37')]()][_0x02cf('0x2e')]()});}});}return _0x327c10;}exports[_0x02cf('0x40')]=function(_0x3ea994,_0x515150,_0x2318a6,_0x326ed5,_0x46bbe2,_0x516bf4){var _0x529140,_0x253b6f;_0x516bf4[_0x02cf('0x1a')]=intUtil['stripTrailingSlash'](_0x516bf4[_0x02cf('0x1a')]);_0x516bf4['serverUrl']=intUtil[_0x02cf('0x41')](_0x516bf4[_0x02cf('0x42')]);if(_0x46bbe2&&_0x46bbe2['monitor_format']){logger[_0x02cf('0xc')](_0x02cf('0x43'),_0x02cf('0x44'));_0x515150[_0x02cf('0x45')]=util[_0x02cf('0xe')](_0x02cf('0x46'),_0x516bf4['serverUrl'],_0x515150[_0x02cf('0x47')],md5(_0x515150[_0x02cf('0x47')]));}else{_0x515150[_0x02cf('0x45')]='';}headers[_0x02cf('0x48')]=getAuth(_0x516bf4);return getUser(_0x516bf4,_0x326ed5[_0x02cf('0x24')])[_0x02cf('0x1c')](function(_0x1f3aac){_0x529140=_0x1f3aac;logger[_0x02cf('0xc')](_0x02cf('0x49'),_0x529140['id']);return getEndUser(_0x516bf4,_0x515150['calleridname'],_0x515150['calleridnum']);})[_0x02cf('0x1c')](function(_0x5c524a){_0x253b6f=_0x5c524a;logger[_0x02cf('0xc')](_0x02cf('0x4a'),_0x253b6f['id']);return getTicket(_0x516bf4,_0x529140,_0x253b6f,_0x2318a6,_0x515150);})[_0x02cf('0x1c')](function(_0x35b92b){if(_0x35b92b&&_0x35b92b['id']){logger[_0x02cf('0xc')](_0x02cf('0x1d'));logger[_0x02cf('0xc')](_0x02cf('0x4b'),_0x35b92b['id']);logger['info'](_0x02cf('0x43'),_0x02cf('0x4c'));emit(util[_0x02cf('0xe')](_0x02cf('0x4d'),_0x326ed5[_0x02cf('0x3f')]),_0x02cf('0x4e'),{'uri':util[_0x02cf('0xe')](_0x02cf('0x4f'),_0x516bf4[_0x02cf('0x1a')],_0x35b92b['id'])});}})[_0x02cf('0x50')](function(_0x5137f2){logger['error']('[QUEUE]',JSON['stringify'](_0x5137f2));});};exports[_0x02cf('0x51')]=function(_0x221df5,_0xe18aa4,_0x44e58e,_0x3e0520,_0xfc5635,_0x25c5aa,_0x20f498){var _0x280bd1,_0x441c9e;_0x25c5aa['remoteUri']=intUtil['stripTrailingSlash'](_0x25c5aa['remoteUri']);_0x25c5aa[_0x02cf('0x42')]=intUtil[_0x02cf('0x41')](_0x25c5aa[_0x02cf('0x42')]);if(_0x20f498&&_0x20f498[_0x02cf('0x52')]&&_0x20f498[_0x02cf('0x52')]!==_0x02cf('0x53')){logger['info'](_0x02cf('0x54'),_0x02cf('0x44'));_0xe18aa4[_0x02cf('0x45')]=util[_0x02cf('0xe')](_0x02cf('0x46'),_0x25c5aa['serverUrl'],_0xe18aa4[_0x02cf('0x47')],md5(_0xe18aa4[_0x02cf('0x47')]));}headers[_0x02cf('0x48')]=getAuth(_0x25c5aa);return getUser(_0x25c5aa,_0x3e0520[_0x02cf('0x24')])[_0x02cf('0x1c')](function(_0x2a79d5){_0x280bd1=_0x2a79d5;logger['info'](_0x02cf('0x49'),_0x280bd1['id']);return getEndUser(_0x25c5aa,_0xe18aa4['destcalleridname'],_0xe18aa4[_0x02cf('0x55')]);})[_0x02cf('0x1c')](function(_0x216f21){_0x441c9e=_0x216f21;logger[_0x02cf('0xc')](_0x02cf('0x4a'),_0x441c9e['id']);return getTicket(_0x25c5aa,_0x280bd1,_0x441c9e,_0x44e58e,_0xe18aa4);})[_0x02cf('0x1c')](function(_0x5b0b8d){if(_0x5b0b8d&&_0x5b0b8d['id']){logger[_0x02cf('0xc')]('Ticket\x20created!');logger[_0x02cf('0xc')]('The\x20Ticket\x20ID\x20is:',_0x5b0b8d['id']);logger[_0x02cf('0xc')](_0x02cf('0x54'),_0x02cf('0x4c'));emit(util[_0x02cf('0xe')](_0x02cf('0x4d'),_0x3e0520[_0x02cf('0x3f')]),'trigger:browser:url',{'uri':util[_0x02cf('0xe')]('%s/helpdesk/tickets/%d',_0x25c5aa[_0x02cf('0x1a')],_0x5b0b8d['id'])});}})[_0x02cf('0x50')](function(_0x5e7732){logger[_0x02cf('0x56')]('[OUTBOUND]',JSON['stringify'](_0x5e7732));});};exports[_0x02cf('0x57')]=function(_0x553bbe,_0x2e7b9f,_0x15ad1d,_0x13dcc9,_0x434b7e,_0x4e59fa){var _0x489fb7,_0x4b18fa;_0x4e59fa['remoteUri']=intUtil[_0x02cf('0x41')](_0x4e59fa[_0x02cf('0x1a')]);_0x4e59fa[_0x02cf('0x42')]=intUtil['stripTrailingSlash'](_0x4e59fa[_0x02cf('0x42')]);if(_0x434b7e&&_0x434b7e[_0x02cf('0x58')]){logger[_0x02cf('0xc')]('['+_0x2e7b9f['lastevent']['toUpperCase']()+']',_0x02cf('0x44'));_0x2e7b9f[_0x02cf('0x45')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e59fa[_0x02cf('0x42')],_0x2e7b9f[_0x02cf('0x47')],md5(_0x2e7b9f[_0x02cf('0x47')]));}else{_0x2e7b9f[_0x02cf('0x45')]='';}headers[_0x02cf('0x48')]=getAuth(_0x4e59fa);return getUser(_0x4e59fa,'')[_0x02cf('0x1c')](function(_0x4cda69){_0x489fb7=_0x4cda69;logger[_0x02cf('0xc')]('The\x20User\x20ID\x20is:',_0x489fb7['id']);return getEndUser(_0x4e59fa,_0x2e7b9f['calleridname'],_0x2e7b9f[_0x02cf('0x59')]);})[_0x02cf('0x1c')](function(_0xb5b8c1){_0x4b18fa=_0xb5b8c1;logger[_0x02cf('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4b18fa['id']);return getTicket(_0x4e59fa,_0x489fb7,_0x4b18fa,_0x15ad1d,_0x2e7b9f);})[_0x02cf('0x1c')](function(_0x27ddff){if(_0x27ddff){logger['info']('Ticket\x20created!');logger[_0x02cf('0xc')](_0x02cf('0x4b'),_0x27ddff['id']);}})[_0x02cf('0x50')](function(_0x2e3540){logger[_0x02cf('0x56')]('['+_0x2e7b9f[_0x02cf('0x5a')][_0x02cf('0x5b')]()+']',JSON[_0x02cf('0x5c')](_0x2e3540));});};