Built motion from commit e0fa946e.|2.6.5
[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 _0xa62a=['userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','message','outbound','calleridnum','/systemusers(','body','substring','lastIndexOf','enduserId','toLowerCase','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','Bearer\x20','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incidents','getString','Subjects','/contacts(','Fields','phonecall','callDirection','queue','assign','Descriptions','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','stripTrailingSlash','data7','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','modernAuthentication','tenantId','CloudProvider','data2','resolve','data5','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid'];(function(_0x5d0a9c,_0x225ccc){var _0x4fc803=function(_0x5143e6){while(--_0x5143e6){_0x5d0a9c['push'](_0x5d0a9c['shift']());}};_0x4fc803(++_0x225ccc);}(_0xa62a,0x124));var _0xaa62=function(_0x231473,_0x33b93e){_0x231473=_0x231473-0x0;var _0x16d666=_0xa62a[_0x231473];return _0x16d666;};'use strict';var _=require(_0xaa62('0x0'));var rp=require(_0xaa62('0x1'));var util=require(_0xaa62('0x2'));var intUtil=require(_0xaa62('0x3'));var md5=require(_0xaa62('0x4'));var Redis=require('ioredis');var logger=require(_0xaa62('0x5'))(_0xaa62('0x6'));var config=require(_0xaa62('0x7'));config[_0xaa62('0x8')]=_[_0xaa62('0x9')](config[_0xaa62('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xaa62('0xa'))(new Redis(config[_0xaa62('0x8')]));function getAuthToken(_0x9763bf,_0x4b3cc5,_0x1bc244){if(_0x9763bf[_0xaa62('0xb')]){_0x9763bf['remoteUri']=_0x9763bf['CloudProvider']['data7'];_0x9763bf[_0xaa62('0xc')]=_0x9763bf[_0xaa62('0xd')][_0xaa62('0xe')];return Promise[_0xaa62('0xf')](_0x9763bf['CloudProvider'][_0xaa62('0x10')]);}var _0x3be0f6={'method':_0xaa62('0x11'),'uri':_0x4b3cc5,'form':{'client_id':_0x9763bf[_0xaa62('0x12')],'resource':_0x9763bf[_0xaa62('0x13')],'username':_0x9763bf[_0xaa62('0x14')],'password':_0x9763bf[_0xaa62('0x15')],'grant_type':'password','client_secret':_0x9763bf[_0xaa62('0x16')]},'json':!![]};return rp(_0x3be0f6)[_0xaa62('0x17')](function(_0x16475e){return _0x16475e[_0xaa62('0x18')];})[_0xaa62('0x19')](function(_0x837f5d){logger[_0xaa62('0x1a')]('['+[_0x1bc244[_0xaa62('0x1b')]()]+']\x20Wrong\x20credentials!');return _0x837f5d['message'];});}function getUser(_0x3357c5,_0x2d877c,_0x554643,_0x5a9192,_0x46992f,_0x30f35c){return new Promise(function(_0x211b0e,_0x4d4168){return getAuthToken(_0x2d877c,_0x5a9192,_0x30f35c)['then'](function(_0x4d1b09){var _0x2ba06c={'method':_0xaa62('0x1c'),'uri':_0x46992f+_0xaa62('0x1d'),'headers':{'Authorization':'Bearer\x20'+_0x4d1b09,'OData-Version':_0xaa62('0x1e')},'json':!![]};return rp(_0x2ba06c);})[_0xaa62('0x17')](function(_0x522380){var _0x9ff787=_0x522380[_0xaa62('0x1f')];var _0x30203b=![];var _0x1a708d=null;if(!_[_0xaa62('0x20')](_0x554643)){if(intUtil[_0xaa62('0x21')](_0x554643[_0xaa62('0x22')])){_0x3357c5['userEmail']=_0x554643[_0xaa62('0x22')];for(_0x1a708d=0x0;_0x1a708d<_0x9ff787[_0xaa62('0x23')];_0x1a708d++){if(_0x9ff787[_0x1a708d][_0xaa62('0x24')]===_0x554643[_0xaa62('0x22')]&&!_0x9ff787[_0x1a708d][_0xaa62('0x25')]){_0x30203b=!![];logger[_0xaa62('0x26')]('['+[_0x30f35c[_0xaa62('0x1b')]()]+_0xaa62('0x27')+_0x9ff787[_0x1a708d][_0xaa62('0x28')]+'!');_0x3357c5[_0xaa62('0x29')]=_0x9ff787[_0x1a708d][_0xaa62('0x28')];}}}}if(!_0x30203b){logger['info']('['+[_0x30f35c[_0xaa62('0x1b')]()]+_0xaa62('0x2a'));_0x3357c5[_0xaa62('0x2b')]=_0x2d877c[_0xaa62('0x14')];for(_0x1a708d=0x0;_0x1a708d<_0x9ff787[_0xaa62('0x23')];_0x1a708d++){if(_0x9ff787[_0x1a708d]['internalemailaddress']===_0x2d877c['username']){_0x3357c5['userId']=_0x9ff787[_0x1a708d][_0xaa62('0x28')];}}}_0x211b0e(_0x3357c5);})[_0xaa62('0x19')](function(_0x4fb4b9){_0x4d4168(_0x4fb4b9[_0xaa62('0x2c')]);});});}function createEndUser(_0xb048c5,_0x338cb5,_0x4a1ecd,_0x3e2b9b,_0x3e788e,_0x49fe43,_0x29795e){return new Promise(function(_0x5bf39b,_0x16ea2e){return getAuthToken(_0x338cb5,_0x4a1ecd,_0x49fe43)[_0xaa62('0x17')](function(_0x3eb3fe){var _0x35d3d5=_0x49fe43['toLowerCase']()===_0xaa62('0x2d')?_0x3e788e['destcalleridnum']:_0x3e788e[_0xaa62('0x2e')];var _0x6862c4={'method':_0xaa62('0x11'),'uri':_0x3e2b9b+'contacts','body':{'fullname':_0x35d3d5,'firstname':_0x35d3d5,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xaa62('0x2f')+_0xb048c5[_0xaa62('0x29')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x3eb3fe,'OData-Version':_0xaa62('0x1e')},'json':!![],'resolveWithFullResponse':!![]};_0x6862c4[_0xaa62('0x30')][_0x29795e]=_0x35d3d5;return rp(_0x6862c4);})['then'](function(_0x47da35){var _0x390756=_0x47da35['headers']['odata-entityid'];var _0x3f373e=_0x390756[_0xaa62('0x31')](_0x390756['lastIndexOf']('(')+0x1,_0x390756[_0xaa62('0x32')](')'));_0xb048c5[_0xaa62('0x33')]=_0x3f373e;_0x5bf39b(_0xb048c5);})[_0xaa62('0x19')](function(_0x309c22){_0x16ea2e(_0x309c22[_0xaa62('0x2c')]);});});}function getEndUser(_0x447a36,_0x1687e2,_0x1c3d01,_0x1787bd,_0x51ae33,_0x2186ba,_0x2bcc1d,_0xb7a298){var _0xe5fd86=_0x2186ba[_0xaa62('0x34')]()===_0xaa62('0x2d')?_0x51ae33['destcalleridnum']:_0x51ae33['calleridnum'];return getAuthToken(_0x1687e2,_0x1c3d01,_0x2186ba)[_0xaa62('0x17')](function(_0x5b9379){_0xb7a298=_0xb7a298?_0xb7a298:_0xaa62('0x35');var _0x500927={'method':'GET','uri':_0x1787bd+_0xaa62('0x36')+_0xb7a298+_0xaa62('0x37')+_0xb7a298+_0xaa62('0x38')+_0xe5fd86[_0xaa62('0x39')]('+',_0xaa62('0x3a'))+'\x27','headers':{'Authorization':_0xaa62('0x3b')+_0x5b9379,'If-None-Match':null,'OData-Version':_0xaa62('0x1e')},'json':!![]};return rp(_0x500927);})[_0xaa62('0x17')](function(_0x2baa8f){var _0xdcac92=![];if(!_0x2baa8f)return _0xdcac92;var _0x2c0fb6=_0x2baa8f[_0xaa62('0x1f')];for(var _0x85b897=0x0;_0x85b897<_0x2c0fb6['length'];_0x85b897++){if(_0x2c0fb6[_0x85b897][_0xb7a298]===_0xe5fd86){_0xdcac92=!![];_0x447a36['enduserId']=_0x2c0fb6[_0x85b897][_0xaa62('0x3c')];}}return _0xdcac92;})['then'](function(_0x15b618){if(_0x15b618)return _0x447a36;if(_0x2bcc1d===_0xaa62('0x3d')){logger[_0xaa62('0x26')]('['+[_0x2186ba[_0xaa62('0x1b')]()]+_0xaa62('0x3e'));return _0x447a36;}return createEndUser(_0x447a36,_0x1687e2,_0x1c3d01,_0x1787bd,_0x51ae33,_0x2186ba,_0xb7a298)[_0xaa62('0x17')](function(_0x4d6479){logger[_0xaa62('0x26')]('['+[_0x2186ba[_0xaa62('0x1b')]()]+_0xaa62('0x3f'),_0x4d6479[_0xaa62('0x33')]);return _0x4d6479;});});}function getCustomFields(_0x5dfdaa,_0x5b0e2f,_0x8d5bca){var _0x2e5010={};if(_0x5dfdaa[_0xaa62('0x23')]>0x0){_[_0xaa62('0x40')](_0x5dfdaa,function(_0x5c47be){if(_[_0xaa62('0x41')]([_0xaa62('0x42'),_0xaa62('0x43')],_0x5c47be[_0xaa62('0x44')])&&_0x5c47be[_0xaa62('0x45')]&&!_0x5c47be[_0xaa62('0x46')]){var _0x2606d3=_0x5c47be[_0xaa62('0x47')][_0xaa62('0x34')]();var _0x5aeb05=_0x2606d3[_0xaa62('0x31')](0x0,_0x2606d3[_0xaa62('0x48')]('_'));var _0x4e9ee1=_0x2606d3[_0xaa62('0x31')](_0x2606d3[_0xaa62('0x48')]('_')+0x1);if(_0x5aeb05===_0x8d5bca){_0x2e5010[_0x4e9ee1]=_0x5c47be[_0xaa62('0x49')];}}});}return _0x2e5010;}function getTicket(_0x4d5767,_0x30fde3,_0x4cee0a,_0x43b04d,_0x249482,_0x32d356,_0x4774f1){return new Promise(function(_0xba8a85,_0x2aa690){var _0x1da059;return getAuthToken(_0x30fde3,_0x4cee0a,_0x4774f1)[_0xaa62('0x17')](function(_0x16ee75){if(_0x32d356[_0xaa62('0x4a')]==='incident'){_0x1da059={'method':_0xaa62('0x11'),'uri':_0x43b04d+_0xaa62('0x4b'),'body':Object['assign']({},{'title':intUtil[_0xaa62('0x4c')](_0x32d356[_0xaa62('0x4d')],_0x249482,'\x20'),'description':intUtil[_0xaa62('0x4c')](_0x32d356['Descriptions'],_0x249482,'\x0a'),'customerid_contact@odata.bind':_0x4d5767[_0xaa62('0x33')]?_0xaa62('0x4e')+_0x4d5767['enduserId']+')':undefined,'ownerid@odata.bind':_0xaa62('0x2f')+_0x4d5767[_0xaa62('0x29')]+')','caseorigincode':'1'},getCustomFields(_0x32d356[_0xaa62('0x4f')],_0x249482,_0x32d356['ticketType'])),'headers':{'Authorization':_0xaa62('0x3b')+_0x16ee75,'OData-Version':_0xaa62('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x32d356[_0xaa62('0x4a')]===_0xaa62('0x50')){var _0x6c92fa=_0x4d5767[_0xaa62('0x33')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4d5767[_0xaa62('0x29')]+')','participationtypemask':_0x4d5767[_0xaa62('0x51')]===_0xaa62('0x52')?0x2:0x1},{'partyid_contact@odata.bind':_0xaa62('0x4e')+_0x4d5767['enduserId']+')','participationtypemask':_0x4d5767[_0xaa62('0x51')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xaa62('0x2f')+_0x4d5767[_0xaa62('0x29')]+')','participationtypemask':_0x4d5767[_0xaa62('0x51')]===_0xaa62('0x52')?0x2:0x1}];_0x1da059={'method':_0xaa62('0x11'),'uri':_0x43b04d+'phonecalls','body':Object[_0xaa62('0x53')]({},{'subject':intUtil[_0xaa62('0x4c')](_0x32d356[_0xaa62('0x4d')],_0x249482,'\x20'),'phonenumber':String(_0x249482['calleridnum']),'description':intUtil['getString'](_0x32d356[_0xaa62('0x54')],_0x249482,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4d5767[_0xaa62('0x33')]?_0xaa62('0x4e')+_0x4d5767['enduserId']+')':undefined,'ownerid@odata.bind':_0xaa62('0x2f')+_0x4d5767[_0xaa62('0x29')]+')','directioncode':_0x4d5767[_0xaa62('0x51')]===_0xaa62('0x52')?![]:!![],'phonecall_activity_parties':_0x6c92fa},getCustomFields(_0x32d356[_0xaa62('0x4f')],_0x249482,_0x32d356[_0xaa62('0x4a')])),'headers':{'Authorization':_0xaa62('0x3b')+_0x16ee75,'OData-Version':_0xaa62('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1da059);})['then'](function(_0x44fa16){var _0x40919d=_0x44fa16[_0xaa62('0x55')]['odata-entityid'];var _0x28bda0=_0x40919d[_0xaa62('0x31')](_0x40919d['lastIndexOf']('(')+0x1,_0x40919d[_0xaa62('0x32')](')'));_0x4d5767[_0xaa62('0x56')]=_0x28bda0;_0xba8a85(_0x4d5767);})[_0xaa62('0x19')](function(_0x2ddf9a){_0x2aa690(_0x2ddf9a[_0xaa62('0x2c')]);});});}function emit(_0x238956,_0x1e1021,_0x22e9db,_0x4831d0){var _0xb3f0cb={'uri':util[_0xaa62('0x57')](_0xaa62('0x58'),_0x238956,_0x22e9db,_0x4831d0)};io['to'](util['format']('user:%s',_0x1e1021))['emit']('trigger:browser:url',_0xb3f0cb);}exports['cs']=function(_0x1699a4,_0x12c4ca,_0x374145,_0x5e3a21,_0x1271ec,_0x2b5e18,_0x5a1a66,_0x4326ed){var _0x455ffa={};_0x2b5e18[_0xaa62('0x13')]=_0x2b5e18[_0xaa62('0xb')]?intUtil[_0xaa62('0x59')](_0x2b5e18[_0xaa62('0xd')][_0xaa62('0x5a')]):intUtil[_0xaa62('0x59')](_0x2b5e18[_0xaa62('0x13')]);_0x2b5e18[_0xaa62('0x5b')]=intUtil['stripTrailingSlash'](_0x2b5e18[_0xaa62('0x5b')]);_0x455ffa[_0xaa62('0x51')]=_0x4326ed===_0xaa62('0x52')||_0x4326ed===_0xaa62('0x5c')?_0xaa62('0x52'):_0xaa62('0x2d');var _0x46e5e1=_0x2b5e18[_0xaa62('0xb')]?util[_0xaa62('0x57')](_0xaa62('0x5d'),_0x2b5e18[_0xaa62('0xd')][_0xaa62('0x5a')]):util[_0xaa62('0x57')](_0xaa62('0x5d'),_0x2b5e18['remoteUri']);var _0x174720=util[_0xaa62('0x57')]('https://login.microsoftonline.com/%s/oauth2/token',_0x2b5e18[_0xaa62('0xc')]);var _0x5b174e=util[_0xaa62('0x57')](_0xaa62('0x5e'),_0x2b5e18[_0xaa62('0x5b')],_0x12c4ca['uniqueid'],md5(_0x12c4ca[_0xaa62('0x5f')]));if(_0x1271ec&&_0x1271ec['monitor_format']){logger[_0xaa62('0x26')](_0xaa62('0x60'),'Recording\x20is\x20enabled!');_0x12c4ca[_0xaa62('0x61')]=_0x5b174e;}else if(_0x5a1a66&&_0x5a1a66[_0xaa62('0x62')]&&_0x5a1a66[_0xaa62('0x62')]!==_0xaa62('0x63')){logger[_0xaa62('0x26')](_0xaa62('0x64'),_0xaa62('0x65'));_0x12c4ca[_0xaa62('0x61')]=_0x5b174e;}else{_0x12c4ca[_0xaa62('0x61')]='';}return getUser(_0x455ffa,_0x2b5e18,_0x5e3a21,_0x174720,_0x46e5e1,_0x4326ed)[_0xaa62('0x17')](function(_0x2c1bf9){logger[_0xaa62('0x26')]('['+_0x4326ed[_0xaa62('0x1b')]()+_0xaa62('0x66'),_0x2c1bf9['userId']);logger['info']('['+_0x4326ed['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0x2c1bf9[_0xaa62('0x2b')]);return getEndUser(_0x2c1bf9,_0x2b5e18,_0x174720,_0x46e5e1,_0x12c4ca,_0x4326ed,_0x374145[_0xaa62('0x67')],_0x374145[_0xaa62('0x68')]);})[_0xaa62('0x17')](function(_0x5df851){logger['info']('['+_0x4326ed['toUpperCase']()+_0xaa62('0x69'),_0x5df851['enduserId']);logger['info']('['+_0x4326ed[_0xaa62('0x1b')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x12c4ca[_0xaa62('0x2e')]);return getTicket(_0x5df851,_0x2b5e18,_0x174720,_0x46e5e1,_0x12c4ca,_0x374145,_0x4326ed);})[_0xaa62('0x17')](function(_0x11e05e){logger[_0xaa62('0x26')](util[_0xaa62('0x57')]('['+_0x4326ed[_0xaa62('0x1b')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x374145['ticketType'],_0x11e05e['ticketId']));logger[_0xaa62('0x26')](util['format']('['+_0x4326ed[_0xaa62('0x1b')]()+_0xaa62('0x6a'),_0x4326ed));if(_0x4326ed!=='unmanaged'&&_0x374145['openNewTab']){logger['info']('['+_0x4326ed['toUpperCase']()+']',_0xaa62('0x6b'));emit(_0x2b5e18['remoteUri'],_0x5e3a21[_0xaa62('0x6c')],_0x374145[_0xaa62('0x4a')],_0x11e05e['ticketId']);}})['catch'](function(_0x6269c8){logger[_0xaa62('0x1a')]('['+_0x4326ed['toUpperCase']()+_0xaa62('0x6d'),_0x6269c8['message']);console[_0xaa62('0x1a')](_0xaa62('0x6e'),_0x6269c8);});};