ada5da17932e2cfb04d3ccc4305626dea6a25e04
[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=['agentEmail','userEmail','userId','User\x20found:','catch','/api/lookup?q=','&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','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','adminId','Contact','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','serverUrl','remoteUri','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','md5','util','bluebird','ioredis','./util','../../../../config/logger','defaults','redis','localhost','GET','/api/selector/owners','headers','Getting\x20admin\x20information','users','length','email','adminEmail','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','then'];(function(_0x4e94bb,_0x4cd31c){var _0x2dfc12=function(_0x49243f){while(--_0x49243f){_0x4e94bb['push'](_0x4e94bb['shift']());}};_0x2dfc12(++_0x4cd31c);}(_0x11e5,0x8b));var _0x511e=function(_0x5ab3b4,_0x5ede5d){_0x5ab3b4=_0x5ab3b4-0x0;var _0x1a7c0c=_0x11e5[_0x5ab3b4];return _0x1a7c0c;};'use strict';var _=require(_0x511e('0x0'));var rp=require('request-promise');var md5=require(_0x511e('0x1'));var util=require(_0x511e('0x2'));var moment=require('moment');var Promise=require(_0x511e('0x3'));var Redis=require(_0x511e('0x4'));var intUtil=require(_0x511e('0x5'));var config=require('../../../../config/environment');var logger=require(_0x511e('0x6'))('freshsales');config['redis']=_[_0x511e('0x7')](config[_0x511e('0x8')],{'host':_0x511e('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0x3ebc4b,_0xf0ba86,_0x25deeb,_0x306694){return new Promise(function(_0x4449c4,_0x30269e){var _0x1596b3=![];var _0x50564b={'method':_0x511e('0xa'),'uri':_0x306694+_0x511e('0xb'),'json':!![]};_0x50564b[_0x511e('0xc')]=_0x25deeb;logger['info'](_0x511e('0xd'));return rp(_0x50564b)['then'](function(_0x4d041f){if(_0x4d041f){var _0x3deecc=_0x4d041f[_0x511e('0xe')];var _0x42679e=null;for(_0x42679e=0x0;_0x42679e<_0x3deecc[_0x511e('0xf')];_0x42679e++){if(_0x3deecc[_0x42679e][_0x511e('0x10')]===_0x3ebc4b[_0x511e('0x11')]){_0x3ebc4b['adminId']=_0x3deecc[_0x42679e]['id'];_0x1596b3=!![];}}if(_0x1596b3){logger[_0x511e('0x12')](_0x511e('0x13'),_0x3ebc4b['adminId']);_0x4449c4(_0x3ebc4b);}else{_0x30269e({'statusCode':0x194,'message':_0x511e('0x14')});}}else{_0x30269e({'statusCode':0x194,'message':_0x511e('0x14')});}})['catch'](function(_0xed773e){logger[_0x511e('0x15')]('['+[_0xf0ba86[_0x511e('0x16')]()]+']',_0xed773e[_0x511e('0x17')]);_0x30269e(_0xed773e);});});}function getUser(_0x5b6cd6,_0x3e0415,_0x2dd346){return function(_0x2e66b6){return new Promise(function(_0x577616,_0x26af67){var _0x5bd814={'method':_0x511e('0xa'),'uri':_0x2dd346+'/api/selector/owners','json':!![]};_0x5bd814['headers']=_0x3e0415;logger[_0x511e('0x12')]('Getting\x20user\x20list');return rp(_0x5bd814)[_0x511e('0x18')](function(_0x325278){if(_0x325278){var _0x211855=_0x325278[_0x511e('0xe')];var _0xd4df6f=![];var _0x3d3f46=null;if(_0x2e66b6[_0x511e('0x19')]!==null){logger[_0x511e('0x12')]('Getting\x20user\x20with\x20email',_0x2e66b6[_0x511e('0x19')]);_0x2e66b6[_0x511e('0x1a')]=_0x2e66b6[_0x511e('0x19')];for(_0x3d3f46=0x0;_0x3d3f46<_0x211855[_0x511e('0xf')];_0x3d3f46++){if(_0x211855[_0x3d3f46][_0x511e('0x10')]===_0x2e66b6[_0x511e('0x19')]){_0xd4df6f=!![];_0x2e66b6[_0x511e('0x1b')]=_0x211855[_0x3d3f46]['id'];logger[_0x511e('0x12')](_0x511e('0x1c'),_0x2e66b6[_0x511e('0x1b')]);}}}if(!_0xd4df6f){logger['info']('Admin\x20selected');_0x2e66b6[_0x511e('0x1a')]=_0x2e66b6['adminEmail'];_0x2e66b6[_0x511e('0x1b')]=_0x2e66b6['adminId'];_0xd4df6f=!![];}if(_0xd4df6f){_0x577616(_0x2e66b6);}else{_0x26af67({'statusCode':0x194,'message':_0x511e('0x14')});}}else{_0x26af67({'statusCode':0x194,'message':_0x511e('0x14')});}})[_0x511e('0x1d')](function(_0x1f8040){logger[_0x511e('0x15')]('['+[_0x5b6cd6[_0x511e('0x16')]()]+']',_0x1f8040[_0x511e('0x17')]);_0x26af67(_0x1f8040);});});};}function searchContact(_0x4d89a5,_0x309695,_0x2451c2,_0x5b72fe){return new Promise(function(_0x2930b2,_0x1d754d){var _0xb563f6={'method':_0x511e('0xa'),'headers':_0x309695,'uri':_0x4d89a5+_0x511e('0x1e')+_0x5b72fe+'&f='+_0x2451c2+_0x511e('0x1f'),'json':!![]};rp(_0xb563f6)['then'](function(_0x4f6844){var _0x262dde=_[_0x511e('0x20')](_0x4f6844[_0x511e('0x21')][_0x511e('0x21')],[_0x2451c2,_0x5b72fe]);_0x2930b2(_0x262dde);})[_0x511e('0x1d')](function(_0x4812d9){_0x1d754d(_0x4812d9);});});}function getEndUser(_0x2aa857,_0x2e6529,_0xf2a22){return function(_0x32be08){return new Promise(function(_0x43c95f,_0x4de0b7){logger[_0x511e('0x12')](util[_0x511e('0x22')](_0x511e('0x23'),_0x32be08[_0x511e('0x24')]));searchContact(_0xf2a22,_0x2e6529,_0x511e('0x25'),_0x32be08[_0x511e('0x24')])[_0x511e('0x18')](function(_0x1dc822){if(_0x1dc822){_0x32be08['endUserId']=_0x1dc822['id'];logger[_0x511e('0x12')](_0x511e('0x26'),_0x32be08[_0x511e('0x27')]);return _0x43c95f(_0x32be08);}searchContact(_0xf2a22,_0x2e6529,_0x511e('0x28'),_0x32be08['contactNumber'])['then'](function(_0x3f6dfc){if(_0x3f6dfc){_0x32be08['endUserId']=_0x3f6dfc['id'];logger['info'](_0x511e('0x29'),_0x32be08[_0x511e('0x27')]);return _0x43c95f(_0x32be08);}createEndUser(_0x32be08,_0x2aa857,_0x2e6529,_0xf2a22)[_0x511e('0x18')](function(_0x30898a){logger[_0x511e('0x12')]('Contact\x20created:',_0x30898a[_0x511e('0x27')]);return _0x43c95f(_0x30898a);});});})[_0x511e('0x1d')](function(_0x26fefa){_0x4de0b7(_0x26fefa);});});};}function createEndUser(_0x4a7a6c,_0x38841b,_0xbba7ce,_0x345ad3){return new Promise(function(_0x47938d,_0x2e62d0){var _0x2fd83d=moment();var _0x4f124f={'method':_0x511e('0x2a'),'uri':_0x345ad3+_0x511e('0x2b'),'body':{'contact':{'last_name':_0x4a7a6c[_0x511e('0x24')],'work_number':_0x4a7a6c[_0x511e('0x24')],'mobile_number':_0x4a7a6c[_0x511e('0x24')],'owner_id':_0x4a7a6c[_0x511e('0x1b')],'created_at':_0x2fd83d[_0x511e('0x22')](_0x511e('0x2c'))}},'json':!![]};_0x4f124f[_0x511e('0xc')]=_0xbba7ce;logger[_0x511e('0x12')](_0x511e('0x2d'));return rp(_0x4f124f)['then'](function(_0x4014b6){_0x4a7a6c['endUserId']=_0x4014b6['contact']['id'];_0x47938d(_0x4a7a6c);})[_0x511e('0x1d')](function(_0x59c0b3){logger['error']('['+[_0x38841b[_0x511e('0x16')]()]+']',_0x59c0b3[_0x511e('0x17')]);_0x2e62d0(_0x59c0b3[_0x511e('0x17')]);});});}function getTicket(_0x3d1e9d,_0x474500,_0x407ecb,_0x236077,_0x27a78a){return function(_0x215f1d){logger[_0x511e('0x12')](_0x511e('0x2e'));return new Promise(function(_0x17f95c,_0x4366e5){var _0x443908=moment();var _0x5086e0={'method':'POST','uri':_0x407ecb+_0x511e('0x2f'),'body':{'title':intUtil[_0x511e('0x30')](_0x236077[_0x511e('0x31')],_0x27a78a,'\x20'),'description':intUtil[_0x511e('0x30')](_0x236077[_0x511e('0x32')],_0x27a78a,'\x0a'),'owner_id':_0x215f1d['userId'],'creater_id':_0x215f1d[_0x511e('0x33')],'targetable_id':_0x215f1d[_0x511e('0x27')],'targetable_type':_0x511e('0x34'),'created_at':_0x443908['format']('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x443908['add'](0x1e,'m')[_0x511e('0x22')](_0x511e('0x2c'))},'json':!![]};_0x5086e0[_0x511e('0xc')]=_0x474500;return rp(_0x5086e0)['then'](function(_0x52ee90){_0x215f1d['ticketId']=_0x52ee90[_0x511e('0x35')]['id'];logger[_0x511e('0x12')](_0x511e('0x36'),_0x215f1d[_0x511e('0x37')]);_0x17f95c(_0x215f1d);})[_0x511e('0x1d')](function(_0x393e36){logger[_0x511e('0x15')]('['+[_0x3d1e9d[_0x511e('0x16')]()]+']',_0x393e36[_0x511e('0x17')]);_0x4366e5(_0x393e36[_0x511e('0x17')]);});});};}function emit(_0x1a2e4,_0x354f06,_0x19a6c8){var _0x411709={'uri':_0x1a2e4+_0x511e('0x38')+_0x19a6c8};io['to'](util[_0x511e('0x22')](_0x511e('0x39'),_0x354f06))[_0x511e('0x3a')](_0x511e('0x3b'),_0x411709);}exports['cs']=function(_0x2c2573,_0x2a00a5,_0x3269bb,_0x204783,_0x1cb4ba,_0x37bfdb,_0x4096c0,_0x3d6f6e){var _0x31e949={};var _0x3a4ad1={'Authorization':_0x511e('0x3c')+_0x37bfdb[_0x511e('0x3d')]};_0x37bfdb['remoteUri']=intUtil[_0x511e('0x3e')](_0x37bfdb['remoteUri']);_0x37bfdb[_0x511e('0x3f')]=intUtil[_0x511e('0x3e')](_0x37bfdb[_0x511e('0x3f')]);var _0x57aa33=_0x37bfdb[_0x511e('0x40')];_0x31e949[_0x511e('0x11')]=_0x37bfdb[_0x511e('0x41')];_0x31e949['contactNumber']=_0x3d6f6e[_0x511e('0x42')]()===_0x511e('0x43')?_0x2a00a5['destcalleridnum']:_0x2a00a5[_0x511e('0x44')];_0x31e949[_0x511e('0x45')]=_0x3d6f6e===_0x511e('0x46')||_0x3d6f6e===_0x511e('0x47')?'queue':_0x511e('0x43');if(_0x204783){_0x31e949['agentEmail']=_0x204783[_0x511e('0x10')];}var _0x467fcc=util[_0x511e('0x22')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x37bfdb[_0x511e('0x3f')],_0x2a00a5['uniqueid'],md5(_0x2a00a5[_0x511e('0x48')]));if(_0x1cb4ba&&_0x1cb4ba[_0x511e('0x49')]){logger[_0x511e('0x12')](_0x511e('0x4a'),_0x511e('0x4b'));_0x2a00a5['recordingURL']=_0x467fcc;}else if(_0x4096c0&&_0x4096c0[_0x511e('0x4c')]&&_0x4096c0[_0x511e('0x4c')]!==_0x511e('0x4d')){logger[_0x511e('0x12')](_0x511e('0x4e'),_0x511e('0x4b'));_0x2a00a5[_0x511e('0x4f')]=_0x467fcc;}else{_0x2a00a5[_0x511e('0x4f')]='';}return getAdminId(_0x31e949,_0x3d6f6e,_0x3a4ad1,_0x57aa33)['then'](getUser(_0x3d6f6e,_0x3a4ad1,_0x57aa33))[_0x511e('0x18')](getEndUser(_0x3d6f6e,_0x3a4ad1,_0x57aa33))[_0x511e('0x18')](getTicket(_0x3d6f6e,_0x3a4ad1,_0x57aa33,_0x3269bb,_0x2a00a5))['then'](function(_0x26bc84){logger[_0x511e('0x12')](util[_0x511e('0x22')](_0x511e('0x50'),_0x26bc84[_0x511e('0x37')]));if(_0x3d6f6e!==_0x511e('0x47')){logger['info']('['+[_0x3d6f6e[_0x511e('0x16')]()]+']',_0x511e('0x51'));emit(_0x57aa33,_0x204783['name'],_0x26bc84[_0x511e('0x27')]);}})['catch'](function(_0x22d48b){logger[_0x511e('0x15')]('['+[_0x3d6f6e['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x22d48b,{'showHidden':!![],'depth':null}));});};