Built motion from commit 9d0783e6.|2.6.13
[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 _0x7888=['email','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','error','GET','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Contact','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length'];(function(_0xb0d406,_0x303526){var _0x206cb3=function(_0x3d4299){while(--_0x3d4299){_0xb0d406['push'](_0xb0d406['shift']());}};_0x206cb3(++_0x303526);}(_0x7888,0x1e7));var _0x8788=function(_0x1ef64f,_0x26a0ca){_0x1ef64f=_0x1ef64f-0x0;var _0x2598bc=_0x7888[_0x1ef64f];return _0x2598bc;};'use strict';var _=require(_0x8788('0x0'));var rp=require(_0x8788('0x1'));var md5=require(_0x8788('0x2'));var util=require('util');var moment=require(_0x8788('0x3'));var Promise=require(_0x8788('0x4'));var Redis=require('ioredis');var intUtil=require(_0x8788('0x5'));var config=require(_0x8788('0x6'));var logger=require('../../../../config/logger')('freshsales');config[_0x8788('0x7')]=_[_0x8788('0x8')](config['redis'],{'host':_0x8788('0x9'),'port':0x18eb});var io=require(_0x8788('0xa'))(new Redis(config[_0x8788('0x7')]));function getAdminId(_0x459f65,_0x278533,_0x533797,_0x37afbc){return new Promise(function(_0x3ed2a5,_0x499bcc){var _0x9b698a=![];var _0x33905e={'method':'GET','uri':_0x37afbc+_0x8788('0xb'),'json':!![]};_0x33905e[_0x8788('0xc')]=_0x533797;logger['info'](_0x8788('0xd'));return rp(_0x33905e)[_0x8788('0xe')](function(_0x3f07d7){if(_0x3f07d7){var _0xbc1826=_0x3f07d7[_0x8788('0xf')];var _0xa397f6=null;for(_0xa397f6=0x0;_0xa397f6<_0xbc1826[_0x8788('0x10')];_0xa397f6++){if(_0xbc1826[_0xa397f6][_0x8788('0x11')]===_0x459f65[_0x8788('0x12')]){_0x459f65[_0x8788('0x13')]=_0xbc1826[_0xa397f6]['id'];_0x9b698a=!![];}}if(_0x9b698a){logger[_0x8788('0x14')]('Admin\x20found:',_0x459f65['adminId']);_0x3ed2a5(_0x459f65);}else{_0x499bcc({'statusCode':0x194,'message':_0x8788('0x15')});}}else{_0x499bcc({'statusCode':0x194,'message':_0x8788('0x15')});}})[_0x8788('0x16')](function(_0x54e87b){logger['error']('['+[_0x278533[_0x8788('0x17')]()]+']',_0x54e87b[_0x8788('0x18')]);_0x499bcc(_0x54e87b);});});}function getUser(_0x42fb0e,_0x1ca35e,_0x4f2535){return function(_0x1b4e54){return new Promise(function(_0x360a13,_0x2a6e1a){var _0x30b45e={'method':'GET','uri':_0x4f2535+_0x8788('0xb'),'json':!![]};_0x30b45e[_0x8788('0xc')]=_0x1ca35e;logger[_0x8788('0x14')]('Getting\x20user\x20list');return rp(_0x30b45e)[_0x8788('0xe')](function(_0x830f3f){if(_0x830f3f){var _0x4f2547=_0x830f3f[_0x8788('0xf')];var _0x182927=![];var _0xd53a7=null;if(_0x1b4e54['agentEmail']!==null){logger[_0x8788('0x14')]('Getting\x20user\x20with\x20email',_0x1b4e54[_0x8788('0x19')]);_0x1b4e54[_0x8788('0x1a')]=_0x1b4e54['agentEmail'];for(_0xd53a7=0x0;_0xd53a7<_0x4f2547[_0x8788('0x10')];_0xd53a7++){if(_0x4f2547[_0xd53a7][_0x8788('0x11')]===_0x1b4e54[_0x8788('0x19')]){_0x182927=!![];_0x1b4e54[_0x8788('0x1b')]=_0x4f2547[_0xd53a7]['id'];logger[_0x8788('0x14')](_0x8788('0x1c'),_0x1b4e54['userId']);}}}if(!_0x182927){logger['info'](_0x8788('0x1d'));_0x1b4e54[_0x8788('0x1a')]=_0x1b4e54[_0x8788('0x12')];_0x1b4e54['userId']=_0x1b4e54['adminId'];_0x182927=!![];}if(_0x182927){_0x360a13(_0x1b4e54);}else{_0x2a6e1a({'statusCode':0x194,'message':_0x8788('0x15')});}}else{_0x2a6e1a({'statusCode':0x194,'message':_0x8788('0x15')});}})[_0x8788('0x16')](function(_0x1b899b){logger[_0x8788('0x1e')]('['+[_0x42fb0e[_0x8788('0x17')]()]+']',_0x1b899b[_0x8788('0x18')]);_0x2a6e1a(_0x1b899b);});});};}function searchContact(_0xa348a7,_0x7abac,_0x480d50,_0x1146f2){return new Promise(function(_0x4106f5,_0x473413){var _0x21d61c={'method':_0x8788('0x1f'),'headers':_0x7abac,'uri':_0xa348a7+_0x8788('0x20')+_0x1146f2+_0x8788('0x21')+_0x480d50+_0x8788('0x22'),'json':!![]};rp(_0x21d61c)[_0x8788('0xe')](function(_0x1a81d0){var _0x2869e3=_[_0x8788('0x23')](_0x1a81d0[_0x8788('0x24')][_0x8788('0x24')],[_0x480d50,_0x1146f2]);_0x4106f5(_0x2869e3);})[_0x8788('0x16')](function(_0x11296e){_0x473413(_0x11296e);});});}function getEndUser(_0x37c6ba,_0x438708,_0x5ec659){return function(_0xf331e3){return new Promise(function(_0x148ad1,_0x26ad9b){logger[_0x8788('0x14')](util[_0x8788('0x25')](_0x8788('0x26'),_0xf331e3[_0x8788('0x27')]));searchContact(_0x5ec659,_0x438708,'mobile_number',_0xf331e3['contactNumber'])[_0x8788('0xe')](function(_0x27aeca){if(_0x27aeca){_0xf331e3[_0x8788('0x28')]=_0x27aeca['id'];logger[_0x8788('0x14')](_0x8788('0x29'),_0xf331e3['endUserId']);return _0x148ad1(_0xf331e3);}searchContact(_0x5ec659,_0x438708,'work_number',_0xf331e3[_0x8788('0x27')])['then'](function(_0x3d74f6){if(_0x3d74f6){_0xf331e3[_0x8788('0x28')]=_0x3d74f6['id'];logger['info'](_0x8788('0x2a'),_0xf331e3[_0x8788('0x28')]);return _0x148ad1(_0xf331e3);}createEndUser(_0xf331e3,_0x37c6ba,_0x438708,_0x5ec659)[_0x8788('0xe')](function(_0x17cee1){logger[_0x8788('0x14')]('Contact\x20created:',_0x17cee1['endUserId']);return _0x148ad1(_0x17cee1);});});})['catch'](function(_0x1536f5){_0x26ad9b(_0x1536f5);});});};}function createEndUser(_0x320377,_0x541fc0,_0x57cfff,_0x30ec25){return new Promise(function(_0x407674,_0xa209ae){var _0x5a94c5=moment();var _0x1b14ba={'method':'POST','uri':_0x30ec25+_0x8788('0x2b'),'body':{'contact':{'last_name':_0x320377[_0x8788('0x27')],'work_number':_0x320377[_0x8788('0x27')],'mobile_number':_0x320377[_0x8788('0x27')],'owner_id':_0x320377['userId'],'created_at':_0x5a94c5['format'](_0x8788('0x2c'))}},'json':!![]};_0x1b14ba[_0x8788('0xc')]=_0x57cfff;logger['info'](_0x8788('0x2d'));return rp(_0x1b14ba)[_0x8788('0xe')](function(_0x21051d){_0x320377[_0x8788('0x28')]=_0x21051d[_0x8788('0x2e')]['id'];_0x407674(_0x320377);})[_0x8788('0x16')](function(_0x382a3f){logger[_0x8788('0x1e')]('['+[_0x541fc0[_0x8788('0x17')]()]+']',_0x382a3f[_0x8788('0x18')]);_0xa209ae(_0x382a3f[_0x8788('0x18')]);});});}function getTicket(_0x3ba4c3,_0x21a204,_0x549c7c,_0xa745c4,_0x394938){return function(_0x3308f2){logger['info'](_0x8788('0x2f'));return new Promise(function(_0x4b5751,_0x17e9cf){var _0x5ca5a9=moment();var _0x5ada7f={'method':_0x8788('0x30'),'uri':_0x549c7c+_0x8788('0x31'),'body':{'title':intUtil[_0x8788('0x32')](_0xa745c4[_0x8788('0x33')],_0x394938,'\x20'),'description':intUtil[_0x8788('0x32')](_0xa745c4['Descriptions'],_0x394938,'\x0a'),'owner_id':_0x3308f2[_0x8788('0x1b')],'creater_id':_0x3308f2[_0x8788('0x13')],'targetable_id':_0x3308f2[_0x8788('0x28')],'targetable_type':_0x8788('0x34'),'created_at':_0x5ca5a9[_0x8788('0x25')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x5ca5a9['add'](0x1e,'m')[_0x8788('0x25')](_0x8788('0x2c'))},'json':!![]};_0x5ada7f[_0x8788('0xc')]=_0x21a204;return rp(_0x5ada7f)['then'](function(_0x321c9b){_0x3308f2[_0x8788('0x35')]=_0x321c9b[_0x8788('0x36')]['id'];logger['info']('Task\x20created:',_0x3308f2[_0x8788('0x35')]);_0x4b5751(_0x3308f2);})[_0x8788('0x16')](function(_0x28817b){logger['error']('['+[_0x3ba4c3['toUpperCase']()]+']',_0x28817b[_0x8788('0x18')]);_0x17e9cf(_0x28817b['message']);});});};}function emit(_0x4c9454,_0x4fc6d4,_0x201050){var _0x1c1ba9={'uri':_0x4c9454+_0x8788('0x37')+_0x201050};io['to'](util[_0x8788('0x25')](_0x8788('0x38'),_0x4fc6d4))[_0x8788('0x39')](_0x8788('0x3a'),_0x1c1ba9);}exports['cs']=function(_0x2c3fb7,_0x2b2fe8,_0x1667e7,_0x5cc2fb,_0x581655,_0x5cf14c,_0x37dca0,_0x300ab9){var _0x511b2e={};var _0x5d41d5={'Authorization':_0x8788('0x3b')+_0x5cf14c[_0x8788('0x3c')]};_0x5cf14c[_0x8788('0x3d')]=intUtil[_0x8788('0x3e')](_0x5cf14c[_0x8788('0x3d')]);_0x5cf14c['serverUrl']=intUtil[_0x8788('0x3e')](_0x5cf14c['serverUrl']);var _0x32c9c1=_0x5cf14c[_0x8788('0x3d')];_0x511b2e[_0x8788('0x12')]=_0x5cf14c['username'];_0x511b2e['contactNumber']=_0x300ab9[_0x8788('0x3f')]()===_0x8788('0x40')?_0x2b2fe8[_0x8788('0x41')]:_0x2b2fe8[_0x8788('0x42')];_0x511b2e[_0x8788('0x43')]=_0x300ab9===_0x8788('0x44')||_0x300ab9===_0x8788('0x45')?_0x8788('0x44'):_0x8788('0x40');if(_0x5cc2fb){_0x511b2e['agentEmail']=_0x5cc2fb[_0x8788('0x11')];}var _0x374aee=util['format'](_0x8788('0x46'),_0x5cf14c[_0x8788('0x47')],_0x2b2fe8[_0x8788('0x48')],md5(_0x2b2fe8[_0x8788('0x48')]));if(_0x581655&&_0x581655[_0x8788('0x49')]){logger[_0x8788('0x14')](_0x8788('0x4a'),'Recording\x20is\x20enabled!');_0x2b2fe8[_0x8788('0x4b')]=_0x374aee;}else if(_0x37dca0&&_0x37dca0[_0x8788('0x4c')]&&_0x37dca0[_0x8788('0x4c')]!==_0x8788('0x4d')){logger[_0x8788('0x14')](_0x8788('0x4e'),'Recording\x20is\x20enabled!');_0x2b2fe8['recordingURL']=_0x374aee;}else{_0x2b2fe8[_0x8788('0x4b')]='';}return getAdminId(_0x511b2e,_0x300ab9,_0x5d41d5,_0x32c9c1)[_0x8788('0xe')](getUser(_0x300ab9,_0x5d41d5,_0x32c9c1))['then'](getEndUser(_0x300ab9,_0x5d41d5,_0x32c9c1))[_0x8788('0xe')](getTicket(_0x300ab9,_0x5d41d5,_0x32c9c1,_0x1667e7,_0x2b2fe8))[_0x8788('0xe')](function(_0x432010){logger['info'](util[_0x8788('0x25')](_0x8788('0x4f'),_0x432010[_0x8788('0x35')]));if(_0x300ab9!==_0x8788('0x45')){logger[_0x8788('0x14')]('['+[_0x300ab9[_0x8788('0x17')]()]+']',_0x8788('0x50'));emit(_0x32c9c1,_0x5cc2fb[_0x8788('0x51')],_0x432010[_0x8788('0x28')]);}})[_0x8788('0x16')](function(_0x271ed1){logger['error']('['+[_0x300ab9['toUpperCase']()]+_0x8788('0x52'),util[_0x8788('0x53')](_0x271ed1,{'showHidden':!![],'depth':null}));});};