c76f98bb3b59216c3536560d7600ce16e929138f
[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 _0x8cc5=['Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','unmanaged',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','freshsales','defaults','localhost','redis','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','User\x20found:','userId','Admin\x20selected','adminEmail','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','Subjects','Descriptions','YYYY-MM-DDTHH:mm:ss','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url'];(function(_0xa39b2b,_0x8c128c){var _0x54d7f3=function(_0x139c09){while(--_0x139c09){_0xa39b2b['push'](_0xa39b2b['shift']());}};_0x54d7f3(++_0x8c128c);}(_0x8cc5,0x69));var _0x58cc=function(_0x22ed9d,_0x42fc51){_0x22ed9d=_0x22ed9d-0x0;var _0x4f1d8a=_0x8cc5[_0x22ed9d];return _0x4f1d8a;};'use strict';var _=require('lodash');var rp=require(_0x58cc('0x0'));var md5=require(_0x58cc('0x1'));var util=require('util');var moment=require(_0x58cc('0x2'));var Promise=require(_0x58cc('0x3'));var Redis=require(_0x58cc('0x4'));var intUtil=require(_0x58cc('0x5'));var config=require(_0x58cc('0x6'));var logger=require('../../../../config/logger')(_0x58cc('0x7'));config['redis']=_[_0x58cc('0x8')](config['redis'],{'host':_0x58cc('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x58cc('0xa')]));function getAdminId(_0x39cb1d,_0x2bccc5,_0x10233f,_0x36dafc){return new Promise(function(_0x32b9f7,_0x33fefa){var _0x3e9487=![];var _0x570c2b={'method':_0x58cc('0xb'),'uri':_0x36dafc+_0x58cc('0xc'),'json':!![]};_0x570c2b[_0x58cc('0xd')]=_0x10233f;logger[_0x58cc('0xe')](_0x58cc('0xf'));return rp(_0x570c2b)[_0x58cc('0x10')](function(_0x3257ee){if(_0x3257ee){var _0x4675c4=_0x3257ee['users'];var _0x3835e4=null;for(_0x3835e4=0x0;_0x3835e4<_0x4675c4['length'];_0x3835e4++){if(_0x4675c4[_0x3835e4][_0x58cc('0x11')]===_0x39cb1d['adminEmail']){_0x39cb1d[_0x58cc('0x12')]=_0x4675c4[_0x3835e4]['id'];_0x3e9487=!![];}}if(_0x3e9487){logger[_0x58cc('0xe')](_0x58cc('0x13'),_0x39cb1d[_0x58cc('0x12')]);_0x32b9f7(_0x39cb1d);}else{_0x33fefa({'statusCode':0x194,'message':_0x58cc('0x14')});}}else{_0x33fefa({'statusCode':0x194,'message':_0x58cc('0x14')});}})[_0x58cc('0x15')](function(_0x6a91c5){logger[_0x58cc('0x16')]('['+[_0x2bccc5[_0x58cc('0x17')]()]+']',_0x6a91c5[_0x58cc('0x18')]);_0x33fefa(_0x6a91c5);});});}function getUser(_0x41cf2a,_0x2fb3ed,_0x1d6553){return function(_0x1c0b38){return new Promise(function(_0x42bf6a,_0x281f1b){var _0x2ea696={'method':_0x58cc('0xb'),'uri':_0x1d6553+_0x58cc('0xc'),'json':!![]};_0x2ea696[_0x58cc('0xd')]=_0x2fb3ed;logger[_0x58cc('0xe')](_0x58cc('0x19'));return rp(_0x2ea696)['then'](function(_0x3337dc){if(_0x3337dc){var _0x5ae4b2=_0x3337dc[_0x58cc('0x1a')];var _0x213b82=![];var _0x3e5424=null;if(_0x1c0b38[_0x58cc('0x1b')]!==null){logger[_0x58cc('0xe')](_0x58cc('0x1c'),_0x1c0b38[_0x58cc('0x1b')]);_0x1c0b38[_0x58cc('0x1d')]=_0x1c0b38[_0x58cc('0x1b')];for(_0x3e5424=0x0;_0x3e5424<_0x5ae4b2[_0x58cc('0x1e')];_0x3e5424++){if(_0x5ae4b2[_0x3e5424]['email']===_0x1c0b38[_0x58cc('0x1b')]){_0x213b82=!![];_0x1c0b38['userId']=_0x5ae4b2[_0x3e5424]['id'];logger['info'](_0x58cc('0x1f'),_0x1c0b38[_0x58cc('0x20')]);}}}if(!_0x213b82){logger[_0x58cc('0xe')](_0x58cc('0x21'));_0x1c0b38['userEmail']=_0x1c0b38[_0x58cc('0x22')];_0x1c0b38[_0x58cc('0x20')]=_0x1c0b38[_0x58cc('0x12')];_0x213b82=!![];}if(_0x213b82){_0x42bf6a(_0x1c0b38);}else{_0x281f1b({'statusCode':0x194,'message':_0x58cc('0x14')});}}else{_0x281f1b({'statusCode':0x194,'message':_0x58cc('0x14')});}})[_0x58cc('0x15')](function(_0x4c43a4){logger[_0x58cc('0x16')]('['+[_0x41cf2a[_0x58cc('0x17')]()]+']',_0x4c43a4['message']);_0x281f1b(_0x4c43a4);});});};}function searchContact(_0x1727c6,_0x4a09ee,_0x5b1e19,_0x15c395){return new Promise(function(_0x4b78af,_0x2b110b){var _0x330f6e={'method':_0x58cc('0xb'),'headers':_0x4a09ee,'uri':_0x1727c6+_0x58cc('0x23')+_0x15c395+_0x58cc('0x24')+_0x5b1e19+_0x58cc('0x25'),'json':!![]};rp(_0x330f6e)['then'](function(_0x39627f){var _0x948a2b=_[_0x58cc('0x26')](_0x39627f[_0x58cc('0x27')][_0x58cc('0x27')],[_0x5b1e19,_0x15c395]);_0x4b78af(_0x948a2b);})[_0x58cc('0x15')](function(_0x4cf1c9){_0x2b110b(_0x4cf1c9);});});}function getEndUser(_0x5016d0,_0x4fb230,_0x502955){return function(_0x3e9219){return new Promise(function(_0x5b6e49,_0x2e825e){logger[_0x58cc('0xe')](util[_0x58cc('0x28')](_0x58cc('0x29'),_0x3e9219[_0x58cc('0x2a')]));searchContact(_0x502955,_0x4fb230,_0x58cc('0x2b'),_0x3e9219[_0x58cc('0x2a')])[_0x58cc('0x10')](function(_0x32598b){if(_0x32598b){_0x3e9219[_0x58cc('0x2c')]=_0x32598b['id'];logger[_0x58cc('0xe')](_0x58cc('0x2d'),_0x3e9219['endUserId']);return _0x5b6e49(_0x3e9219);}searchContact(_0x502955,_0x4fb230,'work_number',_0x3e9219[_0x58cc('0x2a')])[_0x58cc('0x10')](function(_0x253a0a){if(_0x253a0a){_0x3e9219[_0x58cc('0x2c')]=_0x253a0a['id'];logger['info'](_0x58cc('0x2e'),_0x3e9219[_0x58cc('0x2c')]);return _0x5b6e49(_0x3e9219);}createEndUser(_0x3e9219,_0x5016d0,_0x4fb230,_0x502955)[_0x58cc('0x10')](function(_0x5d6840){logger[_0x58cc('0xe')](_0x58cc('0x2f'),_0x5d6840[_0x58cc('0x2c')]);return _0x5b6e49(_0x5d6840);});});})['catch'](function(_0xf7b24){_0x2e825e(_0xf7b24);});});};}function createEndUser(_0x1e3d8c,_0x12f515,_0x195145,_0x25b2db){return new Promise(function(_0x392b71,_0x57f4c9){var _0x1116d7=moment();var _0x2ef774={'method':'POST','uri':_0x25b2db+_0x58cc('0x30'),'body':{'contact':{'last_name':_0x1e3d8c['contactNumber'],'work_number':_0x1e3d8c[_0x58cc('0x2a')],'mobile_number':_0x1e3d8c['contactNumber'],'owner_id':_0x1e3d8c['userId'],'created_at':_0x1116d7[_0x58cc('0x28')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x2ef774[_0x58cc('0xd')]=_0x195145;logger[_0x58cc('0xe')](_0x58cc('0x31'));return rp(_0x2ef774)[_0x58cc('0x10')](function(_0x157f5a){_0x1e3d8c['endUserId']=_0x157f5a[_0x58cc('0x32')]['id'];_0x392b71(_0x1e3d8c);})[_0x58cc('0x15')](function(_0x3a6964){logger[_0x58cc('0x16')]('['+[_0x12f515[_0x58cc('0x17')]()]+']',_0x3a6964[_0x58cc('0x18')]);_0x57f4c9(_0x3a6964[_0x58cc('0x18')]);});});}function getTicket(_0x1ecb96,_0xf0f154,_0x53ae8d,_0xe019b6,_0x5d3d08){return function(_0x211505){logger[_0x58cc('0xe')](_0x58cc('0x33'));return new Promise(function(_0x50ed72,_0x9b8671){var _0x4a9967=moment();var _0x58cbf5={'method':_0x58cc('0x34'),'uri':_0x53ae8d+_0x58cc('0x35'),'body':{'title':intUtil['getString'](_0xe019b6[_0x58cc('0x36')],_0x5d3d08,'\x20'),'description':intUtil['getString'](_0xe019b6[_0x58cc('0x37')],_0x5d3d08,'\x0a'),'owner_id':_0x211505[_0x58cc('0x20')],'creater_id':_0x211505[_0x58cc('0x12')],'targetable_id':_0x211505[_0x58cc('0x2c')],'targetable_type':'Contact','created_at':_0x4a9967[_0x58cc('0x28')](_0x58cc('0x38')),'due_date':_0x4a9967['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x58cbf5[_0x58cc('0xd')]=_0xf0f154;return rp(_0x58cbf5)[_0x58cc('0x10')](function(_0x47b721){_0x211505[_0x58cc('0x39')]=_0x47b721[_0x58cc('0x3a')]['id'];logger[_0x58cc('0xe')]('Task\x20created:',_0x211505['ticketId']);_0x50ed72(_0x211505);})[_0x58cc('0x15')](function(_0x5717d5){logger['error']('['+[_0x1ecb96['toUpperCase']()]+']',_0x5717d5[_0x58cc('0x18')]);_0x9b8671(_0x5717d5['message']);});});};}function emit(_0x57a976,_0x23027d,_0xd315d6){var _0x18714c={'uri':_0x57a976+_0x58cc('0x3b')+_0xd315d6};io['to'](util['format'](_0x58cc('0x3c'),_0x23027d))[_0x58cc('0x3d')](_0x58cc('0x3e'),_0x18714c);}exports['cs']=function(_0x1fef96,_0x52441e,_0x313bec,_0x5dbb66,_0xe7cc76,_0x5e34a0,_0x12af32,_0x373cb3){var _0x2f39b8={};var _0x50337e={'Authorization':_0x58cc('0x3f')+_0x5e34a0[_0x58cc('0x40')]};_0x5e34a0[_0x58cc('0x41')]=intUtil[_0x58cc('0x42')](_0x5e34a0[_0x58cc('0x41')]);_0x5e34a0['serverUrl']=intUtil[_0x58cc('0x42')](_0x5e34a0['serverUrl']);var _0x317376=_0x5e34a0[_0x58cc('0x41')];_0x2f39b8[_0x58cc('0x22')]=_0x5e34a0[_0x58cc('0x43')];_0x2f39b8[_0x58cc('0x2a')]=_0x373cb3[_0x58cc('0x44')]()===_0x58cc('0x45')?_0x52441e[_0x58cc('0x46')]:_0x52441e[_0x58cc('0x47')];_0x2f39b8[_0x58cc('0x48')]=_0x373cb3===_0x58cc('0x49')||_0x373cb3==='unmanaged'?_0x58cc('0x49'):'outbound';if(_0x5dbb66){_0x2f39b8[_0x58cc('0x1b')]=_0x5dbb66[_0x58cc('0x11')];}var _0x2778c3=util['format'](_0x58cc('0x4a'),_0x5e34a0[_0x58cc('0x4b')],_0x52441e[_0x58cc('0x4c')],md5(_0x52441e[_0x58cc('0x4c')]));if(_0xe7cc76&&_0xe7cc76['monitor_format']){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x52441e[_0x58cc('0x4d')]=_0x2778c3;}else if(_0x12af32&&_0x12af32['recordingFormat']&&_0x12af32[_0x58cc('0x4e')]!==_0x58cc('0x4f')){logger[_0x58cc('0xe')]('[OUTBOUND]',_0x58cc('0x50'));_0x52441e[_0x58cc('0x4d')]=_0x2778c3;}else{_0x52441e[_0x58cc('0x4d')]='';}return getAdminId(_0x2f39b8,_0x373cb3,_0x50337e,_0x317376)[_0x58cc('0x10')](getUser(_0x373cb3,_0x50337e,_0x317376))[_0x58cc('0x10')](getEndUser(_0x373cb3,_0x50337e,_0x317376))[_0x58cc('0x10')](getTicket(_0x373cb3,_0x50337e,_0x317376,_0x313bec,_0x52441e))['then'](function(_0x99938d){logger[_0x58cc('0xe')](util[_0x58cc('0x28')]('The\x20ticket\x20ID\x20is:\x20%s',_0x99938d[_0x58cc('0x39')]));if(_0x373cb3!==_0x58cc('0x51')){logger[_0x58cc('0xe')]('['+[_0x373cb3[_0x58cc('0x17')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x317376,_0x5dbb66['name'],_0x99938d['endUserId']);}})[_0x58cc('0x15')](function(_0x408207){logger['error']('['+[_0x373cb3[_0x58cc('0x17')]()]+_0x58cc('0x52'),util[_0x58cc('0x53')](_0x408207,{'showHidden':!![],'depth':null}));});};