Built motion from commit (unavailable).|2.4.4
[motion2.git] / server / services / ami / trigger / integration / salesforce.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 _0xe706=['variable','variableName','customVariable','Variable','name','toLowerCase','toString','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','format','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','stringify','outbound','recordingFormat','[OUTBOUND]','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','[ABANDONED]','calleridnum','[ABANDONED]\x20Ticket\x20%s\x20created.','[ABANDONED]\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','ticketType','Task','assign','utc','getString','Subjects','Case','ContactId','create','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','display_name','info','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','sobject','Contact','contact','Lead','Phone','Enduser\x20with\x20phone\x20%s\x20found.','Enduser\x20with\x20phone\x20%s\x20not\x20found.','Caller\x20-\x20%s','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','lead','Company','upperFirst','type','string','idField','content'];(function(_0x3186aa,_0x34c21e){var _0x2d8c36=function(_0x239e99){while(--_0x239e99){_0x3186aa['push'](_0x3186aa['shift']());}};_0x2d8c36(++_0x34c21e);}(_0xe706,0xa3));var _0x6e70=function(_0x330e77,_0x2dd3c0){_0x330e77=_0x330e77-0x0;var _0xdbadea=_0xe706[_0x330e77];return _0xdbadea;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var md5=require(_0x6e70('0x3'));var jsforce=require(_0x6e70('0x4'));var util=require(_0x6e70('0x5'));var Redis=require(_0x6e70('0x6'));var intUtil=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var logger=require(_0x6e70('0x9'))(_0x6e70('0xa'));config[_0x6e70('0xb')]=_[_0x6e70('0xc')](config[_0x6e70('0xb')],{'host':_0x6e70('0xd'),'port':0x18eb});var io=require(_0x6e70('0xe'))(new Redis(config[_0x6e70('0xb')]));function emit(_0x3c4843,_0x449b48,_0x954545){io['to'](_0x3c4843)[_0x6e70('0xf')](_0x449b48,_0x954545);}function getTicket(_0x100eb7,_0x463853,_0x743eb5,_0x3f474a,_0x37b3e0,_0x4600f9,_0x5b3d07,_0x47f6b2){var _0x3594c1={};if(_0x3f474a[_0x6e70('0x10')]===_0x6e70('0x11')){_0x3594c1=Object[_0x6e70('0x12')]({},{'OwnerId':_0x463853['id'],'ActivityDate':moment[_0x6e70('0x13')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0x6e70('0x14')](_0x3f474a[_0x6e70('0x15')],_0x37b3e0,'\x20'),'Description':intUtil[_0x6e70('0x14')](_0x3f474a['Descriptions'],_0x37b3e0,'\x0a')},getCustomFields(_0x4600f9,_0x37b3e0));if(_0x743eb5){_0x3594c1['WhoId']=_0x743eb5['id'];}}else if(_0x3f474a['ticketType']===_0x6e70('0x16')){_0x3594c1=Object['assign']({},{'OwnerId':_0x463853['id'],'Subject':intUtil['getString'](_0x3f474a[_0x6e70('0x15')],_0x37b3e0,'\x20'),'Description':intUtil[_0x6e70('0x14')](_0x3f474a['Descriptions'],_0x37b3e0,'\x0a')},getCustomFields(_0x4600f9,_0x37b3e0));if(_0x743eb5){_0x3594c1[_0x6e70('0x17')]=_0x743eb5['id'];}}return _0x5b3d07['sobject'](_0x3f474a[_0x6e70('0x10')])[_0x6e70('0x18')](_0x3594c1);}function getUser(_0x4ca554,_0x49029f,_0x3bd572){if(!_['isNil'](_0x49029f)&&intUtil[_0x6e70('0x19')](_0x49029f)){var _0x173afe={'Email':_0x49029f};var _0x53acdc={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3bd572['sobject'](_0x6e70('0x1a'))[_0x6e70('0x1b')](_0x173afe,_0x53acdc)[_0x6e70('0x1c')]()[_0x6e70('0x1d')](function(_0x3af484){if(_0x3af484[_0x6e70('0x1e')]){var _0x1b2453=_[_0x6e70('0x1b')](_0x3af484,function(_0x29326f){return _0x29326f[_0x6e70('0x1f')]===_0x49029f;});if(_0x1b2453){logger['info'](_0x6e70('0x20'),_0x49029f);return BPromise[_0x6e70('0x21')]({'id':_0x1b2453['Id'],'name':_0x1b2453[_0x6e70('0x22')]});}}else{logger['info'](_0x6e70('0x23'),_0x49029f);return _0x3bd572[_0x6e70('0x24')]()[_0x6e70('0x1d')](function(_0x50da2c){return BPromise[_0x6e70('0x21')]({'id':_0x50da2c['user_id'],'name':_0x50da2c['display_name']});});}});}else{logger['info'](_0x6e70('0x23'),_0x49029f);return _0x3bd572[_0x6e70('0x24')]()['then'](function(_0x3ecdf1){return BPromise[_0x6e70('0x21')]({'id':_0x3ecdf1['user_id'],'name':_0x3ecdf1[_0x6e70('0x25')]});});}}function getEndUser(_0x67fb43,_0x2bb231,_0x4a67ac,_0x54a5fe,_0x2c4d37){var _0x3af17f={'Phone':_0x54a5fe};var _0x83c836={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x6e70('0x21')]()[_0x6e70('0x1d')](function(){if(_0x2bb231['ticketType']===_0x6e70('0x11')){logger[_0x6e70('0x26')](_0x6e70('0x27'),_0x54a5fe,_0x2bb231[_0x6e70('0x28')]);switch(_0x2bb231[_0x6e70('0x28')]){case _0x6e70('0x29'):return _0x2c4d37[_0x6e70('0x2a')](_0x6e70('0x2b'))[_0x6e70('0x1b')](_0x3af17f,_0x83c836)[_0x6e70('0x1c')]()['then'](function(_0x1b27d8){if(_0x1b27d8&&_0x1b27d8['length']){return _0x1b27d8;}else{return _0x2c4d37[_0x6e70('0x2a')]('Lead')[_0x6e70('0x1b')](_0x3af17f,_0x83c836);}});case _0x6e70('0x2c'):return _0x2c4d37[_0x6e70('0x2a')]('Contact')[_0x6e70('0x1b')](_0x3af17f,_0x83c836)[_0x6e70('0x1c')]();case'lead':return _0x2c4d37[_0x6e70('0x2a')](_0x6e70('0x2d'))['find'](_0x3af17f,_0x83c836);default:return null;}}else if(_0x2bb231[_0x6e70('0x10')]===_0x6e70('0x16')){logger[_0x6e70('0x26')](_0x6e70('0x27'),_0x54a5fe,_0x6e70('0x2c'));return _0x2c4d37[_0x6e70('0x2a')](_0x6e70('0x2b'))[_0x6e70('0x1b')](_0x3af17f,_0x83c836)[_0x6e70('0x1c')]();}})[_0x6e70('0x1d')](function(_0x4d32d8){if(_0x4d32d8&&_0x4d32d8[_0x6e70('0x1e')]){var _0x4795a0=_[_0x6e70('0x1b')](_0x4d32d8,function(_0x3222a2){return _0x3222a2[_0x6e70('0x2e')]===_0x54a5fe;});if(_0x4795a0){return BPromise[_0x6e70('0x21')]({'id':_0x4795a0['Id'],'name':_0x4795a0[_0x6e70('0x22')],'phone':_0x4795a0[_0x6e70('0x2e')]});}}})[_0x6e70('0x1d')](function(_0xdd0bee){if(_0xdd0bee){logger[_0x6e70('0x26')](_0x6e70('0x2f'),_0x54a5fe);return BPromise[_0x6e70('0x21')](_0xdd0bee);}else{logger[_0x6e70('0x26')](_0x6e70('0x30'),_0x54a5fe);var _0x501b53={'LastName':_0x4a67ac!=='<unknown>'?_0x4a67ac:util['format'](_0x6e70('0x31'),_0x54a5fe),'Phone':_0x54a5fe};if(_0x2bb231[_0x6e70('0x32')]){if(_0x2bb231[_0x6e70('0x32')]===_0x6e70('0x2c')){logger[_0x6e70('0x26')](_0x6e70('0x33'),_0x54a5fe,_0x2bb231['moduleCreate']);}else if(_0x2bb231[_0x6e70('0x32')]===_0x6e70('0x34')&&_0x2bb231[_0x6e70('0x10')]===_0x6e70('0x11')){logger[_0x6e70('0x26')](_0x6e70('0x33'),_0x54a5fe,_0x2bb231[_0x6e70('0x32')]);_0x501b53[_0x6e70('0x35')]='No\x20Company';}else{return null;}}return _0x2c4d37[_0x6e70('0x2a')](_[_0x6e70('0x36')](_0x2bb231[_0x6e70('0x32')]))[_0x6e70('0x18')](_0x501b53);}});}function getCustomFields(_0x201da9,_0x1de947){var _0x21b0e7={};if(_0x201da9['length']>0x0){_['forEach'](_0x201da9,function(_0x5ae898){if(_0x5ae898[_0x6e70('0x37')]===_0x6e70('0x38')&&_0x5ae898[_0x6e70('0x39')]){_0x21b0e7[_0x5ae898[_0x6e70('0x39')]]=_0x5ae898[_0x6e70('0x3a')]['toString']();}else if(_0x5ae898[_0x6e70('0x37')]===_0x6e70('0x3b')&&_0x5ae898[_0x6e70('0x3c')]&&_0x5ae898['idField']){_0x1de947[_0x5ae898['variableName']]&&(_0x21b0e7[_0x5ae898['idField']]=_0x1de947[_0x5ae898[_0x6e70('0x3c')]]['toString']());}else if(_0x5ae898[_0x6e70('0x37')]===_0x6e70('0x3d')&&_0x5ae898[_0x6e70('0x3e')]&&_0x5ae898[_0x6e70('0x3e')]['name']&&_0x5ae898[_0x6e70('0x39')]){_0x1de947[_0x5ae898['Variable'][_0x6e70('0x3f')][_0x6e70('0x40')]()]&&(_0x21b0e7[_0x5ae898[_0x6e70('0x39')]]=_0x1de947[_0x5ae898[_0x6e70('0x3e')]['name'][_0x6e70('0x40')]()][_0x6e70('0x41')]());}});}return _0x21b0e7;}function getConnection(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x42')][_0x6e70('0x43')](_0x3d39c3[_0x6e70('0x44')]);var _0x552e7e=new jsforce[(_0x6e70('0x45'))]({'oauth2':{'loginUrl':_0x3d39c3[_0x6e70('0x46')]||_0x6e70('0x47'),'clientId':_0x3d39c3[_0x6e70('0x48')],'clientSecret':_0x3d39c3[_0x6e70('0x49')]}});return _0x552e7e[_0x6e70('0x4a')](_0x3d39c3[_0x6e70('0x4b')],_0xac87d6)['then'](function(){logger[_0x6e70('0x26')]('Connection\x20established.');return _0x552e7e;});}exports[_0x6e70('0x4c')]=function(_0x3836e4,_0x4b351e,_0x53efc3,_0x333abd,_0x25a208,_0x18fa40){var _0x587f04,_0x4af9b1,_0x238ebb,_0x11ac3d;_0x18fa40[_0x6e70('0x4d')]=intUtil[_0x6e70('0x4e')](_0x18fa40[_0x6e70('0x4d')]);_0x18fa40[_0x6e70('0x46')]=intUtil['stripTrailingSlash'](_0x18fa40[_0x6e70('0x46')]);if(_0x25a208&&_0x25a208[_0x6e70('0x4f')]){logger[_0x6e70('0x26')](_0x6e70('0x50'),_0x6e70('0x51'));_0x4b351e['recordingURL']=util['format'](_0x6e70('0x52'),_0x18fa40[_0x6e70('0x4d')],_0x4b351e[_0x6e70('0x53')],md5(_0x4b351e[_0x6e70('0x53')]));}else{_0x4b351e[_0x6e70('0x54')]='';}return getConnection(_0x18fa40)['then'](function(_0x41bd0b){_0x11ac3d=_0x41bd0b;return getUser(_0x18fa40,_0x333abd[_0x6e70('0x55')],_0x11ac3d);})[_0x6e70('0x1d')](function(_0x23ebfb){_0x587f04=_0x23ebfb;return getEndUser(_0x18fa40,_0x53efc3,_0x4b351e[_0x6e70('0x56')],_0x4b351e['calleridnum'],_0x11ac3d);})[_0x6e70('0x1d')](function(_0x1dd242){_0x4af9b1=_0x1dd242;return getTicket(_0x18fa40,_0x587f04,_0x4af9b1,_0x53efc3,_0x4b351e,_0x53efc3[_0x6e70('0x57')],_0x11ac3d,_0x6e70('0x4c'));})[_0x6e70('0x1d')](function(_0x3fd03d){_0x238ebb=_0x3fd03d;logger['info'](_0x6e70('0x58'),_0x238ebb['id']);logger[_0x6e70('0x26')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x238ebb['id'],_0x333abd[_0x6e70('0x3f')],_0x18fa40[_0x6e70('0x37')]);switch(_0x18fa40['type']){case _0x6e70('0x59'):emit(util[_0x6e70('0x5a')](_0x6e70('0x5b'),_0x333abd[_0x6e70('0x3f')]),_0x6e70('0x5c'),{'recordId':_0x238ebb['id']});break;case'newTab':emit(util[_0x6e70('0x5a')](_0x6e70('0x5b'),_0x333abd[_0x6e70('0x3f')]),_0x6e70('0x5d'),{'uri':util[_0x6e70('0x5a')](_0x6e70('0x5e'),_0x11ac3d[_0x6e70('0x5f')],_0x238ebb['id'])});break;default:logger[_0x6e70('0x60')](_0x6e70('0x61'));}})[_0x6e70('0x62')](function(_0x13dd17){logger[_0x6e70('0x60')](_0x6e70('0x50'),JSON[_0x6e70('0x63')](_0x13dd17));});};exports[_0x6e70('0x64')]=function(_0x2240a1,_0x324fa6,_0x4329a6,_0x2a8627,_0x1c7dca,_0x4c6aab,_0x28898a){var _0x4434dd,_0x180a13,_0xeeab6e,_0x36757e;_0x4c6aab[_0x6e70('0x4d')]=intUtil['stripTrailingSlash'](_0x4c6aab[_0x6e70('0x4d')]);_0x4c6aab[_0x6e70('0x46')]=intUtil['stripTrailingSlash'](_0x4c6aab[_0x6e70('0x46')]);if(_0x28898a&&_0x28898a[_0x6e70('0x65')]&&_0x28898a[_0x6e70('0x65')]!=='none'){logger['info'](_0x6e70('0x66'),_0x6e70('0x51'));_0x324fa6[_0x6e70('0x54')]=util[_0x6e70('0x5a')](_0x6e70('0x52'),_0x4c6aab[_0x6e70('0x4d')],_0x324fa6[_0x6e70('0x53')],md5(_0x324fa6['uniqueid']));}return getConnection(_0x4c6aab)['then'](function(_0x2c8dc6){_0x36757e=_0x2c8dc6;return getUser(_0x4c6aab,_0x2a8627[_0x6e70('0x55')],_0x36757e);})[_0x6e70('0x1d')](function(_0x2ad395){_0x4434dd=_0x2ad395;return getEndUser(_0x4c6aab,_0x4329a6,_0x324fa6['destcalleridname'],_0x324fa6['destcalleridnum'],_0x36757e);})[_0x6e70('0x1d')](function(_0x4e5545){_0x180a13=_0x4e5545;return getTicket(_0x4c6aab,_0x4434dd,_0x180a13,_0x4329a6,_0x324fa6,_0x4329a6['Fields'],_0x36757e,'outbound');})[_0x6e70('0x1d')](function(_0x47fbed){_0xeeab6e=_0x47fbed;logger[_0x6e70('0x26')](_0x6e70('0x67'),_0xeeab6e['id']);logger[_0x6e70('0x26')](_0x6e70('0x68'),_0xeeab6e['id'],_0x2a8627[_0x6e70('0x3f')],_0x4c6aab[_0x6e70('0x37')]);switch(_0x4c6aab[_0x6e70('0x37')]){case _0x6e70('0x59'):emit(util['format'](_0x6e70('0x5b'),_0x2a8627[_0x6e70('0x3f')]),_0x6e70('0x5c'),{'recordId':_0xeeab6e['id']});break;case _0x6e70('0x69'):emit(util[_0x6e70('0x5a')]('user:%s',_0x2a8627['name']),'trigger:browser:url',{'uri':util[_0x6e70('0x5a')](_0x6e70('0x5e'),_0x36757e[_0x6e70('0x5f')],_0xeeab6e['id'])});break;default:logger['error']('[OUTBOUND]',_0x6e70('0x6a'));}})[_0x6e70('0x62')](function(_0x3c2830){logger[_0x6e70('0x60')](_0x6e70('0x66'),JSON[_0x6e70('0x63')](_0x3c2830));});};exports['abandoned']=function(_0x2d2855,_0x3f5896,_0x30d11b,_0x82a9a,_0x515c0c,_0xce964b){var _0x531097,_0x5b4046,_0x30487b,_0x3249a5;_0xce964b[_0x6e70('0x4d')]=intUtil[_0x6e70('0x4e')](_0xce964b[_0x6e70('0x4d')]);_0xce964b[_0x6e70('0x46')]=intUtil['stripTrailingSlash'](_0xce964b[_0x6e70('0x46')]);if(_0x515c0c&&_0x515c0c[_0x6e70('0x4f')]){logger[_0x6e70('0x26')](_0x6e70('0x6b'),_0x6e70('0x51'));_0x3f5896[_0x6e70('0x54')]=util[_0x6e70('0x5a')](_0x6e70('0x52'),_0xce964b[_0x6e70('0x4d')],_0x3f5896[_0x6e70('0x53')],md5(_0x3f5896['uniqueid']));}else{_0x3f5896[_0x6e70('0x54')]='';}return getConnection(_0xce964b)[_0x6e70('0x1d')](function(_0x577c3b){_0x3249a5=_0x577c3b;if(!_['isNil'](_0x82a9a)){return getUser(_0xce964b,_0x82a9a['name'],_0x3249a5);}else{return getUser(_0xce964b,null,_0x3249a5);}})[_0x6e70('0x1d')](function(_0x18ecf0){_0x531097=_0x18ecf0;return getEndUser(_0xce964b,_0x30d11b,_0x3f5896[_0x6e70('0x56')],_0x3f5896[_0x6e70('0x6c')],_0x3249a5);})[_0x6e70('0x1d')](function(_0x4ec29a){_0x5b4046=_0x4ec29a;return getTicket(_0xce964b,_0x531097,_0x5b4046,_0x30d11b,_0x3f5896,_0x30d11b['Fields'],_0x3249a5);})[_0x6e70('0x1d')](function(_0x241a21){_0x30487b=_0x241a21;logger['info'](_0x6e70('0x6d'),_0x30487b['id']);logger[_0x6e70('0x26')](_0x6e70('0x6e'),_0xce964b[_0x6e70('0x37')]);})[_0x6e70('0x62')](function(_0x44bf96){logger[_0x6e70('0x60')](_0x6e70('0x6b'),JSON[_0x6e70('0x63')](_0x44bf96));});};