1f0d487d79113a5328b3ba53984e9ff95eff6963
[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 _0x572a=['data7','data2','resolve','data5','POST','clientId','remoteUri','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','email','userEmail','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','userId','systemuserid','info','username','length','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','&$filter=','replace','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','type','nameField','customField','idField','indexOf','ticketType','incident','incidents','assign','getString','Subjects','phonecall','callDirection','queue','/contacts(','phonecalls','Descriptions','Fields','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','CloudProvider'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0x572a,0xd6));var _0xa572=function(_0x123b78,_0x5c97d0){_0x123b78=_0x123b78-0x0;var _0x5487c9=_0x572a[_0x123b78];return _0x5487c9;};'use strict';var _=require(_0xa572('0x0'));var rp=require(_0xa572('0x1'));var util=require(_0xa572('0x2'));var intUtil=require('./util');var md5=require(_0xa572('0x3'));var Redis=require(_0xa572('0x4'));var logger=require(_0xa572('0x5'))(_0xa572('0x6'));var config=require(_0xa572('0x7'));config[_0xa572('0x8')]=_['defaults'](config['redis'],{'host':_0xa572('0x9'),'port':0x18eb});var io=require(_0xa572('0xa'))(new Redis(config['redis']));function getAuthToken(_0x3f0775,_0x25092a,_0x5d3feb){if(_0x3f0775['modernAuthentication']){_0x3f0775['remoteUri']=_0x3f0775[_0xa572('0xb')][_0xa572('0xc')];_0x3f0775['tenantId']=_0x3f0775[_0xa572('0xb')][_0xa572('0xd')];return Promise[_0xa572('0xe')](_0x3f0775['CloudProvider'][_0xa572('0xf')]);}var _0x162c51={'method':_0xa572('0x10'),'uri':_0x25092a,'form':{'client_id':_0x3f0775[_0xa572('0x11')],'resource':_0x3f0775[_0xa572('0x12')],'username':_0x3f0775['username'],'password':_0x3f0775[_0xa572('0x13')],'grant_type':_0xa572('0x13'),'client_secret':_0x3f0775[_0xa572('0x14')]},'json':!![]};return rp(_0x162c51)[_0xa572('0x15')](function(_0xa68835){return _0xa68835[_0xa572('0x16')];})[_0xa572('0x17')](function(_0x121f21){logger[_0xa572('0x18')]('['+[_0x5d3feb[_0xa572('0x19')]()]+_0xa572('0x1a'));return _0x121f21[_0xa572('0x1b')];});}function getUser(_0x582e4e,_0x37b014,_0x123dab,_0x55713e,_0x3b4718,_0x517105){return new Promise(function(_0xf46521,_0x3e9b10){return getAuthToken(_0x37b014,_0x55713e,_0x517105)[_0xa572('0x15')](function(_0x4c6a75){var _0x6ef30f={'method':_0xa572('0x1c'),'uri':_0x3b4718+_0xa572('0x1d'),'headers':{'Authorization':_0xa572('0x1e')+_0x4c6a75,'OData-Version':_0xa572('0x1f')},'json':!![]};return rp(_0x6ef30f);})[_0xa572('0x15')](function(_0x2544b3){var _0x22fba4=_0x2544b3[_0xa572('0x20')];var _0x43193b=![];var _0x5f3ac1=null;if(!_['isNil'](_0x123dab)){if(intUtil[_0xa572('0x21')](_0x123dab[_0xa572('0x22')])){_0x582e4e[_0xa572('0x23')]=_0x123dab[_0xa572('0x22')];for(_0x5f3ac1=0x0;_0x5f3ac1<_0x22fba4['length'];_0x5f3ac1++){if(_0x22fba4[_0x5f3ac1][_0xa572('0x24')]===_0x123dab[_0xa572('0x22')]&&!_0x22fba4[_0x5f3ac1][_0xa572('0x25')]){_0x43193b=!![];logger['info']('['+[_0x517105['toUpperCase']()]+_0xa572('0x26')+_0x22fba4[_0x5f3ac1]['systemuserid']+'!');_0x582e4e[_0xa572('0x27')]=_0x22fba4[_0x5f3ac1][_0xa572('0x28')];}}}}if(!_0x43193b){logger[_0xa572('0x29')]('['+[_0x517105[_0xa572('0x19')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x582e4e[_0xa572('0x23')]=_0x37b014[_0xa572('0x2a')];for(_0x5f3ac1=0x0;_0x5f3ac1<_0x22fba4[_0xa572('0x2b')];_0x5f3ac1++){if(_0x22fba4[_0x5f3ac1][_0xa572('0x24')]===_0x37b014[_0xa572('0x2a')]){_0x582e4e[_0xa572('0x27')]=_0x22fba4[_0x5f3ac1][_0xa572('0x28')];}}}_0xf46521(_0x582e4e);})[_0xa572('0x17')](function(_0x4d662c){_0x3e9b10(_0x4d662c[_0xa572('0x1b')]);});});}function createEndUser(_0x34561b,_0x16b0ce,_0x225498,_0x17787d,_0x294a9d,_0x2e3bf0,_0x35448f){return new Promise(function(_0x43ced8,_0x4d8300){return getAuthToken(_0x16b0ce,_0x225498,_0x2e3bf0)[_0xa572('0x15')](function(_0x3f03c9){var _0x5e697e=_0x2e3bf0[_0xa572('0x2c')]()===_0xa572('0x2d')?_0x294a9d[_0xa572('0x2e')]:_0x294a9d[_0xa572('0x2f')];var _0x52606e={'method':'POST','uri':_0x17787d+_0xa572('0x30'),'body':{'fullname':_0x5e697e,'firstname':_0x5e697e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xa572('0x31')+_0x34561b[_0xa572('0x27')]+')'},'headers':{'Authorization':_0xa572('0x1e')+_0x3f03c9,'OData-Version':_0xa572('0x1f')},'json':!![],'resolveWithFullResponse':!![]};_0x52606e[_0xa572('0x32')][_0x35448f]=_0x5e697e;return rp(_0x52606e);})[_0xa572('0x15')](function(_0x4056aa){var _0x5a700e=_0x4056aa[_0xa572('0x33')][_0xa572('0x34')];var _0x3ef1f1=_0x5a700e[_0xa572('0x35')](_0x5a700e[_0xa572('0x36')]('(')+0x1,_0x5a700e[_0xa572('0x36')](')'));_0x34561b[_0xa572('0x37')]=_0x3ef1f1;_0x43ced8(_0x34561b);})[_0xa572('0x17')](function(_0x5b94a5){_0x4d8300(_0x5b94a5['message']);});});}function getEndUser(_0x56a470,_0x7188b1,_0xe59142,_0x1268ce,_0x5e2252,_0x5ec9e7,_0x36c63e,_0x43d6a7){var _0x49d0a1=_0x5ec9e7[_0xa572('0x2c')]()===_0xa572('0x2d')?_0x5e2252['destcalleridnum']:_0x5e2252[_0xa572('0x2f')];return getAuthToken(_0x7188b1,_0xe59142,_0x5ec9e7)[_0xa572('0x15')](function(_0x161967){_0x43d6a7=_0x43d6a7?_0x43d6a7:_0xa572('0x38');var _0xb86211={'method':_0xa572('0x1c'),'uri':_0x1268ce+'contacts?$select='+_0x43d6a7+_0xa572('0x39')+_0x43d6a7+'\x20eq\x20\x27'+_0x49d0a1[_0xa572('0x3a')]('+','%2b')+'\x27','headers':{'Authorization':_0xa572('0x1e')+_0x161967,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xb86211);})[_0xa572('0x15')](function(_0x321a80){var _0x57811b=![];if(!_0x321a80)return _0x57811b;var _0xddc301=_0x321a80['value'];for(var _0x110ddd=0x0;_0x110ddd<_0xddc301['length'];_0x110ddd++){if(_0xddc301[_0x110ddd][_0x43d6a7]===_0x49d0a1){_0x57811b=!![];_0x56a470['enduserId']=_0xddc301[_0x110ddd][_0xa572('0x3b')];}}return _0x57811b;})[_0xa572('0x15')](function(_0x39d51d){if(_0x39d51d)return _0x56a470;if(_0x36c63e===_0xa572('0x3c')){logger['info']('['+[_0x5ec9e7[_0xa572('0x19')]()]+_0xa572('0x3d'));return _0x56a470;}return createEndUser(_0x56a470,_0x7188b1,_0xe59142,_0x1268ce,_0x5e2252,_0x5ec9e7,_0x43d6a7)[_0xa572('0x15')](function(_0x2181c6){logger[_0xa572('0x29')]('['+[_0x5ec9e7[_0xa572('0x19')]()]+']\x20Enduser\x20created!',_0x2181c6[_0xa572('0x37')]);return _0x2181c6;});});}function getCustomFields(_0x425ba9,_0x463d01,_0x45195c){var _0x32a56e={};if(_0x425ba9[_0xa572('0x2b')]>0x0){_[_0xa572('0x3e')](_0x425ba9,function(_0x5b0070){if(_['includes'](['string','picklist'],_0x5b0070[_0xa572('0x3f')])&&_0x5b0070[_0xa572('0x40')]&&!_0x5b0070[_0xa572('0x41')]){var _0x3373df=_0x5b0070[_0xa572('0x42')][_0xa572('0x2c')]();var _0x13fd8e=_0x3373df['substring'](0x0,_0x3373df[_0xa572('0x43')]('_'));var _0x21d65a=_0x3373df['substring'](_0x3373df[_0xa572('0x43')]('_')+0x1);if(_0x13fd8e===_0x45195c){_0x32a56e[_0x21d65a]=_0x5b0070['content'];}}});}return _0x32a56e;}function getTicket(_0x56e28e,_0x13e116,_0x535ccf,_0x4e4862,_0x397894,_0x5bda15,_0x3c9397){return new Promise(function(_0x2dc6f3,_0x495579){var _0x4c5f18;return getAuthToken(_0x13e116,_0x535ccf,_0x3c9397)['then'](function(_0x4f58ec){if(_0x5bda15[_0xa572('0x44')]===_0xa572('0x45')){_0x4c5f18={'method':_0xa572('0x10'),'uri':_0x4e4862+_0xa572('0x46'),'body':Object[_0xa572('0x47')]({},{'title':intUtil[_0xa572('0x48')](_0x5bda15[_0xa572('0x49')],_0x397894,'\x20'),'description':intUtil[_0xa572('0x48')](_0x5bda15['Descriptions'],_0x397894,'\x0a'),'customerid_contact@odata.bind':_0x56e28e[_0xa572('0x37')]?'/contacts('+_0x56e28e[_0xa572('0x37')]+')':undefined,'ownerid@odata.bind':_0xa572('0x31')+_0x56e28e[_0xa572('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x5bda15['Fields'],_0x397894,_0x5bda15[_0xa572('0x44')])),'headers':{'Authorization':_0xa572('0x1e')+_0x4f58ec,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5bda15[_0xa572('0x44')]===_0xa572('0x4a')){var _0x274391=_0x56e28e[_0xa572('0x37')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x56e28e[_0xa572('0x27')]+')','participationtypemask':_0x56e28e[_0xa572('0x4b')]===_0xa572('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':_0xa572('0x4d')+_0x56e28e[_0xa572('0x37')]+')','participationtypemask':_0x56e28e[_0xa572('0x4b')]===_0xa572('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xa572('0x31')+_0x56e28e[_0xa572('0x27')]+')','participationtypemask':_0x56e28e[_0xa572('0x4b')]==='queue'?0x2:0x1}];_0x4c5f18={'method':_0xa572('0x10'),'uri':_0x4e4862+_0xa572('0x4e'),'body':Object['assign']({},{'subject':intUtil['getString'](_0x5bda15[_0xa572('0x49')],_0x397894,'\x20'),'phonenumber':String(_0x397894[_0xa572('0x2f')]),'description':intUtil['getString'](_0x5bda15[_0xa572('0x4f')],_0x397894,'\x0a'),'regardingobjectid_contact@odata.bind':_0x56e28e[_0xa572('0x37')]?'/contacts('+_0x56e28e[_0xa572('0x37')]+')':undefined,'ownerid@odata.bind':_0xa572('0x31')+_0x56e28e['userId']+')','directioncode':_0x56e28e[_0xa572('0x4b')]==='queue'?![]:!![],'phonecall_activity_parties':_0x274391},getCustomFields(_0x5bda15[_0xa572('0x50')],_0x397894,_0x5bda15[_0xa572('0x44')])),'headers':{'Authorization':_0xa572('0x1e')+_0x4f58ec,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4c5f18);})[_0xa572('0x15')](function(_0x2de64a){var _0x50813b=_0x2de64a[_0xa572('0x33')]['odata-entityid'];var _0x588dbe=_0x50813b[_0xa572('0x35')](_0x50813b[_0xa572('0x36')]('(')+0x1,_0x50813b[_0xa572('0x36')](')'));_0x56e28e[_0xa572('0x51')]=_0x588dbe;_0x2dc6f3(_0x56e28e);})[_0xa572('0x17')](function(_0x1995d8){_0x495579(_0x1995d8[_0xa572('0x1b')]);});});}function emit(_0x4d4273,_0x4a4e14,_0x4f29cd,_0x1bbfd0){var _0x315114={'uri':util[_0xa572('0x52')](_0xa572('0x53'),_0x4d4273,_0x4f29cd,_0x1bbfd0)};io['to'](util[_0xa572('0x52')](_0xa572('0x54'),_0x4a4e14))[_0xa572('0x55')](_0xa572('0x56'),_0x315114);}exports['cs']=function(_0x316357,_0x4e038d,_0x9e89cb,_0x40b827,_0x5151c6,_0x30c9d3,_0x4263e5,_0x11ea8f){var _0x2dd048={};_0x30c9d3['remoteUri']=_0x30c9d3[_0xa572('0x57')]?intUtil[_0xa572('0x58')](_0x30c9d3[_0xa572('0xb')][_0xa572('0xc')]):intUtil[_0xa572('0x58')](_0x30c9d3[_0xa572('0x12')]);_0x30c9d3[_0xa572('0x59')]=intUtil['stripTrailingSlash'](_0x30c9d3[_0xa572('0x59')]);_0x2dd048[_0xa572('0x4b')]=_0x11ea8f===_0xa572('0x4c')||_0x11ea8f==='unmanaged'?_0xa572('0x4c'):_0xa572('0x2d');var _0x216485=_0x30c9d3[_0xa572('0x57')]?util[_0xa572('0x52')](_0xa572('0x5a'),_0x30c9d3[_0xa572('0xb')][_0xa572('0xc')]):util['format'](_0xa572('0x5a'),_0x30c9d3[_0xa572('0x12')]);var _0x487764=util[_0xa572('0x52')](_0xa572('0x5b'),_0x30c9d3[_0xa572('0x5c')]);var _0x17ba4c=util[_0xa572('0x52')](_0xa572('0x5d'),_0x30c9d3['serverUrl'],_0x4e038d[_0xa572('0x5e')],md5(_0x4e038d[_0xa572('0x5e')]));if(_0x5151c6&&_0x5151c6[_0xa572('0x5f')]){logger[_0xa572('0x29')](_0xa572('0x60'),_0xa572('0x61'));_0x4e038d[_0xa572('0x62')]=_0x17ba4c;}else if(_0x4263e5&&_0x4263e5[_0xa572('0x63')]&&_0x4263e5[_0xa572('0x63')]!==_0xa572('0x64')){logger[_0xa572('0x29')]('[OUTBOUND]',_0xa572('0x61'));_0x4e038d[_0xa572('0x62')]=_0x17ba4c;}else{_0x4e038d[_0xa572('0x62')]='';}return getUser(_0x2dd048,_0x30c9d3,_0x40b827,_0x487764,_0x216485,_0x11ea8f)[_0xa572('0x15')](function(_0x1e0ca6){logger[_0xa572('0x29')]('['+_0x11ea8f['toUpperCase']()+_0xa572('0x65'),_0x1e0ca6[_0xa572('0x27')]);logger[_0xa572('0x29')]('['+_0x11ea8f['toUpperCase']()+_0xa572('0x66'),_0x1e0ca6[_0xa572('0x23')]);return getEndUser(_0x1e0ca6,_0x30c9d3,_0x487764,_0x216485,_0x4e038d,_0x11ea8f,_0x9e89cb[_0xa572('0x67')],_0x9e89cb['additionalSearchContact']);})[_0xa572('0x15')](function(_0x343e3d){logger[_0xa572('0x29')]('['+_0x11ea8f[_0xa572('0x19')]()+_0xa572('0x68'),_0x343e3d['enduserId']);logger[_0xa572('0x29')]('['+_0x11ea8f[_0xa572('0x19')]()+_0xa572('0x69'),_0x4e038d[_0xa572('0x2f')]);return getTicket(_0x343e3d,_0x30c9d3,_0x487764,_0x216485,_0x4e038d,_0x9e89cb,_0x11ea8f);})[_0xa572('0x15')](function(_0x1b1555){logger['info'](util['format']('['+_0x11ea8f['toUpperCase']()+_0xa572('0x6a'),_0x9e89cb[_0xa572('0x44')],_0x1b1555[_0xa572('0x51')]));logger[_0xa572('0x29')](util[_0xa572('0x52')]('['+_0x11ea8f['toUpperCase']()+_0xa572('0x6b'),_0x11ea8f));if(_0x11ea8f!==_0xa572('0x6c')&&_0x9e89cb[_0xa572('0x6d')]){logger[_0xa572('0x29')]('['+_0x11ea8f[_0xa572('0x19')]()+']',_0xa572('0x6e'));emit(_0x30c9d3[_0xa572('0x12')],_0x40b827[_0xa572('0x6f')],_0x9e89cb['ticketType'],_0x1b1555[_0xa572('0x51')]);}})['catch'](function(_0x2b745d){logger[_0xa572('0x18')]('['+_0x11ea8f[_0xa572('0x19')]()+_0xa572('0x70'),_0x2b745d[_0xa572('0x1b')]);console[_0xa572('0x18')]('Error\x20running\x20Dynamics365\x20integration',_0x2b745d);});};