c63a392276d6dea896eb7ad9aaa2fdb669f83511
[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 _0xa99d=['forEach','type','string','idField','content','toString','variable','variableName','customVariable','name','Variable','toLowerCase','password','concat','securityToken','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','remoteUri','stripTrailingSlash','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','stringify','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','toUpperCase','isNil','lastevent',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','emit','ticketType','Task','assign','utc','getString','Subjects','Descriptions','WhoId','Case','ContactId','sobject','create','validateEmail','User','find','execute','then','length','Email','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','Contact','Lead','lead','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','contact','Phone','Enduser\x20with\x20phone\x20%s\x20found.','Enduser\x20with\x20phone\x20%s\x20not\x20found.','format','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','No\x20Company','upperFirst'];(function(_0x464047,_0x406cbd){var _0x906907=function(_0x4fb8d3){while(--_0x4fb8d3){_0x464047['push'](_0x464047['shift']());}};_0x906907(++_0x406cbd);}(_0xa99d,0x123));var _0xda99=function(_0x456b57,_0x58691a){_0x456b57=_0x456b57-0x0;var _0x18f49f=_0xa99d[_0x456b57];return _0x18f49f;};'use strict';var _=require(_0xda99('0x0'));var rp=require(_0xda99('0x1'));var moment=require('moment');var BPromise=require(_0xda99('0x2'));var md5=require(_0xda99('0x3'));var jsforce=require('jsforce');var util=require(_0xda99('0x4'));var Redis=require(_0xda99('0x5'));var intUtil=require(_0xda99('0x6'));var config=require(_0xda99('0x7'));var logger=require(_0xda99('0x8'))(_0xda99('0x9'));config[_0xda99('0xa')]=_[_0xda99('0xb')](config[_0xda99('0xa')],{'host':_0xda99('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xda99('0xa')]));function emit(_0x4b95e2,_0x218672,_0x10f1cd){io['to'](_0x4b95e2)[_0xda99('0xd')](_0x218672,_0x10f1cd);}function getTicket(_0x5bd05b,_0x4b1f9f,_0x4ce624,_0x10014b,_0x22cd58,_0x28a8be,_0x7fcd0a,_0x3ec2cb){var _0x50631f={};if(_0x10014b[_0xda99('0xe')]===_0xda99('0xf')){_0x50631f=Object[_0xda99('0x10')]({},{'OwnerId':_0x4b1f9f['id'],'ActivityDate':moment[_0xda99('0x11')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0xda99('0x12')](_0x10014b[_0xda99('0x13')],_0x22cd58,'\x20'),'Description':intUtil[_0xda99('0x12')](_0x10014b[_0xda99('0x14')],_0x22cd58,'\x0a')},getCustomFields(_0x28a8be,_0x22cd58));if(_0x4ce624){_0x50631f[_0xda99('0x15')]=_0x4ce624['id'];}}else if(_0x10014b[_0xda99('0xe')]===_0xda99('0x16')){_0x50631f=Object[_0xda99('0x10')]({},{'OwnerId':_0x4b1f9f['id'],'Subject':intUtil[_0xda99('0x12')](_0x10014b[_0xda99('0x13')],_0x22cd58,'\x20'),'Description':intUtil[_0xda99('0x12')](_0x10014b['Descriptions'],_0x22cd58,'\x0a')},getCustomFields(_0x28a8be,_0x22cd58));if(_0x4ce624){_0x50631f[_0xda99('0x17')]=_0x4ce624['id'];}}return _0x7fcd0a[_0xda99('0x18')](_0x10014b['ticketType'])[_0xda99('0x19')](_0x50631f);}function getUser(_0x3485aa,_0x15c62f,_0x1e32ac){if(!_['isNil'](_0x15c62f)&&intUtil[_0xda99('0x1a')](_0x15c62f)){var _0x24193d={'Email':_0x15c62f};var _0x5b69d3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x1e32ac[_0xda99('0x18')](_0xda99('0x1b'))[_0xda99('0x1c')](_0x24193d,_0x5b69d3)[_0xda99('0x1d')]()[_0xda99('0x1e')](function(_0x118dc8){if(_0x118dc8[_0xda99('0x1f')]){var _0x8274b1=_['find'](_0x118dc8,function(_0x56dd2e){return _0x56dd2e[_0xda99('0x20')]===_0x15c62f;});if(_0x8274b1){logger[_0xda99('0x21')](_0xda99('0x22'),_0x15c62f);return BPromise[_0xda99('0x23')]({'id':_0x8274b1['Id'],'name':_0x8274b1[_0xda99('0x24')]});}}else{logger[_0xda99('0x21')](_0xda99('0x25'),_0x15c62f);return _0x1e32ac[_0xda99('0x26')]()[_0xda99('0x1e')](function(_0x1e58da){return BPromise[_0xda99('0x23')]({'id':_0x1e58da[_0xda99('0x27')],'name':_0x1e58da['display_name']});});}});}else{logger[_0xda99('0x21')](_0xda99('0x25'),_0x15c62f);return _0x1e32ac[_0xda99('0x26')]()[_0xda99('0x1e')](function(_0x379281){return BPromise['resolve']({'id':_0x379281[_0xda99('0x27')],'name':_0x379281[_0xda99('0x28')]});});}}function getEndUser(_0x27ef1c,_0x387a17,_0x33573b,_0x5863d0,_0x57d6a3){var _0x1cc98f={'Phone':_0x5863d0};var _0x3ad338={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xda99('0x23')]()[_0xda99('0x1e')](function(){if(_0x387a17['ticketType']==='Task'){logger[_0xda99('0x21')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x5863d0,_0x387a17[_0xda99('0x29')]);switch(_0x387a17['moduleSearch']){case _0xda99('0x2a'):return _0x57d6a3['sobject'](_0xda99('0x2b'))['find'](_0x1cc98f,_0x3ad338)[_0xda99('0x1d')]()[_0xda99('0x1e')](function(_0x2bdcba){if(_0x2bdcba&&_0x2bdcba[_0xda99('0x1f')]){return _0x2bdcba;}else{return _0x57d6a3[_0xda99('0x18')](_0xda99('0x2c'))[_0xda99('0x1c')](_0x1cc98f,_0x3ad338);}});case'contact':return _0x57d6a3[_0xda99('0x18')]('Contact')[_0xda99('0x1c')](_0x1cc98f,_0x3ad338)[_0xda99('0x1d')]();case _0xda99('0x2d'):return _0x57d6a3[_0xda99('0x18')](_0xda99('0x2c'))[_0xda99('0x1c')](_0x1cc98f,_0x3ad338);default:return null;}}else if(_0x387a17[_0xda99('0xe')]===_0xda99('0x16')){logger[_0xda99('0x21')](_0xda99('0x2e'),_0x5863d0,_0xda99('0x2f'));return _0x57d6a3[_0xda99('0x18')](_0xda99('0x2b'))['find'](_0x1cc98f,_0x3ad338)[_0xda99('0x1d')]();}})['then'](function(_0x4a9b09){if(_0x4a9b09&&_0x4a9b09[_0xda99('0x1f')]){var _0x2c726e=_[_0xda99('0x1c')](_0x4a9b09,function(_0x3f3c2b){return _0x3f3c2b[_0xda99('0x30')]===_0x5863d0;});if(_0x2c726e){return BPromise[_0xda99('0x23')]({'id':_0x2c726e['Id'],'name':_0x2c726e[_0xda99('0x24')],'phone':_0x2c726e[_0xda99('0x30')]});}}})[_0xda99('0x1e')](function(_0x6498d6){if(_0x6498d6){logger[_0xda99('0x21')](_0xda99('0x31'),_0x5863d0);return BPromise[_0xda99('0x23')](_0x6498d6);}else{logger[_0xda99('0x21')](_0xda99('0x32'),_0x5863d0);var _0x235787={'LastName':_0x33573b!=='<unknown>'?_0x33573b:util[_0xda99('0x33')]('Caller\x20-\x20%s',_0x5863d0),'Phone':_0x5863d0};if(_0x387a17[_0xda99('0x34')]){if(_0x387a17['moduleCreate']===_0xda99('0x2f')){logger[_0xda99('0x21')](_0xda99('0x35'),_0x5863d0,_0x387a17[_0xda99('0x34')]);}else if(_0x387a17['moduleCreate']==='lead'&&_0x387a17[_0xda99('0xe')]===_0xda99('0xf')){logger[_0xda99('0x21')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x5863d0,_0x387a17[_0xda99('0x34')]);_0x235787[_0xda99('0x36')]=_0xda99('0x37');}else{return null;}}return _0x57d6a3['sobject'](_[_0xda99('0x38')](_0x387a17['moduleCreate']))[_0xda99('0x19')](_0x235787);}});}function getCustomFields(_0x255bef,_0x2fc95d){var _0x39ca72={};if(_0x255bef[_0xda99('0x1f')]>0x0){_[_0xda99('0x39')](_0x255bef,function(_0x1be3db){if(_0x1be3db[_0xda99('0x3a')]===_0xda99('0x3b')&&_0x1be3db[_0xda99('0x3c')]){_0x39ca72[_0x1be3db[_0xda99('0x3c')]]=_0x1be3db[_0xda99('0x3d')][_0xda99('0x3e')]();}else if(_0x1be3db['type']===_0xda99('0x3f')&&_0x1be3db[_0xda99('0x40')]&&_0x1be3db[_0xda99('0x3c')]){_0x2fc95d[_0x1be3db[_0xda99('0x40')]]&&(_0x39ca72[_0x1be3db[_0xda99('0x3c')]]=_0x2fc95d[_0x1be3db[_0xda99('0x40')]]['toString']());}else if(_0x1be3db[_0xda99('0x3a')]===_0xda99('0x41')&&_0x1be3db['Variable']&&_0x1be3db['Variable'][_0xda99('0x42')]&&_0x1be3db[_0xda99('0x3c')]){_0x2fc95d[_0x1be3db[_0xda99('0x43')][_0xda99('0x42')][_0xda99('0x44')]()]&&(_0x39ca72[_0x1be3db[_0xda99('0x3c')]]=_0x2fc95d[_0x1be3db[_0xda99('0x43')][_0xda99('0x42')][_0xda99('0x44')]()][_0xda99('0x3e')]());}});}return _0x39ca72;}function getConnection(_0x244fce){var _0x2d4ac7=_0x244fce[_0xda99('0x45')][_0xda99('0x46')](_0x244fce[_0xda99('0x47')]);var _0x5f1caf=new jsforce['Connection']({'oauth2':{'loginUrl':_0x244fce['remoteUri']||'https://login.salesforce.com','clientId':_0x244fce[_0xda99('0x48')],'clientSecret':_0x244fce[_0xda99('0x49')]}});return _0x5f1caf[_0xda99('0x4a')](_0x244fce[_0xda99('0x4b')],_0x2d4ac7)['then'](function(){logger['info'](_0xda99('0x4c'));return _0x5f1caf;});}exports[_0xda99('0x4d')]=function(_0x1a1d13,_0x2f4181,_0x1ec581,_0x29db5e,_0x698533,_0x18dcb4){var _0x461f76,_0x3bae2c,_0x37ce62,_0x27debb;_0x18dcb4[_0xda99('0x4e')]=intUtil['stripTrailingSlash'](_0x18dcb4['serverUrl']);_0x18dcb4[_0xda99('0x4f')]=intUtil[_0xda99('0x50')](_0x18dcb4[_0xda99('0x4f')]);if(_0x698533&&_0x698533[_0xda99('0x51')]){logger['info'](_0xda99('0x52'),'Recording\x20is\x20enabled!');_0x2f4181['recordingURL']=util[_0xda99('0x33')](_0xda99('0x53'),_0x18dcb4[_0xda99('0x4e')],_0x2f4181[_0xda99('0x54')],md5(_0x2f4181[_0xda99('0x54')]));}else{_0x2f4181[_0xda99('0x55')]='';}return getConnection(_0x18dcb4)[_0xda99('0x1e')](function(_0x33a291){_0x27debb=_0x33a291;return getUser(_0x18dcb4,_0x29db5e[_0xda99('0x56')],_0x27debb);})[_0xda99('0x1e')](function(_0x28a493){_0x461f76=_0x28a493;return getEndUser(_0x18dcb4,_0x1ec581,_0x2f4181['calleridname'],_0x2f4181[_0xda99('0x57')],_0x27debb);})[_0xda99('0x1e')](function(_0x387764){_0x3bae2c=_0x387764;return getTicket(_0x18dcb4,_0x461f76,_0x3bae2c,_0x1ec581,_0x2f4181,_0x1ec581[_0xda99('0x58')],_0x27debb,_0xda99('0x4d'));})[_0xda99('0x1e')](function(_0x335844){_0x37ce62=_0x335844;logger[_0xda99('0x21')](_0xda99('0x59'),_0x37ce62['id']);logger[_0xda99('0x21')](_0xda99('0x5a'),_0x37ce62['id'],_0x29db5e[_0xda99('0x42')],_0x18dcb4[_0xda99('0x3a')]);switch(_0x18dcb4[_0xda99('0x3a')]){case'integrationTab':emit(util['format']('user:%s',_0x29db5e[_0xda99('0x42')]),_0xda99('0x5b'),{'recordId':_0x37ce62['id']});break;case _0xda99('0x5c'):emit(util['format'](_0xda99('0x5d'),_0x29db5e[_0xda99('0x42')]),_0xda99('0x5e'),{'uri':util[_0xda99('0x33')](_0xda99('0x5f'),_0x27debb[_0xda99('0x60')],_0x37ce62['id'])});break;default:logger[_0xda99('0x61')](_0xda99('0x62'));}})[_0xda99('0x63')](function(_0x29b32c){logger[_0xda99('0x61')](_0xda99('0x52'),JSON[_0xda99('0x64')](_0x29b32c));});};exports['outbound']=function(_0x3622b7,_0x3930f1,_0x4604a8,_0x1a2610,_0xd5f6b8,_0x2c80ea,_0x53eb28){var _0x13eaf1,_0x1a7c3d,_0x4aefc3,_0x3a71da;_0x2c80ea[_0xda99('0x4e')]=intUtil[_0xda99('0x50')](_0x2c80ea['serverUrl']);_0x2c80ea[_0xda99('0x4f')]=intUtil[_0xda99('0x50')](_0x2c80ea['remoteUri']);if(_0x53eb28&&_0x53eb28[_0xda99('0x65')]&&_0x53eb28[_0xda99('0x65')]!==_0xda99('0x66')){logger[_0xda99('0x21')](_0xda99('0x67'),_0xda99('0x68'));_0x3930f1[_0xda99('0x55')]=util[_0xda99('0x33')](_0xda99('0x53'),_0x2c80ea['serverUrl'],_0x3930f1[_0xda99('0x54')],md5(_0x3930f1[_0xda99('0x54')]));}return getConnection(_0x2c80ea)[_0xda99('0x1e')](function(_0x28ab05){_0x3a71da=_0x28ab05;return getUser(_0x2c80ea,_0x1a2610[_0xda99('0x56')],_0x3a71da);})[_0xda99('0x1e')](function(_0x174cef){_0x13eaf1=_0x174cef;return getEndUser(_0x2c80ea,_0x4604a8,_0x3930f1[_0xda99('0x69')],_0x3930f1[_0xda99('0x6a')],_0x3a71da);})['then'](function(_0xe294b8){_0x1a7c3d=_0xe294b8;return getTicket(_0x2c80ea,_0x13eaf1,_0x1a7c3d,_0x4604a8,_0x3930f1,_0x4604a8[_0xda99('0x58')],_0x3a71da,_0xda99('0x6b'));})['then'](function(_0x12e26a){_0x4aefc3=_0x12e26a;logger['info'](_0xda99('0x6c'),_0x4aefc3['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4aefc3['id'],_0x1a2610['name'],_0x2c80ea[_0xda99('0x3a')]);switch(_0x2c80ea[_0xda99('0x3a')]){case _0xda99('0x6d'):emit(util[_0xda99('0x33')](_0xda99('0x5d'),_0x1a2610[_0xda99('0x42')]),'trigger:salesforce:display',{'recordId':_0x4aefc3['id']});break;case'newTab':emit(util['format']('user:%s',_0x1a2610[_0xda99('0x42')]),_0xda99('0x5e'),{'uri':util[_0xda99('0x33')](_0xda99('0x5f'),_0x3a71da['instanceUrl'],_0x4aefc3['id'])});break;default:logger[_0xda99('0x61')](_0xda99('0x67'),_0xda99('0x6e'));}})[_0xda99('0x63')](function(_0x21f70a){logger[_0xda99('0x61')]('[OUTBOUND]',JSON[_0xda99('0x64')](_0x21f70a));});};exports[_0xda99('0x6f')]=function(_0x14b815,_0x209974,_0x1c66e7,_0x66f10,_0xe2adbc,_0x298a42){var _0x1b20d6,_0x4e7016,_0xe3d7c6,_0x34660b;_0x298a42['serverUrl']=intUtil[_0xda99('0x50')](_0x298a42[_0xda99('0x4e')]);_0x298a42[_0xda99('0x4f')]=intUtil[_0xda99('0x50')](_0x298a42['remoteUri']);if(_0xe2adbc&&_0xe2adbc[_0xda99('0x51')]){logger[_0xda99('0x21')]('['+_0x209974['lastevent'][_0xda99('0x70')]()+']',_0xda99('0x68'));_0x209974[_0xda99('0x55')]=util[_0xda99('0x33')](_0xda99('0x53'),_0x298a42[_0xda99('0x4e')],_0x209974[_0xda99('0x54')],md5(_0x209974[_0xda99('0x54')]));}else{_0x209974['recordingURL']='';}return getConnection(_0x298a42)['then'](function(_0x18374d){_0x34660b=_0x18374d;if(!_[_0xda99('0x71')](_0x66f10)){return getUser(_0x298a42,_0x66f10[_0xda99('0x42')],_0x34660b);}else{return getUser(_0x298a42,null,_0x34660b);}})[_0xda99('0x1e')](function(_0x47c8fb){_0x1b20d6=_0x47c8fb;return getEndUser(_0x298a42,_0x1c66e7,_0x209974['calleridname'],_0x209974['calleridnum'],_0x34660b);})['then'](function(_0x421f8d){_0x4e7016=_0x421f8d;return getTicket(_0x298a42,_0x1b20d6,_0x4e7016,_0x1c66e7,_0x209974,_0x1c66e7['Fields'],_0x34660b);})['then'](function(_0x3596d2){_0xe3d7c6=_0x3596d2;logger[_0xda99('0x21')]('['+_0x209974['lastevent'][_0xda99('0x70')]()+']\x20Ticket\x20%s\x20created.',_0xe3d7c6['id']);logger[_0xda99('0x21')]('['+_0x209974[_0xda99('0x72')]['toUpperCase']()+_0xda99('0x73'),_0x298a42['type']);})['catch'](function(_0x387fd9){logger['error']('['+_0x209974[_0xda99('0x72')][_0xda99('0x70')]()+']',JSON[_0xda99('0x64')](_0x387fd9));});};