Built motion from commit (unavailable).|2.5.16
[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 _0x1c1b=['lastIndexOf','enduserId','contacts?$select=telephone1','calleridnum','telephone1','contactid','info',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','string','customField','idField','indexOf','content','incident','incidents','assign','getString','Subjects','Descriptions','Fields','ticketType','phonecalls','callDirection','queue','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','util','./util','md5','ioredis','dynamics365','redis','localhost','socket.io-emitter','clientId','remoteUri','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','value','isNil','validateEmail','userEmail','email','length','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','userId','username','toLowerCase','outbound','destcalleridnum','POST','contacts','/systemusers(','Bearer\x20','odata-entityid','substring'];(function(_0x2ee493,_0x93aa97){var _0x49a010=function(_0x2ca57d){while(--_0x2ca57d){_0x2ee493['push'](_0x2ee493['shift']());}};_0x49a010(++_0x93aa97);}(_0x1c1b,0x1b8));var _0xb1c1=function(_0x5d28f6,_0x1b8f1a){_0x5d28f6=_0x5d28f6-0x0;var _0x138852=_0x1c1b[_0x5d28f6];return _0x138852;};'use strict';var _=require(_0xb1c1('0x0'));var BPromise=require(_0xb1c1('0x1'));var rp=require(_0xb1c1('0x2'));var util=require(_0xb1c1('0x3'));var intUtil=require(_0xb1c1('0x4'));var md5=require(_0xb1c1('0x5'));var Redis=require(_0xb1c1('0x6'));var logger=require('../../../../config/logger')(_0xb1c1('0x7'));var config=require('../../../../config/environment');config['redis']=_['defaults'](config[_0xb1c1('0x8')],{'host':_0xb1c1('0x9'),'port':0x18eb});var io=require(_0xb1c1('0xa'))(new Redis(config[_0xb1c1('0x8')]));function getAuthToken(_0x41da4d,_0x17dd54,_0x20c091){var _0x129bb0={'method':'POST','uri':_0x17dd54,'form':{'client_id':_0x41da4d[_0xb1c1('0xb')],'resource':_0x41da4d[_0xb1c1('0xc')],'username':_0x41da4d['username'],'password':_0x41da4d[_0xb1c1('0xd')],'grant_type':'password','client_secret':_0x41da4d[_0xb1c1('0xe')]},'json':!![]};return rp(_0x129bb0)[_0xb1c1('0xf')](function(_0x2b7af2){return _0x2b7af2[_0xb1c1('0x10')];})[_0xb1c1('0x11')](function(_0x573b13){logger['error']('['+[_0x20c091[_0xb1c1('0x12')]()]+_0xb1c1('0x13'));return _0x573b13[_0xb1c1('0x14')];});}function getUser(_0x3afda2,_0x16c3aa,_0xaa77a6,_0x7bacf1,_0x21207d,_0x4c5706){return new BPromise(function(_0x10239d,_0x8585af){return getAuthToken(_0x16c3aa,_0x7bacf1,_0x4c5706)['then'](function(_0x356d0b){var _0x1f857e={'method':_0xb1c1('0x15'),'uri':_0x21207d+_0xb1c1('0x16'),'headers':{'Authorization':'Bearer\x20'+_0x356d0b,'OData-Version':_0xb1c1('0x17')},'json':!![]};return rp(_0x1f857e);})[_0xb1c1('0xf')](function(_0x2d9885){var _0x33bd82=_0x2d9885[_0xb1c1('0x18')];var _0x1b9aa4=![];var _0x540a2e=null;if(!_[_0xb1c1('0x19')](_0xaa77a6)){if(intUtil[_0xb1c1('0x1a')](_0xaa77a6['email'])){_0x3afda2[_0xb1c1('0x1b')]=_0xaa77a6[_0xb1c1('0x1c')];for(_0x540a2e=0x0;_0x540a2e<_0x33bd82[_0xb1c1('0x1d')];_0x540a2e++){if(_0x33bd82[_0x540a2e][_0xb1c1('0x1e')]===_0xaa77a6[_0xb1c1('0x1c')]&&!_0x33bd82[_0x540a2e][_0xb1c1('0x1f')]){_0x1b9aa4=!![];logger['info']('['+[_0x4c5706[_0xb1c1('0x12')]()]+_0xb1c1('0x20')+_0x33bd82[_0x540a2e][_0xb1c1('0x21')]+'!');_0x3afda2[_0xb1c1('0x22')]=_0x33bd82[_0x540a2e][_0xb1c1('0x21')];}}}}if(!_0x1b9aa4){logger['info']('['+[_0x4c5706['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x3afda2[_0xb1c1('0x1b')]=_0x16c3aa[_0xb1c1('0x23')];for(_0x540a2e=0x0;_0x540a2e<_0x33bd82[_0xb1c1('0x1d')];_0x540a2e++){if(_0x33bd82[_0x540a2e][_0xb1c1('0x1e')]===_0x16c3aa[_0xb1c1('0x23')]){_0x3afda2[_0xb1c1('0x22')]=_0x33bd82[_0x540a2e]['systemuserid'];}}}_0x10239d(_0x3afda2);})[_0xb1c1('0x11')](function(_0x5bd0e3){_0x8585af(_0x5bd0e3['message']);});});}function createEndUser(_0x21b856,_0x369199,_0x5e5c6a,_0x136cfe,_0x475821,_0x2438ac){return new BPromise(function(_0x379936,_0x1bfed2){return getAuthToken(_0x369199,_0x5e5c6a,_0x2438ac)[_0xb1c1('0xf')](function(_0x247ac0){var _0x31969a=_0x2438ac[_0xb1c1('0x24')]()===_0xb1c1('0x25')?_0x475821[_0xb1c1('0x26')]:_0x475821['calleridnum'];var _0x389f11={'method':_0xb1c1('0x27'),'uri':_0x136cfe+_0xb1c1('0x28'),'body':{'telephone1':_0x31969a,'fullname':_0x31969a,'firstname':_0x31969a,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xb1c1('0x29')+_0x21b856[_0xb1c1('0x22')]+')'},'headers':{'Authorization':_0xb1c1('0x2a')+_0x247ac0,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x389f11);})[_0xb1c1('0xf')](function(_0x5922b8){var _0x474779=_0x5922b8['headers'][_0xb1c1('0x2b')];var _0x3b8b3f=_0x474779[_0xb1c1('0x2c')](_0x474779[_0xb1c1('0x2d')]('(')+0x1,_0x474779[_0xb1c1('0x2d')](')'));_0x21b856[_0xb1c1('0x2e')]=_0x3b8b3f;_0x379936(_0x21b856);})[_0xb1c1('0x11')](function(_0x2dd0bf){_0x1bfed2(_0x2dd0bf[_0xb1c1('0x14')]);});});}function getEndUser(_0x2de340,_0x452a01,_0x3dcadd,_0x357eec,_0x53fe31,_0x3710a8){return new BPromise(function(_0x320b4b,_0x218d38){return getAuthToken(_0x452a01,_0x3dcadd,_0x3710a8)[_0xb1c1('0xf')](function(_0x44a6f4){var _0x513c35={'method':_0xb1c1('0x15'),'uri':_0x357eec+_0xb1c1('0x2f'),'headers':{'Authorization':_0xb1c1('0x2a')+_0x44a6f4,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x513c35);})['then'](function(_0x1f8519){var _0x38819d=null;if(_0x1f8519){var _0x47fb24=_0x1f8519[_0xb1c1('0x18')];var _0x34988d=![];for(_0x38819d=0x0;_0x38819d<_0x47fb24[_0xb1c1('0x1d')];_0x38819d++){var _0x32c44b=_0x3710a8[_0xb1c1('0x24')]()==='outbound'?_0x53fe31[_0xb1c1('0x26')]:_0x53fe31[_0xb1c1('0x30')];if(_0x47fb24[_0x38819d][_0xb1c1('0x31')]===_0x32c44b){_0x34988d=!![];_0x2de340[_0xb1c1('0x2e')]=_0x47fb24[_0x38819d][_0xb1c1('0x32')];}}if(_0x34988d){_0x320b4b(_0x2de340);}else{return createEndUser(_0x2de340,_0x452a01,_0x3dcadd,_0x357eec,_0x53fe31,_0x3710a8)[_0xb1c1('0xf')](function(_0x265fe7){logger[_0xb1c1('0x33')]('['+[_0x3710a8[_0xb1c1('0x12')]()]+_0xb1c1('0x34'),_0x265fe7['enduserId']);_0x320b4b(_0x265fe7);});}}else{return createEndUser(_0x2de340,_0x452a01,_0x3dcadd,_0x357eec,_0x53fe31,_0x3710a8)['then'](function(_0x1aad5e){logger[_0xb1c1('0x33')]('['+[_0x3710a8['toUpperCase']()]+_0xb1c1('0x35'),_0x1aad5e['enduserId']);_0x320b4b(_0x1aad5e);});}});});}function getCustomFields(_0x5d4917,_0x947cc3,_0x48f4b3){var _0xc357f3={};if(_0x5d4917[_0xb1c1('0x1d')]>0x0){_[_0xb1c1('0x36')](_0x5d4917,function(_0x4da2b6){if(_0x4da2b6['type']===_0xb1c1('0x37')&&_0x4da2b6['nameField']&&!_0x4da2b6[_0xb1c1('0x38')]){var _0x44d9af=_0x4da2b6[_0xb1c1('0x39')][_0xb1c1('0x24')]();var _0xf946e4=_0x44d9af[_0xb1c1('0x2c')](0x0,_0x44d9af[_0xb1c1('0x3a')]('_'));var _0x385a21=_0x44d9af[_0xb1c1('0x2c')](_0x44d9af[_0xb1c1('0x3a')]('_')+0x1);if(_0xf946e4===_0x48f4b3){_0xc357f3[_0x385a21]=_0x4da2b6[_0xb1c1('0x3b')];}}});}return _0xc357f3;}function getTicket(_0x12df49,_0x54837f,_0x2b01fd,_0x2bbeaa,_0x5e7056,_0x3088cf,_0x22fea3){return new BPromise(function(_0x1d5522,_0x5cd19c){var _0x403502;return getAuthToken(_0x54837f,_0x2b01fd,_0x22fea3)[_0xb1c1('0xf')](function(_0x5a2206){if(_0x3088cf['ticketType']===_0xb1c1('0x3c')){_0x403502={'method':_0xb1c1('0x27'),'uri':_0x2bbeaa+_0xb1c1('0x3d'),'body':Object[_0xb1c1('0x3e')]({},{'title':intUtil[_0xb1c1('0x3f')](_0x3088cf[_0xb1c1('0x40')],_0x5e7056,'\x20'),'description':intUtil[_0xb1c1('0x3f')](_0x3088cf[_0xb1c1('0x41')],_0x5e7056,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x12df49['enduserId']+')','ownerid@odata.bind':_0xb1c1('0x29')+_0x12df49[_0xb1c1('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x3088cf[_0xb1c1('0x42')],_0x5e7056,_0x3088cf[_0xb1c1('0x43')])),'headers':{'Authorization':_0xb1c1('0x2a')+_0x5a2206,'OData-Version':_0xb1c1('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3088cf[_0xb1c1('0x43')]==='phonecall'){_0x403502={'method':_0xb1c1('0x27'),'uri':_0x2bbeaa+_0xb1c1('0x44'),'body':Object[_0xb1c1('0x3e')]({},{'subject':intUtil['getString'](_0x3088cf[_0xb1c1('0x40')],_0x5e7056,'\x20'),'phonenumber':String(_0x5e7056[_0xb1c1('0x30')]),'description':intUtil['getString'](_0x3088cf['Descriptions'],_0x5e7056,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x12df49[_0xb1c1('0x2e')]+')','ownerid@odata.bind':_0xb1c1('0x29')+_0x12df49[_0xb1c1('0x22')]+')','directioncode':_0x12df49[_0xb1c1('0x45')]===_0xb1c1('0x46')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xb1c1('0x29')+_0x12df49['userId']+')','participationtypemask':_0x12df49[_0xb1c1('0x45')]===_0xb1c1('0x46')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x12df49[_0xb1c1('0x2e')]+')','participationtypemask':_0x12df49['callDirection']===_0xb1c1('0x46')?0x1:0x2}]},getCustomFields(_0x3088cf[_0xb1c1('0x42')],_0x5e7056,_0x3088cf[_0xb1c1('0x43')])),'headers':{'Authorization':_0xb1c1('0x2a')+_0x5a2206,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x403502);})[_0xb1c1('0xf')](function(_0x41beab){var _0x43d3bf=_0x41beab['headers'][_0xb1c1('0x2b')];var _0x284016=_0x43d3bf[_0xb1c1('0x2c')](_0x43d3bf['lastIndexOf']('(')+0x1,_0x43d3bf[_0xb1c1('0x2d')](')'));_0x12df49['ticketId']=_0x284016;_0x1d5522(_0x12df49);})[_0xb1c1('0x11')](function(_0x176b85){_0x5cd19c(_0x176b85[_0xb1c1('0x14')]);});});}function emit(_0x44b575,_0x3bd8d6,_0xd3312b,_0x35e49f){var _0x42dace={'uri':util[_0xb1c1('0x47')](_0xb1c1('0x48'),_0x44b575,_0xd3312b,_0x35e49f)};io['to'](util[_0xb1c1('0x47')](_0xb1c1('0x49'),_0x3bd8d6))[_0xb1c1('0x4a')]('trigger:browser:url',_0x42dace);}exports['cs']=function(_0x49cb2d,_0x33828d,_0x4cc169,_0x886436,_0x4fdefd,_0x213b99,_0x28f5ea,_0x8ac80e){var _0x1411aa={};_0x213b99['remoteUri']=intUtil[_0xb1c1('0x4b')](_0x213b99['remoteUri']);_0x213b99['serverUrl']=intUtil[_0xb1c1('0x4b')](_0x213b99[_0xb1c1('0x4c')]);_0x1411aa[_0xb1c1('0x45')]=_0x8ac80e===_0xb1c1('0x46')||_0x8ac80e===_0xb1c1('0x4d')?_0xb1c1('0x46'):_0xb1c1('0x25');var _0xa96065=util[_0xb1c1('0x47')](_0xb1c1('0x4e'),_0x213b99[_0xb1c1('0xc')]);var _0xedbdd0=util[_0xb1c1('0x47')](_0xb1c1('0x4f'),_0x213b99['tenantId']);var _0x1be6ba=util[_0xb1c1('0x47')](_0xb1c1('0x50'),_0x213b99['serverUrl'],_0x33828d['uniqueid'],md5(_0x33828d['uniqueid']));if(_0x4fdefd&&_0x4fdefd[_0xb1c1('0x51')]){logger[_0xb1c1('0x33')](_0xb1c1('0x52'),_0xb1c1('0x53'));_0x33828d[_0xb1c1('0x54')]=_0x1be6ba;}else if(_0x28f5ea&&_0x28f5ea['recordingFormat']&&_0x28f5ea[_0xb1c1('0x55')]!==_0xb1c1('0x56')){logger[_0xb1c1('0x33')](_0xb1c1('0x57'),_0xb1c1('0x53'));_0x33828d[_0xb1c1('0x54')]=_0x1be6ba;}else{_0x33828d[_0xb1c1('0x54')]='';}return getUser(_0x1411aa,_0x213b99,_0x886436,_0xedbdd0,_0xa96065,_0x8ac80e)[_0xb1c1('0xf')](function(_0x552bcf){logger[_0xb1c1('0x33')]('['+_0x8ac80e[_0xb1c1('0x12')]()+_0xb1c1('0x58'),_0x552bcf[_0xb1c1('0x22')]);logger['info']('['+_0x8ac80e[_0xb1c1('0x12')]()+']\x20The\x20User\x20email\x20is:',_0x552bcf['userEmail']);return getEndUser(_0x552bcf,_0x213b99,_0xedbdd0,_0xa96065,_0x33828d,_0x8ac80e);})[_0xb1c1('0xf')](function(_0x28325f){logger[_0xb1c1('0x33')]('['+_0x8ac80e[_0xb1c1('0x12')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x28325f[_0xb1c1('0x2e')]);logger[_0xb1c1('0x33')]('['+_0x8ac80e['toUpperCase']()+_0xb1c1('0x59'),_0x33828d[_0xb1c1('0x30')]);return getTicket(_0x28325f,_0x213b99,_0xedbdd0,_0xa96065,_0x33828d,_0x4cc169,_0x8ac80e);})[_0xb1c1('0xf')](function(_0x536515){logger[_0xb1c1('0x33')](util[_0xb1c1('0x47')]('['+_0x8ac80e['toUpperCase']()+_0xb1c1('0x5a'),_0x4cc169[_0xb1c1('0x43')],_0x536515['ticketId']));logger[_0xb1c1('0x33')](util[_0xb1c1('0x47')]('['+_0x8ac80e[_0xb1c1('0x12')]()+_0xb1c1('0x5b'),_0x8ac80e));if(_0x8ac80e!==_0xb1c1('0x4d')){logger[_0xb1c1('0x33')]('['+_0x8ac80e[_0xb1c1('0x12')]()+']',_0xb1c1('0x5c'));emit(_0x213b99['remoteUri'],_0x886436[_0xb1c1('0x5d')],_0x4cc169[_0xb1c1('0x43')],_0x536515['ticketId']);}})['catch'](function(_0x432bf1){logger[_0xb1c1('0x5e')]('['+_0x8ac80e['toUpperCase']()+_0xb1c1('0x5f'),util[_0xb1c1('0x60')](_0x432bf1,{'showHidden':!![],'depth':null}));});};