33a52e21e0e27a8b09cc36a0c97288a700b28690
[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 _0xdb10=['Email','Name','info','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','Contact','execute','Lead','contact','lead','Case','Phone','Enduser\x20with\x20phone\x20%s\x20found.','format','Caller\x20-\x20%s','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Task','No\x20Company','upperFirst','create','forEach','string','idField','content','toString','type','variable','variableName','customVariable','name','Variable','toLowerCase','password','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','outbound','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','stringify','lastevent','toUpperCase','calleridname',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','jsforce','util','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects','Descriptions','WhoId','ContactId','sobject','ticketType','isNil','validateEmail','User','find','then','length'];(function(_0x13dbb1,_0x56edc7){var _0xe196dd=function(_0x8bc97a){while(--_0x8bc97a){_0x13dbb1['push'](_0x13dbb1['shift']());}};_0xe196dd(++_0x56edc7);}(_0xdb10,0x12b));var _0x0db1=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0xdb10[_0xc0a3d3];return _0x3386e8;};'use strict';var _=require(_0x0db1('0x0'));var rp=require(_0x0db1('0x1'));var moment=require(_0x0db1('0x2'));var BPromise=require(_0x0db1('0x3'));var md5=require('md5');var jsforce=require(_0x0db1('0x4'));var util=require(_0x0db1('0x5'));var Redis=require(_0x0db1('0x6'));var intUtil=require(_0x0db1('0x7'));var config=require(_0x0db1('0x8'));var logger=require('../../../../config/logger')(_0x0db1('0x9'));config[_0x0db1('0xa')]=_[_0x0db1('0xb')](config['redis'],{'host':_0x0db1('0xc'),'port':0x18eb});var io=require(_0x0db1('0xd'))(new Redis(config[_0x0db1('0xa')]));function emit(_0x3108bc,_0xa7d4ee,_0x5cbd28){io['to'](_0x3108bc)[_0x0db1('0xe')](_0xa7d4ee,_0x5cbd28);}function getTicket(_0x11a94c,_0x296cd5,_0x2dd080,_0x474ab8,_0x5d436f,_0x5c36ff,_0x817227,_0x172b11){var _0x478110={};if(_0x474ab8['ticketType']==='Task'){_0x478110=Object['assign']({},{'OwnerId':_0x296cd5['id'],'ActivityDate':moment['utc'](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0x0db1('0xf')](_0x474ab8[_0x0db1('0x10')],_0x5d436f,'\x20'),'Description':intUtil[_0x0db1('0xf')](_0x474ab8[_0x0db1('0x11')],_0x5d436f,'\x0a')},getCustomFields(_0x5c36ff,_0x5d436f));if(_0x2dd080){_0x478110[_0x0db1('0x12')]=_0x2dd080['id'];}}else if(_0x474ab8['ticketType']==='Case'){_0x478110=Object['assign']({},{'OwnerId':_0x296cd5['id'],'Subject':intUtil[_0x0db1('0xf')](_0x474ab8[_0x0db1('0x10')],_0x5d436f,'\x20'),'Description':intUtil[_0x0db1('0xf')](_0x474ab8[_0x0db1('0x11')],_0x5d436f,'\x0a')},getCustomFields(_0x5c36ff,_0x5d436f));if(_0x2dd080){_0x478110[_0x0db1('0x13')]=_0x2dd080['id'];}}return _0x817227[_0x0db1('0x14')](_0x474ab8[_0x0db1('0x15')])['create'](_0x478110);}function getUser(_0x409946,_0x5e3cbc,_0x10c746){if(!_[_0x0db1('0x16')](_0x5e3cbc)&&intUtil[_0x0db1('0x17')](_0x5e3cbc)){var _0xeb4102={'Email':_0x5e3cbc};var _0x38efa0={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x10c746[_0x0db1('0x14')](_0x0db1('0x18'))[_0x0db1('0x19')](_0xeb4102,_0x38efa0)['execute']()[_0x0db1('0x1a')](function(_0x25c9a2){if(_0x25c9a2[_0x0db1('0x1b')]){var _0x564ec9=_[_0x0db1('0x19')](_0x25c9a2,function(_0x4d4583){return _0x4d4583[_0x0db1('0x1c')]===_0x5e3cbc;});if(_0x564ec9){logger['info']('Agent\x20%s\x20found.',_0x5e3cbc);return BPromise['resolve']({'id':_0x564ec9['Id'],'name':_0x564ec9[_0x0db1('0x1d')]});}}else{logger[_0x0db1('0x1e')](_0x0db1('0x1f'),_0x5e3cbc);return _0x10c746[_0x0db1('0x20')]()['then'](function(_0x32e786){return BPromise[_0x0db1('0x21')]({'id':_0x32e786['user_id'],'name':_0x32e786['display_name']});});}});}else{logger['info'](_0x0db1('0x1f'),_0x5e3cbc);return _0x10c746[_0x0db1('0x20')]()[_0x0db1('0x1a')](function(_0x38847d){return BPromise[_0x0db1('0x21')]({'id':_0x38847d['user_id'],'name':_0x38847d['display_name']});});}}function getEndUser(_0x704e15,_0x1682c1,_0x654d77,_0x22120c,_0x39401f){var _0xd32c38={'Phone':_0x22120c};var _0x311ea8={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x0db1('0x21')]()[_0x0db1('0x1a')](function(){if(_0x1682c1[_0x0db1('0x15')]==='Task'){logger[_0x0db1('0x1e')](_0x0db1('0x22'),_0x22120c,_0x1682c1[_0x0db1('0x23')]);switch(_0x1682c1[_0x0db1('0x23')]){case _0x0db1('0x24'):return _0x39401f[_0x0db1('0x14')](_0x0db1('0x25'))['find'](_0xd32c38,_0x311ea8)[_0x0db1('0x26')]()[_0x0db1('0x1a')](function(_0x43e6de){if(_0x43e6de&&_0x43e6de[_0x0db1('0x1b')]){return _0x43e6de;}else{return _0x39401f[_0x0db1('0x14')](_0x0db1('0x27'))[_0x0db1('0x19')](_0xd32c38,_0x311ea8);}});case _0x0db1('0x28'):return _0x39401f[_0x0db1('0x14')](_0x0db1('0x25'))[_0x0db1('0x19')](_0xd32c38,_0x311ea8)['execute']();case _0x0db1('0x29'):return _0x39401f['sobject']('Lead')[_0x0db1('0x19')](_0xd32c38,_0x311ea8);default:return null;}}else if(_0x1682c1[_0x0db1('0x15')]===_0x0db1('0x2a')){logger[_0x0db1('0x1e')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x22120c,_0x0db1('0x28'));return _0x39401f[_0x0db1('0x14')](_0x0db1('0x25'))[_0x0db1('0x19')](_0xd32c38,_0x311ea8)['execute']();}})[_0x0db1('0x1a')](function(_0x57c81a){if(_0x57c81a&&_0x57c81a[_0x0db1('0x1b')]){var _0x54f282=_[_0x0db1('0x19')](_0x57c81a,function(_0x3ebd4f){return _0x3ebd4f[_0x0db1('0x2b')]===_0x22120c;});if(_0x54f282){return BPromise['resolve']({'id':_0x54f282['Id'],'name':_0x54f282['Name'],'phone':_0x54f282[_0x0db1('0x2b')]});}}})['then'](function(_0x1026dc){if(_0x1026dc){logger[_0x0db1('0x1e')](_0x0db1('0x2c'),_0x22120c);return BPromise[_0x0db1('0x21')](_0x1026dc);}else{logger[_0x0db1('0x1e')]('Enduser\x20with\x20phone\x20%s\x20not\x20found.',_0x22120c);var _0x185857={'LastName':_0x654d77!=='<unknown>'?_0x654d77:util[_0x0db1('0x2d')](_0x0db1('0x2e'),_0x22120c),'Phone':_0x22120c};if(_0x1682c1['moduleCreate']){if(_0x1682c1[_0x0db1('0x2f')]===_0x0db1('0x28')){logger[_0x0db1('0x1e')](_0x0db1('0x30'),_0x22120c,_0x1682c1[_0x0db1('0x2f')]);}else if(_0x1682c1[_0x0db1('0x2f')]===_0x0db1('0x29')&&_0x1682c1[_0x0db1('0x15')]===_0x0db1('0x31')){logger[_0x0db1('0x1e')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x22120c,_0x1682c1[_0x0db1('0x2f')]);_0x185857['Company']=_0x0db1('0x32');}else{return null;}}return _0x39401f[_0x0db1('0x14')](_[_0x0db1('0x33')](_0x1682c1[_0x0db1('0x2f')]))[_0x0db1('0x34')](_0x185857);}});}function getCustomFields(_0x191923,_0x1c6e7c){var _0x32dde6={};if(_0x191923[_0x0db1('0x1b')]>0x0){_[_0x0db1('0x35')](_0x191923,function(_0x2f3d18){if(_0x2f3d18['type']===_0x0db1('0x36')&&_0x2f3d18[_0x0db1('0x37')]){_0x32dde6[_0x2f3d18[_0x0db1('0x37')]]=_0x2f3d18[_0x0db1('0x38')][_0x0db1('0x39')]();}else if(_0x2f3d18[_0x0db1('0x3a')]===_0x0db1('0x3b')&&_0x2f3d18[_0x0db1('0x3c')]&&_0x2f3d18[_0x0db1('0x37')]){_0x1c6e7c[_0x2f3d18[_0x0db1('0x3c')]]&&(_0x32dde6[_0x2f3d18['idField']]=_0x1c6e7c[_0x2f3d18['variableName']][_0x0db1('0x39')]());}else if(_0x2f3d18['type']===_0x0db1('0x3d')&&_0x2f3d18['Variable']&&_0x2f3d18['Variable'][_0x0db1('0x3e')]&&_0x2f3d18[_0x0db1('0x37')]){_0x1c6e7c[_0x2f3d18[_0x0db1('0x3f')]['name']['toLowerCase']()]&&(_0x32dde6[_0x2f3d18['idField']]=_0x1c6e7c[_0x2f3d18['Variable'][_0x0db1('0x3e')][_0x0db1('0x40')]()][_0x0db1('0x39')]());}});}return _0x32dde6;}function getConnection(_0x24fd7a){var _0x1cfb0a=_0x24fd7a[_0x0db1('0x41')]['concat'](_0x24fd7a[_0x0db1('0x42')]);var _0x30c577=new jsforce[(_0x0db1('0x43'))]({'oauth2':{'loginUrl':_0x24fd7a[_0x0db1('0x44')]||_0x0db1('0x45'),'clientId':_0x24fd7a[_0x0db1('0x46')],'clientSecret':_0x24fd7a[_0x0db1('0x47')]}});return _0x30c577['login'](_0x24fd7a[_0x0db1('0x48')],_0x1cfb0a)['then'](function(){logger[_0x0db1('0x1e')](_0x0db1('0x49'));return _0x30c577;});}exports[_0x0db1('0x4a')]=function(_0x551a5e,_0x54e2ae,_0x4b586a,_0x2bf81a,_0x4549a9,_0xbf33c6){var _0x458a97,_0x2af5ce,_0x6b762b,_0x33fdc7;_0xbf33c6[_0x0db1('0x4b')]=intUtil[_0x0db1('0x4c')](_0xbf33c6[_0x0db1('0x4b')]);_0xbf33c6[_0x0db1('0x44')]=intUtil[_0x0db1('0x4c')](_0xbf33c6['remoteUri']);if(_0x4549a9&&_0x4549a9[_0x0db1('0x4d')]){logger[_0x0db1('0x1e')](_0x0db1('0x4e'),_0x0db1('0x4f'));_0x54e2ae[_0x0db1('0x50')]=util[_0x0db1('0x2d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xbf33c6[_0x0db1('0x4b')],_0x54e2ae[_0x0db1('0x51')],md5(_0x54e2ae[_0x0db1('0x51')]));}else{_0x54e2ae[_0x0db1('0x50')]='';}return getConnection(_0xbf33c6)['then'](function(_0x1e1305){_0x33fdc7=_0x1e1305;return getUser(_0xbf33c6,_0x2bf81a[_0x0db1('0x52')],_0x33fdc7);})[_0x0db1('0x1a')](function(_0x3ef604){_0x458a97=_0x3ef604;return getEndUser(_0xbf33c6,_0x4b586a,_0x54e2ae['calleridname'],_0x54e2ae[_0x0db1('0x53')],_0x33fdc7);})[_0x0db1('0x1a')](function(_0x5a2a0d){_0x2af5ce=_0x5a2a0d;return getTicket(_0xbf33c6,_0x458a97,_0x2af5ce,_0x4b586a,_0x54e2ae,_0x4b586a[_0x0db1('0x54')],_0x33fdc7,'queue');})[_0x0db1('0x1a')](function(_0x92c858){_0x6b762b=_0x92c858;logger[_0x0db1('0x1e')](_0x0db1('0x55'),_0x6b762b['id']);logger[_0x0db1('0x1e')](_0x0db1('0x56'),_0x6b762b['id'],_0x2bf81a[_0x0db1('0x3e')],_0xbf33c6[_0x0db1('0x3a')]);switch(_0xbf33c6[_0x0db1('0x3a')]){case _0x0db1('0x57'):emit(util['format'](_0x0db1('0x58'),_0x2bf81a['name']),'trigger:salesforce:display',{'recordId':_0x6b762b['id']});break;case _0x0db1('0x59'):emit(util[_0x0db1('0x2d')](_0x0db1('0x58'),_0x2bf81a[_0x0db1('0x3e')]),_0x0db1('0x5a'),{'uri':util['format'](_0x0db1('0x5b'),_0x33fdc7[_0x0db1('0x5c')],_0x6b762b['id'])});break;default:logger[_0x0db1('0x5d')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x0db1('0x5e')](function(_0x579129){logger[_0x0db1('0x5d')](_0x0db1('0x4e'),JSON['stringify'](_0x579129));});};exports[_0x0db1('0x5f')]=function(_0x2cff2e,_0x958c72,_0x3d7b05,_0x3625e9,_0x1c3d7a,_0x498242,_0x15f68c){var _0x20efc0,_0x51618f,_0x438b1e,_0x49006b;_0x498242[_0x0db1('0x4b')]=intUtil[_0x0db1('0x4c')](_0x498242[_0x0db1('0x4b')]);_0x498242[_0x0db1('0x44')]=intUtil[_0x0db1('0x4c')](_0x498242[_0x0db1('0x44')]);if(_0x15f68c&&_0x15f68c[_0x0db1('0x60')]&&_0x15f68c['recordingFormat']!=='none'){logger[_0x0db1('0x1e')](_0x0db1('0x61'),'Recording\x20is\x20enabled!');_0x958c72['recordingURL']=util[_0x0db1('0x2d')](_0x0db1('0x62'),_0x498242['serverUrl'],_0x958c72[_0x0db1('0x51')],md5(_0x958c72['uniqueid']));}return getConnection(_0x498242)[_0x0db1('0x1a')](function(_0x35d44f){_0x49006b=_0x35d44f;return getUser(_0x498242,_0x3625e9[_0x0db1('0x52')],_0x49006b);})['then'](function(_0x1de84e){_0x20efc0=_0x1de84e;return getEndUser(_0x498242,_0x3d7b05,_0x958c72[_0x0db1('0x63')],_0x958c72[_0x0db1('0x64')],_0x49006b);})[_0x0db1('0x1a')](function(_0x2a02c0){_0x51618f=_0x2a02c0;return getTicket(_0x498242,_0x20efc0,_0x51618f,_0x3d7b05,_0x958c72,_0x3d7b05[_0x0db1('0x54')],_0x49006b,_0x0db1('0x5f'));})['then'](function(_0x3688b5){_0x438b1e=_0x3688b5;logger[_0x0db1('0x1e')](_0x0db1('0x65'),_0x438b1e['id']);logger['info'](_0x0db1('0x66'),_0x438b1e['id'],_0x3625e9['name'],_0x498242['type']);switch(_0x498242['type']){case'integrationTab':emit(util[_0x0db1('0x2d')](_0x0db1('0x58'),_0x3625e9[_0x0db1('0x3e')]),'trigger:salesforce:display',{'recordId':_0x438b1e['id']});break;case _0x0db1('0x59'):emit(util[_0x0db1('0x2d')](_0x0db1('0x58'),_0x3625e9[_0x0db1('0x3e')]),_0x0db1('0x5a'),{'uri':util[_0x0db1('0x2d')](_0x0db1('0x5b'),_0x49006b[_0x0db1('0x5c')],_0x438b1e['id'])});break;default:logger[_0x0db1('0x5d')]('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x0db1('0x5e')](function(_0x184420){logger[_0x0db1('0x5d')](_0x0db1('0x61'),JSON[_0x0db1('0x67')](_0x184420));});};exports['unmanaged']=function(_0x1b6e0d,_0x80e740,_0x3b83c6,_0x2b279c,_0xcc5cbb,_0x3d9da8){var _0x2f17ec,_0xc9e929,_0x29f5c2,_0x150159;_0x3d9da8[_0x0db1('0x4b')]=intUtil[_0x0db1('0x4c')](_0x3d9da8['serverUrl']);_0x3d9da8['remoteUri']=intUtil[_0x0db1('0x4c')](_0x3d9da8[_0x0db1('0x44')]);if(_0xcc5cbb&&_0xcc5cbb['monitor_format']){logger[_0x0db1('0x1e')]('['+_0x80e740[_0x0db1('0x68')][_0x0db1('0x69')]()+']','Recording\x20is\x20enabled!');_0x80e740[_0x0db1('0x50')]=util[_0x0db1('0x2d')](_0x0db1('0x62'),_0x3d9da8['serverUrl'],_0x80e740[_0x0db1('0x51')],md5(_0x80e740[_0x0db1('0x51')]));}else{_0x80e740[_0x0db1('0x50')]='';}return getConnection(_0x3d9da8)[_0x0db1('0x1a')](function(_0x459628){_0x150159=_0x459628;if(!_[_0x0db1('0x16')](_0x2b279c)){return getUser(_0x3d9da8,_0x2b279c[_0x0db1('0x3e')],_0x150159);}else{return getUser(_0x3d9da8,null,_0x150159);}})[_0x0db1('0x1a')](function(_0x18cff4){_0x2f17ec=_0x18cff4;return getEndUser(_0x3d9da8,_0x3b83c6,_0x80e740[_0x0db1('0x6a')],_0x80e740[_0x0db1('0x53')],_0x150159);})['then'](function(_0x360f30){_0xc9e929=_0x360f30;return getTicket(_0x3d9da8,_0x2f17ec,_0xc9e929,_0x3b83c6,_0x80e740,_0x3b83c6[_0x0db1('0x54')],_0x150159);})[_0x0db1('0x1a')](function(_0x592d76){_0x29f5c2=_0x592d76;logger[_0x0db1('0x1e')]('['+_0x80e740[_0x0db1('0x68')]['toUpperCase']()+_0x0db1('0x6b'),_0x29f5c2['id']);logger[_0x0db1('0x1e')]('['+_0x80e740['lastevent']['toUpperCase']()+_0x0db1('0x6c'),_0x3d9da8['type']);})[_0x0db1('0x5e')](function(_0x35f37e){logger[_0x0db1('0x5d')]('['+_0x80e740[_0x0db1('0x68')][_0x0db1('0x69')]()+']',JSON[_0x0db1('0x67')](_0x35f37e));});};