b464ca6cb8405024207fffc634ae8ad4693b4bb7
[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 _0x3373=['Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','freshsales','redis','defaults','GET','info','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','agentEmail','userId','userEmail','catch','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','contactNumber','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','contact','Creating\x20new\x20task','/api/tasks','Subjects','getString','Descriptions','YYYY-MM-DDTHH:mm:ss','task','Task\x20created:','ticketId','/contacts/'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3373,0x68));var _0x3337=function(_0x164fa4,_0x43c615){_0x164fa4=_0x164fa4-0x0;var _0x4583c7=_0x3373[_0x164fa4];return _0x4583c7;};'use strict';var _=require(_0x3337('0x0'));var rp=require(_0x3337('0x1'));var md5=require(_0x3337('0x2'));var util=require('util');var moment=require(_0x3337('0x3'));var Promise=require(_0x3337('0x4'));var Redis=require(_0x3337('0x5'));var intUtil=require(_0x3337('0x6'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x3337('0x7'));config[_0x3337('0x8')]=_[_0x3337('0x9')](config[_0x3337('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3337('0x8')]));function getAdminId(_0x19f75f,_0x45f560,_0x5afa11,_0x36442c){return new Promise(function(_0x57bb77,_0x17b43a){var _0x32f94a=![];var _0x408cdf={'method':_0x3337('0xa'),'uri':_0x36442c+'/api/selector/owners','json':!![]};_0x408cdf['headers']=_0x5afa11;logger[_0x3337('0xb')](_0x3337('0xc'));return rp(_0x408cdf)[_0x3337('0xd')](function(_0x3dd047){if(_0x3dd047){var _0x4fdd18=_0x3dd047['users'];var _0x3296a4=null;for(_0x3296a4=0x0;_0x3296a4<_0x4fdd18[_0x3337('0xe')];_0x3296a4++){if(_0x4fdd18[_0x3296a4][_0x3337('0xf')]===_0x19f75f[_0x3337('0x10')]){_0x19f75f[_0x3337('0x11')]=_0x4fdd18[_0x3296a4]['id'];_0x32f94a=!![];}}if(_0x32f94a){logger[_0x3337('0xb')](_0x3337('0x12'),_0x19f75f[_0x3337('0x11')]);_0x57bb77(_0x19f75f);}else{_0x17b43a({'statusCode':0x194,'message':_0x3337('0x13')});}}else{_0x17b43a({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x34219e){logger[_0x3337('0x14')]('['+[_0x45f560[_0x3337('0x15')]()]+']',_0x34219e[_0x3337('0x16')]);_0x17b43a(_0x34219e);});});}function getUser(_0x1ee681,_0x13890d,_0x262058){return function(_0x85e8ec){return new Promise(function(_0x548beb,_0x163bba){var _0x1b610d={'method':_0x3337('0xa'),'uri':_0x262058+_0x3337('0x17'),'json':!![]};_0x1b610d[_0x3337('0x18')]=_0x13890d;logger['info'](_0x3337('0x19'));return rp(_0x1b610d)[_0x3337('0xd')](function(_0x2e42cf){if(_0x2e42cf){var _0x47a9a0=_0x2e42cf['users'];var _0x47ea9f=![];var _0x55c4b0=null;if(_0x85e8ec[_0x3337('0x1a')]!==null){logger[_0x3337('0xb')]('Getting\x20user\x20with\x20email',_0x85e8ec[_0x3337('0x1a')]);_0x85e8ec['userEmail']=_0x85e8ec[_0x3337('0x1a')];for(_0x55c4b0=0x0;_0x55c4b0<_0x47a9a0[_0x3337('0xe')];_0x55c4b0++){if(_0x47a9a0[_0x55c4b0][_0x3337('0xf')]===_0x85e8ec[_0x3337('0x1a')]){_0x47ea9f=!![];_0x85e8ec[_0x3337('0x1b')]=_0x47a9a0[_0x55c4b0]['id'];logger[_0x3337('0xb')]('User\x20found:',_0x85e8ec[_0x3337('0x1b')]);}}}if(!_0x47ea9f){logger[_0x3337('0xb')]('Admin\x20selected');_0x85e8ec[_0x3337('0x1c')]=_0x85e8ec['adminEmail'];_0x85e8ec[_0x3337('0x1b')]=_0x85e8ec[_0x3337('0x11')];_0x47ea9f=!![];}if(_0x47ea9f){_0x548beb(_0x85e8ec);}else{_0x163bba({'statusCode':0x194,'message':_0x3337('0x13')});}}else{_0x163bba({'statusCode':0x194,'message':_0x3337('0x13')});}})[_0x3337('0x1d')](function(_0x50a30e){logger['error']('['+[_0x1ee681[_0x3337('0x15')]()]+']',_0x50a30e['message']);_0x163bba(_0x50a30e);});});};}function searchContact(_0x2d712c,_0xd10a24,_0x510ee3,_0x2fc41a){return new Promise(function(_0x5b1d06,_0x3f4497){var _0x45b03d={'method':'GET','headers':_0xd10a24,'uri':_0x2d712c+_0x3337('0x1e')+_0x2fc41a+_0x3337('0x1f')+_0x510ee3+_0x3337('0x20'),'json':!![]};rp(_0x45b03d)[_0x3337('0xd')](function(_0x1ee697){var _0x15daaa=_[_0x3337('0x21')](_0x1ee697['contacts'][_0x3337('0x22')],[_0x510ee3,_0x2fc41a]);_0x5b1d06(_0x15daaa);})[_0x3337('0x1d')](function(_0x1ca95a){_0x3f4497(_0x1ca95a);});});}function getEndUser(_0x496644,_0x13c917,_0x415ddf){return function(_0x5509d8){return new Promise(function(_0x1c95c2,_0x16adf9){logger[_0x3337('0xb')](util[_0x3337('0x23')]('Searching\x20contact\x20with\x20phone\x20%s',_0x5509d8[_0x3337('0x24')]));searchContact(_0x415ddf,_0x13c917,'mobile_number',_0x5509d8[_0x3337('0x24')])[_0x3337('0xd')](function(_0x165600){if(_0x165600){_0x5509d8['endUserId']=_0x165600['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x5509d8[_0x3337('0x25')]);return _0x1c95c2(_0x5509d8);}searchContact(_0x415ddf,_0x13c917,_0x3337('0x26'),_0x5509d8['contactNumber'])[_0x3337('0xd')](function(_0x177802){if(_0x177802){_0x5509d8['endUserId']=_0x177802['id'];logger[_0x3337('0xb')](_0x3337('0x27'),_0x5509d8['endUserId']);return _0x1c95c2(_0x5509d8);}createEndUser(_0x5509d8,_0x496644,_0x13c917,_0x415ddf)[_0x3337('0xd')](function(_0x4eb4de){logger[_0x3337('0xb')](_0x3337('0x28'),_0x4eb4de[_0x3337('0x25')]);return _0x1c95c2(_0x4eb4de);});});})[_0x3337('0x1d')](function(_0xd81d69){_0x16adf9(_0xd81d69);});});};}function createEndUser(_0x412b62,_0x1583ef,_0x3226cb,_0x599173){return new Promise(function(_0x105973,_0xe7beb1){var _0x1d2ad3=moment();var _0x1e436a={'method':_0x3337('0x29'),'uri':_0x599173+_0x3337('0x2a'),'body':{'contact':{'last_name':_0x412b62[_0x3337('0x24')],'work_number':_0x412b62[_0x3337('0x24')],'mobile_number':_0x412b62[_0x3337('0x24')],'owner_id':_0x412b62[_0x3337('0x1b')],'created_at':_0x1d2ad3[_0x3337('0x23')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x1e436a[_0x3337('0x18')]=_0x3226cb;logger[_0x3337('0xb')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x1e436a)['then'](function(_0x1a72aa){_0x412b62[_0x3337('0x25')]=_0x1a72aa[_0x3337('0x2b')]['id'];_0x105973(_0x412b62);})[_0x3337('0x1d')](function(_0xfae30d){logger[_0x3337('0x14')]('['+[_0x1583ef[_0x3337('0x15')]()]+']',_0xfae30d[_0x3337('0x16')]);_0xe7beb1(_0xfae30d[_0x3337('0x16')]);});});}function getTicket(_0x5069f1,_0x296e76,_0x50a7af,_0x163f0f,_0x33da1e){return function(_0x363f18){logger[_0x3337('0xb')](_0x3337('0x2c'));return new Promise(function(_0x350a55,_0x18aa51){var _0x41b7c2=moment();var _0x378a6a={'method':_0x3337('0x29'),'uri':_0x50a7af+_0x3337('0x2d'),'body':{'title':intUtil['getString'](_0x163f0f[_0x3337('0x2e')],_0x33da1e,'\x20'),'description':intUtil[_0x3337('0x2f')](_0x163f0f[_0x3337('0x30')],_0x33da1e,'\x0a'),'owner_id':_0x363f18[_0x3337('0x1b')],'creater_id':_0x363f18['adminId'],'targetable_id':_0x363f18[_0x3337('0x25')],'targetable_type':'Contact','created_at':_0x41b7c2[_0x3337('0x23')](_0x3337('0x31')),'due_date':_0x41b7c2['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x378a6a[_0x3337('0x18')]=_0x296e76;return rp(_0x378a6a)[_0x3337('0xd')](function(_0x32f9d7){_0x363f18['ticketId']=_0x32f9d7[_0x3337('0x32')]['id'];logger[_0x3337('0xb')](_0x3337('0x33'),_0x363f18[_0x3337('0x34')]);_0x350a55(_0x363f18);})['catch'](function(_0x4f7601){logger[_0x3337('0x14')]('['+[_0x5069f1[_0x3337('0x15')]()]+']',_0x4f7601[_0x3337('0x16')]);_0x18aa51(_0x4f7601['message']);});});};}function emit(_0x5a1227,_0x56ad71,_0x31c044){var _0x990ec4={'uri':_0x5a1227+_0x3337('0x35')+_0x31c044};io['to'](util[_0x3337('0x23')]('user:%s',_0x56ad71))['emit']('trigger:browser:url',_0x990ec4);}exports['cs']=function(_0x811c25,_0x4daf1e,_0x256ff2,_0x3d888a,_0x3bd09d,_0x33a12f,_0x5b5b0f,_0x515a0e){var _0x447384={};var _0x2869dc={'Authorization':_0x3337('0x36')+_0x33a12f[_0x3337('0x37')]};_0x33a12f['remoteUri']=intUtil[_0x3337('0x38')](_0x33a12f[_0x3337('0x39')]);_0x33a12f[_0x3337('0x3a')]=intUtil[_0x3337('0x38')](_0x33a12f[_0x3337('0x3a')]);var _0x57d831=_0x33a12f[_0x3337('0x39')];_0x447384['adminEmail']=_0x33a12f[_0x3337('0x3b')];_0x447384[_0x3337('0x24')]=_0x515a0e[_0x3337('0x3c')]()===_0x3337('0x3d')?_0x4daf1e[_0x3337('0x3e')]:_0x4daf1e[_0x3337('0x3f')];_0x447384['callDirection']=_0x515a0e===_0x3337('0x40')||_0x515a0e==='unmanaged'?'queue':_0x3337('0x3d');if(_0x3d888a){_0x447384[_0x3337('0x1a')]=_0x3d888a[_0x3337('0xf')];}var _0x2eb164=util[_0x3337('0x23')](_0x3337('0x41'),_0x33a12f['serverUrl'],_0x4daf1e[_0x3337('0x42')],md5(_0x4daf1e[_0x3337('0x42')]));if(_0x3bd09d&&_0x3bd09d[_0x3337('0x43')]){logger[_0x3337('0xb')](_0x3337('0x44'),_0x3337('0x45'));_0x4daf1e['recordingURL']=_0x2eb164;}else if(_0x5b5b0f&&_0x5b5b0f[_0x3337('0x46')]&&_0x5b5b0f['recordingFormat']!==_0x3337('0x47')){logger[_0x3337('0xb')](_0x3337('0x48'),'Recording\x20is\x20enabled!');_0x4daf1e['recordingURL']=_0x2eb164;}else{_0x4daf1e[_0x3337('0x49')]='';}return getAdminId(_0x447384,_0x515a0e,_0x2869dc,_0x57d831)[_0x3337('0xd')](getUser(_0x515a0e,_0x2869dc,_0x57d831))[_0x3337('0xd')](getEndUser(_0x515a0e,_0x2869dc,_0x57d831))['then'](getTicket(_0x515a0e,_0x2869dc,_0x57d831,_0x256ff2,_0x4daf1e))[_0x3337('0xd')](function(_0x50f91e){logger['info'](util[_0x3337('0x23')](_0x3337('0x4a'),_0x50f91e[_0x3337('0x34')]));if(_0x515a0e!=='unmanaged'){logger[_0x3337('0xb')]('['+[_0x515a0e[_0x3337('0x15')]()]+']',_0x3337('0x4b'));emit(_0x57d831,_0x3d888a[_0x3337('0x4c')],_0x50f91e['endUserId']);}})[_0x3337('0x1d')](function(_0x5712fa){logger[_0x3337('0x14')]('['+[_0x515a0e[_0x3337('0x15')]()]+_0x3337('0x4d'),util[_0x3337('0x4e')](_0x5712fa,{'showHidden':!![],'depth':null}));});};