4a7894cb91db867ae88aa8ccf72188c9caad07b4
[motion2.git] / server / services / ami / trigger / integration / dynamics365.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 _0x5b44=['Bearer\x20','isNil','validateEmail','userEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','catch','outbound','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','destcalleridnum','telephone1','&$filter=','\x20eq\x20\x27','replace','%2b','value','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','includes','string','picklist','type','customField','content','ticketType','incident','incidents','getString','Subjects','Descriptions','/contacts(','Fields','4.0','phonecall','callDirection','queue','phonecalls','assign','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name',']\x20Error\x20running\x20Dynamics365\x20integration','error','Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','md5','ioredis','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','modernAuthentication','CloudProvider','data7','tenantId','POST','remoteUri','password','clientSecret','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x5b44,0x130));var _0x45b4=function(_0x43511b,_0x47ceed){_0x43511b=_0x43511b-0x0;var _0x1e3f3f=_0x5b44[_0x43511b];return _0x1e3f3f;};'use strict';var _=require(_0x45b4('0x0'));var rp=require('request-promise');var util=require(_0x45b4('0x1'));var intUtil=require(_0x45b4('0x2'));var md5=require(_0x45b4('0x3'));var Redis=require(_0x45b4('0x4'));var logger=require('../../../../config/logger')('dynamics365');var config=require(_0x45b4('0x5'));config['redis']=_[_0x45b4('0x6')](config[_0x45b4('0x7')],{'host':_0x45b4('0x8'),'port':0x18eb});var io=require(_0x45b4('0x9'))(new Redis(config[_0x45b4('0x7')]));function getAuthToken(_0x23214e,_0x8305fd,_0x52503e){if(_0x23214e[_0x45b4('0xa')]){_0x23214e['remoteUri']=_0x23214e[_0x45b4('0xb')][_0x45b4('0xc')];_0x23214e[_0x45b4('0xd')]=_0x23214e[_0x45b4('0xb')]['data2'];return Promise['resolve'](_0x23214e[_0x45b4('0xb')]['data5']);}var _0x3456fb={'method':_0x45b4('0xe'),'uri':_0x8305fd,'form':{'client_id':_0x23214e['clientId'],'resource':_0x23214e[_0x45b4('0xf')],'username':_0x23214e['username'],'password':_0x23214e[_0x45b4('0x10')],'grant_type':_0x45b4('0x10'),'client_secret':_0x23214e[_0x45b4('0x11')]},'json':!![]};return rp(_0x3456fb)['then'](function(_0x4beefe){return _0x4beefe['access_token'];})['catch'](function(_0x2ffb5d){logger['error']('['+[_0x52503e[_0x45b4('0x12')]()]+_0x45b4('0x13'));return _0x2ffb5d[_0x45b4('0x14')];});}function getUser(_0x4ae612,_0x18b2ff,_0x4cac1e,_0x430cd6,_0x3471da,_0x396006){return new Promise(function(_0x2f628b,_0x3f61b6){return getAuthToken(_0x18b2ff,_0x430cd6,_0x396006)[_0x45b4('0x15')](function(_0x4a8b23){var _0x687e7f={'method':_0x45b4('0x16'),'uri':_0x3471da+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x45b4('0x17')+_0x4a8b23,'OData-Version':'4.0'},'json':!![]};return rp(_0x687e7f);})[_0x45b4('0x15')](function(_0x2e3954){var _0x527933=_0x2e3954['value'];var _0x3c1b68=![];var _0x5659c9=null;if(!_[_0x45b4('0x18')](_0x4cac1e)){if(intUtil[_0x45b4('0x19')](_0x4cac1e['email'])){_0x4ae612[_0x45b4('0x1a')]=_0x4cac1e[_0x45b4('0x1b')];for(_0x5659c9=0x0;_0x5659c9<_0x527933[_0x45b4('0x1c')];_0x5659c9++){if(_0x527933[_0x5659c9][_0x45b4('0x1d')]===_0x4cac1e[_0x45b4('0x1b')]&&!_0x527933[_0x5659c9][_0x45b4('0x1e')]){_0x3c1b68=!![];logger[_0x45b4('0x1f')]('['+[_0x396006[_0x45b4('0x12')]()]+_0x45b4('0x20')+_0x527933[_0x5659c9][_0x45b4('0x21')]+'!');_0x4ae612[_0x45b4('0x22')]=_0x527933[_0x5659c9][_0x45b4('0x21')];}}}}if(!_0x3c1b68){logger[_0x45b4('0x1f')]('['+[_0x396006[_0x45b4('0x12')]()]+_0x45b4('0x23'));_0x4ae612[_0x45b4('0x1a')]=_0x18b2ff[_0x45b4('0x24')];for(_0x5659c9=0x0;_0x5659c9<_0x527933[_0x45b4('0x1c')];_0x5659c9++){if(_0x527933[_0x5659c9][_0x45b4('0x1d')]===_0x18b2ff[_0x45b4('0x24')]){_0x4ae612[_0x45b4('0x22')]=_0x527933[_0x5659c9][_0x45b4('0x21')];}}}_0x2f628b(_0x4ae612);})[_0x45b4('0x25')](function(_0x58e771){_0x3f61b6(_0x58e771[_0x45b4('0x14')]);});});}function createEndUser(_0x287934,_0x229631,_0x407acd,_0x25a9e9,_0x4abd27,_0xa4d0ad,_0x470ffa){return new Promise(function(_0xce3ae3,_0x14c18e){return getAuthToken(_0x229631,_0x407acd,_0xa4d0ad)[_0x45b4('0x15')](function(_0x49432f){var _0x124108=_0xa4d0ad['toLowerCase']()===_0x45b4('0x26')?_0x4abd27['destcalleridnum']:_0x4abd27[_0x45b4('0x27')];var _0x1e14c5={'method':'POST','uri':_0x25a9e9+_0x45b4('0x28'),'body':{'fullname':_0x124108,'firstname':_0x124108,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x45b4('0x29')+_0x287934[_0x45b4('0x22')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x49432f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x1e14c5[_0x45b4('0x2a')][_0x470ffa]=_0x124108;return rp(_0x1e14c5);})['then'](function(_0x477803){var _0x3bafdf=_0x477803[_0x45b4('0x2b')][_0x45b4('0x2c')];var _0x2bd24e=_0x3bafdf[_0x45b4('0x2d')](_0x3bafdf['lastIndexOf']('(')+0x1,_0x3bafdf[_0x45b4('0x2e')](')'));_0x287934[_0x45b4('0x2f')]=_0x2bd24e;_0xce3ae3(_0x287934);})[_0x45b4('0x25')](function(_0x3b9f28){_0x14c18e(_0x3b9f28[_0x45b4('0x14')]);});});}function getEndUser(_0x5e8a91,_0x53d429,_0x25a3de,_0x46b9ec,_0x3e0997,_0x26e7d5,_0x2ef4ae,_0x25beec){var _0x1add1b=_0x26e7d5['toLowerCase']()===_0x45b4('0x26')?_0x3e0997[_0x45b4('0x30')]:_0x3e0997[_0x45b4('0x27')];return getAuthToken(_0x53d429,_0x25a3de,_0x26e7d5)[_0x45b4('0x15')](function(_0x3fabb4){_0x25beec=_0x25beec?_0x25beec:_0x45b4('0x31');var _0x2f4655={'method':_0x45b4('0x16'),'uri':_0x46b9ec+'contacts?$select='+_0x25beec+_0x45b4('0x32')+_0x25beec+_0x45b4('0x33')+_0x1add1b[_0x45b4('0x34')]('+',_0x45b4('0x35'))+'\x27','headers':{'Authorization':_0x45b4('0x17')+_0x3fabb4,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2f4655);})[_0x45b4('0x15')](function(_0x360114){var _0x42f7bb=![];if(!_0x360114)return _0x42f7bb;var _0x57ed64=_0x360114[_0x45b4('0x36')];for(var _0x2e4824=0x0;_0x2e4824<_0x57ed64[_0x45b4('0x1c')];_0x2e4824++){if(_0x57ed64[_0x2e4824][_0x25beec]===_0x1add1b){_0x42f7bb=!![];_0x5e8a91['enduserId']=_0x57ed64[_0x2e4824][_0x45b4('0x37')];}}return _0x42f7bb;})['then'](function(_0x159c95){if(_0x159c95)return _0x5e8a91;if(_0x2ef4ae==='nothing'){logger['info']('['+[_0x26e7d5[_0x45b4('0x12')]()]+_0x45b4('0x38'));return _0x5e8a91;}return createEndUser(_0x5e8a91,_0x53d429,_0x25a3de,_0x46b9ec,_0x3e0997,_0x26e7d5,_0x25beec)[_0x45b4('0x15')](function(_0x1fe328){logger['info']('['+[_0x26e7d5[_0x45b4('0x12')]()]+']\x20Enduser\x20created!',_0x1fe328['enduserId']);return _0x1fe328;});});}function getCustomFields(_0x5727c0,_0x9dbd22,_0x46c031){var _0x279001={};if(_0x5727c0['length']>0x0){_[_0x45b4('0x39')](_0x5727c0,function(_0x883a94){if(_[_0x45b4('0x3a')]([_0x45b4('0x3b'),_0x45b4('0x3c')],_0x883a94[_0x45b4('0x3d')])&&_0x883a94['nameField']&&!_0x883a94[_0x45b4('0x3e')]){var _0x4273c3=_0x883a94['idField']['toLowerCase']();var _0x3de0af=_0x4273c3[_0x45b4('0x2d')](0x0,_0x4273c3['indexOf']('_'));var _0x4e3b06=_0x4273c3[_0x45b4('0x2d')](_0x4273c3['indexOf']('_')+0x1);if(_0x3de0af===_0x46c031){_0x279001[_0x4e3b06]=_0x883a94[_0x45b4('0x3f')];}}});}return _0x279001;}function getTicket(_0x49ad89,_0x333c20,_0x485ef3,_0x4a51e4,_0x588844,_0x3c4d7c,_0x554936){return new Promise(function(_0x24e2ba,_0x36df99){var _0x18b9e4;return getAuthToken(_0x333c20,_0x485ef3,_0x554936)['then'](function(_0x48df93){if(_0x3c4d7c[_0x45b4('0x40')]===_0x45b4('0x41')){_0x18b9e4={'method':_0x45b4('0xe'),'uri':_0x4a51e4+_0x45b4('0x42'),'body':Object['assign']({},{'title':intUtil[_0x45b4('0x43')](_0x3c4d7c[_0x45b4('0x44')],_0x588844,'\x20'),'description':intUtil[_0x45b4('0x43')](_0x3c4d7c[_0x45b4('0x45')],_0x588844,'\x0a'),'customerid_contact@odata.bind':_0x49ad89[_0x45b4('0x2f')]?_0x45b4('0x46')+_0x49ad89[_0x45b4('0x2f')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x49ad89[_0x45b4('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x3c4d7c[_0x45b4('0x47')],_0x588844,_0x3c4d7c[_0x45b4('0x40')])),'headers':{'Authorization':'Bearer\x20'+_0x48df93,'OData-Version':_0x45b4('0x48')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3c4d7c[_0x45b4('0x40')]===_0x45b4('0x49')){var _0xdb14d2=_0x49ad89[_0x45b4('0x2f')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x49ad89['userId']+')','participationtypemask':_0x49ad89[_0x45b4('0x4a')]===_0x45b4('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0x45b4('0x46')+_0x49ad89['enduserId']+')','participationtypemask':_0x49ad89['callDirection']==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x45b4('0x29')+_0x49ad89[_0x45b4('0x22')]+')','participationtypemask':_0x49ad89['callDirection']===_0x45b4('0x4b')?0x2:0x1}];_0x18b9e4={'method':_0x45b4('0xe'),'uri':_0x4a51e4+_0x45b4('0x4c'),'body':Object[_0x45b4('0x4d')]({},{'subject':intUtil[_0x45b4('0x43')](_0x3c4d7c[_0x45b4('0x44')],_0x588844,'\x20'),'phonenumber':String(_0x588844[_0x45b4('0x27')]),'description':intUtil[_0x45b4('0x43')](_0x3c4d7c[_0x45b4('0x45')],_0x588844,'\x0a'),'regardingobjectid_contact@odata.bind':_0x49ad89[_0x45b4('0x2f')]?'/contacts('+_0x49ad89[_0x45b4('0x2f')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x49ad89[_0x45b4('0x22')]+')','directioncode':_0x49ad89[_0x45b4('0x4a')]===_0x45b4('0x4b')?![]:!![],'phonecall_activity_parties':_0xdb14d2},getCustomFields(_0x3c4d7c[_0x45b4('0x47')],_0x588844,_0x3c4d7c[_0x45b4('0x40')])),'headers':{'Authorization':'Bearer\x20'+_0x48df93,'OData-Version':_0x45b4('0x48')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x18b9e4);})[_0x45b4('0x15')](function(_0x385ee1){var _0x570642=_0x385ee1['headers'][_0x45b4('0x2c')];var _0x75e72=_0x570642[_0x45b4('0x2d')](_0x570642[_0x45b4('0x2e')]('(')+0x1,_0x570642[_0x45b4('0x2e')](')'));_0x49ad89[_0x45b4('0x4e')]=_0x75e72;_0x24e2ba(_0x49ad89);})['catch'](function(_0x426d8d){_0x36df99(_0x426d8d['message']);});});}function emit(_0x1e7d20,_0x5cc212,_0x563fd1,_0x2ce898){var _0x4301a2={'uri':util[_0x45b4('0x4f')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x1e7d20,_0x563fd1,_0x2ce898)};io['to'](util['format'](_0x45b4('0x50'),_0x5cc212))[_0x45b4('0x51')](_0x45b4('0x52'),_0x4301a2);}exports['cs']=function(_0x1e685a,_0x1ce384,_0x436d93,_0x24121d,_0x2d6f36,_0x368a39,_0x45715d,_0x3725e8){var _0x5809c2={};_0x368a39[_0x45b4('0xf')]=_0x368a39[_0x45b4('0xa')]?intUtil['stripTrailingSlash'](_0x368a39[_0x45b4('0xb')][_0x45b4('0xc')]):intUtil[_0x45b4('0x53')](_0x368a39['remoteUri']);_0x368a39[_0x45b4('0x54')]=intUtil[_0x45b4('0x53')](_0x368a39[_0x45b4('0x54')]);_0x5809c2['callDirection']=_0x3725e8===_0x45b4('0x4b')||_0x3725e8===_0x45b4('0x55')?_0x45b4('0x4b'):_0x45b4('0x26');var _0x5b4507=_0x368a39['modernAuthentication']?util[_0x45b4('0x4f')](_0x45b4('0x56'),_0x368a39[_0x45b4('0xb')][_0x45b4('0xc')]):util[_0x45b4('0x4f')](_0x45b4('0x56'),_0x368a39['remoteUri']);var _0x32c29e=util['format'](_0x45b4('0x57'),_0x368a39[_0x45b4('0xd')]);var _0x5dc9a9=util[_0x45b4('0x4f')](_0x45b4('0x58'),_0x368a39[_0x45b4('0x54')],_0x1ce384['uniqueid'],md5(_0x1ce384[_0x45b4('0x59')]));if(_0x2d6f36&&_0x2d6f36['monitor_format']){logger[_0x45b4('0x1f')](_0x45b4('0x5a'),_0x45b4('0x5b'));_0x1ce384[_0x45b4('0x5c')]=_0x5dc9a9;}else if(_0x45715d&&_0x45715d[_0x45b4('0x5d')]&&_0x45715d['recordingFormat']!==_0x45b4('0x5e')){logger['info'](_0x45b4('0x5f'),_0x45b4('0x5b'));_0x1ce384[_0x45b4('0x5c')]=_0x5dc9a9;}else{_0x1ce384[_0x45b4('0x5c')]='';}return getUser(_0x5809c2,_0x368a39,_0x24121d,_0x32c29e,_0x5b4507,_0x3725e8)[_0x45b4('0x15')](function(_0x42c012){logger[_0x45b4('0x1f')]('['+_0x3725e8[_0x45b4('0x12')]()+_0x45b4('0x60'),_0x42c012[_0x45b4('0x22')]);logger['info']('['+_0x3725e8['toUpperCase']()+_0x45b4('0x61'),_0x42c012[_0x45b4('0x1a')]);return getEndUser(_0x42c012,_0x368a39,_0x32c29e,_0x5b4507,_0x1ce384,_0x3725e8,_0x436d93[_0x45b4('0x62')],_0x436d93[_0x45b4('0x63')]);})[_0x45b4('0x15')](function(_0x598ce6){logger[_0x45b4('0x1f')]('['+_0x3725e8['toUpperCase']()+_0x45b4('0x64'),_0x598ce6['enduserId']);logger['info']('['+_0x3725e8[_0x45b4('0x12')]()+_0x45b4('0x65'),_0x1ce384['calleridnum']);return getTicket(_0x598ce6,_0x368a39,_0x32c29e,_0x5b4507,_0x1ce384,_0x436d93,_0x3725e8);})[_0x45b4('0x15')](function(_0x31dc90){logger[_0x45b4('0x1f')](util['format']('['+_0x3725e8[_0x45b4('0x12')]()+_0x45b4('0x66'),_0x436d93[_0x45b4('0x40')],_0x31dc90[_0x45b4('0x4e')]));logger['info'](util[_0x45b4('0x4f')]('['+_0x3725e8['toUpperCase']()+_0x45b4('0x67'),_0x3725e8));if(_0x3725e8!=='unmanaged'&&_0x436d93[_0x45b4('0x68')]){logger['info']('['+_0x3725e8[_0x45b4('0x12')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x368a39[_0x45b4('0xf')],_0x24121d[_0x45b4('0x69')],_0x436d93[_0x45b4('0x40')],_0x31dc90[_0x45b4('0x4e')]);}})['catch'](function(_0x2a4559){logger['error']('['+_0x3725e8[_0x45b4('0x12')]()+_0x45b4('0x6a'),_0x2a4559['message']);console[_0x45b4('0x6b')](_0x45b4('0x6c'),_0x2a4559);});};