ac50568288f8cb5716342021077d73d74cebc67d
[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 _0x14c6=['contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','error','Creating\x20new\x20task','/api/tasks','Subjects','getString','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','calleridnum','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','ioredis','./util','../../../../config/environment','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','toUpperCase','message','Getting\x20user\x20with\x20email','agentEmail','User\x20found:','userId','Admin\x20selected','userEmail','catch','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s'];(function(_0x3e9539,_0x5d9632){var _0x13e0ba=function(_0x17f344){while(--_0x17f344){_0x3e9539['push'](_0x3e9539['shift']());}};_0x13e0ba(++_0x5d9632);}(_0x14c6,0x17d));var _0x614c=function(_0xb7f1c3,_0x1facf6){_0xb7f1c3=_0xb7f1c3-0x0;var _0x1f552d=_0x14c6[_0xb7f1c3];return _0x1f552d;};'use strict';var _=require(_0x614c('0x0'));var rp=require(_0x614c('0x1'));var md5=require('md5');var util=require(_0x614c('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x614c('0x3'));var intUtil=require(_0x614c('0x4'));var config=require(_0x614c('0x5'));var logger=require('../../../../config/logger')(_0x614c('0x6'));config[_0x614c('0x7')]=_[_0x614c('0x8')](config[_0x614c('0x7')],{'host':_0x614c('0x9'),'port':0x18eb});var io=require(_0x614c('0xa'))(new Redis(config[_0x614c('0x7')]));function getAdminId(_0x2e217f,_0x43296b,_0x2beee3,_0x413b2e){return new Promise(function(_0x277913,_0x4b348a){var _0x2730f3=![];var _0x5652e7={'method':_0x614c('0xb'),'uri':_0x413b2e+_0x614c('0xc'),'json':!![]};_0x5652e7[_0x614c('0xd')]=_0x2beee3;logger[_0x614c('0xe')](_0x614c('0xf'));return rp(_0x5652e7)[_0x614c('0x10')](function(_0x4ff7b1){if(_0x4ff7b1){var _0x36862f=_0x4ff7b1[_0x614c('0x11')];var _0x322ea7=null;for(_0x322ea7=0x0;_0x322ea7<_0x36862f[_0x614c('0x12')];_0x322ea7++){if(_0x36862f[_0x322ea7][_0x614c('0x13')]===_0x2e217f[_0x614c('0x14')]){_0x2e217f[_0x614c('0x15')]=_0x36862f[_0x322ea7]['id'];_0x2730f3=!![];}}if(_0x2730f3){logger[_0x614c('0xe')](_0x614c('0x16'),_0x2e217f[_0x614c('0x15')]);_0x277913(_0x2e217f);}else{_0x4b348a({'statusCode':0x194,'message':_0x614c('0x17')});}}else{_0x4b348a({'statusCode':0x194,'message':_0x614c('0x17')});}})['catch'](function(_0x220aa4){logger['error']('['+[_0x43296b[_0x614c('0x18')]()]+']',_0x220aa4[_0x614c('0x19')]);_0x4b348a(_0x220aa4);});});}function getUser(_0x4d6b43,_0x12a181,_0x10c952){return function(_0x5c07ad){return new Promise(function(_0x5b257b,_0x1396fd){var _0x3d85a4={'method':_0x614c('0xb'),'uri':_0x10c952+'/api/selector/owners','json':!![]};_0x3d85a4[_0x614c('0xd')]=_0x12a181;logger[_0x614c('0xe')]('Getting\x20user\x20list');return rp(_0x3d85a4)[_0x614c('0x10')](function(_0x48e3c8){if(_0x48e3c8){var _0x45d7b6=_0x48e3c8['users'];var _0x230073=![];var _0x29c905=null;if(_0x5c07ad['agentEmail']!==null){logger[_0x614c('0xe')](_0x614c('0x1a'),_0x5c07ad[_0x614c('0x1b')]);_0x5c07ad['userEmail']=_0x5c07ad[_0x614c('0x1b')];for(_0x29c905=0x0;_0x29c905<_0x45d7b6[_0x614c('0x12')];_0x29c905++){if(_0x45d7b6[_0x29c905]['email']===_0x5c07ad[_0x614c('0x1b')]){_0x230073=!![];_0x5c07ad['userId']=_0x45d7b6[_0x29c905]['id'];logger[_0x614c('0xe')](_0x614c('0x1c'),_0x5c07ad[_0x614c('0x1d')]);}}}if(!_0x230073){logger[_0x614c('0xe')](_0x614c('0x1e'));_0x5c07ad[_0x614c('0x1f')]=_0x5c07ad[_0x614c('0x14')];_0x5c07ad[_0x614c('0x1d')]=_0x5c07ad[_0x614c('0x15')];_0x230073=!![];}if(_0x230073){_0x5b257b(_0x5c07ad);}else{_0x1396fd({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1396fd({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x614c('0x20')](function(_0x4c01ee){logger['error']('['+[_0x4d6b43[_0x614c('0x18')]()]+']',_0x4c01ee[_0x614c('0x19')]);_0x1396fd(_0x4c01ee);});});};}function searchContact(_0x2b213a,_0x5c7f2c,_0x41e4fe,_0x3185ef){return new Promise(function(_0x27c297,_0x5a409a){var _0x3d5ba9={'method':'GET','headers':_0x5c7f2c,'uri':_0x2b213a+_0x614c('0x21')+_0x3185ef+'&f='+_0x41e4fe+_0x614c('0x22'),'json':!![]};rp(_0x3d5ba9)['then'](function(_0x437830){var _0x56ee88=_[_0x614c('0x23')](_0x437830[_0x614c('0x24')][_0x614c('0x24')],[_0x41e4fe,_0x3185ef]);_0x27c297(_0x56ee88);})[_0x614c('0x20')](function(_0x2f66e1){_0x5a409a(_0x2f66e1);});});}function getEndUser(_0x5c9626,_0x318f40,_0x4c441b){return function(_0x2185e8){return new Promise(function(_0x5b5c76,_0x4a25e6){logger['info'](util[_0x614c('0x25')](_0x614c('0x26'),_0x2185e8[_0x614c('0x27')]));searchContact(_0x4c441b,_0x318f40,'mobile_number',_0x2185e8[_0x614c('0x27')])[_0x614c('0x10')](function(_0x4d206b){if(_0x4d206b){_0x2185e8[_0x614c('0x28')]=_0x4d206b['id'];logger[_0x614c('0xe')](_0x614c('0x29'),_0x2185e8[_0x614c('0x28')]);return _0x5b5c76(_0x2185e8);}searchContact(_0x4c441b,_0x318f40,_0x614c('0x2a'),_0x2185e8[_0x614c('0x27')])[_0x614c('0x10')](function(_0x450737){if(_0x450737){_0x2185e8['endUserId']=_0x450737['id'];logger['info'](_0x614c('0x2b'),_0x2185e8['endUserId']);return _0x5b5c76(_0x2185e8);}createEndUser(_0x2185e8,_0x5c9626,_0x318f40,_0x4c441b)[_0x614c('0x10')](function(_0x40bd0e){logger[_0x614c('0xe')]('Contact\x20created:',_0x40bd0e[_0x614c('0x28')]);return _0x5b5c76(_0x40bd0e);});});})[_0x614c('0x20')](function(_0x561e9a){_0x4a25e6(_0x561e9a);});});};}function createEndUser(_0x4e3be5,_0x67384d,_0x2a7e5e,_0x414289){return new Promise(function(_0x44fefd,_0x8ca539){var _0x5c719b=moment();var _0x581f9b={'method':'POST','uri':_0x414289+_0x614c('0x2c'),'body':{'contact':{'last_name':_0x4e3be5[_0x614c('0x27')],'work_number':_0x4e3be5[_0x614c('0x27')],'mobile_number':_0x4e3be5[_0x614c('0x27')],'owner_id':_0x4e3be5[_0x614c('0x1d')],'created_at':_0x5c719b[_0x614c('0x25')](_0x614c('0x2d'))}},'json':!![]};_0x581f9b[_0x614c('0xd')]=_0x2a7e5e;logger['info'](_0x614c('0x2e'));return rp(_0x581f9b)[_0x614c('0x10')](function(_0x12a3d9){_0x4e3be5['endUserId']=_0x12a3d9[_0x614c('0x2f')]['id'];_0x44fefd(_0x4e3be5);})['catch'](function(_0x553733){logger[_0x614c('0x30')]('['+[_0x67384d[_0x614c('0x18')]()]+']',_0x553733[_0x614c('0x19')]);_0x8ca539(_0x553733['message']);});});}function getTicket(_0x49f822,_0x312f9b,_0x2cabe5,_0x5c95b7,_0x5aef45){return function(_0x31c2e0){logger['info'](_0x614c('0x31'));return new Promise(function(_0x1b63e5,_0x153e25){var _0x578308=moment();var _0x2e7186={'method':'POST','uri':_0x2cabe5+_0x614c('0x32'),'body':{'title':intUtil['getString'](_0x5c95b7[_0x614c('0x33')],_0x5aef45,'\x20'),'description':intUtil[_0x614c('0x34')](_0x5c95b7[_0x614c('0x35')],_0x5aef45,'\x0a'),'owner_id':_0x31c2e0[_0x614c('0x1d')],'creater_id':_0x31c2e0['adminId'],'targetable_id':_0x31c2e0[_0x614c('0x28')],'targetable_type':_0x614c('0x36'),'created_at':_0x578308[_0x614c('0x25')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x578308[_0x614c('0x37')](0x1e,'m')[_0x614c('0x25')](_0x614c('0x2d'))},'json':!![]};_0x2e7186[_0x614c('0xd')]=_0x312f9b;return rp(_0x2e7186)[_0x614c('0x10')](function(_0x252aa1){_0x31c2e0[_0x614c('0x38')]=_0x252aa1[_0x614c('0x39')]['id'];logger[_0x614c('0xe')](_0x614c('0x3a'),_0x31c2e0['ticketId']);_0x1b63e5(_0x31c2e0);})[_0x614c('0x20')](function(_0x15ce05){logger[_0x614c('0x30')]('['+[_0x49f822[_0x614c('0x18')]()]+']',_0x15ce05[_0x614c('0x19')]);_0x153e25(_0x15ce05['message']);});});};}function emit(_0x16db96,_0x42cff6,_0x45679f){var _0x11137f={'uri':_0x16db96+_0x614c('0x3b')+_0x45679f};io['to'](util['format'](_0x614c('0x3c'),_0x42cff6))['emit'](_0x614c('0x3d'),_0x11137f);}exports['cs']=function(_0x246c1c,_0x48128e,_0x376ec9,_0x23e538,_0x13dc6f,_0x593023,_0x38a691,_0x39623e){var _0x4c1ec3={};var _0x435082={'Authorization':_0x614c('0x3e')+_0x593023[_0x614c('0x3f')]};_0x593023[_0x614c('0x40')]=intUtil[_0x614c('0x41')](_0x593023[_0x614c('0x40')]);_0x593023[_0x614c('0x42')]=intUtil[_0x614c('0x41')](_0x593023[_0x614c('0x42')]);var _0x47b15f=_0x593023[_0x614c('0x40')];_0x4c1ec3[_0x614c('0x14')]=_0x593023[_0x614c('0x43')];_0x4c1ec3[_0x614c('0x27')]=_0x39623e[_0x614c('0x44')]()==='outbound'?_0x48128e['destcalleridnum']:_0x48128e[_0x614c('0x45')];_0x4c1ec3['callDirection']=_0x39623e===_0x614c('0x46')||_0x39623e===_0x614c('0x47')?_0x614c('0x46'):_0x614c('0x48');if(_0x23e538){_0x4c1ec3[_0x614c('0x1b')]=_0x23e538['email'];}var _0x52bae7=util[_0x614c('0x25')](_0x614c('0x49'),_0x593023['serverUrl'],_0x48128e[_0x614c('0x4a')],md5(_0x48128e['uniqueid']));if(_0x13dc6f&&_0x13dc6f['monitor_format']){logger[_0x614c('0xe')](_0x614c('0x4b'),'Recording\x20is\x20enabled!');_0x48128e['recordingURL']=_0x52bae7;}else if(_0x38a691&&_0x38a691[_0x614c('0x4c')]&&_0x38a691[_0x614c('0x4c')]!==_0x614c('0x4d')){logger[_0x614c('0xe')](_0x614c('0x4e'),'Recording\x20is\x20enabled!');_0x48128e[_0x614c('0x4f')]=_0x52bae7;}else{_0x48128e[_0x614c('0x4f')]='';}return getAdminId(_0x4c1ec3,_0x39623e,_0x435082,_0x47b15f)['then'](getUser(_0x39623e,_0x435082,_0x47b15f))[_0x614c('0x10')](getEndUser(_0x39623e,_0x435082,_0x47b15f))['then'](getTicket(_0x39623e,_0x435082,_0x47b15f,_0x376ec9,_0x48128e))[_0x614c('0x10')](function(_0x21d2f8){logger[_0x614c('0xe')](util[_0x614c('0x25')](_0x614c('0x50'),_0x21d2f8[_0x614c('0x38')]));if(_0x39623e!==_0x614c('0x47')){logger[_0x614c('0xe')]('['+[_0x39623e[_0x614c('0x18')]()]+']',_0x614c('0x51'));emit(_0x47b15f,_0x23e538['name'],_0x21d2f8[_0x614c('0x28')]);}})[_0x614c('0x20')](function(_0x21c01a){logger['error']('['+[_0x39623e[_0x614c('0x18')]()]+_0x614c('0x52'),util[_0x614c('0x53')](_0x21c01a,{'showHidden':!![],'depth':null}));});};