1bad99bb8411a79ae4bb4fa8264fe60469baec5a
[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 _0xffb4=['monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','request-promise','md5','moment','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','socket.io-emitter','GET','/api/selector/owners','headers','info','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','error','toUpperCase','message','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','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','getString','Subjects','Contact','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','destcalleridnum','calleridnum','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid'];(function(_0x401569,_0x35ad49){var _0x9a8d74=function(_0x48fff6){while(--_0x48fff6){_0x401569['push'](_0x401569['shift']());}};_0x9a8d74(++_0x35ad49);}(_0xffb4,0x1a8));var _0x4ffb=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xffb4[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0x4ffb('0x0'));var rp=require(_0x4ffb('0x1'));var md5=require(_0x4ffb('0x2'));var util=require('util');var moment=require(_0x4ffb('0x3'));var Promise=require('bluebird');var Redis=require(_0x4ffb('0x4'));var intUtil=require('./util');var config=require(_0x4ffb('0x5'));var logger=require(_0x4ffb('0x6'))(_0x4ffb('0x7'));config[_0x4ffb('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4ffb('0x9'))(new Redis(config[_0x4ffb('0x8')]));function getAdminId(_0x22d75a,_0x16a760,_0x16088b,_0x50486e){return new Promise(function(_0x52f481,_0x1c3e8a){var _0x1cb509=![];var _0x57cb8b={'method':_0x4ffb('0xa'),'uri':_0x50486e+_0x4ffb('0xb'),'json':!![]};_0x57cb8b[_0x4ffb('0xc')]=_0x16088b;logger[_0x4ffb('0xd')]('Getting\x20admin\x20information');return rp(_0x57cb8b)['then'](function(_0x3bd198){if(_0x3bd198){var _0x451fac=_0x3bd198[_0x4ffb('0xe')];var _0x46cb9b=null;for(_0x46cb9b=0x0;_0x46cb9b<_0x451fac[_0x4ffb('0xf')];_0x46cb9b++){if(_0x451fac[_0x46cb9b][_0x4ffb('0x10')]===_0x22d75a[_0x4ffb('0x11')]){_0x22d75a[_0x4ffb('0x12')]=_0x451fac[_0x46cb9b]['id'];_0x1cb509=!![];}}if(_0x1cb509){logger[_0x4ffb('0xd')](_0x4ffb('0x13'),_0x22d75a['adminId']);_0x52f481(_0x22d75a);}else{_0x1c3e8a({'statusCode':0x194,'message':_0x4ffb('0x14')});}}else{_0x1c3e8a({'statusCode':0x194,'message':_0x4ffb('0x14')});}})[_0x4ffb('0x15')](function(_0x519907){logger['error']('['+[_0x16a760['toUpperCase']()]+']',_0x519907['message']);_0x1c3e8a(_0x519907);});});}function getUser(_0x3fb61b,_0x520c61,_0x1b118c){return function(_0x14bc4d){return new Promise(function(_0x88a178,_0x327502){var _0x1283ed={'method':_0x4ffb('0xa'),'uri':_0x1b118c+_0x4ffb('0xb'),'json':!![]};_0x1283ed['headers']=_0x520c61;logger[_0x4ffb('0xd')](_0x4ffb('0x16'));return rp(_0x1283ed)[_0x4ffb('0x17')](function(_0xab8271){if(_0xab8271){var _0x4b2aa3=_0xab8271[_0x4ffb('0xe')];var _0x3947f8=![];var _0x4c73d6=null;if(_0x14bc4d[_0x4ffb('0x18')]!==null){logger[_0x4ffb('0xd')](_0x4ffb('0x19'),_0x14bc4d[_0x4ffb('0x18')]);_0x14bc4d[_0x4ffb('0x1a')]=_0x14bc4d[_0x4ffb('0x18')];for(_0x4c73d6=0x0;_0x4c73d6<_0x4b2aa3['length'];_0x4c73d6++){if(_0x4b2aa3[_0x4c73d6]['email']===_0x14bc4d[_0x4ffb('0x18')]){_0x3947f8=!![];_0x14bc4d[_0x4ffb('0x1b')]=_0x4b2aa3[_0x4c73d6]['id'];logger[_0x4ffb('0xd')](_0x4ffb('0x1c'),_0x14bc4d[_0x4ffb('0x1b')]);}}}if(!_0x3947f8){logger[_0x4ffb('0xd')](_0x4ffb('0x1d'));_0x14bc4d[_0x4ffb('0x1a')]=_0x14bc4d[_0x4ffb('0x11')];_0x14bc4d[_0x4ffb('0x1b')]=_0x14bc4d[_0x4ffb('0x12')];_0x3947f8=!![];}if(_0x3947f8){_0x88a178(_0x14bc4d);}else{_0x327502({'statusCode':0x194,'message':_0x4ffb('0x14')});}}else{_0x327502({'statusCode':0x194,'message':_0x4ffb('0x14')});}})['catch'](function(_0xc8090d){logger[_0x4ffb('0x1e')]('['+[_0x3fb61b[_0x4ffb('0x1f')]()]+']',_0xc8090d[_0x4ffb('0x20')]);_0x327502(_0xc8090d);});});};}function searchContact(_0x4e2a36,_0x547cfd,_0x5d414e,_0x5ab6ee){return new Promise(function(_0x48a32b,_0x2d99b2){var _0x45d7b1={'method':'GET','headers':_0x547cfd,'uri':_0x4e2a36+_0x4ffb('0x21')+_0x5ab6ee+_0x4ffb('0x22')+_0x5d414e+_0x4ffb('0x23'),'json':!![]};rp(_0x45d7b1)['then'](function(_0x299d44){var _0x245947=_['find'](_0x299d44[_0x4ffb('0x24')][_0x4ffb('0x24')],[_0x5d414e,_0x5ab6ee]);_0x48a32b(_0x245947);})[_0x4ffb('0x15')](function(_0x530358){_0x2d99b2(_0x530358);});});}function getEndUser(_0x36db3b,_0xffd06d,_0x4ad16a){return function(_0x34a87e){return new Promise(function(_0x52f6e0,_0x49e0af){logger[_0x4ffb('0xd')](util[_0x4ffb('0x25')](_0x4ffb('0x26'),_0x34a87e[_0x4ffb('0x27')]));searchContact(_0x4ad16a,_0xffd06d,_0x4ffb('0x28'),_0x34a87e['contactNumber'])['then'](function(_0x68efff){if(_0x68efff){_0x34a87e['endUserId']=_0x68efff['id'];logger[_0x4ffb('0xd')](_0x4ffb('0x29'),_0x34a87e[_0x4ffb('0x2a')]);return _0x52f6e0(_0x34a87e);}searchContact(_0x4ad16a,_0xffd06d,_0x4ffb('0x2b'),_0x34a87e[_0x4ffb('0x27')])[_0x4ffb('0x17')](function(_0x106344){if(_0x106344){_0x34a87e[_0x4ffb('0x2a')]=_0x106344['id'];logger['info'](_0x4ffb('0x2c'),_0x34a87e[_0x4ffb('0x2a')]);return _0x52f6e0(_0x34a87e);}createEndUser(_0x34a87e,_0x36db3b,_0xffd06d,_0x4ad16a)[_0x4ffb('0x17')](function(_0x5513ae){logger[_0x4ffb('0xd')](_0x4ffb('0x2d'),_0x5513ae[_0x4ffb('0x2a')]);return _0x52f6e0(_0x5513ae);});});})[_0x4ffb('0x15')](function(_0x4024b7){_0x49e0af(_0x4024b7);});});};}function createEndUser(_0x156726,_0x245e7a,_0xae671e,_0x29596e){return new Promise(function(_0x23d424,_0x3a7894){var _0xc8898d=moment();var _0x222941={'method':_0x4ffb('0x2e'),'uri':_0x29596e+_0x4ffb('0x2f'),'body':{'contact':{'last_name':_0x156726[_0x4ffb('0x27')],'work_number':_0x156726[_0x4ffb('0x27')],'mobile_number':_0x156726[_0x4ffb('0x27')],'owner_id':_0x156726[_0x4ffb('0x1b')],'created_at':_0xc8898d['format'](_0x4ffb('0x30'))}},'json':!![]};_0x222941[_0x4ffb('0xc')]=_0xae671e;logger[_0x4ffb('0xd')](_0x4ffb('0x31'));return rp(_0x222941)[_0x4ffb('0x17')](function(_0x5113f1){_0x156726['endUserId']=_0x5113f1[_0x4ffb('0x32')]['id'];_0x23d424(_0x156726);})[_0x4ffb('0x15')](function(_0x5bab84){logger[_0x4ffb('0x1e')]('['+[_0x245e7a[_0x4ffb('0x1f')]()]+']',_0x5bab84[_0x4ffb('0x20')]);_0x3a7894(_0x5bab84['message']);});});}function getTicket(_0x1a0333,_0x358e63,_0x36268a,_0x4d4a37,_0x5f3278){return function(_0x530b48){logger['info'](_0x4ffb('0x33'));return new Promise(function(_0x1a64c0,_0x45ac30){var _0x23e754=moment();var _0x2cc9d0={'method':'POST','uri':_0x36268a+_0x4ffb('0x34'),'body':{'title':intUtil[_0x4ffb('0x35')](_0x4d4a37[_0x4ffb('0x36')],_0x5f3278,'\x20'),'description':intUtil[_0x4ffb('0x35')](_0x4d4a37['Descriptions'],_0x5f3278,'\x0a'),'owner_id':_0x530b48[_0x4ffb('0x1b')],'creater_id':_0x530b48[_0x4ffb('0x12')],'targetable_id':_0x530b48[_0x4ffb('0x2a')],'targetable_type':_0x4ffb('0x37'),'created_at':_0x23e754[_0x4ffb('0x25')](_0x4ffb('0x30')),'due_date':_0x23e754['add'](0x1e,'m')['format'](_0x4ffb('0x30'))},'json':!![]};_0x2cc9d0[_0x4ffb('0xc')]=_0x358e63;return rp(_0x2cc9d0)[_0x4ffb('0x17')](function(_0x89d2c3){_0x530b48['ticketId']=_0x89d2c3[_0x4ffb('0x38')]['id'];logger['info'](_0x4ffb('0x39'),_0x530b48[_0x4ffb('0x3a')]);_0x1a64c0(_0x530b48);})[_0x4ffb('0x15')](function(_0x3522e0){logger['error']('['+[_0x1a0333['toUpperCase']()]+']',_0x3522e0[_0x4ffb('0x20')]);_0x45ac30(_0x3522e0[_0x4ffb('0x20')]);});});};}function emit(_0x18bde5,_0x53dc61,_0x20798c){var _0x42fd6a={'uri':_0x18bde5+_0x4ffb('0x3b')+_0x20798c};io['to'](util[_0x4ffb('0x25')](_0x4ffb('0x3c'),_0x53dc61))[_0x4ffb('0x3d')]('trigger:browser:url',_0x42fd6a);}exports['cs']=function(_0x16bc99,_0x69b262,_0x786cd1,_0x49b365,_0x140815,_0x3dba13,_0x4e75d6,_0xd6330e){var _0x468f40={};var _0x670ca8={'Authorization':_0x4ffb('0x3e')+_0x3dba13[_0x4ffb('0x3f')]};_0x3dba13[_0x4ffb('0x40')]=intUtil[_0x4ffb('0x41')](_0x3dba13[_0x4ffb('0x40')]);_0x3dba13['serverUrl']=intUtil[_0x4ffb('0x41')](_0x3dba13[_0x4ffb('0x42')]);var _0x389b49=_0x3dba13[_0x4ffb('0x40')];_0x468f40[_0x4ffb('0x11')]=_0x3dba13['username'];_0x468f40['contactNumber']=_0xd6330e['toLowerCase']()==='outbound'?_0x69b262[_0x4ffb('0x43')]:_0x69b262[_0x4ffb('0x44')];_0x468f40['callDirection']=_0xd6330e===_0x4ffb('0x45')||_0xd6330e===_0x4ffb('0x46')?_0x4ffb('0x45'):_0x4ffb('0x47');if(_0x49b365){_0x468f40['agentEmail']=_0x49b365['email'];}var _0x38b575=util['format'](_0x4ffb('0x48'),_0x3dba13[_0x4ffb('0x42')],_0x69b262[_0x4ffb('0x49')],md5(_0x69b262[_0x4ffb('0x49')]));if(_0x140815&&_0x140815[_0x4ffb('0x4a')]){logger[_0x4ffb('0xd')](_0x4ffb('0x4b'),_0x4ffb('0x4c'));_0x69b262['recordingURL']=_0x38b575;}else if(_0x4e75d6&&_0x4e75d6[_0x4ffb('0x4d')]&&_0x4e75d6[_0x4ffb('0x4d')]!=='none'){logger[_0x4ffb('0xd')](_0x4ffb('0x4e'),'Recording\x20is\x20enabled!');_0x69b262[_0x4ffb('0x4f')]=_0x38b575;}else{_0x69b262['recordingURL']='';}return getAdminId(_0x468f40,_0xd6330e,_0x670ca8,_0x389b49)['then'](getUser(_0xd6330e,_0x670ca8,_0x389b49))[_0x4ffb('0x17')](getEndUser(_0xd6330e,_0x670ca8,_0x389b49))[_0x4ffb('0x17')](getTicket(_0xd6330e,_0x670ca8,_0x389b49,_0x786cd1,_0x69b262))[_0x4ffb('0x17')](function(_0xc1cf1e){logger['info'](util[_0x4ffb('0x25')](_0x4ffb('0x50'),_0xc1cf1e[_0x4ffb('0x3a')]));if(_0xd6330e!=='unmanaged'){logger[_0x4ffb('0xd')]('['+[_0xd6330e[_0x4ffb('0x1f')]()]+']',_0x4ffb('0x51'));emit(_0x389b49,_0x49b365['name'],_0xc1cf1e[_0x4ffb('0x2a')]);}})[_0x4ffb('0x15')](function(_0x1f6cfc){logger['error']('['+[_0xd6330e[_0x4ffb('0x1f')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x4ffb('0x52')](_0x1f6cfc,{'showHidden':!![],'depth':null}));});};