Built motion from commit c738b9ac.|2.6.25
[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 _0x94f9=['nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','nameField','customField','idField','indexOf','ticketType','incident','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','headers','odata-entityid','ticketId','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','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','md5','ioredis','../../../../config/logger','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','resolve','data5','POST','clientId','username','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','userId','toLowerCase','outbound','destcalleridnum','calleridnum','/systemusers(','body','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b'];(function(_0x36b4a7,_0x36abb4){var _0x354c07=function(_0x28f724){while(--_0x28f724){_0x36b4a7['push'](_0x36b4a7['shift']());}};_0x354c07(++_0x36abb4);}(_0x94f9,0x11e));var _0x994f=function(_0x32179c,_0x32fb68){_0x32179c=_0x32179c-0x0;var _0xad3766=_0x94f9[_0x32179c];return _0xad3766;};'use strict';var _=require(_0x994f('0x0'));var rp=require(_0x994f('0x1'));var util=require('util');var intUtil=require(_0x994f('0x2'));var md5=require(_0x994f('0x3'));var Redis=require(_0x994f('0x4'));var logger=require(_0x994f('0x5'))('dynamics365');var config=require(_0x994f('0x6'));config[_0x994f('0x7')]=_[_0x994f('0x8')](config[_0x994f('0x7')],{'host':_0x994f('0x9'),'port':0x18eb});var io=require(_0x994f('0xa'))(new Redis(config[_0x994f('0x7')]));function getAuthToken(_0x3a85b7,_0x44323e,_0x26f819){if(_0x3a85b7[_0x994f('0xb')]){_0x3a85b7[_0x994f('0xc')]=_0x3a85b7[_0x994f('0xd')][_0x994f('0xe')];_0x3a85b7[_0x994f('0xf')]=_0x3a85b7[_0x994f('0xd')][_0x994f('0x10')];return Promise[_0x994f('0x11')](_0x3a85b7[_0x994f('0xd')][_0x994f('0x12')]);}var _0x3f5125={'method':_0x994f('0x13'),'uri':_0x44323e,'form':{'client_id':_0x3a85b7[_0x994f('0x14')],'resource':_0x3a85b7[_0x994f('0xc')],'username':_0x3a85b7[_0x994f('0x15')],'password':_0x3a85b7[_0x994f('0x16')],'grant_type':_0x994f('0x16'),'client_secret':_0x3a85b7[_0x994f('0x17')]},'json':!![]};return rp(_0x3f5125)['then'](function(_0x11d0ea){return _0x11d0ea[_0x994f('0x18')];})[_0x994f('0x19')](function(_0x28d8c9){logger[_0x994f('0x1a')]('['+[_0x26f819[_0x994f('0x1b')]()]+_0x994f('0x1c'));return _0x28d8c9[_0x994f('0x1d')];});}function getUser(_0xfca4c8,_0xdde05e,_0x65945,_0x1c73d6,_0x3e527f,_0x2e6210){return new Promise(function(_0x1059d9,_0x351922){return getAuthToken(_0xdde05e,_0x1c73d6,_0x2e6210)[_0x994f('0x1e')](function(_0x9f2c33){var _0x4f27ff={'method':_0x994f('0x1f'),'uri':_0x3e527f+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x994f('0x20')+_0x9f2c33,'OData-Version':_0x994f('0x21')},'json':!![]};return rp(_0x4f27ff);})['then'](function(_0x1d3550){var _0x24e321=_0x1d3550[_0x994f('0x22')];var _0x50d94d=![];var _0x33305a=null;if(!_[_0x994f('0x23')](_0x65945)){if(intUtil[_0x994f('0x24')](_0x65945[_0x994f('0x25')])){_0xfca4c8[_0x994f('0x26')]=_0x65945[_0x994f('0x25')];for(_0x33305a=0x0;_0x33305a<_0x24e321['length'];_0x33305a++){if(_0x24e321[_0x33305a][_0x994f('0x27')]===_0x65945['email']&&!_0x24e321[_0x33305a][_0x994f('0x28')]){_0x50d94d=!![];logger[_0x994f('0x29')]('['+[_0x2e6210['toUpperCase']()]+_0x994f('0x2a')+_0x24e321[_0x33305a][_0x994f('0x2b')]+'!');_0xfca4c8['userId']=_0x24e321[_0x33305a][_0x994f('0x2b')];}}}}if(!_0x50d94d){logger['info']('['+[_0x2e6210[_0x994f('0x1b')]()]+_0x994f('0x2c'));_0xfca4c8[_0x994f('0x26')]=_0xdde05e[_0x994f('0x15')];for(_0x33305a=0x0;_0x33305a<_0x24e321[_0x994f('0x2d')];_0x33305a++){if(_0x24e321[_0x33305a]['internalemailaddress']===_0xdde05e[_0x994f('0x15')]){_0xfca4c8[_0x994f('0x2e')]=_0x24e321[_0x33305a][_0x994f('0x2b')];}}}_0x1059d9(_0xfca4c8);})[_0x994f('0x19')](function(_0x42661e){_0x351922(_0x42661e[_0x994f('0x1d')]);});});}function createEndUser(_0x28ff81,_0x52fa78,_0x4832eb,_0x4841a6,_0x1d70d1,_0x425dd9,_0x3ff7fe){return new Promise(function(_0x5453f7,_0x519ed3){return getAuthToken(_0x52fa78,_0x4832eb,_0x425dd9)[_0x994f('0x1e')](function(_0x3a476b){var _0x5c4cca=_0x425dd9[_0x994f('0x2f')]()===_0x994f('0x30')?_0x1d70d1[_0x994f('0x31')]:_0x1d70d1[_0x994f('0x32')];var _0x5159c7={'method':_0x994f('0x13'),'uri':_0x4841a6+'contacts','body':{'fullname':_0x5c4cca,'firstname':_0x5c4cca,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x994f('0x33')+_0x28ff81[_0x994f('0x2e')]+')'},'headers':{'Authorization':_0x994f('0x20')+_0x3a476b,'OData-Version':_0x994f('0x21')},'json':!![],'resolveWithFullResponse':!![]};_0x5159c7[_0x994f('0x34')][_0x3ff7fe]=_0x5c4cca;return rp(_0x5159c7);})[_0x994f('0x1e')](function(_0x57ff48){var _0x45e93a=_0x57ff48['headers']['odata-entityid'];var _0x1b2257=_0x45e93a[_0x994f('0x35')](_0x45e93a['lastIndexOf']('(')+0x1,_0x45e93a[_0x994f('0x36')](')'));_0x28ff81[_0x994f('0x37')]=_0x1b2257;_0x5453f7(_0x28ff81);})[_0x994f('0x19')](function(_0x59b34c){_0x519ed3(_0x59b34c[_0x994f('0x1d')]);});});}function getEndUser(_0x40c407,_0xfa2afe,_0xe73f6a,_0x2ea3e2,_0x47f2dd,_0x1a1038,_0x333447,_0x1d4f93){var _0x287494=_0x1a1038['toLowerCase']()==='outbound'?_0x47f2dd[_0x994f('0x31')]:_0x47f2dd['calleridnum'];return getAuthToken(_0xfa2afe,_0xe73f6a,_0x1a1038)[_0x994f('0x1e')](function(_0x1cc894){_0x1d4f93=_0x1d4f93?_0x1d4f93:_0x994f('0x38');var _0x5cced9={'method':'GET','uri':_0x2ea3e2+_0x994f('0x39')+_0x1d4f93+_0x994f('0x3a')+_0x1d4f93+_0x994f('0x3b')+_0x287494[_0x994f('0x3c')]('+',_0x994f('0x3d'))+'\x27','headers':{'Authorization':_0x994f('0x20')+_0x1cc894,'If-None-Match':null,'OData-Version':_0x994f('0x21')},'json':!![]};return rp(_0x5cced9);})['then'](function(_0x339159){var _0x9497cb=![];if(!_0x339159)return _0x9497cb;var _0x55c437=_0x339159['value'];for(var _0x3c89a1=0x0;_0x3c89a1<_0x55c437[_0x994f('0x2d')];_0x3c89a1++){if(_0x55c437[_0x3c89a1][_0x1d4f93]===_0x287494){_0x9497cb=!![];_0x40c407['enduserId']=_0x55c437[_0x3c89a1]['contactid'];}}return _0x9497cb;})['then'](function(_0x528653){if(_0x528653)return _0x40c407;if(_0x333447===_0x994f('0x3e')){logger['info']('['+[_0x1a1038[_0x994f('0x1b')]()]+_0x994f('0x3f'));return _0x40c407;}return createEndUser(_0x40c407,_0xfa2afe,_0xe73f6a,_0x2ea3e2,_0x47f2dd,_0x1a1038,_0x1d4f93)[_0x994f('0x1e')](function(_0x3f7ae6){logger[_0x994f('0x29')]('['+[_0x1a1038[_0x994f('0x1b')]()]+_0x994f('0x40'),_0x3f7ae6[_0x994f('0x37')]);return _0x3f7ae6;});});}function getCustomFields(_0x3eda90,_0x46ebfc,_0x47989c){var _0xebce57={};if(_0x3eda90[_0x994f('0x2d')]>0x0){_[_0x994f('0x41')](_0x3eda90,function(_0x214ab8){if(_[_0x994f('0x42')]([_0x994f('0x43'),_0x994f('0x44')],_0x214ab8[_0x994f('0x45')])&&_0x214ab8[_0x994f('0x46')]&&!_0x214ab8[_0x994f('0x47')]){var _0x1cdb5e=_0x214ab8[_0x994f('0x48')]['toLowerCase']();var _0x6427dc=_0x1cdb5e[_0x994f('0x35')](0x0,_0x1cdb5e[_0x994f('0x49')]('_'));var _0x531a96=_0x1cdb5e[_0x994f('0x35')](_0x1cdb5e[_0x994f('0x49')]('_')+0x1);if(_0x6427dc===_0x47989c){_0xebce57[_0x531a96]=_0x214ab8['content'];}}});}return _0xebce57;}function getTicket(_0x3d7db3,_0x30e3f3,_0x120874,_0x330997,_0x53dca4,_0x9ca968,_0xb38a77){return new Promise(function(_0x5dc37d,_0x1b10e1){var _0x300d7b;return getAuthToken(_0x30e3f3,_0x120874,_0xb38a77)[_0x994f('0x1e')](function(_0x5c86d4){if(_0x9ca968[_0x994f('0x4a')]===_0x994f('0x4b')){_0x300d7b={'method':_0x994f('0x13'),'uri':_0x330997+'incidents','body':Object[_0x994f('0x4c')]({},{'title':intUtil[_0x994f('0x4d')](_0x9ca968[_0x994f('0x4e')],_0x53dca4,'\x20'),'description':intUtil['getString'](_0x9ca968[_0x994f('0x4f')],_0x53dca4,'\x0a'),'customerid_contact@odata.bind':_0x3d7db3[_0x994f('0x37')]?_0x994f('0x50')+_0x3d7db3[_0x994f('0x37')]+')':undefined,'ownerid@odata.bind':_0x994f('0x33')+_0x3d7db3[_0x994f('0x2e')]+')','caseorigincode':'1'},getCustomFields(_0x9ca968[_0x994f('0x51')],_0x53dca4,_0x9ca968[_0x994f('0x4a')])),'headers':{'Authorization':_0x994f('0x20')+_0x5c86d4,'OData-Version':_0x994f('0x21')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x9ca968[_0x994f('0x4a')]===_0x994f('0x52')){var _0x1ea1ef=_0x3d7db3[_0x994f('0x37')]?[{'partyid_systemuser@odata.bind':_0x994f('0x33')+_0x3d7db3[_0x994f('0x2e')]+')','participationtypemask':_0x3d7db3[_0x994f('0x53')]===_0x994f('0x54')?0x2:0x1},{'partyid_contact@odata.bind':_0x994f('0x50')+_0x3d7db3[_0x994f('0x37')]+')','participationtypemask':_0x3d7db3[_0x994f('0x53')]===_0x994f('0x54')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x994f('0x33')+_0x3d7db3[_0x994f('0x2e')]+')','participationtypemask':_0x3d7db3[_0x994f('0x53')]===_0x994f('0x54')?0x2:0x1}];_0x300d7b={'method':_0x994f('0x13'),'uri':_0x330997+_0x994f('0x55'),'body':Object['assign']({},{'subject':intUtil[_0x994f('0x4d')](_0x9ca968['Subjects'],_0x53dca4,'\x20'),'phonenumber':String(_0x53dca4[_0x994f('0x32')]),'description':intUtil['getString'](_0x9ca968[_0x994f('0x4f')],_0x53dca4,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3d7db3[_0x994f('0x37')]?_0x994f('0x50')+_0x3d7db3[_0x994f('0x37')]+')':undefined,'ownerid@odata.bind':_0x994f('0x33')+_0x3d7db3[_0x994f('0x2e')]+')','directioncode':_0x3d7db3[_0x994f('0x53')]===_0x994f('0x54')?![]:!![],'phonecall_activity_parties':_0x1ea1ef},getCustomFields(_0x9ca968[_0x994f('0x51')],_0x53dca4,_0x9ca968[_0x994f('0x4a')])),'headers':{'Authorization':'Bearer\x20'+_0x5c86d4,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x300d7b);})[_0x994f('0x1e')](function(_0x1eea8c){var _0x3cd590=_0x1eea8c[_0x994f('0x56')][_0x994f('0x57')];var _0x1fa425=_0x3cd590[_0x994f('0x35')](_0x3cd590[_0x994f('0x36')]('(')+0x1,_0x3cd590['lastIndexOf'](')'));_0x3d7db3[_0x994f('0x58')]=_0x1fa425;_0x5dc37d(_0x3d7db3);})['catch'](function(_0x300310){_0x1b10e1(_0x300310[_0x994f('0x1d')]);});});}function emit(_0x22a8e7,_0x26370b,_0x49abd4,_0x2c7fc2){var _0x428268={'uri':util[_0x994f('0x59')](_0x994f('0x5a'),_0x22a8e7,_0x49abd4,_0x2c7fc2)};io['to'](util['format'](_0x994f('0x5b'),_0x26370b))[_0x994f('0x5c')]('trigger:browser:url',_0x428268);}exports['cs']=function(_0x402547,_0x414b97,_0x55003d,_0x2fe3ab,_0x12046f,_0x4f5a4b,_0x48e4bb,_0x1ad457){var _0x3a4e00={};_0x4f5a4b[_0x994f('0xc')]=_0x4f5a4b[_0x994f('0xb')]?intUtil['stripTrailingSlash'](_0x4f5a4b[_0x994f('0xd')][_0x994f('0xe')]):intUtil[_0x994f('0x5d')](_0x4f5a4b['remoteUri']);_0x4f5a4b[_0x994f('0x5e')]=intUtil[_0x994f('0x5d')](_0x4f5a4b[_0x994f('0x5e')]);_0x3a4e00[_0x994f('0x53')]=_0x1ad457===_0x994f('0x54')||_0x1ad457===_0x994f('0x5f')?_0x994f('0x54'):'outbound';var _0x2ed0d1=_0x4f5a4b[_0x994f('0xb')]?util[_0x994f('0x59')](_0x994f('0x60'),_0x4f5a4b[_0x994f('0xd')][_0x994f('0xe')]):util[_0x994f('0x59')](_0x994f('0x60'),_0x4f5a4b[_0x994f('0xc')]);var _0x57ed72=util[_0x994f('0x59')](_0x994f('0x61'),_0x4f5a4b[_0x994f('0xf')]);var _0x431fff=util[_0x994f('0x59')](_0x994f('0x62'),_0x4f5a4b[_0x994f('0x5e')],_0x414b97['uniqueid'],md5(_0x414b97[_0x994f('0x63')]));if(_0x12046f&&_0x12046f[_0x994f('0x64')]){logger[_0x994f('0x29')](_0x994f('0x65'),_0x994f('0x66'));_0x414b97[_0x994f('0x67')]=_0x431fff;}else if(_0x48e4bb&&_0x48e4bb[_0x994f('0x68')]&&_0x48e4bb[_0x994f('0x68')]!=='none'){logger[_0x994f('0x29')](_0x994f('0x69'),_0x994f('0x66'));_0x414b97[_0x994f('0x67')]=_0x431fff;}else{_0x414b97['recordingURL']='';}return getUser(_0x3a4e00,_0x4f5a4b,_0x2fe3ab,_0x57ed72,_0x2ed0d1,_0x1ad457)[_0x994f('0x1e')](function(_0x16b6e6){logger[_0x994f('0x29')]('['+_0x1ad457['toUpperCase']()+_0x994f('0x6a'),_0x16b6e6['userId']);logger[_0x994f('0x29')]('['+_0x1ad457[_0x994f('0x1b')]()+_0x994f('0x6b'),_0x16b6e6[_0x994f('0x26')]);return getEndUser(_0x16b6e6,_0x4f5a4b,_0x57ed72,_0x2ed0d1,_0x414b97,_0x1ad457,_0x55003d[_0x994f('0x6c')],_0x55003d[_0x994f('0x6d')]);})[_0x994f('0x1e')](function(_0x516513){logger[_0x994f('0x29')]('['+_0x1ad457[_0x994f('0x1b')]()+_0x994f('0x6e'),_0x516513[_0x994f('0x37')]);logger[_0x994f('0x29')]('['+_0x1ad457['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0x414b97[_0x994f('0x32')]);return getTicket(_0x516513,_0x4f5a4b,_0x57ed72,_0x2ed0d1,_0x414b97,_0x55003d,_0x1ad457);})[_0x994f('0x1e')](function(_0x19293f){logger[_0x994f('0x29')](util[_0x994f('0x59')]('['+_0x1ad457['toUpperCase']()+_0x994f('0x6f'),_0x55003d[_0x994f('0x4a')],_0x19293f['ticketId']));logger[_0x994f('0x29')](util[_0x994f('0x59')]('['+_0x1ad457[_0x994f('0x1b')]()+_0x994f('0x70'),_0x1ad457));if(_0x1ad457!==_0x994f('0x5f')&&_0x55003d[_0x994f('0x71')]){logger[_0x994f('0x29')]('['+_0x1ad457[_0x994f('0x1b')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x4f5a4b['remoteUri'],_0x2fe3ab[_0x994f('0x72')],_0x55003d[_0x994f('0x4a')],_0x19293f['ticketId']);}})[_0x994f('0x19')](function(_0x465fb6){logger[_0x994f('0x1a')]('['+_0x1ad457['toUpperCase']()+_0x994f('0x73'),_0x465fb6['message']);console['error']('Error\x20running\x20Dynamics365\x20integration',_0x465fb6);});};