Built motion from commit 25580385.|2.6.2
[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 _0x2f4e=['none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','name','error','lodash','request-promise','./util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data5','POST','clientId','username','password','clientSecret','access_token','toUpperCase','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress',']\x20Agent\x20found\x20','userId','systemuserid','info','catch','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','%2b','contactid','nothing',']\x20Enduser\x20created!','forEach','string','picklist','type','nameField','customField','idField','toLowerCase','indexOf','content','ticketType','incident','assign','getString','Subjects','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','Descriptions','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat'];(function(_0x233cab,_0x37a3d7){var _0x1ef6fb=function(_0x344265){while(--_0x344265){_0x233cab['push'](_0x233cab['shift']());}};_0x1ef6fb(++_0x37a3d7);}(_0x2f4e,0xe0));var _0xe2f4=function(_0x2734e2,_0x3c6770){_0x2734e2=_0x2734e2-0x0;var _0x5ef86a=_0x2f4e[_0x2734e2];return _0x5ef86a;};'use strict';var _=require(_0xe2f4('0x0'));var rp=require(_0xe2f4('0x1'));var util=require('util');var intUtil=require(_0xe2f4('0x2'));var md5=require('md5');var Redis=require(_0xe2f4('0x3'));var logger=require(_0xe2f4('0x4'))(_0xe2f4('0x5'));var config=require(_0xe2f4('0x6'));config[_0xe2f4('0x7')]=_[_0xe2f4('0x8')](config[_0xe2f4('0x7')],{'host':_0xe2f4('0x9'),'port':0x18eb});var io=require(_0xe2f4('0xa'))(new Redis(config[_0xe2f4('0x7')]));function getAuthToken(_0x2ea38b,_0x514c1c,_0x478f03){if(_0x2ea38b[_0xe2f4('0xb')]){_0x2ea38b[_0xe2f4('0xc')]=_0x2ea38b[_0xe2f4('0xd')][_0xe2f4('0xe')];_0x2ea38b[_0xe2f4('0xf')]=_0x2ea38b[_0xe2f4('0xd')]['data2'];return Promise['resolve'](_0x2ea38b[_0xe2f4('0xd')][_0xe2f4('0x10')]);}var _0x4e4899={'method':_0xe2f4('0x11'),'uri':_0x514c1c,'form':{'client_id':_0x2ea38b[_0xe2f4('0x12')],'resource':_0x2ea38b['remoteUri'],'username':_0x2ea38b[_0xe2f4('0x13')],'password':_0x2ea38b[_0xe2f4('0x14')],'grant_type':'password','client_secret':_0x2ea38b[_0xe2f4('0x15')]},'json':!![]};return rp(_0x4e4899)['then'](function(_0x4adebc){return _0x4adebc[_0xe2f4('0x16')];})['catch'](function(_0x27a0a0){logger['error']('['+[_0x478f03[_0xe2f4('0x17')]()]+']\x20Wrong\x20credentials!');return _0x27a0a0[_0xe2f4('0x18')];});}function getUser(_0x246f22,_0x3dae42,_0x3e10b3,_0x520108,_0x1f8762,_0x5c8f86){return new Promise(function(_0x757c04,_0x59cdca){return getAuthToken(_0x3dae42,_0x520108,_0x5c8f86)[_0xe2f4('0x19')](function(_0x39ece3){var _0x33003e={'method':_0xe2f4('0x1a'),'uri':_0x1f8762+_0xe2f4('0x1b'),'headers':{'Authorization':_0xe2f4('0x1c')+_0x39ece3,'OData-Version':_0xe2f4('0x1d')},'json':!![]};return rp(_0x33003e);})['then'](function(_0x42f418){var _0x4926c9=_0x42f418[_0xe2f4('0x1e')];var _0x5b8fd5=![];var _0x43f5af=null;if(!_[_0xe2f4('0x1f')](_0x3e10b3)){if(intUtil[_0xe2f4('0x20')](_0x3e10b3[_0xe2f4('0x21')])){_0x246f22[_0xe2f4('0x22')]=_0x3e10b3[_0xe2f4('0x21')];for(_0x43f5af=0x0;_0x43f5af<_0x4926c9[_0xe2f4('0x23')];_0x43f5af++){if(_0x4926c9[_0x43f5af][_0xe2f4('0x24')]===_0x3e10b3[_0xe2f4('0x21')]&&!_0x4926c9[_0x43f5af]['isdisabled']){_0x5b8fd5=!![];logger['info']('['+[_0x5c8f86['toUpperCase']()]+_0xe2f4('0x25')+_0x4926c9[_0x43f5af]['systemuserid']+'!');_0x246f22[_0xe2f4('0x26')]=_0x4926c9[_0x43f5af][_0xe2f4('0x27')];}}}}if(!_0x5b8fd5){logger[_0xe2f4('0x28')]('['+[_0x5c8f86[_0xe2f4('0x17')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x246f22[_0xe2f4('0x22')]=_0x3dae42[_0xe2f4('0x13')];for(_0x43f5af=0x0;_0x43f5af<_0x4926c9['length'];_0x43f5af++){if(_0x4926c9[_0x43f5af]['internalemailaddress']===_0x3dae42[_0xe2f4('0x13')]){_0x246f22[_0xe2f4('0x26')]=_0x4926c9[_0x43f5af][_0xe2f4('0x27')];}}}_0x757c04(_0x246f22);})[_0xe2f4('0x29')](function(_0x203337){_0x59cdca(_0x203337[_0xe2f4('0x18')]);});});}function createEndUser(_0x53848e,_0x9d9237,_0x55d470,_0x3a86e2,_0x45e842,_0x4433da,_0x2bc27e){return new Promise(function(_0x5f3295,_0x483852){return getAuthToken(_0x9d9237,_0x55d470,_0x4433da)[_0xe2f4('0x19')](function(_0xa27bc0){var _0x5c0f29=_0x4433da['toLowerCase']()===_0xe2f4('0x2a')?_0x45e842[_0xe2f4('0x2b')]:_0x45e842[_0xe2f4('0x2c')];var _0x46055b={'method':_0xe2f4('0x11'),'uri':_0x3a86e2+_0xe2f4('0x2d'),'body':{'fullname':_0x5c0f29,'firstname':_0x5c0f29,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xe2f4('0x2e')+_0x53848e['userId']+')'},'headers':{'Authorization':_0xe2f4('0x1c')+_0xa27bc0,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x46055b[_0xe2f4('0x2f')][_0x2bc27e]=_0x5c0f29;return rp(_0x46055b);})[_0xe2f4('0x19')](function(_0x2f8283){var _0x4ffaca=_0x2f8283[_0xe2f4('0x30')][_0xe2f4('0x31')];var _0x15df0a=_0x4ffaca[_0xe2f4('0x32')](_0x4ffaca['lastIndexOf']('(')+0x1,_0x4ffaca[_0xe2f4('0x33')](')'));_0x53848e[_0xe2f4('0x34')]=_0x15df0a;_0x5f3295(_0x53848e);})[_0xe2f4('0x29')](function(_0x474fb2){_0x483852(_0x474fb2[_0xe2f4('0x18')]);});});}function getEndUser(_0x324d47,_0x50a5d2,_0xf0b4fe,_0x3daa0a,_0x3d84bc,_0x2d3f45,_0xe9bc1e,_0x35df01){var _0x1a726a=_0x2d3f45['toLowerCase']()===_0xe2f4('0x2a')?_0x3d84bc[_0xe2f4('0x2b')]:_0x3d84bc['calleridnum'];return getAuthToken(_0x50a5d2,_0xf0b4fe,_0x2d3f45)[_0xe2f4('0x19')](function(_0x30d900){_0x35df01=_0x35df01?_0x35df01:_0xe2f4('0x35');var _0x475bb5={'method':_0xe2f4('0x1a'),'uri':_0x3daa0a+_0xe2f4('0x36')+_0x35df01+_0xe2f4('0x37')+_0x35df01+_0xe2f4('0x38')+_0x1a726a['replace']('+',_0xe2f4('0x39'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x30d900,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x475bb5);})['then'](function(_0x360ce9){var _0x4400bf=![];if(!_0x360ce9)return _0x4400bf;var _0x4dd812=_0x360ce9[_0xe2f4('0x1e')];for(var _0x4aed29=0x0;_0x4aed29<_0x4dd812['length'];_0x4aed29++){if(_0x4dd812[_0x4aed29][_0x35df01]===_0x1a726a){_0x4400bf=!![];_0x324d47[_0xe2f4('0x34')]=_0x4dd812[_0x4aed29][_0xe2f4('0x3a')];}}return _0x4400bf;})[_0xe2f4('0x19')](function(_0x4f959e){if(_0x4f959e)return _0x324d47;if(_0xe9bc1e===_0xe2f4('0x3b')){logger[_0xe2f4('0x28')]('['+[_0x2d3f45['toUpperCase']()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x324d47;}return createEndUser(_0x324d47,_0x50a5d2,_0xf0b4fe,_0x3daa0a,_0x3d84bc,_0x2d3f45,_0x35df01)[_0xe2f4('0x19')](function(_0x3af526){logger[_0xe2f4('0x28')]('['+[_0x2d3f45['toUpperCase']()]+_0xe2f4('0x3c'),_0x3af526[_0xe2f4('0x34')]);return _0x3af526;});});}function getCustomFields(_0x21f65f,_0x43a3cd,_0x372ab5){var _0x1f0c94={};if(_0x21f65f[_0xe2f4('0x23')]>0x0){_[_0xe2f4('0x3d')](_0x21f65f,function(_0x480f68){if(_['includes']([_0xe2f4('0x3e'),_0xe2f4('0x3f')],_0x480f68[_0xe2f4('0x40')])&&_0x480f68[_0xe2f4('0x41')]&&!_0x480f68[_0xe2f4('0x42')]){var _0x947d06=_0x480f68[_0xe2f4('0x43')][_0xe2f4('0x44')]();var _0x33f548=_0x947d06[_0xe2f4('0x32')](0x0,_0x947d06[_0xe2f4('0x45')]('_'));var _0x2ef45e=_0x947d06[_0xe2f4('0x32')](_0x947d06[_0xe2f4('0x45')]('_')+0x1);if(_0x33f548===_0x372ab5){_0x1f0c94[_0x2ef45e]=_0x480f68[_0xe2f4('0x46')];}}});}return _0x1f0c94;}function getTicket(_0xb2185a,_0x1d1526,_0x374b86,_0xa86407,_0x543c57,_0x40ace1,_0x398dab){return new Promise(function(_0x5b2230,_0x35a317){var _0x262c43;return getAuthToken(_0x1d1526,_0x374b86,_0x398dab)['then'](function(_0x271f34){if(_0x40ace1[_0xe2f4('0x47')]===_0xe2f4('0x48')){_0x262c43={'method':_0xe2f4('0x11'),'uri':_0xa86407+'incidents','body':Object[_0xe2f4('0x49')]({},{'title':intUtil[_0xe2f4('0x4a')](_0x40ace1[_0xe2f4('0x4b')],_0x543c57,'\x20'),'description':intUtil[_0xe2f4('0x4a')](_0x40ace1['Descriptions'],_0x543c57,'\x0a'),'customerid_contact@odata.bind':_0xb2185a[_0xe2f4('0x34')]?_0xe2f4('0x4c')+_0xb2185a['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0xb2185a[_0xe2f4('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x40ace1[_0xe2f4('0x4d')],_0x543c57,_0x40ace1[_0xe2f4('0x47')])),'headers':{'Authorization':_0xe2f4('0x1c')+_0x271f34,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x40ace1[_0xe2f4('0x47')]===_0xe2f4('0x4e')){var _0x4567de=_0xb2185a[_0xe2f4('0x34')]?[{'partyid_systemuser@odata.bind':_0xe2f4('0x2e')+_0xb2185a[_0xe2f4('0x26')]+')','participationtypemask':_0xb2185a['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xe2f4('0x4c')+_0xb2185a['enduserId']+')','participationtypemask':_0xb2185a[_0xe2f4('0x4f')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0xb2185a[_0xe2f4('0x26')]+')','participationtypemask':_0xb2185a[_0xe2f4('0x4f')]===_0xe2f4('0x50')?0x2:0x1}];_0x262c43={'method':'POST','uri':_0xa86407+_0xe2f4('0x51'),'body':Object[_0xe2f4('0x49')]({},{'subject':intUtil[_0xe2f4('0x4a')](_0x40ace1['Subjects'],_0x543c57,'\x20'),'phonenumber':String(_0x543c57[_0xe2f4('0x2c')]),'description':intUtil[_0xe2f4('0x4a')](_0x40ace1[_0xe2f4('0x52')],_0x543c57,'\x0a'),'regardingobjectid_contact@odata.bind':_0xb2185a[_0xe2f4('0x34')]?_0xe2f4('0x4c')+_0xb2185a[_0xe2f4('0x34')]+')':undefined,'ownerid@odata.bind':_0xe2f4('0x2e')+_0xb2185a[_0xe2f4('0x26')]+')','directioncode':_0xb2185a[_0xe2f4('0x4f')]===_0xe2f4('0x50')?![]:!![],'phonecall_activity_parties':_0x4567de},getCustomFields(_0x40ace1[_0xe2f4('0x4d')],_0x543c57,_0x40ace1[_0xe2f4('0x47')])),'headers':{'Authorization':'Bearer\x20'+_0x271f34,'OData-Version':_0xe2f4('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x262c43);})[_0xe2f4('0x19')](function(_0x5b92bf){var _0x1db9de=_0x5b92bf['headers'][_0xe2f4('0x31')];var _0x33f6bb=_0x1db9de[_0xe2f4('0x32')](_0x1db9de[_0xe2f4('0x33')]('(')+0x1,_0x1db9de[_0xe2f4('0x33')](')'));_0xb2185a[_0xe2f4('0x53')]=_0x33f6bb;_0x5b2230(_0xb2185a);})[_0xe2f4('0x29')](function(_0x3fa3a0){_0x35a317(_0x3fa3a0[_0xe2f4('0x18')]);});});}function emit(_0x23f89e,_0x2a2094,_0x57489a,_0xec6f61){var _0x4aa3d0={'uri':util[_0xe2f4('0x54')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x23f89e,_0x57489a,_0xec6f61)};io['to'](util[_0xe2f4('0x54')](_0xe2f4('0x55'),_0x2a2094))[_0xe2f4('0x56')](_0xe2f4('0x57'),_0x4aa3d0);}exports['cs']=function(_0x2a3e9b,_0x1dd5d0,_0x68c49d,_0x8c1813,_0x14762d,_0x5a32b7,_0x53aaae,_0x5b1cc7){var _0x5eefe3={};_0x5a32b7['remoteUri']=_0x5a32b7[_0xe2f4('0xb')]?intUtil[_0xe2f4('0x58')](_0x5a32b7['CloudProvider']['data7']):intUtil[_0xe2f4('0x58')](_0x5a32b7[_0xe2f4('0xc')]);_0x5a32b7[_0xe2f4('0x59')]=intUtil[_0xe2f4('0x58')](_0x5a32b7[_0xe2f4('0x59')]);_0x5eefe3[_0xe2f4('0x4f')]=_0x5b1cc7===_0xe2f4('0x50')||_0x5b1cc7===_0xe2f4('0x5a')?_0xe2f4('0x50'):_0xe2f4('0x2a');var _0x363f86=_0x5a32b7[_0xe2f4('0xb')]?util['format']('%s/api/data/v9.0/',_0x5a32b7['CloudProvider']['data7']):util[_0xe2f4('0x54')]('%s/api/data/v9.0/',_0x5a32b7['remoteUri']);var _0x5bcfc6=util['format'](_0xe2f4('0x5b'),_0x5a32b7[_0xe2f4('0xf')]);var _0x5de431=util[_0xe2f4('0x54')](_0xe2f4('0x5c'),_0x5a32b7[_0xe2f4('0x59')],_0x1dd5d0[_0xe2f4('0x5d')],md5(_0x1dd5d0['uniqueid']));if(_0x14762d&&_0x14762d[_0xe2f4('0x5e')]){logger[_0xe2f4('0x28')]('[QUEUE]','Recording\x20is\x20enabled!');_0x1dd5d0[_0xe2f4('0x5f')]=_0x5de431;}else if(_0x53aaae&&_0x53aaae['recordingFormat']&&_0x53aaae[_0xe2f4('0x60')]!==_0xe2f4('0x61')){logger[_0xe2f4('0x28')](_0xe2f4('0x62'),_0xe2f4('0x63'));_0x1dd5d0[_0xe2f4('0x5f')]=_0x5de431;}else{_0x1dd5d0[_0xe2f4('0x5f')]='';}return getUser(_0x5eefe3,_0x5a32b7,_0x8c1813,_0x5bcfc6,_0x363f86,_0x5b1cc7)[_0xe2f4('0x19')](function(_0x2f4019){logger[_0xe2f4('0x28')]('['+_0x5b1cc7['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x2f4019['userId']);logger['info']('['+_0x5b1cc7[_0xe2f4('0x17')]()+_0xe2f4('0x64'),_0x2f4019[_0xe2f4('0x22')]);return getEndUser(_0x2f4019,_0x5a32b7,_0x5bcfc6,_0x363f86,_0x1dd5d0,_0x5b1cc7,_0x68c49d['moduleCreate'],_0x68c49d[_0xe2f4('0x65')]);})['then'](function(_0x33754c){logger[_0xe2f4('0x28')]('['+_0x5b1cc7[_0xe2f4('0x17')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x33754c['enduserId']);logger[_0xe2f4('0x28')]('['+_0x5b1cc7['toUpperCase']()+_0xe2f4('0x66'),_0x1dd5d0['calleridnum']);return getTicket(_0x33754c,_0x5a32b7,_0x5bcfc6,_0x363f86,_0x1dd5d0,_0x68c49d,_0x5b1cc7);})[_0xe2f4('0x19')](function(_0x3803a4){logger['info'](util[_0xe2f4('0x54')]('['+_0x5b1cc7['toUpperCase']()+_0xe2f4('0x67'),_0x68c49d[_0xe2f4('0x47')],_0x3803a4['ticketId']));logger['info'](util['format']('['+_0x5b1cc7[_0xe2f4('0x17')]()+_0xe2f4('0x68'),_0x5b1cc7));if(_0x5b1cc7!==_0xe2f4('0x5a')){logger[_0xe2f4('0x28')]('['+_0x5b1cc7[_0xe2f4('0x17')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x5a32b7[_0xe2f4('0xc')],_0x8c1813[_0xe2f4('0x69')],_0x68c49d[_0xe2f4('0x47')],_0x3803a4[_0xe2f4('0x53')]);}})[_0xe2f4('0x29')](function(_0x5ecafd){logger[_0xe2f4('0x6a')]('['+_0x5b1cc7[_0xe2f4('0x17')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x5ecafd[_0xe2f4('0x18')]);});};