51be124538633795cd77d531fef5f2a6326a67ff
[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 _0x4b5e=['queue','abandoned','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','ioredis','./util','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','GET','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','/api/contacts/filters','Getting\x20contacts\x20filter','filters','forEach','name','All\x20Contacts','/api/contacts/view/','find','contacts','contactNumber','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','format','add','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection'];(function(_0x21a173,_0x1f6b9a){var _0x244d96=function(_0x2aea9f){while(--_0x2aea9f){_0x21a173['push'](_0x21a173['shift']());}};_0x244d96(++_0x1f6b9a);}(_0x4b5e,0xb9));var _0xe4b5=function(_0x49d5f4,_0x569404){_0x49d5f4=_0x49d5f4-0x0;var _0x392bc0=_0x4b5e[_0x49d5f4];return _0x392bc0;};'use strict';var _=require(_0xe4b5('0x0'));var rp=require('request-promise');var md5=require(_0xe4b5('0x1'));var util=require(_0xe4b5('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0xe4b5('0x3'));var intUtil=require(_0xe4b5('0x4'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('freshsales');config[_0xe4b5('0x5')]=_[_0xe4b5('0x6')](config[_0xe4b5('0x5')],{'host':_0xe4b5('0x7'),'port':0x18eb});var io=require(_0xe4b5('0x8'))(new Redis(config[_0xe4b5('0x5')]));function getAdminId(_0x14afbe,_0x54c751,_0x535d40,_0x5babf7){return new Promise(function(_0x32f61d,_0x28e399){var _0x3d84e7=![];var _0x3114a1={'method':'GET','uri':_0x5babf7+_0xe4b5('0x9'),'json':!![]};_0x3114a1[_0xe4b5('0xa')]=_0x535d40;logger[_0xe4b5('0xb')](_0xe4b5('0xc'));return rp(_0x3114a1)[_0xe4b5('0xd')](function(_0x13b66c){if(_0x13b66c){var _0x4db1ec=_0x13b66c[_0xe4b5('0xe')];var _0xd0ba51=null;for(_0xd0ba51=0x0;_0xd0ba51<_0x4db1ec[_0xe4b5('0xf')];_0xd0ba51++){if(_0x4db1ec[_0xd0ba51][_0xe4b5('0x10')]===_0x14afbe[_0xe4b5('0x11')]){_0x14afbe[_0xe4b5('0x12')]=_0x4db1ec[_0xd0ba51]['id'];_0x3d84e7=!![];}}if(_0x3d84e7){logger[_0xe4b5('0xb')](_0xe4b5('0x13'),_0x14afbe[_0xe4b5('0x12')]);_0x32f61d(_0x14afbe);}else{_0x28e399({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x28e399({'statusCode':0x194,'message':_0xe4b5('0x14')});}})[_0xe4b5('0x15')](function(_0x38ff6a){logger[_0xe4b5('0x16')]('['+[_0x54c751[_0xe4b5('0x17')]()]+']',_0x38ff6a[_0xe4b5('0x18')]);_0x28e399(_0x38ff6a);});});}function getUser(_0x4768c5,_0x32fc35,_0x1b3868){return function(_0x383425){return new Promise(function(_0x288f04,_0x2e9b72){var _0x4c2c08={'method':_0xe4b5('0x19'),'uri':_0x1b3868+_0xe4b5('0x9'),'json':!![]};_0x4c2c08['headers']=_0x32fc35;logger[_0xe4b5('0xb')](_0xe4b5('0x1a'));return rp(_0x4c2c08)['then'](function(_0x4e66db){if(_0x4e66db){var _0x57d3fc=_0x4e66db['users'];var _0x1de8e4=![];var _0x4eb07a=null;if(_0x383425[_0xe4b5('0x1b')]!==null){logger[_0xe4b5('0xb')](_0xe4b5('0x1c'),_0x383425[_0xe4b5('0x1b')]);_0x383425[_0xe4b5('0x1d')]=_0x383425[_0xe4b5('0x1b')];for(_0x4eb07a=0x0;_0x4eb07a<_0x57d3fc[_0xe4b5('0xf')];_0x4eb07a++){if(_0x57d3fc[_0x4eb07a][_0xe4b5('0x10')]===_0x383425[_0xe4b5('0x1b')]){_0x1de8e4=!![];_0x383425[_0xe4b5('0x1e')]=_0x57d3fc[_0x4eb07a]['id'];logger['info'](_0xe4b5('0x1f'),_0x383425[_0xe4b5('0x1e')]);}}}if(!_0x1de8e4){logger['info'](_0xe4b5('0x20'));_0x383425[_0xe4b5('0x1d')]=_0x383425[_0xe4b5('0x11')];_0x383425[_0xe4b5('0x1e')]=_0x383425[_0xe4b5('0x12')];_0x1de8e4=!![];}if(_0x1de8e4){_0x288f04(_0x383425);}else{_0x2e9b72({'statusCode':0x194,'message':_0xe4b5('0x14')});}}else{_0x2e9b72({'statusCode':0x194,'message':_0xe4b5('0x14')});}})['catch'](function(_0x388403){logger[_0xe4b5('0x16')]('['+[_0x4768c5['toUpperCase']()]+']',_0x388403['message']);_0x2e9b72(_0x388403);});});};}function getEndUser(_0x4ff445,_0x3a292b,_0xc9ec50){return function(_0x3636bf){return new Promise(function(_0x1ae31b,_0x465a59){var _0x340f33=0x0;var _0xed3755={'method':_0xe4b5('0x19'),'uri':_0xc9ec50+_0xe4b5('0x21'),'json':!![]};_0xed3755['headers']=_0x3a292b;logger[_0xe4b5('0xb')](_0xe4b5('0x22'));return rp(_0xed3755)['then'](function(_0x5b2a37){_0x5b2a37[_0xe4b5('0x23')][_0xe4b5('0x24')](function(_0x194a33){if(_0x194a33[_0xe4b5('0x25')]===_0xe4b5('0x26')){_0x340f33=_0x194a33['id'];}});})[_0xe4b5('0xd')](function(){logger[_0xe4b5('0xb')]('Getting\x20contact\x20list');var _0x4454a8={'method':_0xe4b5('0x19'),'uri':_0xc9ec50+_0xe4b5('0x27')+_0x340f33,'json':!![]};_0x4454a8[_0xe4b5('0xa')]=_0x3a292b;return rp(_0x4454a8);})[_0xe4b5('0xd')](function(_0xa52f86){logger['info']('Searching\x20contact\x20with\x20phone',_0x3636bf['contactNumber']);if(_0xa52f86['contacts'][_0xe4b5('0xf')]>0x0){var _0x29af1d=_[_0xe4b5('0x28')](_0xa52f86[_0xe4b5('0x29')],function(_0x1d5dbe){if(_0x1d5dbe['work_number']===_0x3636bf[_0xe4b5('0x2a')]||_0x1d5dbe[_0xe4b5('0x2b')]===_0x3636bf['contactNumber']){return _0x1d5dbe;}});if(_0x29af1d){_0x3636bf[_0xe4b5('0x2c')]=_0x29af1d['id'];logger[_0xe4b5('0xb')](_0xe4b5('0x2d'),_0x3636bf['endUserId']);_0x1ae31b(_0x3636bf);}else{return createEndUser(_0x3636bf,_0x4ff445,_0x3a292b,_0xc9ec50)['then'](function(_0x368043){logger[_0xe4b5('0xb')](_0xe4b5('0x2e'),_0x3636bf[_0xe4b5('0x2c')]);_0x1ae31b(_0x368043);});}}else{return createEndUser(_0x3636bf,_0x4ff445,_0x3a292b,_0xc9ec50)[_0xe4b5('0xd')](function(_0x26b833){logger[_0xe4b5('0xb')](_0xe4b5('0x2e'),_0x3636bf['endUserId']);_0x1ae31b(_0x26b833);});}})[_0xe4b5('0x15')](function(_0x3fd993){throw new Error(_0x3fd993[_0xe4b5('0x18')]);});});};}function createEndUser(_0x2ee3b5,_0x54fcbe,_0x15f77f,_0x2e5cde){return new Promise(function(_0x568907,_0x436b70){var _0x32a068=moment();var _0x26261c={'method':_0xe4b5('0x2f'),'uri':_0x2e5cde+'/api/contacts','body':{'contact':{'last_name':_0x2ee3b5[_0xe4b5('0x2a')],'work_number':_0x2ee3b5['contactNumber'],'mobile_number':_0x2ee3b5[_0xe4b5('0x2a')],'owner_id':_0x2ee3b5['userId'],'created_at':_0x32a068['format'](_0xe4b5('0x30'))}},'json':!![]};_0x26261c['headers']=_0x15f77f;logger[_0xe4b5('0xb')](_0xe4b5('0x31'));return rp(_0x26261c)[_0xe4b5('0xd')](function(_0xbec8b){_0x2ee3b5['endUserId']=_0xbec8b[_0xe4b5('0x32')]['id'];_0x568907(_0x2ee3b5);})['catch'](function(_0x421122){logger[_0xe4b5('0x16')]('['+[_0x54fcbe[_0xe4b5('0x17')]()]+']',_0x421122['message']);_0x436b70(_0x421122[_0xe4b5('0x18')]);});});}function getTicket(_0x78bd4d,_0x29d479,_0x56d986,_0x56698f,_0x2dceff){return function(_0x435f14){logger['info'](_0xe4b5('0x33'));return new Promise(function(_0x11e00e,_0x10e0c9){var _0x41438e=moment();var _0x3c1e4d={'method':_0xe4b5('0x2f'),'uri':_0x56d986+_0xe4b5('0x34'),'body':{'title':intUtil[_0xe4b5('0x35')](_0x56698f[_0xe4b5('0x36')],_0x2dceff,'\x20'),'description':intUtil['getString'](_0x56698f[_0xe4b5('0x37')],_0x2dceff,'\x0a'),'owner_id':_0x435f14[_0xe4b5('0x1e')],'creater_id':_0x435f14[_0xe4b5('0x12')],'targetable_id':_0x435f14[_0xe4b5('0x2c')],'targetable_type':'Contact','created_at':_0x41438e[_0xe4b5('0x38')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x41438e[_0xe4b5('0x39')](0x1e,'m')['format'](_0xe4b5('0x30'))},'json':!![]};_0x3c1e4d['headers']=_0x29d479;return rp(_0x3c1e4d)[_0xe4b5('0xd')](function(_0x40b5ac){_0x435f14['ticketId']=_0x40b5ac['task']['id'];logger[_0xe4b5('0xb')]('Task\x20created:',_0x435f14[_0xe4b5('0x3a')]);_0x11e00e(_0x435f14);})[_0xe4b5('0x15')](function(_0x100101){logger[_0xe4b5('0x16')]('['+[_0x78bd4d['toUpperCase']()]+']',_0x100101[_0xe4b5('0x18')]);_0x10e0c9(_0x100101[_0xe4b5('0x18')]);});});};}function emit(_0x3b0def,_0x5f3863,_0x5c33fb){var _0x19d226={'uri':_0x3b0def+_0xe4b5('0x3b')+_0x5c33fb};io['to'](util[_0xe4b5('0x38')](_0xe4b5('0x3c'),_0x5f3863))[_0xe4b5('0x3d')](_0xe4b5('0x3e'),_0x19d226);}exports['cs']=function(_0x88718f,_0x125581,_0x1878ee,_0x493e06,_0x3edc15,_0x45acbb,_0xd43253,_0x1fae2f){var _0x427211={};var _0x3ffc9a={'Authorization':_0xe4b5('0x3f')+_0x45acbb[_0xe4b5('0x40')]};_0x45acbb[_0xe4b5('0x41')]=intUtil['stripTrailingSlash'](_0x45acbb['remoteUri']);_0x45acbb['serverUrl']=intUtil[_0xe4b5('0x42')](_0x45acbb[_0xe4b5('0x43')]);var _0x48630a=_0x45acbb[_0xe4b5('0x41')];_0x427211[_0xe4b5('0x11')]=_0x45acbb[_0xe4b5('0x44')];_0x427211[_0xe4b5('0x2a')]=_0x1fae2f[_0xe4b5('0x45')]()===_0xe4b5('0x46')?_0x125581[_0xe4b5('0x47')]:_0x125581['calleridnum'];_0x427211[_0xe4b5('0x48')]=_0x1fae2f===_0xe4b5('0x49')||_0x1fae2f===_0xe4b5('0x4a')?'queue':_0xe4b5('0x46');if(_0x493e06){_0x427211[_0xe4b5('0x1b')]=_0x493e06[_0xe4b5('0x10')];}var _0x40d7c0=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x45acbb[_0xe4b5('0x43')],_0x125581['uniqueid'],md5(_0x125581[_0xe4b5('0x4b')]));if(_0x3edc15&&_0x3edc15[_0xe4b5('0x4c')]){logger[_0xe4b5('0xb')](_0xe4b5('0x4d'),_0xe4b5('0x4e'));_0x125581[_0xe4b5('0x4f')]=_0x40d7c0;}else if(_0xd43253&&_0xd43253['recordingFormat']&&_0xd43253['recordingFormat']!==_0xe4b5('0x50')){logger[_0xe4b5('0xb')](_0xe4b5('0x51'),_0xe4b5('0x4e'));_0x125581['recordingURL']=_0x40d7c0;}else{_0x125581[_0xe4b5('0x4f')]='';}return getAdminId(_0x427211,_0x1fae2f,_0x3ffc9a,_0x48630a)['then'](getUser(_0x1fae2f,_0x3ffc9a,_0x48630a))['then'](getEndUser(_0x1fae2f,_0x3ffc9a,_0x48630a))['then'](getTicket(_0x1fae2f,_0x3ffc9a,_0x48630a,_0x1878ee,_0x125581))[_0xe4b5('0xd')](function(_0x27b902){logger[_0xe4b5('0xb')](util[_0xe4b5('0x38')](_0xe4b5('0x52'),_0x27b902['ticketId']));if(_0x1fae2f!==_0xe4b5('0x4a')){logger['info']('['+[_0x1fae2f[_0xe4b5('0x17')]()]+']',_0xe4b5('0x53'));emit(_0x48630a,_0x493e06[_0xe4b5('0x25')],_0x27b902['endUserId']);}})[_0xe4b5('0x15')](function(_0x382461){logger['error']('['+[_0x1fae2f[_0xe4b5('0x17')]()]+_0xe4b5('0x54'),util[_0xe4b5('0x55')](_0x382461,{'showHidden':!![],'depth':null}));});};