bf810081666c43876c8fac48263bf94c31fcc82d
[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 _0x11e5=['catch','message','/api/lookup?q=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','toUpperCase','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','Task\x20created:','user:%s','emit','Token\x20token=','apiKey','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','util','moment','ioredis','./util','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','error','GET','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','userId','User\x20found:','Admin\x20selected'];(function(_0x13f5ac,_0x303066){var _0x163d97=function(_0x1c2c3e){while(--_0x1c2c3e){_0x13f5ac['push'](_0x13f5ac['shift']());}};_0x163d97(++_0x303066);}(_0x11e5,0x1d3));var _0x511e=function(_0xb77d35,_0x291854){_0xb77d35=_0xb77d35-0x0;var _0x5389a8=_0x11e5[_0xb77d35];return _0x5389a8;};'use strict';var _=require(_0x511e('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x511e('0x1'));var moment=require(_0x511e('0x2'));var Promise=require('bluebird');var Redis=require(_0x511e('0x3'));var intUtil=require(_0x511e('0x4'));var config=require('../../../../config/environment');var logger=require(_0x511e('0x5'))(_0x511e('0x6'));config[_0x511e('0x7')]=_[_0x511e('0x8')](config[_0x511e('0x7')],{'host':_0x511e('0x9'),'port':0x18eb});var io=require(_0x511e('0xa'))(new Redis(config[_0x511e('0x7')]));function getAdminId(_0x38d762,_0x3a4e14,_0x5981b3,_0x1577a6){return new Promise(function(_0x3886a9,_0x4fff1c){var _0x280a71=![];var _0x19825a={'method':'GET','uri':_0x1577a6+_0x511e('0xb'),'json':!![]};_0x19825a[_0x511e('0xc')]=_0x5981b3;logger[_0x511e('0xd')](_0x511e('0xe'));return rp(_0x19825a)[_0x511e('0xf')](function(_0x3425d9){if(_0x3425d9){var _0x4e8246=_0x3425d9[_0x511e('0x10')];var _0x4c76ac=null;for(_0x4c76ac=0x0;_0x4c76ac<_0x4e8246['length'];_0x4c76ac++){if(_0x4e8246[_0x4c76ac][_0x511e('0x11')]===_0x38d762[_0x511e('0x12')]){_0x38d762['adminId']=_0x4e8246[_0x4c76ac]['id'];_0x280a71=!![];}}if(_0x280a71){logger[_0x511e('0xd')]('Admin\x20found:',_0x38d762[_0x511e('0x13')]);_0x3886a9(_0x38d762);}else{_0x4fff1c({'statusCode':0x194,'message':_0x511e('0x14')});}}else{_0x4fff1c({'statusCode':0x194,'message':_0x511e('0x14')});}})['catch'](function(_0x28e1ce){logger[_0x511e('0x15')]('['+[_0x3a4e14['toUpperCase']()]+']',_0x28e1ce['message']);_0x4fff1c(_0x28e1ce);});});}function getUser(_0x37fcba,_0x19f701,_0x4010df){return function(_0x1922a4){return new Promise(function(_0x3b863e,_0x539c5e){var _0x36c7c5={'method':_0x511e('0x16'),'uri':_0x4010df+_0x511e('0xb'),'json':!![]};_0x36c7c5[_0x511e('0xc')]=_0x19f701;logger[_0x511e('0xd')](_0x511e('0x17'));return rp(_0x36c7c5)[_0x511e('0xf')](function(_0x419d3e){if(_0x419d3e){var _0x48fe40=_0x419d3e['users'];var _0x119b1f=![];var _0x1e5f41=null;if(_0x1922a4[_0x511e('0x18')]!==null){logger['info'](_0x511e('0x19'),_0x1922a4[_0x511e('0x18')]);_0x1922a4[_0x511e('0x1a')]=_0x1922a4[_0x511e('0x18')];for(_0x1e5f41=0x0;_0x1e5f41<_0x48fe40[_0x511e('0x1b')];_0x1e5f41++){if(_0x48fe40[_0x1e5f41]['email']===_0x1922a4[_0x511e('0x18')]){_0x119b1f=!![];_0x1922a4[_0x511e('0x1c')]=_0x48fe40[_0x1e5f41]['id'];logger[_0x511e('0xd')](_0x511e('0x1d'),_0x1922a4[_0x511e('0x1c')]);}}}if(!_0x119b1f){logger[_0x511e('0xd')](_0x511e('0x1e'));_0x1922a4[_0x511e('0x1a')]=_0x1922a4['adminEmail'];_0x1922a4[_0x511e('0x1c')]=_0x1922a4[_0x511e('0x13')];_0x119b1f=!![];}if(_0x119b1f){_0x3b863e(_0x1922a4);}else{_0x539c5e({'statusCode':0x194,'message':_0x511e('0x14')});}}else{_0x539c5e({'statusCode':0x194,'message':_0x511e('0x14')});}})[_0x511e('0x1f')](function(_0x2b5bdd){logger[_0x511e('0x15')]('['+[_0x37fcba['toUpperCase']()]+']',_0x2b5bdd[_0x511e('0x20')]);_0x539c5e(_0x2b5bdd);});});};}function searchContact(_0x5cc179,_0x2e2e97,_0x2526ec,_0x3806b7){return new Promise(function(_0x2a464f,_0x2a2da8){var _0x222be4={'method':_0x511e('0x16'),'headers':_0x2e2e97,'uri':_0x5cc179+_0x511e('0x21')+_0x3806b7+'&f='+_0x2526ec+'&entities=contact','json':!![]};rp(_0x222be4)[_0x511e('0xf')](function(_0x3fb187){var _0x221f66=_[_0x511e('0x22')](_0x3fb187[_0x511e('0x23')]['contacts'],[_0x2526ec,_0x3806b7]);_0x2a464f(_0x221f66);})[_0x511e('0x1f')](function(_0x37d236){_0x2a2da8(_0x37d236);});});}function getEndUser(_0x3315a4,_0x4dbc30,_0x39e005){return function(_0x443983){return new Promise(function(_0x380e7c,_0x5b17b8){logger[_0x511e('0xd')](util[_0x511e('0x24')](_0x511e('0x25'),_0x443983[_0x511e('0x26')]));searchContact(_0x39e005,_0x4dbc30,_0x511e('0x27'),_0x443983[_0x511e('0x26')])[_0x511e('0xf')](function(_0x189d4b){if(_0x189d4b){_0x443983['endUserId']=_0x189d4b['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x443983[_0x511e('0x28')]);return _0x380e7c(_0x443983);}searchContact(_0x39e005,_0x4dbc30,_0x511e('0x29'),_0x443983['contactNumber'])[_0x511e('0xf')](function(_0x22dcb5){if(_0x22dcb5){_0x443983[_0x511e('0x28')]=_0x22dcb5['id'];logger[_0x511e('0xd')]('Contact\x20found\x20work_number:',_0x443983[_0x511e('0x28')]);return _0x380e7c(_0x443983);}createEndUser(_0x443983,_0x3315a4,_0x4dbc30,_0x39e005)[_0x511e('0xf')](function(_0x265eab){logger[_0x511e('0xd')](_0x511e('0x2a'),_0x265eab['endUserId']);return _0x380e7c(_0x265eab);});});})[_0x511e('0x1f')](function(_0x27265f){_0x5b17b8(_0x27265f);});});};}function createEndUser(_0x1bac18,_0x24e4e0,_0x47a7b4,_0x12d8e3){return new Promise(function(_0x2ea57e,_0x39cc6d){var _0x5073f9=moment();var _0x40b968={'method':_0x511e('0x2b'),'uri':_0x12d8e3+_0x511e('0x2c'),'body':{'contact':{'last_name':_0x1bac18[_0x511e('0x26')],'work_number':_0x1bac18[_0x511e('0x26')],'mobile_number':_0x1bac18['contactNumber'],'owner_id':_0x1bac18[_0x511e('0x1c')],'created_at':_0x5073f9['format'](_0x511e('0x2d'))}},'json':!![]};_0x40b968[_0x511e('0xc')]=_0x47a7b4;logger['info'](_0x511e('0x2e'));return rp(_0x40b968)[_0x511e('0xf')](function(_0x85380a){_0x1bac18[_0x511e('0x28')]=_0x85380a[_0x511e('0x2f')]['id'];_0x2ea57e(_0x1bac18);})[_0x511e('0x1f')](function(_0x559e32){logger[_0x511e('0x15')]('['+[_0x24e4e0[_0x511e('0x30')]()]+']',_0x559e32[_0x511e('0x20')]);_0x39cc6d(_0x559e32[_0x511e('0x20')]);});});}function getTicket(_0x41cb00,_0x25951c,_0x3ee28f,_0x428f50,_0x582594){return function(_0x5d0b9f){logger[_0x511e('0xd')](_0x511e('0x31'));return new Promise(function(_0x4cc73f,_0x542afc){var _0x13b955=moment();var _0x481500={'method':_0x511e('0x2b'),'uri':_0x3ee28f+_0x511e('0x32'),'body':{'title':intUtil[_0x511e('0x33')](_0x428f50[_0x511e('0x34')],_0x582594,'\x20'),'description':intUtil[_0x511e('0x33')](_0x428f50[_0x511e('0x35')],_0x582594,'\x0a'),'owner_id':_0x5d0b9f['userId'],'creater_id':_0x5d0b9f[_0x511e('0x13')],'targetable_id':_0x5d0b9f[_0x511e('0x28')],'targetable_type':_0x511e('0x36'),'created_at':_0x13b955[_0x511e('0x24')](_0x511e('0x2d')),'due_date':_0x13b955[_0x511e('0x37')](0x1e,'m')[_0x511e('0x24')](_0x511e('0x2d'))},'json':!![]};_0x481500[_0x511e('0xc')]=_0x25951c;return rp(_0x481500)[_0x511e('0xf')](function(_0x51521e){_0x5d0b9f[_0x511e('0x38')]=_0x51521e['task']['id'];logger[_0x511e('0xd')](_0x511e('0x39'),_0x5d0b9f[_0x511e('0x38')]);_0x4cc73f(_0x5d0b9f);})[_0x511e('0x1f')](function(_0x5a2fcb){logger[_0x511e('0x15')]('['+[_0x41cb00[_0x511e('0x30')]()]+']',_0x5a2fcb[_0x511e('0x20')]);_0x542afc(_0x5a2fcb[_0x511e('0x20')]);});});};}function emit(_0x40623b,_0x5d7164,_0x100228){var _0x54421b={'uri':_0x40623b+'/contacts/'+_0x100228};io['to'](util[_0x511e('0x24')](_0x511e('0x3a'),_0x5d7164))[_0x511e('0x3b')]('trigger:browser:url',_0x54421b);}exports['cs']=function(_0x3ef759,_0xb72a,_0x147a3a,_0x644a2e,_0x3ff38f,_0x4457b7,_0x12bc33,_0x17810a){var _0xe3595a={};var _0x5138fd={'Authorization':_0x511e('0x3c')+_0x4457b7[_0x511e('0x3d')]};_0x4457b7['remoteUri']=intUtil[_0x511e('0x3e')](_0x4457b7['remoteUri']);_0x4457b7[_0x511e('0x3f')]=intUtil[_0x511e('0x3e')](_0x4457b7[_0x511e('0x3f')]);var _0x282a09=_0x4457b7['remoteUri'];_0xe3595a[_0x511e('0x12')]=_0x4457b7[_0x511e('0x40')];_0xe3595a[_0x511e('0x26')]=_0x17810a[_0x511e('0x41')]()==='outbound'?_0xb72a[_0x511e('0x42')]:_0xb72a[_0x511e('0x43')];_0xe3595a['callDirection']=_0x17810a==='queue'||_0x17810a===_0x511e('0x44')?'queue':_0x511e('0x45');if(_0x644a2e){_0xe3595a['agentEmail']=_0x644a2e[_0x511e('0x11')];}var _0x2e051a=util[_0x511e('0x24')](_0x511e('0x46'),_0x4457b7[_0x511e('0x3f')],_0xb72a['uniqueid'],md5(_0xb72a[_0x511e('0x47')]));if(_0x3ff38f&&_0x3ff38f[_0x511e('0x48')]){logger[_0x511e('0xd')](_0x511e('0x49'),_0x511e('0x4a'));_0xb72a['recordingURL']=_0x2e051a;}else if(_0x12bc33&&_0x12bc33['recordingFormat']&&_0x12bc33[_0x511e('0x4b')]!==_0x511e('0x4c')){logger[_0x511e('0xd')](_0x511e('0x4d'),_0x511e('0x4a'));_0xb72a[_0x511e('0x4e')]=_0x2e051a;}else{_0xb72a[_0x511e('0x4e')]='';}return getAdminId(_0xe3595a,_0x17810a,_0x5138fd,_0x282a09)['then'](getUser(_0x17810a,_0x5138fd,_0x282a09))['then'](getEndUser(_0x17810a,_0x5138fd,_0x282a09))['then'](getTicket(_0x17810a,_0x5138fd,_0x282a09,_0x147a3a,_0xb72a))[_0x511e('0xf')](function(_0x45f9a){logger[_0x511e('0xd')](util[_0x511e('0x24')](_0x511e('0x4f'),_0x45f9a[_0x511e('0x38')]));if(_0x17810a!=='unmanaged'){logger[_0x511e('0xd')]('['+[_0x17810a[_0x511e('0x30')]()]+']',_0x511e('0x50'));emit(_0x282a09,_0x644a2e['name'],_0x45f9a['endUserId']);}})[_0x511e('0x1f')](function(_0xb7b3b6){logger[_0x511e('0x15')]('['+[_0x17810a['toUpperCase']()]+_0x511e('0x51'),util[_0x511e('0x52')](_0xb7b3b6,{'showHidden':!![],'depth':null}));});};