Built motion from commit c738b9ac.|2.6.25
[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 _0xd3f8=['destcalleridnum','calleridnum','queue','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','/api/selector/owners','headers','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','message','GET','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','User\x20found:','userId','Admin\x20selected','catch','toUpperCase','/api/lookup?q=','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','Contact','add','YYYY-MM-DDTHH:mm:ss','task','Task\x20created:','ticketId','/contacts/','emit','trigger:browser:url','apiKey','stripTrailingSlash','serverUrl','remoteUri','username','toLowerCase'];(function(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0xd3f8,0xb3));var _0x8d3f=function(_0xdff6ec,_0x177300){_0xdff6ec=_0xdff6ec-0x0;var _0x3081fe=_0xd3f8[_0xdff6ec];return _0x3081fe;};'use strict';var _=require(_0x8d3f('0x0'));var rp=require(_0x8d3f('0x1'));var md5=require('md5');var util=require(_0x8d3f('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x8d3f('0x3'));var intUtil=require(_0x8d3f('0x4'));var config=require(_0x8d3f('0x5'));var logger=require(_0x8d3f('0x6'))(_0x8d3f('0x7'));config[_0x8d3f('0x8')]=_['defaults'](config[_0x8d3f('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8d3f('0x8')]));function getAdminId(_0x120cec,_0x4a1f8b,_0x472103,_0x4a1880){return new Promise(function(_0xe84495,_0x3f9a5d){var _0x53e1d0=![];var _0x56a932={'method':'GET','uri':_0x4a1880+_0x8d3f('0x9'),'json':!![]};_0x56a932[_0x8d3f('0xa')]=_0x472103;logger['info'](_0x8d3f('0xb'));return rp(_0x56a932)[_0x8d3f('0xc')](function(_0x1e4201){if(_0x1e4201){var _0x508fd8=_0x1e4201['users'];var _0x4bf266=null;for(_0x4bf266=0x0;_0x4bf266<_0x508fd8[_0x8d3f('0xd')];_0x4bf266++){if(_0x508fd8[_0x4bf266][_0x8d3f('0xe')]===_0x120cec[_0x8d3f('0xf')]){_0x120cec[_0x8d3f('0x10')]=_0x508fd8[_0x4bf266]['id'];_0x53e1d0=!![];}}if(_0x53e1d0){logger[_0x8d3f('0x11')](_0x8d3f('0x12'),_0x120cec[_0x8d3f('0x10')]);_0xe84495(_0x120cec);}else{_0x3f9a5d({'statusCode':0x194,'message':_0x8d3f('0x13')});}}else{_0x3f9a5d({'statusCode':0x194,'message':_0x8d3f('0x13')});}})['catch'](function(_0xcbe70e){logger[_0x8d3f('0x14')]('['+[_0x4a1f8b['toUpperCase']()]+']',_0xcbe70e[_0x8d3f('0x15')]);_0x3f9a5d(_0xcbe70e);});});}function getUser(_0x7abe4c,_0x1ca071,_0x813847){return function(_0x36cafe){return new Promise(function(_0x1d957a,_0xb54054){var _0x364f06={'method':_0x8d3f('0x16'),'uri':_0x813847+'/api/selector/owners','json':!![]};_0x364f06[_0x8d3f('0xa')]=_0x1ca071;logger[_0x8d3f('0x11')](_0x8d3f('0x17'));return rp(_0x364f06)['then'](function(_0x2f7b06){if(_0x2f7b06){var _0x48d99e=_0x2f7b06[_0x8d3f('0x18')];var _0x58ee45=![];var _0x3a8680=null;if(_0x36cafe[_0x8d3f('0x19')]!==null){logger['info'](_0x8d3f('0x1a'),_0x36cafe[_0x8d3f('0x19')]);_0x36cafe[_0x8d3f('0x1b')]=_0x36cafe[_0x8d3f('0x19')];for(_0x3a8680=0x0;_0x3a8680<_0x48d99e[_0x8d3f('0xd')];_0x3a8680++){if(_0x48d99e[_0x3a8680][_0x8d3f('0xe')]===_0x36cafe[_0x8d3f('0x19')]){_0x58ee45=!![];_0x36cafe['userId']=_0x48d99e[_0x3a8680]['id'];logger[_0x8d3f('0x11')](_0x8d3f('0x1c'),_0x36cafe[_0x8d3f('0x1d')]);}}}if(!_0x58ee45){logger[_0x8d3f('0x11')](_0x8d3f('0x1e'));_0x36cafe[_0x8d3f('0x1b')]=_0x36cafe[_0x8d3f('0xf')];_0x36cafe['userId']=_0x36cafe[_0x8d3f('0x10')];_0x58ee45=!![];}if(_0x58ee45){_0x1d957a(_0x36cafe);}else{_0xb54054({'statusCode':0x194,'message':_0x8d3f('0x13')});}}else{_0xb54054({'statusCode':0x194,'message':_0x8d3f('0x13')});}})[_0x8d3f('0x1f')](function(_0xc78f2){logger['error']('['+[_0x7abe4c[_0x8d3f('0x20')]()]+']',_0xc78f2[_0x8d3f('0x15')]);_0xb54054(_0xc78f2);});});};}function searchContact(_0x2b285f,_0x3769e0,_0x4138ae,_0x1a980d){return new Promise(function(_0x4c8421,_0x1e1be0){var _0x44344c={'method':_0x8d3f('0x16'),'headers':_0x3769e0,'uri':_0x2b285f+_0x8d3f('0x21')+_0x1a980d+_0x8d3f('0x22')+_0x4138ae+'&entities=contact','json':!![]};rp(_0x44344c)[_0x8d3f('0xc')](function(_0xc607ef){var _0x1c42d6=_['find'](_0xc607ef[_0x8d3f('0x23')][_0x8d3f('0x23')],[_0x4138ae,_0x1a980d]);_0x4c8421(_0x1c42d6);})[_0x8d3f('0x1f')](function(_0x2c87){_0x1e1be0(_0x2c87);});});}function getEndUser(_0x49ee80,_0x13edf2,_0x13f65a){return function(_0x1b2850){return new Promise(function(_0x340fa4,_0x2cb596){logger[_0x8d3f('0x11')](util[_0x8d3f('0x24')](_0x8d3f('0x25'),_0x1b2850[_0x8d3f('0x26')]));searchContact(_0x13f65a,_0x13edf2,_0x8d3f('0x27'),_0x1b2850[_0x8d3f('0x26')])[_0x8d3f('0xc')](function(_0x2eb113){if(_0x2eb113){_0x1b2850[_0x8d3f('0x28')]=_0x2eb113['id'];logger[_0x8d3f('0x11')](_0x8d3f('0x29'),_0x1b2850[_0x8d3f('0x28')]);return _0x340fa4(_0x1b2850);}searchContact(_0x13f65a,_0x13edf2,_0x8d3f('0x2a'),_0x1b2850[_0x8d3f('0x26')])[_0x8d3f('0xc')](function(_0x4c4184){if(_0x4c4184){_0x1b2850[_0x8d3f('0x28')]=_0x4c4184['id'];logger[_0x8d3f('0x11')](_0x8d3f('0x2b'),_0x1b2850[_0x8d3f('0x28')]);return _0x340fa4(_0x1b2850);}createEndUser(_0x1b2850,_0x49ee80,_0x13edf2,_0x13f65a)[_0x8d3f('0xc')](function(_0x315a04){logger[_0x8d3f('0x11')]('Contact\x20created:',_0x315a04[_0x8d3f('0x28')]);return _0x340fa4(_0x315a04);});});})[_0x8d3f('0x1f')](function(_0x5cb882){_0x2cb596(_0x5cb882);});});};}function createEndUser(_0x4f6f37,_0x14009d,_0x24bff7,_0x1f5139){return new Promise(function(_0x5d3576,_0x4a515a){var _0x42414b=moment();var _0x5d1aff={'method':_0x8d3f('0x2c'),'uri':_0x1f5139+_0x8d3f('0x2d'),'body':{'contact':{'last_name':_0x4f6f37[_0x8d3f('0x26')],'work_number':_0x4f6f37[_0x8d3f('0x26')],'mobile_number':_0x4f6f37[_0x8d3f('0x26')],'owner_id':_0x4f6f37[_0x8d3f('0x1d')],'created_at':_0x42414b['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5d1aff['headers']=_0x24bff7;logger[_0x8d3f('0x11')](_0x8d3f('0x2e'));return rp(_0x5d1aff)[_0x8d3f('0xc')](function(_0x2a4a64){_0x4f6f37[_0x8d3f('0x28')]=_0x2a4a64[_0x8d3f('0x2f')]['id'];_0x5d3576(_0x4f6f37);})[_0x8d3f('0x1f')](function(_0x1f835d){logger[_0x8d3f('0x14')]('['+[_0x14009d[_0x8d3f('0x20')]()]+']',_0x1f835d[_0x8d3f('0x15')]);_0x4a515a(_0x1f835d['message']);});});}function getTicket(_0x56f28d,_0x599ed9,_0x126cb1,_0x3b0b52,_0x5599ad){return function(_0x327cc4){logger[_0x8d3f('0x11')](_0x8d3f('0x30'));return new Promise(function(_0x9fcb8a,_0x1410f3){var _0x2685d9=moment();var _0x2fb4e0={'method':'POST','uri':_0x126cb1+_0x8d3f('0x31'),'body':{'title':intUtil[_0x8d3f('0x32')](_0x3b0b52['Subjects'],_0x5599ad,'\x20'),'description':intUtil[_0x8d3f('0x32')](_0x3b0b52[_0x8d3f('0x33')],_0x5599ad,'\x0a'),'owner_id':_0x327cc4[_0x8d3f('0x1d')],'creater_id':_0x327cc4[_0x8d3f('0x10')],'targetable_id':_0x327cc4[_0x8d3f('0x28')],'targetable_type':_0x8d3f('0x34'),'created_at':_0x2685d9[_0x8d3f('0x24')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x2685d9[_0x8d3f('0x35')](0x1e,'m')['format'](_0x8d3f('0x36'))},'json':!![]};_0x2fb4e0[_0x8d3f('0xa')]=_0x599ed9;return rp(_0x2fb4e0)['then'](function(_0x56506d){_0x327cc4['ticketId']=_0x56506d[_0x8d3f('0x37')]['id'];logger['info'](_0x8d3f('0x38'),_0x327cc4[_0x8d3f('0x39')]);_0x9fcb8a(_0x327cc4);})[_0x8d3f('0x1f')](function(_0x4ff8fb){logger[_0x8d3f('0x14')]('['+[_0x56f28d[_0x8d3f('0x20')]()]+']',_0x4ff8fb[_0x8d3f('0x15')]);_0x1410f3(_0x4ff8fb[_0x8d3f('0x15')]);});});};}function emit(_0x2652b6,_0x38485a,_0x3d9b4b){var _0x62021f={'uri':_0x2652b6+_0x8d3f('0x3a')+_0x3d9b4b};io['to'](util[_0x8d3f('0x24')]('user:%s',_0x38485a))[_0x8d3f('0x3b')](_0x8d3f('0x3c'),_0x62021f);}exports['cs']=function(_0x1d47c6,_0x497b5e,_0x5e276f,_0x178b96,_0x5c4e67,_0x2ce40f,_0x56f7c8,_0x44ae58){var _0x2fd1a0={};var _0x47fdc1={'Authorization':'Token\x20token='+_0x2ce40f[_0x8d3f('0x3d')]};_0x2ce40f['remoteUri']=intUtil[_0x8d3f('0x3e')](_0x2ce40f['remoteUri']);_0x2ce40f[_0x8d3f('0x3f')]=intUtil['stripTrailingSlash'](_0x2ce40f[_0x8d3f('0x3f')]);var _0x2b0ccc=_0x2ce40f[_0x8d3f('0x40')];_0x2fd1a0[_0x8d3f('0xf')]=_0x2ce40f[_0x8d3f('0x41')];_0x2fd1a0[_0x8d3f('0x26')]=_0x44ae58[_0x8d3f('0x42')]()==='outbound'?_0x497b5e[_0x8d3f('0x43')]:_0x497b5e[_0x8d3f('0x44')];_0x2fd1a0['callDirection']=_0x44ae58===_0x8d3f('0x45')||_0x44ae58==='unmanaged'?_0x8d3f('0x45'):_0x8d3f('0x46');if(_0x178b96){_0x2fd1a0['agentEmail']=_0x178b96[_0x8d3f('0xe')];}var _0x3ab506=util[_0x8d3f('0x24')](_0x8d3f('0x47'),_0x2ce40f[_0x8d3f('0x3f')],_0x497b5e[_0x8d3f('0x48')],md5(_0x497b5e[_0x8d3f('0x48')]));if(_0x5c4e67&&_0x5c4e67['monitor_format']){logger[_0x8d3f('0x11')](_0x8d3f('0x49'),_0x8d3f('0x4a'));_0x497b5e[_0x8d3f('0x4b')]=_0x3ab506;}else if(_0x56f7c8&&_0x56f7c8[_0x8d3f('0x4c')]&&_0x56f7c8[_0x8d3f('0x4c')]!==_0x8d3f('0x4d')){logger['info'](_0x8d3f('0x4e'),_0x8d3f('0x4a'));_0x497b5e[_0x8d3f('0x4b')]=_0x3ab506;}else{_0x497b5e[_0x8d3f('0x4b')]='';}return getAdminId(_0x2fd1a0,_0x44ae58,_0x47fdc1,_0x2b0ccc)[_0x8d3f('0xc')](getUser(_0x44ae58,_0x47fdc1,_0x2b0ccc))[_0x8d3f('0xc')](getEndUser(_0x44ae58,_0x47fdc1,_0x2b0ccc))[_0x8d3f('0xc')](getTicket(_0x44ae58,_0x47fdc1,_0x2b0ccc,_0x5e276f,_0x497b5e))[_0x8d3f('0xc')](function(_0x1b0ed4){logger['info'](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x1b0ed4[_0x8d3f('0x39')]));if(_0x44ae58!==_0x8d3f('0x4f')){logger[_0x8d3f('0x11')]('['+[_0x44ae58[_0x8d3f('0x20')]()]+']',_0x8d3f('0x50'));emit(_0x2b0ccc,_0x178b96[_0x8d3f('0x51')],_0x1b0ed4[_0x8d3f('0x28')]);}})['catch'](function(_0x4c163b){logger[_0x8d3f('0x14')]('['+[_0x44ae58[_0x8d3f('0x20')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x4c163b,{'showHidden':!![],'depth':null}));});};