cc38bb1ea9ee5eac6040171630528001ec984cdf
[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 _0x46e1=['util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','Getting\x20admin\x20information','then','users','length','email','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','agentEmail','Getting\x20user\x20with\x20email','userId','Admin\x20selected','userEmail','adminEmail','/api/lookup?q=','&f=','&entities=contact','find','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','contactNumber','Contact\x20found\x20work_number:','POST','/api/contacts','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Subjects','getString','Contact','YYYY-MM-DDTHH:mm:ss','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','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','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','md5'];(function(_0x3259ec,_0x1a51fc){var _0x5ecb08=function(_0x569d3c){while(--_0x569d3c){_0x3259ec['push'](_0x3259ec['shift']());}};_0x5ecb08(++_0x1a51fc);}(_0x46e1,0x155));var _0x146e=function(_0x202d47,_0x5cb86d){_0x202d47=_0x202d47-0x0;var _0x5041c8=_0x46e1[_0x202d47];return _0x5041c8;};'use strict';var _=require(_0x146e('0x0'));var rp=require(_0x146e('0x1'));var md5=require(_0x146e('0x2'));var util=require(_0x146e('0x3'));var moment=require(_0x146e('0x4'));var Promise=require(_0x146e('0x5'));var Redis=require(_0x146e('0x6'));var intUtil=require(_0x146e('0x7'));var config=require(_0x146e('0x8'));var logger=require(_0x146e('0x9'))('freshsales');config[_0x146e('0xa')]=_[_0x146e('0xb')](config[_0x146e('0xa')],{'host':_0x146e('0xc'),'port':0x18eb});var io=require(_0x146e('0xd'))(new Redis(config[_0x146e('0xa')]));function getAdminId(_0x1c1398,_0x5f33c0,_0x4a6929,_0x4c15f9){return new Promise(function(_0x36f843,_0xf7d20d){var _0xcf7c1e=![];var _0x453b5a={'method':_0x146e('0xe'),'uri':_0x4c15f9+_0x146e('0xf'),'json':!![]};_0x453b5a['headers']=_0x4a6929;logger['info'](_0x146e('0x10'));return rp(_0x453b5a)[_0x146e('0x11')](function(_0x29d111){if(_0x29d111){var _0x1a567a=_0x29d111[_0x146e('0x12')];var _0x1ab0aa=null;for(_0x1ab0aa=0x0;_0x1ab0aa<_0x1a567a[_0x146e('0x13')];_0x1ab0aa++){if(_0x1a567a[_0x1ab0aa][_0x146e('0x14')]===_0x1c1398['adminEmail']){_0x1c1398['adminId']=_0x1a567a[_0x1ab0aa]['id'];_0xcf7c1e=!![];}}if(_0xcf7c1e){logger[_0x146e('0x15')](_0x146e('0x16'),_0x1c1398[_0x146e('0x17')]);_0x36f843(_0x1c1398);}else{_0xf7d20d({'statusCode':0x194,'message':_0x146e('0x18')});}}else{_0xf7d20d({'statusCode':0x194,'message':_0x146e('0x18')});}})[_0x146e('0x19')](function(_0x469b94){logger[_0x146e('0x1a')]('['+[_0x5f33c0[_0x146e('0x1b')]()]+']',_0x469b94[_0x146e('0x1c')]);_0xf7d20d(_0x469b94);});});}function getUser(_0x39e41f,_0x55fddc,_0xcfd5f6){return function(_0x1a8a20){return new Promise(function(_0x3f77d3,_0x88e062){var _0x2286f6={'method':_0x146e('0xe'),'uri':_0xcfd5f6+_0x146e('0xf'),'json':!![]};_0x2286f6['headers']=_0x55fddc;logger[_0x146e('0x15')]('Getting\x20user\x20list');return rp(_0x2286f6)[_0x146e('0x11')](function(_0x1779cc){if(_0x1779cc){var _0x387323=_0x1779cc['users'];var _0x45ff0c=![];var _0x559f54=null;if(_0x1a8a20[_0x146e('0x1d')]!==null){logger['info'](_0x146e('0x1e'),_0x1a8a20[_0x146e('0x1d')]);_0x1a8a20['userEmail']=_0x1a8a20['agentEmail'];for(_0x559f54=0x0;_0x559f54<_0x387323['length'];_0x559f54++){if(_0x387323[_0x559f54]['email']===_0x1a8a20['agentEmail']){_0x45ff0c=!![];_0x1a8a20['userId']=_0x387323[_0x559f54]['id'];logger[_0x146e('0x15')]('User\x20found:',_0x1a8a20[_0x146e('0x1f')]);}}}if(!_0x45ff0c){logger[_0x146e('0x15')](_0x146e('0x20'));_0x1a8a20[_0x146e('0x21')]=_0x1a8a20[_0x146e('0x22')];_0x1a8a20[_0x146e('0x1f')]=_0x1a8a20[_0x146e('0x17')];_0x45ff0c=!![];}if(_0x45ff0c){_0x3f77d3(_0x1a8a20);}else{_0x88e062({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x88e062({'statusCode':0x194,'message':_0x146e('0x18')});}})['catch'](function(_0x2a31b8){logger['error']('['+[_0x39e41f['toUpperCase']()]+']',_0x2a31b8[_0x146e('0x1c')]);_0x88e062(_0x2a31b8);});});};}function searchContact(_0x486c6a,_0x402faf,_0x43e3b5,_0x235a55){return new Promise(function(_0x209d5b,_0x3a0bf3){var _0x5bd280={'method':_0x146e('0xe'),'headers':_0x402faf,'uri':_0x486c6a+_0x146e('0x23')+_0x235a55+_0x146e('0x24')+_0x43e3b5+_0x146e('0x25'),'json':!![]};rp(_0x5bd280)[_0x146e('0x11')](function(_0x312fee){var _0x2d95c6=_[_0x146e('0x26')](_0x312fee['contacts']['contacts'],[_0x43e3b5,_0x235a55]);_0x209d5b(_0x2d95c6);})[_0x146e('0x19')](function(_0x5f0c5c){_0x3a0bf3(_0x5f0c5c);});});}function getEndUser(_0x6ba709,_0x5345fb,_0x52b279){return function(_0x33ded4){return new Promise(function(_0x1ed5c7,_0x32b23c){logger[_0x146e('0x15')](util[_0x146e('0x27')](_0x146e('0x28'),_0x33ded4['contactNumber']));searchContact(_0x52b279,_0x5345fb,_0x146e('0x29'),_0x33ded4['contactNumber'])[_0x146e('0x11')](function(_0x5ea880){if(_0x5ea880){_0x33ded4[_0x146e('0x2a')]=_0x5ea880['id'];logger[_0x146e('0x15')](_0x146e('0x2b'),_0x33ded4['endUserId']);return _0x1ed5c7(_0x33ded4);}searchContact(_0x52b279,_0x5345fb,_0x146e('0x2c'),_0x33ded4[_0x146e('0x2d')])['then'](function(_0x781123){if(_0x781123){_0x33ded4[_0x146e('0x2a')]=_0x781123['id'];logger[_0x146e('0x15')](_0x146e('0x2e'),_0x33ded4[_0x146e('0x2a')]);return _0x1ed5c7(_0x33ded4);}createEndUser(_0x33ded4,_0x6ba709,_0x5345fb,_0x52b279)[_0x146e('0x11')](function(_0x311187){logger['info']('Contact\x20created:',_0x311187[_0x146e('0x2a')]);return _0x1ed5c7(_0x311187);});});})[_0x146e('0x19')](function(_0x795ee1){_0x32b23c(_0x795ee1);});});};}function createEndUser(_0x36bb15,_0x3cbf6f,_0x1602e7,_0x5afc85){return new Promise(function(_0x163d49,_0x5d63a0){var _0x14217b=moment();var _0xbdb2aa={'method':_0x146e('0x2f'),'uri':_0x5afc85+_0x146e('0x30'),'body':{'contact':{'last_name':_0x36bb15[_0x146e('0x2d')],'work_number':_0x36bb15[_0x146e('0x2d')],'mobile_number':_0x36bb15['contactNumber'],'owner_id':_0x36bb15['userId'],'created_at':_0x14217b['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0xbdb2aa[_0x146e('0x31')]=_0x1602e7;logger[_0x146e('0x15')](_0x146e('0x32'));return rp(_0xbdb2aa)[_0x146e('0x11')](function(_0xba1f7d){_0x36bb15[_0x146e('0x2a')]=_0xba1f7d[_0x146e('0x33')]['id'];_0x163d49(_0x36bb15);})[_0x146e('0x19')](function(_0x1de0d5){logger[_0x146e('0x1a')]('['+[_0x3cbf6f['toUpperCase']()]+']',_0x1de0d5[_0x146e('0x1c')]);_0x5d63a0(_0x1de0d5[_0x146e('0x1c')]);});});}function getTicket(_0x37a28e,_0x416db5,_0x1b22bf,_0x5dced6,_0x779a6a){return function(_0x478414){logger[_0x146e('0x15')](_0x146e('0x34'));return new Promise(function(_0x2e5f59,_0x39283e){var _0x551763=moment();var _0x25d2a0={'method':_0x146e('0x2f'),'uri':_0x1b22bf+_0x146e('0x35'),'body':{'title':intUtil['getString'](_0x5dced6[_0x146e('0x36')],_0x779a6a,'\x20'),'description':intUtil[_0x146e('0x37')](_0x5dced6['Descriptions'],_0x779a6a,'\x0a'),'owner_id':_0x478414['userId'],'creater_id':_0x478414['adminId'],'targetable_id':_0x478414[_0x146e('0x2a')],'targetable_type':_0x146e('0x38'),'created_at':_0x551763[_0x146e('0x27')](_0x146e('0x39')),'due_date':_0x551763['add'](0x1e,'m')[_0x146e('0x27')](_0x146e('0x39'))},'json':!![]};_0x25d2a0[_0x146e('0x31')]=_0x416db5;return rp(_0x25d2a0)[_0x146e('0x11')](function(_0x2c3bd3){_0x478414['ticketId']=_0x2c3bd3[_0x146e('0x3a')]['id'];logger['info'](_0x146e('0x3b'),_0x478414[_0x146e('0x3c')]);_0x2e5f59(_0x478414);})[_0x146e('0x19')](function(_0x267292){logger['error']('['+[_0x37a28e[_0x146e('0x1b')]()]+']',_0x267292['message']);_0x39283e(_0x267292[_0x146e('0x1c')]);});});};}function emit(_0x212058,_0x18e7bc,_0xc73063){var _0x18a443={'uri':_0x212058+_0x146e('0x3d')+_0xc73063};io['to'](util['format'](_0x146e('0x3e'),_0x18e7bc))[_0x146e('0x3f')]('trigger:browser:url',_0x18a443);}exports['cs']=function(_0x3f0cb9,_0x11968c,_0x2d9740,_0x23c5bc,_0x6e7fb6,_0x32f505,_0x5bda46,_0x178161){var _0x2d0c8b={};var _0x44c015={'Authorization':_0x146e('0x40')+_0x32f505[_0x146e('0x41')]};_0x32f505[_0x146e('0x42')]=intUtil[_0x146e('0x43')](_0x32f505[_0x146e('0x42')]);_0x32f505['serverUrl']=intUtil[_0x146e('0x43')](_0x32f505[_0x146e('0x44')]);var _0x56a18e=_0x32f505[_0x146e('0x42')];_0x2d0c8b[_0x146e('0x22')]=_0x32f505[_0x146e('0x45')];_0x2d0c8b[_0x146e('0x2d')]=_0x178161['toLowerCase']()===_0x146e('0x46')?_0x11968c[_0x146e('0x47')]:_0x11968c[_0x146e('0x48')];_0x2d0c8b[_0x146e('0x49')]=_0x178161===_0x146e('0x4a')||_0x178161===_0x146e('0x4b')?'queue':_0x146e('0x46');if(_0x23c5bc){_0x2d0c8b[_0x146e('0x1d')]=_0x23c5bc[_0x146e('0x14')];}var _0x129faf=util['format'](_0x146e('0x4c'),_0x32f505[_0x146e('0x44')],_0x11968c[_0x146e('0x4d')],md5(_0x11968c[_0x146e('0x4d')]));if(_0x6e7fb6&&_0x6e7fb6[_0x146e('0x4e')]){logger['info'](_0x146e('0x4f'),_0x146e('0x50'));_0x11968c[_0x146e('0x51')]=_0x129faf;}else if(_0x5bda46&&_0x5bda46[_0x146e('0x52')]&&_0x5bda46['recordingFormat']!==_0x146e('0x53')){logger[_0x146e('0x15')]('[OUTBOUND]',_0x146e('0x50'));_0x11968c[_0x146e('0x51')]=_0x129faf;}else{_0x11968c[_0x146e('0x51')]='';}return getAdminId(_0x2d0c8b,_0x178161,_0x44c015,_0x56a18e)[_0x146e('0x11')](getUser(_0x178161,_0x44c015,_0x56a18e))['then'](getEndUser(_0x178161,_0x44c015,_0x56a18e))[_0x146e('0x11')](getTicket(_0x178161,_0x44c015,_0x56a18e,_0x2d9740,_0x11968c))['then'](function(_0x3ed305){logger[_0x146e('0x15')](util[_0x146e('0x27')]('The\x20ticket\x20ID\x20is:\x20%s',_0x3ed305['ticketId']));if(_0x178161!==_0x146e('0x4b')){logger[_0x146e('0x15')]('['+[_0x178161[_0x146e('0x1b')]()]+']',_0x146e('0x54'));emit(_0x56a18e,_0x23c5bc[_0x146e('0x55')],_0x3ed305[_0x146e('0x2a')]);}})['catch'](function(_0x2a4331){logger['error']('['+[_0x178161[_0x146e('0x1b')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x2a4331,{'showHidden':!![],'depth':null}));});};