edad12ba0a343c6d647dac9816b925df1cf89e08
[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 _0xbed3=['Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','queue','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','message','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','User\x20found:','userId','toUpperCase','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xbed3,0x1b1));var _0x3bed=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbed3[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x3bed('0x0'));var rp=require(_0x3bed('0x1'));var md5=require('md5');var util=require(_0x3bed('0x2'));var moment=require(_0x3bed('0x3'));var Promise=require(_0x3bed('0x4'));var Redis=require(_0x3bed('0x5'));var intUtil=require(_0x3bed('0x6'));var config=require(_0x3bed('0x7'));var logger=require(_0x3bed('0x8'))(_0x3bed('0x9'));config['redis']=_[_0x3bed('0xa')](config[_0x3bed('0xb')],{'host':_0x3bed('0xc'),'port':0x18eb});var io=require(_0x3bed('0xd'))(new Redis(config['redis']));function getAdminId(_0x20b9d9,_0x1220e2,_0x5bbcea,_0x4e8cd7){return new Promise(function(_0x305dac,_0x151102){var _0x433808=![];var _0x217ac3={'method':_0x3bed('0xe'),'uri':_0x4e8cd7+_0x3bed('0xf'),'json':!![]};_0x217ac3[_0x3bed('0x10')]=_0x5bbcea;logger[_0x3bed('0x11')](_0x3bed('0x12'));return rp(_0x217ac3)[_0x3bed('0x13')](function(_0x243dfe){if(_0x243dfe){var _0x487ce1=_0x243dfe['users'];var _0x3b4943=null;for(_0x3b4943=0x0;_0x3b4943<_0x487ce1[_0x3bed('0x14')];_0x3b4943++){if(_0x487ce1[_0x3b4943]['email']===_0x20b9d9[_0x3bed('0x15')]){_0x20b9d9[_0x3bed('0x16')]=_0x487ce1[_0x3b4943]['id'];_0x433808=!![];}}if(_0x433808){logger['info'](_0x3bed('0x17'),_0x20b9d9[_0x3bed('0x16')]);_0x305dac(_0x20b9d9);}else{_0x151102({'statusCode':0x194,'message':_0x3bed('0x18')});}}else{_0x151102({'statusCode':0x194,'message':_0x3bed('0x18')});}})[_0x3bed('0x19')](function(_0x209f09){logger[_0x3bed('0x1a')]('['+[_0x1220e2['toUpperCase']()]+']',_0x209f09[_0x3bed('0x1b')]);_0x151102(_0x209f09);});});}function getUser(_0xa1ddb0,_0x57e01b,_0x2c627c){return function(_0x170667){return new Promise(function(_0x4067e0,_0xb82bae){var _0x2dffc6={'method':_0x3bed('0xe'),'uri':_0x2c627c+_0x3bed('0xf'),'json':!![]};_0x2dffc6[_0x3bed('0x10')]=_0x57e01b;logger[_0x3bed('0x11')](_0x3bed('0x1c'));return rp(_0x2dffc6)['then'](function(_0x2f6b2d){if(_0x2f6b2d){var _0x88412=_0x2f6b2d['users'];var _0x161a1a=![];var _0x37c731=null;if(_0x170667['agentEmail']!==null){logger[_0x3bed('0x11')](_0x3bed('0x1d'),_0x170667[_0x3bed('0x1e')]);_0x170667[_0x3bed('0x1f')]=_0x170667[_0x3bed('0x1e')];for(_0x37c731=0x0;_0x37c731<_0x88412[_0x3bed('0x14')];_0x37c731++){if(_0x88412[_0x37c731]['email']===_0x170667[_0x3bed('0x1e')]){_0x161a1a=!![];_0x170667['userId']=_0x88412[_0x37c731]['id'];logger[_0x3bed('0x11')](_0x3bed('0x20'),_0x170667[_0x3bed('0x21')]);}}}if(!_0x161a1a){logger['info']('Admin\x20selected');_0x170667['userEmail']=_0x170667['adminEmail'];_0x170667[_0x3bed('0x21')]=_0x170667['adminId'];_0x161a1a=!![];}if(_0x161a1a){_0x4067e0(_0x170667);}else{_0xb82bae({'statusCode':0x194,'message':_0x3bed('0x18')});}}else{_0xb82bae({'statusCode':0x194,'message':_0x3bed('0x18')});}})[_0x3bed('0x19')](function(_0x26e8fe){logger[_0x3bed('0x1a')]('['+[_0xa1ddb0[_0x3bed('0x22')]()]+']',_0x26e8fe[_0x3bed('0x1b')]);_0xb82bae(_0x26e8fe);});});};}function searchContact(_0x214bc3,_0x2349f3,_0x4851b9,_0x55efdb){return new Promise(function(_0x1f9512,_0x4eb662){var _0x555851={'method':_0x3bed('0xe'),'headers':_0x2349f3,'uri':_0x214bc3+_0x3bed('0x23')+_0x55efdb+_0x3bed('0x24')+_0x4851b9+_0x3bed('0x25'),'json':!![]};rp(_0x555851)[_0x3bed('0x13')](function(_0x339c46){var _0xa1eb4a=_['find'](_0x339c46[_0x3bed('0x26')][_0x3bed('0x26')],[_0x4851b9,_0x55efdb]);_0x1f9512(_0xa1eb4a);})[_0x3bed('0x19')](function(_0x4f8a5f){_0x4eb662(_0x4f8a5f);});});}function getEndUser(_0x4fa97a,_0x38c4af,_0x2dd0c2){return function(_0x174051){return new Promise(function(_0xd9ea50,_0x2e3976){logger[_0x3bed('0x11')](util[_0x3bed('0x27')](_0x3bed('0x28'),_0x174051['contactNumber']));searchContact(_0x2dd0c2,_0x38c4af,'mobile_number',_0x174051[_0x3bed('0x29')])[_0x3bed('0x13')](function(_0x5e2e63){if(_0x5e2e63){_0x174051[_0x3bed('0x2a')]=_0x5e2e63['id'];logger[_0x3bed('0x11')](_0x3bed('0x2b'),_0x174051[_0x3bed('0x2a')]);return _0xd9ea50(_0x174051);}searchContact(_0x2dd0c2,_0x38c4af,_0x3bed('0x2c'),_0x174051[_0x3bed('0x29')])[_0x3bed('0x13')](function(_0x94542a){if(_0x94542a){_0x174051['endUserId']=_0x94542a['id'];logger[_0x3bed('0x11')](_0x3bed('0x2d'),_0x174051[_0x3bed('0x2a')]);return _0xd9ea50(_0x174051);}createEndUser(_0x174051,_0x4fa97a,_0x38c4af,_0x2dd0c2)[_0x3bed('0x13')](function(_0x48999f){logger[_0x3bed('0x11')](_0x3bed('0x2e'),_0x48999f['endUserId']);return _0xd9ea50(_0x48999f);});});})[_0x3bed('0x19')](function(_0x3a572b){_0x2e3976(_0x3a572b);});});};}function createEndUser(_0x4cb80f,_0x1c970a,_0x57810b,_0xcd5ad0){return new Promise(function(_0x51e3ac,_0x38b904){var _0x41c81a=moment();var _0x5c2328={'method':_0x3bed('0x2f'),'uri':_0xcd5ad0+_0x3bed('0x30'),'body':{'contact':{'last_name':_0x4cb80f[_0x3bed('0x29')],'work_number':_0x4cb80f[_0x3bed('0x29')],'mobile_number':_0x4cb80f[_0x3bed('0x29')],'owner_id':_0x4cb80f[_0x3bed('0x21')],'created_at':_0x41c81a[_0x3bed('0x27')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5c2328[_0x3bed('0x10')]=_0x57810b;logger[_0x3bed('0x11')](_0x3bed('0x31'));return rp(_0x5c2328)['then'](function(_0x11bc2c){_0x4cb80f[_0x3bed('0x2a')]=_0x11bc2c['contact']['id'];_0x51e3ac(_0x4cb80f);})[_0x3bed('0x19')](function(_0x1a2e0f){logger[_0x3bed('0x1a')]('['+[_0x1c970a[_0x3bed('0x22')]()]+']',_0x1a2e0f[_0x3bed('0x1b')]);_0x38b904(_0x1a2e0f[_0x3bed('0x1b')]);});});}function getTicket(_0x4a2245,_0x44b4a6,_0x7d875b,_0x2956bd,_0x5e24b7){return function(_0xb912eb){logger[_0x3bed('0x11')](_0x3bed('0x32'));return new Promise(function(_0x2e8233,_0x242d70){var _0x325e4b=moment();var _0x5d92c0={'method':_0x3bed('0x2f'),'uri':_0x7d875b+_0x3bed('0x33'),'body':{'title':intUtil[_0x3bed('0x34')](_0x2956bd[_0x3bed('0x35')],_0x5e24b7,'\x20'),'description':intUtil[_0x3bed('0x34')](_0x2956bd[_0x3bed('0x36')],_0x5e24b7,'\x0a'),'owner_id':_0xb912eb[_0x3bed('0x21')],'creater_id':_0xb912eb['adminId'],'targetable_id':_0xb912eb[_0x3bed('0x2a')],'targetable_type':_0x3bed('0x37'),'created_at':_0x325e4b[_0x3bed('0x27')](_0x3bed('0x38')),'due_date':_0x325e4b[_0x3bed('0x39')](0x1e,'m')[_0x3bed('0x27')](_0x3bed('0x38'))},'json':!![]};_0x5d92c0[_0x3bed('0x10')]=_0x44b4a6;return rp(_0x5d92c0)[_0x3bed('0x13')](function(_0x3f4517){_0xb912eb[_0x3bed('0x3a')]=_0x3f4517['task']['id'];logger[_0x3bed('0x11')]('Task\x20created:',_0xb912eb[_0x3bed('0x3a')]);_0x2e8233(_0xb912eb);})[_0x3bed('0x19')](function(_0x435389){logger[_0x3bed('0x1a')]('['+[_0x4a2245['toUpperCase']()]+']',_0x435389['message']);_0x242d70(_0x435389[_0x3bed('0x1b')]);});});};}function emit(_0x5b715b,_0x146b0a,_0x6911d9){var _0x4ba9fa={'uri':_0x5b715b+'/contacts/'+_0x6911d9};io['to'](util[_0x3bed('0x27')]('user:%s',_0x146b0a))[_0x3bed('0x3b')]('trigger:browser:url',_0x4ba9fa);}exports['cs']=function(_0x56c7db,_0x3e8652,_0x4160e8,_0x1af5b6,_0x5a8ed6,_0x4b9d63,_0x2431d7,_0x526ad4){var _0x4717b8={};var _0x97d61d={'Authorization':_0x3bed('0x3c')+_0x4b9d63[_0x3bed('0x3d')]};_0x4b9d63[_0x3bed('0x3e')]=intUtil[_0x3bed('0x3f')](_0x4b9d63['remoteUri']);_0x4b9d63[_0x3bed('0x40')]=intUtil[_0x3bed('0x3f')](_0x4b9d63[_0x3bed('0x40')]);var _0x23d753=_0x4b9d63['remoteUri'];_0x4717b8['adminEmail']=_0x4b9d63[_0x3bed('0x41')];_0x4717b8[_0x3bed('0x29')]=_0x526ad4[_0x3bed('0x42')]()===_0x3bed('0x43')?_0x3e8652[_0x3bed('0x44')]:_0x3e8652[_0x3bed('0x45')];_0x4717b8['callDirection']=_0x526ad4==='queue'||_0x526ad4==='unmanaged'?_0x3bed('0x46'):_0x3bed('0x43');if(_0x1af5b6){_0x4717b8[_0x3bed('0x1e')]=_0x1af5b6['email'];}var _0x40cf14=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4b9d63[_0x3bed('0x40')],_0x3e8652[_0x3bed('0x47')],md5(_0x3e8652[_0x3bed('0x47')]));if(_0x5a8ed6&&_0x5a8ed6[_0x3bed('0x48')]){logger[_0x3bed('0x11')]('[QUEUE]',_0x3bed('0x49'));_0x3e8652[_0x3bed('0x4a')]=_0x40cf14;}else if(_0x2431d7&&_0x2431d7[_0x3bed('0x4b')]&&_0x2431d7[_0x3bed('0x4b')]!==_0x3bed('0x4c')){logger[_0x3bed('0x11')]('[OUTBOUND]',_0x3bed('0x49'));_0x3e8652['recordingURL']=_0x40cf14;}else{_0x3e8652['recordingURL']='';}return getAdminId(_0x4717b8,_0x526ad4,_0x97d61d,_0x23d753)[_0x3bed('0x13')](getUser(_0x526ad4,_0x97d61d,_0x23d753))['then'](getEndUser(_0x526ad4,_0x97d61d,_0x23d753))[_0x3bed('0x13')](getTicket(_0x526ad4,_0x97d61d,_0x23d753,_0x4160e8,_0x3e8652))[_0x3bed('0x13')](function(_0x3226f8){logger[_0x3bed('0x11')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x3226f8[_0x3bed('0x3a')]));if(_0x526ad4!==_0x3bed('0x4d')){logger[_0x3bed('0x11')]('['+[_0x526ad4[_0x3bed('0x22')]()]+']',_0x3bed('0x4e'));emit(_0x23d753,_0x1af5b6[_0x3bed('0x4f')],_0x3226f8[_0x3bed('0x2a')]);}})[_0x3bed('0x19')](function(_0x5dafcd){logger[_0x3bed('0x1a')]('['+[_0x526ad4['toUpperCase']()]+_0x3bed('0x50'),util['inspect'](_0x5dafcd,{'showHidden':!![],'depth':null}));});};