Built motion from commit (unavailable).|2.5.5
[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 _0x5bd4=['emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','destcalleridnum','callDirection','unmanaged','queue','outbound','uniqueid','monitor_format','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','md5','util','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','email','User\x20found:','userId','userEmail','/api/contacts/filters','Getting\x20contacts\x20filter','filters','forEach','name','All\x20Contacts','Getting\x20contact\x20list','/api/contacts/view/','find','work_number','contactNumber','mobile_number','Contact\x20found:','endUserId','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','POST','/api/tasks','getString','Subjects','Descriptions','Contact','format','add','ticketId','task','Task\x20created:','/contacts/','user:%s'];(function(_0x23eeb4,_0x6b247a){var _0x28b02c=function(_0x1a7dc8){while(--_0x1a7dc8){_0x23eeb4['push'](_0x23eeb4['shift']());}};_0x28b02c(++_0x6b247a);}(_0x5bd4,0x6c));var _0x45bd=function(_0x309463,_0x13d513){_0x309463=_0x309463-0x0;var _0x5f3183=_0x5bd4[_0x309463];return _0x5f3183;};'use strict';var _=require(_0x45bd('0x0'));var rp=require('request-promise');var md5=require(_0x45bd('0x1'));var util=require(_0x45bd('0x2'));var moment=require(_0x45bd('0x3'));var Promise=require('bluebird');var Redis=require(_0x45bd('0x4'));var intUtil=require(_0x45bd('0x5'));var config=require(_0x45bd('0x6'));var logger=require(_0x45bd('0x7'))(_0x45bd('0x8'));config[_0x45bd('0x9')]=_[_0x45bd('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x45bd('0xb'))(new Redis(config[_0x45bd('0x9')]));function getAdminId(_0x320f45,_0x17cfdb,_0x407ee6,_0x3f4bc0){return new Promise(function(_0x237a6a,_0x2ef6b1){var _0x3daa23=![];var _0x290a92={'method':_0x45bd('0xc'),'uri':_0x3f4bc0+_0x45bd('0xd'),'json':!![]};_0x290a92[_0x45bd('0xe')]=_0x407ee6;logger[_0x45bd('0xf')](_0x45bd('0x10'));return rp(_0x290a92)[_0x45bd('0x11')](function(_0x536b3f){if(_0x536b3f){var _0x35f7ce=_0x536b3f[_0x45bd('0x12')];var _0x382a14=null;for(_0x382a14=0x0;_0x382a14<_0x35f7ce[_0x45bd('0x13')];_0x382a14++){if(_0x35f7ce[_0x382a14]['email']===_0x320f45[_0x45bd('0x14')]){_0x320f45[_0x45bd('0x15')]=_0x35f7ce[_0x382a14]['id'];_0x3daa23=!![];}}if(_0x3daa23){logger[_0x45bd('0xf')]('Admin\x20found:',_0x320f45[_0x45bd('0x15')]);_0x237a6a(_0x320f45);}else{_0x2ef6b1({'statusCode':0x194,'message':_0x45bd('0x16')});}}else{_0x2ef6b1({'statusCode':0x194,'message':_0x45bd('0x16')});}})[_0x45bd('0x17')](function(_0x44fff8){logger[_0x45bd('0x18')]('['+[_0x17cfdb[_0x45bd('0x19')]()]+']',_0x44fff8[_0x45bd('0x1a')]);_0x2ef6b1(_0x44fff8);});});}function getUser(_0x6d5011,_0x4f19c5,_0x54b952){return function(_0x4adf9f){return new Promise(function(_0x1a3d14,_0xb4172b){var _0x238b8b={'method':_0x45bd('0xc'),'uri':_0x54b952+_0x45bd('0xd'),'json':!![]};_0x238b8b['headers']=_0x4f19c5;logger['info'](_0x45bd('0x1b'));return rp(_0x238b8b)[_0x45bd('0x11')](function(_0xd7eeee){if(_0xd7eeee){var _0x26376a=_0xd7eeee[_0x45bd('0x12')];var _0x5f1427=![];var _0x12f2fd=null;if(_0x4adf9f[_0x45bd('0x1c')]!==null){logger[_0x45bd('0xf')](_0x45bd('0x1d'),_0x4adf9f[_0x45bd('0x1c')]);_0x4adf9f['userEmail']=_0x4adf9f[_0x45bd('0x1c')];for(_0x12f2fd=0x0;_0x12f2fd<_0x26376a['length'];_0x12f2fd++){if(_0x26376a[_0x12f2fd][_0x45bd('0x1e')]===_0x4adf9f['agentEmail']){_0x5f1427=!![];_0x4adf9f['userId']=_0x26376a[_0x12f2fd]['id'];logger[_0x45bd('0xf')](_0x45bd('0x1f'),_0x4adf9f[_0x45bd('0x20')]);}}}if(!_0x5f1427){logger[_0x45bd('0xf')]('Admin\x20selected');_0x4adf9f[_0x45bd('0x21')]=_0x4adf9f[_0x45bd('0x14')];_0x4adf9f[_0x45bd('0x20')]=_0x4adf9f[_0x45bd('0x15')];_0x5f1427=!![];}if(_0x5f1427){_0x1a3d14(_0x4adf9f);}else{_0xb4172b({'statusCode':0x194,'message':_0x45bd('0x16')});}}else{_0xb4172b({'statusCode':0x194,'message':_0x45bd('0x16')});}})[_0x45bd('0x17')](function(_0x311e5a){logger[_0x45bd('0x18')]('['+[_0x6d5011[_0x45bd('0x19')]()]+']',_0x311e5a[_0x45bd('0x1a')]);_0xb4172b(_0x311e5a);});});};}function getEndUser(_0x5affb4,_0x204811,_0xc0eac6){return function(_0x482ea0){return new Promise(function(_0x33c2bb,_0x44109c){var _0xa3c7a7=0x0;var _0xff1346={'method':_0x45bd('0xc'),'uri':_0xc0eac6+_0x45bd('0x22'),'json':!![]};_0xff1346[_0x45bd('0xe')]=_0x204811;logger[_0x45bd('0xf')](_0x45bd('0x23'));return rp(_0xff1346)['then'](function(_0x5caa6c){_0x5caa6c[_0x45bd('0x24')][_0x45bd('0x25')](function(_0x5c7b4c){if(_0x5c7b4c[_0x45bd('0x26')]===_0x45bd('0x27')){_0xa3c7a7=_0x5c7b4c['id'];}});})[_0x45bd('0x11')](function(){logger[_0x45bd('0xf')](_0x45bd('0x28'));var _0x1f93ae={'method':_0x45bd('0xc'),'uri':_0xc0eac6+_0x45bd('0x29')+_0xa3c7a7,'json':!![]};_0x1f93ae[_0x45bd('0xe')]=_0x204811;return rp(_0x1f93ae);})[_0x45bd('0x11')](function(_0x253f30){logger['info']('Searching\x20contact\x20with\x20phone',_0x482ea0['contactNumber']);if(_0x253f30['contacts'][_0x45bd('0x13')]>0x0){var _0x35ae29=_[_0x45bd('0x2a')](_0x253f30['contacts'],function(_0x569efc){if(_0x569efc[_0x45bd('0x2b')]===_0x482ea0[_0x45bd('0x2c')]||_0x569efc[_0x45bd('0x2d')]===_0x482ea0[_0x45bd('0x2c')]){return _0x569efc;}});if(_0x35ae29){_0x482ea0['endUserId']=_0x35ae29['id'];logger[_0x45bd('0xf')](_0x45bd('0x2e'),_0x482ea0[_0x45bd('0x2f')]);_0x33c2bb(_0x482ea0);}else{return createEndUser(_0x482ea0,_0x5affb4,_0x204811,_0xc0eac6)['then'](function(_0x249074){logger[_0x45bd('0xf')](_0x45bd('0x30'),_0x482ea0['endUserId']);_0x33c2bb(_0x249074);});}}else{return createEndUser(_0x482ea0,_0x5affb4,_0x204811,_0xc0eac6)[_0x45bd('0x11')](function(_0x2dd645){logger['info'](_0x45bd('0x30'),_0x482ea0[_0x45bd('0x2f')]);_0x33c2bb(_0x2dd645);});}})[_0x45bd('0x17')](function(_0x8a204b){throw new Error(_0x8a204b['message']);});});};}function createEndUser(_0x44330c,_0x1eb397,_0x13583d,_0x22a8db){return new Promise(function(_0x53a1f7,_0x2a7ffe){var _0x110a61=moment();var _0x2da69a={'method':'POST','uri':_0x22a8db+_0x45bd('0x31'),'body':{'contact':{'last_name':_0x44330c[_0x45bd('0x2c')],'work_number':_0x44330c[_0x45bd('0x2c')],'mobile_number':_0x44330c[_0x45bd('0x2c')],'owner_id':_0x44330c[_0x45bd('0x20')],'created_at':_0x110a61['format'](_0x45bd('0x32'))}},'json':!![]};_0x2da69a[_0x45bd('0xe')]=_0x13583d;logger[_0x45bd('0xf')](_0x45bd('0x33'));return rp(_0x2da69a)[_0x45bd('0x11')](function(_0x3a7a2b){_0x44330c[_0x45bd('0x2f')]=_0x3a7a2b[_0x45bd('0x34')]['id'];_0x53a1f7(_0x44330c);})[_0x45bd('0x17')](function(_0xdfcb5f){logger[_0x45bd('0x18')]('['+[_0x1eb397[_0x45bd('0x19')]()]+']',_0xdfcb5f[_0x45bd('0x1a')]);_0x2a7ffe(_0xdfcb5f[_0x45bd('0x1a')]);});});}function getTicket(_0x27b48c,_0x55ce16,_0x4debf5,_0x20dff4,_0x54bb78){return function(_0x275b2c){logger[_0x45bd('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x3ea0ec,_0x5ef41e){var _0x31e9c6=moment();var _0xd60fb4={'method':_0x45bd('0x35'),'uri':_0x4debf5+_0x45bd('0x36'),'body':{'title':intUtil[_0x45bd('0x37')](_0x20dff4[_0x45bd('0x38')],_0x54bb78,'\x20'),'description':intUtil[_0x45bd('0x37')](_0x20dff4[_0x45bd('0x39')],_0x54bb78,'\x0a'),'owner_id':_0x275b2c[_0x45bd('0x20')],'creater_id':_0x275b2c[_0x45bd('0x15')],'targetable_id':_0x275b2c['endUserId'],'targetable_type':_0x45bd('0x3a'),'created_at':_0x31e9c6[_0x45bd('0x3b')](_0x45bd('0x32')),'due_date':_0x31e9c6[_0x45bd('0x3c')](0x1e,'m')['format'](_0x45bd('0x32'))},'json':!![]};_0xd60fb4['headers']=_0x55ce16;return rp(_0xd60fb4)[_0x45bd('0x11')](function(_0x1352a8){_0x275b2c[_0x45bd('0x3d')]=_0x1352a8[_0x45bd('0x3e')]['id'];logger[_0x45bd('0xf')](_0x45bd('0x3f'),_0x275b2c[_0x45bd('0x3d')]);_0x3ea0ec(_0x275b2c);})['catch'](function(_0x597cf2){logger[_0x45bd('0x18')]('['+[_0x27b48c[_0x45bd('0x19')]()]+']',_0x597cf2[_0x45bd('0x1a')]);_0x5ef41e(_0x597cf2[_0x45bd('0x1a')]);});});};}function emit(_0x151c9d,_0xeccb37,_0x4b8bdb){var _0x2a1ad2={'uri':_0x151c9d+_0x45bd('0x40')+_0x4b8bdb};io['to'](util[_0x45bd('0x3b')](_0x45bd('0x41'),_0xeccb37))[_0x45bd('0x42')](_0x45bd('0x43'),_0x2a1ad2);}exports['cs']=function(_0x41c347,_0xbe72f0,_0x4ec580,_0x1a2eda,_0x12bc68,_0x3da3d0,_0x407990,_0x4b2507){var _0x3e5e10={};var _0x2276e0={'Authorization':_0x45bd('0x44')+_0x3da3d0[_0x45bd('0x45')]};_0x3da3d0[_0x45bd('0x46')]=intUtil[_0x45bd('0x47')](_0x3da3d0['remoteUri']);_0x3da3d0['serverUrl']=intUtil['stripTrailingSlash'](_0x3da3d0[_0x45bd('0x48')]);var _0x4a66f5=_0x3da3d0[_0x45bd('0x46')];_0x3e5e10[_0x45bd('0x14')]=_0x3da3d0['username'];_0x3e5e10[_0x45bd('0x2c')]=_0x4b2507[_0x45bd('0x49')]()==='outbound'?_0xbe72f0[_0x45bd('0x4a')]:_0xbe72f0['calleridnum'];_0x3e5e10[_0x45bd('0x4b')]=_0x4b2507==='queue'||_0x4b2507===_0x45bd('0x4c')?_0x45bd('0x4d'):_0x45bd('0x4e');if(_0x1a2eda){_0x3e5e10[_0x45bd('0x1c')]=_0x1a2eda['email'];}var _0x37b049=util[_0x45bd('0x3b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3da3d0[_0x45bd('0x48')],_0xbe72f0[_0x45bd('0x4f')],md5(_0xbe72f0[_0x45bd('0x4f')]));if(_0x12bc68&&_0x12bc68[_0x45bd('0x50')]){logger[_0x45bd('0xf')]('[QUEUE]','Recording\x20is\x20enabled!');_0xbe72f0[_0x45bd('0x51')]=_0x37b049;}else if(_0x407990&&_0x407990['recordingFormat']&&_0x407990[_0x45bd('0x52')]!==_0x45bd('0x53')){logger['info'](_0x45bd('0x54'),'Recording\x20is\x20enabled!');_0xbe72f0[_0x45bd('0x51')]=_0x37b049;}else{_0xbe72f0[_0x45bd('0x51')]='';}return getAdminId(_0x3e5e10,_0x4b2507,_0x2276e0,_0x4a66f5)[_0x45bd('0x11')](getUser(_0x4b2507,_0x2276e0,_0x4a66f5))[_0x45bd('0x11')](getEndUser(_0x4b2507,_0x2276e0,_0x4a66f5))[_0x45bd('0x11')](getTicket(_0x4b2507,_0x2276e0,_0x4a66f5,_0x4ec580,_0xbe72f0))[_0x45bd('0x11')](function(_0x376adf){logger[_0x45bd('0xf')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x376adf[_0x45bd('0x3d')]));if(_0x4b2507!=='unmanaged'){logger[_0x45bd('0xf')]('['+[_0x4b2507[_0x45bd('0x19')]()]+']',_0x45bd('0x55'));emit(_0x4a66f5,_0x1a2eda[_0x45bd('0x26')],_0x376adf[_0x45bd('0x2f')]);}})[_0x45bd('0x17')](function(_0x3005dc){logger[_0x45bd('0x18')]('['+[_0x4b2507[_0x45bd('0x19')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x45bd('0x56')](_0x3005dc,{'showHidden':!![],'depth':null}));});};