13df9e707f12c59528bbcb412d4d58fa1e299aaa
[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 _0x9988=['Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Subjects','Contact','add','format','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','/api/selector/owners','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','User\x20found:','userId','Admin\x20selected','message','/api/lookup?q=','&f=','&entities=contact','find','contacts','catch','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number'];(function(_0x593752,_0xfc3827){var _0x4612be=function(_0x2d64c6){while(--_0x2d64c6){_0x593752['push'](_0x593752['shift']());}};_0x4612be(++_0xfc3827);}(_0x9988,0x1ed));var _0x8998=function(_0x3712d2,_0x259c5a){_0x3712d2=_0x3712d2-0x0;var _0x18d859=_0x9988[_0x3712d2];return _0x18d859;};'use strict';var _=require(_0x8998('0x0'));var rp=require('request-promise');var md5=require(_0x8998('0x1'));var util=require(_0x8998('0x2'));var moment=require(_0x8998('0x3'));var Promise=require(_0x8998('0x4'));var Redis=require(_0x8998('0x5'));var intUtil=require(_0x8998('0x6'));var config=require(_0x8998('0x7'));var logger=require(_0x8998('0x8'))(_0x8998('0x9'));config[_0x8998('0xa')]=_[_0x8998('0xb')](config[_0x8998('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x8998('0xc'))(new Redis(config[_0x8998('0xa')]));function getAdminId(_0x1a2b76,_0x1e24d0,_0x3fb6eb,_0x100dd1){return new Promise(function(_0x2ed28f,_0x555f50){var _0x5e9150=![];var _0xe8ea42={'method':_0x8998('0xd'),'uri':_0x100dd1+'/api/selector/owners','json':!![]};_0xe8ea42['headers']=_0x3fb6eb;logger[_0x8998('0xe')](_0x8998('0xf'));return rp(_0xe8ea42)[_0x8998('0x10')](function(_0x3f7224){if(_0x3f7224){var _0x3eba5e=_0x3f7224[_0x8998('0x11')];var _0x482120=null;for(_0x482120=0x0;_0x482120<_0x3eba5e[_0x8998('0x12')];_0x482120++){if(_0x3eba5e[_0x482120][_0x8998('0x13')]===_0x1a2b76[_0x8998('0x14')]){_0x1a2b76[_0x8998('0x15')]=_0x3eba5e[_0x482120]['id'];_0x5e9150=!![];}}if(_0x5e9150){logger[_0x8998('0xe')](_0x8998('0x16'),_0x1a2b76[_0x8998('0x15')]);_0x2ed28f(_0x1a2b76);}else{_0x555f50({'statusCode':0x194,'message':_0x8998('0x17')});}}else{_0x555f50({'statusCode':0x194,'message':_0x8998('0x17')});}})['catch'](function(_0x33714e){logger[_0x8998('0x18')]('['+[_0x1e24d0[_0x8998('0x19')]()]+']',_0x33714e['message']);_0x555f50(_0x33714e);});});}function getUser(_0x2a55f4,_0x310915,_0x5d60a7){return function(_0x39d476){return new Promise(function(_0x2d03c0,_0x587deb){var _0x5c376d={'method':_0x8998('0xd'),'uri':_0x5d60a7+_0x8998('0x1a'),'json':!![]};_0x5c376d[_0x8998('0x1b')]=_0x310915;logger['info'](_0x8998('0x1c'));return rp(_0x5c376d)[_0x8998('0x10')](function(_0x51e14e){if(_0x51e14e){var _0x355b5d=_0x51e14e[_0x8998('0x11')];var _0x52d74a=![];var _0x4c4297=null;if(_0x39d476[_0x8998('0x1d')]!==null){logger[_0x8998('0xe')](_0x8998('0x1e'),_0x39d476[_0x8998('0x1d')]);_0x39d476[_0x8998('0x1f')]=_0x39d476[_0x8998('0x1d')];for(_0x4c4297=0x0;_0x4c4297<_0x355b5d[_0x8998('0x12')];_0x4c4297++){if(_0x355b5d[_0x4c4297][_0x8998('0x13')]===_0x39d476[_0x8998('0x1d')]){_0x52d74a=!![];_0x39d476['userId']=_0x355b5d[_0x4c4297]['id'];logger[_0x8998('0xe')](_0x8998('0x20'),_0x39d476[_0x8998('0x21')]);}}}if(!_0x52d74a){logger[_0x8998('0xe')](_0x8998('0x22'));_0x39d476[_0x8998('0x1f')]=_0x39d476[_0x8998('0x14')];_0x39d476['userId']=_0x39d476['adminId'];_0x52d74a=!![];}if(_0x52d74a){_0x2d03c0(_0x39d476);}else{_0x587deb({'statusCode':0x194,'message':_0x8998('0x17')});}}else{_0x587deb({'statusCode':0x194,'message':_0x8998('0x17')});}})['catch'](function(_0x24901d){logger[_0x8998('0x18')]('['+[_0x2a55f4[_0x8998('0x19')]()]+']',_0x24901d[_0x8998('0x23')]);_0x587deb(_0x24901d);});});};}function searchContact(_0x1b4b55,_0x38735e,_0x14c356,_0x19354e){return new Promise(function(_0x2f73ea,_0x15d40f){var _0xfce621={'method':'GET','headers':_0x38735e,'uri':_0x1b4b55+_0x8998('0x24')+_0x19354e+_0x8998('0x25')+_0x14c356+_0x8998('0x26'),'json':!![]};rp(_0xfce621)[_0x8998('0x10')](function(_0x51bded){var _0x4e26ea=_[_0x8998('0x27')](_0x51bded['contacts'][_0x8998('0x28')],[_0x14c356,_0x19354e]);_0x2f73ea(_0x4e26ea);})[_0x8998('0x29')](function(_0x2083ae){_0x15d40f(_0x2083ae);});});}function getEndUser(_0x387807,_0x514087,_0x92e017){return function(_0x3ce631){return new Promise(function(_0x55fe8f,_0x5ec564){logger['info'](util['format'](_0x8998('0x2a'),_0x3ce631['contactNumber']));searchContact(_0x92e017,_0x514087,'mobile_number',_0x3ce631[_0x8998('0x2b')])[_0x8998('0x10')](function(_0x58cbd8){if(_0x58cbd8){_0x3ce631[_0x8998('0x2c')]=_0x58cbd8['id'];logger['info'](_0x8998('0x2d'),_0x3ce631[_0x8998('0x2c')]);return _0x55fe8f(_0x3ce631);}searchContact(_0x92e017,_0x514087,_0x8998('0x2e'),_0x3ce631['contactNumber'])[_0x8998('0x10')](function(_0x579ddc){if(_0x579ddc){_0x3ce631[_0x8998('0x2c')]=_0x579ddc['id'];logger[_0x8998('0xe')](_0x8998('0x2f'),_0x3ce631[_0x8998('0x2c')]);return _0x55fe8f(_0x3ce631);}createEndUser(_0x3ce631,_0x387807,_0x514087,_0x92e017)['then'](function(_0x5cfa9f){logger['info'](_0x8998('0x30'),_0x5cfa9f[_0x8998('0x2c')]);return _0x55fe8f(_0x5cfa9f);});});})[_0x8998('0x29')](function(_0x265b56){_0x5ec564(_0x265b56);});});};}function createEndUser(_0x1504b9,_0xeebf6b,_0x4b417b,_0x243b7d){return new Promise(function(_0x198c9b,_0x33589e){var _0x1c9f23=moment();var _0x40de83={'method':_0x8998('0x31'),'uri':_0x243b7d+_0x8998('0x32'),'body':{'contact':{'last_name':_0x1504b9[_0x8998('0x2b')],'work_number':_0x1504b9[_0x8998('0x2b')],'mobile_number':_0x1504b9[_0x8998('0x2b')],'owner_id':_0x1504b9[_0x8998('0x21')],'created_at':_0x1c9f23['format'](_0x8998('0x33'))}},'json':!![]};_0x40de83[_0x8998('0x1b')]=_0x4b417b;logger[_0x8998('0xe')](_0x8998('0x34'));return rp(_0x40de83)[_0x8998('0x10')](function(_0x10f15c){_0x1504b9[_0x8998('0x2c')]=_0x10f15c[_0x8998('0x35')]['id'];_0x198c9b(_0x1504b9);})[_0x8998('0x29')](function(_0x32a416){logger[_0x8998('0x18')]('['+[_0xeebf6b[_0x8998('0x19')]()]+']',_0x32a416[_0x8998('0x23')]);_0x33589e(_0x32a416['message']);});});}function getTicket(_0x339899,_0x4ec5f9,_0x3da0b8,_0x4fb0b9,_0x31a268){return function(_0x486b12){logger['info'](_0x8998('0x36'));return new Promise(function(_0x32b5f6,_0x14d37a){var _0x44d775=moment();var _0x12a2e5={'method':_0x8998('0x31'),'uri':_0x3da0b8+_0x8998('0x37'),'body':{'title':intUtil['getString'](_0x4fb0b9[_0x8998('0x38')],_0x31a268,'\x20'),'description':intUtil['getString'](_0x4fb0b9['Descriptions'],_0x31a268,'\x0a'),'owner_id':_0x486b12[_0x8998('0x21')],'creater_id':_0x486b12[_0x8998('0x15')],'targetable_id':_0x486b12[_0x8998('0x2c')],'targetable_type':_0x8998('0x39'),'created_at':_0x44d775['format'](_0x8998('0x33')),'due_date':_0x44d775[_0x8998('0x3a')](0x1e,'m')[_0x8998('0x3b')](_0x8998('0x33'))},'json':!![]};_0x12a2e5[_0x8998('0x1b')]=_0x4ec5f9;return rp(_0x12a2e5)[_0x8998('0x10')](function(_0x3a6a72){_0x486b12[_0x8998('0x3c')]=_0x3a6a72[_0x8998('0x3d')]['id'];logger[_0x8998('0xe')](_0x8998('0x3e'),_0x486b12['ticketId']);_0x32b5f6(_0x486b12);})['catch'](function(_0xe1f9e0){logger['error']('['+[_0x339899['toUpperCase']()]+']',_0xe1f9e0['message']);_0x14d37a(_0xe1f9e0[_0x8998('0x23')]);});});};}function emit(_0x431c16,_0x548d00,_0x532010){var _0x56e4ba={'uri':_0x431c16+_0x8998('0x3f')+_0x532010};io['to'](util[_0x8998('0x3b')](_0x8998('0x40'),_0x548d00))[_0x8998('0x41')]('trigger:browser:url',_0x56e4ba);}exports['cs']=function(_0xc69655,_0x3a63f5,_0x5655ad,_0x20a915,_0x4de97d,_0x42d8f5,_0xbc46d7,_0x15ba3d){var _0x4c5754={};var _0x2e6c9e={'Authorization':'Token\x20token='+_0x42d8f5[_0x8998('0x42')]};_0x42d8f5['remoteUri']=intUtil['stripTrailingSlash'](_0x42d8f5[_0x8998('0x43')]);_0x42d8f5[_0x8998('0x44')]=intUtil[_0x8998('0x45')](_0x42d8f5['serverUrl']);var _0x560d72=_0x42d8f5[_0x8998('0x43')];_0x4c5754[_0x8998('0x14')]=_0x42d8f5[_0x8998('0x46')];_0x4c5754[_0x8998('0x2b')]=_0x15ba3d[_0x8998('0x47')]()==='outbound'?_0x3a63f5[_0x8998('0x48')]:_0x3a63f5[_0x8998('0x49')];_0x4c5754[_0x8998('0x4a')]=_0x15ba3d===_0x8998('0x4b')||_0x15ba3d===_0x8998('0x4c')?'queue':_0x8998('0x4d');if(_0x20a915){_0x4c5754[_0x8998('0x1d')]=_0x20a915[_0x8998('0x13')];}var _0x27fe3f=util[_0x8998('0x3b')](_0x8998('0x4e'),_0x42d8f5[_0x8998('0x44')],_0x3a63f5[_0x8998('0x4f')],md5(_0x3a63f5[_0x8998('0x4f')]));if(_0x4de97d&&_0x4de97d['monitor_format']){logger['info'](_0x8998('0x50'),'Recording\x20is\x20enabled!');_0x3a63f5[_0x8998('0x51')]=_0x27fe3f;}else if(_0xbc46d7&&_0xbc46d7[_0x8998('0x52')]&&_0xbc46d7[_0x8998('0x52')]!==_0x8998('0x53')){logger['info'](_0x8998('0x54'),_0x8998('0x55'));_0x3a63f5[_0x8998('0x51')]=_0x27fe3f;}else{_0x3a63f5[_0x8998('0x51')]='';}return getAdminId(_0x4c5754,_0x15ba3d,_0x2e6c9e,_0x560d72)[_0x8998('0x10')](getUser(_0x15ba3d,_0x2e6c9e,_0x560d72))[_0x8998('0x10')](getEndUser(_0x15ba3d,_0x2e6c9e,_0x560d72))[_0x8998('0x10')](getTicket(_0x15ba3d,_0x2e6c9e,_0x560d72,_0x5655ad,_0x3a63f5))['then'](function(_0x3b0fba){logger[_0x8998('0xe')](util[_0x8998('0x3b')](_0x8998('0x56'),_0x3b0fba[_0x8998('0x3c')]));if(_0x15ba3d!==_0x8998('0x4c')){logger[_0x8998('0xe')]('['+[_0x15ba3d[_0x8998('0x19')]()]+']',_0x8998('0x57'));emit(_0x560d72,_0x20a915['name'],_0x3b0fba[_0x8998('0x2c')]);}})[_0x8998('0x29')](function(_0x169585){logger[_0x8998('0x18')]('['+[_0x15ba3d['toUpperCase']()]+_0x8998('0x58'),util[_0x8998('0x59')](_0x169585,{'showHidden':!![],'depth':null}));});};