03401ff10cc06d7bcd652f60cda137241b9bb79d
[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 _0x93c2=['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','No\x20Company','upperFirst','forEach','type','string','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','securityToken','Connection','remoteUri','https://login.salesforce.com','clientSecret','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','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','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','stringify','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','error','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','calleridname','lastevent',']\x20Ticket\x20%s\x20created.','toUpperCase','lodash','moment','bluebird','md5','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','ticketType','Task','utc','Subjects','getString','Descriptions','WhoId','Case','assign','sobject','create','isNil','validateEmail','User','find','execute','then','length','Email','info','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','moduleSearch','contact_lead','Contact','Lead','contact','lead','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','Phone'];(function(_0x424b05,_0x526b5b){var _0x4c65cd=function(_0x59e1f3){while(--_0x59e1f3){_0x424b05['push'](_0x424b05['shift']());}};_0x4c65cd(++_0x526b5b);}(_0x93c2,0x120));var _0x293c=function(_0x4ebae2,_0xf5cccb){_0x4ebae2=_0x4ebae2-0x0;var _0x9a2ef7=_0x93c2[_0x4ebae2];return _0x9a2ef7;};'use strict';var _=require(_0x293c('0x0'));var rp=require('request-promise');var moment=require(_0x293c('0x1'));var BPromise=require(_0x293c('0x2'));var md5=require(_0x293c('0x3'));var jsforce=require(_0x293c('0x4'));var util=require(_0x293c('0x5'));var Redis=require('ioredis');var intUtil=require(_0x293c('0x6'));var config=require(_0x293c('0x7'));var logger=require(_0x293c('0x8'))(_0x293c('0x9'));config[_0x293c('0xa')]=_[_0x293c('0xb')](config[_0x293c('0xa')],{'host':_0x293c('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x293c('0xa')]));function emit(_0x38aab8,_0x151dcd,_0x42ab6b){io['to'](_0x38aab8)['emit'](_0x151dcd,_0x42ab6b);}function getTicket(_0x2610d7,_0x2ac4eb,_0x4f3d34,_0xfac8c4,_0x422cf8,_0x2bdff6,_0x4adc02,_0x5edb70){var _0x124473={};if(_0xfac8c4[_0x293c('0xd')]===_0x293c('0xe')){_0x124473=Object['assign']({},{'OwnerId':_0x2ac4eb['id'],'ActivityDate':moment[_0x293c('0xf')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil['getString'](_0xfac8c4[_0x293c('0x10')],_0x422cf8,'\x20'),'Description':intUtil[_0x293c('0x11')](_0xfac8c4[_0x293c('0x12')],_0x422cf8,'\x0a')},getCustomFields(_0x2bdff6,_0x422cf8));if(_0x4f3d34){_0x124473[_0x293c('0x13')]=_0x4f3d34['id'];}}else if(_0xfac8c4[_0x293c('0xd')]===_0x293c('0x14')){_0x124473=Object[_0x293c('0x15')]({},{'OwnerId':_0x2ac4eb['id'],'Subject':intUtil[_0x293c('0x11')](_0xfac8c4[_0x293c('0x10')],_0x422cf8,'\x20'),'Description':intUtil[_0x293c('0x11')](_0xfac8c4['Descriptions'],_0x422cf8,'\x0a')},getCustomFields(_0x2bdff6,_0x422cf8));if(_0x4f3d34){_0x124473['ContactId']=_0x4f3d34['id'];}}return _0x4adc02[_0x293c('0x16')](_0xfac8c4[_0x293c('0xd')])[_0x293c('0x17')](_0x124473);}function getUser(_0x1da47e,_0x758fd,_0x502713){if(!_[_0x293c('0x18')](_0x758fd)&&intUtil[_0x293c('0x19')](_0x758fd)){var _0x151a03={'Email':_0x758fd};var _0x551963={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x502713[_0x293c('0x16')](_0x293c('0x1a'))[_0x293c('0x1b')](_0x151a03,_0x551963)[_0x293c('0x1c')]()[_0x293c('0x1d')](function(_0x10cb4a){if(_0x10cb4a[_0x293c('0x1e')]){var _0xec4bb9=_['find'](_0x10cb4a,function(_0x2ffc17){return _0x2ffc17[_0x293c('0x1f')]===_0x758fd;});if(_0xec4bb9){logger[_0x293c('0x20')](_0x293c('0x21'),_0x758fd);return BPromise['resolve']({'id':_0xec4bb9['Id'],'name':_0xec4bb9[_0x293c('0x22')]});}}else{logger[_0x293c('0x20')](_0x293c('0x23'),_0x758fd);return _0x502713[_0x293c('0x24')]()[_0x293c('0x1d')](function(_0x3e7999){return BPromise[_0x293c('0x25')]({'id':_0x3e7999[_0x293c('0x26')],'name':_0x3e7999[_0x293c('0x27')]});});}});}else{logger[_0x293c('0x20')](_0x293c('0x23'),_0x758fd);return _0x502713[_0x293c('0x24')]()[_0x293c('0x1d')](function(_0x37cdeb){return BPromise[_0x293c('0x25')]({'id':_0x37cdeb[_0x293c('0x26')],'name':_0x37cdeb[_0x293c('0x27')]});});}}function getEndUser(_0x25fe3f,_0x15bf9f,_0x4cdae1,_0x27e8cb,_0x2b0c71){var _0xb48e20={'Phone':_0x27e8cb};var _0x4fceb3={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0x293c('0x1d')](function(){if(_0x15bf9f[_0x293c('0xd')]===_0x293c('0xe')){logger[_0x293c('0x20')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x27e8cb,_0x15bf9f[_0x293c('0x28')]);switch(_0x15bf9f[_0x293c('0x28')]){case _0x293c('0x29'):return _0x2b0c71[_0x293c('0x16')](_0x293c('0x2a'))[_0x293c('0x1b')](_0xb48e20,_0x4fceb3)[_0x293c('0x1c')]()[_0x293c('0x1d')](function(_0x245663){if(_0x245663&&_0x245663[_0x293c('0x1e')]){return _0x245663;}else{return _0x2b0c71[_0x293c('0x16')](_0x293c('0x2b'))[_0x293c('0x1b')](_0xb48e20,_0x4fceb3);}});case _0x293c('0x2c'):return _0x2b0c71[_0x293c('0x16')]('Contact')['find'](_0xb48e20,_0x4fceb3)[_0x293c('0x1c')]();case _0x293c('0x2d'):return _0x2b0c71['sobject'](_0x293c('0x2b'))['find'](_0xb48e20,_0x4fceb3);default:return null;}}else if(_0x15bf9f['ticketType']===_0x293c('0x14')){logger['info'](_0x293c('0x2e'),_0x27e8cb,'contact');return _0x2b0c71[_0x293c('0x16')](_0x293c('0x2a'))['find'](_0xb48e20,_0x4fceb3)[_0x293c('0x1c')]();}})[_0x293c('0x1d')](function(_0x4fc085){if(_0x4fc085&&_0x4fc085[_0x293c('0x1e')]){var _0x4b16f6=_[_0x293c('0x1b')](_0x4fc085,function(_0x1cc13e){return _0x1cc13e[_0x293c('0x2f')]===_0x27e8cb;});if(_0x4b16f6){return BPromise[_0x293c('0x25')]({'id':_0x4b16f6['Id'],'name':_0x4b16f6[_0x293c('0x22')],'phone':_0x4b16f6[_0x293c('0x2f')]});}}})[_0x293c('0x1d')](function(_0x52e568){if(_0x52e568){logger['info'](_0x293c('0x30'),_0x27e8cb);return BPromise[_0x293c('0x25')](_0x52e568);}else{logger[_0x293c('0x20')](_0x293c('0x31'),_0x27e8cb);var _0x154667={'LastName':_0x4cdae1!=='<unknown>'?_0x4cdae1:util['format'](_0x293c('0x32'),_0x27e8cb),'Phone':_0x27e8cb};if(_0x15bf9f[_0x293c('0x33')]){if(_0x15bf9f['moduleCreate']===_0x293c('0x2c')){logger['info'](_0x293c('0x34'),_0x27e8cb,_0x15bf9f[_0x293c('0x33')]);}else if(_0x15bf9f[_0x293c('0x33')]===_0x293c('0x2d')&&_0x15bf9f[_0x293c('0xd')]===_0x293c('0xe')){logger['info'](_0x293c('0x34'),_0x27e8cb,_0x15bf9f[_0x293c('0x33')]);_0x154667[_0x293c('0x35')]=_0x293c('0x36');}else{return null;}}return _0x2b0c71['sobject'](_[_0x293c('0x37')](_0x15bf9f[_0x293c('0x33')]))['create'](_0x154667);}});}function getCustomFields(_0x51fb89,_0x4a098d){var _0x5b23fb={};if(_0x51fb89[_0x293c('0x1e')]>0x0){_[_0x293c('0x38')](_0x51fb89,function(_0x3c27d8){if(_0x3c27d8[_0x293c('0x39')]===_0x293c('0x3a')&&_0x3c27d8[_0x293c('0x3b')]){_0x5b23fb[_0x3c27d8[_0x293c('0x3b')]]=_0x3c27d8[_0x293c('0x3c')][_0x293c('0x3d')]();}else if(_0x3c27d8[_0x293c('0x39')]===_0x293c('0x3e')&&_0x3c27d8[_0x293c('0x3f')]&&_0x3c27d8[_0x293c('0x3b')]){_0x4a098d[_0x3c27d8[_0x293c('0x3f')]]&&(_0x5b23fb[_0x3c27d8[_0x293c('0x3b')]]=_0x4a098d[_0x3c27d8[_0x293c('0x3f')]][_0x293c('0x3d')]());}else if(_0x3c27d8[_0x293c('0x39')]===_0x293c('0x40')&&_0x3c27d8[_0x293c('0x41')]&&_0x3c27d8[_0x293c('0x41')][_0x293c('0x42')]&&_0x3c27d8[_0x293c('0x3b')]){_0x4a098d[_0x3c27d8[_0x293c('0x41')][_0x293c('0x42')][_0x293c('0x43')]()]&&(_0x5b23fb[_0x3c27d8[_0x293c('0x3b')]]=_0x4a098d[_0x3c27d8[_0x293c('0x41')]['name']['toLowerCase']()][_0x293c('0x3d')]());}});}return _0x5b23fb;}function getConnection(_0xf76e65){var _0x5a7fbe=_0xf76e65['password']['concat'](_0xf76e65[_0x293c('0x44')]);var _0x66a1c9=new jsforce[(_0x293c('0x45'))]({'oauth2':{'loginUrl':_0xf76e65[_0x293c('0x46')]||_0x293c('0x47'),'clientId':_0xf76e65['clientId'],'clientSecret':_0xf76e65[_0x293c('0x48')]}});return _0x66a1c9['login'](_0xf76e65['username'],_0x5a7fbe)[_0x293c('0x1d')](function(){logger[_0x293c('0x20')](_0x293c('0x49'));return _0x66a1c9;});}exports[_0x293c('0x4a')]=function(_0x7a5a6f,_0x5d4b0a,_0x382acc,_0x32f6c7,_0x4dd215,_0x4bbdc0){var _0x143918,_0x5b12be,_0x3e2668,_0x18fc96;_0x4bbdc0[_0x293c('0x4b')]=intUtil['stripTrailingSlash'](_0x4bbdc0['serverUrl']);_0x4bbdc0[_0x293c('0x46')]=intUtil[_0x293c('0x4c')](_0x4bbdc0[_0x293c('0x46')]);if(_0x4dd215&&_0x4dd215[_0x293c('0x4d')]){logger[_0x293c('0x20')]('[QUEUE]',_0x293c('0x4e'));_0x5d4b0a[_0x293c('0x4f')]=util[_0x293c('0x50')](_0x293c('0x51'),_0x4bbdc0[_0x293c('0x4b')],_0x5d4b0a[_0x293c('0x52')],md5(_0x5d4b0a[_0x293c('0x52')]));}else{_0x5d4b0a[_0x293c('0x4f')]='';}return getConnection(_0x4bbdc0)[_0x293c('0x1d')](function(_0x541785){_0x18fc96=_0x541785;return getUser(_0x4bbdc0,_0x32f6c7[_0x293c('0x53')],_0x18fc96);})[_0x293c('0x1d')](function(_0x4bf6f1){_0x143918=_0x4bf6f1;return getEndUser(_0x4bbdc0,_0x382acc,_0x5d4b0a['calleridname'],_0x5d4b0a[_0x293c('0x54')],_0x18fc96);})[_0x293c('0x1d')](function(_0x5a9dd8){_0x5b12be=_0x5a9dd8;return getTicket(_0x4bbdc0,_0x143918,_0x5b12be,_0x382acc,_0x5d4b0a,_0x382acc[_0x293c('0x55')],_0x18fc96,_0x293c('0x4a'));})[_0x293c('0x1d')](function(_0x17ea4a){_0x3e2668=_0x17ea4a;logger[_0x293c('0x20')](_0x293c('0x56'),_0x3e2668['id']);logger['info'](_0x293c('0x57'),_0x3e2668['id'],_0x32f6c7[_0x293c('0x42')],_0x4bbdc0[_0x293c('0x39')]);switch(_0x4bbdc0[_0x293c('0x39')]){case _0x293c('0x58'):emit(util[_0x293c('0x50')](_0x293c('0x59'),_0x32f6c7[_0x293c('0x42')]),_0x293c('0x5a'),{'recordId':_0x3e2668['id']});break;case _0x293c('0x5b'):emit(util[_0x293c('0x50')](_0x293c('0x59'),_0x32f6c7[_0x293c('0x42')]),'trigger:browser:url',{'uri':util['format'](_0x293c('0x5c'),_0x18fc96['instanceUrl'],_0x3e2668['id'])});break;default:logger['error'](_0x293c('0x5d'));}})[_0x293c('0x5e')](function(_0x515862){logger['error'](_0x293c('0x5f'),JSON[_0x293c('0x60')](_0x515862));});};exports[_0x293c('0x61')]=function(_0x106f90,_0x326c9f,_0x318067,_0x142e6e,_0x57ae9b,_0xa0499b,_0x2a5af1){var _0x48d136,_0x1c46f0,_0x3dba4c,_0x185ae6;_0xa0499b[_0x293c('0x4b')]=intUtil[_0x293c('0x4c')](_0xa0499b['serverUrl']);_0xa0499b[_0x293c('0x46')]=intUtil[_0x293c('0x4c')](_0xa0499b[_0x293c('0x46')]);if(_0x2a5af1&&_0x2a5af1[_0x293c('0x62')]&&_0x2a5af1['recordingFormat']!==_0x293c('0x63')){logger[_0x293c('0x20')](_0x293c('0x64'),'Recording\x20is\x20enabled!');_0x326c9f['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xa0499b[_0x293c('0x4b')],_0x326c9f[_0x293c('0x52')],md5(_0x326c9f[_0x293c('0x52')]));}return getConnection(_0xa0499b)['then'](function(_0x448756){_0x185ae6=_0x448756;return getUser(_0xa0499b,_0x142e6e[_0x293c('0x53')],_0x185ae6);})['then'](function(_0x417f76){_0x48d136=_0x417f76;return getEndUser(_0xa0499b,_0x318067,_0x326c9f[_0x293c('0x65')],_0x326c9f[_0x293c('0x66')],_0x185ae6);})[_0x293c('0x1d')](function(_0x38b069){_0x1c46f0=_0x38b069;return getTicket(_0xa0499b,_0x48d136,_0x1c46f0,_0x318067,_0x326c9f,_0x318067[_0x293c('0x55')],_0x185ae6,'outbound');})[_0x293c('0x1d')](function(_0x4d216b){_0x3dba4c=_0x4d216b;logger[_0x293c('0x20')](_0x293c('0x67'),_0x3dba4c['id']);logger[_0x293c('0x20')](_0x293c('0x68'),_0x3dba4c['id'],_0x142e6e['name'],_0xa0499b[_0x293c('0x39')]);switch(_0xa0499b[_0x293c('0x39')]){case _0x293c('0x58'):emit(util[_0x293c('0x50')](_0x293c('0x59'),_0x142e6e[_0x293c('0x42')]),'trigger:salesforce:display',{'recordId':_0x3dba4c['id']});break;case _0x293c('0x5b'):emit(util['format']('user:%s',_0x142e6e[_0x293c('0x42')]),'trigger:browser:url',{'uri':util['format'](_0x293c('0x5c'),_0x185ae6['instanceUrl'],_0x3dba4c['id'])});break;default:logger[_0x293c('0x69')](_0x293c('0x64'),_0x293c('0x6a'));}})[_0x293c('0x5e')](function(_0x2e9410){logger[_0x293c('0x69')]('[OUTBOUND]',JSON[_0x293c('0x60')](_0x2e9410));});};exports[_0x293c('0x6b')]=function(_0x41de8d,_0x333e9b,_0x170754,_0x2277bb,_0xc06f44,_0x81eef1){var _0x51bcc7,_0x264509,_0x545802,_0x87ef84;_0x81eef1['serverUrl']=intUtil[_0x293c('0x4c')](_0x81eef1[_0x293c('0x4b')]);_0x81eef1['remoteUri']=intUtil['stripTrailingSlash'](_0x81eef1[_0x293c('0x46')]);if(_0xc06f44&&_0xc06f44[_0x293c('0x4d')]){logger['info']('['+_0x333e9b['lastevent']['toUpperCase']()+']',_0x293c('0x4e'));_0x333e9b[_0x293c('0x4f')]=util[_0x293c('0x50')](_0x293c('0x51'),_0x81eef1['serverUrl'],_0x333e9b[_0x293c('0x52')],md5(_0x333e9b[_0x293c('0x52')]));}else{_0x333e9b[_0x293c('0x4f')]='';}return getConnection(_0x81eef1)[_0x293c('0x1d')](function(_0x70e978){_0x87ef84=_0x70e978;if(!_['isNil'](_0x2277bb)){return getUser(_0x81eef1,_0x2277bb[_0x293c('0x42')],_0x87ef84);}else{return getUser(_0x81eef1,null,_0x87ef84);}})['then'](function(_0x5b5b8d){_0x51bcc7=_0x5b5b8d;return getEndUser(_0x81eef1,_0x170754,_0x333e9b[_0x293c('0x6c')],_0x333e9b['calleridnum'],_0x87ef84);})[_0x293c('0x1d')](function(_0xa917be){_0x264509=_0xa917be;return getTicket(_0x81eef1,_0x51bcc7,_0x264509,_0x170754,_0x333e9b,_0x170754[_0x293c('0x55')],_0x87ef84);})[_0x293c('0x1d')](function(_0x429bd8){_0x545802=_0x429bd8;logger[_0x293c('0x20')]('['+_0x333e9b[_0x293c('0x6d')]['toUpperCase']()+_0x293c('0x6e'),_0x545802['id']);logger[_0x293c('0x20')]('['+_0x333e9b[_0x293c('0x6d')]['toUpperCase']()+']\x20Integration\x20account\x20type\x20%s.',_0x81eef1[_0x293c('0x39')]);})[_0x293c('0x5e')](function(_0x33de7f){logger[_0x293c('0x69')]('['+_0x333e9b['lastevent'][_0x293c('0x6f')]()+']',JSON['stringify'](_0x33de7f));});};