Built motion from commit e6806ed6.|2.6.0
[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 _0xe151=['%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','remoteUri','data7','tenantId','CloudProvider','resolve','POST','clientId','username','password','clientSecret','then','access_token',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','destcalleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','catch','toLowerCase','calleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','picklist','type','nameField','indexOf','content','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','outbound'];(function(_0x18efb0,_0x402155){var _0x463641=function(_0x7f44b1){while(--_0x7f44b1){_0x18efb0['push'](_0x18efb0['shift']());}};_0x463641(++_0x402155);}(_0xe151,0x1b9));var _0x1e15=function(_0x1e3e59,_0x596d22){_0x1e3e59=_0x1e3e59-0x0;var _0x4cdd16=_0xe151[_0x1e3e59];return _0x4cdd16;};'use strict';var _=require(_0x1e15('0x0'));var rp=require(_0x1e15('0x1'));var util=require(_0x1e15('0x2'));var intUtil=require(_0x1e15('0x3'));var md5=require(_0x1e15('0x4'));var Redis=require(_0x1e15('0x5'));var logger=require(_0x1e15('0x6'))(_0x1e15('0x7'));var config=require(_0x1e15('0x8'));config[_0x1e15('0x9')]=_['defaults'](config[_0x1e15('0x9')],{'host':_0x1e15('0xa'),'port':0x18eb});var io=require(_0x1e15('0xb'))(new Redis(config[_0x1e15('0x9')]));function getAuthToken(_0x362608,_0x8f7fd3,_0x12ff21){if(_0x362608['modernAuthentication']){_0x362608[_0x1e15('0xc')]=_0x362608['CloudProvider'][_0x1e15('0xd')];_0x362608[_0x1e15('0xe')]=_0x362608[_0x1e15('0xf')]['data2'];return Promise[_0x1e15('0x10')](_0x362608[_0x1e15('0xf')]['data5']);}var _0x3d46d6={'method':_0x1e15('0x11'),'uri':_0x8f7fd3,'form':{'client_id':_0x362608[_0x1e15('0x12')],'resource':_0x362608['remoteUri'],'username':_0x362608[_0x1e15('0x13')],'password':_0x362608['password'],'grant_type':_0x1e15('0x14'),'client_secret':_0x362608[_0x1e15('0x15')]},'json':!![]};return rp(_0x3d46d6)[_0x1e15('0x16')](function(_0x481e7e){return _0x481e7e[_0x1e15('0x17')];})['catch'](function(_0x45aeef){logger['error']('['+[_0x12ff21['toUpperCase']()]+_0x1e15('0x18'));return _0x45aeef[_0x1e15('0x19')];});}function getUser(_0x57961e,_0x1febd4,_0x40500b,_0x220136,_0x506be8,_0x210275){return new Promise(function(_0x43436a,_0x4a1c91){return getAuthToken(_0x1febd4,_0x220136,_0x210275)[_0x1e15('0x16')](function(_0xf1747d){var _0x2e9517={'method':_0x1e15('0x1a'),'uri':_0x506be8+_0x1e15('0x1b'),'headers':{'Authorization':_0x1e15('0x1c')+_0xf1747d,'OData-Version':_0x1e15('0x1d')},'json':!![]};return rp(_0x2e9517);})['then'](function(_0x30ecd7){var _0x1f19e7=_0x30ecd7[_0x1e15('0x1e')];var _0x532f2f=![];var _0x54886d=null;if(!_[_0x1e15('0x1f')](_0x40500b)){if(intUtil[_0x1e15('0x20')](_0x40500b[_0x1e15('0x21')])){_0x57961e[_0x1e15('0x22')]=_0x40500b[_0x1e15('0x21')];for(_0x54886d=0x0;_0x54886d<_0x1f19e7[_0x1e15('0x23')];_0x54886d++){if(_0x1f19e7[_0x54886d][_0x1e15('0x24')]===_0x40500b[_0x1e15('0x21')]&&!_0x1f19e7[_0x54886d][_0x1e15('0x25')]){_0x532f2f=!![];logger['info']('['+[_0x210275[_0x1e15('0x26')]()]+_0x1e15('0x27')+_0x1f19e7[_0x54886d][_0x1e15('0x28')]+'!');_0x57961e[_0x1e15('0x29')]=_0x1f19e7[_0x54886d][_0x1e15('0x28')];}}}}if(!_0x532f2f){logger[_0x1e15('0x2a')]('['+[_0x210275[_0x1e15('0x26')]()]+_0x1e15('0x2b'));_0x57961e[_0x1e15('0x22')]=_0x1febd4[_0x1e15('0x13')];for(_0x54886d=0x0;_0x54886d<_0x1f19e7['length'];_0x54886d++){if(_0x1f19e7[_0x54886d][_0x1e15('0x24')]===_0x1febd4[_0x1e15('0x13')]){_0x57961e[_0x1e15('0x29')]=_0x1f19e7[_0x54886d][_0x1e15('0x28')];}}}_0x43436a(_0x57961e);})['catch'](function(_0x74f30a){_0x4a1c91(_0x74f30a[_0x1e15('0x19')]);});});}function createEndUser(_0x233f84,_0x41a391,_0x1aca56,_0x5d7860,_0x2eaead,_0x3498d1){return new Promise(function(_0x2baf52,_0x200953){return getAuthToken(_0x41a391,_0x1aca56,_0x3498d1)[_0x1e15('0x16')](function(_0x4ba690){var _0xba576=_0x3498d1['toLowerCase']()==='outbound'?_0x2eaead[_0x1e15('0x2c')]:_0x2eaead['calleridnum'];var _0xdf895e={'method':'POST','uri':_0x5d7860+_0x1e15('0x2d'),'body':{'telephone1':_0xba576,'fullname':_0xba576,'firstname':_0xba576,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x1e15('0x2e')+_0x233f84[_0x1e15('0x29')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x4ba690,'OData-Version':_0x1e15('0x1d')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0xdf895e);})[_0x1e15('0x16')](function(_0x59d33c){var _0x3cd54e=_0x59d33c[_0x1e15('0x2f')][_0x1e15('0x30')];var _0x3b6004=_0x3cd54e[_0x1e15('0x31')](_0x3cd54e[_0x1e15('0x32')]('(')+0x1,_0x3cd54e['lastIndexOf'](')'));_0x233f84[_0x1e15('0x33')]=_0x3b6004;_0x2baf52(_0x233f84);})[_0x1e15('0x34')](function(_0x497c87){_0x200953(_0x497c87[_0x1e15('0x19')]);});});}function getEndUser(_0x51dc28,_0xc4a5f0,_0x4ec454,_0x59b949,_0xe5e86a,_0x30eccc,_0x586d4e){var _0x2dcdf3=_0x30eccc[_0x1e15('0x35')]()==='outbound'?_0xe5e86a[_0x1e15('0x2c')]:_0xe5e86a[_0x1e15('0x36')];return getAuthToken(_0xc4a5f0,_0x4ec454,_0x30eccc)[_0x1e15('0x16')](function(_0x4971eb){var _0x1f5780={'method':_0x1e15('0x1a'),'uri':_0x59b949+_0x1e15('0x37')+_0x2dcdf3[_0x1e15('0x38')]('+',_0x1e15('0x39'))+'\x27','headers':{'Authorization':_0x1e15('0x1c')+_0x4971eb,'If-None-Match':null,'OData-Version':_0x1e15('0x1d')},'json':!![]};return rp(_0x1f5780);})['then'](function(_0x330a61){var _0x272870=![];if(!_0x330a61)return _0x272870;var _0x439b15=_0x330a61[_0x1e15('0x1e')];for(var _0x787593=0x0;_0x787593<_0x439b15[_0x1e15('0x23')];_0x787593++){if(_0x439b15[_0x787593][_0x1e15('0x3a')]===_0x2dcdf3){_0x272870=!![];_0x51dc28[_0x1e15('0x33')]=_0x439b15[_0x787593][_0x1e15('0x3b')];}}return _0x272870;})[_0x1e15('0x16')](function(_0x5b8b6f){if(_0x5b8b6f)return _0x51dc28;if(_0x586d4e==='nothing'){logger[_0x1e15('0x2a')]('['+[_0x30eccc[_0x1e15('0x26')]()]+_0x1e15('0x3c'));return _0x51dc28;}return createEndUser(_0x51dc28,_0xc4a5f0,_0x4ec454,_0x59b949,_0xe5e86a,_0x30eccc)['then'](function(_0x3b8c04){logger['info']('['+[_0x30eccc[_0x1e15('0x26')]()]+_0x1e15('0x3d'),_0x3b8c04['enduserId']);return _0x3b8c04;});});}function getCustomFields(_0x36b25c,_0x215f08,_0x1e6c94){var _0x5a7069={};if(_0x36b25c[_0x1e15('0x23')]>0x0){_[_0x1e15('0x3e')](_0x36b25c,function(_0x3d1019){if(_[_0x1e15('0x3f')](['string',_0x1e15('0x40')],_0x3d1019[_0x1e15('0x41')])&&_0x3d1019[_0x1e15('0x42')]&&!_0x3d1019['customField']){var _0x551896=_0x3d1019['idField']['toLowerCase']();var _0x2fcdb2=_0x551896[_0x1e15('0x31')](0x0,_0x551896[_0x1e15('0x43')]('_'));var _0xa568eb=_0x551896[_0x1e15('0x31')](_0x551896[_0x1e15('0x43')]('_')+0x1);if(_0x2fcdb2===_0x1e6c94){_0x5a7069[_0xa568eb]=_0x3d1019[_0x1e15('0x44')];}}});}return _0x5a7069;}function getTicket(_0x5e3a93,_0x5a89bc,_0x3f61be,_0x4ef2a9,_0x3b219c,_0x5e1665,_0x47f2d5){return new Promise(function(_0x49ccd7,_0x334b7d){var _0x579934;return getAuthToken(_0x5a89bc,_0x3f61be,_0x47f2d5)['then'](function(_0x4774bc){if(_0x5e1665[_0x1e15('0x45')]==='incident'){_0x579934={'method':_0x1e15('0x11'),'uri':_0x4ef2a9+_0x1e15('0x46'),'body':Object[_0x1e15('0x47')]({},{'title':intUtil[_0x1e15('0x48')](_0x5e1665[_0x1e15('0x49')],_0x3b219c,'\x20'),'description':intUtil['getString'](_0x5e1665[_0x1e15('0x4a')],_0x3b219c,'\x0a'),'customerid_contact@odata.bind':_0x5e3a93[_0x1e15('0x33')]?_0x1e15('0x4b')+_0x5e3a93['enduserId']+')':undefined,'ownerid@odata.bind':_0x1e15('0x2e')+_0x5e3a93['userId']+')','caseorigincode':'1'},getCustomFields(_0x5e1665[_0x1e15('0x4c')],_0x3b219c,_0x5e1665[_0x1e15('0x45')])),'headers':{'Authorization':_0x1e15('0x1c')+_0x4774bc,'OData-Version':_0x1e15('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5e1665[_0x1e15('0x45')]===_0x1e15('0x4d')){var _0x1d8a79=_0x5e3a93[_0x1e15('0x33')]?[{'partyid_systemuser@odata.bind':_0x1e15('0x2e')+_0x5e3a93[_0x1e15('0x29')]+')','participationtypemask':_0x5e3a93[_0x1e15('0x4e')]===_0x1e15('0x4f')?0x2:0x1},{'partyid_contact@odata.bind':_0x1e15('0x4b')+_0x5e3a93[_0x1e15('0x33')]+')','participationtypemask':_0x5e3a93[_0x1e15('0x4e')]===_0x1e15('0x4f')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x5e3a93[_0x1e15('0x29')]+')','participationtypemask':_0x5e3a93['callDirection']===_0x1e15('0x4f')?0x2:0x1}];_0x579934={'method':_0x1e15('0x11'),'uri':_0x4ef2a9+'phonecalls','body':Object['assign']({},{'subject':intUtil[_0x1e15('0x48')](_0x5e1665['Subjects'],_0x3b219c,'\x20'),'phonenumber':String(_0x3b219c[_0x1e15('0x36')]),'description':intUtil[_0x1e15('0x48')](_0x5e1665[_0x1e15('0x4a')],_0x3b219c,'\x0a'),'regardingobjectid_contact@odata.bind':_0x5e3a93['enduserId']?'/contacts('+_0x5e3a93[_0x1e15('0x33')]+')':undefined,'ownerid@odata.bind':_0x1e15('0x2e')+_0x5e3a93[_0x1e15('0x29')]+')','directioncode':_0x5e3a93[_0x1e15('0x4e')]===_0x1e15('0x4f')?![]:!![],'phonecall_activity_parties':_0x1d8a79},getCustomFields(_0x5e1665[_0x1e15('0x4c')],_0x3b219c,_0x5e1665[_0x1e15('0x45')])),'headers':{'Authorization':'Bearer\x20'+_0x4774bc,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x579934);})[_0x1e15('0x16')](function(_0x13f430){var _0x525bb5=_0x13f430['headers'][_0x1e15('0x30')];var _0x1bc831=_0x525bb5[_0x1e15('0x31')](_0x525bb5[_0x1e15('0x32')]('(')+0x1,_0x525bb5[_0x1e15('0x32')](')'));_0x5e3a93[_0x1e15('0x50')]=_0x1bc831;_0x49ccd7(_0x5e3a93);})[_0x1e15('0x34')](function(_0x59d83e){_0x334b7d(_0x59d83e[_0x1e15('0x19')]);});});}function emit(_0x17b8d7,_0x5a3e42,_0x12dce8,_0x43df43){var _0x1498b3={'uri':util[_0x1e15('0x51')](_0x1e15('0x52'),_0x17b8d7,_0x12dce8,_0x43df43)};io['to'](util['format']('user:%s',_0x5a3e42))[_0x1e15('0x53')](_0x1e15('0x54'),_0x1498b3);}exports['cs']=function(_0xa865f1,_0x69b5f7,_0x260829,_0x32756a,_0x52d674,_0x1429ad,_0x5177ca,_0x210393){var _0x298399={};_0x1429ad[_0x1e15('0xc')]=_0x1429ad[_0x1e15('0x55')]?intUtil[_0x1e15('0x56')](_0x1429ad['CloudProvider'][_0x1e15('0xd')]):intUtil[_0x1e15('0x56')](_0x1429ad['remoteUri']);_0x1429ad[_0x1e15('0x57')]=intUtil[_0x1e15('0x56')](_0x1429ad['serverUrl']);_0x298399[_0x1e15('0x4e')]=_0x210393==='queue'||_0x210393==='unmanaged'?_0x1e15('0x4f'):_0x1e15('0x58');var _0x1aebb0=_0x1429ad[_0x1e15('0x55')]?util[_0x1e15('0x51')](_0x1e15('0x59'),_0x1429ad['CloudProvider'][_0x1e15('0xd')]):util[_0x1e15('0x51')](_0x1e15('0x59'),_0x1429ad['remoteUri']);var _0x2252dd=util[_0x1e15('0x51')](_0x1e15('0x5a'),_0x1429ad[_0x1e15('0xe')]);var _0x32fc47=util[_0x1e15('0x51')](_0x1e15('0x5b'),_0x1429ad['serverUrl'],_0x69b5f7[_0x1e15('0x5c')],md5(_0x69b5f7['uniqueid']));if(_0x52d674&&_0x52d674['monitor_format']){logger[_0x1e15('0x2a')]('[QUEUE]',_0x1e15('0x5d'));_0x69b5f7[_0x1e15('0x5e')]=_0x32fc47;}else if(_0x5177ca&&_0x5177ca[_0x1e15('0x5f')]&&_0x5177ca[_0x1e15('0x5f')]!==_0x1e15('0x60')){logger[_0x1e15('0x2a')](_0x1e15('0x61'),_0x1e15('0x5d'));_0x69b5f7[_0x1e15('0x5e')]=_0x32fc47;}else{_0x69b5f7[_0x1e15('0x5e')]='';}return getUser(_0x298399,_0x1429ad,_0x32756a,_0x2252dd,_0x1aebb0,_0x210393)['then'](function(_0x25c3d3){logger[_0x1e15('0x2a')]('['+_0x210393[_0x1e15('0x26')]()+_0x1e15('0x62'),_0x25c3d3['userId']);logger[_0x1e15('0x2a')]('['+_0x210393['toUpperCase']()+_0x1e15('0x63'),_0x25c3d3[_0x1e15('0x22')]);return getEndUser(_0x25c3d3,_0x1429ad,_0x2252dd,_0x1aebb0,_0x69b5f7,_0x210393,_0x260829[_0x1e15('0x64')]);})[_0x1e15('0x16')](function(_0x57b016){logger[_0x1e15('0x2a')]('['+_0x210393[_0x1e15('0x26')]()+_0x1e15('0x65'),_0x57b016['enduserId']);logger[_0x1e15('0x2a')]('['+_0x210393[_0x1e15('0x26')]()+_0x1e15('0x66'),_0x69b5f7[_0x1e15('0x36')]);return getTicket(_0x57b016,_0x1429ad,_0x2252dd,_0x1aebb0,_0x69b5f7,_0x260829,_0x210393);})['then'](function(_0x24c32c){logger[_0x1e15('0x2a')](util[_0x1e15('0x51')]('['+_0x210393[_0x1e15('0x26')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x260829[_0x1e15('0x45')],_0x24c32c[_0x1e15('0x50')]));logger[_0x1e15('0x2a')](util[_0x1e15('0x51')]('['+_0x210393['toUpperCase']()+_0x1e15('0x67'),_0x210393));if(_0x210393!=='unmanaged'){logger[_0x1e15('0x2a')]('['+_0x210393[_0x1e15('0x26')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x1429ad[_0x1e15('0xc')],_0x32756a[_0x1e15('0x68')],_0x260829[_0x1e15('0x45')],_0x24c32c['ticketId']);}})['catch'](function(_0x42a512){logger['error']('['+_0x210393[_0x1e15('0x26')]()+_0x1e15('0x69'),_0x42a512['message']);});};