Built motion from commit (unavailable).|2.5.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 _0x629e=['none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','toUpperCase','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','catch','lodash','request-promise','bluebird','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','ticketType','assign','utc','getString','Subjects','Descriptions','Case','ContactId','sobject','create','isNil','validateEmail','User','find','execute','then','info','Agent\x20%s\x20found.','Name','identity','resolve','user_id','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','Task','moduleSearch','contact_lead','Contact','length','Lead','contact','lead','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','Phone','Enduser\x20with\x20phone\x20%s\x20found.','Enduser\x20with\x20phone\x20%s\x20not\x20found.','<unknown>','format','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','No\x20Company','upperFirst','forEach','idField','content','toString','type','variableName','Variable','name','toLowerCase','password','securityToken','Connection','remoteUri','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','[QUEUE]','stringify','outbound','recordingFormat'];(function(_0xab635a,_0x3ca754){var _0x345e0f=function(_0x57fdbf){while(--_0x57fdbf){_0xab635a['push'](_0xab635a['shift']());}};_0x345e0f(++_0x3ca754);}(_0x629e,0x160));var _0xe629=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x629e[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xe629('0x0'));var rp=require(_0xe629('0x1'));var moment=require('moment');var BPromise=require(_0xe629('0x2'));var md5=require('md5');var jsforce=require(_0xe629('0x3'));var util=require(_0xe629('0x4'));var Redis=require('ioredis');var intUtil=require(_0xe629('0x5'));var config=require(_0xe629('0x6'));var logger=require(_0xe629('0x7'))(_0xe629('0x8'));config[_0xe629('0x9')]=_[_0xe629('0xa')](config[_0xe629('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xe629('0xb'))(new Redis(config['redis']));function emit(_0x32c7d4,_0x5d1b79,_0x3c83b2){io['to'](_0x32c7d4)[_0xe629('0xc')](_0x5d1b79,_0x3c83b2);}function getTicket(_0x4ba46d,_0x2e8a75,_0x290a5d,_0x3b90e1,_0x34282a,_0x3f44df,_0x3f7e8c,_0x1fa1fe){var _0xfc9d2={};if(_0x3b90e1[_0xe629('0xd')]==='Task'){_0xfc9d2=Object[_0xe629('0xe')]({},{'OwnerId':_0x2e8a75['id'],'ActivityDate':moment[_0xe629('0xf')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0xe629('0x10')](_0x3b90e1[_0xe629('0x11')],_0x34282a,'\x20'),'Description':intUtil['getString'](_0x3b90e1[_0xe629('0x12')],_0x34282a,'\x0a')},getCustomFields(_0x3f44df,_0x34282a));if(_0x290a5d){_0xfc9d2['WhoId']=_0x290a5d['id'];}}else if(_0x3b90e1[_0xe629('0xd')]===_0xe629('0x13')){_0xfc9d2=Object['assign']({},{'OwnerId':_0x2e8a75['id'],'Subject':intUtil['getString'](_0x3b90e1['Subjects'],_0x34282a,'\x20'),'Description':intUtil[_0xe629('0x10')](_0x3b90e1[_0xe629('0x12')],_0x34282a,'\x0a')},getCustomFields(_0x3f44df,_0x34282a));if(_0x290a5d){_0xfc9d2[_0xe629('0x14')]=_0x290a5d['id'];}}return _0x3f7e8c[_0xe629('0x15')](_0x3b90e1[_0xe629('0xd')])[_0xe629('0x16')](_0xfc9d2);}function getUser(_0x1c9be1,_0x3870bd,_0x588e01){if(!_[_0xe629('0x17')](_0x3870bd)&&intUtil[_0xe629('0x18')](_0x3870bd)){var _0x1cf74e={'Email':_0x3870bd};var _0x2da0e3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x588e01['sobject'](_0xe629('0x19'))[_0xe629('0x1a')](_0x1cf74e,_0x2da0e3)[_0xe629('0x1b')]()[_0xe629('0x1c')](function(_0x19b72a){if(_0x19b72a['length']){var _0x4748b7=_['find'](_0x19b72a,function(_0x3c9538){return _0x3c9538['Email']===_0x3870bd;});if(_0x4748b7){logger[_0xe629('0x1d')](_0xe629('0x1e'),_0x3870bd);return BPromise['resolve']({'id':_0x4748b7['Id'],'name':_0x4748b7[_0xe629('0x1f')]});}}else{logger[_0xe629('0x1d')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x3870bd);return _0x588e01[_0xe629('0x20')]()[_0xe629('0x1c')](function(_0x13cce9){return BPromise[_0xe629('0x21')]({'id':_0x13cce9[_0xe629('0x22')],'name':_0x13cce9[_0xe629('0x23')]});});}});}else{logger[_0xe629('0x1d')](_0xe629('0x24'),_0x3870bd);return _0x588e01[_0xe629('0x20')]()[_0xe629('0x1c')](function(_0x1335ce){return BPromise[_0xe629('0x21')]({'id':_0x1335ce['user_id'],'name':_0x1335ce['display_name']});});}}function getEndUser(_0x5db6c3,_0x5436fa,_0x568ff4,_0x5305a3,_0x3e6cbe){var _0x2abf37={'Phone':_0x5305a3};var _0x504c31={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xe629('0x21')]()['then'](function(){if(_0x5436fa[_0xe629('0xd')]===_0xe629('0x25')){logger[_0xe629('0x1d')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x5305a3,_0x5436fa[_0xe629('0x26')]);switch(_0x5436fa[_0xe629('0x26')]){case _0xe629('0x27'):return _0x3e6cbe[_0xe629('0x15')](_0xe629('0x28'))[_0xe629('0x1a')](_0x2abf37,_0x504c31)[_0xe629('0x1b')]()[_0xe629('0x1c')](function(_0x45fb9d){if(_0x45fb9d&&_0x45fb9d[_0xe629('0x29')]){return _0x45fb9d;}else{return _0x3e6cbe[_0xe629('0x15')](_0xe629('0x2a'))[_0xe629('0x1a')](_0x2abf37,_0x504c31);}});case _0xe629('0x2b'):return _0x3e6cbe[_0xe629('0x15')](_0xe629('0x28'))[_0xe629('0x1a')](_0x2abf37,_0x504c31)[_0xe629('0x1b')]();case _0xe629('0x2c'):return _0x3e6cbe['sobject']('Lead')[_0xe629('0x1a')](_0x2abf37,_0x504c31);default:return null;}}else if(_0x5436fa[_0xe629('0xd')]===_0xe629('0x13')){logger[_0xe629('0x1d')](_0xe629('0x2d'),_0x5305a3,_0xe629('0x2b'));return _0x3e6cbe[_0xe629('0x15')](_0xe629('0x28'))['find'](_0x2abf37,_0x504c31)[_0xe629('0x1b')]();}})[_0xe629('0x1c')](function(_0x585897){if(_0x585897&&_0x585897[_0xe629('0x29')]){var _0x5261d6=_[_0xe629('0x1a')](_0x585897,function(_0x3f4574){return _0x3f4574[_0xe629('0x2e')]===_0x5305a3;});if(_0x5261d6){return BPromise[_0xe629('0x21')]({'id':_0x5261d6['Id'],'name':_0x5261d6[_0xe629('0x1f')],'phone':_0x5261d6[_0xe629('0x2e')]});}}})[_0xe629('0x1c')](function(_0x3fccd6){if(_0x3fccd6){logger[_0xe629('0x1d')](_0xe629('0x2f'),_0x5305a3);return BPromise[_0xe629('0x21')](_0x3fccd6);}else{logger[_0xe629('0x1d')](_0xe629('0x30'),_0x5305a3);var _0x3a512a={'LastName':_0x568ff4!==_0xe629('0x31')?_0x568ff4:util[_0xe629('0x32')]('Caller\x20-\x20%s',_0x5305a3),'Phone':_0x5305a3};if(_0x5436fa[_0xe629('0x33')]){if(_0x5436fa['moduleCreate']==='contact'){logger['info'](_0xe629('0x34'),_0x5305a3,_0x5436fa[_0xe629('0x33')]);}else if(_0x5436fa[_0xe629('0x33')]==='lead'&&_0x5436fa[_0xe629('0xd')]===_0xe629('0x25')){logger[_0xe629('0x1d')](_0xe629('0x34'),_0x5305a3,_0x5436fa['moduleCreate']);_0x3a512a[_0xe629('0x35')]=_0xe629('0x36');}else{return null;}}return _0x3e6cbe['sobject'](_[_0xe629('0x37')](_0x5436fa['moduleCreate']))[_0xe629('0x16')](_0x3a512a);}});}function getCustomFields(_0x492157,_0x205569){var _0x54089b={};if(_0x492157[_0xe629('0x29')]>0x0){_[_0xe629('0x38')](_0x492157,function(_0x5e0d75){if(_0x5e0d75['type']==='string'&&_0x5e0d75[_0xe629('0x39')]){_0x54089b[_0x5e0d75['idField']]=_0x5e0d75[_0xe629('0x3a')][_0xe629('0x3b')]();}else if(_0x5e0d75[_0xe629('0x3c')]==='variable'&&_0x5e0d75[_0xe629('0x3d')]&&_0x5e0d75[_0xe629('0x39')]){_0x205569[_0x5e0d75['variableName']]&&(_0x54089b[_0x5e0d75['idField']]=_0x205569[_0x5e0d75[_0xe629('0x3d')]][_0xe629('0x3b')]());}else if(_0x5e0d75['type']==='customVariable'&&_0x5e0d75[_0xe629('0x3e')]&&_0x5e0d75[_0xe629('0x3e')][_0xe629('0x3f')]&&_0x5e0d75[_0xe629('0x39')]){_0x205569[_0x5e0d75[_0xe629('0x3e')][_0xe629('0x3f')][_0xe629('0x40')]()]&&(_0x54089b[_0x5e0d75['idField']]=_0x205569[_0x5e0d75[_0xe629('0x3e')]['name']['toLowerCase']()][_0xe629('0x3b')]());}});}return _0x54089b;}function getConnection(_0x3840ce){var _0x512940=_0x3840ce[_0xe629('0x41')]['concat'](_0x3840ce[_0xe629('0x42')]);var _0x436b4c=new jsforce[(_0xe629('0x43'))]({'oauth2':{'loginUrl':_0x3840ce[_0xe629('0x44')]||'https://login.salesforce.com','clientId':_0x3840ce[_0xe629('0x45')],'clientSecret':_0x3840ce[_0xe629('0x46')]}});return _0x436b4c[_0xe629('0x47')](_0x3840ce[_0xe629('0x48')],_0x512940)['then'](function(){logger[_0xe629('0x1d')](_0xe629('0x49'));return _0x436b4c;});}exports[_0xe629('0x4a')]=function(_0xa53b21,_0x6e1836,_0xd729b9,_0xd61dd7,_0x50e9f8,_0x164e3f){var _0xf5f306,_0x5f0e27,_0x1ce04e,_0x4e0310;_0x164e3f[_0xe629('0x4b')]=intUtil[_0xe629('0x4c')](_0x164e3f[_0xe629('0x4b')]);_0x164e3f[_0xe629('0x44')]=intUtil[_0xe629('0x4c')](_0x164e3f['remoteUri']);if(_0x50e9f8&&_0x50e9f8[_0xe629('0x4d')]){logger[_0xe629('0x1d')]('[QUEUE]',_0xe629('0x4e'));_0x6e1836[_0xe629('0x4f')]=util[_0xe629('0x32')](_0xe629('0x50'),_0x164e3f[_0xe629('0x4b')],_0x6e1836[_0xe629('0x51')],md5(_0x6e1836[_0xe629('0x51')]));}else{_0x6e1836[_0xe629('0x4f')]='';}return getConnection(_0x164e3f)[_0xe629('0x1c')](function(_0xdab0d2){_0x4e0310=_0xdab0d2;return getUser(_0x164e3f,_0xd61dd7[_0xe629('0x52')],_0x4e0310);})[_0xe629('0x1c')](function(_0x816ab7){_0xf5f306=_0x816ab7;return getEndUser(_0x164e3f,_0xd729b9,_0x6e1836[_0xe629('0x53')],_0x6e1836[_0xe629('0x54')],_0x4e0310);})[_0xe629('0x1c')](function(_0x221b64){_0x5f0e27=_0x221b64;return getTicket(_0x164e3f,_0xf5f306,_0x5f0e27,_0xd729b9,_0x6e1836,_0xd729b9[_0xe629('0x55')],_0x4e0310,_0xe629('0x4a'));})[_0xe629('0x1c')](function(_0x214708){_0x1ce04e=_0x214708;logger['info'](_0xe629('0x56'),_0x1ce04e['id']);logger[_0xe629('0x1d')](_0xe629('0x57'),_0x1ce04e['id'],_0xd61dd7[_0xe629('0x3f')],_0x164e3f[_0xe629('0x3c')]);switch(_0x164e3f[_0xe629('0x3c')]){case _0xe629('0x58'):emit(util[_0xe629('0x32')](_0xe629('0x59'),_0xd61dd7[_0xe629('0x3f')]),_0xe629('0x5a'),{'recordId':_0x1ce04e['id']});break;case _0xe629('0x5b'):emit(util[_0xe629('0x32')](_0xe629('0x59'),_0xd61dd7[_0xe629('0x3f')]),'trigger:browser:url',{'uri':util[_0xe629('0x32')](_0xe629('0x5c'),_0x4e0310[_0xe629('0x5d')],_0x1ce04e['id'])});break;default:logger[_0xe629('0x5e')](_0xe629('0x5f'));}})['catch'](function(_0x16d376){logger[_0xe629('0x5e')](_0xe629('0x60'),JSON[_0xe629('0x61')](_0x16d376));});};exports[_0xe629('0x62')]=function(_0x545310,_0x36aaf4,_0x30bda6,_0x5281b3,_0x406319,_0x42ce19,_0x558f20){var _0x514936,_0x3f3a46,_0x201080,_0x174dc3;_0x42ce19[_0xe629('0x4b')]=intUtil[_0xe629('0x4c')](_0x42ce19[_0xe629('0x4b')]);_0x42ce19[_0xe629('0x44')]=intUtil[_0xe629('0x4c')](_0x42ce19['remoteUri']);if(_0x558f20&&_0x558f20[_0xe629('0x63')]&&_0x558f20['recordingFormat']!==_0xe629('0x64')){logger[_0xe629('0x1d')](_0xe629('0x65'),'Recording\x20is\x20enabled!');_0x36aaf4[_0xe629('0x4f')]=util[_0xe629('0x32')](_0xe629('0x50'),_0x42ce19[_0xe629('0x4b')],_0x36aaf4[_0xe629('0x51')],md5(_0x36aaf4[_0xe629('0x51')]));}return getConnection(_0x42ce19)['then'](function(_0x2eceb2){_0x174dc3=_0x2eceb2;return getUser(_0x42ce19,_0x5281b3[_0xe629('0x52')],_0x174dc3);})[_0xe629('0x1c')](function(_0x16551b){_0x514936=_0x16551b;return getEndUser(_0x42ce19,_0x30bda6,_0x36aaf4[_0xe629('0x66')],_0x36aaf4[_0xe629('0x67')],_0x174dc3);})[_0xe629('0x1c')](function(_0xd922db){_0x3f3a46=_0xd922db;return getTicket(_0x42ce19,_0x514936,_0x3f3a46,_0x30bda6,_0x36aaf4,_0x30bda6[_0xe629('0x55')],_0x174dc3,_0xe629('0x62'));})[_0xe629('0x1c')](function(_0x306827){_0x201080=_0x306827;logger['info'](_0xe629('0x68'),_0x201080['id']);logger[_0xe629('0x1d')](_0xe629('0x69'),_0x201080['id'],_0x5281b3['name'],_0x42ce19[_0xe629('0x3c')]);switch(_0x42ce19[_0xe629('0x3c')]){case'integrationTab':emit(util[_0xe629('0x32')](_0xe629('0x59'),_0x5281b3[_0xe629('0x3f')]),_0xe629('0x5a'),{'recordId':_0x201080['id']});break;case _0xe629('0x5b'):emit(util[_0xe629('0x32')]('user:%s',_0x5281b3[_0xe629('0x3f')]),'trigger:browser:url',{'uri':util['format'](_0xe629('0x5c'),_0x174dc3[_0xe629('0x5d')],_0x201080['id'])});break;default:logger[_0xe629('0x5e')](_0xe629('0x65'),_0xe629('0x6a'));}})['catch'](function(_0x5363ef){logger['error'](_0xe629('0x65'),JSON[_0xe629('0x61')](_0x5363ef));});};exports[_0xe629('0x6b')]=function(_0x102855,_0x55e2ba,_0x121cc2,_0x1e5b8e,_0x3db91f,_0x5accfc){var _0xb41efc,_0x245d06,_0x1ce1b4,_0x53ce46;_0x5accfc[_0xe629('0x4b')]=intUtil['stripTrailingSlash'](_0x5accfc[_0xe629('0x4b')]);_0x5accfc[_0xe629('0x44')]=intUtil[_0xe629('0x4c')](_0x5accfc[_0xe629('0x44')]);if(_0x3db91f&&_0x3db91f[_0xe629('0x4d')]){logger['info']('['+_0x55e2ba['lastevent'][_0xe629('0x6c')]()+']',_0xe629('0x4e'));_0x55e2ba[_0xe629('0x4f')]=util[_0xe629('0x32')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5accfc[_0xe629('0x4b')],_0x55e2ba[_0xe629('0x51')],md5(_0x55e2ba[_0xe629('0x51')]));}else{_0x55e2ba[_0xe629('0x4f')]='';}return getConnection(_0x5accfc)[_0xe629('0x1c')](function(_0x66bc6){_0x53ce46=_0x66bc6;if(!_[_0xe629('0x17')](_0x1e5b8e)){return getUser(_0x5accfc,_0x1e5b8e['name'],_0x53ce46);}else{return getUser(_0x5accfc,null,_0x53ce46);}})[_0xe629('0x1c')](function(_0x2dc58e){_0xb41efc=_0x2dc58e;return getEndUser(_0x5accfc,_0x121cc2,_0x55e2ba[_0xe629('0x53')],_0x55e2ba[_0xe629('0x54')],_0x53ce46);})[_0xe629('0x1c')](function(_0x43ada7){_0x245d06=_0x43ada7;return getTicket(_0x5accfc,_0xb41efc,_0x245d06,_0x121cc2,_0x55e2ba,_0x121cc2[_0xe629('0x55')],_0x53ce46);})[_0xe629('0x1c')](function(_0x46f9b2){_0x1ce1b4=_0x46f9b2;logger['info']('['+_0x55e2ba[_0xe629('0x6d')]['toUpperCase']()+_0xe629('0x6e'),_0x1ce1b4['id']);logger[_0xe629('0x1d')]('['+_0x55e2ba[_0xe629('0x6d')][_0xe629('0x6c')]()+_0xe629('0x6f'),_0x5accfc[_0xe629('0x3c')]);})[_0xe629('0x70')](function(_0x3076bf){logger[_0xe629('0x5e')]('['+_0x55e2ba[_0xe629('0x6d')]['toUpperCase']()+']',JSON[_0xe629('0x61')](_0x3076bf));});};