Built motion from commit 753c950e.|2.5.42
[motion2.git] / server / services / ami / trigger / integration / freshsales.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 _0xd2a5=['[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','request-promise','md5','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','getString','Subjects','task','Task\x20created:','ticketId','/contacts/','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid'];(function(_0x2980d0,_0x4719bb){var _0x1ab541=function(_0x2aebc7){while(--_0x2aebc7){_0x2980d0['push'](_0x2980d0['shift']());}};_0x1ab541(++_0x4719bb);}(_0xd2a5,0x138));var _0x5d2a=function(_0x4b1475,_0x41bf4c){_0x4b1475=_0x4b1475-0x0;var _0x3153e6=_0xd2a5[_0x4b1475];return _0x3153e6;};'use strict';var _=require(_0x5d2a('0x0'));var rp=require(_0x5d2a('0x1'));var md5=require(_0x5d2a('0x2'));var util=require(_0x5d2a('0x3'));var moment=require(_0x5d2a('0x4'));var Promise=require(_0x5d2a('0x5'));var Redis=require('ioredis');var intUtil=require(_0x5d2a('0x6'));var config=require(_0x5d2a('0x7'));var logger=require(_0x5d2a('0x8'))(_0x5d2a('0x9'));config[_0x5d2a('0xa')]=_['defaults'](config['redis'],{'host':_0x5d2a('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0x4e9dec,_0x411c59,_0x2211c2,_0x3626a6){return new Promise(function(_0x54c62b,_0x1fbc30){var _0x1dbbe5=![];var _0xa0f9d7={'method':'GET','uri':_0x3626a6+_0x5d2a('0xc'),'json':!![]};_0xa0f9d7[_0x5d2a('0xd')]=_0x2211c2;logger[_0x5d2a('0xe')](_0x5d2a('0xf'));return rp(_0xa0f9d7)[_0x5d2a('0x10')](function(_0x338715){if(_0x338715){var _0x1a7c1c=_0x338715[_0x5d2a('0x11')];var _0x34118f=null;for(_0x34118f=0x0;_0x34118f<_0x1a7c1c[_0x5d2a('0x12')];_0x34118f++){if(_0x1a7c1c[_0x34118f]['email']===_0x4e9dec[_0x5d2a('0x13')]){_0x4e9dec['adminId']=_0x1a7c1c[_0x34118f]['id'];_0x1dbbe5=!![];}}if(_0x1dbbe5){logger[_0x5d2a('0xe')]('Admin\x20found:',_0x4e9dec[_0x5d2a('0x14')]);_0x54c62b(_0x4e9dec);}else{_0x1fbc30({'statusCode':0x194,'message':_0x5d2a('0x15')});}}else{_0x1fbc30({'statusCode':0x194,'message':_0x5d2a('0x15')});}})[_0x5d2a('0x16')](function(_0x56b4f5){logger[_0x5d2a('0x17')]('['+[_0x411c59[_0x5d2a('0x18')]()]+']',_0x56b4f5[_0x5d2a('0x19')]);_0x1fbc30(_0x56b4f5);});});}function getUser(_0xec04c7,_0x441262,_0x1a50a0){return function(_0x24c2b5){return new Promise(function(_0x2a2bee,_0x98cd87){var _0x1b8db0={'method':'GET','uri':_0x1a50a0+_0x5d2a('0xc'),'json':!![]};_0x1b8db0[_0x5d2a('0xd')]=_0x441262;logger[_0x5d2a('0xe')](_0x5d2a('0x1a'));return rp(_0x1b8db0)['then'](function(_0x159676){if(_0x159676){var _0x50bcfb=_0x159676[_0x5d2a('0x11')];var _0x4effaf=![];var _0x1caf5c=null;if(_0x24c2b5[_0x5d2a('0x1b')]!==null){logger['info'](_0x5d2a('0x1c'),_0x24c2b5[_0x5d2a('0x1b')]);_0x24c2b5[_0x5d2a('0x1d')]=_0x24c2b5[_0x5d2a('0x1b')];for(_0x1caf5c=0x0;_0x1caf5c<_0x50bcfb[_0x5d2a('0x12')];_0x1caf5c++){if(_0x50bcfb[_0x1caf5c][_0x5d2a('0x1e')]===_0x24c2b5[_0x5d2a('0x1b')]){_0x4effaf=!![];_0x24c2b5[_0x5d2a('0x1f')]=_0x50bcfb[_0x1caf5c]['id'];logger['info'](_0x5d2a('0x20'),_0x24c2b5['userId']);}}}if(!_0x4effaf){logger[_0x5d2a('0xe')](_0x5d2a('0x21'));_0x24c2b5[_0x5d2a('0x1d')]=_0x24c2b5[_0x5d2a('0x13')];_0x24c2b5[_0x5d2a('0x1f')]=_0x24c2b5[_0x5d2a('0x14')];_0x4effaf=!![];}if(_0x4effaf){_0x2a2bee(_0x24c2b5);}else{_0x98cd87({'statusCode':0x194,'message':_0x5d2a('0x15')});}}else{_0x98cd87({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x5d2a('0x16')](function(_0x187a95){logger[_0x5d2a('0x17')]('['+[_0xec04c7[_0x5d2a('0x18')]()]+']',_0x187a95[_0x5d2a('0x19')]);_0x98cd87(_0x187a95);});});};}function searchContact(_0x3c20eb,_0x1f122b,_0x36367b,_0x35a663){return new Promise(function(_0x27df31,_0x5af223){var _0xebf99a={'method':'GET','headers':_0x1f122b,'uri':_0x3c20eb+_0x5d2a('0x22')+_0x35a663+_0x5d2a('0x23')+_0x36367b+'&entities=contact','json':!![]};rp(_0xebf99a)[_0x5d2a('0x10')](function(_0x23f05d){var _0xbcdbc3=_[_0x5d2a('0x24')](_0x23f05d[_0x5d2a('0x25')][_0x5d2a('0x25')],[_0x36367b,_0x35a663]);_0x27df31(_0xbcdbc3);})[_0x5d2a('0x16')](function(_0x219288){_0x5af223(_0x219288);});});}function getEndUser(_0x57691a,_0xde8471,_0x3c06e5){return function(_0x1f136c){return new Promise(function(_0x144904,_0x2c3092){logger[_0x5d2a('0xe')](util[_0x5d2a('0x26')](_0x5d2a('0x27'),_0x1f136c['contactNumber']));searchContact(_0x3c06e5,_0xde8471,'mobile_number',_0x1f136c[_0x5d2a('0x28')])[_0x5d2a('0x10')](function(_0x31c4a7){if(_0x31c4a7){_0x1f136c[_0x5d2a('0x29')]=_0x31c4a7['id'];logger[_0x5d2a('0xe')](_0x5d2a('0x2a'),_0x1f136c['endUserId']);return _0x144904(_0x1f136c);}searchContact(_0x3c06e5,_0xde8471,'work_number',_0x1f136c[_0x5d2a('0x28')])[_0x5d2a('0x10')](function(_0xeecf81){if(_0xeecf81){_0x1f136c[_0x5d2a('0x29')]=_0xeecf81['id'];logger[_0x5d2a('0xe')](_0x5d2a('0x2b'),_0x1f136c['endUserId']);return _0x144904(_0x1f136c);}createEndUser(_0x1f136c,_0x57691a,_0xde8471,_0x3c06e5)['then'](function(_0x30798c){logger[_0x5d2a('0xe')](_0x5d2a('0x2c'),_0x30798c[_0x5d2a('0x29')]);return _0x144904(_0x30798c);});});})[_0x5d2a('0x16')](function(_0x560f0c){_0x2c3092(_0x560f0c);});});};}function createEndUser(_0x902f52,_0x2791b2,_0x44753d,_0x4982dd){return new Promise(function(_0x3a9417,_0x259618){var _0x49a36a=moment();var _0x35cfb6={'method':_0x5d2a('0x2d'),'uri':_0x4982dd+_0x5d2a('0x2e'),'body':{'contact':{'last_name':_0x902f52[_0x5d2a('0x28')],'work_number':_0x902f52[_0x5d2a('0x28')],'mobile_number':_0x902f52[_0x5d2a('0x28')],'owner_id':_0x902f52['userId'],'created_at':_0x49a36a[_0x5d2a('0x26')](_0x5d2a('0x2f'))}},'json':!![]};_0x35cfb6[_0x5d2a('0xd')]=_0x44753d;logger['info'](_0x5d2a('0x30'));return rp(_0x35cfb6)[_0x5d2a('0x10')](function(_0x348d8e){_0x902f52['endUserId']=_0x348d8e['contact']['id'];_0x3a9417(_0x902f52);})['catch'](function(_0xa385d2){logger['error']('['+[_0x2791b2[_0x5d2a('0x18')]()]+']',_0xa385d2[_0x5d2a('0x19')]);_0x259618(_0xa385d2[_0x5d2a('0x19')]);});});}function getTicket(_0x262e94,_0x371d0e,_0x3a44eb,_0xa4ce36,_0x446c31){return function(_0x59ca67){logger[_0x5d2a('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x1c1237,_0x3cf07c){var _0x429df2=moment();var _0x53a53b={'method':_0x5d2a('0x2d'),'uri':_0x3a44eb+'/api/tasks','body':{'title':intUtil[_0x5d2a('0x31')](_0xa4ce36[_0x5d2a('0x32')],_0x446c31,'\x20'),'description':intUtil['getString'](_0xa4ce36['Descriptions'],_0x446c31,'\x0a'),'owner_id':_0x59ca67[_0x5d2a('0x1f')],'creater_id':_0x59ca67[_0x5d2a('0x14')],'targetable_id':_0x59ca67[_0x5d2a('0x29')],'targetable_type':'Contact','created_at':_0x429df2['format'](_0x5d2a('0x2f')),'due_date':_0x429df2['add'](0x1e,'m')[_0x5d2a('0x26')](_0x5d2a('0x2f'))},'json':!![]};_0x53a53b[_0x5d2a('0xd')]=_0x371d0e;return rp(_0x53a53b)['then'](function(_0x10d29d){_0x59ca67['ticketId']=_0x10d29d[_0x5d2a('0x33')]['id'];logger[_0x5d2a('0xe')](_0x5d2a('0x34'),_0x59ca67[_0x5d2a('0x35')]);_0x1c1237(_0x59ca67);})['catch'](function(_0xb7759e){logger['error']('['+[_0x262e94[_0x5d2a('0x18')]()]+']',_0xb7759e['message']);_0x3cf07c(_0xb7759e[_0x5d2a('0x19')]);});});};}function emit(_0x4329b3,_0x16a6ee,_0x202a28){var _0x470c11={'uri':_0x4329b3+_0x5d2a('0x36')+_0x202a28};io['to'](util[_0x5d2a('0x26')]('user:%s',_0x16a6ee))['emit']('trigger:browser:url',_0x470c11);}exports['cs']=function(_0x1a0d58,_0x8fb842,_0x3787ef,_0x5228ee,_0x4bd5a9,_0x166155,_0x68bd78,_0x33160b){var _0xc2dc18={};var _0x2ee444={'Authorization':_0x5d2a('0x37')+_0x166155[_0x5d2a('0x38')]};_0x166155[_0x5d2a('0x39')]=intUtil[_0x5d2a('0x3a')](_0x166155[_0x5d2a('0x39')]);_0x166155['serverUrl']=intUtil[_0x5d2a('0x3a')](_0x166155[_0x5d2a('0x3b')]);var _0xb1c259=_0x166155[_0x5d2a('0x39')];_0xc2dc18[_0x5d2a('0x13')]=_0x166155['username'];_0xc2dc18[_0x5d2a('0x28')]=_0x33160b[_0x5d2a('0x3c')]()===_0x5d2a('0x3d')?_0x8fb842['destcalleridnum']:_0x8fb842[_0x5d2a('0x3e')];_0xc2dc18[_0x5d2a('0x3f')]=_0x33160b===_0x5d2a('0x40')||_0x33160b===_0x5d2a('0x41')?_0x5d2a('0x40'):_0x5d2a('0x3d');if(_0x5228ee){_0xc2dc18[_0x5d2a('0x1b')]=_0x5228ee['email'];}var _0xaf2210=util[_0x5d2a('0x26')](_0x5d2a('0x42'),_0x166155[_0x5d2a('0x3b')],_0x8fb842[_0x5d2a('0x43')],md5(_0x8fb842[_0x5d2a('0x43')]));if(_0x4bd5a9&&_0x4bd5a9['monitor_format']){logger[_0x5d2a('0xe')](_0x5d2a('0x44'),_0x5d2a('0x45'));_0x8fb842[_0x5d2a('0x46')]=_0xaf2210;}else if(_0x68bd78&&_0x68bd78[_0x5d2a('0x47')]&&_0x68bd78[_0x5d2a('0x47')]!==_0x5d2a('0x48')){logger['info']('[OUTBOUND]',_0x5d2a('0x45'));_0x8fb842[_0x5d2a('0x46')]=_0xaf2210;}else{_0x8fb842[_0x5d2a('0x46')]='';}return getAdminId(_0xc2dc18,_0x33160b,_0x2ee444,_0xb1c259)['then'](getUser(_0x33160b,_0x2ee444,_0xb1c259))[_0x5d2a('0x10')](getEndUser(_0x33160b,_0x2ee444,_0xb1c259))[_0x5d2a('0x10')](getTicket(_0x33160b,_0x2ee444,_0xb1c259,_0x3787ef,_0x8fb842))[_0x5d2a('0x10')](function(_0x467d35){logger[_0x5d2a('0xe')](util[_0x5d2a('0x26')](_0x5d2a('0x49'),_0x467d35['ticketId']));if(_0x33160b!==_0x5d2a('0x41')){logger[_0x5d2a('0xe')]('['+[_0x33160b['toUpperCase']()]+']',_0x5d2a('0x4a'));emit(_0xb1c259,_0x5228ee['name'],_0x467d35[_0x5d2a('0x29')]);}})['catch'](function(_0x5429a1){logger['error']('['+[_0x33160b[_0x5d2a('0x18')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x5d2a('0x4b')](_0x5429a1,{'showHidden':!![],'depth':null}));});};