Built motion from commit 753c950e.|2.5.42
[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 _0x8309=['adminEmail','error','toUpperCase','message','/api/lookup?q=','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','task','Task\x20created:','ticketId','/contacts/','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','md5','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','/api/selector/owners','headers','Getting\x20admin\x20information','then','length','email','adminId','Requested\x20Resource\x20not\x20Found','catch','GET','info','Getting\x20user\x20list','users','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected'];(function(_0x4599ed,_0x5d731c){var _0x1b4384=function(_0x402bca){while(--_0x402bca){_0x4599ed['push'](_0x4599ed['shift']());}};_0x1b4384(++_0x5d731c);}(_0x8309,0x124));var _0x9830=function(_0x1cad07,_0x4670ef){_0x1cad07=_0x1cad07-0x0;var _0x23e480=_0x8309[_0x1cad07];return _0x23e480;};'use strict';var _=require(_0x9830('0x0'));var rp=require('request-promise');var md5=require(_0x9830('0x1'));var util=require('util');var moment=require('moment');var Promise=require(_0x9830('0x2'));var Redis=require('ioredis');var intUtil=require(_0x9830('0x3'));var config=require(_0x9830('0x4'));var logger=require(_0x9830('0x5'))(_0x9830('0x6'));config[_0x9830('0x7')]=_[_0x9830('0x8')](config[_0x9830('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x9830('0x9'))(new Redis(config[_0x9830('0x7')]));function getAdminId(_0x5b2f99,_0x4ca32b,_0x3b4f25,_0x46580f){return new Promise(function(_0x4565f5,_0x33f8e0){var _0x3f5e19=![];var _0x572128={'method':'GET','uri':_0x46580f+_0x9830('0xa'),'json':!![]};_0x572128[_0x9830('0xb')]=_0x3b4f25;logger['info'](_0x9830('0xc'));return rp(_0x572128)[_0x9830('0xd')](function(_0x30e82e){if(_0x30e82e){var _0x543b99=_0x30e82e['users'];var _0x359d62=null;for(_0x359d62=0x0;_0x359d62<_0x543b99[_0x9830('0xe')];_0x359d62++){if(_0x543b99[_0x359d62][_0x9830('0xf')]===_0x5b2f99['adminEmail']){_0x5b2f99[_0x9830('0x10')]=_0x543b99[_0x359d62]['id'];_0x3f5e19=!![];}}if(_0x3f5e19){logger['info']('Admin\x20found:',_0x5b2f99[_0x9830('0x10')]);_0x4565f5(_0x5b2f99);}else{_0x33f8e0({'statusCode':0x194,'message':_0x9830('0x11')});}}else{_0x33f8e0({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x9830('0x12')](function(_0x4a8f11){logger['error']('['+[_0x4ca32b['toUpperCase']()]+']',_0x4a8f11['message']);_0x33f8e0(_0x4a8f11);});});}function getUser(_0x3a7df0,_0x558faf,_0xf00e96){return function(_0x33433d){return new Promise(function(_0x26f6cd,_0x130b7b){var _0x12ebcd={'method':_0x9830('0x13'),'uri':_0xf00e96+_0x9830('0xa'),'json':!![]};_0x12ebcd[_0x9830('0xb')]=_0x558faf;logger[_0x9830('0x14')](_0x9830('0x15'));return rp(_0x12ebcd)['then'](function(_0x31f5d7){if(_0x31f5d7){var _0x77e995=_0x31f5d7[_0x9830('0x16')];var _0x2ac66a=![];var _0x58e7ea=null;if(_0x33433d[_0x9830('0x17')]!==null){logger[_0x9830('0x14')]('Getting\x20user\x20with\x20email',_0x33433d['agentEmail']);_0x33433d[_0x9830('0x18')]=_0x33433d[_0x9830('0x17')];for(_0x58e7ea=0x0;_0x58e7ea<_0x77e995[_0x9830('0xe')];_0x58e7ea++){if(_0x77e995[_0x58e7ea][_0x9830('0xf')]===_0x33433d[_0x9830('0x17')]){_0x2ac66a=!![];_0x33433d[_0x9830('0x19')]=_0x77e995[_0x58e7ea]['id'];logger[_0x9830('0x14')](_0x9830('0x1a'),_0x33433d[_0x9830('0x19')]);}}}if(!_0x2ac66a){logger[_0x9830('0x14')](_0x9830('0x1b'));_0x33433d[_0x9830('0x18')]=_0x33433d[_0x9830('0x1c')];_0x33433d[_0x9830('0x19')]=_0x33433d[_0x9830('0x10')];_0x2ac66a=!![];}if(_0x2ac66a){_0x26f6cd(_0x33433d);}else{_0x130b7b({'statusCode':0x194,'message':_0x9830('0x11')});}}else{_0x130b7b({'statusCode':0x194,'message':_0x9830('0x11')});}})[_0x9830('0x12')](function(_0x3e05bc){logger[_0x9830('0x1d')]('['+[_0x3a7df0[_0x9830('0x1e')]()]+']',_0x3e05bc[_0x9830('0x1f')]);_0x130b7b(_0x3e05bc);});});};}function searchContact(_0x51a1c0,_0x1da865,_0x50aecc,_0x55e987){return new Promise(function(_0x30423d,_0x441d9c){var _0x1b6419={'method':_0x9830('0x13'),'headers':_0x1da865,'uri':_0x51a1c0+_0x9830('0x20')+_0x55e987+_0x9830('0x21')+_0x50aecc+'&entities=contact','json':!![]};rp(_0x1b6419)['then'](function(_0x2b6954){var _0x322b9a=_['find'](_0x2b6954[_0x9830('0x22')]['contacts'],[_0x50aecc,_0x55e987]);_0x30423d(_0x322b9a);})[_0x9830('0x12')](function(_0x4b1ff8){_0x441d9c(_0x4b1ff8);});});}function getEndUser(_0x4b1cb1,_0xf4707f,_0x2ad7e2){return function(_0x3caf8a){return new Promise(function(_0x1fa06e,_0x59a939){logger[_0x9830('0x14')](util[_0x9830('0x23')](_0x9830('0x24'),_0x3caf8a['contactNumber']));searchContact(_0x2ad7e2,_0xf4707f,_0x9830('0x25'),_0x3caf8a[_0x9830('0x26')])['then'](function(_0x9343b){if(_0x9343b){_0x3caf8a[_0x9830('0x27')]=_0x9343b['id'];logger[_0x9830('0x14')]('Contact\x20found\x20mobile_number:',_0x3caf8a[_0x9830('0x27')]);return _0x1fa06e(_0x3caf8a);}searchContact(_0x2ad7e2,_0xf4707f,_0x9830('0x28'),_0x3caf8a[_0x9830('0x26')])[_0x9830('0xd')](function(_0x117e76){if(_0x117e76){_0x3caf8a[_0x9830('0x27')]=_0x117e76['id'];logger['info'](_0x9830('0x29'),_0x3caf8a[_0x9830('0x27')]);return _0x1fa06e(_0x3caf8a);}createEndUser(_0x3caf8a,_0x4b1cb1,_0xf4707f,_0x2ad7e2)[_0x9830('0xd')](function(_0x1e107d){logger['info']('Contact\x20created:',_0x1e107d['endUserId']);return _0x1fa06e(_0x1e107d);});});})['catch'](function(_0x40a844){_0x59a939(_0x40a844);});});};}function createEndUser(_0xbbb044,_0x33a643,_0x3a4820,_0xfd1979){return new Promise(function(_0x1a88d2,_0x7183f0){var _0x28e272=moment();var _0x285cb6={'method':'POST','uri':_0xfd1979+'/api/contacts','body':{'contact':{'last_name':_0xbbb044[_0x9830('0x26')],'work_number':_0xbbb044['contactNumber'],'mobile_number':_0xbbb044[_0x9830('0x26')],'owner_id':_0xbbb044[_0x9830('0x19')],'created_at':_0x28e272[_0x9830('0x23')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x285cb6['headers']=_0x3a4820;logger[_0x9830('0x14')](_0x9830('0x2a'));return rp(_0x285cb6)[_0x9830('0xd')](function(_0x11ef76){_0xbbb044[_0x9830('0x27')]=_0x11ef76[_0x9830('0x2b')]['id'];_0x1a88d2(_0xbbb044);})[_0x9830('0x12')](function(_0x1782fc){logger[_0x9830('0x1d')]('['+[_0x33a643['toUpperCase']()]+']',_0x1782fc['message']);_0x7183f0(_0x1782fc[_0x9830('0x1f')]);});});}function getTicket(_0xe79c6c,_0x338c69,_0x2f3734,_0x11eb08,_0x245ff0){return function(_0x4aaf59){logger[_0x9830('0x14')](_0x9830('0x2c'));return new Promise(function(_0x1423a1,_0x38f2a1){var _0x43b6bc=moment();var _0x22a44b={'method':_0x9830('0x2d'),'uri':_0x2f3734+_0x9830('0x2e'),'body':{'title':intUtil['getString'](_0x11eb08[_0x9830('0x2f')],_0x245ff0,'\x20'),'description':intUtil['getString'](_0x11eb08[_0x9830('0x30')],_0x245ff0,'\x0a'),'owner_id':_0x4aaf59[_0x9830('0x19')],'creater_id':_0x4aaf59[_0x9830('0x10')],'targetable_id':_0x4aaf59[_0x9830('0x27')],'targetable_type':_0x9830('0x31'),'created_at':_0x43b6bc['format'](_0x9830('0x32')),'due_date':_0x43b6bc[_0x9830('0x33')](0x1e,'m')[_0x9830('0x23')](_0x9830('0x32'))},'json':!![]};_0x22a44b[_0x9830('0xb')]=_0x338c69;return rp(_0x22a44b)['then'](function(_0x51c78e){_0x4aaf59['ticketId']=_0x51c78e[_0x9830('0x34')]['id'];logger[_0x9830('0x14')](_0x9830('0x35'),_0x4aaf59[_0x9830('0x36')]);_0x1423a1(_0x4aaf59);})[_0x9830('0x12')](function(_0xd285cc){logger[_0x9830('0x1d')]('['+[_0xe79c6c['toUpperCase']()]+']',_0xd285cc['message']);_0x38f2a1(_0xd285cc[_0x9830('0x1f')]);});});};}function emit(_0x269496,_0x3b71d9,_0x2504b7){var _0x5359d5={'uri':_0x269496+_0x9830('0x37')+_0x2504b7};io['to'](util['format']('user:%s',_0x3b71d9))[_0x9830('0x38')](_0x9830('0x39'),_0x5359d5);}exports['cs']=function(_0x251cb6,_0x573c5c,_0x92cbee,_0x138a75,_0x57092f,_0x298854,_0x4ba536,_0x37075b){var _0x221a29={};var _0x29f0a1={'Authorization':_0x9830('0x3a')+_0x298854[_0x9830('0x3b')]};_0x298854[_0x9830('0x3c')]=intUtil['stripTrailingSlash'](_0x298854[_0x9830('0x3c')]);_0x298854[_0x9830('0x3d')]=intUtil[_0x9830('0x3e')](_0x298854[_0x9830('0x3d')]);var _0x18614a=_0x298854[_0x9830('0x3c')];_0x221a29[_0x9830('0x1c')]=_0x298854['username'];_0x221a29[_0x9830('0x26')]=_0x37075b[_0x9830('0x3f')]()===_0x9830('0x40')?_0x573c5c['destcalleridnum']:_0x573c5c[_0x9830('0x41')];_0x221a29[_0x9830('0x42')]=_0x37075b===_0x9830('0x43')||_0x37075b===_0x9830('0x44')?_0x9830('0x43'):_0x9830('0x40');if(_0x138a75){_0x221a29[_0x9830('0x17')]=_0x138a75[_0x9830('0xf')];}var _0x2b06cc=util[_0x9830('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x298854[_0x9830('0x3d')],_0x573c5c[_0x9830('0x45')],md5(_0x573c5c[_0x9830('0x45')]));if(_0x57092f&&_0x57092f[_0x9830('0x46')]){logger['info'](_0x9830('0x47'),'Recording\x20is\x20enabled!');_0x573c5c['recordingURL']=_0x2b06cc;}else if(_0x4ba536&&_0x4ba536['recordingFormat']&&_0x4ba536[_0x9830('0x48')]!=='none'){logger[_0x9830('0x14')](_0x9830('0x49'),_0x9830('0x4a'));_0x573c5c[_0x9830('0x4b')]=_0x2b06cc;}else{_0x573c5c[_0x9830('0x4b')]='';}return getAdminId(_0x221a29,_0x37075b,_0x29f0a1,_0x18614a)[_0x9830('0xd')](getUser(_0x37075b,_0x29f0a1,_0x18614a))[_0x9830('0xd')](getEndUser(_0x37075b,_0x29f0a1,_0x18614a))[_0x9830('0xd')](getTicket(_0x37075b,_0x29f0a1,_0x18614a,_0x92cbee,_0x573c5c))[_0x9830('0xd')](function(_0x90f377){logger[_0x9830('0x14')](util[_0x9830('0x23')](_0x9830('0x4c'),_0x90f377[_0x9830('0x36')]));if(_0x37075b!==_0x9830('0x44')){logger[_0x9830('0x14')]('['+[_0x37075b['toUpperCase']()]+']',_0x9830('0x4d'));emit(_0x18614a,_0x138a75[_0x9830('0x4e')],_0x90f377['endUserId']);}})[_0x9830('0x12')](function(_0x18bee9){logger[_0x9830('0x1d')]('['+[_0x37075b['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x9830('0x4f')](_0x18bee9,{'showHidden':!![],'depth':null}));});};