bd6ceabfab9925892436c2e575430d2ea62c5b31
[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 _0x482b=['./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','Tags','Fields','custom_fields','mapValues','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Basic\x20%s','apiKey','base64','debug','[HTTP]','stringify','GET','map','forEach','type','string','nameField','toString','push','idField','variableName','customField','customVariable','Variable','name','toLowerCase','stripTrailingSlash','serverUrl','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','abandoned','[ABANDONED]','request-promise','md5','util','ioredis'];(function(_0x3c5163,_0xac9816){var _0x2943c=function(_0x5daca7){while(--_0x5daca7){_0x3c5163['push'](_0x3c5163['shift']());}};_0x2943c(++_0xac9816);}(_0x482b,0xac));var _0xb482=function(_0x23f55b,_0x18f6d8){_0x23f55b=_0x23f55b-0x0;var _0x3c9a5a=_0x482b[_0x23f55b];return _0x3c9a5a;};'use strict';var _=require('lodash');var rp=require(_0xb482('0x0'));var md5=require(_0xb482('0x1'));var util=require(_0xb482('0x2'));var Redis=require(_0xb482('0x3'));var intUtil=require(_0xb482('0x4'));var config=require(_0xb482('0x5'));var logger=require(_0xb482('0x6'))(_0xb482('0x7'));config[_0xb482('0x8')]=_[_0xb482('0x9')](config[_0xb482('0x8')],{'host':_0xb482('0xa'),'port':0x18eb});var io=require(_0xb482('0xb'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0xb482('0xc')};function emit(_0x189c53,_0x34ad62,_0x357acd){io['to'](_0x189c53)[_0xb482('0xd')](_0x34ad62,_0x357acd);}function getTicket(_0x483dd4,_0x298fba,_0x3c37f0,_0x3aa878,_0x3ece8c){logger[_0xb482('0xe')]('Creating\x20new\x20ticket...');var _0x123fa0=_[_0xb482('0xf')]({'responder_id':_0x298fba['id'],'requester_id':_0x3c37f0['id'],'name':util[_0xb482('0x10')](_0xb482('0x11'),_0x3ece8c[_0xb482('0x12')]),'phone':_0x3ece8c[_0xb482('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x3aa878['Subjects'],_0x3ece8c,'\x20'),'description':intUtil[_0xb482('0x14')](_0x3aa878[_0xb482('0x15')],_0x3ece8c,_0xb482('0x16')),'tags':getTags(_0x3aa878[_0xb482('0x17')],'name')},getCustomFields(_0x3aa878[_0xb482('0x18')],_0x3ece8c));_0x123fa0[_0xb482('0x19')]=_[_0xb482('0x1a')](_['keyBy'](_0x123fa0['custom_fields'],'id'),'value');return request({'uri':util[_0xb482('0x10')](_0xb482('0x1b'),_0x483dd4[_0xb482('0x1c')]),'method':_0xb482('0x1d'),'body':_0x123fa0})[_0xb482('0x1e')](function(_0x5b4571){logger[_0xb482('0xe')](_0xb482('0x1f'));return _0x5b4571;});}function getUser(_0xe6fedb,_0xa963b6){if(intUtil[_0xb482('0x20')](_0xa963b6)){return request({'uri':util[_0xb482('0x10')]('%s/api/v2/agents',_0xe6fedb[_0xb482('0x1c')]),'qs':{'email':_0xa963b6}})[_0xb482('0x1e')](function(_0x5a10ef){if(_0x5a10ef[_0xb482('0x21')]){logger['info'](_0xb482('0x22'));return _[_0xb482('0x23')](_0x5a10ef,function(_0x1c470f){return _0x1c470f[_0xb482('0x24')][_0xb482('0x25')]===_0xa963b6;});}else{logger[_0xb482('0xe')](_0xb482('0x26'));return request({'uri':util[_0xb482('0x10')]('%s/api/v2/agents/me',_0xe6fedb[_0xb482('0x1c')])})['then'](function(_0x5bd283){logger[_0xb482('0xe')](_0xb482('0x27'));return _0x5bd283;});}});}else{logger[_0xb482('0xe')](_0xb482('0x28'));return request({'uri':util['format']('%s/api/v2/agents/me',_0xe6fedb[_0xb482('0x1c')])})[_0xb482('0x1e')](function(_0x486790){logger['info'](_0xb482('0x27'));return _0x486790;});}}function getEndUser(_0x28c243,_0x33f287,_0x55c49a){logger[_0xb482('0xe')](_0xb482('0x29'),_0x55c49a);return request({'uri':util['format'](_0xb482('0x2a'),_0x28c243[_0xb482('0x1c')]),'qs':{'phone':_0x55c49a}})[_0xb482('0x1e')](function(_0x133147){if(_0x133147[_0xb482('0x21')]){logger[_0xb482('0xe')](_0xb482('0x2b'));return _[_0xb482('0x23')](_0x133147,{'phone':_0x55c49a});}else{logger[_0xb482('0xe')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xb482('0x10')](_0xb482('0x2a'),_0x28c243[_0xb482('0x1c')]),'method':_0xb482('0x1d'),'body':{'name':_0x33f287,'phone':_0x55c49a}})[_0xb482('0x1e')](function(_0x4aff3b){logger[_0xb482('0xe')]('Enduser\x20created.');return _0x4aff3b;});}});}function getAuth(_0xa2d676){return util[_0xb482('0x10')](_0xb482('0x2c'),new Buffer(_0xa2d676[_0xb482('0x2d')]+':X')['toString'](_0xb482('0x2e')));}function request(_0x5962db){logger[_0xb482('0x2f')](_0xb482('0x30'),JSON[_0xb482('0x31')](_0x5962db));return rp(_[_0xb482('0x9')](_0x5962db,{'method':_0xb482('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x1de8f1,_0x9f70af){var _0x2e72e6=[];if(_0x1de8f1&&_0x1de8f1['length']>0x0){_0x2e72e6=_[_0xb482('0x33')](_0x1de8f1,_0x9f70af);}return _0x2e72e6;}function getCustomFields(_0x4ec597,_0x303ee9){var _0x3c81f6=[];var _0x1c9f9a={'custom_fields':[]};if(_0x4ec597[_0xb482('0x21')]>0x0){_[_0xb482('0x34')](_0x4ec597,function(_0x579ce0){if(_0x579ce0[_0xb482('0x35')]===_0xb482('0x36')&&_0x579ce0[_0xb482('0x37')]&&!_0x579ce0['customField']){_0x1c9f9a[_0x579ce0['nameField']['toLowerCase']()]=_0x579ce0['content'][_0xb482('0x38')]();}else if(_0x579ce0[_0xb482('0x35')]===_0xb482('0x36')&&_0x579ce0['idField']&&_0x579ce0['customField']){_0x1c9f9a[_0xb482('0x19')][_0xb482('0x39')]({'id':_0x579ce0[_0xb482('0x3a')],'value':_0x579ce0['content']['toString']()});}else if(_0x579ce0[_0xb482('0x35')]==='variable'&&_0x579ce0[_0xb482('0x3b')]&&_0x579ce0[_0xb482('0x3a')]&&_0x579ce0[_0xb482('0x3c')]){_0x303ee9[_0x579ce0['variableName']]&&_0x1c9f9a[_0xb482('0x19')]['push']({'id':_0x579ce0[_0xb482('0x3a')],'value':_0x303ee9[_0x579ce0[_0xb482('0x3b')]][_0xb482('0x38')]()});}else if(_0x579ce0[_0xb482('0x35')]===_0xb482('0x3d')&&_0x579ce0[_0xb482('0x3e')]&&_0x579ce0['Variable'][_0xb482('0x3f')]&&_0x579ce0[_0xb482('0x3a')]&&_0x579ce0[_0xb482('0x3c')]){_0x303ee9[_0x579ce0['Variable'][_0xb482('0x3f')][_0xb482('0x40')]()]&&_0x1c9f9a[_0xb482('0x19')][_0xb482('0x39')]({'id':_0x579ce0[_0xb482('0x3a')],'value':_0x303ee9[_0x579ce0['Variable'][_0xb482('0x3f')][_0xb482('0x40')]()]['toString']()});}});}return _0x1c9f9a;}exports['queue']=function(_0x289218,_0x3b17b0,_0x2e1bc3,_0x39b339,_0x2bc17a,_0x10e1c8){var _0xb7245e,_0x5da482;_0x10e1c8['remoteUri']=intUtil[_0xb482('0x41')](_0x10e1c8[_0xb482('0x1c')]);_0x10e1c8[_0xb482('0x42')]=intUtil['stripTrailingSlash'](_0x10e1c8['serverUrl']);if(_0x2bc17a&&_0x2bc17a['monitor_format']){logger[_0xb482('0xe')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b17b0[_0xb482('0x43')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x10e1c8[_0xb482('0x42')],_0x3b17b0[_0xb482('0x44')],md5(_0x3b17b0['uniqueid']));}else{_0x3b17b0[_0xb482('0x43')]='';}headers[_0xb482('0x45')]=getAuth(_0x10e1c8);return getUser(_0x10e1c8,_0x39b339['email'])[_0xb482('0x1e')](function(_0x5da154){_0xb7245e=_0x5da154;logger['info'](_0xb482('0x46'),_0xb7245e['id']);return getEndUser(_0x10e1c8,_0x3b17b0[_0xb482('0x12')],_0x3b17b0['calleridnum']);})[_0xb482('0x1e')](function(_0x439b52){_0x5da482=_0x439b52;logger[_0xb482('0xe')](_0xb482('0x47'),_0x5da482['id']);return getTicket(_0x10e1c8,_0xb7245e,_0x5da482,_0x2e1bc3,_0x3b17b0);})[_0xb482('0x1e')](function(_0x37a490){if(_0x37a490&&_0x37a490['id']){logger[_0xb482('0xe')](_0xb482('0x1f'));logger['info'](_0xb482('0x48'),_0x37a490['id']);logger[_0xb482('0xe')](_0xb482('0x49'),_0xb482('0x4a'));emit(util[_0xb482('0x10')](_0xb482('0x4b'),_0x39b339['name']),_0xb482('0x4c'),{'uri':util['format'](_0xb482('0x4d'),_0x10e1c8[_0xb482('0x1c')],_0x37a490['id'])});}})[_0xb482('0x4e')](function(_0x47a127){logger[_0xb482('0x4f')](_0xb482('0x49'),JSON[_0xb482('0x31')](_0x47a127));});};exports[_0xb482('0x50')]=function(_0x253263,_0x46307d,_0x23d14e,_0x44ec77,_0x5668d0,_0x3faf62,_0x58fc9d){var _0x13dff9,_0x5cf863;_0x3faf62[_0xb482('0x1c')]=intUtil[_0xb482('0x41')](_0x3faf62['remoteUri']);_0x3faf62[_0xb482('0x42')]=intUtil[_0xb482('0x41')](_0x3faf62[_0xb482('0x42')]);if(_0x58fc9d&&_0x58fc9d[_0xb482('0x51')]&&_0x58fc9d['recordingFormat']!==_0xb482('0x52')){logger['info'](_0xb482('0x53'),_0xb482('0x54'));_0x46307d[_0xb482('0x43')]=util[_0xb482('0x10')](_0xb482('0x55'),_0x3faf62[_0xb482('0x42')],_0x46307d[_0xb482('0x44')],md5(_0x46307d['uniqueid']));}headers[_0xb482('0x45')]=getAuth(_0x3faf62);return getUser(_0x3faf62,_0x44ec77[_0xb482('0x25')])[_0xb482('0x1e')](function(_0x172031){_0x13dff9=_0x172031;logger[_0xb482('0xe')]('The\x20User\x20ID\x20is:',_0x13dff9['id']);return getEndUser(_0x3faf62,_0x46307d['destcalleridname'],_0x46307d['destcalleridnum']);})[_0xb482('0x1e')](function(_0x33a72a){_0x5cf863=_0x33a72a;logger[_0xb482('0xe')](_0xb482('0x47'),_0x5cf863['id']);return getTicket(_0x3faf62,_0x13dff9,_0x5cf863,_0x23d14e,_0x46307d);})[_0xb482('0x1e')](function(_0x3bc849){if(_0x3bc849&&_0x3bc849['id']){logger[_0xb482('0xe')](_0xb482('0x1f'));logger['info'](_0xb482('0x48'),_0x3bc849['id']);logger['info']('[OUTBOUND]',_0xb482('0x4a'));emit(util[_0xb482('0x10')](_0xb482('0x4b'),_0x44ec77[_0xb482('0x3f')]),_0xb482('0x4c'),{'uri':util[_0xb482('0x10')](_0xb482('0x4d'),_0x3faf62[_0xb482('0x1c')],_0x3bc849['id'])});}})['catch'](function(_0x383c80){logger['error']('[OUTBOUND]',JSON['stringify'](_0x383c80));});};exports[_0xb482('0x56')]=function(_0x2db398,_0x3b832e,_0x54e592,_0xe6a1b6,_0x5c779f,_0x36de36){var _0x46b8a6,_0x3aafbf;_0x36de36[_0xb482('0x1c')]=intUtil['stripTrailingSlash'](_0x36de36['remoteUri']);_0x36de36[_0xb482('0x42')]=intUtil['stripTrailingSlash'](_0x36de36[_0xb482('0x42')]);if(_0x5c779f&&_0x5c779f['monitor_format']){logger[_0xb482('0xe')](_0xb482('0x57'),'Recording\x20is\x20enabled!');_0x3b832e[_0xb482('0x43')]=util[_0xb482('0x10')](_0xb482('0x55'),_0x36de36[_0xb482('0x42')],_0x3b832e['uniqueid'],md5(_0x3b832e[_0xb482('0x44')]));}else{_0x3b832e[_0xb482('0x43')]='';}headers['Authorization']=getAuth(_0x36de36);return getUser(_0x36de36,'')[_0xb482('0x1e')](function(_0x5889f0){_0x46b8a6=_0x5889f0;logger[_0xb482('0xe')](_0xb482('0x46'),_0x46b8a6['id']);return getEndUser(_0x36de36,_0x3b832e['calleridname'],_0x3b832e['calleridnum']);})[_0xb482('0x1e')](function(_0x22db2a){_0x3aafbf=_0x22db2a;logger[_0xb482('0xe')](_0xb482('0x47'),_0x3aafbf['id']);return getTicket(_0x36de36,_0x46b8a6,_0x3aafbf,_0x54e592,_0x3b832e);})['then'](function(_0x11450a){if(_0x11450a){logger[_0xb482('0xe')](_0xb482('0x1f'));logger[_0xb482('0xe')](_0xb482('0x48'),_0x11450a['id']);}})[_0xb482('0x4e')](function(_0x15ee39){logger['error'](_0xb482('0x57'),JSON[_0xb482('0x31')](_0x15ee39));});};