d638b894665215736a4410d1d411121e8219dc89
[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 _0x1664=['Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','upperFirst','forEach','string','idField','toString','type','variableName','customVariable','Variable','name','toLowerCase','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','login','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','[QUEUE]\x20Ticket\x20%s\x20created','format','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','[QUEUE]','recordingFormat','Recording\x20is\x20enabled!','email','destcalleridname','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','newTab','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','stringify','toUpperCase','calleridnum','Fields','lastevent',']\x20Ticket\x20%s\x20created.','lodash','request-promise','bluebird','md5','jsforce','util','ioredis','../../../../config/environment','../../../../config/logger','salesforce','localhost','socket.io-emitter','redis','emit','ticketType','Task','assign','utc','getString','Subjects','Descriptions','WhoId','Case','sobject','create','isNil','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','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>','Caller\x20-\x20%s','moduleCreate'];(function(_0x17ab57,_0x4f7ae0){var _0x1b0450=function(_0x5bf5cd){while(--_0x5bf5cd){_0x17ab57['push'](_0x17ab57['shift']());}};_0x1b0450(++_0x4f7ae0);}(_0x1664,0x186));var _0x4166=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x1664[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x4166('0x0'));var rp=require(_0x4166('0x1'));var moment=require('moment');var BPromise=require(_0x4166('0x2'));var md5=require(_0x4166('0x3'));var jsforce=require(_0x4166('0x4'));var util=require(_0x4166('0x5'));var Redis=require(_0x4166('0x6'));var intUtil=require('./util');var config=require(_0x4166('0x7'));var logger=require(_0x4166('0x8'))(_0x4166('0x9'));config['redis']=_['defaults'](config['redis'],{'host':_0x4166('0xa'),'port':0x18eb});var io=require(_0x4166('0xb'))(new Redis(config[_0x4166('0xc')]));function emit(_0x1535f6,_0x58fa28,_0x1d5d19){io['to'](_0x1535f6)[_0x4166('0xd')](_0x58fa28,_0x1d5d19);}function getTicket(_0xf2d2a0,_0x586a51,_0x1f3800,_0x372fdd,_0x113d80,_0x169e58,_0x48f59b,_0x5023fe){var _0x2bb977={};if(_0x372fdd[_0x4166('0xe')]===_0x4166('0xf')){_0x2bb977=Object[_0x4166('0x10')]({},{'OwnerId':_0x586a51['id'],'ActivityDate':moment[_0x4166('0x11')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0x4166('0x12')](_0x372fdd[_0x4166('0x13')],_0x113d80,'\x20'),'Description':intUtil[_0x4166('0x12')](_0x372fdd[_0x4166('0x14')],_0x113d80,'\x0a')},getCustomFields(_0x169e58,_0x113d80));if(_0x1f3800){_0x2bb977[_0x4166('0x15')]=_0x1f3800['id'];}}else if(_0x372fdd[_0x4166('0xe')]===_0x4166('0x16')){_0x2bb977=Object[_0x4166('0x10')]({},{'OwnerId':_0x586a51['id'],'Subject':intUtil[_0x4166('0x12')](_0x372fdd[_0x4166('0x13')],_0x113d80,'\x20'),'Description':intUtil[_0x4166('0x12')](_0x372fdd['Descriptions'],_0x113d80,'\x0a')},getCustomFields(_0x169e58,_0x113d80));if(_0x1f3800){_0x2bb977['ContactId']=_0x1f3800['id'];}}return _0x48f59b[_0x4166('0x17')](_0x372fdd[_0x4166('0xe')])[_0x4166('0x18')](_0x2bb977);}function getUser(_0x1ab3ca,_0x3cb58b,_0x7abce4){if(!_[_0x4166('0x19')](_0x3cb58b)&&intUtil[_0x4166('0x1a')](_0x3cb58b)){var _0x10c572={'Email':_0x3cb58b};var _0x5a3b88={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x7abce4[_0x4166('0x17')](_0x4166('0x1b'))[_0x4166('0x1c')](_0x10c572,_0x5a3b88)[_0x4166('0x1d')]()[_0x4166('0x1e')](function(_0x56f6de){if(_0x56f6de[_0x4166('0x1f')]){var _0x53269a=_[_0x4166('0x1c')](_0x56f6de,function(_0xdec51c){return _0xdec51c[_0x4166('0x20')]===_0x3cb58b;});if(_0x53269a){logger[_0x4166('0x21')](_0x4166('0x22'),_0x3cb58b);return BPromise[_0x4166('0x23')]({'id':_0x53269a['Id'],'name':_0x53269a[_0x4166('0x24')]});}}else{logger[_0x4166('0x21')](_0x4166('0x25'),_0x3cb58b);return _0x7abce4[_0x4166('0x26')]()[_0x4166('0x1e')](function(_0x2e09dc){return BPromise[_0x4166('0x23')]({'id':_0x2e09dc[_0x4166('0x27')],'name':_0x2e09dc[_0x4166('0x28')]});});}});}else{logger[_0x4166('0x21')](_0x4166('0x25'),_0x3cb58b);return _0x7abce4[_0x4166('0x26')]()[_0x4166('0x1e')](function(_0x2fad4f){return BPromise[_0x4166('0x23')]({'id':_0x2fad4f[_0x4166('0x27')],'name':_0x2fad4f[_0x4166('0x28')]});});}}function getEndUser(_0x50e9f0,_0x210724,_0x529c5c,_0x3230e1,_0x47d638){var _0x2859df={'Phone':_0x3230e1};var _0x6dc176={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x4166('0x23')]()[_0x4166('0x1e')](function(){if(_0x210724['ticketType']===_0x4166('0xf')){logger[_0x4166('0x21')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x3230e1,_0x210724[_0x4166('0x29')]);switch(_0x210724['moduleSearch']){case _0x4166('0x2a'):return _0x47d638[_0x4166('0x17')](_0x4166('0x2b'))[_0x4166('0x1c')](_0x2859df,_0x6dc176)[_0x4166('0x1d')]()[_0x4166('0x1e')](function(_0x178e18){if(_0x178e18&&_0x178e18[_0x4166('0x1f')]){return _0x178e18;}else{return _0x47d638['sobject'](_0x4166('0x2c'))['find'](_0x2859df,_0x6dc176);}});case _0x4166('0x2d'):return _0x47d638[_0x4166('0x17')](_0x4166('0x2b'))[_0x4166('0x1c')](_0x2859df,_0x6dc176)[_0x4166('0x1d')]();case _0x4166('0x2e'):return _0x47d638[_0x4166('0x17')]('Lead')[_0x4166('0x1c')](_0x2859df,_0x6dc176);default:return null;}}else if(_0x210724[_0x4166('0xe')]===_0x4166('0x16')){logger[_0x4166('0x21')](_0x4166('0x2f'),_0x3230e1,'contact');return _0x47d638[_0x4166('0x17')](_0x4166('0x2b'))[_0x4166('0x1c')](_0x2859df,_0x6dc176)['execute']();}})[_0x4166('0x1e')](function(_0x181f22){if(_0x181f22&&_0x181f22[_0x4166('0x1f')]){var _0x3cd602=_['find'](_0x181f22,function(_0x44a1c1){return _0x44a1c1[_0x4166('0x30')]===_0x3230e1;});if(_0x3cd602){return BPromise[_0x4166('0x23')]({'id':_0x3cd602['Id'],'name':_0x3cd602[_0x4166('0x24')],'phone':_0x3cd602[_0x4166('0x30')]});}}})[_0x4166('0x1e')](function(_0x5eaee0){if(_0x5eaee0){logger[_0x4166('0x21')](_0x4166('0x31'),_0x3230e1);return BPromise[_0x4166('0x23')](_0x5eaee0);}else{logger[_0x4166('0x21')](_0x4166('0x32'),_0x3230e1);var _0x29927d={'LastName':_0x529c5c!==_0x4166('0x33')?_0x529c5c:util['format'](_0x4166('0x34'),_0x3230e1),'Phone':_0x3230e1};if(_0x210724[_0x4166('0x35')]){if(_0x210724['moduleCreate']==='contact'){logger[_0x4166('0x21')](_0x4166('0x36'),_0x3230e1,_0x210724[_0x4166('0x35')]);}else if(_0x210724['moduleCreate']==='lead'&&_0x210724[_0x4166('0xe')]==='Task'){logger['info'](_0x4166('0x36'),_0x3230e1,_0x210724[_0x4166('0x35')]);_0x29927d[_0x4166('0x37')]='No\x20Company';}else{return null;}}return _0x47d638[_0x4166('0x17')](_[_0x4166('0x38')](_0x210724[_0x4166('0x35')]))['create'](_0x29927d);}});}function getCustomFields(_0x32d3ef,_0x4f485c){var _0x2339d5={};if(_0x32d3ef[_0x4166('0x1f')]>0x0){_[_0x4166('0x39')](_0x32d3ef,function(_0x4651fc){if(_0x4651fc['type']===_0x4166('0x3a')&&_0x4651fc['idField']){_0x2339d5[_0x4651fc[_0x4166('0x3b')]]=_0x4651fc['content'][_0x4166('0x3c')]();}else if(_0x4651fc[_0x4166('0x3d')]==='variable'&&_0x4651fc[_0x4166('0x3e')]&&_0x4651fc[_0x4166('0x3b')]){_0x4f485c[_0x4651fc[_0x4166('0x3e')]]&&(_0x2339d5[_0x4651fc[_0x4166('0x3b')]]=_0x4f485c[_0x4651fc[_0x4166('0x3e')]][_0x4166('0x3c')]());}else if(_0x4651fc[_0x4166('0x3d')]===_0x4166('0x3f')&&_0x4651fc[_0x4166('0x40')]&&_0x4651fc[_0x4166('0x40')][_0x4166('0x41')]&&_0x4651fc['idField']){_0x4f485c[_0x4651fc[_0x4166('0x40')]['name']['toLowerCase']()]&&(_0x2339d5[_0x4651fc[_0x4166('0x3b')]]=_0x4f485c[_0x4651fc[_0x4166('0x40')][_0x4166('0x41')][_0x4166('0x42')]()][_0x4166('0x3c')]());}});}return _0x2339d5;}function getConnection(_0x413dd5){var _0x2384f7=_0x413dd5[_0x4166('0x43')][_0x4166('0x44')](_0x413dd5[_0x4166('0x45')]);var _0x45e645=new jsforce[(_0x4166('0x46'))]({'oauth2':{'loginUrl':_0x413dd5[_0x4166('0x47')]||_0x4166('0x48'),'clientId':_0x413dd5[_0x4166('0x49')],'clientSecret':_0x413dd5['clientSecret']}});return _0x45e645[_0x4166('0x4a')](_0x413dd5['username'],_0x2384f7)[_0x4166('0x1e')](function(){logger['info'](_0x4166('0x4b'));return _0x45e645;});}exports[_0x4166('0x4c')]=function(_0x14b557,_0x169018,_0x40d5a3,_0x4ab6df,_0x2fdbd2,_0x310a2e){var _0x43abfe,_0x1bbef2,_0x156b29,_0x4ad8ab;_0x310a2e[_0x4166('0x4d')]=intUtil[_0x4166('0x4e')](_0x310a2e[_0x4166('0x4d')]);_0x310a2e[_0x4166('0x47')]=intUtil[_0x4166('0x4e')](_0x310a2e[_0x4166('0x47')]);if(_0x2fdbd2&&_0x2fdbd2[_0x4166('0x4f')]){logger[_0x4166('0x21')]('[QUEUE]','Recording\x20is\x20enabled!');_0x169018[_0x4166('0x50')]=util['format'](_0x4166('0x51'),_0x310a2e['serverUrl'],_0x169018[_0x4166('0x52')],md5(_0x169018[_0x4166('0x52')]));}else{_0x169018['recordingURL']='';}return getConnection(_0x310a2e)[_0x4166('0x1e')](function(_0x737aab){_0x4ad8ab=_0x737aab;return getUser(_0x310a2e,_0x4ab6df['email'],_0x4ad8ab);})[_0x4166('0x1e')](function(_0x5a158f){_0x43abfe=_0x5a158f;return getEndUser(_0x310a2e,_0x40d5a3,_0x169018[_0x4166('0x53')],_0x169018['calleridnum'],_0x4ad8ab);})[_0x4166('0x1e')](function(_0x11cfb7){_0x1bbef2=_0x11cfb7;return getTicket(_0x310a2e,_0x43abfe,_0x1bbef2,_0x40d5a3,_0x169018,_0x40d5a3['Fields'],_0x4ad8ab,_0x4166('0x4c'));})[_0x4166('0x1e')](function(_0xe5e2b){_0x156b29=_0xe5e2b;logger[_0x4166('0x21')](_0x4166('0x54'),_0x156b29['id']);logger[_0x4166('0x21')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x156b29['id'],_0x4ab6df[_0x4166('0x41')],_0x310a2e['type']);switch(_0x310a2e[_0x4166('0x3d')]){case'integrationTab':emit(util[_0x4166('0x55')](_0x4166('0x56'),_0x4ab6df[_0x4166('0x41')]),_0x4166('0x57'),{'recordId':_0x156b29['id']});break;case'newTab':emit(util['format'](_0x4166('0x56'),_0x4ab6df['name']),_0x4166('0x58'),{'uri':util[_0x4166('0x55')](_0x4166('0x59'),_0x4ad8ab[_0x4166('0x5a')],_0x156b29['id'])});break;default:logger['error'](_0x4166('0x5b'));}})[_0x4166('0x5c')](function(_0x3e10fb){logger[_0x4166('0x5d')](_0x4166('0x5e'),JSON['stringify'](_0x3e10fb));});};exports['outbound']=function(_0x513bf0,_0x59bacc,_0x352592,_0x1492b7,_0x45777a,_0x5e630a,_0x5605db){var _0x1a972f,_0x387a5f,_0x91ba7d,_0x41884d;_0x5e630a[_0x4166('0x4d')]=intUtil[_0x4166('0x4e')](_0x5e630a[_0x4166('0x4d')]);_0x5e630a[_0x4166('0x47')]=intUtil[_0x4166('0x4e')](_0x5e630a['remoteUri']);if(_0x5605db&&_0x5605db['recordingFormat']&&_0x5605db[_0x4166('0x5f')]!=='none'){logger['info']('[OUTBOUND]',_0x4166('0x60'));_0x59bacc[_0x4166('0x50')]=util[_0x4166('0x55')](_0x4166('0x51'),_0x5e630a[_0x4166('0x4d')],_0x59bacc[_0x4166('0x52')],md5(_0x59bacc[_0x4166('0x52')]));}return getConnection(_0x5e630a)[_0x4166('0x1e')](function(_0x14c659){_0x41884d=_0x14c659;return getUser(_0x5e630a,_0x1492b7[_0x4166('0x61')],_0x41884d);})[_0x4166('0x1e')](function(_0x518fa7){_0x1a972f=_0x518fa7;return getEndUser(_0x5e630a,_0x352592,_0x59bacc[_0x4166('0x62')],_0x59bacc['destcalleridnum'],_0x41884d);})[_0x4166('0x1e')](function(_0x4f2ae6){_0x387a5f=_0x4f2ae6;return getTicket(_0x5e630a,_0x1a972f,_0x387a5f,_0x352592,_0x59bacc,_0x352592['Fields'],_0x41884d,_0x4166('0x63'));})[_0x4166('0x1e')](function(_0x32a267){_0x91ba7d=_0x32a267;logger[_0x4166('0x21')](_0x4166('0x64'),_0x91ba7d['id']);logger[_0x4166('0x21')](_0x4166('0x65'),_0x91ba7d['id'],_0x1492b7[_0x4166('0x41')],_0x5e630a[_0x4166('0x3d')]);switch(_0x5e630a[_0x4166('0x3d')]){case'integrationTab':emit(util['format'](_0x4166('0x56'),_0x1492b7['name']),'trigger:salesforce:display',{'recordId':_0x91ba7d['id']});break;case _0x4166('0x66'):emit(util[_0x4166('0x55')]('user:%s',_0x1492b7[_0x4166('0x41')]),_0x4166('0x58'),{'uri':util[_0x4166('0x55')](_0x4166('0x59'),_0x41884d[_0x4166('0x5a')],_0x91ba7d['id'])});break;default:logger[_0x4166('0x5d')](_0x4166('0x67'),_0x4166('0x68'));}})[_0x4166('0x5c')](function(_0x2c0c43){logger[_0x4166('0x5d')](_0x4166('0x67'),JSON[_0x4166('0x69')](_0x2c0c43));});};exports['unmanaged']=function(_0xe9ed5d,_0x1036ff,_0x24edc3,_0x40b5f1,_0x51792c,_0x486887){var _0x5f4821,_0x3970a1,_0x452050,_0x2d9ff3;_0x486887[_0x4166('0x4d')]=intUtil[_0x4166('0x4e')](_0x486887[_0x4166('0x4d')]);_0x486887['remoteUri']=intUtil[_0x4166('0x4e')](_0x486887['remoteUri']);if(_0x51792c&&_0x51792c[_0x4166('0x4f')]){logger[_0x4166('0x21')]('['+_0x1036ff['lastevent'][_0x4166('0x6a')]()+']',_0x4166('0x60'));_0x1036ff['recordingURL']=util[_0x4166('0x55')](_0x4166('0x51'),_0x486887['serverUrl'],_0x1036ff['uniqueid'],md5(_0x1036ff[_0x4166('0x52')]));}else{_0x1036ff[_0x4166('0x50')]='';}return getConnection(_0x486887)[_0x4166('0x1e')](function(_0x5f1f51){_0x2d9ff3=_0x5f1f51;if(!_[_0x4166('0x19')](_0x40b5f1)){return getUser(_0x486887,_0x40b5f1[_0x4166('0x41')],_0x2d9ff3);}else{return getUser(_0x486887,null,_0x2d9ff3);}})['then'](function(_0x3d4351){_0x5f4821=_0x3d4351;return getEndUser(_0x486887,_0x24edc3,_0x1036ff['calleridname'],_0x1036ff[_0x4166('0x6b')],_0x2d9ff3);})[_0x4166('0x1e')](function(_0xae110d){_0x3970a1=_0xae110d;return getTicket(_0x486887,_0x5f4821,_0x3970a1,_0x24edc3,_0x1036ff,_0x24edc3[_0x4166('0x6c')],_0x2d9ff3);})[_0x4166('0x1e')](function(_0x2fa726){_0x452050=_0x2fa726;logger['info']('['+_0x1036ff[_0x4166('0x6d')][_0x4166('0x6a')]()+_0x4166('0x6e'),_0x452050['id']);logger[_0x4166('0x21')]('['+_0x1036ff['lastevent'][_0x4166('0x6a')]()+']\x20Integration\x20account\x20type\x20%s.',_0x486887[_0x4166('0x3d')]);})[_0x4166('0x5c')](function(_0x3847dc){logger['error']('['+_0x1036ff['lastevent'][_0x4166('0x6a')]()+']',JSON[_0x4166('0x69')](_0x3847dc));});};