Built motion from commit 775e2a94.|2.6.3
[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 _0x4322=['mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','add','ticketId','/contacts/','emit','trigger:browser:url','Token\x20token=','stripTrailingSlash','serverUrl','remoteUri','adminEmail','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','md5','util','moment','bluebird','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','headers','info','then','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','GET','/api/selector/owners','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','length','userId','User\x20found:','Admin\x20selected','userEmail','&f=','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber'];(function(_0x41d3cd,_0x139b35){var _0x5741a1=function(_0x3b9ca6){while(--_0x3b9ca6){_0x41d3cd['push'](_0x41d3cd['shift']());}};_0x5741a1(++_0x139b35);}(_0x4322,0x7b));var _0x2432=function(_0x36f7d3,_0x3ebecf){_0x36f7d3=_0x36f7d3-0x0;var _0x26e9c9=_0x4322[_0x36f7d3];return _0x26e9c9;};'use strict';var _=require(_0x2432('0x0'));var rp=require(_0x2432('0x1'));var md5=require(_0x2432('0x2'));var util=require(_0x2432('0x3'));var moment=require(_0x2432('0x4'));var Promise=require(_0x2432('0x5'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x2432('0x6'));var logger=require(_0x2432('0x7'))(_0x2432('0x8'));config[_0x2432('0x9')]=_[_0x2432('0xa')](config[_0x2432('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x2432('0xb'))(new Redis(config['redis']));function getAdminId(_0x150a54,_0x48eec2,_0xdf58bf,_0x52acf3){return new Promise(function(_0x2ab63e,_0x10263f){var _0x3aa9a8=![];var _0x19dce7={'method':'GET','uri':_0x52acf3+'/api/selector/owners','json':!![]};_0x19dce7[_0x2432('0xc')]=_0xdf58bf;logger[_0x2432('0xd')]('Getting\x20admin\x20information');return rp(_0x19dce7)[_0x2432('0xe')](function(_0x1652f5){if(_0x1652f5){var _0x35bc82=_0x1652f5['users'];var _0xfc1cd7=null;for(_0xfc1cd7=0x0;_0xfc1cd7<_0x35bc82['length'];_0xfc1cd7++){if(_0x35bc82[_0xfc1cd7][_0x2432('0xf')]===_0x150a54['adminEmail']){_0x150a54[_0x2432('0x10')]=_0x35bc82[_0xfc1cd7]['id'];_0x3aa9a8=!![];}}if(_0x3aa9a8){logger[_0x2432('0xd')](_0x2432('0x11'),_0x150a54[_0x2432('0x10')]);_0x2ab63e(_0x150a54);}else{_0x10263f({'statusCode':0x194,'message':_0x2432('0x12')});}}else{_0x10263f({'statusCode':0x194,'message':_0x2432('0x12')});}})[_0x2432('0x13')](function(_0x5b4765){logger[_0x2432('0x14')]('['+[_0x48eec2[_0x2432('0x15')]()]+']',_0x5b4765[_0x2432('0x16')]);_0x10263f(_0x5b4765);});});}function getUser(_0x704dff,_0x4ceca1,_0x3ba89c){return function(_0x16022b){return new Promise(function(_0x3029b9,_0x31e25b){var _0x282eac={'method':_0x2432('0x17'),'uri':_0x3ba89c+_0x2432('0x18'),'json':!![]};_0x282eac[_0x2432('0xc')]=_0x4ceca1;logger[_0x2432('0xd')](_0x2432('0x19'));return rp(_0x282eac)[_0x2432('0xe')](function(_0x1a79eb){if(_0x1a79eb){var _0x1f56c8=_0x1a79eb[_0x2432('0x1a')];var _0x71ee6f=![];var _0x3b46eb=null;if(_0x16022b[_0x2432('0x1b')]!==null){logger[_0x2432('0xd')](_0x2432('0x1c'),_0x16022b[_0x2432('0x1b')]);_0x16022b['userEmail']=_0x16022b['agentEmail'];for(_0x3b46eb=0x0;_0x3b46eb<_0x1f56c8[_0x2432('0x1d')];_0x3b46eb++){if(_0x1f56c8[_0x3b46eb][_0x2432('0xf')]===_0x16022b[_0x2432('0x1b')]){_0x71ee6f=!![];_0x16022b[_0x2432('0x1e')]=_0x1f56c8[_0x3b46eb]['id'];logger[_0x2432('0xd')](_0x2432('0x1f'),_0x16022b[_0x2432('0x1e')]);}}}if(!_0x71ee6f){logger[_0x2432('0xd')](_0x2432('0x20'));_0x16022b[_0x2432('0x21')]=_0x16022b['adminEmail'];_0x16022b[_0x2432('0x1e')]=_0x16022b[_0x2432('0x10')];_0x71ee6f=!![];}if(_0x71ee6f){_0x3029b9(_0x16022b);}else{_0x31e25b({'statusCode':0x194,'message':_0x2432('0x12')});}}else{_0x31e25b({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x2432('0x13')](function(_0xd99690){logger[_0x2432('0x14')]('['+[_0x704dff[_0x2432('0x15')]()]+']',_0xd99690[_0x2432('0x16')]);_0x31e25b(_0xd99690);});});};}function searchContact(_0x476aed,_0x30f58e,_0x2a25b4,_0x53a642){return new Promise(function(_0x27d52e,_0x42e2bc){var _0x21a02b={'method':_0x2432('0x17'),'headers':_0x30f58e,'uri':_0x476aed+'/api/lookup?q='+_0x53a642+_0x2432('0x22')+_0x2a25b4+'&entities=contact','json':!![]};rp(_0x21a02b)[_0x2432('0xe')](function(_0x10718d){var _0x131e97=_[_0x2432('0x23')](_0x10718d['contacts'][_0x2432('0x24')],[_0x2a25b4,_0x53a642]);_0x27d52e(_0x131e97);})[_0x2432('0x13')](function(_0x1f88e6){_0x42e2bc(_0x1f88e6);});});}function getEndUser(_0x44f89d,_0x4ab017,_0xa42c0){return function(_0x37d3ab){return new Promise(function(_0xfc7087,_0x10f79b){logger['info'](util['format'](_0x2432('0x25'),_0x37d3ab[_0x2432('0x26')]));searchContact(_0xa42c0,_0x4ab017,_0x2432('0x27'),_0x37d3ab[_0x2432('0x26')])[_0x2432('0xe')](function(_0x302454){if(_0x302454){_0x37d3ab[_0x2432('0x28')]=_0x302454['id'];logger[_0x2432('0xd')]('Contact\x20found\x20mobile_number:',_0x37d3ab['endUserId']);return _0xfc7087(_0x37d3ab);}searchContact(_0xa42c0,_0x4ab017,_0x2432('0x29'),_0x37d3ab[_0x2432('0x26')])[_0x2432('0xe')](function(_0x2f5c91){if(_0x2f5c91){_0x37d3ab['endUserId']=_0x2f5c91['id'];logger[_0x2432('0xd')](_0x2432('0x2a'),_0x37d3ab['endUserId']);return _0xfc7087(_0x37d3ab);}createEndUser(_0x37d3ab,_0x44f89d,_0x4ab017,_0xa42c0)[_0x2432('0xe')](function(_0x51cad8){logger[_0x2432('0xd')](_0x2432('0x2b'),_0x51cad8[_0x2432('0x28')]);return _0xfc7087(_0x51cad8);});});})[_0x2432('0x13')](function(_0x112aac){_0x10f79b(_0x112aac);});});};}function createEndUser(_0x51a2b5,_0x3130da,_0x190edc,_0x6173e5){return new Promise(function(_0x338361,_0x2e3a7b){var _0x1d63d7=moment();var _0x2f6417={'method':_0x2432('0x2c'),'uri':_0x6173e5+'/api/contacts','body':{'contact':{'last_name':_0x51a2b5[_0x2432('0x26')],'work_number':_0x51a2b5[_0x2432('0x26')],'mobile_number':_0x51a2b5[_0x2432('0x26')],'owner_id':_0x51a2b5[_0x2432('0x1e')],'created_at':_0x1d63d7[_0x2432('0x2d')](_0x2432('0x2e'))}},'json':!![]};_0x2f6417[_0x2432('0xc')]=_0x190edc;logger[_0x2432('0xd')](_0x2432('0x2f'));return rp(_0x2f6417)[_0x2432('0xe')](function(_0x4c3d69){_0x51a2b5[_0x2432('0x28')]=_0x4c3d69['contact']['id'];_0x338361(_0x51a2b5);})[_0x2432('0x13')](function(_0x1153af){logger[_0x2432('0x14')]('['+[_0x3130da[_0x2432('0x15')]()]+']',_0x1153af[_0x2432('0x16')]);_0x2e3a7b(_0x1153af[_0x2432('0x16')]);});});}function getTicket(_0x1b2c46,_0xd4546e,_0x400640,_0x456bdf,_0x1d5bcb){return function(_0x27fcf4){logger[_0x2432('0xd')](_0x2432('0x30'));return new Promise(function(_0x3730e9,_0x45279a){var _0x3ce4f0=moment();var _0x50f9d4={'method':'POST','uri':_0x400640+_0x2432('0x31'),'body':{'title':intUtil[_0x2432('0x32')](_0x456bdf[_0x2432('0x33')],_0x1d5bcb,'\x20'),'description':intUtil[_0x2432('0x32')](_0x456bdf['Descriptions'],_0x1d5bcb,'\x0a'),'owner_id':_0x27fcf4[_0x2432('0x1e')],'creater_id':_0x27fcf4[_0x2432('0x10')],'targetable_id':_0x27fcf4[_0x2432('0x28')],'targetable_type':'Contact','created_at':_0x3ce4f0[_0x2432('0x2d')](_0x2432('0x2e')),'due_date':_0x3ce4f0[_0x2432('0x34')](0x1e,'m')['format'](_0x2432('0x2e'))},'json':!![]};_0x50f9d4[_0x2432('0xc')]=_0xd4546e;return rp(_0x50f9d4)[_0x2432('0xe')](function(_0x227504){_0x27fcf4['ticketId']=_0x227504['task']['id'];logger['info']('Task\x20created:',_0x27fcf4[_0x2432('0x35')]);_0x3730e9(_0x27fcf4);})['catch'](function(_0x54e173){logger[_0x2432('0x14')]('['+[_0x1b2c46[_0x2432('0x15')]()]+']',_0x54e173[_0x2432('0x16')]);_0x45279a(_0x54e173['message']);});});};}function emit(_0x3b3991,_0x337644,_0x3e3321){var _0x262680={'uri':_0x3b3991+_0x2432('0x36')+_0x3e3321};io['to'](util[_0x2432('0x2d')]('user:%s',_0x337644))[_0x2432('0x37')](_0x2432('0x38'),_0x262680);}exports['cs']=function(_0x546e59,_0x5a390a,_0xc77e52,_0xaf3867,_0x5c9eb3,_0x321603,_0x2ed88d,_0x46a6cf){var _0x5e594d={};var _0x530cdd={'Authorization':_0x2432('0x39')+_0x321603['apiKey']};_0x321603['remoteUri']=intUtil[_0x2432('0x3a')](_0x321603['remoteUri']);_0x321603[_0x2432('0x3b')]=intUtil[_0x2432('0x3a')](_0x321603[_0x2432('0x3b')]);var _0x38a37d=_0x321603[_0x2432('0x3c')];_0x5e594d[_0x2432('0x3d')]=_0x321603[_0x2432('0x3e')];_0x5e594d[_0x2432('0x26')]=_0x46a6cf[_0x2432('0x3f')]()===_0x2432('0x40')?_0x5a390a[_0x2432('0x41')]:_0x5a390a[_0x2432('0x42')];_0x5e594d[_0x2432('0x43')]=_0x46a6cf===_0x2432('0x44')||_0x46a6cf==='unmanaged'?_0x2432('0x44'):'outbound';if(_0xaf3867){_0x5e594d['agentEmail']=_0xaf3867[_0x2432('0xf')];}var _0x53351b=util[_0x2432('0x2d')](_0x2432('0x45'),_0x321603['serverUrl'],_0x5a390a[_0x2432('0x46')],md5(_0x5a390a['uniqueid']));if(_0x5c9eb3&&_0x5c9eb3[_0x2432('0x47')]){logger[_0x2432('0xd')](_0x2432('0x48'),_0x2432('0x49'));_0x5a390a[_0x2432('0x4a')]=_0x53351b;}else if(_0x2ed88d&&_0x2ed88d[_0x2432('0x4b')]&&_0x2ed88d['recordingFormat']!=='none'){logger[_0x2432('0xd')](_0x2432('0x4c'),_0x2432('0x49'));_0x5a390a[_0x2432('0x4a')]=_0x53351b;}else{_0x5a390a[_0x2432('0x4a')]='';}return getAdminId(_0x5e594d,_0x46a6cf,_0x530cdd,_0x38a37d)['then'](getUser(_0x46a6cf,_0x530cdd,_0x38a37d))[_0x2432('0xe')](getEndUser(_0x46a6cf,_0x530cdd,_0x38a37d))[_0x2432('0xe')](getTicket(_0x46a6cf,_0x530cdd,_0x38a37d,_0xc77e52,_0x5a390a))['then'](function(_0x223111){logger[_0x2432('0xd')](util[_0x2432('0x2d')](_0x2432('0x4d'),_0x223111['ticketId']));if(_0x46a6cf!==_0x2432('0x4e')){logger['info']('['+[_0x46a6cf['toUpperCase']()]+']',_0x2432('0x4f'));emit(_0x38a37d,_0xaf3867[_0x2432('0x50')],_0x223111['endUserId']);}})[_0x2432('0x13')](function(_0x3b2782){logger[_0x2432('0x14')]('['+[_0x46a6cf['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x3b2782,{'showHidden':!![],'depth':null}));});};