766871b2a7f254a1e7500a7918cf50d5125439ae
[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 _0x965d=['Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','localhost','socket.io-emitter','GET','/api/selector/owners','length','email','adminEmail','adminId','Admin\x20found:','error','toUpperCase','message','Getting\x20user\x20list','then','agentEmail','userEmail','info','User\x20found:','userId','Admin\x20selected','Requested\x20Resource\x20not\x20Found','catch','/api/lookup?q=','&f=','&entities=contact','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','Contact','add','YYYY-MM-DDTHH:mm:ss','headers','task','Task\x20created:','ticketId','user:%s','emit'];(function(_0x3d3a63,_0x4f6565){var _0x3e6717=function(_0x367be6){while(--_0x367be6){_0x3d3a63['push'](_0x3d3a63['shift']());}};_0x3e6717(++_0x4f6565);}(_0x965d,0x1be));var _0xd965=function(_0xe9e88a,_0x15376c){_0xe9e88a=_0xe9e88a-0x0;var _0x3ed820=_0x965d[_0xe9e88a];return _0x3ed820;};'use strict';var _=require(_0xd965('0x0'));var rp=require(_0xd965('0x1'));var md5=require('md5');var util=require(_0xd965('0x2'));var moment=require(_0xd965('0x3'));var Promise=require(_0xd965('0x4'));var Redis=require('ioredis');var intUtil=require(_0xd965('0x5'));var config=require(_0xd965('0x6'));var logger=require(_0xd965('0x7'))('freshsales');config['redis']=_['defaults'](config['redis'],{'host':_0xd965('0x8'),'port':0x18eb});var io=require(_0xd965('0x9'))(new Redis(config['redis']));function getAdminId(_0x427868,_0x563c33,_0x358001,_0x1ed34d){return new Promise(function(_0xa4f9f9,_0xb3956f){var _0x59fadc=![];var _0x3d7453={'method':_0xd965('0xa'),'uri':_0x1ed34d+_0xd965('0xb'),'json':!![]};_0x3d7453['headers']=_0x358001;logger['info']('Getting\x20admin\x20information');return rp(_0x3d7453)['then'](function(_0x410aaa){if(_0x410aaa){var _0x21b59d=_0x410aaa['users'];var _0x321065=null;for(_0x321065=0x0;_0x321065<_0x21b59d[_0xd965('0xc')];_0x321065++){if(_0x21b59d[_0x321065][_0xd965('0xd')]===_0x427868[_0xd965('0xe')]){_0x427868[_0xd965('0xf')]=_0x21b59d[_0x321065]['id'];_0x59fadc=!![];}}if(_0x59fadc){logger['info'](_0xd965('0x10'),_0x427868[_0xd965('0xf')]);_0xa4f9f9(_0x427868);}else{_0xb3956f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0xb3956f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x30edc3){logger[_0xd965('0x11')]('['+[_0x563c33[_0xd965('0x12')]()]+']',_0x30edc3[_0xd965('0x13')]);_0xb3956f(_0x30edc3);});});}function getUser(_0x4f1960,_0x439eca,_0x236a58){return function(_0x340467){return new Promise(function(_0x233506,_0x45f930){var _0x5dbaff={'method':_0xd965('0xa'),'uri':_0x236a58+'/api/selector/owners','json':!![]};_0x5dbaff['headers']=_0x439eca;logger['info'](_0xd965('0x14'));return rp(_0x5dbaff)[_0xd965('0x15')](function(_0x876ef4){if(_0x876ef4){var _0xabe074=_0x876ef4['users'];var _0x46ccf3=![];var _0x3acaf2=null;if(_0x340467[_0xd965('0x16')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x340467['agentEmail']);_0x340467[_0xd965('0x17')]=_0x340467['agentEmail'];for(_0x3acaf2=0x0;_0x3acaf2<_0xabe074[_0xd965('0xc')];_0x3acaf2++){if(_0xabe074[_0x3acaf2][_0xd965('0xd')]===_0x340467['agentEmail']){_0x46ccf3=!![];_0x340467['userId']=_0xabe074[_0x3acaf2]['id'];logger[_0xd965('0x18')](_0xd965('0x19'),_0x340467[_0xd965('0x1a')]);}}}if(!_0x46ccf3){logger[_0xd965('0x18')](_0xd965('0x1b'));_0x340467[_0xd965('0x17')]=_0x340467[_0xd965('0xe')];_0x340467[_0xd965('0x1a')]=_0x340467[_0xd965('0xf')];_0x46ccf3=!![];}if(_0x46ccf3){_0x233506(_0x340467);}else{_0x45f930({'statusCode':0x194,'message':_0xd965('0x1c')});}}else{_0x45f930({'statusCode':0x194,'message':_0xd965('0x1c')});}})[_0xd965('0x1d')](function(_0x4af63e){logger[_0xd965('0x11')]('['+[_0x4f1960[_0xd965('0x12')]()]+']',_0x4af63e['message']);_0x45f930(_0x4af63e);});});};}function searchContact(_0x47a140,_0x4d6a07,_0x4d5fe8,_0x4fc59f){return new Promise(function(_0x13d11d,_0x182b87){var _0x36fc2c={'method':'GET','headers':_0x4d6a07,'uri':_0x47a140+_0xd965('0x1e')+_0x4fc59f+_0xd965('0x1f')+_0x4d5fe8+_0xd965('0x20'),'json':!![]};rp(_0x36fc2c)['then'](function(_0x280d62){var _0x591ed2=_['find'](_0x280d62[_0xd965('0x21')][_0xd965('0x21')],[_0x4d5fe8,_0x4fc59f]);_0x13d11d(_0x591ed2);})['catch'](function(_0x29b600){_0x182b87(_0x29b600);});});}function getEndUser(_0x5be7a6,_0xec5851,_0x35d404){return function(_0x10fa88){return new Promise(function(_0x9437b2,_0x52202a){logger[_0xd965('0x18')](util[_0xd965('0x22')]('Searching\x20contact\x20with\x20phone\x20%s',_0x10fa88[_0xd965('0x23')]));searchContact(_0x35d404,_0xec5851,_0xd965('0x24'),_0x10fa88['contactNumber'])[_0xd965('0x15')](function(_0x5e36b3){if(_0x5e36b3){_0x10fa88[_0xd965('0x25')]=_0x5e36b3['id'];logger[_0xd965('0x18')](_0xd965('0x26'),_0x10fa88[_0xd965('0x25')]);return _0x9437b2(_0x10fa88);}searchContact(_0x35d404,_0xec5851,'work_number',_0x10fa88[_0xd965('0x23')])[_0xd965('0x15')](function(_0x4e974a){if(_0x4e974a){_0x10fa88[_0xd965('0x25')]=_0x4e974a['id'];logger[_0xd965('0x18')](_0xd965('0x27'),_0x10fa88[_0xd965('0x25')]);return _0x9437b2(_0x10fa88);}createEndUser(_0x10fa88,_0x5be7a6,_0xec5851,_0x35d404)[_0xd965('0x15')](function(_0x32dd2d){logger['info'](_0xd965('0x28'),_0x32dd2d['endUserId']);return _0x9437b2(_0x32dd2d);});});})[_0xd965('0x1d')](function(_0x40b7d7){_0x52202a(_0x40b7d7);});});};}function createEndUser(_0x49caa7,_0x4149a2,_0x7e9d74,_0x17970f){return new Promise(function(_0x844166,_0x99543){var _0x32bd10=moment();var _0x2ee2a3={'method':_0xd965('0x29'),'uri':_0x17970f+_0xd965('0x2a'),'body':{'contact':{'last_name':_0x49caa7[_0xd965('0x23')],'work_number':_0x49caa7['contactNumber'],'mobile_number':_0x49caa7[_0xd965('0x23')],'owner_id':_0x49caa7[_0xd965('0x1a')],'created_at':_0x32bd10[_0xd965('0x22')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x2ee2a3['headers']=_0x7e9d74;logger['info'](_0xd965('0x2b'));return rp(_0x2ee2a3)[_0xd965('0x15')](function(_0x2f3863){_0x49caa7[_0xd965('0x25')]=_0x2f3863[_0xd965('0x2c')]['id'];_0x844166(_0x49caa7);})[_0xd965('0x1d')](function(_0x43da9a){logger[_0xd965('0x11')]('['+[_0x4149a2[_0xd965('0x12')]()]+']',_0x43da9a['message']);_0x99543(_0x43da9a['message']);});});}function getTicket(_0x59501f,_0x3569a9,_0x2d53fb,_0x357656,_0x30cfc5){return function(_0x36d0cd){logger[_0xd965('0x18')](_0xd965('0x2d'));return new Promise(function(_0x19da2d,_0x5c10e7){var _0x3fb2a1=moment();var _0x31b0a0={'method':_0xd965('0x29'),'uri':_0x2d53fb+_0xd965('0x2e'),'body':{'title':intUtil['getString'](_0x357656['Subjects'],_0x30cfc5,'\x20'),'description':intUtil[_0xd965('0x2f')](_0x357656[_0xd965('0x30')],_0x30cfc5,'\x0a'),'owner_id':_0x36d0cd['userId'],'creater_id':_0x36d0cd['adminId'],'targetable_id':_0x36d0cd[_0xd965('0x25')],'targetable_type':_0xd965('0x31'),'created_at':_0x3fb2a1[_0xd965('0x22')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x3fb2a1[_0xd965('0x32')](0x1e,'m')[_0xd965('0x22')](_0xd965('0x33'))},'json':!![]};_0x31b0a0[_0xd965('0x34')]=_0x3569a9;return rp(_0x31b0a0)['then'](function(_0x1671f0){_0x36d0cd['ticketId']=_0x1671f0[_0xd965('0x35')]['id'];logger[_0xd965('0x18')](_0xd965('0x36'),_0x36d0cd[_0xd965('0x37')]);_0x19da2d(_0x36d0cd);})[_0xd965('0x1d')](function(_0xb915ed){logger[_0xd965('0x11')]('['+[_0x59501f[_0xd965('0x12')]()]+']',_0xb915ed[_0xd965('0x13')]);_0x5c10e7(_0xb915ed['message']);});});};}function emit(_0xa5b2cf,_0x543688,_0x36e296){var _0x506cf1={'uri':_0xa5b2cf+'/contacts/'+_0x36e296};io['to'](util['format'](_0xd965('0x38'),_0x543688))[_0xd965('0x39')]('trigger:browser:url',_0x506cf1);}exports['cs']=function(_0x3f5e50,_0x4e2666,_0x2361c0,_0x1fee3c,_0x57a3b2,_0x2c1754,_0x37d3ce,_0x107254){var _0x54d001={};var _0x57ef85={'Authorization':_0xd965('0x3a')+_0x2c1754[_0xd965('0x3b')]};_0x2c1754['remoteUri']=intUtil[_0xd965('0x3c')](_0x2c1754[_0xd965('0x3d')]);_0x2c1754[_0xd965('0x3e')]=intUtil[_0xd965('0x3c')](_0x2c1754['serverUrl']);var _0x1e4ac1=_0x2c1754['remoteUri'];_0x54d001['adminEmail']=_0x2c1754[_0xd965('0x3f')];_0x54d001['contactNumber']=_0x107254[_0xd965('0x40')]()===_0xd965('0x41')?_0x4e2666[_0xd965('0x42')]:_0x4e2666[_0xd965('0x43')];_0x54d001[_0xd965('0x44')]=_0x107254===_0xd965('0x45')||_0x107254===_0xd965('0x46')?_0xd965('0x45'):'outbound';if(_0x1fee3c){_0x54d001['agentEmail']=_0x1fee3c[_0xd965('0xd')];}var _0x1d5d6c=util[_0xd965('0x22')](_0xd965('0x47'),_0x2c1754[_0xd965('0x3e')],_0x4e2666[_0xd965('0x48')],md5(_0x4e2666[_0xd965('0x48')]));if(_0x57a3b2&&_0x57a3b2['monitor_format']){logger[_0xd965('0x18')](_0xd965('0x49'),'Recording\x20is\x20enabled!');_0x4e2666[_0xd965('0x4a')]=_0x1d5d6c;}else if(_0x37d3ce&&_0x37d3ce[_0xd965('0x4b')]&&_0x37d3ce[_0xd965('0x4b')]!==_0xd965('0x4c')){logger[_0xd965('0x18')](_0xd965('0x4d'),_0xd965('0x4e'));_0x4e2666[_0xd965('0x4a')]=_0x1d5d6c;}else{_0x4e2666['recordingURL']='';}return getAdminId(_0x54d001,_0x107254,_0x57ef85,_0x1e4ac1)[_0xd965('0x15')](getUser(_0x107254,_0x57ef85,_0x1e4ac1))['then'](getEndUser(_0x107254,_0x57ef85,_0x1e4ac1))['then'](getTicket(_0x107254,_0x57ef85,_0x1e4ac1,_0x2361c0,_0x4e2666))[_0xd965('0x15')](function(_0x50e4d9){logger[_0xd965('0x18')](util[_0xd965('0x22')](_0xd965('0x4f'),_0x50e4d9[_0xd965('0x37')]));if(_0x107254!==_0xd965('0x46')){logger[_0xd965('0x18')]('['+[_0x107254[_0xd965('0x12')]()]+']',_0xd965('0x50'));emit(_0x1e4ac1,_0x1fee3c[_0xd965('0x51')],_0x50e4d9[_0xd965('0x25')]);}})[_0xd965('0x1d')](function(_0x2047da){logger[_0xd965('0x11')]('['+[_0x107254[_0xd965('0x12')]()]+_0xd965('0x52'),util[_0xd965('0x53')](_0x2047da,{'showHidden':!![],'depth':null}));});};