36201aa76a3e7406639ab725d264a4ca24875661
[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 _0x2dc6=['redis','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','/api/tasks','getString','Subjects','Descriptions','ticketId','task','Task\x20created:','/contacts/','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','unmanaged','queue','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','name','inspect','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','defaults','socket.io-emitter'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0x2dc6,0x136));var _0x62dc=function(_0x2e18b6,_0x29f428){_0x2e18b6=_0x2e18b6-0x0;var _0x5d5501=_0x2dc6[_0x2e18b6];return _0x5d5501;};'use strict';var _=require(_0x62dc('0x0'));var rp=require(_0x62dc('0x1'));var md5=require(_0x62dc('0x2'));var util=require(_0x62dc('0x3'));var moment=require('moment');var Promise=require(_0x62dc('0x4'));var Redis=require(_0x62dc('0x5'));var intUtil=require(_0x62dc('0x6'));var config=require(_0x62dc('0x7'));var logger=require('../../../../config/logger')('freshsales');config['redis']=_[_0x62dc('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x62dc('0x9'))(new Redis(config[_0x62dc('0xa')]));function getAdminId(_0x12eba1,_0xbdbda0,_0x30f541,_0x103e1f){return new Promise(function(_0x111cb4,_0x1c6d39){var _0x2873a1=![];var _0x288085={'method':_0x62dc('0xb'),'uri':_0x103e1f+_0x62dc('0xc'),'json':!![]};_0x288085[_0x62dc('0xd')]=_0x30f541;logger[_0x62dc('0xe')](_0x62dc('0xf'));return rp(_0x288085)[_0x62dc('0x10')](function(_0x57e834){if(_0x57e834){var _0x8bec1b=_0x57e834[_0x62dc('0x11')];var _0x5f5688=null;for(_0x5f5688=0x0;_0x5f5688<_0x8bec1b['length'];_0x5f5688++){if(_0x8bec1b[_0x5f5688][_0x62dc('0x12')]===_0x12eba1[_0x62dc('0x13')]){_0x12eba1[_0x62dc('0x14')]=_0x8bec1b[_0x5f5688]['id'];_0x2873a1=!![];}}if(_0x2873a1){logger['info']('Admin\x20found:',_0x12eba1[_0x62dc('0x14')]);_0x111cb4(_0x12eba1);}else{_0x1c6d39({'statusCode':0x194,'message':_0x62dc('0x15')});}}else{_0x1c6d39({'statusCode':0x194,'message':_0x62dc('0x15')});}})[_0x62dc('0x16')](function(_0x19c9ea){logger[_0x62dc('0x17')]('['+[_0xbdbda0[_0x62dc('0x18')]()]+']',_0x19c9ea[_0x62dc('0x19')]);_0x1c6d39(_0x19c9ea);});});}function getUser(_0x37615f,_0x328cd5,_0x2a4840){return function(_0x44fe0a){return new Promise(function(_0x726bcf,_0x4c2520){var _0x4ddae7={'method':_0x62dc('0xb'),'uri':_0x2a4840+'/api/selector/owners','json':!![]};_0x4ddae7[_0x62dc('0xd')]=_0x328cd5;logger[_0x62dc('0xe')]('Getting\x20user\x20list');return rp(_0x4ddae7)['then'](function(_0x59f382){if(_0x59f382){var _0x35a0e2=_0x59f382[_0x62dc('0x11')];var _0x1a6839=![];var _0x2bd6f9=null;if(_0x44fe0a[_0x62dc('0x1a')]!==null){logger[_0x62dc('0xe')](_0x62dc('0x1b'),_0x44fe0a['agentEmail']);_0x44fe0a[_0x62dc('0x1c')]=_0x44fe0a[_0x62dc('0x1a')];for(_0x2bd6f9=0x0;_0x2bd6f9<_0x35a0e2[_0x62dc('0x1d')];_0x2bd6f9++){if(_0x35a0e2[_0x2bd6f9]['email']===_0x44fe0a[_0x62dc('0x1a')]){_0x1a6839=!![];_0x44fe0a[_0x62dc('0x1e')]=_0x35a0e2[_0x2bd6f9]['id'];logger[_0x62dc('0xe')](_0x62dc('0x1f'),_0x44fe0a[_0x62dc('0x1e')]);}}}if(!_0x1a6839){logger[_0x62dc('0xe')](_0x62dc('0x20'));_0x44fe0a['userEmail']=_0x44fe0a['adminEmail'];_0x44fe0a['userId']=_0x44fe0a[_0x62dc('0x14')];_0x1a6839=!![];}if(_0x1a6839){_0x726bcf(_0x44fe0a);}else{_0x4c2520({'statusCode':0x194,'message':_0x62dc('0x15')});}}else{_0x4c2520({'statusCode':0x194,'message':_0x62dc('0x15')});}})[_0x62dc('0x16')](function(_0x9d1b02){logger[_0x62dc('0x17')]('['+[_0x37615f[_0x62dc('0x18')]()]+']',_0x9d1b02[_0x62dc('0x19')]);_0x4c2520(_0x9d1b02);});});};}function searchContact(_0x17c085,_0x4e89fd,_0x25cf90,_0x3df6b3){return new Promise(function(_0x537d81,_0x3a46b4){var _0xddba17={'method':_0x62dc('0xb'),'headers':_0x4e89fd,'uri':_0x17c085+_0x62dc('0x21')+_0x3df6b3+_0x62dc('0x22')+_0x25cf90+_0x62dc('0x23'),'json':!![]};rp(_0xddba17)['then'](function(_0x3f0d45){var _0x29c36a=_[_0x62dc('0x24')](_0x3f0d45[_0x62dc('0x25')]['contacts'],[_0x25cf90,_0x3df6b3]);_0x537d81(_0x29c36a);})['catch'](function(_0x4dce8c){_0x3a46b4(_0x4dce8c);});});}function getEndUser(_0x355276,_0x36be99,_0x5c6b72){return function(_0x22a08a){return new Promise(function(_0x559134,_0x147a9e){logger[_0x62dc('0xe')](util[_0x62dc('0x26')](_0x62dc('0x27'),_0x22a08a[_0x62dc('0x28')]));searchContact(_0x5c6b72,_0x36be99,_0x62dc('0x29'),_0x22a08a[_0x62dc('0x28')])['then'](function(_0x3a3895){if(_0x3a3895){_0x22a08a['endUserId']=_0x3a3895['id'];logger['info'](_0x62dc('0x2a'),_0x22a08a[_0x62dc('0x2b')]);return _0x559134(_0x22a08a);}searchContact(_0x5c6b72,_0x36be99,_0x62dc('0x2c'),_0x22a08a[_0x62dc('0x28')])[_0x62dc('0x10')](function(_0x44e5ed){if(_0x44e5ed){_0x22a08a[_0x62dc('0x2b')]=_0x44e5ed['id'];logger['info'](_0x62dc('0x2d'),_0x22a08a[_0x62dc('0x2b')]);return _0x559134(_0x22a08a);}createEndUser(_0x22a08a,_0x355276,_0x36be99,_0x5c6b72)[_0x62dc('0x10')](function(_0x2f0bb6){logger[_0x62dc('0xe')]('Contact\x20created:',_0x2f0bb6[_0x62dc('0x2b')]);return _0x559134(_0x2f0bb6);});});})[_0x62dc('0x16')](function(_0x344468){_0x147a9e(_0x344468);});});};}function createEndUser(_0x30d429,_0x39885f,_0x34d4c6,_0x41a5be){return new Promise(function(_0x1b0739,_0x10ab05){var _0xc9b46e=moment();var _0x1f277a={'method':_0x62dc('0x2e'),'uri':_0x41a5be+_0x62dc('0x2f'),'body':{'contact':{'last_name':_0x30d429['contactNumber'],'work_number':_0x30d429[_0x62dc('0x28')],'mobile_number':_0x30d429['contactNumber'],'owner_id':_0x30d429[_0x62dc('0x1e')],'created_at':_0xc9b46e['format'](_0x62dc('0x30'))}},'json':!![]};_0x1f277a[_0x62dc('0xd')]=_0x34d4c6;logger['info'](_0x62dc('0x31'));return rp(_0x1f277a)[_0x62dc('0x10')](function(_0x40b6e0){_0x30d429[_0x62dc('0x2b')]=_0x40b6e0['contact']['id'];_0x1b0739(_0x30d429);})[_0x62dc('0x16')](function(_0x1b414c){logger[_0x62dc('0x17')]('['+[_0x39885f['toUpperCase']()]+']',_0x1b414c[_0x62dc('0x19')]);_0x10ab05(_0x1b414c[_0x62dc('0x19')]);});});}function getTicket(_0x182c37,_0x420fa5,_0x567bc4,_0xf81f85,_0x13e13a){return function(_0x40e605){logger[_0x62dc('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x1fbb79,_0x1ab704){var _0x467625=moment();var _0x534d51={'method':_0x62dc('0x2e'),'uri':_0x567bc4+_0x62dc('0x32'),'body':{'title':intUtil[_0x62dc('0x33')](_0xf81f85[_0x62dc('0x34')],_0x13e13a,'\x20'),'description':intUtil[_0x62dc('0x33')](_0xf81f85[_0x62dc('0x35')],_0x13e13a,'\x0a'),'owner_id':_0x40e605[_0x62dc('0x1e')],'creater_id':_0x40e605['adminId'],'targetable_id':_0x40e605[_0x62dc('0x2b')],'targetable_type':'Contact','created_at':_0x467625[_0x62dc('0x26')](_0x62dc('0x30')),'due_date':_0x467625['add'](0x1e,'m')['format'](_0x62dc('0x30'))},'json':!![]};_0x534d51[_0x62dc('0xd')]=_0x420fa5;return rp(_0x534d51)[_0x62dc('0x10')](function(_0xc6d5ac){_0x40e605[_0x62dc('0x36')]=_0xc6d5ac[_0x62dc('0x37')]['id'];logger['info'](_0x62dc('0x38'),_0x40e605[_0x62dc('0x36')]);_0x1fbb79(_0x40e605);})[_0x62dc('0x16')](function(_0x2d2ed0){logger['error']('['+[_0x182c37['toUpperCase']()]+']',_0x2d2ed0[_0x62dc('0x19')]);_0x1ab704(_0x2d2ed0['message']);});});};}function emit(_0x440917,_0x17653f,_0x39ba1a){var _0xe66a8f={'uri':_0x440917+_0x62dc('0x39')+_0x39ba1a};io['to'](util['format']('user:%s',_0x17653f))['emit']('trigger:browser:url',_0xe66a8f);}exports['cs']=function(_0x242c8b,_0x145208,_0x3a4260,_0x4cc2e1,_0x5678b3,_0x4bc4f3,_0x11eb4e,_0x3e13da){var _0xb7971f={};var _0x17e56d={'Authorization':_0x62dc('0x3a')+_0x4bc4f3[_0x62dc('0x3b')]};_0x4bc4f3[_0x62dc('0x3c')]=intUtil[_0x62dc('0x3d')](_0x4bc4f3[_0x62dc('0x3c')]);_0x4bc4f3[_0x62dc('0x3e')]=intUtil['stripTrailingSlash'](_0x4bc4f3[_0x62dc('0x3e')]);var _0x507ca4=_0x4bc4f3['remoteUri'];_0xb7971f[_0x62dc('0x13')]=_0x4bc4f3[_0x62dc('0x3f')];_0xb7971f['contactNumber']=_0x3e13da[_0x62dc('0x40')]()===_0x62dc('0x41')?_0x145208[_0x62dc('0x42')]:_0x145208[_0x62dc('0x43')];_0xb7971f['callDirection']=_0x3e13da==='queue'||_0x3e13da===_0x62dc('0x44')?_0x62dc('0x45'):_0x62dc('0x41');if(_0x4cc2e1){_0xb7971f[_0x62dc('0x1a')]=_0x4cc2e1[_0x62dc('0x12')];}var _0x138bfe=util[_0x62dc('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bc4f3[_0x62dc('0x3e')],_0x145208['uniqueid'],md5(_0x145208[_0x62dc('0x46')]));if(_0x5678b3&&_0x5678b3[_0x62dc('0x47')]){logger[_0x62dc('0xe')]('[QUEUE]',_0x62dc('0x48'));_0x145208[_0x62dc('0x49')]=_0x138bfe;}else if(_0x11eb4e&&_0x11eb4e[_0x62dc('0x4a')]&&_0x11eb4e[_0x62dc('0x4a')]!==_0x62dc('0x4b')){logger[_0x62dc('0xe')](_0x62dc('0x4c'),_0x62dc('0x48'));_0x145208['recordingURL']=_0x138bfe;}else{_0x145208['recordingURL']='';}return getAdminId(_0xb7971f,_0x3e13da,_0x17e56d,_0x507ca4)[_0x62dc('0x10')](getUser(_0x3e13da,_0x17e56d,_0x507ca4))[_0x62dc('0x10')](getEndUser(_0x3e13da,_0x17e56d,_0x507ca4))['then'](getTicket(_0x3e13da,_0x17e56d,_0x507ca4,_0x3a4260,_0x145208))[_0x62dc('0x10')](function(_0x4c9731){logger[_0x62dc('0xe')](util['format'](_0x62dc('0x4d'),_0x4c9731['ticketId']));if(_0x3e13da!==_0x62dc('0x44')){logger[_0x62dc('0xe')]('['+[_0x3e13da[_0x62dc('0x18')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x507ca4,_0x4cc2e1[_0x62dc('0x4e')],_0x4c9731[_0x62dc('0x2b')]);}})[_0x62dc('0x16')](function(_0x1f1c68){logger['error']('['+[_0x3e13da['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x62dc('0x4f')](_0x1f1c68,{'showHidden':!![],'depth':null}));});};