Built motion from commit 192134f6.|2.6.25
[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 _0x3567=['calleridnum','contacts','/systemusers(','4.0','body','headers','substring','lastIndexOf','enduserId','telephone1','GET','contacts?$select=','\x20eq\x20\x27','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','string','picklist','nameField','indexOf','content','incident','assign','Subjects','getString','Descriptions','/contacts(','Fields','ticketType','queue','callDirection','phonecalls','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','data7','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','ioredis','dynamics365','defaults','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','tenantId','CloudProvider','resolve','data5','POST','clientId','username','password','clientSecret','access_token','error','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','then','value','validateEmail','email','userEmail','internalemailaddress','isdisabled','info','systemuserid','length','userId','catch','toLowerCase','outbound','destcalleridnum'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3567,0x113));var _0x7356=function(_0x3e7606,_0x208252){_0x3e7606=_0x3e7606-0x0;var _0x594d8b=_0x3567[_0x3e7606];return _0x594d8b;};'use strict';var _=require(_0x7356('0x0'));var rp=require(_0x7356('0x1'));var util=require(_0x7356('0x2'));var intUtil=require(_0x7356('0x3'));var md5=require('md5');var Redis=require(_0x7356('0x4'));var logger=require('../../../../config/logger')(_0x7356('0x5'));var config=require('../../../../config/environment');config['redis']=_[_0x7356('0x6')](config[_0x7356('0x7')],{'host':_0x7356('0x8'),'port':0x18eb});var io=require(_0x7356('0x9'))(new Redis(config['redis']));function getAuthToken(_0x5a5a19,_0x3a1c2e,_0xda906){if(_0x5a5a19[_0x7356('0xa')]){_0x5a5a19[_0x7356('0xb')]=_0x5a5a19['CloudProvider']['data7'];_0x5a5a19[_0x7356('0xc')]=_0x5a5a19[_0x7356('0xd')]['data2'];return Promise[_0x7356('0xe')](_0x5a5a19[_0x7356('0xd')][_0x7356('0xf')]);}var _0x202d80={'method':_0x7356('0x10'),'uri':_0x3a1c2e,'form':{'client_id':_0x5a5a19[_0x7356('0x11')],'resource':_0x5a5a19['remoteUri'],'username':_0x5a5a19[_0x7356('0x12')],'password':_0x5a5a19[_0x7356('0x13')],'grant_type':_0x7356('0x13'),'client_secret':_0x5a5a19[_0x7356('0x14')]},'json':!![]};return rp(_0x202d80)['then'](function(_0x507335){return _0x507335[_0x7356('0x15')];})['catch'](function(_0x3e3002){logger[_0x7356('0x16')]('['+[_0xda906[_0x7356('0x17')]()]+_0x7356('0x18'));return _0x3e3002[_0x7356('0x19')];});}function getUser(_0x2cb4e2,_0x8a3c7d,_0x334ebb,_0x26d34f,_0x4bdb64,_0x32eeb3){return new Promise(function(_0x2a0fd9,_0x284acd){return getAuthToken(_0x8a3c7d,_0x26d34f,_0x32eeb3)['then'](function(_0x361cab){var _0x479dc6={'method':'GET','uri':_0x4bdb64+_0x7356('0x1a'),'headers':{'Authorization':_0x7356('0x1b')+_0x361cab,'OData-Version':'4.0'},'json':!![]};return rp(_0x479dc6);})[_0x7356('0x1c')](function(_0x1bbb69){var _0x4603bd=_0x1bbb69[_0x7356('0x1d')];var _0x153d10=![];var _0x169e4c=null;if(!_['isNil'](_0x334ebb)){if(intUtil[_0x7356('0x1e')](_0x334ebb[_0x7356('0x1f')])){_0x2cb4e2[_0x7356('0x20')]=_0x334ebb[_0x7356('0x1f')];for(_0x169e4c=0x0;_0x169e4c<_0x4603bd['length'];_0x169e4c++){if(_0x4603bd[_0x169e4c][_0x7356('0x21')]===_0x334ebb[_0x7356('0x1f')]&&!_0x4603bd[_0x169e4c][_0x7356('0x22')]){_0x153d10=!![];logger[_0x7356('0x23')]('['+[_0x32eeb3[_0x7356('0x17')]()]+']\x20Agent\x20found\x20'+_0x4603bd[_0x169e4c][_0x7356('0x24')]+'!');_0x2cb4e2['userId']=_0x4603bd[_0x169e4c][_0x7356('0x24')];}}}}if(!_0x153d10){logger[_0x7356('0x23')]('['+[_0x32eeb3['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x2cb4e2['userEmail']=_0x8a3c7d[_0x7356('0x12')];for(_0x169e4c=0x0;_0x169e4c<_0x4603bd[_0x7356('0x25')];_0x169e4c++){if(_0x4603bd[_0x169e4c][_0x7356('0x21')]===_0x8a3c7d[_0x7356('0x12')]){_0x2cb4e2[_0x7356('0x26')]=_0x4603bd[_0x169e4c]['systemuserid'];}}}_0x2a0fd9(_0x2cb4e2);})[_0x7356('0x27')](function(_0x4da2e4){_0x284acd(_0x4da2e4[_0x7356('0x19')]);});});}function createEndUser(_0x257609,_0x2371cc,_0x33995a,_0x357a22,_0x571c57,_0x1e5ef6,_0x2b263f){return new Promise(function(_0x238b78,_0x4fa4f5){return getAuthToken(_0x2371cc,_0x33995a,_0x1e5ef6)[_0x7356('0x1c')](function(_0xc45452){var _0x26d5f1=_0x1e5ef6[_0x7356('0x28')]()===_0x7356('0x29')?_0x571c57[_0x7356('0x2a')]:_0x571c57[_0x7356('0x2b')];var _0x4d757c={'method':_0x7356('0x10'),'uri':_0x357a22+_0x7356('0x2c'),'body':{'fullname':_0x26d5f1,'firstname':_0x26d5f1,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x7356('0x2d')+_0x257609[_0x7356('0x26')]+')'},'headers':{'Authorization':_0x7356('0x1b')+_0xc45452,'OData-Version':_0x7356('0x2e')},'json':!![],'resolveWithFullResponse':!![]};_0x4d757c[_0x7356('0x2f')][_0x2b263f]=_0x26d5f1;return rp(_0x4d757c);})[_0x7356('0x1c')](function(_0x5e7918){var _0x1561ca=_0x5e7918[_0x7356('0x30')]['odata-entityid'];var _0x11ddbf=_0x1561ca[_0x7356('0x31')](_0x1561ca['lastIndexOf']('(')+0x1,_0x1561ca[_0x7356('0x32')](')'));_0x257609[_0x7356('0x33')]=_0x11ddbf;_0x238b78(_0x257609);})['catch'](function(_0x5c3629){_0x4fa4f5(_0x5c3629[_0x7356('0x19')]);});});}function getEndUser(_0x42a219,_0x398d36,_0x4c177f,_0x40f8d2,_0x4bf91b,_0x4dd6d9,_0x4dee94,_0xf98c7e){var _0x3644ed=_0x4dd6d9[_0x7356('0x28')]()===_0x7356('0x29')?_0x4bf91b[_0x7356('0x2a')]:_0x4bf91b[_0x7356('0x2b')];return getAuthToken(_0x398d36,_0x4c177f,_0x4dd6d9)[_0x7356('0x1c')](function(_0x5d55bd){_0xf98c7e=_0xf98c7e?_0xf98c7e:_0x7356('0x34');var _0x46f768={'method':_0x7356('0x35'),'uri':_0x40f8d2+_0x7356('0x36')+_0xf98c7e+'&$filter='+_0xf98c7e+_0x7356('0x37')+_0x3644ed['replace']('+',_0x7356('0x38'))+'\x27','headers':{'Authorization':_0x7356('0x1b')+_0x5d55bd,'If-None-Match':null,'OData-Version':_0x7356('0x2e')},'json':!![]};return rp(_0x46f768);})[_0x7356('0x1c')](function(_0x50f673){var _0xff4ad0=![];if(!_0x50f673)return _0xff4ad0;var _0x3fbf5c=_0x50f673[_0x7356('0x1d')];for(var _0x5748a2=0x0;_0x5748a2<_0x3fbf5c[_0x7356('0x25')];_0x5748a2++){if(_0x3fbf5c[_0x5748a2][_0xf98c7e]===_0x3644ed){_0xff4ad0=!![];_0x42a219[_0x7356('0x33')]=_0x3fbf5c[_0x5748a2][_0x7356('0x39')];}}return _0xff4ad0;})[_0x7356('0x1c')](function(_0x18d806){if(_0x18d806)return _0x42a219;if(_0x4dee94===_0x7356('0x3a')){logger[_0x7356('0x23')]('['+[_0x4dd6d9[_0x7356('0x17')]()]+_0x7356('0x3b'));return _0x42a219;}return createEndUser(_0x42a219,_0x398d36,_0x4c177f,_0x40f8d2,_0x4bf91b,_0x4dd6d9,_0xf98c7e)[_0x7356('0x1c')](function(_0x5847f1){logger[_0x7356('0x23')]('['+[_0x4dd6d9[_0x7356('0x17')]()]+_0x7356('0x3c'),_0x5847f1['enduserId']);return _0x5847f1;});});}function getCustomFields(_0xffef6a,_0x50d047,_0x2f1347){var _0x596a64={};if(_0xffef6a[_0x7356('0x25')]>0x0){_[_0x7356('0x3d')](_0xffef6a,function(_0x2556bf){if(_['includes']([_0x7356('0x3e'),_0x7356('0x3f')],_0x2556bf['type'])&&_0x2556bf[_0x7356('0x40')]&&!_0x2556bf['customField']){var _0x12547e=_0x2556bf['idField'][_0x7356('0x28')]();var _0x4bd577=_0x12547e[_0x7356('0x31')](0x0,_0x12547e[_0x7356('0x41')]('_'));var _0x3dde79=_0x12547e[_0x7356('0x31')](_0x12547e['indexOf']('_')+0x1);if(_0x4bd577===_0x2f1347){_0x596a64[_0x3dde79]=_0x2556bf[_0x7356('0x42')];}}});}return _0x596a64;}function getTicket(_0x364348,_0x14533d,_0x17c347,_0x544696,_0x1ca677,_0x4b1c35,_0x219a0f){return new Promise(function(_0x5d0f6c,_0x4b1b9c){var _0x22f407;return getAuthToken(_0x14533d,_0x17c347,_0x219a0f)[_0x7356('0x1c')](function(_0x302d3c){if(_0x4b1c35['ticketType']===_0x7356('0x43')){_0x22f407={'method':'POST','uri':_0x544696+'incidents','body':Object[_0x7356('0x44')]({},{'title':intUtil['getString'](_0x4b1c35[_0x7356('0x45')],_0x1ca677,'\x20'),'description':intUtil[_0x7356('0x46')](_0x4b1c35[_0x7356('0x47')],_0x1ca677,'\x0a'),'customerid_contact@odata.bind':_0x364348[_0x7356('0x33')]?_0x7356('0x48')+_0x364348[_0x7356('0x33')]+')':undefined,'ownerid@odata.bind':_0x7356('0x2d')+_0x364348['userId']+')','caseorigincode':'1'},getCustomFields(_0x4b1c35[_0x7356('0x49')],_0x1ca677,_0x4b1c35['ticketType'])),'headers':{'Authorization':_0x7356('0x1b')+_0x302d3c,'OData-Version':_0x7356('0x2e')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4b1c35[_0x7356('0x4a')]==='phonecall'){var _0x48f946=_0x364348[_0x7356('0x33')]?[{'partyid_systemuser@odata.bind':_0x7356('0x2d')+_0x364348[_0x7356('0x26')]+')','participationtypemask':_0x364348['callDirection']===_0x7356('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0x7356('0x48')+_0x364348['enduserId']+')','participationtypemask':_0x364348[_0x7356('0x4c')]===_0x7356('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x364348[_0x7356('0x26')]+')','participationtypemask':_0x364348[_0x7356('0x4c')]===_0x7356('0x4b')?0x2:0x1}];_0x22f407={'method':_0x7356('0x10'),'uri':_0x544696+_0x7356('0x4d'),'body':Object[_0x7356('0x44')]({},{'subject':intUtil[_0x7356('0x46')](_0x4b1c35[_0x7356('0x45')],_0x1ca677,'\x20'),'phonenumber':String(_0x1ca677['calleridnum']),'description':intUtil[_0x7356('0x46')](_0x4b1c35['Descriptions'],_0x1ca677,'\x0a'),'regardingobjectid_contact@odata.bind':_0x364348[_0x7356('0x33')]?_0x7356('0x48')+_0x364348[_0x7356('0x33')]+')':undefined,'ownerid@odata.bind':_0x7356('0x2d')+_0x364348[_0x7356('0x26')]+')','directioncode':_0x364348[_0x7356('0x4c')]===_0x7356('0x4b')?![]:!![],'phonecall_activity_parties':_0x48f946},getCustomFields(_0x4b1c35['Fields'],_0x1ca677,_0x4b1c35[_0x7356('0x4a')])),'headers':{'Authorization':_0x7356('0x1b')+_0x302d3c,'OData-Version':_0x7356('0x2e')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x22f407);})[_0x7356('0x1c')](function(_0x59c765){var _0x4c4d81=_0x59c765[_0x7356('0x30')]['odata-entityid'];var _0x2a4b83=_0x4c4d81[_0x7356('0x31')](_0x4c4d81['lastIndexOf']('(')+0x1,_0x4c4d81[_0x7356('0x32')](')'));_0x364348[_0x7356('0x4e')]=_0x2a4b83;_0x5d0f6c(_0x364348);})[_0x7356('0x27')](function(_0x4a9342){_0x4b1b9c(_0x4a9342[_0x7356('0x19')]);});});}function emit(_0x42aec2,_0x540378,_0x1903f8,_0xe6d006){var _0x3290ed={'uri':util['format'](_0x7356('0x4f'),_0x42aec2,_0x1903f8,_0xe6d006)};io['to'](util[_0x7356('0x50')](_0x7356('0x51'),_0x540378))[_0x7356('0x52')](_0x7356('0x53'),_0x3290ed);}exports['cs']=function(_0xde5351,_0x4d86d0,_0x4ec45b,_0x24c261,_0x4d32ef,_0x2b6ede,_0x14cd46,_0x4f8212){var _0x4a9d56={};_0x2b6ede['remoteUri']=_0x2b6ede['modernAuthentication']?intUtil[_0x7356('0x54')](_0x2b6ede[_0x7356('0xd')][_0x7356('0x55')]):intUtil[_0x7356('0x54')](_0x2b6ede['remoteUri']);_0x2b6ede['serverUrl']=intUtil[_0x7356('0x54')](_0x2b6ede[_0x7356('0x56')]);_0x4a9d56[_0x7356('0x4c')]=_0x4f8212===_0x7356('0x4b')||_0x4f8212==='unmanaged'?_0x7356('0x4b'):'outbound';var _0x3405fb=_0x2b6ede[_0x7356('0xa')]?util['format'](_0x7356('0x57'),_0x2b6ede[_0x7356('0xd')][_0x7356('0x55')]):util['format'](_0x7356('0x57'),_0x2b6ede[_0x7356('0xb')]);var _0x1a1ff4=util[_0x7356('0x50')](_0x7356('0x58'),_0x2b6ede[_0x7356('0xc')]);var _0x31d691=util[_0x7356('0x50')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2b6ede[_0x7356('0x56')],_0x4d86d0[_0x7356('0x59')],md5(_0x4d86d0[_0x7356('0x59')]));if(_0x4d32ef&&_0x4d32ef[_0x7356('0x5a')]){logger['info']('[QUEUE]',_0x7356('0x5b'));_0x4d86d0['recordingURL']=_0x31d691;}else if(_0x14cd46&&_0x14cd46[_0x7356('0x5c')]&&_0x14cd46[_0x7356('0x5c')]!==_0x7356('0x5d')){logger['info'](_0x7356('0x5e'),_0x7356('0x5b'));_0x4d86d0['recordingURL']=_0x31d691;}else{_0x4d86d0[_0x7356('0x5f')]='';}return getUser(_0x4a9d56,_0x2b6ede,_0x24c261,_0x1a1ff4,_0x3405fb,_0x4f8212)['then'](function(_0x26a6e6){logger[_0x7356('0x23')]('['+_0x4f8212['toUpperCase']()+_0x7356('0x60'),_0x26a6e6[_0x7356('0x26')]);logger[_0x7356('0x23')]('['+_0x4f8212[_0x7356('0x17')]()+']\x20The\x20User\x20email\x20is:',_0x26a6e6[_0x7356('0x20')]);return getEndUser(_0x26a6e6,_0x2b6ede,_0x1a1ff4,_0x3405fb,_0x4d86d0,_0x4f8212,_0x4ec45b['moduleCreate'],_0x4ec45b[_0x7356('0x61')]);})[_0x7356('0x1c')](function(_0x17689e){logger[_0x7356('0x23')]('['+_0x4f8212[_0x7356('0x17')]()+_0x7356('0x62'),_0x17689e[_0x7356('0x33')]);logger['info']('['+_0x4f8212['toUpperCase']()+_0x7356('0x63'),_0x4d86d0['calleridnum']);return getTicket(_0x17689e,_0x2b6ede,_0x1a1ff4,_0x3405fb,_0x4d86d0,_0x4ec45b,_0x4f8212);})[_0x7356('0x1c')](function(_0x3acb12){logger['info'](util['format']('['+_0x4f8212[_0x7356('0x17')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x4ec45b[_0x7356('0x4a')],_0x3acb12[_0x7356('0x4e')]));logger[_0x7356('0x23')](util[_0x7356('0x50')]('['+_0x4f8212[_0x7356('0x17')]()+_0x7356('0x64'),_0x4f8212));if(_0x4f8212!==_0x7356('0x65')&&_0x4ec45b['openNewTab']){logger[_0x7356('0x23')]('['+_0x4f8212['toUpperCase']()+']',_0x7356('0x66'));emit(_0x2b6ede['remoteUri'],_0x24c261[_0x7356('0x67')],_0x4ec45b[_0x7356('0x4a')],_0x3acb12['ticketId']);}})[_0x7356('0x27')](function(_0x3ab765){logger['error']('['+_0x4f8212['toUpperCase']()+_0x7356('0x68'),_0x3ab765[_0x7356('0x19')]);console[_0x7356('0x16')](_0x7356('0x69'),_0x3ab765);});};