be16d7343beda160419d627841ab19641dfdaa1b
[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 _0x71d7=['md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','tenantId','data2','data5','POST','clientId','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','userId','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','telephone1','replace','%2b','value','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','includes','string','picklist','customField','idField','indexOf','content','incident','getString','Subjects','Descriptions','Fields','ticketType','phonecall','queue','/contacts(','callDirection','phonecalls','assign','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','data7','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','error','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util'];(function(_0x12a201,_0x30aaba){var _0x52a4d2=function(_0x5ca28d){while(--_0x5ca28d){_0x12a201['push'](_0x12a201['shift']());}};_0x52a4d2(++_0x30aaba);}(_0x71d7,0x1c0));var _0x771d=function(_0x28f75a,_0x477ec3){_0x28f75a=_0x28f75a-0x0;var _0x186ce0=_0x71d7[_0x28f75a];return _0x186ce0;};'use strict';var _=require(_0x771d('0x0'));var rp=require(_0x771d('0x1'));var util=require(_0x771d('0x2'));var intUtil=require(_0x771d('0x3'));var md5=require(_0x771d('0x4'));var Redis=require(_0x771d('0x5'));var logger=require(_0x771d('0x6'))(_0x771d('0x7'));var config=require(_0x771d('0x8'));config[_0x771d('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x771d('0xa'))(new Redis(config[_0x771d('0x9')]));function getAuthToken(_0x3ad783,_0x3675d9,_0x12ae78){if(_0x3ad783[_0x771d('0xb')]){_0x3ad783[_0x771d('0xc')]=_0x3ad783[_0x771d('0xd')]['data7'];_0x3ad783[_0x771d('0xe')]=_0x3ad783[_0x771d('0xd')][_0x771d('0xf')];return Promise['resolve'](_0x3ad783['CloudProvider'][_0x771d('0x10')]);}var _0xecaab5={'method':_0x771d('0x11'),'uri':_0x3675d9,'form':{'client_id':_0x3ad783[_0x771d('0x12')],'resource':_0x3ad783[_0x771d('0xc')],'username':_0x3ad783['username'],'password':_0x3ad783[_0x771d('0x13')],'grant_type':'password','client_secret':_0x3ad783[_0x771d('0x14')]},'json':!![]};return rp(_0xecaab5)[_0x771d('0x15')](function(_0x144919){return _0x144919[_0x771d('0x16')];})[_0x771d('0x17')](function(_0x22747c){logger['error']('['+[_0x12ae78[_0x771d('0x18')]()]+_0x771d('0x19'));return _0x22747c[_0x771d('0x1a')];});}function getUser(_0x5be31,_0x1e55cc,_0x50d8dd,_0x23abef,_0x55f936,_0x2f1b30){return new Promise(function(_0x51d79f,_0x11b641){return getAuthToken(_0x1e55cc,_0x23abef,_0x2f1b30)[_0x771d('0x15')](function(_0x242ebd){var _0x4f8e51={'method':_0x771d('0x1b'),'uri':_0x55f936+_0x771d('0x1c'),'headers':{'Authorization':_0x771d('0x1d')+_0x242ebd,'OData-Version':_0x771d('0x1e')},'json':!![]};return rp(_0x4f8e51);})[_0x771d('0x15')](function(_0x2a68b3){var _0x20d7ce=_0x2a68b3['value'];var _0x49d262=![];var _0x4193a7=null;if(!_[_0x771d('0x1f')](_0x50d8dd)){if(intUtil[_0x771d('0x20')](_0x50d8dd[_0x771d('0x21')])){_0x5be31[_0x771d('0x22')]=_0x50d8dd[_0x771d('0x21')];for(_0x4193a7=0x0;_0x4193a7<_0x20d7ce[_0x771d('0x23')];_0x4193a7++){if(_0x20d7ce[_0x4193a7][_0x771d('0x24')]===_0x50d8dd['email']&&!_0x20d7ce[_0x4193a7][_0x771d('0x25')]){_0x49d262=!![];logger[_0x771d('0x26')]('['+[_0x2f1b30['toUpperCase']()]+_0x771d('0x27')+_0x20d7ce[_0x4193a7][_0x771d('0x28')]+'!');_0x5be31['userId']=_0x20d7ce[_0x4193a7][_0x771d('0x28')];}}}}if(!_0x49d262){logger['info']('['+[_0x2f1b30[_0x771d('0x18')]()]+_0x771d('0x29'));_0x5be31[_0x771d('0x22')]=_0x1e55cc[_0x771d('0x2a')];for(_0x4193a7=0x0;_0x4193a7<_0x20d7ce[_0x771d('0x23')];_0x4193a7++){if(_0x20d7ce[_0x4193a7][_0x771d('0x24')]===_0x1e55cc['username']){_0x5be31[_0x771d('0x2b')]=_0x20d7ce[_0x4193a7]['systemuserid'];}}}_0x51d79f(_0x5be31);})['catch'](function(_0x5bf766){_0x11b641(_0x5bf766[_0x771d('0x1a')]);});});}function createEndUser(_0x550b41,_0x27ba7b,_0x571aee,_0x462362,_0x4ed6f4,_0x3a9491,_0x467930){return new Promise(function(_0x275de5,_0xfbb5eb){return getAuthToken(_0x27ba7b,_0x571aee,_0x3a9491)[_0x771d('0x15')](function(_0x2a6d2b){var _0x2848e8=_0x3a9491[_0x771d('0x2c')]()==='outbound'?_0x4ed6f4[_0x771d('0x2d')]:_0x4ed6f4[_0x771d('0x2e')];var _0x252e39={'method':_0x771d('0x11'),'uri':_0x462362+_0x771d('0x2f'),'body':{'fullname':_0x2848e8,'firstname':_0x2848e8,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x771d('0x30')+_0x550b41[_0x771d('0x2b')]+')'},'headers':{'Authorization':_0x771d('0x1d')+_0x2a6d2b,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x252e39[_0x771d('0x31')][_0x467930]=_0x2848e8;return rp(_0x252e39);})['then'](function(_0x305a09){var _0x325edc=_0x305a09[_0x771d('0x32')][_0x771d('0x33')];var _0x1f9151=_0x325edc[_0x771d('0x34')](_0x325edc[_0x771d('0x35')]('(')+0x1,_0x325edc[_0x771d('0x35')](')'));_0x550b41[_0x771d('0x36')]=_0x1f9151;_0x275de5(_0x550b41);})[_0x771d('0x17')](function(_0x298273){_0xfbb5eb(_0x298273['message']);});});}function getEndUser(_0x33a412,_0x4343e6,_0xc9d259,_0x271b02,_0x7bac76,_0x351782,_0x123dda,_0x591d0e){var _0x265fe9=_0x351782['toLowerCase']()===_0x771d('0x37')?_0x7bac76['destcalleridnum']:_0x7bac76[_0x771d('0x2e')];return getAuthToken(_0x4343e6,_0xc9d259,_0x351782)[_0x771d('0x15')](function(_0x538e7e){_0x591d0e=_0x591d0e?_0x591d0e:_0x771d('0x38');var _0x192a9f={'method':_0x771d('0x1b'),'uri':_0x271b02+'contacts?$select='+_0x591d0e+'&$filter='+_0x591d0e+'\x20eq\x20\x27'+_0x265fe9[_0x771d('0x39')]('+',_0x771d('0x3a'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x538e7e,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x192a9f);})['then'](function(_0x4f0b4c){var _0x52d27b=![];if(!_0x4f0b4c)return _0x52d27b;var _0x180361=_0x4f0b4c[_0x771d('0x3b')];for(var _0x1b13a0=0x0;_0x1b13a0<_0x180361[_0x771d('0x23')];_0x1b13a0++){if(_0x180361[_0x1b13a0][_0x591d0e]===_0x265fe9){_0x52d27b=!![];_0x33a412[_0x771d('0x36')]=_0x180361[_0x1b13a0]['contactid'];}}return _0x52d27b;})['then'](function(_0x4ed8c9){if(_0x4ed8c9)return _0x33a412;if(_0x123dda===_0x771d('0x3c')){logger[_0x771d('0x26')]('['+[_0x351782[_0x771d('0x18')]()]+_0x771d('0x3d'));return _0x33a412;}return createEndUser(_0x33a412,_0x4343e6,_0xc9d259,_0x271b02,_0x7bac76,_0x351782,_0x591d0e)[_0x771d('0x15')](function(_0x2d3394){logger[_0x771d('0x26')]('['+[_0x351782[_0x771d('0x18')]()]+']\x20Enduser\x20created!',_0x2d3394[_0x771d('0x36')]);return _0x2d3394;});});}function getCustomFields(_0x5276de,_0x30a1e6,_0x2c77e3){var _0x3dbf95={};if(_0x5276de[_0x771d('0x23')]>0x0){_['forEach'](_0x5276de,function(_0xb134aa){if(_[_0x771d('0x3e')]([_0x771d('0x3f'),_0x771d('0x40')],_0xb134aa['type'])&&_0xb134aa['nameField']&&!_0xb134aa[_0x771d('0x41')]){var _0x392635=_0xb134aa[_0x771d('0x42')][_0x771d('0x2c')]();var _0x192971=_0x392635[_0x771d('0x34')](0x0,_0x392635[_0x771d('0x43')]('_'));var _0x2249ea=_0x392635[_0x771d('0x34')](_0x392635[_0x771d('0x43')]('_')+0x1);if(_0x192971===_0x2c77e3){_0x3dbf95[_0x2249ea]=_0xb134aa[_0x771d('0x44')];}}});}return _0x3dbf95;}function getTicket(_0x310074,_0x54d8ab,_0x42b502,_0x4b8aed,_0xde842d,_0x41421b,_0x596d89){return new Promise(function(_0x1b0d49,_0x3218e2){var _0x1d488a;return getAuthToken(_0x54d8ab,_0x42b502,_0x596d89)[_0x771d('0x15')](function(_0x4ec2d8){if(_0x41421b['ticketType']===_0x771d('0x45')){_0x1d488a={'method':_0x771d('0x11'),'uri':_0x4b8aed+'incidents','body':Object['assign']({},{'title':intUtil[_0x771d('0x46')](_0x41421b[_0x771d('0x47')],_0xde842d,'\x20'),'description':intUtil[_0x771d('0x46')](_0x41421b[_0x771d('0x48')],_0xde842d,'\x0a'),'customerid_contact@odata.bind':_0x310074[_0x771d('0x36')]?'/contacts('+_0x310074[_0x771d('0x36')]+')':undefined,'ownerid@odata.bind':_0x771d('0x30')+_0x310074[_0x771d('0x2b')]+')','caseorigincode':'1'},getCustomFields(_0x41421b[_0x771d('0x49')],_0xde842d,_0x41421b[_0x771d('0x4a')])),'headers':{'Authorization':_0x771d('0x1d')+_0x4ec2d8,'OData-Version':_0x771d('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x41421b[_0x771d('0x4a')]===_0x771d('0x4b')){var _0x25f441=_0x310074[_0x771d('0x36')]?[{'partyid_systemuser@odata.bind':_0x771d('0x30')+_0x310074[_0x771d('0x2b')]+')','participationtypemask':_0x310074['callDirection']===_0x771d('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':_0x771d('0x4d')+_0x310074[_0x771d('0x36')]+')','participationtypemask':_0x310074[_0x771d('0x4e')]===_0x771d('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x310074['userId']+')','participationtypemask':_0x310074[_0x771d('0x4e')]==='queue'?0x2:0x1}];_0x1d488a={'method':_0x771d('0x11'),'uri':_0x4b8aed+_0x771d('0x4f'),'body':Object[_0x771d('0x50')]({},{'subject':intUtil[_0x771d('0x46')](_0x41421b[_0x771d('0x47')],_0xde842d,'\x20'),'phonenumber':String(_0xde842d[_0x771d('0x2e')]),'description':intUtil[_0x771d('0x46')](_0x41421b['Descriptions'],_0xde842d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x310074[_0x771d('0x36')]?_0x771d('0x4d')+_0x310074[_0x771d('0x36')]+')':undefined,'ownerid@odata.bind':_0x771d('0x30')+_0x310074[_0x771d('0x2b')]+')','directioncode':_0x310074['callDirection']===_0x771d('0x4c')?![]:!![],'phonecall_activity_parties':_0x25f441},getCustomFields(_0x41421b[_0x771d('0x49')],_0xde842d,_0x41421b[_0x771d('0x4a')])),'headers':{'Authorization':'Bearer\x20'+_0x4ec2d8,'OData-Version':_0x771d('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1d488a);})[_0x771d('0x15')](function(_0x1f0908){var _0x571374=_0x1f0908['headers'][_0x771d('0x33')];var _0x2a7bb3=_0x571374[_0x771d('0x34')](_0x571374['lastIndexOf']('(')+0x1,_0x571374[_0x771d('0x35')](')'));_0x310074[_0x771d('0x51')]=_0x2a7bb3;_0x1b0d49(_0x310074);})['catch'](function(_0x5b3da1){_0x3218e2(_0x5b3da1[_0x771d('0x1a')]);});});}function emit(_0x473b64,_0x1f5893,_0x595555,_0x3153b1){var _0x5d7d13={'uri':util['format'](_0x771d('0x52'),_0x473b64,_0x595555,_0x3153b1)};io['to'](util[_0x771d('0x53')](_0x771d('0x54'),_0x1f5893))[_0x771d('0x55')](_0x771d('0x56'),_0x5d7d13);}exports['cs']=function(_0x3aa9ad,_0x21ed15,_0x3f9981,_0x1513f8,_0x41270c,_0x2f2bbc,_0x1833cd,_0xb050f2){var _0x51af97={};_0x2f2bbc[_0x771d('0xc')]=_0x2f2bbc['modernAuthentication']?intUtil['stripTrailingSlash'](_0x2f2bbc[_0x771d('0xd')][_0x771d('0x57')]):intUtil[_0x771d('0x58')](_0x2f2bbc[_0x771d('0xc')]);_0x2f2bbc[_0x771d('0x59')]=intUtil['stripTrailingSlash'](_0x2f2bbc[_0x771d('0x59')]);_0x51af97[_0x771d('0x4e')]=_0xb050f2===_0x771d('0x4c')||_0xb050f2===_0x771d('0x5a')?_0x771d('0x4c'):_0x771d('0x37');var _0x2e06d3=_0x2f2bbc[_0x771d('0xb')]?util[_0x771d('0x53')]('%s/api/data/v9.0/',_0x2f2bbc[_0x771d('0xd')]['data7']):util[_0x771d('0x53')](_0x771d('0x5b'),_0x2f2bbc[_0x771d('0xc')]);var _0x3ef8df=util[_0x771d('0x53')](_0x771d('0x5c'),_0x2f2bbc['tenantId']);var _0x4fe581=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2f2bbc[_0x771d('0x59')],_0x21ed15[_0x771d('0x5d')],md5(_0x21ed15['uniqueid']));if(_0x41270c&&_0x41270c[_0x771d('0x5e')]){logger[_0x771d('0x26')](_0x771d('0x5f'),'Recording\x20is\x20enabled!');_0x21ed15['recordingURL']=_0x4fe581;}else if(_0x1833cd&&_0x1833cd['recordingFormat']&&_0x1833cd[_0x771d('0x60')]!==_0x771d('0x61')){logger[_0x771d('0x26')](_0x771d('0x62'),_0x771d('0x63'));_0x21ed15[_0x771d('0x64')]=_0x4fe581;}else{_0x21ed15[_0x771d('0x64')]='';}return getUser(_0x51af97,_0x2f2bbc,_0x1513f8,_0x3ef8df,_0x2e06d3,_0xb050f2)[_0x771d('0x15')](function(_0x2a0b9c){logger['info']('['+_0xb050f2['toUpperCase']()+_0x771d('0x65'),_0x2a0b9c[_0x771d('0x2b')]);logger[_0x771d('0x26')]('['+_0xb050f2[_0x771d('0x18')]()+_0x771d('0x66'),_0x2a0b9c[_0x771d('0x22')]);return getEndUser(_0x2a0b9c,_0x2f2bbc,_0x3ef8df,_0x2e06d3,_0x21ed15,_0xb050f2,_0x3f9981[_0x771d('0x67')],_0x3f9981[_0x771d('0x68')]);})['then'](function(_0x573dbd){logger[_0x771d('0x26')]('['+_0xb050f2[_0x771d('0x18')]()+_0x771d('0x69'),_0x573dbd[_0x771d('0x36')]);logger['info']('['+_0xb050f2['toUpperCase']()+_0x771d('0x6a'),_0x21ed15[_0x771d('0x2e')]);return getTicket(_0x573dbd,_0x2f2bbc,_0x3ef8df,_0x2e06d3,_0x21ed15,_0x3f9981,_0xb050f2);})[_0x771d('0x15')](function(_0x3c55e6){logger['info'](util[_0x771d('0x53')]('['+_0xb050f2[_0x771d('0x18')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x3f9981[_0x771d('0x4a')],_0x3c55e6['ticketId']));logger[_0x771d('0x26')](util['format']('['+_0xb050f2[_0x771d('0x18')]()+_0x771d('0x6b'),_0xb050f2));if(_0xb050f2!==_0x771d('0x5a')&&_0x3f9981[_0x771d('0x6c')]){logger['info']('['+_0xb050f2['toUpperCase']()+']',_0x771d('0x6d'));emit(_0x2f2bbc[_0x771d('0xc')],_0x1513f8['name'],_0x3f9981[_0x771d('0x4a')],_0x3c55e6[_0x771d('0x51')]);}})[_0x771d('0x17')](function(_0x235084){logger['error']('['+_0xb050f2[_0x771d('0x18')]()+_0x771d('0x6e'),_0x235084[_0x771d('0x1a')]);console[_0x771d('0x6f')](_0x771d('0x70'),_0x235084);});};