Built motion from commit 19a84241.|2.5.34
[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 _0xcf96=['toLowerCase','destcalleridnum','calleridnum','callDirection','queue','outbound','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','none','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','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','toUpperCase','message','Getting\x20user\x20list','users','Getting\x20user\x20with\x20email','agentEmail','userEmail','email','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Descriptions','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl'];(function(_0x2c2781,_0x5f1153){var _0x3fe469=function(_0x5915df){while(--_0x5915df){_0x2c2781['push'](_0x2c2781['shift']());}};_0x3fe469(++_0x5f1153);}(_0xcf96,0xba));var _0x6cf9=function(_0x3d5769,_0x10d297){_0x3d5769=_0x3d5769-0x0;var _0x46e7c4=_0xcf96[_0x3d5769];return _0x46e7c4;};'use strict';var _=require(_0x6cf9('0x0'));var rp=require(_0x6cf9('0x1'));var md5=require(_0x6cf9('0x2'));var util=require(_0x6cf9('0x3'));var moment=require('moment');var Promise=require(_0x6cf9('0x4'));var Redis=require(_0x6cf9('0x5'));var intUtil=require(_0x6cf9('0x6'));var config=require(_0x6cf9('0x7'));var logger=require(_0x6cf9('0x8'))(_0x6cf9('0x9'));config[_0x6cf9('0xa')]=_['defaults'](config[_0x6cf9('0xa')],{'host':_0x6cf9('0xb'),'port':0x18eb});var io=require(_0x6cf9('0xc'))(new Redis(config[_0x6cf9('0xa')]));function getAdminId(_0x4534a2,_0x551350,_0x3ad0d6,_0xd75bb1){return new Promise(function(_0x117fd5,_0x5c86e9){var _0x31e6ca=![];var _0x573bd3={'method':_0x6cf9('0xd'),'uri':_0xd75bb1+_0x6cf9('0xe'),'json':!![]};_0x573bd3[_0x6cf9('0xf')]=_0x3ad0d6;logger[_0x6cf9('0x10')](_0x6cf9('0x11'));return rp(_0x573bd3)[_0x6cf9('0x12')](function(_0x134bb0){if(_0x134bb0){var _0x380833=_0x134bb0['users'];var _0x3629f0=null;for(_0x3629f0=0x0;_0x3629f0<_0x380833[_0x6cf9('0x13')];_0x3629f0++){if(_0x380833[_0x3629f0]['email']===_0x4534a2[_0x6cf9('0x14')]){_0x4534a2[_0x6cf9('0x15')]=_0x380833[_0x3629f0]['id'];_0x31e6ca=!![];}}if(_0x31e6ca){logger['info'](_0x6cf9('0x16'),_0x4534a2[_0x6cf9('0x15')]);_0x117fd5(_0x4534a2);}else{_0x5c86e9({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5c86e9({'statusCode':0x194,'message':_0x6cf9('0x17')});}})[_0x6cf9('0x18')](function(_0x432f1a){logger[_0x6cf9('0x19')]('['+[_0x551350[_0x6cf9('0x1a')]()]+']',_0x432f1a[_0x6cf9('0x1b')]);_0x5c86e9(_0x432f1a);});});}function getUser(_0x76fa24,_0x4a874e,_0x2304f4){return function(_0x26b8cf){return new Promise(function(_0x51f05e,_0x59cd48){var _0x5979cb={'method':'GET','uri':_0x2304f4+_0x6cf9('0xe'),'json':!![]};_0x5979cb[_0x6cf9('0xf')]=_0x4a874e;logger['info'](_0x6cf9('0x1c'));return rp(_0x5979cb)[_0x6cf9('0x12')](function(_0x4a64c2){if(_0x4a64c2){var _0x4531a9=_0x4a64c2[_0x6cf9('0x1d')];var _0x2500cb=![];var _0x368a64=null;if(_0x26b8cf['agentEmail']!==null){logger[_0x6cf9('0x10')](_0x6cf9('0x1e'),_0x26b8cf[_0x6cf9('0x1f')]);_0x26b8cf[_0x6cf9('0x20')]=_0x26b8cf[_0x6cf9('0x1f')];for(_0x368a64=0x0;_0x368a64<_0x4531a9['length'];_0x368a64++){if(_0x4531a9[_0x368a64][_0x6cf9('0x21')]===_0x26b8cf[_0x6cf9('0x1f')]){_0x2500cb=!![];_0x26b8cf[_0x6cf9('0x22')]=_0x4531a9[_0x368a64]['id'];logger[_0x6cf9('0x10')](_0x6cf9('0x23'),_0x26b8cf[_0x6cf9('0x22')]);}}}if(!_0x2500cb){logger[_0x6cf9('0x10')](_0x6cf9('0x24'));_0x26b8cf[_0x6cf9('0x20')]=_0x26b8cf[_0x6cf9('0x14')];_0x26b8cf[_0x6cf9('0x22')]=_0x26b8cf[_0x6cf9('0x15')];_0x2500cb=!![];}if(_0x2500cb){_0x51f05e(_0x26b8cf);}else{_0x59cd48({'statusCode':0x194,'message':_0x6cf9('0x17')});}}else{_0x59cd48({'statusCode':0x194,'message':_0x6cf9('0x17')});}})[_0x6cf9('0x18')](function(_0x19be1e){logger[_0x6cf9('0x19')]('['+[_0x76fa24[_0x6cf9('0x1a')]()]+']',_0x19be1e[_0x6cf9('0x1b')]);_0x59cd48(_0x19be1e);});});};}function searchContact(_0x31486b,_0x221d29,_0x5587d9,_0x346dda){return new Promise(function(_0x575474,_0xaf2e76){var _0x45326b={'method':_0x6cf9('0xd'),'headers':_0x221d29,'uri':_0x31486b+_0x6cf9('0x25')+_0x346dda+_0x6cf9('0x26')+_0x5587d9+'&entities=contact','json':!![]};rp(_0x45326b)[_0x6cf9('0x12')](function(_0x463cd8){var _0x426317=_['find'](_0x463cd8['contacts'][_0x6cf9('0x27')],[_0x5587d9,_0x346dda]);_0x575474(_0x426317);})[_0x6cf9('0x18')](function(_0x4ef26a){_0xaf2e76(_0x4ef26a);});});}function getEndUser(_0x20367e,_0x47ab8f,_0x5901df){return function(_0x52117f){return new Promise(function(_0x7d3709,_0x305e7f){logger[_0x6cf9('0x10')](util[_0x6cf9('0x28')](_0x6cf9('0x29'),_0x52117f[_0x6cf9('0x2a')]));searchContact(_0x5901df,_0x47ab8f,_0x6cf9('0x2b'),_0x52117f[_0x6cf9('0x2a')])[_0x6cf9('0x12')](function(_0x543b44){if(_0x543b44){_0x52117f['endUserId']=_0x543b44['id'];logger[_0x6cf9('0x10')](_0x6cf9('0x2c'),_0x52117f[_0x6cf9('0x2d')]);return _0x7d3709(_0x52117f);}searchContact(_0x5901df,_0x47ab8f,_0x6cf9('0x2e'),_0x52117f[_0x6cf9('0x2a')])[_0x6cf9('0x12')](function(_0x8ffa90){if(_0x8ffa90){_0x52117f[_0x6cf9('0x2d')]=_0x8ffa90['id'];logger['info']('Contact\x20found\x20work_number:',_0x52117f[_0x6cf9('0x2d')]);return _0x7d3709(_0x52117f);}createEndUser(_0x52117f,_0x20367e,_0x47ab8f,_0x5901df)['then'](function(_0x44cda3){logger[_0x6cf9('0x10')](_0x6cf9('0x2f'),_0x44cda3[_0x6cf9('0x2d')]);return _0x7d3709(_0x44cda3);});});})[_0x6cf9('0x18')](function(_0x413d83){_0x305e7f(_0x413d83);});});};}function createEndUser(_0x4a82d1,_0x2846ce,_0x753105,_0x584c0e){return new Promise(function(_0x2218e6,_0xe81641){var _0x392ccf=moment();var _0x220aaf={'method':_0x6cf9('0x30'),'uri':_0x584c0e+_0x6cf9('0x31'),'body':{'contact':{'last_name':_0x4a82d1[_0x6cf9('0x2a')],'work_number':_0x4a82d1[_0x6cf9('0x2a')],'mobile_number':_0x4a82d1[_0x6cf9('0x2a')],'owner_id':_0x4a82d1['userId'],'created_at':_0x392ccf[_0x6cf9('0x28')](_0x6cf9('0x32'))}},'json':!![]};_0x220aaf[_0x6cf9('0xf')]=_0x753105;logger['info'](_0x6cf9('0x33'));return rp(_0x220aaf)[_0x6cf9('0x12')](function(_0x588c77){_0x4a82d1['endUserId']=_0x588c77[_0x6cf9('0x34')]['id'];_0x2218e6(_0x4a82d1);})[_0x6cf9('0x18')](function(_0x4a5bb8){logger['error']('['+[_0x2846ce[_0x6cf9('0x1a')]()]+']',_0x4a5bb8[_0x6cf9('0x1b')]);_0xe81641(_0x4a5bb8[_0x6cf9('0x1b')]);});});}function getTicket(_0x316c18,_0x5dfb4b,_0xb4f7ce,_0x2cfb63,_0x3804c4){return function(_0x498d62){logger['info'](_0x6cf9('0x35'));return new Promise(function(_0x5ebc99,_0x6077e){var _0x54a4c7=moment();var _0x3b2d48={'method':_0x6cf9('0x30'),'uri':_0xb4f7ce+'/api/tasks','body':{'title':intUtil[_0x6cf9('0x36')](_0x2cfb63['Subjects'],_0x3804c4,'\x20'),'description':intUtil[_0x6cf9('0x36')](_0x2cfb63[_0x6cf9('0x37')],_0x3804c4,'\x0a'),'owner_id':_0x498d62[_0x6cf9('0x22')],'creater_id':_0x498d62[_0x6cf9('0x15')],'targetable_id':_0x498d62['endUserId'],'targetable_type':'Contact','created_at':_0x54a4c7[_0x6cf9('0x28')](_0x6cf9('0x32')),'due_date':_0x54a4c7['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x3b2d48[_0x6cf9('0xf')]=_0x5dfb4b;return rp(_0x3b2d48)['then'](function(_0x3140b2){_0x498d62[_0x6cf9('0x38')]=_0x3140b2[_0x6cf9('0x39')]['id'];logger[_0x6cf9('0x10')](_0x6cf9('0x3a'),_0x498d62[_0x6cf9('0x38')]);_0x5ebc99(_0x498d62);})[_0x6cf9('0x18')](function(_0x21b7d1){logger[_0x6cf9('0x19')]('['+[_0x316c18[_0x6cf9('0x1a')]()]+']',_0x21b7d1[_0x6cf9('0x1b')]);_0x6077e(_0x21b7d1['message']);});});};}function emit(_0x4954d6,_0x359629,_0x4bfebc){var _0x4f6b7b={'uri':_0x4954d6+'/contacts/'+_0x4bfebc};io['to'](util[_0x6cf9('0x28')](_0x6cf9('0x3b'),_0x359629))[_0x6cf9('0x3c')](_0x6cf9('0x3d'),_0x4f6b7b);}exports['cs']=function(_0x2eea93,_0x41b20a,_0x5609fa,_0x2200a8,_0x241f62,_0x2d3054,_0xa66da8,_0x2adb3d){var _0x1d150c={};var _0x539779={'Authorization':_0x6cf9('0x3e')+_0x2d3054['apiKey']};_0x2d3054[_0x6cf9('0x3f')]=intUtil[_0x6cf9('0x40')](_0x2d3054['remoteUri']);_0x2d3054[_0x6cf9('0x41')]=intUtil['stripTrailingSlash'](_0x2d3054[_0x6cf9('0x41')]);var _0x1934dd=_0x2d3054['remoteUri'];_0x1d150c[_0x6cf9('0x14')]=_0x2d3054['username'];_0x1d150c['contactNumber']=_0x2adb3d[_0x6cf9('0x42')]()==='outbound'?_0x41b20a[_0x6cf9('0x43')]:_0x41b20a[_0x6cf9('0x44')];_0x1d150c[_0x6cf9('0x45')]=_0x2adb3d==='queue'||_0x2adb3d==='unmanaged'?_0x6cf9('0x46'):_0x6cf9('0x47');if(_0x2200a8){_0x1d150c[_0x6cf9('0x1f')]=_0x2200a8[_0x6cf9('0x21')];}var _0x2856ef=util[_0x6cf9('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2d3054['serverUrl'],_0x41b20a[_0x6cf9('0x48')],md5(_0x41b20a['uniqueid']));if(_0x241f62&&_0x241f62[_0x6cf9('0x49')]){logger[_0x6cf9('0x10')](_0x6cf9('0x4a'),_0x6cf9('0x4b'));_0x41b20a[_0x6cf9('0x4c')]=_0x2856ef;}else if(_0xa66da8&&_0xa66da8['recordingFormat']&&_0xa66da8['recordingFormat']!==_0x6cf9('0x4d')){logger[_0x6cf9('0x10')]('[OUTBOUND]',_0x6cf9('0x4b'));_0x41b20a[_0x6cf9('0x4c')]=_0x2856ef;}else{_0x41b20a['recordingURL']='';}return getAdminId(_0x1d150c,_0x2adb3d,_0x539779,_0x1934dd)[_0x6cf9('0x12')](getUser(_0x2adb3d,_0x539779,_0x1934dd))[_0x6cf9('0x12')](getEndUser(_0x2adb3d,_0x539779,_0x1934dd))[_0x6cf9('0x12')](getTicket(_0x2adb3d,_0x539779,_0x1934dd,_0x5609fa,_0x41b20a))[_0x6cf9('0x12')](function(_0x1d8446){logger[_0x6cf9('0x10')](util[_0x6cf9('0x28')](_0x6cf9('0x4e'),_0x1d8446[_0x6cf9('0x38')]));if(_0x2adb3d!==_0x6cf9('0x4f')){logger[_0x6cf9('0x10')]('['+[_0x2adb3d[_0x6cf9('0x1a')]()]+']',_0x6cf9('0x50'));emit(_0x1934dd,_0x2200a8[_0x6cf9('0x51')],_0x1d8446[_0x6cf9('0x2d')]);}})[_0x6cf9('0x18')](function(_0x1925aa){logger[_0x6cf9('0x19')]('['+[_0x2adb3d[_0x6cf9('0x1a')]()]+_0x6cf9('0x52'),util[_0x6cf9('0x53')](_0x1925aa,{'showHidden':!![],'depth':null}));});};