Built motion from commit 355702c8.|2.5.41
[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 _0xfbea=['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','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','util','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','Getting\x20admin\x20information','then','length','adminEmail','info','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','headers','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','email','userId','User\x20found:','Admin\x20selected','userEmail','/api/lookup?q=','&f=','&entities=contact','find','contacts','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Creating\x20new\x20task','getString','format','YYYY-MM-DDTHH:mm:ss','ticketId','task','Task\x20created:','/contacts/','emit','Token\x20token='];(function(_0x496b6b,_0x1d81fe){var _0x2fb89a=function(_0x581533){while(--_0x581533){_0x496b6b['push'](_0x496b6b['shift']());}};_0x2fb89a(++_0x1d81fe);}(_0xfbea,0x19f));var _0xafbe=function(_0x6a6274,_0x17c8e4){_0x6a6274=_0x6a6274-0x0;var _0x28af31=_0xfbea[_0x6a6274];return _0x28af31;};'use strict';var _=require(_0xafbe('0x0'));var rp=require(_0xafbe('0x1'));var md5=require('md5');var util=require(_0xafbe('0x2'));var moment=require('moment');var Promise=require(_0xafbe('0x3'));var Redis=require('ioredis');var intUtil=require(_0xafbe('0x4'));var config=require(_0xafbe('0x5'));var logger=require(_0xafbe('0x6'))(_0xafbe('0x7'));config[_0xafbe('0x8')]=_[_0xafbe('0x9')](config[_0xafbe('0x8')],{'host':_0xafbe('0xa'),'port':0x18eb});var io=require(_0xafbe('0xb'))(new Redis(config['redis']));function getAdminId(_0x9d8168,_0x1f7b4c,_0x4d3ed0,_0x4f38a6){return new Promise(function(_0x93581,_0x37a643){var _0x48ae82=![];var _0x8efe90={'method':_0xafbe('0xc'),'uri':_0x4f38a6+_0xafbe('0xd'),'json':!![]};_0x8efe90['headers']=_0x4d3ed0;logger['info'](_0xafbe('0xe'));return rp(_0x8efe90)[_0xafbe('0xf')](function(_0x1db0e9){if(_0x1db0e9){var _0x25d1ef=_0x1db0e9['users'];var _0xe43d24=null;for(_0xe43d24=0x0;_0xe43d24<_0x25d1ef[_0xafbe('0x10')];_0xe43d24++){if(_0x25d1ef[_0xe43d24]['email']===_0x9d8168[_0xafbe('0x11')]){_0x9d8168['adminId']=_0x25d1ef[_0xe43d24]['id'];_0x48ae82=!![];}}if(_0x48ae82){logger[_0xafbe('0x12')]('Admin\x20found:',_0x9d8168[_0xafbe('0x13')]);_0x93581(_0x9d8168);}else{_0x37a643({'statusCode':0x194,'message':_0xafbe('0x14')});}}else{_0x37a643({'statusCode':0x194,'message':_0xafbe('0x14')});}})[_0xafbe('0x15')](function(_0x51f9c3){logger[_0xafbe('0x16')]('['+[_0x1f7b4c[_0xafbe('0x17')]()]+']',_0x51f9c3[_0xafbe('0x18')]);_0x37a643(_0x51f9c3);});});}function getUser(_0x5d0689,_0x1b62cd,_0x5d3515){return function(_0x46fca9){return new Promise(function(_0x2e84c7,_0x444a1c){var _0x391d77={'method':'GET','uri':_0x5d3515+_0xafbe('0xd'),'json':!![]};_0x391d77[_0xafbe('0x19')]=_0x1b62cd;logger[_0xafbe('0x12')](_0xafbe('0x1a'));return rp(_0x391d77)[_0xafbe('0xf')](function(_0x1cd9b3){if(_0x1cd9b3){var _0x14be13=_0x1cd9b3[_0xafbe('0x1b')];var _0x222a6f=![];var _0x8f97b0=null;if(_0x46fca9[_0xafbe('0x1c')]!==null){logger[_0xafbe('0x12')](_0xafbe('0x1d'),_0x46fca9[_0xafbe('0x1c')]);_0x46fca9['userEmail']=_0x46fca9['agentEmail'];for(_0x8f97b0=0x0;_0x8f97b0<_0x14be13[_0xafbe('0x10')];_0x8f97b0++){if(_0x14be13[_0x8f97b0][_0xafbe('0x1e')]===_0x46fca9[_0xafbe('0x1c')]){_0x222a6f=!![];_0x46fca9[_0xafbe('0x1f')]=_0x14be13[_0x8f97b0]['id'];logger[_0xafbe('0x12')](_0xafbe('0x20'),_0x46fca9[_0xafbe('0x1f')]);}}}if(!_0x222a6f){logger[_0xafbe('0x12')](_0xafbe('0x21'));_0x46fca9[_0xafbe('0x22')]=_0x46fca9[_0xafbe('0x11')];_0x46fca9[_0xafbe('0x1f')]=_0x46fca9[_0xafbe('0x13')];_0x222a6f=!![];}if(_0x222a6f){_0x2e84c7(_0x46fca9);}else{_0x444a1c({'statusCode':0x194,'message':_0xafbe('0x14')});}}else{_0x444a1c({'statusCode':0x194,'message':_0xafbe('0x14')});}})[_0xafbe('0x15')](function(_0x5f2273){logger['error']('['+[_0x5d0689[_0xafbe('0x17')]()]+']',_0x5f2273[_0xafbe('0x18')]);_0x444a1c(_0x5f2273);});});};}function searchContact(_0x24a67e,_0x3e4344,_0x17006b,_0x48a444){return new Promise(function(_0x5c8e25,_0x7655d9){var _0x4b5f3a={'method':_0xafbe('0xc'),'headers':_0x3e4344,'uri':_0x24a67e+_0xafbe('0x23')+_0x48a444+_0xafbe('0x24')+_0x17006b+_0xafbe('0x25'),'json':!![]};rp(_0x4b5f3a)[_0xafbe('0xf')](function(_0x1ef526){var _0x474caf=_[_0xafbe('0x26')](_0x1ef526['contacts'][_0xafbe('0x27')],[_0x17006b,_0x48a444]);_0x5c8e25(_0x474caf);})[_0xafbe('0x15')](function(_0x438bb1){_0x7655d9(_0x438bb1);});});}function getEndUser(_0x13ef03,_0x1e6006,_0x2cd24f){return function(_0x2e3f58){return new Promise(function(_0x1e3b7e,_0xb1d0a7){logger['info'](util['format']('Searching\x20contact\x20with\x20phone\x20%s',_0x2e3f58[_0xafbe('0x28')]));searchContact(_0x2cd24f,_0x1e6006,_0xafbe('0x29'),_0x2e3f58[_0xafbe('0x28')])['then'](function(_0xe3a1d6){if(_0xe3a1d6){_0x2e3f58['endUserId']=_0xe3a1d6['id'];logger[_0xafbe('0x12')](_0xafbe('0x2a'),_0x2e3f58[_0xafbe('0x2b')]);return _0x1e3b7e(_0x2e3f58);}searchContact(_0x2cd24f,_0x1e6006,_0xafbe('0x2c'),_0x2e3f58['contactNumber'])['then'](function(_0x2a62e6){if(_0x2a62e6){_0x2e3f58[_0xafbe('0x2b')]=_0x2a62e6['id'];logger[_0xafbe('0x12')](_0xafbe('0x2d'),_0x2e3f58[_0xafbe('0x2b')]);return _0x1e3b7e(_0x2e3f58);}createEndUser(_0x2e3f58,_0x13ef03,_0x1e6006,_0x2cd24f)['then'](function(_0x15380a){logger['info'](_0xafbe('0x2e'),_0x15380a[_0xafbe('0x2b')]);return _0x1e3b7e(_0x15380a);});});})[_0xafbe('0x15')](function(_0x578f58){_0xb1d0a7(_0x578f58);});});};}function createEndUser(_0x1d23ab,_0x583d07,_0x51c75e,_0xb48c48){return new Promise(function(_0x1f2d10,_0x5524c7){var _0x4b0c20=moment();var _0x38e30a={'method':_0xafbe('0x2f'),'uri':_0xb48c48+_0xafbe('0x30'),'body':{'contact':{'last_name':_0x1d23ab[_0xafbe('0x28')],'work_number':_0x1d23ab[_0xafbe('0x28')],'mobile_number':_0x1d23ab['contactNumber'],'owner_id':_0x1d23ab[_0xafbe('0x1f')],'created_at':_0x4b0c20['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x38e30a[_0xafbe('0x19')]=_0x51c75e;logger[_0xafbe('0x12')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x38e30a)[_0xafbe('0xf')](function(_0x317a49){_0x1d23ab[_0xafbe('0x2b')]=_0x317a49['contact']['id'];_0x1f2d10(_0x1d23ab);})[_0xafbe('0x15')](function(_0x2adde5){logger[_0xafbe('0x16')]('['+[_0x583d07[_0xafbe('0x17')]()]+']',_0x2adde5[_0xafbe('0x18')]);_0x5524c7(_0x2adde5['message']);});});}function getTicket(_0x5e7fa7,_0x1ba43b,_0x1576a6,_0x46d487,_0xea6216){return function(_0x45d84b){logger[_0xafbe('0x12')](_0xafbe('0x31'));return new Promise(function(_0x2e04b7,_0x28548d){var _0x23b11c=moment();var _0x204c0a={'method':'POST','uri':_0x1576a6+'/api/tasks','body':{'title':intUtil['getString'](_0x46d487['Subjects'],_0xea6216,'\x20'),'description':intUtil[_0xafbe('0x32')](_0x46d487['Descriptions'],_0xea6216,'\x0a'),'owner_id':_0x45d84b[_0xafbe('0x1f')],'creater_id':_0x45d84b[_0xafbe('0x13')],'targetable_id':_0x45d84b[_0xafbe('0x2b')],'targetable_type':'Contact','created_at':_0x23b11c[_0xafbe('0x33')](_0xafbe('0x34')),'due_date':_0x23b11c['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x204c0a[_0xafbe('0x19')]=_0x1ba43b;return rp(_0x204c0a)[_0xafbe('0xf')](function(_0x537185){_0x45d84b[_0xafbe('0x35')]=_0x537185[_0xafbe('0x36')]['id'];logger['info'](_0xafbe('0x37'),_0x45d84b[_0xafbe('0x35')]);_0x2e04b7(_0x45d84b);})[_0xafbe('0x15')](function(_0x26171b){logger[_0xafbe('0x16')]('['+[_0x5e7fa7['toUpperCase']()]+']',_0x26171b['message']);_0x28548d(_0x26171b[_0xafbe('0x18')]);});});};}function emit(_0x5451f9,_0x5a9076,_0x3426a0){var _0x1e817c={'uri':_0x5451f9+_0xafbe('0x38')+_0x3426a0};io['to'](util[_0xafbe('0x33')]('user:%s',_0x5a9076))[_0xafbe('0x39')]('trigger:browser:url',_0x1e817c);}exports['cs']=function(_0x264fb8,_0x2fa3e8,_0x47ba75,_0x4f1514,_0x127a80,_0x3b021d,_0x52210d,_0x46182b){var _0x141604={};var _0x3c7a45={'Authorization':_0xafbe('0x3a')+_0x3b021d[_0xafbe('0x3b')]};_0x3b021d['remoteUri']=intUtil[_0xafbe('0x3c')](_0x3b021d[_0xafbe('0x3d')]);_0x3b021d['serverUrl']=intUtil[_0xafbe('0x3c')](_0x3b021d[_0xafbe('0x3e')]);var _0x24fa19=_0x3b021d['remoteUri'];_0x141604[_0xafbe('0x11')]=_0x3b021d[_0xafbe('0x3f')];_0x141604[_0xafbe('0x28')]=_0x46182b[_0xafbe('0x40')]()===_0xafbe('0x41')?_0x2fa3e8[_0xafbe('0x42')]:_0x2fa3e8[_0xafbe('0x43')];_0x141604[_0xafbe('0x44')]=_0x46182b===_0xafbe('0x45')||_0x46182b===_0xafbe('0x46')?_0xafbe('0x45'):_0xafbe('0x41');if(_0x4f1514){_0x141604['agentEmail']=_0x4f1514[_0xafbe('0x1e')];}var _0x271b5d=util['format'](_0xafbe('0x47'),_0x3b021d[_0xafbe('0x3e')],_0x2fa3e8['uniqueid'],md5(_0x2fa3e8[_0xafbe('0x48')]));if(_0x127a80&&_0x127a80['monitor_format']){logger['info'](_0xafbe('0x49'),'Recording\x20is\x20enabled!');_0x2fa3e8[_0xafbe('0x4a')]=_0x271b5d;}else if(_0x52210d&&_0x52210d['recordingFormat']&&_0x52210d['recordingFormat']!=='none'){logger['info']('[OUTBOUND]',_0xafbe('0x4b'));_0x2fa3e8['recordingURL']=_0x271b5d;}else{_0x2fa3e8[_0xafbe('0x4a')]='';}return getAdminId(_0x141604,_0x46182b,_0x3c7a45,_0x24fa19)[_0xafbe('0xf')](getUser(_0x46182b,_0x3c7a45,_0x24fa19))[_0xafbe('0xf')](getEndUser(_0x46182b,_0x3c7a45,_0x24fa19))[_0xafbe('0xf')](getTicket(_0x46182b,_0x3c7a45,_0x24fa19,_0x47ba75,_0x2fa3e8))['then'](function(_0x4b9de6){logger[_0xafbe('0x12')](util[_0xafbe('0x33')](_0xafbe('0x4c'),_0x4b9de6[_0xafbe('0x35')]));if(_0x46182b!==_0xafbe('0x46')){logger[_0xafbe('0x12')]('['+[_0x46182b['toUpperCase']()]+']',_0xafbe('0x4d'));emit(_0x24fa19,_0x4f1514['name'],_0x4b9de6[_0xafbe('0x2b')]);}})['catch'](function(_0x778bea){logger[_0xafbe('0x16')]('['+[_0x46182b[_0xafbe('0x17')]()]+_0xafbe('0x4e'),util['inspect'](_0x778bea,{'showHidden':!![],'depth':null}));});};