Built motion from commit (unavailable).|2.5.0
[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 _0x6ee1=['serverUrl','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','socket.io-emitter','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','/api/selector/owners','Getting\x20user\x20list','Getting\x20user\x20with\x20email','userEmail','agentEmail','email','User\x20found:','userId','Admin\x20selected','/api/contacts/filters','Getting\x20contacts\x20filter','filters','name','All\x20Contacts','GET','Searching\x20contact\x20with\x20phone','contactNumber','contacts','find','work_number','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','contact','POST','/api/tasks','getString','Subjects','adminId','Contact','add','ticketId','/contacts/','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash'];(function(_0x52942a,_0x2880f0){var _0x1e6f9a=function(_0x23d46c){while(--_0x23d46c){_0x52942a['push'](_0x52942a['shift']());}};_0x1e6f9a(++_0x2880f0);}(_0x6ee1,0x6a));var _0x16ee=function(_0x1de43c,_0xaa29de){_0x1de43c=_0x1de43c-0x0;var _0x296d3e=_0x6ee1[_0x1de43c];return _0x296d3e;};'use strict';var _=require(_0x16ee('0x0'));var rp=require('request-promise');var md5=require(_0x16ee('0x1'));var util=require('util');var moment=require(_0x16ee('0x2'));var Promise=require(_0x16ee('0x3'));var Redis=require('ioredis');var intUtil=require(_0x16ee('0x4'));var config=require(_0x16ee('0x5'));var logger=require(_0x16ee('0x6'))(_0x16ee('0x7'));config['redis']=_[_0x16ee('0x8')](config[_0x16ee('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x16ee('0xa'))(new Redis(config[_0x16ee('0x9')]));function getAdminId(_0x264a95,_0x249103,_0x348646,_0x401b58){return new Promise(function(_0x3b9539,_0x196794){var _0x11dc77=![];var _0x5de127={'method':'GET','uri':_0x401b58+'/api/selector/owners','json':!![]};_0x5de127[_0x16ee('0xb')]=_0x348646;logger[_0x16ee('0xc')](_0x16ee('0xd'));return rp(_0x5de127)[_0x16ee('0xe')](function(_0x36404e){if(_0x36404e){var _0x254ac7=_0x36404e[_0x16ee('0xf')];var _0x2a9e8c=null;for(_0x2a9e8c=0x0;_0x2a9e8c<_0x254ac7[_0x16ee('0x10')];_0x2a9e8c++){if(_0x254ac7[_0x2a9e8c]['email']===_0x264a95[_0x16ee('0x11')]){_0x264a95['adminId']=_0x254ac7[_0x2a9e8c]['id'];_0x11dc77=!![];}}if(_0x11dc77){logger['info'](_0x16ee('0x12'),_0x264a95['adminId']);_0x3b9539(_0x264a95);}else{_0x196794({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x196794({'statusCode':0x194,'message':_0x16ee('0x13')});}})[_0x16ee('0x14')](function(_0x2248f0){logger[_0x16ee('0x15')]('['+[_0x249103[_0x16ee('0x16')]()]+']',_0x2248f0[_0x16ee('0x17')]);_0x196794(_0x2248f0);});});}function getUser(_0x540586,_0x1a33ff,_0x5a1773){return function(_0x5340d4){return new Promise(function(_0x4fe443,_0x2822e9){var _0x1b53a3={'method':'GET','uri':_0x5a1773+_0x16ee('0x18'),'json':!![]};_0x1b53a3['headers']=_0x1a33ff;logger[_0x16ee('0xc')](_0x16ee('0x19'));return rp(_0x1b53a3)[_0x16ee('0xe')](function(_0x46ee35){if(_0x46ee35){var _0x572124=_0x46ee35[_0x16ee('0xf')];var _0x20ec3d=![];var _0x2d2bac=null;if(_0x5340d4['agentEmail']!==null){logger[_0x16ee('0xc')](_0x16ee('0x1a'),_0x5340d4['agentEmail']);_0x5340d4[_0x16ee('0x1b')]=_0x5340d4[_0x16ee('0x1c')];for(_0x2d2bac=0x0;_0x2d2bac<_0x572124[_0x16ee('0x10')];_0x2d2bac++){if(_0x572124[_0x2d2bac][_0x16ee('0x1d')]===_0x5340d4[_0x16ee('0x1c')]){_0x20ec3d=!![];_0x5340d4['userId']=_0x572124[_0x2d2bac]['id'];logger[_0x16ee('0xc')](_0x16ee('0x1e'),_0x5340d4[_0x16ee('0x1f')]);}}}if(!_0x20ec3d){logger[_0x16ee('0xc')](_0x16ee('0x20'));_0x5340d4[_0x16ee('0x1b')]=_0x5340d4[_0x16ee('0x11')];_0x5340d4[_0x16ee('0x1f')]=_0x5340d4['adminId'];_0x20ec3d=!![];}if(_0x20ec3d){_0x4fe443(_0x5340d4);}else{_0x2822e9({'statusCode':0x194,'message':_0x16ee('0x13')});}}else{_0x2822e9({'statusCode':0x194,'message':_0x16ee('0x13')});}})['catch'](function(_0x1867e3){logger['error']('['+[_0x540586[_0x16ee('0x16')]()]+']',_0x1867e3['message']);_0x2822e9(_0x1867e3);});});};}function getEndUser(_0x3349a6,_0x93675d,_0x490195){return function(_0x18e037){return new Promise(function(_0x3ed9c0,_0x1b35ab){var _0x81948e=0x0;var _0x3cb3d0={'method':'GET','uri':_0x490195+_0x16ee('0x21'),'json':!![]};_0x3cb3d0['headers']=_0x93675d;logger[_0x16ee('0xc')](_0x16ee('0x22'));return rp(_0x3cb3d0)[_0x16ee('0xe')](function(_0x5296a1){_0x5296a1[_0x16ee('0x23')]['forEach'](function(_0x133632){if(_0x133632[_0x16ee('0x24')]===_0x16ee('0x25')){_0x81948e=_0x133632['id'];}});})[_0x16ee('0xe')](function(){logger[_0x16ee('0xc')]('Getting\x20contact\x20list');var _0x41da1e={'method':_0x16ee('0x26'),'uri':_0x490195+'/api/contacts/view/'+_0x81948e,'json':!![]};_0x41da1e[_0x16ee('0xb')]=_0x93675d;return rp(_0x41da1e);})[_0x16ee('0xe')](function(_0x11340f){logger[_0x16ee('0xc')](_0x16ee('0x27'),_0x18e037[_0x16ee('0x28')]);if(_0x11340f[_0x16ee('0x29')][_0x16ee('0x10')]>0x0){var _0x1f7c1a=_[_0x16ee('0x2a')](_0x11340f[_0x16ee('0x29')],function(_0x30ff89){if(_0x30ff89[_0x16ee('0x2b')]===_0x18e037['contactNumber']||_0x30ff89[_0x16ee('0x2c')]===_0x18e037[_0x16ee('0x28')]){return _0x30ff89;}});if(_0x1f7c1a){_0x18e037[_0x16ee('0x2d')]=_0x1f7c1a['id'];logger['info'](_0x16ee('0x2e'),_0x18e037[_0x16ee('0x2d')]);_0x3ed9c0(_0x18e037);}else{return createEndUser(_0x18e037,_0x3349a6,_0x93675d,_0x490195)[_0x16ee('0xe')](function(_0x39d75e){logger[_0x16ee('0xc')](_0x16ee('0x2f'),_0x18e037[_0x16ee('0x2d')]);_0x3ed9c0(_0x39d75e);});}}else{return createEndUser(_0x18e037,_0x3349a6,_0x93675d,_0x490195)['then'](function(_0x5b8b40){logger[_0x16ee('0xc')](_0x16ee('0x2f'),_0x18e037[_0x16ee('0x2d')]);_0x3ed9c0(_0x5b8b40);});}})[_0x16ee('0x14')](function(_0x3f2abf){throw new Error(_0x3f2abf[_0x16ee('0x17')]);});});};}function createEndUser(_0x4ef34e,_0x36a885,_0x5dfbf2,_0x3b2903){return new Promise(function(_0x2a461f,_0x3624a7){var _0x14b1b6=moment();var _0x539d21={'method':'POST','uri':_0x3b2903+_0x16ee('0x30'),'body':{'contact':{'last_name':_0x4ef34e[_0x16ee('0x28')],'work_number':_0x4ef34e[_0x16ee('0x28')],'mobile_number':_0x4ef34e[_0x16ee('0x28')],'owner_id':_0x4ef34e[_0x16ee('0x1f')],'created_at':_0x14b1b6[_0x16ee('0x31')](_0x16ee('0x32'))}},'json':!![]};_0x539d21[_0x16ee('0xb')]=_0x5dfbf2;logger[_0x16ee('0xc')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x539d21)[_0x16ee('0xe')](function(_0x3ec801){_0x4ef34e[_0x16ee('0x2d')]=_0x3ec801[_0x16ee('0x33')]['id'];_0x2a461f(_0x4ef34e);})[_0x16ee('0x14')](function(_0x1e41fb){logger[_0x16ee('0x15')]('['+[_0x36a885[_0x16ee('0x16')]()]+']',_0x1e41fb[_0x16ee('0x17')]);_0x3624a7(_0x1e41fb[_0x16ee('0x17')]);});});}function getTicket(_0xa9d056,_0x371c04,_0x256ed7,_0xf388cb,_0x41021b){return function(_0x42c2a3){logger[_0x16ee('0xc')]('Creating\x20new\x20task');return new Promise(function(_0x2a05d8,_0x4aa515){var _0x47bccf=moment();var _0xf082b9={'method':_0x16ee('0x34'),'uri':_0x256ed7+_0x16ee('0x35'),'body':{'title':intUtil[_0x16ee('0x36')](_0xf388cb[_0x16ee('0x37')],_0x41021b,'\x20'),'description':intUtil['getString'](_0xf388cb['Descriptions'],_0x41021b,'\x0a'),'owner_id':_0x42c2a3['userId'],'creater_id':_0x42c2a3[_0x16ee('0x38')],'targetable_id':_0x42c2a3[_0x16ee('0x2d')],'targetable_type':_0x16ee('0x39'),'created_at':_0x47bccf['format']('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x47bccf[_0x16ee('0x3a')](0x1e,'m')[_0x16ee('0x31')](_0x16ee('0x32'))},'json':!![]};_0xf082b9['headers']=_0x371c04;return rp(_0xf082b9)[_0x16ee('0xe')](function(_0x37369f){_0x42c2a3['ticketId']=_0x37369f['task']['id'];logger['info']('Task\x20created:',_0x42c2a3[_0x16ee('0x3b')]);_0x2a05d8(_0x42c2a3);})[_0x16ee('0x14')](function(_0x4153ba){logger[_0x16ee('0x15')]('['+[_0xa9d056[_0x16ee('0x16')]()]+']',_0x4153ba['message']);_0x4aa515(_0x4153ba[_0x16ee('0x17')]);});});};}function emit(_0x958dd4,_0xd2ac37,_0x493e89){var _0x186bac={'uri':_0x958dd4+_0x16ee('0x3c')+_0x493e89};io['to'](util['format']('user:%s',_0xd2ac37))['emit'](_0x16ee('0x3d'),_0x186bac);}exports['cs']=function(_0x22803d,_0x507cfd,_0x1087ef,_0x56d39f,_0xb03198,_0x21168f,_0x130d86,_0xe766a4){var _0x2eb756={};var _0xee0e67={'Authorization':_0x16ee('0x3e')+_0x21168f[_0x16ee('0x3f')]};_0x21168f[_0x16ee('0x40')]=intUtil[_0x16ee('0x41')](_0x21168f[_0x16ee('0x40')]);_0x21168f['serverUrl']=intUtil[_0x16ee('0x41')](_0x21168f[_0x16ee('0x42')]);var _0x4ed3b0=_0x21168f[_0x16ee('0x40')];_0x2eb756[_0x16ee('0x11')]=_0x21168f['username'];_0x2eb756['contactNumber']=_0xe766a4[_0x16ee('0x43')]()===_0x16ee('0x44')?_0x507cfd[_0x16ee('0x45')]:_0x507cfd[_0x16ee('0x46')];_0x2eb756[_0x16ee('0x47')]=_0xe766a4===_0x16ee('0x48')||_0xe766a4===_0x16ee('0x49')?_0x16ee('0x48'):'outbound';if(_0x56d39f){_0x2eb756[_0x16ee('0x1c')]=_0x56d39f[_0x16ee('0x1d')];}var _0x3df673=util[_0x16ee('0x31')](_0x16ee('0x4a'),_0x21168f['serverUrl'],_0x507cfd[_0x16ee('0x4b')],md5(_0x507cfd['uniqueid']));if(_0xb03198&&_0xb03198[_0x16ee('0x4c')]){logger[_0x16ee('0xc')](_0x16ee('0x4d'),_0x16ee('0x4e'));_0x507cfd[_0x16ee('0x4f')]=_0x3df673;}else if(_0x130d86&&_0x130d86['recordingFormat']&&_0x130d86[_0x16ee('0x50')]!==_0x16ee('0x51')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x507cfd[_0x16ee('0x4f')]=_0x3df673;}else{_0x507cfd[_0x16ee('0x4f')]='';}return getAdminId(_0x2eb756,_0xe766a4,_0xee0e67,_0x4ed3b0)['then'](getUser(_0xe766a4,_0xee0e67,_0x4ed3b0))[_0x16ee('0xe')](getEndUser(_0xe766a4,_0xee0e67,_0x4ed3b0))[_0x16ee('0xe')](getTicket(_0xe766a4,_0xee0e67,_0x4ed3b0,_0x1087ef,_0x507cfd))['then'](function(_0x537a7d){logger[_0x16ee('0xc')](util['format'](_0x16ee('0x52'),_0x537a7d[_0x16ee('0x3b')]));if(_0xe766a4!=='unmanaged'){logger[_0x16ee('0xc')]('['+[_0xe766a4[_0x16ee('0x16')]()]+']',_0x16ee('0x53'));emit(_0x4ed3b0,_0x56d39f['name'],_0x537a7d[_0x16ee('0x2d')]);}})['catch'](function(_0x3ccf12){logger[_0x16ee('0x15')]('['+[_0xe766a4[_0x16ee('0x16')]()]+_0x16ee('0x54'),util[_0x16ee('0x55')](_0x3ccf12,{'showHidden':!![],'depth':null}));});};