b7a23530f05d3d07c00aef28dd9480bb9a96ad84
[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 _0x3c2b=['Lead','contact','lead','Phone','Enduser\x20with\x20phone\x20%s\x20found.','Enduser\x20with\x20phone\x20%s\x20not\x20found.','Caller\x20-\x20%s','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','upperFirst','forEach','type','string','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','concat','securityToken','https://login.salesforce.com','clientSecret','login','username','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','%s/%s/e','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','error','[QUEUE]','stringify','outbound','remoteUri','recordingFormat','[OUTBOUND]','email','destcalleridname','destcalleridnum','Fields','integrationTab','trigger:browser:url','instanceUrl','catch','unmanaged','toUpperCase',']\x20Ticket\x20%s\x20created.','lastevent',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','bluebird','md5','jsforce','ioredis','./util','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','ticketType','Task','assign','utc','getString','Case','Subjects','Descriptions','ContactId','create','isNil','User','find','execute','then','Email','info','Agent\x20%s\x20found.','resolve','Name','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','sobject','Contact','length'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3c2b,0x187));var _0xb3c2=function(_0x13c3ce,_0x26876a){_0x13c3ce=_0x13c3ce-0x0;var _0x1ee691=_0x3c2b[_0x13c3ce];return _0x1ee691;};'use strict';var _=require('lodash');var rp=require(_0xb3c2('0x0'));var moment=require(_0xb3c2('0x1'));var BPromise=require(_0xb3c2('0x2'));var md5=require(_0xb3c2('0x3'));var jsforce=require(_0xb3c2('0x4'));var util=require('util');var Redis=require(_0xb3c2('0x5'));var intUtil=require(_0xb3c2('0x6'));var config=require('../../../../config/environment');var logger=require(_0xb3c2('0x7'))(_0xb3c2('0x8'));config[_0xb3c2('0x9')]=_[_0xb3c2('0xa')](config[_0xb3c2('0x9')],{'host':_0xb3c2('0xb'),'port':0x18eb});var io=require(_0xb3c2('0xc'))(new Redis(config['redis']));function emit(_0x216e41,_0x58483b,_0x27e161){io['to'](_0x216e41)[_0xb3c2('0xd')](_0x58483b,_0x27e161);}function getTicket(_0xe23bd,_0x27d411,_0x1e06bc,_0x513a5b,_0x27b421,_0x1294b3,_0x3ff7c6,_0x36b672){var _0x1d9e3b={};if(_0x513a5b[_0xb3c2('0xe')]===_0xb3c2('0xf')){_0x1d9e3b=Object[_0xb3c2('0x10')]({},{'OwnerId':_0x27d411['id'],'ActivityDate':moment[_0xb3c2('0x11')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil['getString'](_0x513a5b['Subjects'],_0x27b421,'\x20'),'Description':intUtil[_0xb3c2('0x12')](_0x513a5b['Descriptions'],_0x27b421,'\x0a')},getCustomFields(_0x1294b3,_0x27b421));if(_0x1e06bc){_0x1d9e3b['WhoId']=_0x1e06bc['id'];}}else if(_0x513a5b[_0xb3c2('0xe')]===_0xb3c2('0x13')){_0x1d9e3b=Object['assign']({},{'OwnerId':_0x27d411['id'],'Subject':intUtil[_0xb3c2('0x12')](_0x513a5b[_0xb3c2('0x14')],_0x27b421,'\x20'),'Description':intUtil[_0xb3c2('0x12')](_0x513a5b[_0xb3c2('0x15')],_0x27b421,'\x0a')},getCustomFields(_0x1294b3,_0x27b421));if(_0x1e06bc){_0x1d9e3b[_0xb3c2('0x16')]=_0x1e06bc['id'];}}return _0x3ff7c6['sobject'](_0x513a5b['ticketType'])[_0xb3c2('0x17')](_0x1d9e3b);}function getUser(_0x211d2c,_0x4982ea,_0x574549){if(!_[_0xb3c2('0x18')](_0x4982ea)&&intUtil['validateEmail'](_0x4982ea)){var _0x3e6d2b={'Email':_0x4982ea};var _0x3d675f={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x574549['sobject'](_0xb3c2('0x19'))[_0xb3c2('0x1a')](_0x3e6d2b,_0x3d675f)[_0xb3c2('0x1b')]()[_0xb3c2('0x1c')](function(_0x5d26f0){if(_0x5d26f0['length']){var _0x516ca7=_['find'](_0x5d26f0,function(_0x9a50b7){return _0x9a50b7[_0xb3c2('0x1d')]===_0x4982ea;});if(_0x516ca7){logger[_0xb3c2('0x1e')](_0xb3c2('0x1f'),_0x4982ea);return BPromise[_0xb3c2('0x20')]({'id':_0x516ca7['Id'],'name':_0x516ca7[_0xb3c2('0x21')]});}}else{logger[_0xb3c2('0x1e')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x4982ea);return _0x574549[_0xb3c2('0x22')]()[_0xb3c2('0x1c')](function(_0x555f6d){return BPromise[_0xb3c2('0x20')]({'id':_0x555f6d[_0xb3c2('0x23')],'name':_0x555f6d[_0xb3c2('0x24')]});});}});}else{logger[_0xb3c2('0x1e')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x4982ea);return _0x574549[_0xb3c2('0x22')]()['then'](function(_0x5cd9a4){return BPromise[_0xb3c2('0x20')]({'id':_0x5cd9a4[_0xb3c2('0x23')],'name':_0x5cd9a4[_0xb3c2('0x24')]});});}}function getEndUser(_0x3fa838,_0x2d4603,_0x39a6c2,_0x3a546,_0x1523c6){var _0x5c1e23={'Phone':_0x3a546};var _0x43ac04={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xb3c2('0x20')]()[_0xb3c2('0x1c')](function(){if(_0x2d4603[_0xb3c2('0xe')]===_0xb3c2('0xf')){logger[_0xb3c2('0x1e')](_0xb3c2('0x25'),_0x3a546,_0x2d4603['moduleSearch']);switch(_0x2d4603['moduleSearch']){case'contact_lead':return _0x1523c6[_0xb3c2('0x26')](_0xb3c2('0x27'))[_0xb3c2('0x1a')](_0x5c1e23,_0x43ac04)['execute']()['then'](function(_0x39d87e){if(_0x39d87e&&_0x39d87e[_0xb3c2('0x28')]){return _0x39d87e;}else{return _0x1523c6[_0xb3c2('0x26')](_0xb3c2('0x29'))['find'](_0x5c1e23,_0x43ac04);}});case _0xb3c2('0x2a'):return _0x1523c6[_0xb3c2('0x26')](_0xb3c2('0x27'))[_0xb3c2('0x1a')](_0x5c1e23,_0x43ac04)[_0xb3c2('0x1b')]();case _0xb3c2('0x2b'):return _0x1523c6[_0xb3c2('0x26')](_0xb3c2('0x29'))['find'](_0x5c1e23,_0x43ac04);default:return null;}}else if(_0x2d4603[_0xb3c2('0xe')]===_0xb3c2('0x13')){logger[_0xb3c2('0x1e')](_0xb3c2('0x25'),_0x3a546,'contact');return _0x1523c6[_0xb3c2('0x26')](_0xb3c2('0x27'))[_0xb3c2('0x1a')](_0x5c1e23,_0x43ac04)[_0xb3c2('0x1b')]();}})[_0xb3c2('0x1c')](function(_0x146e64){if(_0x146e64&&_0x146e64[_0xb3c2('0x28')]){var _0x44fdcb=_[_0xb3c2('0x1a')](_0x146e64,function(_0xb8c1f5){return _0xb8c1f5[_0xb3c2('0x2c')]===_0x3a546;});if(_0x44fdcb){return BPromise[_0xb3c2('0x20')]({'id':_0x44fdcb['Id'],'name':_0x44fdcb[_0xb3c2('0x21')],'phone':_0x44fdcb[_0xb3c2('0x2c')]});}}})[_0xb3c2('0x1c')](function(_0x18deb4){if(_0x18deb4){logger[_0xb3c2('0x1e')](_0xb3c2('0x2d'),_0x3a546);return BPromise[_0xb3c2('0x20')](_0x18deb4);}else{logger[_0xb3c2('0x1e')](_0xb3c2('0x2e'),_0x3a546);var _0x31310b={'LastName':_0x39a6c2!=='<unknown>'?_0x39a6c2:util['format'](_0xb3c2('0x2f'),_0x3a546),'Phone':_0x3a546};if(_0x2d4603[_0xb3c2('0x30')]){if(_0x2d4603[_0xb3c2('0x30')]===_0xb3c2('0x2a')){logger[_0xb3c2('0x1e')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3a546,_0x2d4603[_0xb3c2('0x30')]);}else if(_0x2d4603[_0xb3c2('0x30')]===_0xb3c2('0x2b')&&_0x2d4603[_0xb3c2('0xe')]==='Task'){logger[_0xb3c2('0x1e')](_0xb3c2('0x31'),_0x3a546,_0x2d4603[_0xb3c2('0x30')]);_0x31310b[_0xb3c2('0x32')]='No\x20Company';}else{return null;}}return _0x1523c6[_0xb3c2('0x26')](_[_0xb3c2('0x33')](_0x2d4603['moduleCreate']))[_0xb3c2('0x17')](_0x31310b);}});}function getCustomFields(_0xbe27b8,_0x40a080){var _0x1a5b21={};if(_0xbe27b8[_0xb3c2('0x28')]>0x0){_[_0xb3c2('0x34')](_0xbe27b8,function(_0x52c81c){if(_0x52c81c[_0xb3c2('0x35')]===_0xb3c2('0x36')&&_0x52c81c[_0xb3c2('0x37')]){_0x1a5b21[_0x52c81c[_0xb3c2('0x37')]]=_0x52c81c[_0xb3c2('0x38')][_0xb3c2('0x39')]();}else if(_0x52c81c[_0xb3c2('0x35')]===_0xb3c2('0x3a')&&_0x52c81c[_0xb3c2('0x3b')]&&_0x52c81c['idField']){_0x40a080[_0x52c81c[_0xb3c2('0x3b')]]&&(_0x1a5b21[_0x52c81c[_0xb3c2('0x37')]]=_0x40a080[_0x52c81c[_0xb3c2('0x3b')]][_0xb3c2('0x39')]());}else if(_0x52c81c[_0xb3c2('0x35')]===_0xb3c2('0x3c')&&_0x52c81c[_0xb3c2('0x3d')]&&_0x52c81c['Variable'][_0xb3c2('0x3e')]&&_0x52c81c[_0xb3c2('0x37')]){_0x40a080[_0x52c81c['Variable'][_0xb3c2('0x3e')][_0xb3c2('0x3f')]()]&&(_0x1a5b21[_0x52c81c[_0xb3c2('0x37')]]=_0x40a080[_0x52c81c[_0xb3c2('0x3d')]['name'][_0xb3c2('0x3f')]()]['toString']());}});}return _0x1a5b21;}function getConnection(_0x5a8f27){var _0x11131f=_0x5a8f27['password'][_0xb3c2('0x40')](_0x5a8f27[_0xb3c2('0x41')]);var _0xd66a49=new jsforce['Connection']({'oauth2':{'loginUrl':_0x5a8f27['remoteUri']||_0xb3c2('0x42'),'clientId':_0x5a8f27['clientId'],'clientSecret':_0x5a8f27[_0xb3c2('0x43')]}});return _0xd66a49[_0xb3c2('0x44')](_0x5a8f27[_0xb3c2('0x45')],_0x11131f)[_0xb3c2('0x1c')](function(){logger[_0xb3c2('0x1e')]('Connection\x20established.');return _0xd66a49;});}exports[_0xb3c2('0x46')]=function(_0x19a57c,_0x2206da,_0x1d80ee,_0x28d9d9,_0x22bcea,_0x57dc36){var _0x52b9a3,_0x1949d3,_0xec158c,_0x5c1075;_0x57dc36['serverUrl']=intUtil['stripTrailingSlash'](_0x57dc36[_0xb3c2('0x47')]);_0x57dc36['remoteUri']=intUtil[_0xb3c2('0x48')](_0x57dc36['remoteUri']);if(_0x22bcea&&_0x22bcea[_0xb3c2('0x49')]){logger['info']('[QUEUE]',_0xb3c2('0x4a'));_0x2206da[_0xb3c2('0x4b')]=util[_0xb3c2('0x4c')](_0xb3c2('0x4d'),_0x57dc36[_0xb3c2('0x47')],_0x2206da[_0xb3c2('0x4e')],md5(_0x2206da[_0xb3c2('0x4e')]));}else{_0x2206da[_0xb3c2('0x4b')]='';}return getConnection(_0x57dc36)[_0xb3c2('0x1c')](function(_0x3bbaee){_0x5c1075=_0x3bbaee;return getUser(_0x57dc36,_0x28d9d9['email'],_0x5c1075);})[_0xb3c2('0x1c')](function(_0x3c2746){_0x52b9a3=_0x3c2746;return getEndUser(_0x57dc36,_0x1d80ee,_0x2206da[_0xb3c2('0x4f')],_0x2206da[_0xb3c2('0x50')],_0x5c1075);})[_0xb3c2('0x1c')](function(_0x1f5a53){_0x1949d3=_0x1f5a53;return getTicket(_0x57dc36,_0x52b9a3,_0x1949d3,_0x1d80ee,_0x2206da,_0x1d80ee['Fields'],_0x5c1075,_0xb3c2('0x46'));})[_0xb3c2('0x1c')](function(_0x48b93d){_0xec158c=_0x48b93d;logger[_0xb3c2('0x1e')](_0xb3c2('0x51'),_0xec158c['id']);logger[_0xb3c2('0x1e')](_0xb3c2('0x52'),_0xec158c['id'],_0x28d9d9[_0xb3c2('0x3e')],_0x57dc36[_0xb3c2('0x35')]);switch(_0x57dc36[_0xb3c2('0x35')]){case'integrationTab':emit(util[_0xb3c2('0x4c')](_0xb3c2('0x53'),_0x28d9d9['name']),_0xb3c2('0x54'),{'recordId':_0xec158c['id']});break;case _0xb3c2('0x55'):emit(util[_0xb3c2('0x4c')]('user:%s',_0x28d9d9['name']),'trigger:browser:url',{'uri':util['format'](_0xb3c2('0x56'),_0x5c1075['instanceUrl'],_0xec158c['id'])});break;default:logger['error'](_0xb3c2('0x57'));}})['catch'](function(_0x4311f1){logger[_0xb3c2('0x58')](_0xb3c2('0x59'),JSON[_0xb3c2('0x5a')](_0x4311f1));});};exports[_0xb3c2('0x5b')]=function(_0x1772b9,_0x34f422,_0x5e232c,_0x1d042d,_0x125e7c,_0x36a126,_0x246fc6){var _0x2c9439,_0x2f37fa,_0x5216f8,_0x34a203;_0x36a126[_0xb3c2('0x47')]=intUtil['stripTrailingSlash'](_0x36a126['serverUrl']);_0x36a126[_0xb3c2('0x5c')]=intUtil[_0xb3c2('0x48')](_0x36a126['remoteUri']);if(_0x246fc6&&_0x246fc6[_0xb3c2('0x5d')]&&_0x246fc6['recordingFormat']!=='none'){logger[_0xb3c2('0x1e')](_0xb3c2('0x5e'),_0xb3c2('0x4a'));_0x34f422['recordingURL']=util['format'](_0xb3c2('0x4d'),_0x36a126[_0xb3c2('0x47')],_0x34f422[_0xb3c2('0x4e')],md5(_0x34f422[_0xb3c2('0x4e')]));}return getConnection(_0x36a126)[_0xb3c2('0x1c')](function(_0x54480e){_0x34a203=_0x54480e;return getUser(_0x36a126,_0x1d042d[_0xb3c2('0x5f')],_0x34a203);})[_0xb3c2('0x1c')](function(_0x358e36){_0x2c9439=_0x358e36;return getEndUser(_0x36a126,_0x5e232c,_0x34f422[_0xb3c2('0x60')],_0x34f422[_0xb3c2('0x61')],_0x34a203);})[_0xb3c2('0x1c')](function(_0x1d08b0){_0x2f37fa=_0x1d08b0;return getTicket(_0x36a126,_0x2c9439,_0x2f37fa,_0x5e232c,_0x34f422,_0x5e232c[_0xb3c2('0x62')],_0x34a203,_0xb3c2('0x5b'));})[_0xb3c2('0x1c')](function(_0x46f5b8){_0x5216f8=_0x46f5b8;logger[_0xb3c2('0x1e')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x5216f8['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x5216f8['id'],_0x1d042d[_0xb3c2('0x3e')],_0x36a126['type']);switch(_0x36a126[_0xb3c2('0x35')]){case _0xb3c2('0x63'):emit(util[_0xb3c2('0x4c')]('user:%s',_0x1d042d['name']),_0xb3c2('0x54'),{'recordId':_0x5216f8['id']});break;case'newTab':emit(util[_0xb3c2('0x4c')]('user:%s',_0x1d042d[_0xb3c2('0x3e')]),_0xb3c2('0x64'),{'uri':util[_0xb3c2('0x4c')](_0xb3c2('0x56'),_0x34a203[_0xb3c2('0x65')],_0x5216f8['id'])});break;default:logger[_0xb3c2('0x58')](_0xb3c2('0x5e'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0xb3c2('0x66')](function(_0x542fa7){logger[_0xb3c2('0x58')](_0xb3c2('0x5e'),JSON[_0xb3c2('0x5a')](_0x542fa7));});};exports[_0xb3c2('0x67')]=function(_0x3b7b50,_0xdfdb38,_0x3cabb5,_0x2f42b2,_0x33eed3,_0x113938){var _0x5f09b5,_0x21ebaf,_0x4b1054,_0x527cb0;_0x113938[_0xb3c2('0x47')]=intUtil[_0xb3c2('0x48')](_0x113938[_0xb3c2('0x47')]);_0x113938[_0xb3c2('0x5c')]=intUtil[_0xb3c2('0x48')](_0x113938[_0xb3c2('0x5c')]);if(_0x33eed3&&_0x33eed3['monitor_format']){logger[_0xb3c2('0x1e')]('['+_0xdfdb38['lastevent'][_0xb3c2('0x68')]()+']',_0xb3c2('0x4a'));_0xdfdb38[_0xb3c2('0x4b')]=util[_0xb3c2('0x4c')](_0xb3c2('0x4d'),_0x113938[_0xb3c2('0x47')],_0xdfdb38[_0xb3c2('0x4e')],md5(_0xdfdb38[_0xb3c2('0x4e')]));}else{_0xdfdb38[_0xb3c2('0x4b')]='';}return getConnection(_0x113938)[_0xb3c2('0x1c')](function(_0x53fb8f){_0x527cb0=_0x53fb8f;if(!_['isNil'](_0x2f42b2)){return getUser(_0x113938,_0x2f42b2['name'],_0x527cb0);}else{return getUser(_0x113938,null,_0x527cb0);}})[_0xb3c2('0x1c')](function(_0xcd01fe){_0x5f09b5=_0xcd01fe;return getEndUser(_0x113938,_0x3cabb5,_0xdfdb38['calleridname'],_0xdfdb38[_0xb3c2('0x50')],_0x527cb0);})['then'](function(_0x4a29ab){_0x21ebaf=_0x4a29ab;return getTicket(_0x113938,_0x5f09b5,_0x21ebaf,_0x3cabb5,_0xdfdb38,_0x3cabb5[_0xb3c2('0x62')],_0x527cb0);})['then'](function(_0x574591){_0x4b1054=_0x574591;logger[_0xb3c2('0x1e')]('['+_0xdfdb38['lastevent']['toUpperCase']()+_0xb3c2('0x69'),_0x4b1054['id']);logger[_0xb3c2('0x1e')]('['+_0xdfdb38[_0xb3c2('0x6a')][_0xb3c2('0x68')]()+_0xb3c2('0x6b'),_0x113938[_0xb3c2('0x35')]);})['catch'](function(_0x391f11){logger[_0xb3c2('0x58')]('['+_0xdfdb38[_0xb3c2('0x6a')][_0xb3c2('0x68')]()+']',JSON['stringify'](_0x391f11));});};