Built motion from commit (unavailable).|2.5.10
[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 _0xda91=['Subjects','Descriptions','add','YYYY-MM-DDTHH:mm:ss','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat','none','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','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','User\x20found:','userId','catch','/api/contacts/filters','Getting\x20contacts\x20filter','forEach','name','Getting\x20contact\x20list','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contactNumber','contacts','find','mobile_number','endUserId','Contact\x20created:','POST','/api/contacts','format','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString'];(function(_0x13187a,_0x2fcec4){var _0x65b85f=function(_0x33bf1f){while(--_0x33bf1f){_0x13187a['push'](_0x13187a['shift']());}};_0x65b85f(++_0x2fcec4);}(_0xda91,0x72));var _0x1da9=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xda91[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x1da9('0x0'));var rp=require('request-promise');var md5=require(_0x1da9('0x1'));var util=require(_0x1da9('0x2'));var moment=require(_0x1da9('0x3'));var Promise=require(_0x1da9('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x1da9('0x5'));var logger=require(_0x1da9('0x6'))(_0x1da9('0x7'));config[_0x1da9('0x8')]=_[_0x1da9('0x9')](config[_0x1da9('0x8')],{'host':_0x1da9('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0x213939,_0x55342e,_0x4717ba,_0x11ecd7){return new Promise(function(_0x59b66f,_0x1966f1){var _0x4e79a9=![];var _0x5303d6={'method':_0x1da9('0xb'),'uri':_0x11ecd7+_0x1da9('0xc'),'json':!![]};_0x5303d6[_0x1da9('0xd')]=_0x4717ba;logger[_0x1da9('0xe')](_0x1da9('0xf'));return rp(_0x5303d6)[_0x1da9('0x10')](function(_0x4ac870){if(_0x4ac870){var _0x46410e=_0x4ac870[_0x1da9('0x11')];var _0x8081d7=null;for(_0x8081d7=0x0;_0x8081d7<_0x46410e[_0x1da9('0x12')];_0x8081d7++){if(_0x46410e[_0x8081d7][_0x1da9('0x13')]===_0x213939[_0x1da9('0x14')]){_0x213939[_0x1da9('0x15')]=_0x46410e[_0x8081d7]['id'];_0x4e79a9=!![];}}if(_0x4e79a9){logger['info'](_0x1da9('0x16'),_0x213939['adminId']);_0x59b66f(_0x213939);}else{_0x1966f1({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1966f1({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0xf4d3f5){logger[_0x1da9('0x17')]('['+[_0x55342e[_0x1da9('0x18')]()]+']',_0xf4d3f5[_0x1da9('0x19')]);_0x1966f1(_0xf4d3f5);});});}function getUser(_0x2d0262,_0x153467,_0x5c09b8){return function(_0x36a8d5){return new Promise(function(_0x38acb0,_0x1bceea){var _0x3d7985={'method':_0x1da9('0xb'),'uri':_0x5c09b8+_0x1da9('0xc'),'json':!![]};_0x3d7985[_0x1da9('0xd')]=_0x153467;logger[_0x1da9('0xe')](_0x1da9('0x1a'));return rp(_0x3d7985)['then'](function(_0xc46cef){if(_0xc46cef){var _0x48cf2a=_0xc46cef['users'];var _0xb3b977=![];var _0x5dfa7c=null;if(_0x36a8d5[_0x1da9('0x1b')]!==null){logger['info'](_0x1da9('0x1c'),_0x36a8d5[_0x1da9('0x1b')]);_0x36a8d5[_0x1da9('0x1d')]=_0x36a8d5['agentEmail'];for(_0x5dfa7c=0x0;_0x5dfa7c<_0x48cf2a[_0x1da9('0x12')];_0x5dfa7c++){if(_0x48cf2a[_0x5dfa7c][_0x1da9('0x13')]===_0x36a8d5['agentEmail']){_0xb3b977=!![];_0x36a8d5['userId']=_0x48cf2a[_0x5dfa7c]['id'];logger['info'](_0x1da9('0x1e'),_0x36a8d5[_0x1da9('0x1f')]);}}}if(!_0xb3b977){logger[_0x1da9('0xe')]('Admin\x20selected');_0x36a8d5['userEmail']=_0x36a8d5[_0x1da9('0x14')];_0x36a8d5[_0x1da9('0x1f')]=_0x36a8d5[_0x1da9('0x15')];_0xb3b977=!![];}if(_0xb3b977){_0x38acb0(_0x36a8d5);}else{_0x1bceea({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1bceea({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x1da9('0x20')](function(_0x43a6a5){logger[_0x1da9('0x17')]('['+[_0x2d0262['toUpperCase']()]+']',_0x43a6a5[_0x1da9('0x19')]);_0x1bceea(_0x43a6a5);});});};}function getEndUser(_0x43d891,_0x1148cc,_0x3ae21b){return function(_0x468198){return new Promise(function(_0x4a3ce1,_0x44fa83){var _0x5b0573=0x0;var _0x1a3d59={'method':_0x1da9('0xb'),'uri':_0x3ae21b+_0x1da9('0x21'),'json':!![]};_0x1a3d59[_0x1da9('0xd')]=_0x1148cc;logger[_0x1da9('0xe')](_0x1da9('0x22'));return rp(_0x1a3d59)[_0x1da9('0x10')](function(_0xee846a){_0xee846a['filters'][_0x1da9('0x23')](function(_0x546c35){if(_0x546c35[_0x1da9('0x24')]==='All\x20Contacts'){_0x5b0573=_0x546c35['id'];}});})[_0x1da9('0x10')](function(){logger[_0x1da9('0xe')](_0x1da9('0x25'));var _0x8a6f33={'method':'GET','uri':_0x3ae21b+_0x1da9('0x26')+_0x5b0573,'json':!![]};_0x8a6f33[_0x1da9('0xd')]=_0x1148cc;return rp(_0x8a6f33);})['then'](function(_0xac898b){logger[_0x1da9('0xe')](_0x1da9('0x27'),_0x468198[_0x1da9('0x28')]);if(_0xac898b[_0x1da9('0x29')][_0x1da9('0x12')]>0x0){var _0x583373=_[_0x1da9('0x2a')](_0xac898b[_0x1da9('0x29')],function(_0x4077b8){if(_0x4077b8['work_number']===_0x468198[_0x1da9('0x28')]||_0x4077b8[_0x1da9('0x2b')]===_0x468198['contactNumber']){return _0x4077b8;}});if(_0x583373){_0x468198[_0x1da9('0x2c')]=_0x583373['id'];logger[_0x1da9('0xe')]('Contact\x20found:',_0x468198['endUserId']);_0x4a3ce1(_0x468198);}else{return createEndUser(_0x468198,_0x43d891,_0x1148cc,_0x3ae21b)[_0x1da9('0x10')](function(_0x2c072d){logger[_0x1da9('0xe')]('Contact\x20created:',_0x468198['endUserId']);_0x4a3ce1(_0x2c072d);});}}else{return createEndUser(_0x468198,_0x43d891,_0x1148cc,_0x3ae21b)[_0x1da9('0x10')](function(_0x4fe108){logger[_0x1da9('0xe')](_0x1da9('0x2d'),_0x468198[_0x1da9('0x2c')]);_0x4a3ce1(_0x4fe108);});}})[_0x1da9('0x20')](function(_0x424db9){throw new Error(_0x424db9[_0x1da9('0x19')]);});});};}function createEndUser(_0x368d33,_0x1d0808,_0x5645b1,_0x350e37){return new Promise(function(_0x4ce8fa,_0x4256e8){var _0x393b03=moment();var _0x23d1d0={'method':_0x1da9('0x2e'),'uri':_0x350e37+_0x1da9('0x2f'),'body':{'contact':{'last_name':_0x368d33[_0x1da9('0x28')],'work_number':_0x368d33[_0x1da9('0x28')],'mobile_number':_0x368d33[_0x1da9('0x28')],'owner_id':_0x368d33[_0x1da9('0x1f')],'created_at':_0x393b03[_0x1da9('0x30')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x23d1d0[_0x1da9('0xd')]=_0x5645b1;logger[_0x1da9('0xe')](_0x1da9('0x31'));return rp(_0x23d1d0)[_0x1da9('0x10')](function(_0x5d7bae){_0x368d33[_0x1da9('0x2c')]=_0x5d7bae[_0x1da9('0x32')]['id'];_0x4ce8fa(_0x368d33);})['catch'](function(_0x5d7477){logger['error']('['+[_0x1d0808[_0x1da9('0x18')]()]+']',_0x5d7477[_0x1da9('0x19')]);_0x4256e8(_0x5d7477['message']);});});}function getTicket(_0x5bc600,_0xf66aec,_0x552463,_0x227ae9,_0x370b36){return function(_0x1ac61d){logger[_0x1da9('0xe')](_0x1da9('0x33'));return new Promise(function(_0x31be59,_0x4d35d1){var _0x11d4c9=moment();var _0x2b578f={'method':_0x1da9('0x2e'),'uri':_0x552463+_0x1da9('0x34'),'body':{'title':intUtil[_0x1da9('0x35')](_0x227ae9[_0x1da9('0x36')],_0x370b36,'\x20'),'description':intUtil['getString'](_0x227ae9[_0x1da9('0x37')],_0x370b36,'\x0a'),'owner_id':_0x1ac61d[_0x1da9('0x1f')],'creater_id':_0x1ac61d[_0x1da9('0x15')],'targetable_id':_0x1ac61d['endUserId'],'targetable_type':'Contact','created_at':_0x11d4c9[_0x1da9('0x30')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x11d4c9[_0x1da9('0x38')](0x1e,'m')[_0x1da9('0x30')](_0x1da9('0x39'))},'json':!![]};_0x2b578f['headers']=_0xf66aec;return rp(_0x2b578f)[_0x1da9('0x10')](function(_0x1eee43){_0x1ac61d['ticketId']=_0x1eee43[_0x1da9('0x3a')]['id'];logger[_0x1da9('0xe')](_0x1da9('0x3b'),_0x1ac61d[_0x1da9('0x3c')]);_0x31be59(_0x1ac61d);})[_0x1da9('0x20')](function(_0x25bf91){logger[_0x1da9('0x17')]('['+[_0x5bc600[_0x1da9('0x18')]()]+']',_0x25bf91['message']);_0x4d35d1(_0x25bf91[_0x1da9('0x19')]);});});};}function emit(_0x5c0980,_0x14bf3b,_0x46896e){var _0x43784f={'uri':_0x5c0980+_0x1da9('0x3d')+_0x46896e};io['to'](util[_0x1da9('0x30')](_0x1da9('0x3e'),_0x14bf3b))[_0x1da9('0x3f')](_0x1da9('0x40'),_0x43784f);}exports['cs']=function(_0x35e61b,_0x3e2c5b,_0x1305b9,_0xb21ae9,_0x2fcfe3,_0x4fca54,_0x579007,_0x59348d){var _0x47c28d={};var _0x27c8be={'Authorization':'Token\x20token='+_0x4fca54['apiKey']};_0x4fca54['remoteUri']=intUtil[_0x1da9('0x41')](_0x4fca54['remoteUri']);_0x4fca54[_0x1da9('0x42')]=intUtil[_0x1da9('0x41')](_0x4fca54['serverUrl']);var _0x79bc5=_0x4fca54['remoteUri'];_0x47c28d['adminEmail']=_0x4fca54['username'];_0x47c28d[_0x1da9('0x28')]=_0x59348d['toLowerCase']()===_0x1da9('0x43')?_0x3e2c5b[_0x1da9('0x44')]:_0x3e2c5b[_0x1da9('0x45')];_0x47c28d[_0x1da9('0x46')]=_0x59348d===_0x1da9('0x47')||_0x59348d===_0x1da9('0x48')?_0x1da9('0x47'):_0x1da9('0x43');if(_0xb21ae9){_0x47c28d[_0x1da9('0x1b')]=_0xb21ae9[_0x1da9('0x13')];}var _0x363bc4=util[_0x1da9('0x30')](_0x1da9('0x49'),_0x4fca54['serverUrl'],_0x3e2c5b[_0x1da9('0x4a')],md5(_0x3e2c5b[_0x1da9('0x4a')]));if(_0x2fcfe3&&_0x2fcfe3[_0x1da9('0x4b')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x3e2c5b[_0x1da9('0x4c')]=_0x363bc4;}else if(_0x579007&&_0x579007[_0x1da9('0x4d')]&&_0x579007[_0x1da9('0x4d')]!==_0x1da9('0x4e')){logger[_0x1da9('0xe')]('[OUTBOUND]',_0x1da9('0x4f'));_0x3e2c5b[_0x1da9('0x4c')]=_0x363bc4;}else{_0x3e2c5b[_0x1da9('0x4c')]='';}return getAdminId(_0x47c28d,_0x59348d,_0x27c8be,_0x79bc5)[_0x1da9('0x10')](getUser(_0x59348d,_0x27c8be,_0x79bc5))[_0x1da9('0x10')](getEndUser(_0x59348d,_0x27c8be,_0x79bc5))[_0x1da9('0x10')](getTicket(_0x59348d,_0x27c8be,_0x79bc5,_0x1305b9,_0x3e2c5b))[_0x1da9('0x10')](function(_0x1e7ceb){logger[_0x1da9('0xe')](util[_0x1da9('0x30')](_0x1da9('0x50'),_0x1e7ceb[_0x1da9('0x3c')]));if(_0x59348d!==_0x1da9('0x48')){logger[_0x1da9('0xe')]('['+[_0x59348d['toUpperCase']()]+']',_0x1da9('0x51'));emit(_0x79bc5,_0xb21ae9['name'],_0x1e7ceb['endUserId']);}})[_0x1da9('0x20')](function(_0x5b7dbf){logger[_0x1da9('0x17')]('['+[_0x59348d[_0x1da9('0x18')]()]+_0x1da9('0x52'),util[_0x1da9('0x53')](_0x5b7dbf,{'showHidden':!![],'depth':null}));});};