Built motion from commit da617fac.|2.6.6
[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 _0x05df=['defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data5','POST','clientId','username','password','clientSecret','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','then','value','validateEmail','userEmail','email','length','internalemailaddress','isdisabled','info','toUpperCase','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','lastIndexOf','enduserId','outbound','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','nameField','idField','substring','indexOf','incident','incidents','getString','Subjects','Fields','phonecall','queue','/contacts(','callDirection','phonecalls','assign','Descriptions','ticketType','ticketId','user:%s','emit','stripTrailingSlash','serverUrl','format','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','error',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x05df,0xcc));var _0xf05d=function(_0x280899,_0x4a5aa3){_0x280899=_0x280899-0x0;var _0x346365=_0x05df[_0x280899];return _0x346365;};'use strict';var _=require(_0xf05d('0x0'));var rp=require(_0xf05d('0x1'));var util=require(_0xf05d('0x2'));var intUtil=require(_0xf05d('0x3'));var md5=require(_0xf05d('0x4'));var Redis=require(_0xf05d('0x5'));var logger=require(_0xf05d('0x6'))(_0xf05d('0x7'));var config=require(_0xf05d('0x8'));config[_0xf05d('0x9')]=_[_0xf05d('0xa')](config['redis'],{'host':_0xf05d('0xb'),'port':0x18eb});var io=require(_0xf05d('0xc'))(new Redis(config[_0xf05d('0x9')]));function getAuthToken(_0x47efd4,_0x1df89b,_0x2fba2e){if(_0x47efd4[_0xf05d('0xd')]){_0x47efd4[_0xf05d('0xe')]=_0x47efd4[_0xf05d('0xf')][_0xf05d('0x10')];_0x47efd4[_0xf05d('0x11')]=_0x47efd4[_0xf05d('0xf')]['data2'];return Promise['resolve'](_0x47efd4[_0xf05d('0xf')][_0xf05d('0x12')]);}var _0x214835={'method':_0xf05d('0x13'),'uri':_0x1df89b,'form':{'client_id':_0x47efd4[_0xf05d('0x14')],'resource':_0x47efd4['remoteUri'],'username':_0x47efd4[_0xf05d('0x15')],'password':_0x47efd4[_0xf05d('0x16')],'grant_type':_0xf05d('0x16'),'client_secret':_0x47efd4[_0xf05d('0x17')]},'json':!![]};return rp(_0x214835)['then'](function(_0x2d2350){return _0x2d2350['access_token'];})[_0xf05d('0x18')](function(_0x4bff32){logger['error']('['+[_0x2fba2e['toUpperCase']()]+_0xf05d('0x19'));return _0x4bff32[_0xf05d('0x1a')];});}function getUser(_0x195155,_0x111386,_0x1e072e,_0x1ed13e,_0x4dfd5f,_0x110931){return new Promise(function(_0x1956da,_0x38f5b5){return getAuthToken(_0x111386,_0x1ed13e,_0x110931)['then'](function(_0x591f00){var _0x535f68={'method':_0xf05d('0x1b'),'uri':_0x4dfd5f+_0xf05d('0x1c'),'headers':{'Authorization':_0xf05d('0x1d')+_0x591f00,'OData-Version':_0xf05d('0x1e')},'json':!![]};return rp(_0x535f68);})[_0xf05d('0x1f')](function(_0x20f6e4){var _0x31c47f=_0x20f6e4[_0xf05d('0x20')];var _0x1f1d7d=![];var _0x41e2c4=null;if(!_['isNil'](_0x1e072e)){if(intUtil[_0xf05d('0x21')](_0x1e072e['email'])){_0x195155[_0xf05d('0x22')]=_0x1e072e[_0xf05d('0x23')];for(_0x41e2c4=0x0;_0x41e2c4<_0x31c47f[_0xf05d('0x24')];_0x41e2c4++){if(_0x31c47f[_0x41e2c4][_0xf05d('0x25')]===_0x1e072e['email']&&!_0x31c47f[_0x41e2c4][_0xf05d('0x26')]){_0x1f1d7d=!![];logger[_0xf05d('0x27')]('['+[_0x110931[_0xf05d('0x28')]()]+']\x20Agent\x20found\x20'+_0x31c47f[_0x41e2c4][_0xf05d('0x29')]+'!');_0x195155[_0xf05d('0x2a')]=_0x31c47f[_0x41e2c4][_0xf05d('0x29')];}}}}if(!_0x1f1d7d){logger[_0xf05d('0x27')]('['+[_0x110931[_0xf05d('0x28')]()]+_0xf05d('0x2b'));_0x195155[_0xf05d('0x22')]=_0x111386[_0xf05d('0x15')];for(_0x41e2c4=0x0;_0x41e2c4<_0x31c47f['length'];_0x41e2c4++){if(_0x31c47f[_0x41e2c4][_0xf05d('0x25')]===_0x111386[_0xf05d('0x15')]){_0x195155[_0xf05d('0x2a')]=_0x31c47f[_0x41e2c4][_0xf05d('0x29')];}}}_0x1956da(_0x195155);})['catch'](function(_0x13eafc){_0x38f5b5(_0x13eafc['message']);});});}function createEndUser(_0x3c8e42,_0x26f776,_0x56629e,_0x451f17,_0x4ad23e,_0x4d4ce2,_0x116ab5){return new Promise(function(_0x42b0aa,_0xed4dfc){return getAuthToken(_0x26f776,_0x56629e,_0x4d4ce2)[_0xf05d('0x1f')](function(_0x22f5f4){var _0x1e18c4=_0x4d4ce2[_0xf05d('0x2c')]()==='outbound'?_0x4ad23e[_0xf05d('0x2d')]:_0x4ad23e[_0xf05d('0x2e')];var _0x1ce707={'method':_0xf05d('0x13'),'uri':_0x451f17+_0xf05d('0x2f'),'body':{'fullname':_0x1e18c4,'firstname':_0x1e18c4,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf05d('0x30')+_0x3c8e42[_0xf05d('0x2a')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x22f5f4,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x1ce707['body'][_0x116ab5]=_0x1e18c4;return rp(_0x1ce707);})[_0xf05d('0x1f')](function(_0x4fa477){var _0x39f2b1=_0x4fa477[_0xf05d('0x31')][_0xf05d('0x32')];var _0xb662ad=_0x39f2b1['substring'](_0x39f2b1[_0xf05d('0x33')]('(')+0x1,_0x39f2b1['lastIndexOf'](')'));_0x3c8e42[_0xf05d('0x34')]=_0xb662ad;_0x42b0aa(_0x3c8e42);})['catch'](function(_0x15b45c){_0xed4dfc(_0x15b45c[_0xf05d('0x1a')]);});});}function getEndUser(_0x33bf0f,_0x119ddd,_0x1cffff,_0x116ef3,_0x27fd8f,_0x54723c,_0x3a22dc,_0x5926e6){var _0x57b934=_0x54723c[_0xf05d('0x2c')]()===_0xf05d('0x35')?_0x27fd8f[_0xf05d('0x2d')]:_0x27fd8f[_0xf05d('0x2e')];return getAuthToken(_0x119ddd,_0x1cffff,_0x54723c)[_0xf05d('0x1f')](function(_0x20ea69){_0x5926e6=_0x5926e6?_0x5926e6:_0xf05d('0x36');var _0x1933e8={'method':_0xf05d('0x1b'),'uri':_0x116ef3+_0xf05d('0x37')+_0x5926e6+_0xf05d('0x38')+_0x5926e6+_0xf05d('0x39')+_0x57b934[_0xf05d('0x3a')]('+',_0xf05d('0x3b'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x20ea69,'If-None-Match':null,'OData-Version':_0xf05d('0x1e')},'json':!![]};return rp(_0x1933e8);})[_0xf05d('0x1f')](function(_0x124022){var _0x3cb900=![];if(!_0x124022)return _0x3cb900;var _0x1cda05=_0x124022[_0xf05d('0x20')];for(var _0x13c363=0x0;_0x13c363<_0x1cda05[_0xf05d('0x24')];_0x13c363++){if(_0x1cda05[_0x13c363][_0x5926e6]===_0x57b934){_0x3cb900=!![];_0x33bf0f[_0xf05d('0x34')]=_0x1cda05[_0x13c363][_0xf05d('0x3c')];}}return _0x3cb900;})[_0xf05d('0x1f')](function(_0x42c3b8){if(_0x42c3b8)return _0x33bf0f;if(_0x3a22dc===_0xf05d('0x3d')){logger['info']('['+[_0x54723c[_0xf05d('0x28')]()]+_0xf05d('0x3e'));return _0x33bf0f;}return createEndUser(_0x33bf0f,_0x119ddd,_0x1cffff,_0x116ef3,_0x27fd8f,_0x54723c,_0x5926e6)['then'](function(_0x373aee){logger[_0xf05d('0x27')]('['+[_0x54723c[_0xf05d('0x28')]()]+_0xf05d('0x3f'),_0x373aee['enduserId']);return _0x373aee;});});}function getCustomFields(_0x540ced,_0xf3beb,_0x4939e1){var _0x56ccaa={};if(_0x540ced[_0xf05d('0x24')]>0x0){_[_0xf05d('0x40')](_0x540ced,function(_0x4bcc19){if(_['includes'](['string','picklist'],_0x4bcc19['type'])&&_0x4bcc19[_0xf05d('0x41')]&&!_0x4bcc19['customField']){var _0x4bcb7f=_0x4bcc19[_0xf05d('0x42')][_0xf05d('0x2c')]();var _0x5215be=_0x4bcb7f[_0xf05d('0x43')](0x0,_0x4bcb7f[_0xf05d('0x44')]('_'));var _0x4c4d3a=_0x4bcb7f[_0xf05d('0x43')](_0x4bcb7f[_0xf05d('0x44')]('_')+0x1);if(_0x5215be===_0x4939e1){_0x56ccaa[_0x4c4d3a]=_0x4bcc19['content'];}}});}return _0x56ccaa;}function getTicket(_0x43fe0d,_0xa5e2ec,_0x4577c2,_0x1ab71b,_0x2fa40a,_0x1e5870,_0x31450d){return new Promise(function(_0x50f71f,_0x23f812){var _0x3a1420;return getAuthToken(_0xa5e2ec,_0x4577c2,_0x31450d)[_0xf05d('0x1f')](function(_0x6d86e3){if(_0x1e5870['ticketType']===_0xf05d('0x45')){_0x3a1420={'method':_0xf05d('0x13'),'uri':_0x1ab71b+_0xf05d('0x46'),'body':Object['assign']({},{'title':intUtil[_0xf05d('0x47')](_0x1e5870[_0xf05d('0x48')],_0x2fa40a,'\x20'),'description':intUtil[_0xf05d('0x47')](_0x1e5870['Descriptions'],_0x2fa40a,'\x0a'),'customerid_contact@odata.bind':_0x43fe0d[_0xf05d('0x34')]?'/contacts('+_0x43fe0d[_0xf05d('0x34')]+')':undefined,'ownerid@odata.bind':_0xf05d('0x30')+_0x43fe0d[_0xf05d('0x2a')]+')','caseorigincode':'1'},getCustomFields(_0x1e5870[_0xf05d('0x49')],_0x2fa40a,_0x1e5870['ticketType'])),'headers':{'Authorization':_0xf05d('0x1d')+_0x6d86e3,'OData-Version':_0xf05d('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1e5870['ticketType']===_0xf05d('0x4a')){var _0x3ea801=_0x43fe0d[_0xf05d('0x34')]?[{'partyid_systemuser@odata.bind':_0xf05d('0x30')+_0x43fe0d[_0xf05d('0x2a')]+')','participationtypemask':_0x43fe0d['callDirection']===_0xf05d('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0xf05d('0x4c')+_0x43fe0d['enduserId']+')','participationtypemask':_0x43fe0d['callDirection']===_0xf05d('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xf05d('0x30')+_0x43fe0d['userId']+')','participationtypemask':_0x43fe0d[_0xf05d('0x4d')]==='queue'?0x2:0x1}];_0x3a1420={'method':'POST','uri':_0x1ab71b+_0xf05d('0x4e'),'body':Object[_0xf05d('0x4f')]({},{'subject':intUtil[_0xf05d('0x47')](_0x1e5870[_0xf05d('0x48')],_0x2fa40a,'\x20'),'phonenumber':String(_0x2fa40a[_0xf05d('0x2e')]),'description':intUtil[_0xf05d('0x47')](_0x1e5870[_0xf05d('0x50')],_0x2fa40a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x43fe0d[_0xf05d('0x34')]?_0xf05d('0x4c')+_0x43fe0d[_0xf05d('0x34')]+')':undefined,'ownerid@odata.bind':_0xf05d('0x30')+_0x43fe0d[_0xf05d('0x2a')]+')','directioncode':_0x43fe0d[_0xf05d('0x4d')]===_0xf05d('0x4b')?![]:!![],'phonecall_activity_parties':_0x3ea801},getCustomFields(_0x1e5870[_0xf05d('0x49')],_0x2fa40a,_0x1e5870[_0xf05d('0x51')])),'headers':{'Authorization':_0xf05d('0x1d')+_0x6d86e3,'OData-Version':_0xf05d('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3a1420);})[_0xf05d('0x1f')](function(_0x3951b4){var _0x3adfe5=_0x3951b4[_0xf05d('0x31')]['odata-entityid'];var _0x2df47f=_0x3adfe5[_0xf05d('0x43')](_0x3adfe5[_0xf05d('0x33')]('(')+0x1,_0x3adfe5[_0xf05d('0x33')](')'));_0x43fe0d[_0xf05d('0x52')]=_0x2df47f;_0x50f71f(_0x43fe0d);})[_0xf05d('0x18')](function(_0x3ef34e){_0x23f812(_0x3ef34e[_0xf05d('0x1a')]);});});}function emit(_0x2d19f1,_0x26a736,_0x42cf2d,_0x4b7202){var _0x525ebf={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x2d19f1,_0x42cf2d,_0x4b7202)};io['to'](util['format'](_0xf05d('0x53'),_0x26a736))[_0xf05d('0x54')]('trigger:browser:url',_0x525ebf);}exports['cs']=function(_0x3157d4,_0x4d5e2b,_0x4eb5ba,_0x329200,_0xe12587,_0x4c8cbf,_0x22f513,_0x2b9897){var _0xd9c765={};_0x4c8cbf[_0xf05d('0xe')]=_0x4c8cbf[_0xf05d('0xd')]?intUtil[_0xf05d('0x55')](_0x4c8cbf[_0xf05d('0xf')][_0xf05d('0x10')]):intUtil[_0xf05d('0x55')](_0x4c8cbf[_0xf05d('0xe')]);_0x4c8cbf[_0xf05d('0x56')]=intUtil['stripTrailingSlash'](_0x4c8cbf[_0xf05d('0x56')]);_0xd9c765[_0xf05d('0x4d')]=_0x2b9897===_0xf05d('0x4b')||_0x2b9897==='unmanaged'?_0xf05d('0x4b'):_0xf05d('0x35');var _0x1f6948=_0x4c8cbf[_0xf05d('0xd')]?util[_0xf05d('0x57')](_0xf05d('0x58'),_0x4c8cbf['CloudProvider'][_0xf05d('0x10')]):util[_0xf05d('0x57')](_0xf05d('0x58'),_0x4c8cbf[_0xf05d('0xe')]);var _0x1ab012=util[_0xf05d('0x57')]('https://login.microsoftonline.com/%s/oauth2/token',_0x4c8cbf[_0xf05d('0x11')]);var _0x1a5fb9=util[_0xf05d('0x57')](_0xf05d('0x59'),_0x4c8cbf[_0xf05d('0x56')],_0x4d5e2b['uniqueid'],md5(_0x4d5e2b['uniqueid']));if(_0xe12587&&_0xe12587[_0xf05d('0x5a')]){logger[_0xf05d('0x27')](_0xf05d('0x5b'),'Recording\x20is\x20enabled!');_0x4d5e2b[_0xf05d('0x5c')]=_0x1a5fb9;}else if(_0x22f513&&_0x22f513[_0xf05d('0x5d')]&&_0x22f513['recordingFormat']!==_0xf05d('0x5e')){logger[_0xf05d('0x27')](_0xf05d('0x5f'),'Recording\x20is\x20enabled!');_0x4d5e2b[_0xf05d('0x5c')]=_0x1a5fb9;}else{_0x4d5e2b['recordingURL']='';}return getUser(_0xd9c765,_0x4c8cbf,_0x329200,_0x1ab012,_0x1f6948,_0x2b9897)['then'](function(_0x4930bb){logger[_0xf05d('0x27')]('['+_0x2b9897[_0xf05d('0x28')]()+_0xf05d('0x60'),_0x4930bb[_0xf05d('0x2a')]);logger[_0xf05d('0x27')]('['+_0x2b9897[_0xf05d('0x28')]()+']\x20The\x20User\x20email\x20is:',_0x4930bb[_0xf05d('0x22')]);return getEndUser(_0x4930bb,_0x4c8cbf,_0x1ab012,_0x1f6948,_0x4d5e2b,_0x2b9897,_0x4eb5ba[_0xf05d('0x61')],_0x4eb5ba[_0xf05d('0x62')]);})[_0xf05d('0x1f')](function(_0x54326f){logger[_0xf05d('0x27')]('['+_0x2b9897['toUpperCase']()+_0xf05d('0x63'),_0x54326f['enduserId']);logger[_0xf05d('0x27')]('['+_0x2b9897[_0xf05d('0x28')]()+_0xf05d('0x64'),_0x4d5e2b[_0xf05d('0x2e')]);return getTicket(_0x54326f,_0x4c8cbf,_0x1ab012,_0x1f6948,_0x4d5e2b,_0x4eb5ba,_0x2b9897);})[_0xf05d('0x1f')](function(_0x509193){logger[_0xf05d('0x27')](util[_0xf05d('0x57')]('['+_0x2b9897[_0xf05d('0x28')]()+_0xf05d('0x65'),_0x4eb5ba[_0xf05d('0x51')],_0x509193[_0xf05d('0x52')]));logger[_0xf05d('0x27')](util['format']('['+_0x2b9897[_0xf05d('0x28')]()+_0xf05d('0x66'),_0x2b9897));if(_0x2b9897!=='unmanaged'&&_0x4eb5ba['openNewTab']){logger['info']('['+_0x2b9897[_0xf05d('0x28')]()+']',_0xf05d('0x67'));emit(_0x4c8cbf[_0xf05d('0xe')],_0x329200['name'],_0x4eb5ba['ticketType'],_0x509193[_0xf05d('0x52')]);}})[_0xf05d('0x18')](function(_0x5706eb){logger[_0xf05d('0x68')]('['+_0x2b9897[_0xf05d('0x28')]()+_0xf05d('0x69'),_0x5706eb[_0xf05d('0x1a')]);console[_0xf05d('0x68')](_0xf05d('0x6a'),_0x5706eb);});};