Built motion from commit (unavailable).|2.4.19
[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 _0xdcaa=['string','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','login','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','email','calleridname','queue','[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','trigger:browser:url','%s/%s/e','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','abandoned','[ABANDONED]','isNil','[ABANDONED]\x20Integration\x20account\x20type\x20%s.','stringify','lodash','request-promise','moment','md5','jsforce','util','ioredis','./util','../../../../config/logger','salesforce','redis','defaults','localhost','emit','ticketType','assign','utc','getString','Subjects','Descriptions','WhoId','Case','sobject','validateEmail','User','find','execute','then','length','info','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Task','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','Contact','Lead','contact','lead','Phone','Name','Enduser\x20with\x20phone\x20%s\x20found.','Enduser\x20with\x20phone\x20%s\x20not\x20found.','format','Caller\x20-\x20%s','moduleCreate','No\x20Company','upperFirst','create','forEach','type'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0xdcaa,0x1e9));var _0xadca=function(_0x172182,_0x1b23f9){_0x172182=_0x172182-0x0;var _0x490261=_0xdcaa[_0x172182];return _0x490261;};'use strict';var _=require(_0xadca('0x0'));var rp=require(_0xadca('0x1'));var moment=require(_0xadca('0x2'));var BPromise=require('bluebird');var md5=require(_0xadca('0x3'));var jsforce=require(_0xadca('0x4'));var util=require(_0xadca('0x5'));var Redis=require(_0xadca('0x6'));var intUtil=require(_0xadca('0x7'));var config=require('../../../../config/environment');var logger=require(_0xadca('0x8'))(_0xadca('0x9'));config[_0xadca('0xa')]=_[_0xadca('0xb')](config['redis'],{'host':_0xadca('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xadca('0xa')]));function emit(_0x1e3b9e,_0x42ccfb,_0x1fe5b8){io['to'](_0x1e3b9e)[_0xadca('0xd')](_0x42ccfb,_0x1fe5b8);}function getTicket(_0x33f4c8,_0x5713ab,_0x31c1d7,_0x2f1fd0,_0x2a5d3b,_0x536063,_0x1b1494,_0x4da9df){var _0x4d829d={};if(_0x2f1fd0[_0xadca('0xe')]==='Task'){_0x4d829d=Object[_0xadca('0xf')]({},{'OwnerId':_0x5713ab['id'],'ActivityDate':moment[_0xadca('0x10')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0xadca('0x11')](_0x2f1fd0[_0xadca('0x12')],_0x2a5d3b,'\x20'),'Description':intUtil[_0xadca('0x11')](_0x2f1fd0[_0xadca('0x13')],_0x2a5d3b,'\x0a')},getCustomFields(_0x536063,_0x2a5d3b));if(_0x31c1d7){_0x4d829d[_0xadca('0x14')]=_0x31c1d7['id'];}}else if(_0x2f1fd0['ticketType']===_0xadca('0x15')){_0x4d829d=Object['assign']({},{'OwnerId':_0x5713ab['id'],'Subject':intUtil[_0xadca('0x11')](_0x2f1fd0[_0xadca('0x12')],_0x2a5d3b,'\x20'),'Description':intUtil['getString'](_0x2f1fd0[_0xadca('0x13')],_0x2a5d3b,'\x0a')},getCustomFields(_0x536063,_0x2a5d3b));if(_0x31c1d7){_0x4d829d['ContactId']=_0x31c1d7['id'];}}return _0x1b1494[_0xadca('0x16')](_0x2f1fd0['ticketType'])['create'](_0x4d829d);}function getUser(_0x427ea7,_0x2ccc08,_0x18e6d8){if(!_['isNil'](_0x2ccc08)&&intUtil[_0xadca('0x17')](_0x2ccc08)){var _0x2a4314={'Email':_0x2ccc08};var _0xcbc3fd={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x18e6d8[_0xadca('0x16')](_0xadca('0x18'))[_0xadca('0x19')](_0x2a4314,_0xcbc3fd)[_0xadca('0x1a')]()[_0xadca('0x1b')](function(_0x5270f1){if(_0x5270f1[_0xadca('0x1c')]){var _0x140c68=_[_0xadca('0x19')](_0x5270f1,function(_0x420979){return _0x420979['Email']===_0x2ccc08;});if(_0x140c68){logger[_0xadca('0x1d')](_0xadca('0x1e'),_0x2ccc08);return BPromise[_0xadca('0x1f')]({'id':_0x140c68['Id'],'name':_0x140c68['Name']});}}else{logger[_0xadca('0x1d')](_0xadca('0x20'),_0x2ccc08);return _0x18e6d8[_0xadca('0x21')]()['then'](function(_0x3ba6e4){return BPromise['resolve']({'id':_0x3ba6e4[_0xadca('0x22')],'name':_0x3ba6e4[_0xadca('0x23')]});});}});}else{logger[_0xadca('0x1d')](_0xadca('0x20'),_0x2ccc08);return _0x18e6d8[_0xadca('0x21')]()[_0xadca('0x1b')](function(_0x28eb05){return BPromise[_0xadca('0x1f')]({'id':_0x28eb05[_0xadca('0x22')],'name':_0x28eb05['display_name']});});}}function getEndUser(_0x3bc6b4,_0x535e7b,_0x3aa6ab,_0xc8b36a,_0x37f982){var _0x23293f={'Phone':_0xc8b36a};var _0x2ac3c5={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xadca('0x1f')]()[_0xadca('0x1b')](function(){if(_0x535e7b[_0xadca('0xe')]===_0xadca('0x24')){logger[_0xadca('0x1d')](_0xadca('0x25'),_0xc8b36a,_0x535e7b[_0xadca('0x26')]);switch(_0x535e7b[_0xadca('0x26')]){case _0xadca('0x27'):return _0x37f982['sobject'](_0xadca('0x28'))['find'](_0x23293f,_0x2ac3c5)[_0xadca('0x1a')]()['then'](function(_0x5042b8){if(_0x5042b8&&_0x5042b8[_0xadca('0x1c')]){return _0x5042b8;}else{return _0x37f982[_0xadca('0x16')](_0xadca('0x29'))[_0xadca('0x19')](_0x23293f,_0x2ac3c5);}});case _0xadca('0x2a'):return _0x37f982['sobject']('Contact')[_0xadca('0x19')](_0x23293f,_0x2ac3c5)[_0xadca('0x1a')]();case _0xadca('0x2b'):return _0x37f982[_0xadca('0x16')](_0xadca('0x29'))[_0xadca('0x19')](_0x23293f,_0x2ac3c5);default:return null;}}else if(_0x535e7b[_0xadca('0xe')]===_0xadca('0x15')){logger['info'](_0xadca('0x25'),_0xc8b36a,'contact');return _0x37f982['sobject']('Contact')[_0xadca('0x19')](_0x23293f,_0x2ac3c5)['execute']();}})['then'](function(_0x143407){if(_0x143407&&_0x143407[_0xadca('0x1c')]){var _0x1fcb9d=_[_0xadca('0x19')](_0x143407,function(_0x45736d){return _0x45736d[_0xadca('0x2c')]===_0xc8b36a;});if(_0x1fcb9d){return BPromise[_0xadca('0x1f')]({'id':_0x1fcb9d['Id'],'name':_0x1fcb9d[_0xadca('0x2d')],'phone':_0x1fcb9d[_0xadca('0x2c')]});}}})[_0xadca('0x1b')](function(_0x1375b){if(_0x1375b){logger['info'](_0xadca('0x2e'),_0xc8b36a);return BPromise[_0xadca('0x1f')](_0x1375b);}else{logger[_0xadca('0x1d')](_0xadca('0x2f'),_0xc8b36a);var _0x5cb606={'LastName':_0x3aa6ab!=='<unknown>'?_0x3aa6ab:util[_0xadca('0x30')](_0xadca('0x31'),_0xc8b36a),'Phone':_0xc8b36a};if(_0x535e7b[_0xadca('0x32')]){if(_0x535e7b[_0xadca('0x32')]===_0xadca('0x2a')){logger[_0xadca('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0xc8b36a,_0x535e7b[_0xadca('0x32')]);}else if(_0x535e7b[_0xadca('0x32')]==='lead'&&_0x535e7b[_0xadca('0xe')]===_0xadca('0x24')){logger[_0xadca('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0xc8b36a,_0x535e7b[_0xadca('0x32')]);_0x5cb606['Company']=_0xadca('0x33');}else{return null;}}return _0x37f982[_0xadca('0x16')](_[_0xadca('0x34')](_0x535e7b[_0xadca('0x32')]))[_0xadca('0x35')](_0x5cb606);}});}function getCustomFields(_0x2db726,_0xbf3c4a){var _0x473a27={};if(_0x2db726['length']>0x0){_[_0xadca('0x36')](_0x2db726,function(_0x5b47b7){if(_0x5b47b7[_0xadca('0x37')]===_0xadca('0x38')&&_0x5b47b7[_0xadca('0x39')]){_0x473a27[_0x5b47b7[_0xadca('0x39')]]=_0x5b47b7[_0xadca('0x3a')][_0xadca('0x3b')]();}else if(_0x5b47b7[_0xadca('0x37')]===_0xadca('0x3c')&&_0x5b47b7[_0xadca('0x3d')]&&_0x5b47b7[_0xadca('0x39')]){_0xbf3c4a[_0x5b47b7[_0xadca('0x3d')]]&&(_0x473a27[_0x5b47b7[_0xadca('0x39')]]=_0xbf3c4a[_0x5b47b7[_0xadca('0x3d')]][_0xadca('0x3b')]());}else if(_0x5b47b7[_0xadca('0x37')]===_0xadca('0x3e')&&_0x5b47b7[_0xadca('0x3f')]&&_0x5b47b7[_0xadca('0x3f')][_0xadca('0x40')]&&_0x5b47b7[_0xadca('0x39')]){_0xbf3c4a[_0x5b47b7[_0xadca('0x3f')][_0xadca('0x40')][_0xadca('0x41')]()]&&(_0x473a27[_0x5b47b7[_0xadca('0x39')]]=_0xbf3c4a[_0x5b47b7[_0xadca('0x3f')]['name'][_0xadca('0x41')]()]['toString']());}});}return _0x473a27;}function getConnection(_0x4d248c){var _0x3b0ff7=_0x4d248c['password'][_0xadca('0x42')](_0x4d248c[_0xadca('0x43')]);var _0x395486=new jsforce[(_0xadca('0x44'))]({'oauth2':{'loginUrl':_0x4d248c[_0xadca('0x45')]||_0xadca('0x46'),'clientId':_0x4d248c['clientId'],'clientSecret':_0x4d248c['clientSecret']}});return _0x395486[_0xadca('0x47')](_0x4d248c['username'],_0x3b0ff7)['then'](function(){logger['info']('Connection\x20established.');return _0x395486;});}exports['queue']=function(_0x356b0f,_0x519bae,_0x5dbef3,_0x267da8,_0x3e2a78,_0x5ce7ae){var _0x36bd71,_0x82bc44,_0x142597,_0x2ad51b;_0x5ce7ae[_0xadca('0x48')]=intUtil[_0xadca('0x49')](_0x5ce7ae[_0xadca('0x48')]);_0x5ce7ae[_0xadca('0x45')]=intUtil[_0xadca('0x49')](_0x5ce7ae[_0xadca('0x45')]);if(_0x3e2a78&&_0x3e2a78[_0xadca('0x4a')]){logger['info'](_0xadca('0x4b'),_0xadca('0x4c'));_0x519bae['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5ce7ae[_0xadca('0x48')],_0x519bae[_0xadca('0x4d')],md5(_0x519bae[_0xadca('0x4d')]));}else{_0x519bae['recordingURL']='';}return getConnection(_0x5ce7ae)['then'](function(_0x25641e){_0x2ad51b=_0x25641e;return getUser(_0x5ce7ae,_0x267da8[_0xadca('0x4e')],_0x2ad51b);})[_0xadca('0x1b')](function(_0x415e40){_0x36bd71=_0x415e40;return getEndUser(_0x5ce7ae,_0x5dbef3,_0x519bae[_0xadca('0x4f')],_0x519bae['calleridnum'],_0x2ad51b);})[_0xadca('0x1b')](function(_0x3f4e73){_0x82bc44=_0x3f4e73;return getTicket(_0x5ce7ae,_0x36bd71,_0x82bc44,_0x5dbef3,_0x519bae,_0x5dbef3['Fields'],_0x2ad51b,_0xadca('0x50'));})[_0xadca('0x1b')](function(_0x2fb95b){_0x142597=_0x2fb95b;logger[_0xadca('0x1d')](_0xadca('0x51'),_0x142597['id']);logger[_0xadca('0x1d')](_0xadca('0x52'),_0x142597['id'],_0x267da8[_0xadca('0x40')],_0x5ce7ae[_0xadca('0x37')]);switch(_0x5ce7ae[_0xadca('0x37')]){case'integrationTab':emit(util[_0xadca('0x30')](_0xadca('0x53'),_0x267da8[_0xadca('0x40')]),_0xadca('0x54'),{'recordId':_0x142597['id']});break;case _0xadca('0x55'):emit(util[_0xadca('0x30')](_0xadca('0x53'),_0x267da8['name']),_0xadca('0x56'),{'uri':util[_0xadca('0x30')](_0xadca('0x57'),_0x2ad51b['instanceUrl'],_0x142597['id'])});break;default:logger['error'](_0xadca('0x58'));}})[_0xadca('0x59')](function(_0x2aca09){logger[_0xadca('0x5a')](_0xadca('0x4b'),JSON['stringify'](_0x2aca09));});};exports[_0xadca('0x5b')]=function(_0x8ec16e,_0x256621,_0x233830,_0x2a4200,_0x2dc4ca,_0x183a95,_0x4e271d){var _0x4300da,_0x49907e,_0x1ec19d,_0x3edc04;_0x183a95[_0xadca('0x48')]=intUtil[_0xadca('0x49')](_0x183a95['serverUrl']);_0x183a95[_0xadca('0x45')]=intUtil[_0xadca('0x49')](_0x183a95['remoteUri']);if(_0x4e271d&&_0x4e271d[_0xadca('0x5c')]&&_0x4e271d[_0xadca('0x5c')]!==_0xadca('0x5d')){logger[_0xadca('0x1d')](_0xadca('0x5e'),_0xadca('0x4c'));_0x256621[_0xadca('0x5f')]=util[_0xadca('0x30')](_0xadca('0x60'),_0x183a95[_0xadca('0x48')],_0x256621[_0xadca('0x4d')],md5(_0x256621[_0xadca('0x4d')]));}return getConnection(_0x183a95)['then'](function(_0x24f58b){_0x3edc04=_0x24f58b;return getUser(_0x183a95,_0x2a4200[_0xadca('0x4e')],_0x3edc04);})[_0xadca('0x1b')](function(_0x90ad58){_0x4300da=_0x90ad58;return getEndUser(_0x183a95,_0x233830,_0x256621[_0xadca('0x61')],_0x256621[_0xadca('0x62')],_0x3edc04);})['then'](function(_0x3a330e){_0x49907e=_0x3a330e;return getTicket(_0x183a95,_0x4300da,_0x49907e,_0x233830,_0x256621,_0x233830[_0xadca('0x63')],_0x3edc04,'outbound');})[_0xadca('0x1b')](function(_0x31ad57){_0x1ec19d=_0x31ad57;logger[_0xadca('0x1d')](_0xadca('0x64'),_0x1ec19d['id']);logger[_0xadca('0x1d')](_0xadca('0x65'),_0x1ec19d['id'],_0x2a4200['name'],_0x183a95[_0xadca('0x37')]);switch(_0x183a95[_0xadca('0x37')]){case'integrationTab':emit(util[_0xadca('0x30')]('user:%s',_0x2a4200['name']),'trigger:salesforce:display',{'recordId':_0x1ec19d['id']});break;case _0xadca('0x55'):emit(util[_0xadca('0x30')](_0xadca('0x53'),_0x2a4200[_0xadca('0x40')]),'trigger:browser:url',{'uri':util[_0xadca('0x30')](_0xadca('0x57'),_0x3edc04[_0xadca('0x66')],_0x1ec19d['id'])});break;default:logger[_0xadca('0x5a')](_0xadca('0x5e'),_0xadca('0x67'));}})[_0xadca('0x59')](function(_0x31c8f1){logger['error'](_0xadca('0x5e'),JSON['stringify'](_0x31c8f1));});};exports[_0xadca('0x68')]=function(_0x5e486f,_0x14dbba,_0x2d7ccb,_0x2374cf,_0x47a60d,_0x3c1e0c){var _0x195aa3,_0x549036,_0xec749a,_0x4bbf96;_0x3c1e0c[_0xadca('0x48')]=intUtil['stripTrailingSlash'](_0x3c1e0c[_0xadca('0x48')]);_0x3c1e0c[_0xadca('0x45')]=intUtil[_0xadca('0x49')](_0x3c1e0c[_0xadca('0x45')]);if(_0x47a60d&&_0x47a60d['monitor_format']){logger[_0xadca('0x1d')](_0xadca('0x69'),_0xadca('0x4c'));_0x14dbba['recordingURL']=util[_0xadca('0x30')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3c1e0c[_0xadca('0x48')],_0x14dbba[_0xadca('0x4d')],md5(_0x14dbba['uniqueid']));}else{_0x14dbba['recordingURL']='';}return getConnection(_0x3c1e0c)['then'](function(_0x17706c){_0x4bbf96=_0x17706c;if(!_[_0xadca('0x6a')](_0x2374cf)){return getUser(_0x3c1e0c,_0x2374cf[_0xadca('0x40')],_0x4bbf96);}else{return getUser(_0x3c1e0c,null,_0x4bbf96);}})[_0xadca('0x1b')](function(_0x23115b){_0x195aa3=_0x23115b;return getEndUser(_0x3c1e0c,_0x2d7ccb,_0x14dbba[_0xadca('0x4f')],_0x14dbba['calleridnum'],_0x4bbf96);})['then'](function(_0x2f2065){_0x549036=_0x2f2065;return getTicket(_0x3c1e0c,_0x195aa3,_0x549036,_0x2d7ccb,_0x14dbba,_0x2d7ccb['Fields'],_0x4bbf96);})[_0xadca('0x1b')](function(_0x2decc2){_0xec749a=_0x2decc2;logger[_0xadca('0x1d')]('[ABANDONED]\x20Ticket\x20%s\x20created.',_0xec749a['id']);logger[_0xadca('0x1d')](_0xadca('0x6b'),_0x3c1e0c['type']);})[_0xadca('0x59')](function(_0x4137f7){logger['error'](_0xadca('0x69'),JSON[_0xadca('0x6c')](_0x4137f7));});};