3e38cb9a9c72c627afd01f895b0ed9244ff8d174
[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 _0x4242=['calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','map','forEach','type','string','toLowerCase','content','customField','push','idField','variableName','customVariable','Variable','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:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','catch','[OUTBOUND]','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','format','calleridname'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0x4242,0xa7));var _0x2424=function(_0x219aba,_0x14d4b9){_0x219aba=_0x219aba-0x0;var _0x80b287=_0x4242[_0x219aba];return _0x80b287;};'use strict';var _=require(_0x2424('0x0'));var rp=require(_0x2424('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0x2424('0x2'));var intUtil=require(_0x2424('0x3'));var config=require(_0x2424('0x4'));var logger=require(_0x2424('0x5'))(_0x2424('0x6'));config[_0x2424('0x7')]=_[_0x2424('0x8')](config[_0x2424('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x2424('0x9'))(new Redis(config[_0x2424('0x7')]));var headers={'Content-Type':_0x2424('0xa'),'Accept':_0x2424('0xa')};function emit(_0xac4bec,_0x5f1c47,_0x4fd4ce){io['to'](_0xac4bec)[_0x2424('0xb')](_0x5f1c47,_0x4fd4ce);}function getTicket(_0x1cc696,_0x454a6d,_0x10effb,_0x50b9f7,_0xc0b0ff){logger[_0x2424('0xc')]('Creating\x20new\x20ticket...');var _0x4aa840=_['merge']({'responder_id':_0x454a6d['id'],'requester_id':_0x10effb['id'],'name':util[_0x2424('0xd')]('Caller\x20-\x20%s',_0xc0b0ff[_0x2424('0xe')]),'phone':_0xc0b0ff[_0x2424('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x2424('0x10')](_0x50b9f7[_0x2424('0x11')],_0xc0b0ff,'\x20'),'description':intUtil['getString'](_0x50b9f7[_0x2424('0x12')],_0xc0b0ff,_0x2424('0x13')),'tags':getTags(_0x50b9f7[_0x2424('0x14')],_0x2424('0x15'))},getCustomFields(_0x50b9f7[_0x2424('0x16')],_0xc0b0ff));_0x4aa840[_0x2424('0x17')]=_[_0x2424('0x18')](_['keyBy'](_0x4aa840[_0x2424('0x17')],'id'),'value');return request({'uri':util[_0x2424('0xd')]('%s/api/v2/tickets',_0x1cc696['remoteUri']),'method':_0x2424('0x19'),'body':_0x4aa840})[_0x2424('0x1a')](function(_0x1dc170){logger['info'](_0x2424('0x1b'));return _0x1dc170;});}function getUser(_0x2a87bc,_0x2e5ab3){if(intUtil[_0x2424('0x1c')](_0x2e5ab3)){return request({'uri':util['format'](_0x2424('0x1d'),_0x2a87bc['remoteUri']),'qs':{'email':_0x2e5ab3}})[_0x2424('0x1a')](function(_0x33f318){if(_0x33f318[_0x2424('0x1e')]){logger[_0x2424('0xc')](_0x2424('0x1f'));return _['find'](_0x33f318,function(_0x34ba35){return _0x34ba35[_0x2424('0x20')][_0x2424('0x21')]===_0x2e5ab3;});}else{logger[_0x2424('0xc')](_0x2424('0x22'));return request({'uri':util[_0x2424('0xd')](_0x2424('0x23'),_0x2a87bc[_0x2424('0x24')])})['then'](function(_0xe28849){logger['info'](_0x2424('0x25'));return _0xe28849;});}});}else{logger[_0x2424('0xc')](_0x2424('0x26'));return request({'uri':util[_0x2424('0xd')]('%s/api/v2/agents/me',_0x2a87bc[_0x2424('0x24')])})['then'](function(_0x8bbb58){logger[_0x2424('0xc')](_0x2424('0x25'));return _0x8bbb58;});}}function getEndUser(_0x257c0f,_0x22b6f8,_0xa2b541){logger[_0x2424('0xc')](_0x2424('0x27'),_0xa2b541);return request({'uri':util['format'](_0x2424('0x28'),_0x257c0f[_0x2424('0x24')]),'qs':{'phone':_0xa2b541}})['then'](function(_0xe3e186){if(_0xe3e186['length']){logger[_0x2424('0xc')](_0x2424('0x29'));return _[_0x2424('0x2a')](_0xe3e186,{'phone':_0xa2b541});}else{logger[_0x2424('0xc')](_0x2424('0x2b'));return request({'uri':util[_0x2424('0xd')](_0x2424('0x28'),_0x257c0f[_0x2424('0x24')]),'method':_0x2424('0x19'),'body':{'name':_0x22b6f8,'phone':_0xa2b541}})[_0x2424('0x1a')](function(_0x328573){logger['info'](_0x2424('0x2c'));return _0x328573;});}});}function getAuth(_0x226947){return util['format'](_0x2424('0x2d'),new Buffer(_0x226947[_0x2424('0x2e')]+':X')[_0x2424('0x2f')](_0x2424('0x30')));}function request(_0x5e745e){logger[_0x2424('0x31')](_0x2424('0x32'),JSON[_0x2424('0x33')](_0x5e745e));return rp(_[_0x2424('0x8')](_0x5e745e,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x31312d,_0x24a6eb){var _0x52028a=[];if(_0x31312d&&_0x31312d[_0x2424('0x1e')]>0x0){_0x52028a=_[_0x2424('0x34')](_0x31312d,_0x24a6eb);}return _0x52028a;}function getCustomFields(_0x2b1406,_0x2893b3){var _0x5057e9=[];var _0x1bd699={'custom_fields':[]};if(_0x2b1406[_0x2424('0x1e')]>0x0){_[_0x2424('0x35')](_0x2b1406,function(_0x7e53fa){if(_0x7e53fa[_0x2424('0x36')]===_0x2424('0x37')&&_0x7e53fa['nameField']&&!_0x7e53fa['customField']){_0x1bd699[_0x7e53fa['nameField'][_0x2424('0x38')]()]=_0x7e53fa[_0x2424('0x39')][_0x2424('0x2f')]();}else if(_0x7e53fa[_0x2424('0x36')]===_0x2424('0x37')&&_0x7e53fa['idField']&&_0x7e53fa[_0x2424('0x3a')]){_0x1bd699[_0x2424('0x17')][_0x2424('0x3b')]({'id':_0x7e53fa[_0x2424('0x3c')],'value':_0x7e53fa[_0x2424('0x39')][_0x2424('0x2f')]()});}else if(_0x7e53fa[_0x2424('0x36')]==='variable'&&_0x7e53fa[_0x2424('0x3d')]&&_0x7e53fa['idField']&&_0x7e53fa[_0x2424('0x3a')]){_0x2893b3[_0x7e53fa[_0x2424('0x3d')]]&&_0x1bd699[_0x2424('0x17')][_0x2424('0x3b')]({'id':_0x7e53fa[_0x2424('0x3c')],'value':_0x2893b3[_0x7e53fa['variableName']][_0x2424('0x2f')]()});}else if(_0x7e53fa[_0x2424('0x36')]===_0x2424('0x3e')&&_0x7e53fa['Variable']&&_0x7e53fa[_0x2424('0x3f')][_0x2424('0x15')]&&_0x7e53fa[_0x2424('0x3c')]&&_0x7e53fa[_0x2424('0x3a')]){_0x2893b3[_0x7e53fa[_0x2424('0x3f')][_0x2424('0x15')][_0x2424('0x38')]()]&&_0x1bd699[_0x2424('0x17')][_0x2424('0x3b')]({'id':_0x7e53fa['idField'],'value':_0x2893b3[_0x7e53fa[_0x2424('0x3f')][_0x2424('0x15')][_0x2424('0x38')]()]['toString']()});}});}return _0x1bd699;}exports[_0x2424('0x40')]=function(_0x201f2c,_0xdbdac3,_0x131d68,_0x2c4a66,_0x206e54,_0x30f08e){var _0x142b25,_0x107ec4;_0x30f08e[_0x2424('0x24')]=intUtil[_0x2424('0x41')](_0x30f08e[_0x2424('0x24')]);_0x30f08e['serverUrl']=intUtil[_0x2424('0x41')](_0x30f08e[_0x2424('0x42')]);if(_0x206e54&&_0x206e54['monitor_format']){logger[_0x2424('0xc')](_0x2424('0x43'),_0x2424('0x44'));_0xdbdac3[_0x2424('0x45')]=util['format'](_0x2424('0x46'),_0x30f08e[_0x2424('0x42')],_0xdbdac3[_0x2424('0x47')],md5(_0xdbdac3[_0x2424('0x47')]));}else{_0xdbdac3[_0x2424('0x45')]='';}headers[_0x2424('0x48')]=getAuth(_0x30f08e);return getUser(_0x30f08e,_0x2c4a66[_0x2424('0x21')])[_0x2424('0x1a')](function(_0x53cc88){_0x142b25=_0x53cc88;logger[_0x2424('0xc')](_0x2424('0x49'),_0x142b25['id']);return getEndUser(_0x30f08e,_0xdbdac3[_0x2424('0xe')],_0xdbdac3[_0x2424('0xf')]);})[_0x2424('0x1a')](function(_0x2aae1b){_0x107ec4=_0x2aae1b;logger[_0x2424('0xc')](_0x2424('0x4a'),_0x107ec4['id']);return getTicket(_0x30f08e,_0x142b25,_0x107ec4,_0x131d68,_0xdbdac3);})['then'](function(_0x339eff){if(_0x339eff&&_0x339eff['id']){logger[_0x2424('0xc')](_0x2424('0x1b'));logger[_0x2424('0xc')]('The\x20Ticket\x20ID\x20is:',_0x339eff['id']);logger[_0x2424('0xc')]('[QUEUE]',_0x2424('0x4b'));emit(util[_0x2424('0xd')](_0x2424('0x4c'),_0x2c4a66['name']),'trigger:browser:url',{'uri':util[_0x2424('0xd')](_0x2424('0x4d'),_0x30f08e[_0x2424('0x24')],_0x339eff['id'])});}})['catch'](function(_0xe09782){logger[_0x2424('0x4e')](_0x2424('0x43'),JSON['stringify'](_0xe09782));});};exports[_0x2424('0x4f')]=function(_0x2d19af,_0x10f0a8,_0x42c102,_0x1d01ff,_0x5308b7,_0x456653,_0x12c756){var _0x2760c2,_0x34e71c;_0x456653[_0x2424('0x24')]=intUtil[_0x2424('0x41')](_0x456653[_0x2424('0x24')]);_0x456653[_0x2424('0x42')]=intUtil[_0x2424('0x41')](_0x456653[_0x2424('0x42')]);if(_0x12c756&&_0x12c756[_0x2424('0x50')]&&_0x12c756[_0x2424('0x50')]!==_0x2424('0x51')){logger[_0x2424('0xc')]('[OUTBOUND]',_0x2424('0x44'));_0x10f0a8['recordingURL']=util[_0x2424('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x456653[_0x2424('0x42')],_0x10f0a8[_0x2424('0x47')],md5(_0x10f0a8[_0x2424('0x47')]));}headers[_0x2424('0x48')]=getAuth(_0x456653);return getUser(_0x456653,_0x1d01ff[_0x2424('0x21')])[_0x2424('0x1a')](function(_0x54c64f){_0x2760c2=_0x54c64f;logger['info']('The\x20User\x20ID\x20is:',_0x2760c2['id']);return getEndUser(_0x456653,_0x10f0a8[_0x2424('0x52')],_0x10f0a8[_0x2424('0x53')]);})['then'](function(_0x2d57cb){_0x34e71c=_0x2d57cb;logger[_0x2424('0xc')](_0x2424('0x4a'),_0x34e71c['id']);return getTicket(_0x456653,_0x2760c2,_0x34e71c,_0x42c102,_0x10f0a8);})[_0x2424('0x1a')](function(_0x4b87dc){if(_0x4b87dc&&_0x4b87dc['id']){logger[_0x2424('0xc')](_0x2424('0x1b'));logger[_0x2424('0xc')](_0x2424('0x54'),_0x4b87dc['id']);logger[_0x2424('0xc')]('[OUTBOUND]',_0x2424('0x4b'));emit(util[_0x2424('0xd')](_0x2424('0x4c'),_0x1d01ff[_0x2424('0x15')]),'trigger:browser:url',{'uri':util['format'](_0x2424('0x4d'),_0x456653['remoteUri'],_0x4b87dc['id'])});}})[_0x2424('0x55')](function(_0x395d33){logger[_0x2424('0x4e')](_0x2424('0x56'),JSON[_0x2424('0x33')](_0x395d33));});};exports[_0x2424('0x57')]=function(_0x1c88eb,_0x2ffcc0,_0x3eeb24,_0x168387,_0x5a207e,_0x36cb14){var _0x1a5bbf,_0x119534;_0x36cb14[_0x2424('0x24')]=intUtil[_0x2424('0x41')](_0x36cb14[_0x2424('0x24')]);_0x36cb14['serverUrl']=intUtil[_0x2424('0x41')](_0x36cb14[_0x2424('0x42')]);if(_0x5a207e&&_0x5a207e[_0x2424('0x58')]){logger[_0x2424('0xc')]('['+_0x2ffcc0['lastevent']['toUpperCase']()+']',_0x2424('0x44'));_0x2ffcc0[_0x2424('0x45')]=util[_0x2424('0xd')](_0x2424('0x46'),_0x36cb14[_0x2424('0x42')],_0x2ffcc0[_0x2424('0x47')],md5(_0x2ffcc0[_0x2424('0x47')]));}else{_0x2ffcc0[_0x2424('0x45')]='';}headers[_0x2424('0x48')]=getAuth(_0x36cb14);return getUser(_0x36cb14,'')[_0x2424('0x1a')](function(_0x3a7568){_0x1a5bbf=_0x3a7568;logger[_0x2424('0xc')](_0x2424('0x49'),_0x1a5bbf['id']);return getEndUser(_0x36cb14,_0x2ffcc0[_0x2424('0xe')],_0x2ffcc0['calleridnum']);})[_0x2424('0x1a')](function(_0x4168e5){_0x119534=_0x4168e5;logger[_0x2424('0xc')](_0x2424('0x4a'),_0x119534['id']);return getTicket(_0x36cb14,_0x1a5bbf,_0x119534,_0x3eeb24,_0x2ffcc0);})[_0x2424('0x1a')](function(_0xe787c){if(_0xe787c){logger[_0x2424('0xc')]('Ticket\x20created!');logger[_0x2424('0xc')](_0x2424('0x54'),_0xe787c['id']);}})[_0x2424('0x55')](function(_0x47afd7){logger['error']('['+_0x2ffcc0[_0x2424('0x59')][_0x2424('0x5a')]()+']',JSON[_0x2424('0x33')](_0x47afd7));});};