Built motion from commit 52c8a02d.|2.6.29
[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 _0x41d8=['access_token','catch',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','4.0','value','isNil','email','userEmail','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','toUpperCase',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','destcalleridnum','calleridnum','contacts','body','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','contactid','nothing','forEach','includes','string','picklist','type','nameField','idField','indexOf','ticketType','incident','incidents','assign','getString','Subjects','/contacts(','phonecall','/systemusers(','queue','callDirection','Descriptions','Fields','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration','error','Error\x20running\x20Dynamics365\x20integration','lodash','util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','resolve','data5','POST','clientId','password','clientSecret','then'];(function(_0x3dee92,_0x55e1eb){var _0x44d36e=function(_0x34de1a){while(--_0x34de1a){_0x3dee92['push'](_0x3dee92['shift']());}};_0x44d36e(++_0x55e1eb);}(_0x41d8,0x1a2));var _0x841d=function(_0x17723c,_0x1ea81d){_0x17723c=_0x17723c-0x0;var _0x1ffbf3=_0x41d8[_0x17723c];return _0x1ffbf3;};'use strict';var _=require(_0x841d('0x0'));var rp=require('request-promise');var util=require(_0x841d('0x1'));var intUtil=require('./util');var md5=require(_0x841d('0x2'));var Redis=require(_0x841d('0x3'));var logger=require(_0x841d('0x4'))(_0x841d('0x5'));var config=require(_0x841d('0x6'));config[_0x841d('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x841d('0x8'))(new Redis(config[_0x841d('0x7')]));function getAuthToken(_0x96d08e,_0x3df9cf,_0x25d4ec){if(_0x96d08e[_0x841d('0x9')]){_0x96d08e[_0x841d('0xa')]=_0x96d08e[_0x841d('0xb')][_0x841d('0xc')];_0x96d08e[_0x841d('0xd')]=_0x96d08e[_0x841d('0xb')][_0x841d('0xe')];return Promise[_0x841d('0xf')](_0x96d08e[_0x841d('0xb')][_0x841d('0x10')]);}var _0x211d5b={'method':_0x841d('0x11'),'uri':_0x3df9cf,'form':{'client_id':_0x96d08e[_0x841d('0x12')],'resource':_0x96d08e['remoteUri'],'username':_0x96d08e['username'],'password':_0x96d08e[_0x841d('0x13')],'grant_type':_0x841d('0x13'),'client_secret':_0x96d08e[_0x841d('0x14')]},'json':!![]};return rp(_0x211d5b)[_0x841d('0x15')](function(_0x52896a){return _0x52896a[_0x841d('0x16')];})[_0x841d('0x17')](function(_0x46bce2){logger['error']('['+[_0x25d4ec['toUpperCase']()]+_0x841d('0x18'));return _0x46bce2[_0x841d('0x19')];});}function getUser(_0x4201ab,_0x463c12,_0x21b08d,_0x36ed3d,_0xc86dd6,_0x5ad2bf){return new Promise(function(_0x2417ed,_0x4b5780){return getAuthToken(_0x463c12,_0x36ed3d,_0x5ad2bf)['then'](function(_0x2f442a){var _0x5e3c6b={'method':_0x841d('0x1a'),'uri':_0xc86dd6+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x841d('0x1b')+_0x2f442a,'OData-Version':_0x841d('0x1c')},'json':!![]};return rp(_0x5e3c6b);})[_0x841d('0x15')](function(_0x4c7d5a){var _0x46fba6=_0x4c7d5a[_0x841d('0x1d')];var _0x49bead=![];var _0x30955a=null;if(!_[_0x841d('0x1e')](_0x21b08d)){if(intUtil['validateEmail'](_0x21b08d[_0x841d('0x1f')])){_0x4201ab[_0x841d('0x20')]=_0x21b08d[_0x841d('0x1f')];for(_0x30955a=0x0;_0x30955a<_0x46fba6[_0x841d('0x21')];_0x30955a++){if(_0x46fba6[_0x30955a]['internalemailaddress']===_0x21b08d[_0x841d('0x1f')]&&!_0x46fba6[_0x30955a][_0x841d('0x22')]){_0x49bead=!![];logger[_0x841d('0x23')]('['+[_0x5ad2bf['toUpperCase']()]+_0x841d('0x24')+_0x46fba6[_0x30955a][_0x841d('0x25')]+'!');_0x4201ab[_0x841d('0x26')]=_0x46fba6[_0x30955a][_0x841d('0x25')];}}}}if(!_0x49bead){logger[_0x841d('0x23')]('['+[_0x5ad2bf[_0x841d('0x27')]()]+_0x841d('0x28'));_0x4201ab[_0x841d('0x20')]=_0x463c12[_0x841d('0x29')];for(_0x30955a=0x0;_0x30955a<_0x46fba6[_0x841d('0x21')];_0x30955a++){if(_0x46fba6[_0x30955a]['internalemailaddress']===_0x463c12[_0x841d('0x29')]){_0x4201ab[_0x841d('0x26')]=_0x46fba6[_0x30955a]['systemuserid'];}}}_0x2417ed(_0x4201ab);})[_0x841d('0x17')](function(_0x36c27c){_0x4b5780(_0x36c27c['message']);});});}function createEndUser(_0x4f08f5,_0x46d8bd,_0x5ea864,_0x252a3e,_0xb37bd0,_0x5ef62,_0x456417){return new Promise(function(_0x3d08f2,_0xc47a8b){return getAuthToken(_0x46d8bd,_0x5ea864,_0x5ef62)[_0x841d('0x15')](function(_0x2f1f59){var _0x7fe9ca=_0x5ef62[_0x841d('0x2a')]()==='outbound'?_0xb37bd0[_0x841d('0x2b')]:_0xb37bd0[_0x841d('0x2c')];var _0x1d7dac={'method':_0x841d('0x11'),'uri':_0x252a3e+_0x841d('0x2d'),'body':{'fullname':_0x7fe9ca,'firstname':_0x7fe9ca,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x4f08f5['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x2f1f59,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x1d7dac[_0x841d('0x2e')][_0x456417]=_0x7fe9ca;return rp(_0x1d7dac);})['then'](function(_0x3d3f81){var _0x219256=_0x3d3f81[_0x841d('0x2f')][_0x841d('0x30')];var _0x30a6ad=_0x219256[_0x841d('0x31')](_0x219256['lastIndexOf']('(')+0x1,_0x219256[_0x841d('0x32')](')'));_0x4f08f5[_0x841d('0x33')]=_0x30a6ad;_0x3d08f2(_0x4f08f5);})[_0x841d('0x17')](function(_0x488ba8){_0xc47a8b(_0x488ba8['message']);});});}function getEndUser(_0x5f1fda,_0x9ce1b3,_0x1791f9,_0x459602,_0x28ab30,_0x4719ad,_0x988664,_0x34bb32){var _0x2f7042=_0x4719ad[_0x841d('0x2a')]()===_0x841d('0x34')?_0x28ab30[_0x841d('0x2b')]:_0x28ab30[_0x841d('0x2c')];return getAuthToken(_0x9ce1b3,_0x1791f9,_0x4719ad)[_0x841d('0x15')](function(_0x486965){_0x34bb32=_0x34bb32?_0x34bb32:_0x841d('0x35');var _0x323522={'method':_0x841d('0x1a'),'uri':_0x459602+_0x841d('0x36')+_0x34bb32+_0x841d('0x37')+_0x34bb32+_0x841d('0x38')+_0x2f7042['replace']('+','%2b')+'\x27','headers':{'Authorization':'Bearer\x20'+_0x486965,'If-None-Match':null,'OData-Version':_0x841d('0x1c')},'json':!![]};return rp(_0x323522);})['then'](function(_0x52f314){var _0x3f25b3=![];if(!_0x52f314)return _0x3f25b3;var _0x16c6cd=_0x52f314[_0x841d('0x1d')];for(var _0x9b6d3d=0x0;_0x9b6d3d<_0x16c6cd[_0x841d('0x21')];_0x9b6d3d++){if(_0x16c6cd[_0x9b6d3d][_0x34bb32]===_0x2f7042){_0x3f25b3=!![];_0x5f1fda[_0x841d('0x33')]=_0x16c6cd[_0x9b6d3d][_0x841d('0x39')];}}return _0x3f25b3;})[_0x841d('0x15')](function(_0x435827){if(_0x435827)return _0x5f1fda;if(_0x988664===_0x841d('0x3a')){logger['info']('['+[_0x4719ad[_0x841d('0x27')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x5f1fda;}return createEndUser(_0x5f1fda,_0x9ce1b3,_0x1791f9,_0x459602,_0x28ab30,_0x4719ad,_0x34bb32)[_0x841d('0x15')](function(_0x2a3b0f){logger['info']('['+[_0x4719ad['toUpperCase']()]+']\x20Enduser\x20created!',_0x2a3b0f[_0x841d('0x33')]);return _0x2a3b0f;});});}function getCustomFields(_0xa7f6a5,_0x52ca00,_0x541aad){var _0x19297f={};if(_0xa7f6a5['length']>0x0){_[_0x841d('0x3b')](_0xa7f6a5,function(_0x5d7750){if(_[_0x841d('0x3c')]([_0x841d('0x3d'),_0x841d('0x3e')],_0x5d7750[_0x841d('0x3f')])&&_0x5d7750[_0x841d('0x40')]&&!_0x5d7750['customField']){var _0x3b9667=_0x5d7750[_0x841d('0x41')][_0x841d('0x2a')]();var _0x5a340c=_0x3b9667[_0x841d('0x31')](0x0,_0x3b9667[_0x841d('0x42')]('_'));var _0x52b07=_0x3b9667[_0x841d('0x31')](_0x3b9667[_0x841d('0x42')]('_')+0x1);if(_0x5a340c===_0x541aad){_0x19297f[_0x52b07]=_0x5d7750['content'];}}});}return _0x19297f;}function getTicket(_0x3fe018,_0x1cd6fb,_0x458556,_0x2aad43,_0x3e70f7,_0xcde508,_0x180c31){return new Promise(function(_0x2e3462,_0x5ade41){var _0x4b956c;return getAuthToken(_0x1cd6fb,_0x458556,_0x180c31)['then'](function(_0x3350b9){if(_0xcde508[_0x841d('0x43')]===_0x841d('0x44')){_0x4b956c={'method':'POST','uri':_0x2aad43+_0x841d('0x45'),'body':Object[_0x841d('0x46')]({},{'title':intUtil[_0x841d('0x47')](_0xcde508[_0x841d('0x48')],_0x3e70f7,'\x20'),'description':intUtil['getString'](_0xcde508['Descriptions'],_0x3e70f7,'\x0a'),'customerid_contact@odata.bind':_0x3fe018[_0x841d('0x33')]?_0x841d('0x49')+_0x3fe018['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x3fe018[_0x841d('0x26')]+')','caseorigincode':'1'},getCustomFields(_0xcde508['Fields'],_0x3e70f7,_0xcde508['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x3350b9,'OData-Version':_0x841d('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xcde508[_0x841d('0x43')]===_0x841d('0x4a')){var _0x20bd5e=_0x3fe018[_0x841d('0x33')]?[{'partyid_systemuser@odata.bind':_0x841d('0x4b')+_0x3fe018[_0x841d('0x26')]+')','participationtypemask':_0x3fe018['callDirection']===_0x841d('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x3fe018[_0x841d('0x33')]+')','participationtypemask':_0x3fe018[_0x841d('0x4d')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x841d('0x4b')+_0x3fe018[_0x841d('0x26')]+')','participationtypemask':_0x3fe018['callDirection']===_0x841d('0x4c')?0x2:0x1}];_0x4b956c={'method':_0x841d('0x11'),'uri':_0x2aad43+'phonecalls','body':Object[_0x841d('0x46')]({},{'subject':intUtil[_0x841d('0x47')](_0xcde508['Subjects'],_0x3e70f7,'\x20'),'phonenumber':String(_0x3e70f7['calleridnum']),'description':intUtil[_0x841d('0x47')](_0xcde508[_0x841d('0x4e')],_0x3e70f7,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3fe018[_0x841d('0x33')]?_0x841d('0x49')+_0x3fe018['enduserId']+')':undefined,'ownerid@odata.bind':_0x841d('0x4b')+_0x3fe018[_0x841d('0x26')]+')','directioncode':_0x3fe018[_0x841d('0x4d')]===_0x841d('0x4c')?![]:!![],'phonecall_activity_parties':_0x20bd5e},getCustomFields(_0xcde508[_0x841d('0x4f')],_0x3e70f7,_0xcde508[_0x841d('0x43')])),'headers':{'Authorization':'Bearer\x20'+_0x3350b9,'OData-Version':_0x841d('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4b956c);})[_0x841d('0x15')](function(_0x16380f){var _0x2d02f3=_0x16380f[_0x841d('0x2f')][_0x841d('0x30')];var _0x4aec03=_0x2d02f3['substring'](_0x2d02f3[_0x841d('0x32')]('(')+0x1,_0x2d02f3[_0x841d('0x32')](')'));_0x3fe018['ticketId']=_0x4aec03;_0x2e3462(_0x3fe018);})[_0x841d('0x17')](function(_0x2d28f4){_0x5ade41(_0x2d28f4[_0x841d('0x19')]);});});}function emit(_0x22253f,_0x4b615d,_0x50f6cb,_0x5f0a20){var _0x3647a8={'uri':util[_0x841d('0x50')](_0x841d('0x51'),_0x22253f,_0x50f6cb,_0x5f0a20)};io['to'](util[_0x841d('0x50')](_0x841d('0x52'),_0x4b615d))[_0x841d('0x53')](_0x841d('0x54'),_0x3647a8);}exports['cs']=function(_0x2d35e4,_0xcaf3f3,_0x3d7030,_0x1122dc,_0x15680e,_0x59d48d,_0xf056ac,_0x3f2527){var _0x3e93fd={};_0x59d48d[_0x841d('0xa')]=_0x59d48d[_0x841d('0x9')]?intUtil[_0x841d('0x55')](_0x59d48d[_0x841d('0xb')]['data7']):intUtil['stripTrailingSlash'](_0x59d48d['remoteUri']);_0x59d48d['serverUrl']=intUtil[_0x841d('0x55')](_0x59d48d[_0x841d('0x56')]);_0x3e93fd['callDirection']=_0x3f2527===_0x841d('0x4c')||_0x3f2527===_0x841d('0x57')?_0x841d('0x4c'):_0x841d('0x34');var _0x1da382=_0x59d48d[_0x841d('0x9')]?util[_0x841d('0x50')](_0x841d('0x58'),_0x59d48d['CloudProvider']['data7']):util[_0x841d('0x50')]('%s/api/data/v9.0/',_0x59d48d['remoteUri']);var _0x184db3=util[_0x841d('0x50')](_0x841d('0x59'),_0x59d48d[_0x841d('0xd')]);var _0x2ccead=util[_0x841d('0x50')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x59d48d[_0x841d('0x56')],_0xcaf3f3[_0x841d('0x5a')],md5(_0xcaf3f3[_0x841d('0x5a')]));if(_0x15680e&&_0x15680e[_0x841d('0x5b')]){logger[_0x841d('0x23')]('[QUEUE]','Recording\x20is\x20enabled!');_0xcaf3f3[_0x841d('0x5c')]=_0x2ccead;}else if(_0xf056ac&&_0xf056ac[_0x841d('0x5d')]&&_0xf056ac['recordingFormat']!==_0x841d('0x5e')){logger[_0x841d('0x23')](_0x841d('0x5f'),_0x841d('0x60'));_0xcaf3f3[_0x841d('0x5c')]=_0x2ccead;}else{_0xcaf3f3[_0x841d('0x5c')]='';}return getUser(_0x3e93fd,_0x59d48d,_0x1122dc,_0x184db3,_0x1da382,_0x3f2527)[_0x841d('0x15')](function(_0x511002){logger[_0x841d('0x23')]('['+_0x3f2527['toUpperCase']()+_0x841d('0x61'),_0x511002['userId']);logger['info']('['+_0x3f2527[_0x841d('0x27')]()+_0x841d('0x62'),_0x511002[_0x841d('0x20')]);return getEndUser(_0x511002,_0x59d48d,_0x184db3,_0x1da382,_0xcaf3f3,_0x3f2527,_0x3d7030[_0x841d('0x63')],_0x3d7030[_0x841d('0x64')]);})[_0x841d('0x15')](function(_0x55c917){logger[_0x841d('0x23')]('['+_0x3f2527[_0x841d('0x27')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x55c917['enduserId']);logger[_0x841d('0x23')]('['+_0x3f2527[_0x841d('0x27')]()+_0x841d('0x65'),_0xcaf3f3[_0x841d('0x2c')]);return getTicket(_0x55c917,_0x59d48d,_0x184db3,_0x1da382,_0xcaf3f3,_0x3d7030,_0x3f2527);})['then'](function(_0x5ebcef){logger[_0x841d('0x23')](util[_0x841d('0x50')]('['+_0x3f2527[_0x841d('0x27')]()+_0x841d('0x66'),_0x3d7030[_0x841d('0x43')],_0x5ebcef['ticketId']));logger[_0x841d('0x23')](util[_0x841d('0x50')]('['+_0x3f2527['toUpperCase']()+_0x841d('0x67'),_0x3f2527));if(_0x3f2527!=='unmanaged'&&_0x3d7030[_0x841d('0x68')]){logger[_0x841d('0x23')]('['+_0x3f2527[_0x841d('0x27')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x59d48d[_0x841d('0xa')],_0x1122dc[_0x841d('0x69')],_0x3d7030[_0x841d('0x43')],_0x5ebcef[_0x841d('0x6a')]);}})['catch'](function(_0x5e383d){logger['error']('['+_0x3f2527[_0x841d('0x27')]()+_0x841d('0x6b'),_0x5e383d['message']);console[_0x841d('0x6c')](_0x841d('0x6d'),_0x5e383d);});};