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 _0x8667=['defaults','localhost','socket.io-emitter','emit','ticketType','assign','getString','Subjects','Descriptions','WhoId','Case','sobject','isNil','validateEmail','User','find','execute','length','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','then','user_id','display_name','Task','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','Contact','Lead','contact','lead','Phone','Enduser\x20with\x20phone\x20%s\x20not\x20found.','<unknown>','Caller\x20-\x20%s','moduleCreate','Company','No\x20Company','upperFirst','create','forEach','string','idField','toString','type','variableName','customVariable','Variable','name','toLowerCase','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','format','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','[QUEUE]','outbound','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','[OUTBOUND]','stringify','unmanaged','toUpperCase','calleridname','lastevent',']\x20Integration\x20account\x20type\x20%s.','lodash','moment','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis'];(function(_0x823c3c,_0x5d4723){var _0x3004c2=function(_0x372019){while(--_0x372019){_0x823c3c['push'](_0x823c3c['shift']());}};_0x3004c2(++_0x5d4723);}(_0x8667,0x1b5));var _0x7866=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8667[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x7866('0x0'));var rp=require('request-promise');var moment=require(_0x7866('0x1'));var BPromise=require('bluebird');var md5=require(_0x7866('0x2'));var jsforce=require(_0x7866('0x3'));var util=require(_0x7866('0x4'));var Redis=require(_0x7866('0x5'));var intUtil=require(_0x7866('0x6'));var config=require(_0x7866('0x7'));var logger=require(_0x7866('0x8'))(_0x7866('0x9'));config[_0x7866('0xa')]=_[_0x7866('0xb')](config[_0x7866('0xa')],{'host':_0x7866('0xc'),'port':0x18eb});var io=require(_0x7866('0xd'))(new Redis(config[_0x7866('0xa')]));function emit(_0x4bc7d9,_0x2d62ef,_0x31c703){io['to'](_0x4bc7d9)[_0x7866('0xe')](_0x2d62ef,_0x31c703);}function getTicket(_0x252808,_0x1ecf79,_0x247e45,_0x2400e9,_0x4fb6b9,_0x30779f,_0x5e2d77,_0x4e1ebf){var _0x22e683={};if(_0x2400e9[_0x7866('0xf')]==='Task'){_0x22e683=Object[_0x7866('0x10')]({},{'OwnerId':_0x1ecf79['id'],'ActivityDate':moment['utc'](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0x7866('0x11')](_0x2400e9[_0x7866('0x12')],_0x4fb6b9,'\x20'),'Description':intUtil[_0x7866('0x11')](_0x2400e9[_0x7866('0x13')],_0x4fb6b9,'\x0a')},getCustomFields(_0x30779f,_0x4fb6b9));if(_0x247e45){_0x22e683[_0x7866('0x14')]=_0x247e45['id'];}}else if(_0x2400e9[_0x7866('0xf')]===_0x7866('0x15')){_0x22e683=Object[_0x7866('0x10')]({},{'OwnerId':_0x1ecf79['id'],'Subject':intUtil[_0x7866('0x11')](_0x2400e9[_0x7866('0x12')],_0x4fb6b9,'\x20'),'Description':intUtil['getString'](_0x2400e9[_0x7866('0x13')],_0x4fb6b9,'\x0a')},getCustomFields(_0x30779f,_0x4fb6b9));if(_0x247e45){_0x22e683['ContactId']=_0x247e45['id'];}}return _0x5e2d77[_0x7866('0x16')](_0x2400e9[_0x7866('0xf')])['create'](_0x22e683);}function getUser(_0x27a65c,_0x533ac6,_0x527b52){if(!_[_0x7866('0x17')](_0x533ac6)&&intUtil[_0x7866('0x18')](_0x533ac6)){var _0x2700b1={'Email':_0x533ac6};var _0x593ffe={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x527b52[_0x7866('0x16')](_0x7866('0x19'))[_0x7866('0x1a')](_0x2700b1,_0x593ffe)[_0x7866('0x1b')]()['then'](function(_0x4efd24){if(_0x4efd24[_0x7866('0x1c')]){var _0x5ad264=_[_0x7866('0x1a')](_0x4efd24,function(_0x4da1f9){return _0x4da1f9['Email']===_0x533ac6;});if(_0x5ad264){logger[_0x7866('0x1d')](_0x7866('0x1e'),_0x533ac6);return BPromise[_0x7866('0x1f')]({'id':_0x5ad264['Id'],'name':_0x5ad264[_0x7866('0x20')]});}}else{logger[_0x7866('0x1d')](_0x7866('0x21'),_0x533ac6);return _0x527b52[_0x7866('0x22')]()[_0x7866('0x23')](function(_0x549bee){return BPromise['resolve']({'id':_0x549bee[_0x7866('0x24')],'name':_0x549bee['display_name']});});}});}else{logger[_0x7866('0x1d')](_0x7866('0x21'),_0x533ac6);return _0x527b52[_0x7866('0x22')]()[_0x7866('0x23')](function(_0x542a87){return BPromise[_0x7866('0x1f')]({'id':_0x542a87[_0x7866('0x24')],'name':_0x542a87[_0x7866('0x25')]});});}}function getEndUser(_0x441a20,_0x16326b,_0x2ff4c6,_0x508c37,_0x50b01d){var _0x1716d5={'Phone':_0x508c37};var _0x1321eb={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x7866('0x1f')]()[_0x7866('0x23')](function(){if(_0x16326b[_0x7866('0xf')]===_0x7866('0x26')){logger['info'](_0x7866('0x27'),_0x508c37,_0x16326b[_0x7866('0x28')]);switch(_0x16326b[_0x7866('0x28')]){case _0x7866('0x29'):return _0x50b01d[_0x7866('0x16')](_0x7866('0x2a'))[_0x7866('0x1a')](_0x1716d5,_0x1321eb)[_0x7866('0x1b')]()[_0x7866('0x23')](function(_0x295e42){if(_0x295e42&&_0x295e42[_0x7866('0x1c')]){return _0x295e42;}else{return _0x50b01d[_0x7866('0x16')](_0x7866('0x2b'))['find'](_0x1716d5,_0x1321eb);}});case _0x7866('0x2c'):return _0x50b01d[_0x7866('0x16')](_0x7866('0x2a'))['find'](_0x1716d5,_0x1321eb)[_0x7866('0x1b')]();case _0x7866('0x2d'):return _0x50b01d[_0x7866('0x16')]('Lead')[_0x7866('0x1a')](_0x1716d5,_0x1321eb);default:return null;}}else if(_0x16326b[_0x7866('0xf')]===_0x7866('0x15')){logger['info'](_0x7866('0x27'),_0x508c37,'contact');return _0x50b01d[_0x7866('0x16')](_0x7866('0x2a'))[_0x7866('0x1a')](_0x1716d5,_0x1321eb)[_0x7866('0x1b')]();}})[_0x7866('0x23')](function(_0x4aa940){if(_0x4aa940&&_0x4aa940[_0x7866('0x1c')]){var _0x269ce3=_[_0x7866('0x1a')](_0x4aa940,function(_0x2accec){return _0x2accec[_0x7866('0x2e')]===_0x508c37;});if(_0x269ce3){return BPromise[_0x7866('0x1f')]({'id':_0x269ce3['Id'],'name':_0x269ce3['Name'],'phone':_0x269ce3[_0x7866('0x2e')]});}}})[_0x7866('0x23')](function(_0x262219){if(_0x262219){logger[_0x7866('0x1d')]('Enduser\x20with\x20phone\x20%s\x20found.',_0x508c37);return BPromise[_0x7866('0x1f')](_0x262219);}else{logger[_0x7866('0x1d')](_0x7866('0x2f'),_0x508c37);var _0x22d581={'LastName':_0x2ff4c6!==_0x7866('0x30')?_0x2ff4c6:util['format'](_0x7866('0x31'),_0x508c37),'Phone':_0x508c37};if(_0x16326b[_0x7866('0x32')]){if(_0x16326b[_0x7866('0x32')]===_0x7866('0x2c')){logger[_0x7866('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x508c37,_0x16326b[_0x7866('0x32')]);}else if(_0x16326b[_0x7866('0x32')]===_0x7866('0x2d')&&_0x16326b[_0x7866('0xf')]===_0x7866('0x26')){logger[_0x7866('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x508c37,_0x16326b[_0x7866('0x32')]);_0x22d581[_0x7866('0x33')]=_0x7866('0x34');}else{return null;}}return _0x50b01d[_0x7866('0x16')](_[_0x7866('0x35')](_0x16326b[_0x7866('0x32')]))[_0x7866('0x36')](_0x22d581);}});}function getCustomFields(_0x1a66da,_0x159db0){var _0x5e1fa9={};if(_0x1a66da[_0x7866('0x1c')]>0x0){_[_0x7866('0x37')](_0x1a66da,function(_0xdd21fb){if(_0xdd21fb['type']===_0x7866('0x38')&&_0xdd21fb[_0x7866('0x39')]){_0x5e1fa9[_0xdd21fb[_0x7866('0x39')]]=_0xdd21fb['content'][_0x7866('0x3a')]();}else if(_0xdd21fb[_0x7866('0x3b')]==='variable'&&_0xdd21fb[_0x7866('0x3c')]&&_0xdd21fb[_0x7866('0x39')]){_0x159db0[_0xdd21fb[_0x7866('0x3c')]]&&(_0x5e1fa9[_0xdd21fb[_0x7866('0x39')]]=_0x159db0[_0xdd21fb[_0x7866('0x3c')]][_0x7866('0x3a')]());}else if(_0xdd21fb[_0x7866('0x3b')]===_0x7866('0x3d')&&_0xdd21fb[_0x7866('0x3e')]&&_0xdd21fb[_0x7866('0x3e')]['name']&&_0xdd21fb[_0x7866('0x39')]){_0x159db0[_0xdd21fb[_0x7866('0x3e')][_0x7866('0x3f')][_0x7866('0x40')]()]&&(_0x5e1fa9[_0xdd21fb[_0x7866('0x39')]]=_0x159db0[_0xdd21fb['Variable']['name'][_0x7866('0x40')]()][_0x7866('0x3a')]());}});}return _0x5e1fa9;}function getConnection(_0x37fa9f){var _0x177f72=_0x37fa9f[_0x7866('0x41')][_0x7866('0x42')](_0x37fa9f[_0x7866('0x43')]);var _0x38d925=new jsforce[(_0x7866('0x44'))]({'oauth2':{'loginUrl':_0x37fa9f[_0x7866('0x45')]||_0x7866('0x46'),'clientId':_0x37fa9f[_0x7866('0x47')],'clientSecret':_0x37fa9f[_0x7866('0x48')]}});return _0x38d925[_0x7866('0x49')](_0x37fa9f[_0x7866('0x4a')],_0x177f72)['then'](function(){logger['info'](_0x7866('0x4b'));return _0x38d925;});}exports[_0x7866('0x4c')]=function(_0x486fca,_0x2b3057,_0x1445fc,_0x3e988f,_0x425457,_0x1e6101){var _0x3aec1f,_0x4b5f19,_0x55f23a,_0x585167;_0x1e6101['serverUrl']=intUtil[_0x7866('0x4d')](_0x1e6101[_0x7866('0x4e')]);_0x1e6101[_0x7866('0x45')]=intUtil[_0x7866('0x4d')](_0x1e6101['remoteUri']);if(_0x425457&&_0x425457[_0x7866('0x4f')]){logger[_0x7866('0x1d')]('[QUEUE]','Recording\x20is\x20enabled!');_0x2b3057['recordingURL']=util['format'](_0x7866('0x50'),_0x1e6101[_0x7866('0x4e')],_0x2b3057[_0x7866('0x51')],md5(_0x2b3057['uniqueid']));}else{_0x2b3057[_0x7866('0x52')]='';}return getConnection(_0x1e6101)[_0x7866('0x23')](function(_0x52e955){_0x585167=_0x52e955;return getUser(_0x1e6101,_0x3e988f[_0x7866('0x53')],_0x585167);})[_0x7866('0x23')](function(_0x1e8e0b){_0x3aec1f=_0x1e8e0b;return getEndUser(_0x1e6101,_0x1445fc,_0x2b3057['calleridname'],_0x2b3057['calleridnum'],_0x585167);})['then'](function(_0x40ed81){_0x4b5f19=_0x40ed81;return getTicket(_0x1e6101,_0x3aec1f,_0x4b5f19,_0x1445fc,_0x2b3057,_0x1445fc[_0x7866('0x54')],_0x585167,'queue');})[_0x7866('0x23')](function(_0x2bfb2b){_0x55f23a=_0x2bfb2b;logger[_0x7866('0x1d')](_0x7866('0x55'),_0x55f23a['id']);logger[_0x7866('0x1d')](_0x7866('0x56'),_0x55f23a['id'],_0x3e988f[_0x7866('0x3f')],_0x1e6101[_0x7866('0x3b')]);switch(_0x1e6101[_0x7866('0x3b')]){case _0x7866('0x57'):emit(util[_0x7866('0x58')](_0x7866('0x59'),_0x3e988f[_0x7866('0x3f')]),_0x7866('0x5a'),{'recordId':_0x55f23a['id']});break;case _0x7866('0x5b'):emit(util['format'](_0x7866('0x59'),_0x3e988f['name']),_0x7866('0x5c'),{'uri':util['format'](_0x7866('0x5d'),_0x585167[_0x7866('0x5e')],_0x55f23a['id'])});break;default:logger[_0x7866('0x5f')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x7866('0x60')](function(_0x200d33){logger[_0x7866('0x5f')](_0x7866('0x61'),JSON['stringify'](_0x200d33));});};exports[_0x7866('0x62')]=function(_0x18a4a6,_0x34d976,_0x5bf4e6,_0x71844d,_0x52e485,_0x5091c3,_0x147cbe){var _0x575391,_0x56d844,_0x53a1da,_0x5d9e98;_0x5091c3[_0x7866('0x4e')]=intUtil['stripTrailingSlash'](_0x5091c3[_0x7866('0x4e')]);_0x5091c3[_0x7866('0x45')]=intUtil[_0x7866('0x4d')](_0x5091c3['remoteUri']);if(_0x147cbe&&_0x147cbe[_0x7866('0x63')]&&_0x147cbe[_0x7866('0x63')]!==_0x7866('0x64')){logger[_0x7866('0x1d')]('[OUTBOUND]',_0x7866('0x65'));_0x34d976[_0x7866('0x52')]=util[_0x7866('0x58')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5091c3[_0x7866('0x4e')],_0x34d976[_0x7866('0x51')],md5(_0x34d976['uniqueid']));}return getConnection(_0x5091c3)['then'](function(_0xe6d2c9){_0x5d9e98=_0xe6d2c9;return getUser(_0x5091c3,_0x71844d[_0x7866('0x53')],_0x5d9e98);})[_0x7866('0x23')](function(_0x101fec){_0x575391=_0x101fec;return getEndUser(_0x5091c3,_0x5bf4e6,_0x34d976[_0x7866('0x66')],_0x34d976['destcalleridnum'],_0x5d9e98);})['then'](function(_0x33fce8){_0x56d844=_0x33fce8;return getTicket(_0x5091c3,_0x575391,_0x56d844,_0x5bf4e6,_0x34d976,_0x5bf4e6[_0x7866('0x54')],_0x5d9e98,'outbound');})[_0x7866('0x23')](function(_0x19969d){_0x53a1da=_0x19969d;logger[_0x7866('0x1d')](_0x7866('0x67'),_0x53a1da['id']);logger['info'](_0x7866('0x68'),_0x53a1da['id'],_0x71844d['name'],_0x5091c3[_0x7866('0x3b')]);switch(_0x5091c3[_0x7866('0x3b')]){case _0x7866('0x57'):emit(util[_0x7866('0x58')](_0x7866('0x59'),_0x71844d['name']),'trigger:salesforce:display',{'recordId':_0x53a1da['id']});break;case _0x7866('0x5b'):emit(util['format'](_0x7866('0x59'),_0x71844d[_0x7866('0x3f')]),_0x7866('0x5c'),{'uri':util['format'](_0x7866('0x5d'),_0x5d9e98['instanceUrl'],_0x53a1da['id'])});break;default:logger[_0x7866('0x5f')](_0x7866('0x69'),'Salesforce\x20account\x20type\x20not\x20recognized');}})['catch'](function(_0x1dc4b1){logger[_0x7866('0x5f')]('[OUTBOUND]',JSON[_0x7866('0x6a')](_0x1dc4b1));});};exports[_0x7866('0x6b')]=function(_0x1ade37,_0x341d3d,_0x28d755,_0x1b51dc,_0x4e29e6,_0x3729aa){var _0x3d82bf,_0x51f97e,_0x25271e,_0x16f680;_0x3729aa[_0x7866('0x4e')]=intUtil[_0x7866('0x4d')](_0x3729aa['serverUrl']);_0x3729aa['remoteUri']=intUtil[_0x7866('0x4d')](_0x3729aa[_0x7866('0x45')]);if(_0x4e29e6&&_0x4e29e6['monitor_format']){logger['info']('['+_0x341d3d['lastevent'][_0x7866('0x6c')]()+']',_0x7866('0x65'));_0x341d3d['recordingURL']=util[_0x7866('0x58')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3729aa[_0x7866('0x4e')],_0x341d3d[_0x7866('0x51')],md5(_0x341d3d[_0x7866('0x51')]));}else{_0x341d3d[_0x7866('0x52')]='';}return getConnection(_0x3729aa)['then'](function(_0x1ea2a3){_0x16f680=_0x1ea2a3;if(!_['isNil'](_0x1b51dc)){return getUser(_0x3729aa,_0x1b51dc['name'],_0x16f680);}else{return getUser(_0x3729aa,null,_0x16f680);}})[_0x7866('0x23')](function(_0x38a306){_0x3d82bf=_0x38a306;return getEndUser(_0x3729aa,_0x28d755,_0x341d3d[_0x7866('0x6d')],_0x341d3d['calleridnum'],_0x16f680);})[_0x7866('0x23')](function(_0x51a4de){_0x51f97e=_0x51a4de;return getTicket(_0x3729aa,_0x3d82bf,_0x51f97e,_0x28d755,_0x341d3d,_0x28d755[_0x7866('0x54')],_0x16f680);})['then'](function(_0x31b802){_0x25271e=_0x31b802;logger['info']('['+_0x341d3d[_0x7866('0x6e')]['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x25271e['id']);logger[_0x7866('0x1d')]('['+_0x341d3d[_0x7866('0x6e')][_0x7866('0x6c')]()+_0x7866('0x6f'),_0x3729aa[_0x7866('0x3b')]);})['catch'](function(_0x2baca6){logger[_0x7866('0x5f')]('['+_0x341d3d[_0x7866('0x6e')][_0x7866('0x6c')]()+']',JSON[_0x7866('0x6a')](_0x2baca6));});};