Built motion from commit (unavailable).|2.4.20
[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 _0x02f4=['GET','/api/selector/owners','users','length','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','headers','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','adminEmail','catch','/api/contacts/filters','then','filters','forEach','name','Getting\x20contact\x20list','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contactNumber','contacts','work_number','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','POST','/api/contacts','format','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','YYYY-MM-DDTHH:mm:ss','ticketId','Task\x20created:','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','callDirection','queue','abandoned','outbound','email','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','moment','./util','../../../../config/logger','freshsales','redis','defaults','localhost'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x02f4,0x13e));var _0x402f=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x02f4[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x402f('0x0'));var rp=require('request-promise');var md5=require(_0x402f('0x1'));var util=require(_0x402f('0x2'));var moment=require(_0x402f('0x3'));var Promise=require('bluebird');var Redis=require('ioredis');var intUtil=require(_0x402f('0x4'));var config=require('../../../../config/environment');var logger=require(_0x402f('0x5'))(_0x402f('0x6'));config[_0x402f('0x7')]=_[_0x402f('0x8')](config[_0x402f('0x7')],{'host':_0x402f('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x402f('0x7')]));function getAdminId(_0x4e2002,_0x183603,_0xbb195b,_0xf0b337){return new Promise(function(_0x5e0dde,_0x287141){var _0x258718=![];var _0x4b21c3={'method':_0x402f('0xa'),'uri':_0xf0b337+_0x402f('0xb'),'json':!![]};_0x4b21c3['headers']=_0xbb195b;logger['info']('Getting\x20admin\x20information');return rp(_0x4b21c3)['then'](function(_0x5cb2e0){if(_0x5cb2e0){var _0x2e5cb9=_0x5cb2e0[_0x402f('0xc')];var _0x566bf8=null;for(_0x566bf8=0x0;_0x566bf8<_0x2e5cb9[_0x402f('0xd')];_0x566bf8++){if(_0x2e5cb9[_0x566bf8]['email']===_0x4e2002['adminEmail']){_0x4e2002['adminId']=_0x2e5cb9[_0x566bf8]['id'];_0x258718=!![];}}if(_0x258718){logger[_0x402f('0xe')](_0x402f('0xf'),_0x4e2002[_0x402f('0x10')]);_0x5e0dde(_0x4e2002);}else{_0x287141({'statusCode':0x194,'message':_0x402f('0x11')});}}else{_0x287141({'statusCode':0x194,'message':_0x402f('0x11')});}})['catch'](function(_0x50f992){logger[_0x402f('0x12')]('['+[_0x183603[_0x402f('0x13')]()]+']',_0x50f992[_0x402f('0x14')]);_0x287141(_0x50f992);});});}function getUser(_0x3545a3,_0x47bdbb,_0x4d75c7){return function(_0x1cbc78){return new Promise(function(_0x3120fc,_0x41e3a9){var _0x162a1d={'method':_0x402f('0xa'),'uri':_0x4d75c7+_0x402f('0xb'),'json':!![]};_0x162a1d[_0x402f('0x15')]=_0x47bdbb;logger[_0x402f('0xe')]('Getting\x20user\x20list');return rp(_0x162a1d)['then'](function(_0x21afa0){if(_0x21afa0){var _0x51e312=_0x21afa0[_0x402f('0xc')];var _0x24d2e9=![];var _0x79de37=null;if(_0x1cbc78[_0x402f('0x16')]!==null){logger[_0x402f('0xe')](_0x402f('0x17'),_0x1cbc78[_0x402f('0x16')]);_0x1cbc78[_0x402f('0x18')]=_0x1cbc78[_0x402f('0x16')];for(_0x79de37=0x0;_0x79de37<_0x51e312[_0x402f('0xd')];_0x79de37++){if(_0x51e312[_0x79de37]['email']===_0x1cbc78[_0x402f('0x16')]){_0x24d2e9=!![];_0x1cbc78[_0x402f('0x19')]=_0x51e312[_0x79de37]['id'];logger[_0x402f('0xe')](_0x402f('0x1a'),_0x1cbc78['userId']);}}}if(!_0x24d2e9){logger[_0x402f('0xe')]('Admin\x20selected');_0x1cbc78['userEmail']=_0x1cbc78[_0x402f('0x1b')];_0x1cbc78[_0x402f('0x19')]=_0x1cbc78[_0x402f('0x10')];_0x24d2e9=!![];}if(_0x24d2e9){_0x3120fc(_0x1cbc78);}else{_0x41e3a9({'statusCode':0x194,'message':_0x402f('0x11')});}}else{_0x41e3a9({'statusCode':0x194,'message':_0x402f('0x11')});}})[_0x402f('0x1c')](function(_0x427fd2){logger[_0x402f('0x12')]('['+[_0x3545a3[_0x402f('0x13')]()]+']',_0x427fd2[_0x402f('0x14')]);_0x41e3a9(_0x427fd2);});});};}function getEndUser(_0x372340,_0x4fef19,_0x5cec14){return function(_0x1fe122){return new Promise(function(_0x1a1112,_0x551fbb){var _0x3e2f7c=0x0;var _0x29df2a={'method':_0x402f('0xa'),'uri':_0x5cec14+_0x402f('0x1d'),'json':!![]};_0x29df2a['headers']=_0x4fef19;logger[_0x402f('0xe')]('Getting\x20contacts\x20filter');return rp(_0x29df2a)[_0x402f('0x1e')](function(_0x2fa1c0){_0x2fa1c0[_0x402f('0x1f')][_0x402f('0x20')](function(_0x354f8f){if(_0x354f8f[_0x402f('0x21')]==='All\x20Contacts'){_0x3e2f7c=_0x354f8f['id'];}});})['then'](function(){logger[_0x402f('0xe')](_0x402f('0x22'));var _0x119a2e={'method':_0x402f('0xa'),'uri':_0x5cec14+_0x402f('0x23')+_0x3e2f7c,'json':!![]};_0x119a2e[_0x402f('0x15')]=_0x4fef19;return rp(_0x119a2e);})[_0x402f('0x1e')](function(_0x3f367b){logger[_0x402f('0xe')](_0x402f('0x24'),_0x1fe122[_0x402f('0x25')]);if(_0x3f367b['contacts'][_0x402f('0xd')]>0x0){var _0x506ff5=_['find'](_0x3f367b[_0x402f('0x26')],function(_0x364439){if(_0x364439[_0x402f('0x27')]===_0x1fe122['contactNumber']||_0x364439[_0x402f('0x28')]===_0x1fe122[_0x402f('0x25')]){return _0x364439;}});if(_0x506ff5){_0x1fe122[_0x402f('0x29')]=_0x506ff5['id'];logger[_0x402f('0xe')](_0x402f('0x2a'),_0x1fe122[_0x402f('0x29')]);_0x1a1112(_0x1fe122);}else{return createEndUser(_0x1fe122,_0x372340,_0x4fef19,_0x5cec14)[_0x402f('0x1e')](function(_0x20189f){logger['info'](_0x402f('0x2b'),_0x1fe122[_0x402f('0x29')]);_0x1a1112(_0x20189f);});}}else{return createEndUser(_0x1fe122,_0x372340,_0x4fef19,_0x5cec14)[_0x402f('0x1e')](function(_0x24620d){logger[_0x402f('0xe')]('Contact\x20created:',_0x1fe122[_0x402f('0x29')]);_0x1a1112(_0x24620d);});}})[_0x402f('0x1c')](function(_0x2ccada){throw new Error(_0x2ccada[_0x402f('0x14')]);});});};}function createEndUser(_0x279c31,_0x2b36e4,_0x522cb7,_0x2768b6){return new Promise(function(_0x2aedf0,_0x17fc0a){var _0x16a5fc=moment();var _0x59c03a={'method':_0x402f('0x2c'),'uri':_0x2768b6+_0x402f('0x2d'),'body':{'contact':{'last_name':_0x279c31['contactNumber'],'work_number':_0x279c31['contactNumber'],'mobile_number':_0x279c31[_0x402f('0x25')],'owner_id':_0x279c31[_0x402f('0x19')],'created_at':_0x16a5fc[_0x402f('0x2e')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x59c03a[_0x402f('0x15')]=_0x522cb7;logger[_0x402f('0xe')](_0x402f('0x2f'));return rp(_0x59c03a)[_0x402f('0x1e')](function(_0xb76368){_0x279c31['endUserId']=_0xb76368[_0x402f('0x30')]['id'];_0x2aedf0(_0x279c31);})[_0x402f('0x1c')](function(_0x13a6cb){logger[_0x402f('0x12')]('['+[_0x2b36e4[_0x402f('0x13')]()]+']',_0x13a6cb['message']);_0x17fc0a(_0x13a6cb[_0x402f('0x14')]);});});}function getTicket(_0x89f666,_0x3b139f,_0x234330,_0x153455,_0x234ec9){return function(_0x18b3c7){logger['info'](_0x402f('0x31'));return new Promise(function(_0x2230b9,_0x1e0fa2){var _0x12c100=moment();var _0x1ae323={'method':_0x402f('0x2c'),'uri':_0x234330+_0x402f('0x32'),'body':{'title':intUtil[_0x402f('0x33')](_0x153455['Subjects'],_0x234ec9,'\x20'),'description':intUtil['getString'](_0x153455[_0x402f('0x34')],_0x234ec9,'\x0a'),'owner_id':_0x18b3c7['userId'],'creater_id':_0x18b3c7[_0x402f('0x10')],'targetable_id':_0x18b3c7['endUserId'],'targetable_type':'Contact','created_at':_0x12c100['format'](_0x402f('0x35')),'due_date':_0x12c100['add'](0x1e,'m')[_0x402f('0x2e')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x1ae323['headers']=_0x3b139f;return rp(_0x1ae323)[_0x402f('0x1e')](function(_0x427d2c){_0x18b3c7[_0x402f('0x36')]=_0x427d2c['task']['id'];logger['info'](_0x402f('0x37'),_0x18b3c7[_0x402f('0x36')]);_0x2230b9(_0x18b3c7);})[_0x402f('0x1c')](function(_0x4beb37){logger['error']('['+[_0x89f666[_0x402f('0x13')]()]+']',_0x4beb37[_0x402f('0x14')]);_0x1e0fa2(_0x4beb37['message']);});});};}function emit(_0x94ce79,_0x59564f,_0x2d88f6){var _0x3fb213={'uri':_0x94ce79+'/contacts/'+_0x2d88f6};io['to'](util[_0x402f('0x2e')](_0x402f('0x38'),_0x59564f))[_0x402f('0x39')](_0x402f('0x3a'),_0x3fb213);}exports['cs']=function(_0x4f25f6,_0x19179d,_0x47defa,_0x5a3670,_0x6948f9,_0x416465,_0x34cbee,_0x1ff147){var _0x44628d={};var _0x11242a={'Authorization':_0x402f('0x3b')+_0x416465[_0x402f('0x3c')]};_0x416465[_0x402f('0x3d')]=intUtil[_0x402f('0x3e')](_0x416465['remoteUri']);_0x416465[_0x402f('0x3f')]=intUtil['stripTrailingSlash'](_0x416465[_0x402f('0x3f')]);var _0x3271cb=_0x416465['remoteUri'];_0x44628d[_0x402f('0x1b')]=_0x416465[_0x402f('0x40')];_0x44628d[_0x402f('0x25')]=_0x1ff147[_0x402f('0x41')]()==='outbound'?_0x19179d[_0x402f('0x42')]:_0x19179d['calleridnum'];_0x44628d[_0x402f('0x43')]=_0x1ff147===_0x402f('0x44')||_0x1ff147===_0x402f('0x45')?_0x402f('0x44'):_0x402f('0x46');if(_0x5a3670){_0x44628d[_0x402f('0x16')]=_0x5a3670[_0x402f('0x47')];}var _0x486622=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x416465['serverUrl'],_0x19179d[_0x402f('0x48')],md5(_0x19179d[_0x402f('0x48')]));if(_0x6948f9&&_0x6948f9[_0x402f('0x49')]){logger[_0x402f('0xe')]('[QUEUE]',_0x402f('0x4a'));_0x19179d[_0x402f('0x4b')]=_0x486622;}else if(_0x34cbee&&_0x34cbee[_0x402f('0x4c')]&&_0x34cbee[_0x402f('0x4c')]!==_0x402f('0x4d')){logger[_0x402f('0xe')](_0x402f('0x4e'),'Recording\x20is\x20enabled!');_0x19179d[_0x402f('0x4b')]=_0x486622;}else{_0x19179d[_0x402f('0x4b')]='';}return getAdminId(_0x44628d,_0x1ff147,_0x11242a,_0x3271cb)[_0x402f('0x1e')](getUser(_0x1ff147,_0x11242a,_0x3271cb))[_0x402f('0x1e')](getEndUser(_0x1ff147,_0x11242a,_0x3271cb))[_0x402f('0x1e')](getTicket(_0x1ff147,_0x11242a,_0x3271cb,_0x47defa,_0x19179d))['then'](function(_0x390c14){logger[_0x402f('0xe')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x390c14['ticketId']));if(_0x1ff147!=='abandoned'){logger[_0x402f('0xe')]('['+[_0x1ff147[_0x402f('0x13')]()]+']',_0x402f('0x4f'));emit(_0x3271cb,_0x5a3670[_0x402f('0x21')],_0x390c14['endUserId']);}})[_0x402f('0x1c')](function(_0x12dcc7){logger[_0x402f('0x12')]('['+[_0x1ff147['toUpperCase']()]+_0x402f('0x50'),util[_0x402f('0x51')](_0x12dcc7,{'showHidden':!![],'depth':null}));});};