Built motion from commit (unavailable).|2.4.5
[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 _0xa7e8=['incidents','assign','getString','Subjects','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','abandoned','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','./util','md5','ioredis','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','GET','Bearer\x20','value','validateEmail','email','userEmail','length','internalemailaddress','info',']\x20Agent\x20found\x20','systemuserid','userId','message','outbound','calleridnum','POST','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1','4.0','toLowerCase','telephone1','contactid',']\x20Enduser\x20Created!','type','nameField','idField','indexOf','content','ticketType'];(function(_0x2295ce,_0x3d77f2){var _0x2897bc=function(_0x26da3d){while(--_0x26da3d){_0x2295ce['push'](_0x2295ce['shift']());}};_0x2897bc(++_0x3d77f2);}(_0xa7e8,0x132));var _0x8a7e=function(_0xe43919,_0x4b615e){_0xe43919=_0xe43919-0x0;var _0x518381=_0xa7e8[_0xe43919];return _0x518381;};'use strict';var _=require(_0x8a7e('0x0'));var BPromise=require(_0x8a7e('0x1'));var rp=require(_0x8a7e('0x2'));var util=require('util');var intUtil=require(_0x8a7e('0x3'));var md5=require(_0x8a7e('0x4'));var Redis=require(_0x8a7e('0x5'));var logger=require('../../../../config/logger')(_0x8a7e('0x6'));var config=require(_0x8a7e('0x7'));config[_0x8a7e('0x8')]=_[_0x8a7e('0x9')](config[_0x8a7e('0x8')],{'host':_0x8a7e('0xa'),'port':0x18eb});var io=require(_0x8a7e('0xb'))(new Redis(config[_0x8a7e('0x8')]));function getAuthToken(_0x2d7b1f,_0x2ccae3,_0x32f78c){var _0x1bb252={'method':'POST','uri':_0x2ccae3,'form':{'client_id':_0x2d7b1f[_0x8a7e('0xc')],'resource':_0x2d7b1f[_0x8a7e('0xd')],'username':_0x2d7b1f[_0x8a7e('0xe')],'password':_0x2d7b1f['password'],'grant_type':_0x8a7e('0xf'),'client_secret':_0x2d7b1f[_0x8a7e('0x10')]},'json':!![]};return rp(_0x1bb252)[_0x8a7e('0x11')](function(_0x4c3f6e){return _0x4c3f6e[_0x8a7e('0x12')];})[_0x8a7e('0x13')](function(_0x6f42d7){logger[_0x8a7e('0x14')]('['+[_0x32f78c[_0x8a7e('0x15')]()]+_0x8a7e('0x16'));return _0x6f42d7['message'];});}function getUser(_0x22e8f6,_0x55a040,_0x3d014a,_0x2db55f,_0x4be92b,_0x4ddf35){return new BPromise(function(_0x47d577,_0x5eb372){return getAuthToken(_0x55a040,_0x2db55f,_0x4ddf35)[_0x8a7e('0x11')](function(_0x101406){var _0x33f965={'method':_0x8a7e('0x17'),'uri':_0x4be92b+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x8a7e('0x18')+_0x101406,'OData-Version':'4.0'},'json':!![]};return rp(_0x33f965);})[_0x8a7e('0x11')](function(_0x1cb1c3){var _0x44ee5d=_0x1cb1c3[_0x8a7e('0x19')];var _0x36d3a8=![];var _0x5146f2=null;if(!_['isNil'](_0x3d014a)){if(intUtil[_0x8a7e('0x1a')](_0x3d014a[_0x8a7e('0x1b')])){_0x22e8f6[_0x8a7e('0x1c')]=_0x3d014a['email'];for(_0x5146f2=0x0;_0x5146f2<_0x44ee5d[_0x8a7e('0x1d')];_0x5146f2++){if(_0x44ee5d[_0x5146f2][_0x8a7e('0x1e')]===_0x3d014a[_0x8a7e('0x1b')]&&!_0x44ee5d[_0x5146f2]['isdisabled']){_0x36d3a8=!![];logger[_0x8a7e('0x1f')]('['+[_0x4ddf35[_0x8a7e('0x15')]()]+_0x8a7e('0x20')+_0x44ee5d[_0x5146f2][_0x8a7e('0x21')]+'!');_0x22e8f6[_0x8a7e('0x22')]=_0x44ee5d[_0x5146f2]['systemuserid'];}}}}if(!_0x36d3a8){logger[_0x8a7e('0x1f')]('['+[_0x4ddf35['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x22e8f6[_0x8a7e('0x1c')]=_0x55a040[_0x8a7e('0xe')];for(_0x5146f2=0x0;_0x5146f2<_0x44ee5d[_0x8a7e('0x1d')];_0x5146f2++){if(_0x44ee5d[_0x5146f2][_0x8a7e('0x1e')]===_0x55a040[_0x8a7e('0xe')]){_0x22e8f6[_0x8a7e('0x22')]=_0x44ee5d[_0x5146f2][_0x8a7e('0x21')];}}}_0x47d577(_0x22e8f6);})[_0x8a7e('0x13')](function(_0x129798){_0x5eb372(_0x129798[_0x8a7e('0x23')]);});});}function createEndUser(_0x6c358a,_0x32ebe6,_0x31f124,_0x4e5d47,_0x3e0b1b,_0x4b1228){return new BPromise(function(_0x33ecf1,_0x4aa85f){return getAuthToken(_0x32ebe6,_0x31f124,_0x4b1228)[_0x8a7e('0x11')](function(_0x2c410c){var _0x4235d4=_0x4b1228['toLowerCase']()===_0x8a7e('0x24')?_0x3e0b1b['destcalleridnum']:_0x3e0b1b[_0x8a7e('0x25')];var _0x3e1bbc={'method':_0x8a7e('0x26'),'uri':_0x4e5d47+_0x8a7e('0x27'),'body':{'telephone1':_0x4235d4,'fullname':_0x4235d4,'firstname':_0x4235d4,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x8a7e('0x28')+_0x6c358a['userId']+')'},'headers':{'Authorization':_0x8a7e('0x18')+_0x2c410c,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x3e1bbc);})['then'](function(_0x23c857){var _0x4ef52c=_0x23c857[_0x8a7e('0x29')][_0x8a7e('0x2a')];var _0x326a55=_0x4ef52c[_0x8a7e('0x2b')](_0x4ef52c[_0x8a7e('0x2c')]('(')+0x1,_0x4ef52c[_0x8a7e('0x2c')](')'));_0x6c358a[_0x8a7e('0x2d')]=_0x326a55;_0x33ecf1(_0x6c358a);})[_0x8a7e('0x13')](function(_0x381a04){_0x4aa85f(_0x381a04['message']);});});}function getEndUser(_0x5017b1,_0x279666,_0x2e44f2,_0x264abb,_0x2eebf0,_0x28819d){return new BPromise(function(_0xfeff66,_0x12db55){return getAuthToken(_0x279666,_0x2e44f2,_0x28819d)['then'](function(_0xe95fa7){var _0x2cc776={'method':_0x8a7e('0x17'),'uri':_0x264abb+_0x8a7e('0x2e'),'headers':{'Authorization':_0x8a7e('0x18')+_0xe95fa7,'If-None-Match':null,'OData-Version':_0x8a7e('0x2f')},'json':!![]};return rp(_0x2cc776);})[_0x8a7e('0x11')](function(_0x24966c){var _0x19508c=null;if(_0x24966c){var _0x4495d9=_0x24966c[_0x8a7e('0x19')];var _0x4665b9=![];for(_0x19508c=0x0;_0x19508c<_0x4495d9[_0x8a7e('0x1d')];_0x19508c++){var _0x2e3bd3=_0x28819d[_0x8a7e('0x30')]()===_0x8a7e('0x24')?_0x2eebf0['destcalleridnum']:_0x2eebf0[_0x8a7e('0x25')];if(_0x4495d9[_0x19508c][_0x8a7e('0x31')]===_0x2e3bd3){_0x4665b9=!![];_0x5017b1[_0x8a7e('0x2d')]=_0x4495d9[_0x19508c][_0x8a7e('0x32')];}}if(_0x4665b9){_0xfeff66(_0x5017b1);}else{return createEndUser(_0x5017b1,_0x279666,_0x2e44f2,_0x264abb,_0x2eebf0,_0x28819d)['then'](function(_0x5c6c1b){logger[_0x8a7e('0x1f')]('['+[_0x28819d[_0x8a7e('0x15')]()]+']\x20Enduser\x20created!',_0x5c6c1b[_0x8a7e('0x2d')]);_0xfeff66(_0x5c6c1b);});}}else{return createEndUser(_0x5017b1,_0x279666,_0x2e44f2,_0x264abb,_0x2eebf0,_0x28819d)[_0x8a7e('0x11')](function(_0x982904){logger[_0x8a7e('0x1f')]('['+[_0x28819d[_0x8a7e('0x15')]()]+_0x8a7e('0x33'),_0x982904[_0x8a7e('0x2d')]);_0xfeff66(_0x982904);});}});});}function getCustomFields(_0xe6a6ea,_0x1b657d,_0x50ac32){var _0x4671df={};if(_0xe6a6ea[_0x8a7e('0x1d')]>0x0){_['forEach'](_0xe6a6ea,function(_0x592aa4){if(_0x592aa4[_0x8a7e('0x34')]==='string'&&_0x592aa4[_0x8a7e('0x35')]&&!_0x592aa4['customField']){var _0x5409e0=_0x592aa4[_0x8a7e('0x36')][_0x8a7e('0x30')]();var _0x459234=_0x5409e0[_0x8a7e('0x2b')](0x0,_0x5409e0[_0x8a7e('0x37')]('_'));var _0xeafa52=_0x5409e0[_0x8a7e('0x2b')](_0x5409e0['indexOf']('_')+0x1);if(_0x459234===_0x50ac32){_0x4671df[_0xeafa52]=_0x592aa4[_0x8a7e('0x38')];}}});}return _0x4671df;}function getTicket(_0x1da65d,_0x50aa0b,_0x20f50a,_0x957631,_0x45703a,_0x255d77,_0x424c43){return new BPromise(function(_0x57c334,_0xfceb71){var _0x1ddaa8;return getAuthToken(_0x50aa0b,_0x20f50a,_0x424c43)['then'](function(_0x133bb6){if(_0x255d77[_0x8a7e('0x39')]==='incident'){_0x1ddaa8={'method':'POST','uri':_0x957631+_0x8a7e('0x3a'),'body':Object[_0x8a7e('0x3b')]({},{'title':intUtil[_0x8a7e('0x3c')](_0x255d77[_0x8a7e('0x3d')],_0x45703a,'\x20'),'description':intUtil[_0x8a7e('0x3c')](_0x255d77['Descriptions'],_0x45703a,'\x0a'),'customerid_contact@odata.bind':_0x8a7e('0x3e')+_0x1da65d[_0x8a7e('0x2d')]+')','ownerid@odata.bind':_0x8a7e('0x28')+_0x1da65d[_0x8a7e('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x255d77[_0x8a7e('0x3f')],_0x45703a,_0x255d77['ticketType'])),'headers':{'Authorization':_0x8a7e('0x18')+_0x133bb6,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x255d77[_0x8a7e('0x39')]===_0x8a7e('0x40')){_0x1ddaa8={'method':'POST','uri':_0x957631+_0x8a7e('0x41'),'body':Object[_0x8a7e('0x3b')]({},{'subject':intUtil[_0x8a7e('0x3c')](_0x255d77[_0x8a7e('0x3d')],_0x45703a,'\x20'),'phonenumber':String(_0x45703a['calleridnum']),'description':intUtil[_0x8a7e('0x3c')](_0x255d77['Descriptions'],_0x45703a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x8a7e('0x3e')+_0x1da65d[_0x8a7e('0x2d')]+')','ownerid@odata.bind':'/systemusers('+_0x1da65d['userId']+')','directioncode':_0x1da65d[_0x8a7e('0x42')]===_0x8a7e('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x8a7e('0x28')+_0x1da65d[_0x8a7e('0x22')]+')','participationtypemask':_0x1da65d[_0x8a7e('0x42')]===_0x8a7e('0x43')?0x2:0x1},{'partyid_contact@odata.bind':_0x8a7e('0x3e')+_0x1da65d[_0x8a7e('0x2d')]+')','participationtypemask':_0x1da65d[_0x8a7e('0x42')]==='queue'?0x1:0x2}]},getCustomFields(_0x255d77['Fields'],_0x45703a,_0x255d77['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x133bb6,'OData-Version':_0x8a7e('0x2f')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1ddaa8);})['then'](function(_0x3bfe66){var _0x193a75=_0x3bfe66['headers'][_0x8a7e('0x2a')];var _0x4f1110=_0x193a75['substring'](_0x193a75[_0x8a7e('0x2c')]('(')+0x1,_0x193a75[_0x8a7e('0x2c')](')'));_0x1da65d['ticketId']=_0x4f1110;_0x57c334(_0x1da65d);})[_0x8a7e('0x13')](function(_0x35186d){_0xfceb71(_0x35186d['message']);});});}function emit(_0x11d8f7,_0xad18b6,_0x3b73da,_0x5d6bfd){var _0x65645f={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x11d8f7,_0x3b73da,_0x5d6bfd)};io['to'](util[_0x8a7e('0x44')](_0x8a7e('0x45'),_0xad18b6))[_0x8a7e('0x46')](_0x8a7e('0x47'),_0x65645f);}exports['cs']=function(_0x444691,_0x5308a1,_0x330b85,_0x2e4bcb,_0x49abed,_0x10f8b1,_0x25f7e3,_0x77b963){var _0x3a94eb={};_0x10f8b1[_0x8a7e('0xd')]=intUtil[_0x8a7e('0x48')](_0x10f8b1['remoteUri']);_0x10f8b1[_0x8a7e('0x49')]=intUtil[_0x8a7e('0x48')](_0x10f8b1['serverUrl']);_0x3a94eb[_0x8a7e('0x42')]=_0x77b963===_0x8a7e('0x43')||_0x77b963===_0x8a7e('0x4a')?_0x8a7e('0x43'):'outbound';var _0x1388a2=util[_0x8a7e('0x44')](_0x8a7e('0x4b'),_0x10f8b1[_0x8a7e('0xd')]);var _0x1595a0=util[_0x8a7e('0x44')]('https://login.microsoftonline.com/%s/oauth2/token',_0x10f8b1['tenantId']);var _0x76717c=util[_0x8a7e('0x44')](_0x8a7e('0x4c'),_0x10f8b1[_0x8a7e('0x49')],_0x5308a1[_0x8a7e('0x4d')],md5(_0x5308a1[_0x8a7e('0x4d')]));if(_0x49abed&&_0x49abed['monitor_format']){logger[_0x8a7e('0x1f')](_0x8a7e('0x4e'),'Recording\x20is\x20enabled!');_0x5308a1['recordingURL']=_0x76717c;}else if(_0x25f7e3&&_0x25f7e3['recordingFormat']&&_0x25f7e3[_0x8a7e('0x4f')]!==_0x8a7e('0x50')){logger[_0x8a7e('0x1f')](_0x8a7e('0x51'),_0x8a7e('0x52'));_0x5308a1['recordingURL']=_0x76717c;}else{_0x5308a1['recordingURL']='';}return getUser(_0x3a94eb,_0x10f8b1,_0x2e4bcb,_0x1595a0,_0x1388a2,_0x77b963)['then'](function(_0x1a4e32){logger[_0x8a7e('0x1f')]('['+_0x77b963[_0x8a7e('0x15')]()+']\x20The\x20User\x20ID\x20is:',_0x1a4e32[_0x8a7e('0x22')]);logger[_0x8a7e('0x1f')]('['+_0x77b963['toUpperCase']()+_0x8a7e('0x53'),_0x1a4e32[_0x8a7e('0x1c')]);return getEndUser(_0x1a4e32,_0x10f8b1,_0x1595a0,_0x1388a2,_0x5308a1,_0x77b963);})[_0x8a7e('0x11')](function(_0x52b6b3){logger[_0x8a7e('0x1f')]('['+_0x77b963['toUpperCase']()+_0x8a7e('0x54'),_0x52b6b3['enduserId']);logger[_0x8a7e('0x1f')]('['+_0x77b963[_0x8a7e('0x15')]()+_0x8a7e('0x55'),_0x5308a1[_0x8a7e('0x25')]);return getTicket(_0x52b6b3,_0x10f8b1,_0x1595a0,_0x1388a2,_0x5308a1,_0x330b85,_0x77b963);})[_0x8a7e('0x11')](function(_0x23987e){logger[_0x8a7e('0x1f')](util[_0x8a7e('0x44')]('['+_0x77b963[_0x8a7e('0x15')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x330b85[_0x8a7e('0x39')],_0x23987e['ticketId']));logger[_0x8a7e('0x1f')](util['format']('['+_0x77b963[_0x8a7e('0x15')]()+_0x8a7e('0x56'),_0x77b963));if(_0x77b963!=='abandoned'){logger[_0x8a7e('0x1f')]('['+_0x77b963[_0x8a7e('0x15')]()+']',_0x8a7e('0x57'));emit(_0x10f8b1[_0x8a7e('0xd')],_0x2e4bcb['name'],_0x330b85[_0x8a7e('0x39')],_0x23987e[_0x8a7e('0x58')]);}})[_0x8a7e('0x13')](function(_0xa0cc78){logger['error']('['+_0x77b963['toUpperCase']()+_0x8a7e('0x59'),util[_0x8a7e('0x5a')](_0xa0cc78,{'showHidden':!![],'depth':null}));});};