f432ddbd3f7a9bd2d462458d5b059d7f60e994d0
[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 _0xb8e6=['substring','lastIndexOf','enduserId','contacts?$select=telephone1','value','destcalleridnum','telephone1','contactid','info',']\x20Enduser\x20Created!','forEach','type','string','nameField','customField','idField','indexOf','content','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','ticketType','phonecalls','queue','callDirection','headers','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','trigger:browser:url','stripTrailingSlash','remoteUri','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','POST','clientId','username','password','clientSecret','access_token','catch','error','toUpperCase','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','then','validateEmail','email','userEmail','length','internalemailaddress','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','message','toLowerCase','outbound','calleridnum','contacts','/systemusers(','4.0','odata-entityid'];(function(_0x1714f4,_0x4959d6){var _0x364a17=function(_0x284a9f){while(--_0x284a9f){_0x1714f4['push'](_0x1714f4['shift']());}};_0x364a17(++_0x4959d6);}(_0xb8e6,0xfc));var _0x6b8e=function(_0x309a5e,_0x1ec246){_0x309a5e=_0x309a5e-0x0;var _0x1d21f1=_0xb8e6[_0x309a5e];return _0x1d21f1;};'use strict';var _=require(_0x6b8e('0x0'));var BPromise=require(_0x6b8e('0x1'));var rp=require(_0x6b8e('0x2'));var util=require('util');var intUtil=require('./util');var md5=require(_0x6b8e('0x3'));var Redis=require(_0x6b8e('0x4'));var logger=require(_0x6b8e('0x5'))(_0x6b8e('0x6'));var config=require(_0x6b8e('0x7'));config[_0x6b8e('0x8')]=_[_0x6b8e('0x9')](config[_0x6b8e('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x6b8e('0xa'))(new Redis(config[_0x6b8e('0x8')]));function getAuthToken(_0x222cf2,_0x5ea983,_0x4073e4){var _0x43719f={'method':_0x6b8e('0xb'),'uri':_0x5ea983,'form':{'client_id':_0x222cf2[_0x6b8e('0xc')],'resource':_0x222cf2['remoteUri'],'username':_0x222cf2[_0x6b8e('0xd')],'password':_0x222cf2[_0x6b8e('0xe')],'grant_type':_0x6b8e('0xe'),'client_secret':_0x222cf2[_0x6b8e('0xf')]},'json':!![]};return rp(_0x43719f)['then'](function(_0x108cff){return _0x108cff[_0x6b8e('0x10')];})[_0x6b8e('0x11')](function(_0x3b3714){logger[_0x6b8e('0x12')]('['+[_0x4073e4[_0x6b8e('0x13')]()]+']\x20Wrong\x20credentials!');return _0x3b3714['message'];});}function getUser(_0x194112,_0x1fc3db,_0x32d6e9,_0x15cbe4,_0x3f11df,_0x4dda90){return new BPromise(function(_0x534f23,_0x1e9c8c){return getAuthToken(_0x1fc3db,_0x15cbe4,_0x4dda90)['then'](function(_0x5b660b){var _0xd8834a={'method':'GET','uri':_0x3f11df+_0x6b8e('0x14'),'headers':{'Authorization':_0x6b8e('0x15')+_0x5b660b,'OData-Version':'4.0'},'json':!![]};return rp(_0xd8834a);})[_0x6b8e('0x16')](function(_0x4e5834){var _0x4c6297=_0x4e5834['value'];var _0x47bac4=![];var _0x414ab7=null;if(!_['isNil'](_0x32d6e9)){if(intUtil[_0x6b8e('0x17')](_0x32d6e9[_0x6b8e('0x18')])){_0x194112[_0x6b8e('0x19')]=_0x32d6e9[_0x6b8e('0x18')];for(_0x414ab7=0x0;_0x414ab7<_0x4c6297[_0x6b8e('0x1a')];_0x414ab7++){if(_0x4c6297[_0x414ab7][_0x6b8e('0x1b')]===_0x32d6e9[_0x6b8e('0x18')]&&!_0x4c6297[_0x414ab7]['isdisabled']){_0x47bac4=!![];logger['info']('['+[_0x4dda90[_0x6b8e('0x13')]()]+']\x20Agent\x20found\x20'+_0x4c6297[_0x414ab7][_0x6b8e('0x1c')]+'!');_0x194112[_0x6b8e('0x1d')]=_0x4c6297[_0x414ab7]['systemuserid'];}}}}if(!_0x47bac4){logger['info']('['+[_0x4dda90[_0x6b8e('0x13')]()]+_0x6b8e('0x1e'));_0x194112[_0x6b8e('0x19')]=_0x1fc3db[_0x6b8e('0xd')];for(_0x414ab7=0x0;_0x414ab7<_0x4c6297[_0x6b8e('0x1a')];_0x414ab7++){if(_0x4c6297[_0x414ab7][_0x6b8e('0x1b')]===_0x1fc3db['username']){_0x194112[_0x6b8e('0x1d')]=_0x4c6297[_0x414ab7]['systemuserid'];}}}_0x534f23(_0x194112);})[_0x6b8e('0x11')](function(_0x120fbc){_0x1e9c8c(_0x120fbc[_0x6b8e('0x1f')]);});});}function createEndUser(_0x3768e7,_0x4ef383,_0x2f515b,_0x1bae98,_0x23e29d,_0x302ced){return new BPromise(function(_0x30839c,_0xf8b5a4){return getAuthToken(_0x4ef383,_0x2f515b,_0x302ced)[_0x6b8e('0x16')](function(_0x25f504){var _0x54ada3=_0x302ced[_0x6b8e('0x20')]()===_0x6b8e('0x21')?_0x23e29d['destcalleridnum']:_0x23e29d[_0x6b8e('0x22')];var _0x38f1b2={'method':'POST','uri':_0x1bae98+_0x6b8e('0x23'),'body':{'telephone1':_0x54ada3,'fullname':_0x54ada3,'firstname':_0x54ada3,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x6b8e('0x24')+_0x3768e7[_0x6b8e('0x1d')]+')'},'headers':{'Authorization':_0x6b8e('0x15')+_0x25f504,'OData-Version':_0x6b8e('0x25')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x38f1b2);})[_0x6b8e('0x16')](function(_0x3edaed){var _0x4d974a=_0x3edaed['headers'][_0x6b8e('0x26')];var _0x302656=_0x4d974a[_0x6b8e('0x27')](_0x4d974a[_0x6b8e('0x28')]('(')+0x1,_0x4d974a['lastIndexOf'](')'));_0x3768e7[_0x6b8e('0x29')]=_0x302656;_0x30839c(_0x3768e7);})['catch'](function(_0x4a94bd){_0xf8b5a4(_0x4a94bd['message']);});});}function getEndUser(_0x33ac9d,_0x9c23cc,_0x1c2f98,_0xf7b7c3,_0x36c35c,_0x3efe06){return new BPromise(function(_0x4acb7c,_0x17a3cb){return getAuthToken(_0x9c23cc,_0x1c2f98,_0x3efe06)[_0x6b8e('0x16')](function(_0x1ff8c2){var _0xc0fd26={'method':'GET','uri':_0xf7b7c3+_0x6b8e('0x2a'),'headers':{'Authorization':'Bearer\x20'+_0x1ff8c2,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xc0fd26);})[_0x6b8e('0x16')](function(_0x453ed7){var _0x535de9=null;if(_0x453ed7){var _0x50adf2=_0x453ed7[_0x6b8e('0x2b')];var _0x173dae=![];for(_0x535de9=0x0;_0x535de9<_0x50adf2[_0x6b8e('0x1a')];_0x535de9++){var _0x2e8822=_0x3efe06[_0x6b8e('0x20')]()===_0x6b8e('0x21')?_0x36c35c[_0x6b8e('0x2c')]:_0x36c35c[_0x6b8e('0x22')];if(_0x50adf2[_0x535de9][_0x6b8e('0x2d')]===_0x2e8822){_0x173dae=!![];_0x33ac9d['enduserId']=_0x50adf2[_0x535de9][_0x6b8e('0x2e')];}}if(_0x173dae){_0x4acb7c(_0x33ac9d);}else{return createEndUser(_0x33ac9d,_0x9c23cc,_0x1c2f98,_0xf7b7c3,_0x36c35c,_0x3efe06)[_0x6b8e('0x16')](function(_0x4ae46c){logger[_0x6b8e('0x2f')]('['+[_0x3efe06[_0x6b8e('0x13')]()]+']\x20Enduser\x20created!',_0x4ae46c[_0x6b8e('0x29')]);_0x4acb7c(_0x4ae46c);});}}else{return createEndUser(_0x33ac9d,_0x9c23cc,_0x1c2f98,_0xf7b7c3,_0x36c35c,_0x3efe06)[_0x6b8e('0x16')](function(_0x4ad16d){logger[_0x6b8e('0x2f')]('['+[_0x3efe06[_0x6b8e('0x13')]()]+_0x6b8e('0x30'),_0x4ad16d[_0x6b8e('0x29')]);_0x4acb7c(_0x4ad16d);});}});});}function getCustomFields(_0x5c9a3e,_0x417685,_0x4e8303){var _0x156566={};if(_0x5c9a3e['length']>0x0){_[_0x6b8e('0x31')](_0x5c9a3e,function(_0x1bc97b){if(_0x1bc97b[_0x6b8e('0x32')]===_0x6b8e('0x33')&&_0x1bc97b[_0x6b8e('0x34')]&&!_0x1bc97b[_0x6b8e('0x35')]){var _0x5a62c5=_0x1bc97b[_0x6b8e('0x36')][_0x6b8e('0x20')]();var _0x1d0ed5=_0x5a62c5[_0x6b8e('0x27')](0x0,_0x5a62c5[_0x6b8e('0x37')]('_'));var _0x3575b8=_0x5a62c5[_0x6b8e('0x27')](_0x5a62c5[_0x6b8e('0x37')]('_')+0x1);if(_0x1d0ed5===_0x4e8303){_0x156566[_0x3575b8]=_0x1bc97b[_0x6b8e('0x38')];}}});}return _0x156566;}function getTicket(_0x4018f5,_0x3d0b51,_0x198e5e,_0x419112,_0xdcd56e,_0x250208,_0x477ea5){return new BPromise(function(_0x4e69c5,_0x468beb){var _0x1b7a10;return getAuthToken(_0x3d0b51,_0x198e5e,_0x477ea5)[_0x6b8e('0x16')](function(_0x36c97d){if(_0x250208['ticketType']===_0x6b8e('0x39')){_0x1b7a10={'method':_0x6b8e('0xb'),'uri':_0x419112+_0x6b8e('0x3a'),'body':Object[_0x6b8e('0x3b')]({},{'title':intUtil[_0x6b8e('0x3c')](_0x250208[_0x6b8e('0x3d')],_0xdcd56e,'\x20'),'description':intUtil[_0x6b8e('0x3c')](_0x250208[_0x6b8e('0x3e')],_0xdcd56e,'\x0a'),'customerid_contact@odata.bind':_0x6b8e('0x3f')+_0x4018f5[_0x6b8e('0x29')]+')','ownerid@odata.bind':'/systemusers('+_0x4018f5[_0x6b8e('0x1d')]+')','caseorigincode':'1'},getCustomFields(_0x250208[_0x6b8e('0x40')],_0xdcd56e,_0x250208[_0x6b8e('0x41')])),'headers':{'Authorization':_0x6b8e('0x15')+_0x36c97d,'OData-Version':_0x6b8e('0x25')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x250208[_0x6b8e('0x41')]==='phonecall'){_0x1b7a10={'method':_0x6b8e('0xb'),'uri':_0x419112+_0x6b8e('0x42'),'body':Object['assign']({},{'subject':intUtil[_0x6b8e('0x3c')](_0x250208[_0x6b8e('0x3d')],_0xdcd56e,'\x20'),'phonenumber':String(_0xdcd56e['calleridnum']),'description':intUtil[_0x6b8e('0x3c')](_0x250208[_0x6b8e('0x3e')],_0xdcd56e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x6b8e('0x3f')+_0x4018f5[_0x6b8e('0x29')]+')','ownerid@odata.bind':_0x6b8e('0x24')+_0x4018f5[_0x6b8e('0x1d')]+')','directioncode':_0x4018f5['callDirection']===_0x6b8e('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x6b8e('0x24')+_0x4018f5[_0x6b8e('0x1d')]+')','participationtypemask':_0x4018f5['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x6b8e('0x3f')+_0x4018f5[_0x6b8e('0x29')]+')','participationtypemask':_0x4018f5[_0x6b8e('0x44')]===_0x6b8e('0x43')?0x1:0x2}]},getCustomFields(_0x250208['Fields'],_0xdcd56e,_0x250208['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x36c97d,'OData-Version':_0x6b8e('0x25')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1b7a10);})['then'](function(_0x25d44c){var _0xb1deb2=_0x25d44c[_0x6b8e('0x45')][_0x6b8e('0x26')];var _0x26eb12=_0xb1deb2[_0x6b8e('0x27')](_0xb1deb2[_0x6b8e('0x28')]('(')+0x1,_0xb1deb2[_0x6b8e('0x28')](')'));_0x4018f5[_0x6b8e('0x46')]=_0x26eb12;_0x4e69c5(_0x4018f5);})[_0x6b8e('0x11')](function(_0x4a93af){_0x468beb(_0x4a93af['message']);});});}function emit(_0x56611b,_0x2bd10f,_0x580ae7,_0x5ea9db){var _0x41491e={'uri':util['format'](_0x6b8e('0x47'),_0x56611b,_0x580ae7,_0x5ea9db)};io['to'](util[_0x6b8e('0x48')](_0x6b8e('0x49'),_0x2bd10f))['emit'](_0x6b8e('0x4a'),_0x41491e);}exports['cs']=function(_0x19840b,_0x5b7c61,_0x266435,_0x50d2a7,_0x2172c3,_0x364380,_0x2c598b,_0x2e866b){var _0x49af56={};_0x364380['remoteUri']=intUtil[_0x6b8e('0x4b')](_0x364380[_0x6b8e('0x4c')]);_0x364380[_0x6b8e('0x4d')]=intUtil[_0x6b8e('0x4b')](_0x364380['serverUrl']);_0x49af56[_0x6b8e('0x44')]=_0x2e866b===_0x6b8e('0x43')||_0x2e866b===_0x6b8e('0x4e')?_0x6b8e('0x43'):'outbound';var _0x2a72ce=util['format'](_0x6b8e('0x4f'),_0x364380['remoteUri']);var _0x3a0aa4=util[_0x6b8e('0x48')](_0x6b8e('0x50'),_0x364380['tenantId']);var _0x1ecdc3=util[_0x6b8e('0x48')](_0x6b8e('0x51'),_0x364380['serverUrl'],_0x5b7c61[_0x6b8e('0x52')],md5(_0x5b7c61[_0x6b8e('0x52')]));if(_0x2172c3&&_0x2172c3[_0x6b8e('0x53')]){logger[_0x6b8e('0x2f')](_0x6b8e('0x54'),_0x6b8e('0x55'));_0x5b7c61[_0x6b8e('0x56')]=_0x1ecdc3;}else if(_0x2c598b&&_0x2c598b[_0x6b8e('0x57')]&&_0x2c598b['recordingFormat']!==_0x6b8e('0x58')){logger[_0x6b8e('0x2f')]('[OUTBOUND]',_0x6b8e('0x55'));_0x5b7c61[_0x6b8e('0x56')]=_0x1ecdc3;}else{_0x5b7c61[_0x6b8e('0x56')]='';}return getUser(_0x49af56,_0x364380,_0x50d2a7,_0x3a0aa4,_0x2a72ce,_0x2e866b)[_0x6b8e('0x16')](function(_0x55a02){logger['info']('['+_0x2e866b['toUpperCase']()+_0x6b8e('0x59'),_0x55a02[_0x6b8e('0x1d')]);logger['info']('['+_0x2e866b[_0x6b8e('0x13')]()+_0x6b8e('0x5a'),_0x55a02['userEmail']);return getEndUser(_0x55a02,_0x364380,_0x3a0aa4,_0x2a72ce,_0x5b7c61,_0x2e866b);})['then'](function(_0x5147b7){logger['info']('['+_0x2e866b[_0x6b8e('0x13')]()+_0x6b8e('0x5b'),_0x5147b7[_0x6b8e('0x29')]);logger[_0x6b8e('0x2f')]('['+_0x2e866b['toUpperCase']()+_0x6b8e('0x5c'),_0x5b7c61[_0x6b8e('0x22')]);return getTicket(_0x5147b7,_0x364380,_0x3a0aa4,_0x2a72ce,_0x5b7c61,_0x266435,_0x2e866b);})[_0x6b8e('0x16')](function(_0x4ebf4d){logger[_0x6b8e('0x2f')](util[_0x6b8e('0x48')]('['+_0x2e866b[_0x6b8e('0x13')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x266435[_0x6b8e('0x41')],_0x4ebf4d[_0x6b8e('0x46')]));logger[_0x6b8e('0x2f')](util['format']('['+_0x2e866b[_0x6b8e('0x13')]()+_0x6b8e('0x5d'),_0x2e866b));if(_0x2e866b!==_0x6b8e('0x4e')){logger[_0x6b8e('0x2f')]('['+_0x2e866b[_0x6b8e('0x13')]()+']',_0x6b8e('0x5e'));emit(_0x364380[_0x6b8e('0x4c')],_0x50d2a7[_0x6b8e('0x5f')],_0x266435[_0x6b8e('0x41')],_0x4ebf4d['ticketId']);}})[_0x6b8e('0x11')](function(_0x3bbf0e){logger['error']('['+_0x2e866b[_0x6b8e('0x13')]()+_0x6b8e('0x60'),util['inspect'](_0x3bbf0e,{'showHidden':!![],'depth':null}));});};