e39d2dad229ee2c75bf3e8995f6847ab1a391f7e
[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 _0x1c35=['%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','length','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','error','Creating\x20new\x20task','POST','/api/tasks','getString','Descriptions','Contact','add','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged'];(function(_0x431c94,_0x535dc5){var _0x2074ce=function(_0x1d99b2){while(--_0x1d99b2){_0x431c94['push'](_0x431c94['shift']());}};_0x2074ce(++_0x535dc5);}(_0x1c35,0x1a9));var _0x51c3=function(_0x51c141,_0x40ac38){_0x51c141=_0x51c141-0x0;var _0x5769c7=_0x1c35[_0x51c141];return _0x5769c7;};'use strict';var _=require(_0x51c3('0x0'));var rp=require(_0x51c3('0x1'));var md5=require(_0x51c3('0x2'));var util=require('util');var moment=require(_0x51c3('0x3'));var Promise=require(_0x51c3('0x4'));var Redis=require(_0x51c3('0x5'));var intUtil=require(_0x51c3('0x6'));var config=require(_0x51c3('0x7'));var logger=require(_0x51c3('0x8'))(_0x51c3('0x9'));config['redis']=_['defaults'](config['redis'],{'host':_0x51c3('0xa'),'port':0x18eb});var io=require(_0x51c3('0xb'))(new Redis(config['redis']));function getAdminId(_0x3b7995,_0x25c83d,_0x536f63,_0x485816){return new Promise(function(_0xc22db7,_0x28b35c){var _0x3cb768=![];var _0x3e6b42={'method':_0x51c3('0xc'),'uri':_0x485816+_0x51c3('0xd'),'json':!![]};_0x3e6b42[_0x51c3('0xe')]=_0x536f63;logger[_0x51c3('0xf')](_0x51c3('0x10'));return rp(_0x3e6b42)[_0x51c3('0x11')](function(_0x5e5979){if(_0x5e5979){var _0x4a1a46=_0x5e5979['users'];var _0x2ccfa0=null;for(_0x2ccfa0=0x0;_0x2ccfa0<_0x4a1a46[_0x51c3('0x12')];_0x2ccfa0++){if(_0x4a1a46[_0x2ccfa0]['email']===_0x3b7995[_0x51c3('0x13')]){_0x3b7995['adminId']=_0x4a1a46[_0x2ccfa0]['id'];_0x3cb768=!![];}}if(_0x3cb768){logger[_0x51c3('0xf')]('Admin\x20found:',_0x3b7995[_0x51c3('0x14')]);_0xc22db7(_0x3b7995);}else{_0x28b35c({'statusCode':0x194,'message':_0x51c3('0x15')});}}else{_0x28b35c({'statusCode':0x194,'message':_0x51c3('0x15')});}})[_0x51c3('0x16')](function(_0x897bb){logger['error']('['+[_0x25c83d[_0x51c3('0x17')]()]+']',_0x897bb[_0x51c3('0x18')]);_0x28b35c(_0x897bb);});});}function getUser(_0x12c5dd,_0x3f3053,_0xb1d255){return function(_0x5ca5f5){return new Promise(function(_0x3e31ee,_0x2f468a){var _0x24ee59={'method':_0x51c3('0xc'),'uri':_0xb1d255+'/api/selector/owners','json':!![]};_0x24ee59[_0x51c3('0xe')]=_0x3f3053;logger[_0x51c3('0xf')](_0x51c3('0x19'));return rp(_0x24ee59)['then'](function(_0x28007f){if(_0x28007f){var _0x35b43e=_0x28007f['users'];var _0x4b24c5=![];var _0x38760f=null;if(_0x5ca5f5[_0x51c3('0x1a')]!==null){logger[_0x51c3('0xf')](_0x51c3('0x1b'),_0x5ca5f5[_0x51c3('0x1a')]);_0x5ca5f5[_0x51c3('0x1c')]=_0x5ca5f5[_0x51c3('0x1a')];for(_0x38760f=0x0;_0x38760f<_0x35b43e[_0x51c3('0x12')];_0x38760f++){if(_0x35b43e[_0x38760f][_0x51c3('0x1d')]===_0x5ca5f5['agentEmail']){_0x4b24c5=!![];_0x5ca5f5[_0x51c3('0x1e')]=_0x35b43e[_0x38760f]['id'];logger['info']('User\x20found:',_0x5ca5f5[_0x51c3('0x1e')]);}}}if(!_0x4b24c5){logger[_0x51c3('0xf')](_0x51c3('0x1f'));_0x5ca5f5[_0x51c3('0x1c')]=_0x5ca5f5[_0x51c3('0x13')];_0x5ca5f5[_0x51c3('0x1e')]=_0x5ca5f5[_0x51c3('0x14')];_0x4b24c5=!![];}if(_0x4b24c5){_0x3e31ee(_0x5ca5f5);}else{_0x2f468a({'statusCode':0x194,'message':_0x51c3('0x15')});}}else{_0x2f468a({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x51c3('0x16')](function(_0x286003){logger['error']('['+[_0x12c5dd[_0x51c3('0x17')]()]+']',_0x286003[_0x51c3('0x18')]);_0x2f468a(_0x286003);});});};}function searchContact(_0x51833b,_0x16fdba,_0x42a892,_0x581b51){return new Promise(function(_0x57e151,_0x239a6e){var _0x4a13c7={'method':_0x51c3('0xc'),'headers':_0x16fdba,'uri':_0x51833b+_0x51c3('0x20')+_0x581b51+_0x51c3('0x21')+_0x42a892+_0x51c3('0x22'),'json':!![]};rp(_0x4a13c7)[_0x51c3('0x11')](function(_0xef9d44){var _0x664e63=_['find'](_0xef9d44['contacts'][_0x51c3('0x23')],[_0x42a892,_0x581b51]);_0x57e151(_0x664e63);})['catch'](function(_0x3bad25){_0x239a6e(_0x3bad25);});});}function getEndUser(_0x3f17be,_0x43a433,_0x223696){return function(_0x57b5a3){return new Promise(function(_0x1fce5f,_0x42d881){logger[_0x51c3('0xf')](util[_0x51c3('0x24')](_0x51c3('0x25'),_0x57b5a3[_0x51c3('0x26')]));searchContact(_0x223696,_0x43a433,_0x51c3('0x27'),_0x57b5a3[_0x51c3('0x26')])[_0x51c3('0x11')](function(_0x80c5fa){if(_0x80c5fa){_0x57b5a3[_0x51c3('0x28')]=_0x80c5fa['id'];logger['info'](_0x51c3('0x29'),_0x57b5a3[_0x51c3('0x28')]);return _0x1fce5f(_0x57b5a3);}searchContact(_0x223696,_0x43a433,_0x51c3('0x2a'),_0x57b5a3['contactNumber'])[_0x51c3('0x11')](function(_0x1ca710){if(_0x1ca710){_0x57b5a3[_0x51c3('0x28')]=_0x1ca710['id'];logger[_0x51c3('0xf')]('Contact\x20found\x20work_number:',_0x57b5a3[_0x51c3('0x28')]);return _0x1fce5f(_0x57b5a3);}createEndUser(_0x57b5a3,_0x3f17be,_0x43a433,_0x223696)['then'](function(_0x5b8c5f){logger[_0x51c3('0xf')](_0x51c3('0x2b'),_0x5b8c5f[_0x51c3('0x28')]);return _0x1fce5f(_0x5b8c5f);});});})['catch'](function(_0x3570eb){_0x42d881(_0x3570eb);});});};}function createEndUser(_0x48744a,_0x283367,_0x3a0e2a,_0xc13a9f){return new Promise(function(_0x5c62b1,_0x2cc0e3){var _0x545469=moment();var _0x4bc409={'method':'POST','uri':_0xc13a9f+_0x51c3('0x2c'),'body':{'contact':{'last_name':_0x48744a[_0x51c3('0x26')],'work_number':_0x48744a['contactNumber'],'mobile_number':_0x48744a[_0x51c3('0x26')],'owner_id':_0x48744a[_0x51c3('0x1e')],'created_at':_0x545469['format'](_0x51c3('0x2d'))}},'json':!![]};_0x4bc409[_0x51c3('0xe')]=_0x3a0e2a;logger['info'](_0x51c3('0x2e'));return rp(_0x4bc409)[_0x51c3('0x11')](function(_0x13347b){_0x48744a['endUserId']=_0x13347b[_0x51c3('0x2f')]['id'];_0x5c62b1(_0x48744a);})['catch'](function(_0x33e371){logger[_0x51c3('0x30')]('['+[_0x283367[_0x51c3('0x17')]()]+']',_0x33e371[_0x51c3('0x18')]);_0x2cc0e3(_0x33e371[_0x51c3('0x18')]);});});}function getTicket(_0x46fc9e,_0x2255df,_0x5d1574,_0x56c725,_0x5999b4){return function(_0x5a414e){logger[_0x51c3('0xf')](_0x51c3('0x31'));return new Promise(function(_0x9faba8,_0x2b6353){var _0x19ba82=moment();var _0x48d0ef={'method':_0x51c3('0x32'),'uri':_0x5d1574+_0x51c3('0x33'),'body':{'title':intUtil[_0x51c3('0x34')](_0x56c725['Subjects'],_0x5999b4,'\x20'),'description':intUtil[_0x51c3('0x34')](_0x56c725[_0x51c3('0x35')],_0x5999b4,'\x0a'),'owner_id':_0x5a414e[_0x51c3('0x1e')],'creater_id':_0x5a414e[_0x51c3('0x14')],'targetable_id':_0x5a414e['endUserId'],'targetable_type':_0x51c3('0x36'),'created_at':_0x19ba82[_0x51c3('0x24')](_0x51c3('0x2d')),'due_date':_0x19ba82[_0x51c3('0x37')](0x1e,'m')[_0x51c3('0x24')](_0x51c3('0x2d'))},'json':!![]};_0x48d0ef[_0x51c3('0xe')]=_0x2255df;return rp(_0x48d0ef)['then'](function(_0xefec1){_0x5a414e[_0x51c3('0x38')]=_0xefec1[_0x51c3('0x39')]['id'];logger['info']('Task\x20created:',_0x5a414e[_0x51c3('0x38')]);_0x9faba8(_0x5a414e);})[_0x51c3('0x16')](function(_0x4a3d6e){logger[_0x51c3('0x30')]('['+[_0x46fc9e['toUpperCase']()]+']',_0x4a3d6e[_0x51c3('0x18')]);_0x2b6353(_0x4a3d6e[_0x51c3('0x18')]);});});};}function emit(_0x598b7c,_0x163e48,_0x593beb){var _0x290a09={'uri':_0x598b7c+_0x51c3('0x3a')+_0x593beb};io['to'](util[_0x51c3('0x24')](_0x51c3('0x3b'),_0x163e48))[_0x51c3('0x3c')](_0x51c3('0x3d'),_0x290a09);}exports['cs']=function(_0x46cc1a,_0x9602de,_0x4ed633,_0x570fc0,_0x1732b1,_0x4e3779,_0x3af9b1,_0xa3f6f1){var _0x436b3c={};var _0x441348={'Authorization':_0x51c3('0x3e')+_0x4e3779['apiKey']};_0x4e3779[_0x51c3('0x3f')]=intUtil[_0x51c3('0x40')](_0x4e3779[_0x51c3('0x3f')]);_0x4e3779[_0x51c3('0x41')]=intUtil[_0x51c3('0x40')](_0x4e3779[_0x51c3('0x41')]);var _0x279be5=_0x4e3779['remoteUri'];_0x436b3c[_0x51c3('0x13')]=_0x4e3779['username'];_0x436b3c[_0x51c3('0x26')]=_0xa3f6f1[_0x51c3('0x42')]()===_0x51c3('0x43')?_0x9602de[_0x51c3('0x44')]:_0x9602de[_0x51c3('0x45')];_0x436b3c[_0x51c3('0x46')]=_0xa3f6f1===_0x51c3('0x47')||_0xa3f6f1===_0x51c3('0x48')?_0x51c3('0x47'):_0x51c3('0x43');if(_0x570fc0){_0x436b3c['agentEmail']=_0x570fc0['email'];}var _0x4aa29e=util[_0x51c3('0x24')](_0x51c3('0x49'),_0x4e3779['serverUrl'],_0x9602de[_0x51c3('0x4a')],md5(_0x9602de[_0x51c3('0x4a')]));if(_0x1732b1&&_0x1732b1[_0x51c3('0x4b')]){logger['info'](_0x51c3('0x4c'),_0x51c3('0x4d'));_0x9602de['recordingURL']=_0x4aa29e;}else if(_0x3af9b1&&_0x3af9b1[_0x51c3('0x4e')]&&_0x3af9b1[_0x51c3('0x4e')]!=='none'){logger[_0x51c3('0xf')](_0x51c3('0x4f'),_0x51c3('0x4d'));_0x9602de[_0x51c3('0x50')]=_0x4aa29e;}else{_0x9602de[_0x51c3('0x50')]='';}return getAdminId(_0x436b3c,_0xa3f6f1,_0x441348,_0x279be5)[_0x51c3('0x11')](getUser(_0xa3f6f1,_0x441348,_0x279be5))[_0x51c3('0x11')](getEndUser(_0xa3f6f1,_0x441348,_0x279be5))[_0x51c3('0x11')](getTicket(_0xa3f6f1,_0x441348,_0x279be5,_0x4ed633,_0x9602de))['then'](function(_0xec7171){logger[_0x51c3('0xf')](util[_0x51c3('0x24')](_0x51c3('0x51'),_0xec7171[_0x51c3('0x38')]));if(_0xa3f6f1!==_0x51c3('0x48')){logger[_0x51c3('0xf')]('['+[_0xa3f6f1[_0x51c3('0x17')]()]+']',_0x51c3('0x52'));emit(_0x279be5,_0x570fc0['name'],_0xec7171[_0x51c3('0x28')]);}})['catch'](function(_0x406ec1){logger[_0x51c3('0x30')]('['+[_0xa3f6f1['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x406ec1,{'showHidden':!![],'depth':null}));});};