Built motion from commit 85328c08.|2.5.50
[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 _0xb0d1=['bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','Admin\x20selected','error','message','&f=','&entities=contact','find','contacts','format','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','Subjects','getString','Descriptions','Contact','ticketId','Task\x20created:','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','name','lodash','util','moment'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xb0d1,0x9b));var _0x1b0d=function(_0x2b12f7,_0x39f636){_0x2b12f7=_0x2b12f7-0x0;var _0x33942b=_0xb0d1[_0x2b12f7];return _0x33942b;};'use strict';var _=require(_0x1b0d('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x1b0d('0x1'));var moment=require(_0x1b0d('0x2'));var Promise=require(_0x1b0d('0x3'));var Redis=require(_0x1b0d('0x4'));var intUtil=require(_0x1b0d('0x5'));var config=require(_0x1b0d('0x6'));var logger=require(_0x1b0d('0x7'))('freshsales');config[_0x1b0d('0x8')]=_[_0x1b0d('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1b0d('0xa'))(new Redis(config[_0x1b0d('0x8')]));function getAdminId(_0x39fac8,_0x23fb7b,_0x2863e6,_0x43cc0f){return new Promise(function(_0x3c8b5b,_0x2a6c0f){var _0x4629b3=![];var _0x4b4eb2={'method':_0x1b0d('0xb'),'uri':_0x43cc0f+_0x1b0d('0xc'),'json':!![]};_0x4b4eb2[_0x1b0d('0xd')]=_0x2863e6;logger['info'](_0x1b0d('0xe'));return rp(_0x4b4eb2)[_0x1b0d('0xf')](function(_0x4d18c6){if(_0x4d18c6){var _0x378430=_0x4d18c6[_0x1b0d('0x10')];var _0x15d829=null;for(_0x15d829=0x0;_0x15d829<_0x378430[_0x1b0d('0x11')];_0x15d829++){if(_0x378430[_0x15d829][_0x1b0d('0x12')]===_0x39fac8[_0x1b0d('0x13')]){_0x39fac8['adminId']=_0x378430[_0x15d829]['id'];_0x4629b3=!![];}}if(_0x4629b3){logger[_0x1b0d('0x14')](_0x1b0d('0x15'),_0x39fac8[_0x1b0d('0x16')]);_0x3c8b5b(_0x39fac8);}else{_0x2a6c0f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x2a6c0f({'statusCode':0x194,'message':_0x1b0d('0x17')});}})[_0x1b0d('0x18')](function(_0x9330b0){logger['error']('['+[_0x23fb7b[_0x1b0d('0x19')]()]+']',_0x9330b0['message']);_0x2a6c0f(_0x9330b0);});});}function getUser(_0x171bfa,_0x508640,_0x3e521b){return function(_0x35b72e){return new Promise(function(_0x1f8443,_0x3076bf){var _0x58357f={'method':_0x1b0d('0xb'),'uri':_0x3e521b+_0x1b0d('0xc'),'json':!![]};_0x58357f['headers']=_0x508640;logger[_0x1b0d('0x14')]('Getting\x20user\x20list');return rp(_0x58357f)[_0x1b0d('0xf')](function(_0x349c17){if(_0x349c17){var _0x12af86=_0x349c17[_0x1b0d('0x10')];var _0x2f1171=![];var _0x584c5c=null;if(_0x35b72e['agentEmail']!==null){logger[_0x1b0d('0x14')](_0x1b0d('0x1a'),_0x35b72e[_0x1b0d('0x1b')]);_0x35b72e[_0x1b0d('0x1c')]=_0x35b72e['agentEmail'];for(_0x584c5c=0x0;_0x584c5c<_0x12af86[_0x1b0d('0x11')];_0x584c5c++){if(_0x12af86[_0x584c5c][_0x1b0d('0x12')]===_0x35b72e[_0x1b0d('0x1b')]){_0x2f1171=!![];_0x35b72e[_0x1b0d('0x1d')]=_0x12af86[_0x584c5c]['id'];logger[_0x1b0d('0x14')]('User\x20found:',_0x35b72e[_0x1b0d('0x1d')]);}}}if(!_0x2f1171){logger[_0x1b0d('0x14')](_0x1b0d('0x1e'));_0x35b72e[_0x1b0d('0x1c')]=_0x35b72e['adminEmail'];_0x35b72e[_0x1b0d('0x1d')]=_0x35b72e[_0x1b0d('0x16')];_0x2f1171=!![];}if(_0x2f1171){_0x1f8443(_0x35b72e);}else{_0x3076bf({'statusCode':0x194,'message':_0x1b0d('0x17')});}}else{_0x3076bf({'statusCode':0x194,'message':_0x1b0d('0x17')});}})[_0x1b0d('0x18')](function(_0x35d7f6){logger[_0x1b0d('0x1f')]('['+[_0x171bfa[_0x1b0d('0x19')]()]+']',_0x35d7f6[_0x1b0d('0x20')]);_0x3076bf(_0x35d7f6);});});};}function searchContact(_0x22b95b,_0x5bcb12,_0x116311,_0x1e1f0f){return new Promise(function(_0x30cdfd,_0x235659){var _0x390f37={'method':_0x1b0d('0xb'),'headers':_0x5bcb12,'uri':_0x22b95b+'/api/lookup?q='+_0x1e1f0f+_0x1b0d('0x21')+_0x116311+_0x1b0d('0x22'),'json':!![]};rp(_0x390f37)[_0x1b0d('0xf')](function(_0x3cfedb){var _0xac8957=_[_0x1b0d('0x23')](_0x3cfedb[_0x1b0d('0x24')]['contacts'],[_0x116311,_0x1e1f0f]);_0x30cdfd(_0xac8957);})[_0x1b0d('0x18')](function(_0x67f048){_0x235659(_0x67f048);});});}function getEndUser(_0x12cf58,_0x16a079,_0x3e29c7){return function(_0x45f23c){return new Promise(function(_0x573db2,_0x2ca5e5){logger['info'](util[_0x1b0d('0x25')]('Searching\x20contact\x20with\x20phone\x20%s',_0x45f23c[_0x1b0d('0x26')]));searchContact(_0x3e29c7,_0x16a079,_0x1b0d('0x27'),_0x45f23c[_0x1b0d('0x26')])[_0x1b0d('0xf')](function(_0x1b3e67){if(_0x1b3e67){_0x45f23c['endUserId']=_0x1b3e67['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x45f23c[_0x1b0d('0x28')]);return _0x573db2(_0x45f23c);}searchContact(_0x3e29c7,_0x16a079,_0x1b0d('0x29'),_0x45f23c[_0x1b0d('0x26')])[_0x1b0d('0xf')](function(_0xe1a528){if(_0xe1a528){_0x45f23c[_0x1b0d('0x28')]=_0xe1a528['id'];logger[_0x1b0d('0x14')](_0x1b0d('0x2a'),_0x45f23c[_0x1b0d('0x28')]);return _0x573db2(_0x45f23c);}createEndUser(_0x45f23c,_0x12cf58,_0x16a079,_0x3e29c7)['then'](function(_0x2d8f7a){logger['info'](_0x1b0d('0x2b'),_0x2d8f7a[_0x1b0d('0x28')]);return _0x573db2(_0x2d8f7a);});});})[_0x1b0d('0x18')](function(_0x16b11b){_0x2ca5e5(_0x16b11b);});});};}function createEndUser(_0x49e889,_0x2967f1,_0x1530ac,_0x16214b){return new Promise(function(_0x227fec,_0x4ab664){var _0xa1b53a=moment();var _0x461863={'method':_0x1b0d('0x2c'),'uri':_0x16214b+'/api/contacts','body':{'contact':{'last_name':_0x49e889[_0x1b0d('0x26')],'work_number':_0x49e889[_0x1b0d('0x26')],'mobile_number':_0x49e889[_0x1b0d('0x26')],'owner_id':_0x49e889[_0x1b0d('0x1d')],'created_at':_0xa1b53a[_0x1b0d('0x25')](_0x1b0d('0x2d'))}},'json':!![]};_0x461863[_0x1b0d('0xd')]=_0x1530ac;logger[_0x1b0d('0x14')](_0x1b0d('0x2e'));return rp(_0x461863)['then'](function(_0xdbf740){_0x49e889[_0x1b0d('0x28')]=_0xdbf740[_0x1b0d('0x2f')]['id'];_0x227fec(_0x49e889);})[_0x1b0d('0x18')](function(_0x4012aa){logger[_0x1b0d('0x1f')]('['+[_0x2967f1[_0x1b0d('0x19')]()]+']',_0x4012aa['message']);_0x4ab664(_0x4012aa['message']);});});}function getTicket(_0x39753a,_0x1cb35f,_0x30befc,_0x466cd5,_0x412f3d){return function(_0x278786){logger[_0x1b0d('0x14')](_0x1b0d('0x30'));return new Promise(function(_0x27ad53,_0x15db7e){var _0x54ca73=moment();var _0x4573b5={'method':'POST','uri':_0x30befc+'/api/tasks','body':{'title':intUtil['getString'](_0x466cd5[_0x1b0d('0x31')],_0x412f3d,'\x20'),'description':intUtil[_0x1b0d('0x32')](_0x466cd5[_0x1b0d('0x33')],_0x412f3d,'\x0a'),'owner_id':_0x278786[_0x1b0d('0x1d')],'creater_id':_0x278786[_0x1b0d('0x16')],'targetable_id':_0x278786[_0x1b0d('0x28')],'targetable_type':_0x1b0d('0x34'),'created_at':_0x54ca73[_0x1b0d('0x25')](_0x1b0d('0x2d')),'due_date':_0x54ca73['add'](0x1e,'m')[_0x1b0d('0x25')](_0x1b0d('0x2d'))},'json':!![]};_0x4573b5['headers']=_0x1cb35f;return rp(_0x4573b5)['then'](function(_0x47f8c6){_0x278786[_0x1b0d('0x35')]=_0x47f8c6['task']['id'];logger[_0x1b0d('0x14')](_0x1b0d('0x36'),_0x278786[_0x1b0d('0x35')]);_0x27ad53(_0x278786);})[_0x1b0d('0x18')](function(_0x2ab217){logger[_0x1b0d('0x1f')]('['+[_0x39753a[_0x1b0d('0x19')]()]+']',_0x2ab217['message']);_0x15db7e(_0x2ab217['message']);});});};}function emit(_0x48dd87,_0x16cf54,_0x55b665){var _0x571a7c={'uri':_0x48dd87+'/contacts/'+_0x55b665};io['to'](util[_0x1b0d('0x25')]('user:%s',_0x16cf54))[_0x1b0d('0x37')](_0x1b0d('0x38'),_0x571a7c);}exports['cs']=function(_0x5767bb,_0x48cd89,_0x535f03,_0x122091,_0x167f91,_0x428ab0,_0x83145a,_0x1db841){var _0xa9cd0e={};var _0x107a59={'Authorization':_0x1b0d('0x39')+_0x428ab0[_0x1b0d('0x3a')]};_0x428ab0[_0x1b0d('0x3b')]=intUtil['stripTrailingSlash'](_0x428ab0[_0x1b0d('0x3b')]);_0x428ab0['serverUrl']=intUtil['stripTrailingSlash'](_0x428ab0[_0x1b0d('0x3c')]);var _0x56d077=_0x428ab0[_0x1b0d('0x3b')];_0xa9cd0e[_0x1b0d('0x13')]=_0x428ab0[_0x1b0d('0x3d')];_0xa9cd0e[_0x1b0d('0x26')]=_0x1db841[_0x1b0d('0x3e')]()==='outbound'?_0x48cd89[_0x1b0d('0x3f')]:_0x48cd89[_0x1b0d('0x40')];_0xa9cd0e[_0x1b0d('0x41')]=_0x1db841===_0x1b0d('0x42')||_0x1db841===_0x1b0d('0x43')?_0x1b0d('0x42'):'outbound';if(_0x122091){_0xa9cd0e['agentEmail']=_0x122091[_0x1b0d('0x12')];}var _0x2ec4af=util[_0x1b0d('0x25')](_0x1b0d('0x44'),_0x428ab0[_0x1b0d('0x3c')],_0x48cd89[_0x1b0d('0x45')],md5(_0x48cd89[_0x1b0d('0x45')]));if(_0x167f91&&_0x167f91[_0x1b0d('0x46')]){logger[_0x1b0d('0x14')](_0x1b0d('0x47'),_0x1b0d('0x48'));_0x48cd89[_0x1b0d('0x49')]=_0x2ec4af;}else if(_0x83145a&&_0x83145a[_0x1b0d('0x4a')]&&_0x83145a[_0x1b0d('0x4a')]!==_0x1b0d('0x4b')){logger[_0x1b0d('0x14')](_0x1b0d('0x4c'),'Recording\x20is\x20enabled!');_0x48cd89[_0x1b0d('0x49')]=_0x2ec4af;}else{_0x48cd89[_0x1b0d('0x49')]='';}return getAdminId(_0xa9cd0e,_0x1db841,_0x107a59,_0x56d077)[_0x1b0d('0xf')](getUser(_0x1db841,_0x107a59,_0x56d077))[_0x1b0d('0xf')](getEndUser(_0x1db841,_0x107a59,_0x56d077))[_0x1b0d('0xf')](getTicket(_0x1db841,_0x107a59,_0x56d077,_0x535f03,_0x48cd89))[_0x1b0d('0xf')](function(_0x4e6bd3){logger[_0x1b0d('0x14')](util[_0x1b0d('0x25')](_0x1b0d('0x4d'),_0x4e6bd3['ticketId']));if(_0x1db841!=='unmanaged'){logger[_0x1b0d('0x14')]('['+[_0x1db841['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x56d077,_0x122091[_0x1b0d('0x4e')],_0x4e6bd3[_0x1b0d('0x28')]);}})[_0x1b0d('0x18')](function(_0x5cbffd){logger[_0x1b0d('0x1f')]('['+[_0x1db841['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x5cbffd,{'showHidden':!![],'depth':null}));});};