Built motion from commit (unavailable).|2.5.1
[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 _0xbc0a=['Subjects','getString','Descriptions','/contacts(','ticketType','phonecalls','queue','callDirection','Fields','format','user:%s','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','email','userEmail','length','isdisabled','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','internalemailaddress','toLowerCase','outbound','calleridnum','contacts','/systemusers(','Bearer\x20','odata-entityid','lastIndexOf','enduserId','GET','contacts?$select=telephone1','value','destcalleridnum','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','type','string','nameField','customField','idField','substring','indexOf','content','incident','incidents','assign'];(function(_0x4f9383,_0x59383e){var _0x2c9594=function(_0x28e7a0){while(--_0x28e7a0){_0x4f9383['push'](_0x4f9383['shift']());}};_0x2c9594(++_0x59383e);}(_0xbc0a,0x1c0));var _0xabc0=function(_0x4d9671,_0x16b09a){_0x4d9671=_0x4d9671-0x0;var _0x1a8aa0=_0xbc0a[_0x4d9671];return _0x1a8aa0;};'use strict';var _=require(_0xabc0('0x0'));var BPromise=require(_0xabc0('0x1'));var rp=require('request-promise');var util=require(_0xabc0('0x2'));var intUtil=require(_0xabc0('0x3'));var md5=require(_0xabc0('0x4'));var Redis=require(_0xabc0('0x5'));var logger=require(_0xabc0('0x6'))(_0xabc0('0x7'));var config=require(_0xabc0('0x8'));config[_0xabc0('0x9')]=_[_0xabc0('0xa')](config[_0xabc0('0x9')],{'host':_0xabc0('0xb'),'port':0x18eb});var io=require(_0xabc0('0xc'))(new Redis(config[_0xabc0('0x9')]));function getAuthToken(_0xf10b6f,_0x1c71f7,_0x47edc1){var _0x5314ed={'method':_0xabc0('0xd'),'uri':_0x1c71f7,'form':{'client_id':_0xf10b6f[_0xabc0('0xe')],'resource':_0xf10b6f[_0xabc0('0xf')],'username':_0xf10b6f['username'],'password':_0xf10b6f[_0xabc0('0x10')],'grant_type':_0xabc0('0x10'),'client_secret':_0xf10b6f[_0xabc0('0x11')]},'json':!![]};return rp(_0x5314ed)[_0xabc0('0x12')](function(_0x54cc4b){return _0x54cc4b[_0xabc0('0x13')];})[_0xabc0('0x14')](function(_0x3388fe){logger[_0xabc0('0x15')]('['+[_0x47edc1[_0xabc0('0x16')]()]+_0xabc0('0x17'));return _0x3388fe[_0xabc0('0x18')];});}function getUser(_0x44059f,_0x28585b,_0x1dbec1,_0x5863f3,_0x520123,_0x3190cd){return new BPromise(function(_0x36745f,_0x2e61fc){return getAuthToken(_0x28585b,_0x5863f3,_0x3190cd)[_0xabc0('0x12')](function(_0x1c548d){var _0x149805={'method':'GET','uri':_0x520123+_0xabc0('0x19'),'headers':{'Authorization':'Bearer\x20'+_0x1c548d,'OData-Version':_0xabc0('0x1a')},'json':!![]};return rp(_0x149805);})[_0xabc0('0x12')](function(_0x58db65){var _0x5439e0=_0x58db65['value'];var _0x42fc2e=![];var _0x213451=null;if(!_['isNil'](_0x1dbec1)){if(intUtil['validateEmail'](_0x1dbec1[_0xabc0('0x1b')])){_0x44059f[_0xabc0('0x1c')]=_0x1dbec1['email'];for(_0x213451=0x0;_0x213451<_0x5439e0[_0xabc0('0x1d')];_0x213451++){if(_0x5439e0[_0x213451]['internalemailaddress']===_0x1dbec1[_0xabc0('0x1b')]&&!_0x5439e0[_0x213451][_0xabc0('0x1e')]){_0x42fc2e=!![];logger[_0xabc0('0x1f')]('['+[_0x3190cd[_0xabc0('0x16')]()]+_0xabc0('0x20')+_0x5439e0[_0x213451]['systemuserid']+'!');_0x44059f[_0xabc0('0x21')]=_0x5439e0[_0x213451][_0xabc0('0x22')];}}}}if(!_0x42fc2e){logger[_0xabc0('0x1f')]('['+[_0x3190cd['toUpperCase']()]+_0xabc0('0x23'));_0x44059f[_0xabc0('0x1c')]=_0x28585b[_0xabc0('0x24')];for(_0x213451=0x0;_0x213451<_0x5439e0[_0xabc0('0x1d')];_0x213451++){if(_0x5439e0[_0x213451][_0xabc0('0x25')]===_0x28585b[_0xabc0('0x24')]){_0x44059f[_0xabc0('0x21')]=_0x5439e0[_0x213451]['systemuserid'];}}}_0x36745f(_0x44059f);})[_0xabc0('0x14')](function(_0x55667a){_0x2e61fc(_0x55667a[_0xabc0('0x18')]);});});}function createEndUser(_0xd59cab,_0x254e42,_0x5ee9ea,_0x32a3aa,_0x5d2a78,_0x59b60a){return new BPromise(function(_0x2717fe,_0xe13643){return getAuthToken(_0x254e42,_0x5ee9ea,_0x59b60a)[_0xabc0('0x12')](function(_0x2556d8){var _0x2bac38=_0x59b60a[_0xabc0('0x26')]()===_0xabc0('0x27')?_0x5d2a78['destcalleridnum']:_0x5d2a78[_0xabc0('0x28')];var _0x5d1074={'method':_0xabc0('0xd'),'uri':_0x32a3aa+_0xabc0('0x29'),'body':{'telephone1':_0x2bac38,'fullname':_0x2bac38,'firstname':_0x2bac38,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xabc0('0x2a')+_0xd59cab[_0xabc0('0x21')]+')'},'headers':{'Authorization':_0xabc0('0x2b')+_0x2556d8,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5d1074);})[_0xabc0('0x12')](function(_0x3479b5){var _0x28bef8=_0x3479b5['headers'][_0xabc0('0x2c')];var _0x2a1546=_0x28bef8['substring'](_0x28bef8[_0xabc0('0x2d')]('(')+0x1,_0x28bef8[_0xabc0('0x2d')](')'));_0xd59cab[_0xabc0('0x2e')]=_0x2a1546;_0x2717fe(_0xd59cab);})['catch'](function(_0x92da44){_0xe13643(_0x92da44[_0xabc0('0x18')]);});});}function getEndUser(_0x33fc50,_0x2002fd,_0x1fda18,_0x3354e8,_0x4cdcf7,_0x335e7e){return new BPromise(function(_0x564c4b,_0x37d89b){return getAuthToken(_0x2002fd,_0x1fda18,_0x335e7e)[_0xabc0('0x12')](function(_0x546334){var _0xb4513a={'method':_0xabc0('0x2f'),'uri':_0x3354e8+_0xabc0('0x30'),'headers':{'Authorization':_0xabc0('0x2b')+_0x546334,'If-None-Match':null,'OData-Version':_0xabc0('0x1a')},'json':!![]};return rp(_0xb4513a);})[_0xabc0('0x12')](function(_0x10aa06){var _0x263296=null;if(_0x10aa06){var _0x5c79a7=_0x10aa06[_0xabc0('0x31')];var _0x15efa0=![];for(_0x263296=0x0;_0x263296<_0x5c79a7[_0xabc0('0x1d')];_0x263296++){var _0x5ed3be=_0x335e7e[_0xabc0('0x26')]()===_0xabc0('0x27')?_0x4cdcf7[_0xabc0('0x32')]:_0x4cdcf7[_0xabc0('0x28')];if(_0x5c79a7[_0x263296][_0xabc0('0x33')]===_0x5ed3be){_0x15efa0=!![];_0x33fc50[_0xabc0('0x2e')]=_0x5c79a7[_0x263296][_0xabc0('0x34')];}}if(_0x15efa0){_0x564c4b(_0x33fc50);}else{return createEndUser(_0x33fc50,_0x2002fd,_0x1fda18,_0x3354e8,_0x4cdcf7,_0x335e7e)[_0xabc0('0x12')](function(_0x1f64f9){logger[_0xabc0('0x1f')]('['+[_0x335e7e[_0xabc0('0x16')]()]+_0xabc0('0x35'),_0x1f64f9[_0xabc0('0x2e')]);_0x564c4b(_0x1f64f9);});}}else{return createEndUser(_0x33fc50,_0x2002fd,_0x1fda18,_0x3354e8,_0x4cdcf7,_0x335e7e)[_0xabc0('0x12')](function(_0x5e44dc){logger['info']('['+[_0x335e7e['toUpperCase']()]+_0xabc0('0x36'),_0x5e44dc['enduserId']);_0x564c4b(_0x5e44dc);});}});});}function getCustomFields(_0x26ae1d,_0x58a12b,_0x6bb982){var _0x2d7210={};if(_0x26ae1d[_0xabc0('0x1d')]>0x0){_[_0xabc0('0x37')](_0x26ae1d,function(_0x3f147){if(_0x3f147[_0xabc0('0x38')]===_0xabc0('0x39')&&_0x3f147[_0xabc0('0x3a')]&&!_0x3f147[_0xabc0('0x3b')]){var _0x3e73ba=_0x3f147[_0xabc0('0x3c')][_0xabc0('0x26')]();var _0x486bad=_0x3e73ba[_0xabc0('0x3d')](0x0,_0x3e73ba[_0xabc0('0x3e')]('_'));var _0x37d60d=_0x3e73ba[_0xabc0('0x3d')](_0x3e73ba[_0xabc0('0x3e')]('_')+0x1);if(_0x486bad===_0x6bb982){_0x2d7210[_0x37d60d]=_0x3f147[_0xabc0('0x3f')];}}});}return _0x2d7210;}function getTicket(_0x3ac461,_0x15740b,_0x254008,_0x4c7d00,_0x55f988,_0x3d8826,_0x35aa66){return new BPromise(function(_0x2e38d4,_0x472c8a){var _0xffa86e;return getAuthToken(_0x15740b,_0x254008,_0x35aa66)['then'](function(_0x16ceaa){if(_0x3d8826['ticketType']===_0xabc0('0x40')){_0xffa86e={'method':_0xabc0('0xd'),'uri':_0x4c7d00+_0xabc0('0x41'),'body':Object[_0xabc0('0x42')]({},{'title':intUtil['getString'](_0x3d8826[_0xabc0('0x43')],_0x55f988,'\x20'),'description':intUtil[_0xabc0('0x44')](_0x3d8826[_0xabc0('0x45')],_0x55f988,'\x0a'),'customerid_contact@odata.bind':_0xabc0('0x46')+_0x3ac461[_0xabc0('0x2e')]+')','ownerid@odata.bind':'/systemusers('+_0x3ac461[_0xabc0('0x21')]+')','caseorigincode':'1'},getCustomFields(_0x3d8826['Fields'],_0x55f988,_0x3d8826[_0xabc0('0x47')])),'headers':{'Authorization':_0xabc0('0x2b')+_0x16ceaa,'OData-Version':_0xabc0('0x1a')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3d8826[_0xabc0('0x47')]==='phonecall'){_0xffa86e={'method':'POST','uri':_0x4c7d00+_0xabc0('0x48'),'body':Object[_0xabc0('0x42')]({},{'subject':intUtil[_0xabc0('0x44')](_0x3d8826[_0xabc0('0x43')],_0x55f988,'\x20'),'phonenumber':String(_0x55f988[_0xabc0('0x28')]),'description':intUtil['getString'](_0x3d8826[_0xabc0('0x45')],_0x55f988,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x3ac461[_0xabc0('0x2e')]+')','ownerid@odata.bind':_0xabc0('0x2a')+_0x3ac461[_0xabc0('0x21')]+')','directioncode':_0x3ac461['callDirection']===_0xabc0('0x49')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xabc0('0x2a')+_0x3ac461['userId']+')','participationtypemask':_0x3ac461[_0xabc0('0x4a')]===_0xabc0('0x49')?0x2:0x1},{'partyid_contact@odata.bind':_0xabc0('0x46')+_0x3ac461[_0xabc0('0x2e')]+')','participationtypemask':_0x3ac461[_0xabc0('0x4a')]===_0xabc0('0x49')?0x1:0x2}]},getCustomFields(_0x3d8826[_0xabc0('0x4b')],_0x55f988,_0x3d8826[_0xabc0('0x47')])),'headers':{'Authorization':'Bearer\x20'+_0x16ceaa,'OData-Version':_0xabc0('0x1a')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xffa86e);})['then'](function(_0x5bc99e){var _0x43b7d8=_0x5bc99e['headers'][_0xabc0('0x2c')];var _0x17f43c=_0x43b7d8[_0xabc0('0x3d')](_0x43b7d8['lastIndexOf']('(')+0x1,_0x43b7d8[_0xabc0('0x2d')](')'));_0x3ac461['ticketId']=_0x17f43c;_0x2e38d4(_0x3ac461);})[_0xabc0('0x14')](function(_0xb58567){_0x472c8a(_0xb58567[_0xabc0('0x18')]);});});}function emit(_0x313c3d,_0x13a74c,_0x2f0e9a,_0x53876b){var _0x34a867={'uri':util[_0xabc0('0x4c')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x313c3d,_0x2f0e9a,_0x53876b)};io['to'](util['format'](_0xabc0('0x4d'),_0x13a74c))['emit'](_0xabc0('0x4e'),_0x34a867);}exports['cs']=function(_0x4ebdf9,_0x3febad,_0x522e9f,_0x297cd2,_0x357263,_0x3e0335,_0x5ad4e3,_0x510f26){var _0x57b0cf={};_0x3e0335['remoteUri']=intUtil[_0xabc0('0x4f')](_0x3e0335[_0xabc0('0xf')]);_0x3e0335[_0xabc0('0x50')]=intUtil[_0xabc0('0x4f')](_0x3e0335[_0xabc0('0x50')]);_0x57b0cf['callDirection']=_0x510f26==='queue'||_0x510f26===_0xabc0('0x51')?_0xabc0('0x49'):_0xabc0('0x27');var _0x1addef=util[_0xabc0('0x4c')](_0xabc0('0x52'),_0x3e0335['remoteUri']);var _0x263c44=util[_0xabc0('0x4c')](_0xabc0('0x53'),_0x3e0335[_0xabc0('0x54')]);var _0x53b9a4=util[_0xabc0('0x4c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3e0335[_0xabc0('0x50')],_0x3febad['uniqueid'],md5(_0x3febad[_0xabc0('0x55')]));if(_0x357263&&_0x357263[_0xabc0('0x56')]){logger[_0xabc0('0x1f')](_0xabc0('0x57'),_0xabc0('0x58'));_0x3febad['recordingURL']=_0x53b9a4;}else if(_0x5ad4e3&&_0x5ad4e3[_0xabc0('0x59')]&&_0x5ad4e3[_0xabc0('0x59')]!==_0xabc0('0x5a')){logger[_0xabc0('0x1f')](_0xabc0('0x5b'),_0xabc0('0x58'));_0x3febad[_0xabc0('0x5c')]=_0x53b9a4;}else{_0x3febad[_0xabc0('0x5c')]='';}return getUser(_0x57b0cf,_0x3e0335,_0x297cd2,_0x263c44,_0x1addef,_0x510f26)['then'](function(_0x567fae){logger[_0xabc0('0x1f')]('['+_0x510f26[_0xabc0('0x16')]()+_0xabc0('0x5d'),_0x567fae[_0xabc0('0x21')]);logger[_0xabc0('0x1f')]('['+_0x510f26[_0xabc0('0x16')]()+_0xabc0('0x5e'),_0x567fae['userEmail']);return getEndUser(_0x567fae,_0x3e0335,_0x263c44,_0x1addef,_0x3febad,_0x510f26);})['then'](function(_0x29d9bd){logger[_0xabc0('0x1f')]('['+_0x510f26[_0xabc0('0x16')]()+_0xabc0('0x5f'),_0x29d9bd[_0xabc0('0x2e')]);logger[_0xabc0('0x1f')]('['+_0x510f26[_0xabc0('0x16')]()+_0xabc0('0x60'),_0x3febad[_0xabc0('0x28')]);return getTicket(_0x29d9bd,_0x3e0335,_0x263c44,_0x1addef,_0x3febad,_0x522e9f,_0x510f26);})[_0xabc0('0x12')](function(_0x29bae4){logger[_0xabc0('0x1f')](util[_0xabc0('0x4c')]('['+_0x510f26[_0xabc0('0x16')]()+_0xabc0('0x61'),_0x522e9f[_0xabc0('0x47')],_0x29bae4[_0xabc0('0x62')]));logger[_0xabc0('0x1f')](util[_0xabc0('0x4c')]('['+_0x510f26[_0xabc0('0x16')]()+_0xabc0('0x63'),_0x510f26));if(_0x510f26!==_0xabc0('0x51')){logger[_0xabc0('0x1f')]('['+_0x510f26[_0xabc0('0x16')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x3e0335[_0xabc0('0xf')],_0x297cd2[_0xabc0('0x64')],_0x522e9f['ticketType'],_0x29bae4[_0xabc0('0x62')]);}})[_0xabc0('0x14')](function(_0x12b3ae){logger[_0xabc0('0x15')]('['+_0x510f26['toUpperCase']()+_0xabc0('0x65'),util[_0xabc0('0x66')](_0x12b3ae,{'showHidden':!![],'depth':null}));});};