Built motion from commit (unavailable).|2.5.23
[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 _0x8d0a=[']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','POST','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','isNil','validateEmail','email','length','isdisabled','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','username','toLowerCase','outbound','destcalleridnum','calleridnum','/systemusers(','4.0','substring','lastIndexOf','enduserId','contacts?$select=telephone1','telephone1','contactid',']\x20Enduser\x20created!','forEach','string','type','nameField','customField','idField','indexOf','ticketType','incident','assign','Subjects','getString','Descriptions','/contacts(','phonecalls','queue','callDirection','headers','odata-entityid','format','user:%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:'];(function(_0x2e9cd7,_0x1d2e1d){var _0x15bb64=function(_0x3702ce){while(--_0x3702ce){_0x2e9cd7['push'](_0x2e9cd7['shift']());}};_0x15bb64(++_0x1d2e1d);}(_0x8d0a,0x65));var _0xa8d0=function(_0x2d0eda,_0x3ab785){_0x2d0eda=_0x2d0eda-0x0;var _0xcf9894=_0x8d0a[_0x2d0eda];return _0xcf9894;};'use strict';var _=require(_0xa8d0('0x0'));var BPromise=require('bluebird');var rp=require(_0xa8d0('0x1'));var util=require(_0xa8d0('0x2'));var intUtil=require(_0xa8d0('0x3'));var md5=require(_0xa8d0('0x4'));var Redis=require(_0xa8d0('0x5'));var logger=require(_0xa8d0('0x6'))(_0xa8d0('0x7'));var config=require(_0xa8d0('0x8'));config[_0xa8d0('0x9')]=_['defaults'](config[_0xa8d0('0x9')],{'host':_0xa8d0('0xa'),'port':0x18eb});var io=require(_0xa8d0('0xb'))(new Redis(config[_0xa8d0('0x9')]));function getAuthToken(_0x3ee6b4,_0x55ffc0,_0x508238){var _0x3f5ed2={'method':_0xa8d0('0xc'),'uri':_0x55ffc0,'form':{'client_id':_0x3ee6b4['clientId'],'resource':_0x3ee6b4['remoteUri'],'username':_0x3ee6b4['username'],'password':_0x3ee6b4[_0xa8d0('0xd')],'grant_type':'password','client_secret':_0x3ee6b4[_0xa8d0('0xe')]},'json':!![]};return rp(_0x3f5ed2)[_0xa8d0('0xf')](function(_0x44541e){return _0x44541e[_0xa8d0('0x10')];})[_0xa8d0('0x11')](function(_0x320bfc){logger[_0xa8d0('0x12')]('['+[_0x508238[_0xa8d0('0x13')]()]+_0xa8d0('0x14'));return _0x320bfc[_0xa8d0('0x15')];});}function getUser(_0x224564,_0x538b39,_0x757540,_0x478f66,_0x5a9193,_0x32ea3e){return new BPromise(function(_0x2816d1,_0x523ec0){return getAuthToken(_0x538b39,_0x478f66,_0x32ea3e)[_0xa8d0('0xf')](function(_0x459e9d){var _0x2946d5={'method':_0xa8d0('0x16'),'uri':_0x5a9193+_0xa8d0('0x17'),'headers':{'Authorization':_0xa8d0('0x18')+_0x459e9d,'OData-Version':'4.0'},'json':!![]};return rp(_0x2946d5);})[_0xa8d0('0xf')](function(_0x470b4a){var _0x5cf619=_0x470b4a[_0xa8d0('0x19')];var _0x1e325a=![];var _0x53d168=null;if(!_[_0xa8d0('0x1a')](_0x757540)){if(intUtil[_0xa8d0('0x1b')](_0x757540['email'])){_0x224564['userEmail']=_0x757540[_0xa8d0('0x1c')];for(_0x53d168=0x0;_0x53d168<_0x5cf619[_0xa8d0('0x1d')];_0x53d168++){if(_0x5cf619[_0x53d168]['internalemailaddress']===_0x757540[_0xa8d0('0x1c')]&&!_0x5cf619[_0x53d168][_0xa8d0('0x1e')]){_0x1e325a=!![];logger[_0xa8d0('0x1f')]('['+[_0x32ea3e['toUpperCase']()]+_0xa8d0('0x20')+_0x5cf619[_0x53d168]['systemuserid']+'!');_0x224564[_0xa8d0('0x21')]=_0x5cf619[_0x53d168][_0xa8d0('0x22')];}}}}if(!_0x1e325a){logger[_0xa8d0('0x1f')]('['+[_0x32ea3e[_0xa8d0('0x13')]()]+_0xa8d0('0x23'));_0x224564[_0xa8d0('0x24')]=_0x538b39[_0xa8d0('0x25')];for(_0x53d168=0x0;_0x53d168<_0x5cf619['length'];_0x53d168++){if(_0x5cf619[_0x53d168]['internalemailaddress']===_0x538b39[_0xa8d0('0x25')]){_0x224564['userId']=_0x5cf619[_0x53d168][_0xa8d0('0x22')];}}}_0x2816d1(_0x224564);})[_0xa8d0('0x11')](function(_0x400ac1){_0x523ec0(_0x400ac1[_0xa8d0('0x15')]);});});}function createEndUser(_0x17bdfc,_0x5b9560,_0x3eab24,_0x1a396a,_0x26c3cc,_0x2f692d){return new BPromise(function(_0x59904b,_0x1adc0d){return getAuthToken(_0x5b9560,_0x3eab24,_0x2f692d)[_0xa8d0('0xf')](function(_0x28ba73){var _0x5127cb=_0x2f692d[_0xa8d0('0x26')]()===_0xa8d0('0x27')?_0x26c3cc[_0xa8d0('0x28')]:_0x26c3cc[_0xa8d0('0x29')];var _0x243cc3={'method':_0xa8d0('0xc'),'uri':_0x1a396a+'contacts','body':{'telephone1':_0x5127cb,'fullname':_0x5127cb,'firstname':_0x5127cb,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xa8d0('0x2a')+_0x17bdfc[_0xa8d0('0x21')]+')'},'headers':{'Authorization':_0xa8d0('0x18')+_0x28ba73,'OData-Version':_0xa8d0('0x2b')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x243cc3);})['then'](function(_0x2d3725){var _0x385e05=_0x2d3725['headers']['odata-entityid'];var _0x55c66d=_0x385e05[_0xa8d0('0x2c')](_0x385e05[_0xa8d0('0x2d')]('(')+0x1,_0x385e05[_0xa8d0('0x2d')](')'));_0x17bdfc[_0xa8d0('0x2e')]=_0x55c66d;_0x59904b(_0x17bdfc);})[_0xa8d0('0x11')](function(_0x165560){_0x1adc0d(_0x165560[_0xa8d0('0x15')]);});});}function getEndUser(_0x42a711,_0x3bfce8,_0x1ebdf3,_0x116f95,_0x493e76,_0x4b0790){return new BPromise(function(_0x36e516,_0x56481f){return getAuthToken(_0x3bfce8,_0x1ebdf3,_0x4b0790)[_0xa8d0('0xf')](function(_0x405421){var _0x3ef3e1={'method':_0xa8d0('0x16'),'uri':_0x116f95+_0xa8d0('0x2f'),'headers':{'Authorization':'Bearer\x20'+_0x405421,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3ef3e1);})[_0xa8d0('0xf')](function(_0x358444){var _0x165fab=null;if(_0x358444){var _0x1352ed=_0x358444[_0xa8d0('0x19')];var _0x2fd537=![];for(_0x165fab=0x0;_0x165fab<_0x1352ed['length'];_0x165fab++){var _0x12fff6=_0x4b0790[_0xa8d0('0x26')]()===_0xa8d0('0x27')?_0x493e76['destcalleridnum']:_0x493e76[_0xa8d0('0x29')];if(_0x1352ed[_0x165fab][_0xa8d0('0x30')]===_0x12fff6){_0x2fd537=!![];_0x42a711[_0xa8d0('0x2e')]=_0x1352ed[_0x165fab][_0xa8d0('0x31')];}}if(_0x2fd537){_0x36e516(_0x42a711);}else{return createEndUser(_0x42a711,_0x3bfce8,_0x1ebdf3,_0x116f95,_0x493e76,_0x4b0790)[_0xa8d0('0xf')](function(_0x1030b9){logger[_0xa8d0('0x1f')]('['+[_0x4b0790['toUpperCase']()]+_0xa8d0('0x32'),_0x1030b9[_0xa8d0('0x2e')]);_0x36e516(_0x1030b9);});}}else{return createEndUser(_0x42a711,_0x3bfce8,_0x1ebdf3,_0x116f95,_0x493e76,_0x4b0790)[_0xa8d0('0xf')](function(_0x32dc17){logger[_0xa8d0('0x1f')]('['+[_0x4b0790[_0xa8d0('0x13')]()]+']\x20Enduser\x20Created!',_0x32dc17[_0xa8d0('0x2e')]);_0x36e516(_0x32dc17);});}});});}function getCustomFields(_0x377949,_0x22a03d,_0x11cd2f){var _0xeba90c={};if(_0x377949[_0xa8d0('0x1d')]>0x0){_[_0xa8d0('0x33')](_0x377949,function(_0x10dc8b){if(_['includes']([_0xa8d0('0x34'),'picklist'],_0x10dc8b[_0xa8d0('0x35')])&&_0x10dc8b[_0xa8d0('0x36')]&&!_0x10dc8b[_0xa8d0('0x37')]){var _0x16dc20=_0x10dc8b[_0xa8d0('0x38')][_0xa8d0('0x26')]();var _0x1fac4f=_0x16dc20[_0xa8d0('0x2c')](0x0,_0x16dc20[_0xa8d0('0x39')]('_'));var _0x39ca80=_0x16dc20[_0xa8d0('0x2c')](_0x16dc20[_0xa8d0('0x39')]('_')+0x1);if(_0x1fac4f===_0x11cd2f){_0xeba90c[_0x39ca80]=_0x10dc8b['content'];}}});}return _0xeba90c;}function getTicket(_0x185626,_0x168479,_0x39798a,_0x271203,_0x122b58,_0x215de6,_0x51c6cf){return new BPromise(function(_0x306192,_0x299ebb){var _0x2d00a6;return getAuthToken(_0x168479,_0x39798a,_0x51c6cf)[_0xa8d0('0xf')](function(_0x3215ff){if(_0x215de6[_0xa8d0('0x3a')]===_0xa8d0('0x3b')){_0x2d00a6={'method':_0xa8d0('0xc'),'uri':_0x271203+'incidents','body':Object[_0xa8d0('0x3c')]({},{'title':intUtil['getString'](_0x215de6[_0xa8d0('0x3d')],_0x122b58,'\x20'),'description':intUtil[_0xa8d0('0x3e')](_0x215de6[_0xa8d0('0x3f')],_0x122b58,'\x0a'),'customerid_contact@odata.bind':_0xa8d0('0x40')+_0x185626['enduserId']+')','ownerid@odata.bind':_0xa8d0('0x2a')+_0x185626[_0xa8d0('0x21')]+')','caseorigincode':'1'},getCustomFields(_0x215de6['Fields'],_0x122b58,_0x215de6[_0xa8d0('0x3a')])),'headers':{'Authorization':_0xa8d0('0x18')+_0x3215ff,'OData-Version':_0xa8d0('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x215de6['ticketType']==='phonecall'){_0x2d00a6={'method':_0xa8d0('0xc'),'uri':_0x271203+_0xa8d0('0x41'),'body':Object[_0xa8d0('0x3c')]({},{'subject':intUtil[_0xa8d0('0x3e')](_0x215de6['Subjects'],_0x122b58,'\x20'),'phonenumber':String(_0x122b58[_0xa8d0('0x29')]),'description':intUtil[_0xa8d0('0x3e')](_0x215de6[_0xa8d0('0x3f')],_0x122b58,'\x0a'),'regardingobjectid_contact@odata.bind':_0xa8d0('0x40')+_0x185626[_0xa8d0('0x2e')]+')','ownerid@odata.bind':'/systemusers('+_0x185626[_0xa8d0('0x21')]+')','directioncode':_0x185626['callDirection']===_0xa8d0('0x42')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xa8d0('0x2a')+_0x185626[_0xa8d0('0x21')]+')','participationtypemask':_0x185626['callDirection']===_0xa8d0('0x42')?0x2:0x1},{'partyid_contact@odata.bind':_0xa8d0('0x40')+_0x185626[_0xa8d0('0x2e')]+')','participationtypemask':_0x185626[_0xa8d0('0x43')]===_0xa8d0('0x42')?0x1:0x2}]},getCustomFields(_0x215de6['Fields'],_0x122b58,_0x215de6[_0xa8d0('0x3a')])),'headers':{'Authorization':_0xa8d0('0x18')+_0x3215ff,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x2d00a6);})[_0xa8d0('0xf')](function(_0x38cf43){var _0x20b617=_0x38cf43[_0xa8d0('0x44')][_0xa8d0('0x45')];var _0xa32308=_0x20b617[_0xa8d0('0x2c')](_0x20b617['lastIndexOf']('(')+0x1,_0x20b617[_0xa8d0('0x2d')](')'));_0x185626['ticketId']=_0xa32308;_0x306192(_0x185626);})['catch'](function(_0x1cb44a){_0x299ebb(_0x1cb44a[_0xa8d0('0x15')]);});});}function emit(_0x4d70a4,_0x3dfb90,_0x280458,_0x238a3f){var _0x5bc28c={'uri':util[_0xa8d0('0x46')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x4d70a4,_0x280458,_0x238a3f)};io['to'](util[_0xa8d0('0x46')](_0xa8d0('0x47'),_0x3dfb90))[_0xa8d0('0x48')](_0xa8d0('0x49'),_0x5bc28c);}exports['cs']=function(_0x3f8449,_0x60be0b,_0x5007cb,_0xb189b2,_0x37e6fb,_0x1c5e12,_0x4b25b4,_0x3efa7f){var _0x4192da={};_0x1c5e12[_0xa8d0('0x4a')]=intUtil[_0xa8d0('0x4b')](_0x1c5e12[_0xa8d0('0x4a')]);_0x1c5e12[_0xa8d0('0x4c')]=intUtil[_0xa8d0('0x4b')](_0x1c5e12[_0xa8d0('0x4c')]);_0x4192da[_0xa8d0('0x43')]=_0x3efa7f===_0xa8d0('0x42')||_0x3efa7f===_0xa8d0('0x4d')?_0xa8d0('0x42'):_0xa8d0('0x27');var _0x590b87=util[_0xa8d0('0x46')]('%s/api/data/v9.0/',_0x1c5e12[_0xa8d0('0x4a')]);var _0x525cec=util['format'](_0xa8d0('0x4e'),_0x1c5e12[_0xa8d0('0x4f')]);var _0xe990f9=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1c5e12[_0xa8d0('0x4c')],_0x60be0b[_0xa8d0('0x50')],md5(_0x60be0b[_0xa8d0('0x50')]));if(_0x37e6fb&&_0x37e6fb['monitor_format']){logger[_0xa8d0('0x1f')](_0xa8d0('0x51'),_0xa8d0('0x52'));_0x60be0b[_0xa8d0('0x53')]=_0xe990f9;}else if(_0x4b25b4&&_0x4b25b4[_0xa8d0('0x54')]&&_0x4b25b4[_0xa8d0('0x54')]!=='none'){logger[_0xa8d0('0x1f')](_0xa8d0('0x55'),_0xa8d0('0x52'));_0x60be0b[_0xa8d0('0x53')]=_0xe990f9;}else{_0x60be0b[_0xa8d0('0x53')]='';}return getUser(_0x4192da,_0x1c5e12,_0xb189b2,_0x525cec,_0x590b87,_0x3efa7f)[_0xa8d0('0xf')](function(_0x3504ac){logger[_0xa8d0('0x1f')]('['+_0x3efa7f[_0xa8d0('0x13')]()+_0xa8d0('0x56'),_0x3504ac['userId']);logger[_0xa8d0('0x1f')]('['+_0x3efa7f[_0xa8d0('0x13')]()+']\x20The\x20User\x20email\x20is:',_0x3504ac[_0xa8d0('0x24')]);return getEndUser(_0x3504ac,_0x1c5e12,_0x525cec,_0x590b87,_0x60be0b,_0x3efa7f);})['then'](function(_0x2e49fc){logger[_0xa8d0('0x1f')]('['+_0x3efa7f[_0xa8d0('0x13')]()+_0xa8d0('0x57'),_0x2e49fc['enduserId']);logger['info']('['+_0x3efa7f[_0xa8d0('0x13')]()+_0xa8d0('0x58'),_0x60be0b[_0xa8d0('0x29')]);return getTicket(_0x2e49fc,_0x1c5e12,_0x525cec,_0x590b87,_0x60be0b,_0x5007cb,_0x3efa7f);})[_0xa8d0('0xf')](function(_0x1f40c8){logger[_0xa8d0('0x1f')](util[_0xa8d0('0x46')]('['+_0x3efa7f[_0xa8d0('0x13')]()+_0xa8d0('0x59'),_0x5007cb['ticketType'],_0x1f40c8[_0xa8d0('0x5a')]));logger[_0xa8d0('0x1f')](util[_0xa8d0('0x46')]('['+_0x3efa7f[_0xa8d0('0x13')]()+']\x20Call\x20direction:\x20%s',_0x3efa7f));if(_0x3efa7f!==_0xa8d0('0x4d')){logger[_0xa8d0('0x1f')]('['+_0x3efa7f[_0xa8d0('0x13')]()+']',_0xa8d0('0x5b'));emit(_0x1c5e12['remoteUri'],_0xb189b2[_0xa8d0('0x5c')],_0x5007cb[_0xa8d0('0x3a')],_0x1f40c8[_0xa8d0('0x5a')]);}})['catch'](function(_0x14cacd){logger[_0xa8d0('0x12')]('['+_0x3efa7f[_0xa8d0('0x13')]()+_0xa8d0('0x5d'),util[_0xa8d0('0x5e')](_0x14cacd,{'showHidden':!![],'depth':null}));});};