Built motion from commit 3c2ce842.|2.6.31
[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 _0x06bf=['nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','Fields','phonecall','queue','callDirection','phonecalls','Subjects','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','trigger:browser:url','serverUrl','stripTrailingSlash','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','none','[OUTBOUND]',']\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','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','ioredis','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','POST','clientId','username','password','clientSecret','then','catch','error',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','userEmail','length','internalemailaddress','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','substring','lastIndexOf','enduserId','outbound','telephone1','&$filter=','\x20eq\x20\x27','replace'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x06bf,0x110));var _0xf06b=function(_0x1dac1f,_0x4d84e9){_0x1dac1f=_0x1dac1f-0x0;var _0x10f42f=_0x06bf[_0x1dac1f];return _0x10f42f;};'use strict';var _=require(_0xf06b('0x0'));var rp=require(_0xf06b('0x1'));var util=require('util');var intUtil=require(_0xf06b('0x2'));var md5=require('md5');var Redis=require(_0xf06b('0x3'));var logger=require('../../../../config/logger')('dynamics365');var config=require(_0xf06b('0x4'));config[_0xf06b('0x5')]=_[_0xf06b('0x6')](config[_0xf06b('0x5')],{'host':_0xf06b('0x7'),'port':0x18eb});var io=require(_0xf06b('0x8'))(new Redis(config[_0xf06b('0x5')]));function getAuthToken(_0x183840,_0x15d2e2,_0x372dfa){if(_0x183840[_0xf06b('0x9')]){_0x183840[_0xf06b('0xa')]=_0x183840[_0xf06b('0xb')][_0xf06b('0xc')];_0x183840[_0xf06b('0xd')]=_0x183840[_0xf06b('0xb')]['data2'];return Promise['resolve'](_0x183840['CloudProvider']['data5']);}var _0x1aff31={'method':_0xf06b('0xe'),'uri':_0x15d2e2,'form':{'client_id':_0x183840[_0xf06b('0xf')],'resource':_0x183840['remoteUri'],'username':_0x183840[_0xf06b('0x10')],'password':_0x183840['password'],'grant_type':_0xf06b('0x11'),'client_secret':_0x183840[_0xf06b('0x12')]},'json':!![]};return rp(_0x1aff31)[_0xf06b('0x13')](function(_0x51eee7){return _0x51eee7['access_token'];})[_0xf06b('0x14')](function(_0x3de233){logger[_0xf06b('0x15')]('['+[_0x372dfa['toUpperCase']()]+_0xf06b('0x16'));return _0x3de233[_0xf06b('0x17')];});}function getUser(_0x200908,_0x27ff7a,_0x438900,_0x761148,_0x1e9acf,_0xb3b566){return new Promise(function(_0x15d31b,_0x26a11f){return getAuthToken(_0x27ff7a,_0x761148,_0xb3b566)[_0xf06b('0x13')](function(_0x25bd18){var _0x590a92={'method':_0xf06b('0x18'),'uri':_0x1e9acf+_0xf06b('0x19'),'headers':{'Authorization':_0xf06b('0x1a')+_0x25bd18,'OData-Version':_0xf06b('0x1b')},'json':!![]};return rp(_0x590a92);})[_0xf06b('0x13')](function(_0x352ef2){var _0x4e6233=_0x352ef2[_0xf06b('0x1c')];var _0x468712=![];var _0x31aaa3=null;if(!_[_0xf06b('0x1d')](_0x438900)){if(intUtil['validateEmail'](_0x438900[_0xf06b('0x1e')])){_0x200908[_0xf06b('0x1f')]=_0x438900['email'];for(_0x31aaa3=0x0;_0x31aaa3<_0x4e6233[_0xf06b('0x20')];_0x31aaa3++){if(_0x4e6233[_0x31aaa3][_0xf06b('0x21')]===_0x438900[_0xf06b('0x1e')]&&!_0x4e6233[_0x31aaa3]['isdisabled']){_0x468712=!![];logger[_0xf06b('0x22')]('['+[_0xb3b566[_0xf06b('0x23')]()]+_0xf06b('0x24')+_0x4e6233[_0x31aaa3][_0xf06b('0x25')]+'!');_0x200908[_0xf06b('0x26')]=_0x4e6233[_0x31aaa3][_0xf06b('0x25')];}}}}if(!_0x468712){logger[_0xf06b('0x22')]('['+[_0xb3b566[_0xf06b('0x23')]()]+_0xf06b('0x27'));_0x200908[_0xf06b('0x1f')]=_0x27ff7a[_0xf06b('0x10')];for(_0x31aaa3=0x0;_0x31aaa3<_0x4e6233[_0xf06b('0x20')];_0x31aaa3++){if(_0x4e6233[_0x31aaa3][_0xf06b('0x21')]===_0x27ff7a[_0xf06b('0x10')]){_0x200908[_0xf06b('0x26')]=_0x4e6233[_0x31aaa3][_0xf06b('0x25')];}}}_0x15d31b(_0x200908);})['catch'](function(_0x51a393){_0x26a11f(_0x51a393[_0xf06b('0x17')]);});});}function createEndUser(_0x4c7a90,_0x1530aa,_0x4beb02,_0x39cbab,_0x24bdfe,_0x1d8367,_0x15ccea){return new Promise(function(_0x3dfc2c,_0x439f04){return getAuthToken(_0x1530aa,_0x4beb02,_0x1d8367)['then'](function(_0x415b5c){var _0x2ddd46=_0x1d8367[_0xf06b('0x28')]()==='outbound'?_0x24bdfe[_0xf06b('0x29')]:_0x24bdfe[_0xf06b('0x2a')];var _0x284b00={'method':_0xf06b('0xe'),'uri':_0x39cbab+_0xf06b('0x2b'),'body':{'fullname':_0x2ddd46,'firstname':_0x2ddd46,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf06b('0x2c')+_0x4c7a90[_0xf06b('0x26')]+')'},'headers':{'Authorization':_0xf06b('0x1a')+_0x415b5c,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x284b00[_0xf06b('0x2d')][_0x15ccea]=_0x2ddd46;return rp(_0x284b00);})['then'](function(_0x2c6b41){var _0x3f5f88=_0x2c6b41[_0xf06b('0x2e')]['odata-entityid'];var _0x101938=_0x3f5f88[_0xf06b('0x2f')](_0x3f5f88[_0xf06b('0x30')]('(')+0x1,_0x3f5f88[_0xf06b('0x30')](')'));_0x4c7a90[_0xf06b('0x31')]=_0x101938;_0x3dfc2c(_0x4c7a90);})[_0xf06b('0x14')](function(_0x4c35d4){_0x439f04(_0x4c35d4[_0xf06b('0x17')]);});});}function getEndUser(_0x99a20f,_0x611834,_0x2f1dac,_0x114a20,_0x27175d,_0x27b069,_0xc5f5dd,_0xa19385){var _0x5c90b2=_0x27b069[_0xf06b('0x28')]()===_0xf06b('0x32')?_0x27175d[_0xf06b('0x29')]:_0x27175d[_0xf06b('0x2a')];return getAuthToken(_0x611834,_0x2f1dac,_0x27b069)['then'](function(_0x570dc2){_0xa19385=_0xa19385?_0xa19385:_0xf06b('0x33');var _0x2358b3={'method':_0xf06b('0x18'),'uri':_0x114a20+'contacts?$select='+_0xa19385+_0xf06b('0x34')+_0xa19385+_0xf06b('0x35')+_0x5c90b2[_0xf06b('0x36')]('+','%2b')+'\x27','headers':{'Authorization':'Bearer\x20'+_0x570dc2,'If-None-Match':null,'OData-Version':_0xf06b('0x1b')},'json':!![]};return rp(_0x2358b3);})[_0xf06b('0x13')](function(_0x1110a6){var _0x5359de=![];if(!_0x1110a6)return _0x5359de;var _0xea9d03=_0x1110a6[_0xf06b('0x1c')];for(var _0x5811a8=0x0;_0x5811a8<_0xea9d03[_0xf06b('0x20')];_0x5811a8++){if(_0xea9d03[_0x5811a8][_0xa19385]===_0x5c90b2){_0x5359de=!![];_0x99a20f[_0xf06b('0x31')]=_0xea9d03[_0x5811a8]['contactid'];}}return _0x5359de;})[_0xf06b('0x13')](function(_0x47f804){if(_0x47f804)return _0x99a20f;if(_0xc5f5dd===_0xf06b('0x37')){logger[_0xf06b('0x22')]('['+[_0x27b069[_0xf06b('0x23')]()]+_0xf06b('0x38'));return _0x99a20f;}return createEndUser(_0x99a20f,_0x611834,_0x2f1dac,_0x114a20,_0x27175d,_0x27b069,_0xa19385)[_0xf06b('0x13')](function(_0x44f6c6){logger[_0xf06b('0x22')]('['+[_0x27b069['toUpperCase']()]+']\x20Enduser\x20created!',_0x44f6c6[_0xf06b('0x31')]);return _0x44f6c6;});});}function getCustomFields(_0x23b942,_0x9cd347,_0x2e4821){var _0x38cbf1={};if(_0x23b942[_0xf06b('0x20')]>0x0){_[_0xf06b('0x39')](_0x23b942,function(_0x2e316d){if(_['includes'](['string',_0xf06b('0x3a')],_0x2e316d[_0xf06b('0x3b')])&&_0x2e316d[_0xf06b('0x3c')]&&!_0x2e316d[_0xf06b('0x3d')]){var _0x5b9726=_0x2e316d[_0xf06b('0x3e')][_0xf06b('0x28')]();var _0x37a70e=_0x5b9726[_0xf06b('0x2f')](0x0,_0x5b9726[_0xf06b('0x3f')]('_'));var _0x27e3b6=_0x5b9726[_0xf06b('0x2f')](_0x5b9726[_0xf06b('0x3f')]('_')+0x1);if(_0x37a70e===_0x2e4821){_0x38cbf1[_0x27e3b6]=_0x2e316d[_0xf06b('0x40')];}}});}return _0x38cbf1;}function getTicket(_0x575716,_0x1f7097,_0x3118a0,_0x3fd8fa,_0xfc54e7,_0x153f1f,_0x5ba3f3){return new Promise(function(_0x363180,_0xabc74){var _0x336224;return getAuthToken(_0x1f7097,_0x3118a0,_0x5ba3f3)[_0xf06b('0x13')](function(_0x325921){if(_0x153f1f[_0xf06b('0x41')]===_0xf06b('0x42')){_0x336224={'method':_0xf06b('0xe'),'uri':_0x3fd8fa+_0xf06b('0x43'),'body':Object[_0xf06b('0x44')]({},{'title':intUtil[_0xf06b('0x45')](_0x153f1f['Subjects'],_0xfc54e7,'\x20'),'description':intUtil['getString'](_0x153f1f[_0xf06b('0x46')],_0xfc54e7,'\x0a'),'customerid_contact@odata.bind':_0x575716['enduserId']?_0xf06b('0x47')+_0x575716['enduserId']+')':undefined,'ownerid@odata.bind':_0xf06b('0x2c')+_0x575716[_0xf06b('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x153f1f[_0xf06b('0x48')],_0xfc54e7,_0x153f1f[_0xf06b('0x41')])),'headers':{'Authorization':'Bearer\x20'+_0x325921,'OData-Version':_0xf06b('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x153f1f[_0xf06b('0x41')]===_0xf06b('0x49')){var _0x2b4ca3=_0x575716[_0xf06b('0x31')]?[{'partyid_systemuser@odata.bind':_0xf06b('0x2c')+_0x575716[_0xf06b('0x26')]+')','participationtypemask':_0x575716['callDirection']===_0xf06b('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0xf06b('0x47')+_0x575716[_0xf06b('0x31')]+')','participationtypemask':_0x575716['callDirection']===_0xf06b('0x4a')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xf06b('0x2c')+_0x575716['userId']+')','participationtypemask':_0x575716[_0xf06b('0x4b')]===_0xf06b('0x4a')?0x2:0x1}];_0x336224={'method':_0xf06b('0xe'),'uri':_0x3fd8fa+_0xf06b('0x4c'),'body':Object[_0xf06b('0x44')]({},{'subject':intUtil[_0xf06b('0x45')](_0x153f1f[_0xf06b('0x4d')],_0xfc54e7,'\x20'),'phonenumber':String(_0xfc54e7[_0xf06b('0x2a')]),'description':intUtil[_0xf06b('0x45')](_0x153f1f[_0xf06b('0x46')],_0xfc54e7,'\x0a'),'regardingobjectid_contact@odata.bind':_0x575716[_0xf06b('0x31')]?_0xf06b('0x47')+_0x575716[_0xf06b('0x31')]+')':undefined,'ownerid@odata.bind':_0xf06b('0x2c')+_0x575716[_0xf06b('0x26')]+')','directioncode':_0x575716[_0xf06b('0x4b')]===_0xf06b('0x4a')?![]:!![],'phonecall_activity_parties':_0x2b4ca3},getCustomFields(_0x153f1f[_0xf06b('0x48')],_0xfc54e7,_0x153f1f['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x325921,'OData-Version':_0xf06b('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x336224);})[_0xf06b('0x13')](function(_0xf6d2cb){var _0x242ee2=_0xf6d2cb[_0xf06b('0x2e')][_0xf06b('0x4e')];var _0x5d0a48=_0x242ee2[_0xf06b('0x2f')](_0x242ee2[_0xf06b('0x30')]('(')+0x1,_0x242ee2[_0xf06b('0x30')](')'));_0x575716[_0xf06b('0x4f')]=_0x5d0a48;_0x363180(_0x575716);})[_0xf06b('0x14')](function(_0x5a5c51){_0xabc74(_0x5a5c51['message']);});});}function emit(_0x1531c0,_0x5c3861,_0x85013e,_0x1433ed){var _0x52539b={'uri':util[_0xf06b('0x50')](_0xf06b('0x51'),_0x1531c0,_0x85013e,_0x1433ed)};io['to'](util[_0xf06b('0x50')](_0xf06b('0x52'),_0x5c3861))['emit'](_0xf06b('0x53'),_0x52539b);}exports['cs']=function(_0x301324,_0x2aa8ca,_0x52fca9,_0x1c0a74,_0x2b919e,_0x174a74,_0x42976d,_0xe5813e){var _0x325c82={};_0x174a74['remoteUri']=_0x174a74[_0xf06b('0x9')]?intUtil['stripTrailingSlash'](_0x174a74[_0xf06b('0xb')]['data7']):intUtil['stripTrailingSlash'](_0x174a74[_0xf06b('0xa')]);_0x174a74[_0xf06b('0x54')]=intUtil[_0xf06b('0x55')](_0x174a74[_0xf06b('0x54')]);_0x325c82['callDirection']=_0xe5813e==='queue'||_0xe5813e===_0xf06b('0x56')?_0xf06b('0x4a'):_0xf06b('0x32');var _0x5cd027=_0x174a74[_0xf06b('0x9')]?util[_0xf06b('0x50')](_0xf06b('0x57'),_0x174a74[_0xf06b('0xb')][_0xf06b('0xc')]):util['format'](_0xf06b('0x57'),_0x174a74[_0xf06b('0xa')]);var _0xe77015=util['format'](_0xf06b('0x58'),_0x174a74[_0xf06b('0xd')]);var _0x592091=util[_0xf06b('0x50')](_0xf06b('0x59'),_0x174a74['serverUrl'],_0x2aa8ca[_0xf06b('0x5a')],md5(_0x2aa8ca[_0xf06b('0x5a')]));if(_0x2b919e&&_0x2b919e[_0xf06b('0x5b')]){logger[_0xf06b('0x22')](_0xf06b('0x5c'),_0xf06b('0x5d'));_0x2aa8ca[_0xf06b('0x5e')]=_0x592091;}else if(_0x42976d&&_0x42976d[_0xf06b('0x5f')]&&_0x42976d[_0xf06b('0x5f')]!==_0xf06b('0x60')){logger[_0xf06b('0x22')](_0xf06b('0x61'),_0xf06b('0x5d'));_0x2aa8ca['recordingURL']=_0x592091;}else{_0x2aa8ca[_0xf06b('0x5e')]='';}return getUser(_0x325c82,_0x174a74,_0x1c0a74,_0xe77015,_0x5cd027,_0xe5813e)[_0xf06b('0x13')](function(_0x3b02ec){logger[_0xf06b('0x22')]('['+_0xe5813e['toUpperCase']()+_0xf06b('0x62'),_0x3b02ec[_0xf06b('0x26')]);logger[_0xf06b('0x22')]('['+_0xe5813e[_0xf06b('0x23')]()+_0xf06b('0x63'),_0x3b02ec[_0xf06b('0x1f')]);return getEndUser(_0x3b02ec,_0x174a74,_0xe77015,_0x5cd027,_0x2aa8ca,_0xe5813e,_0x52fca9[_0xf06b('0x64')],_0x52fca9[_0xf06b('0x65')]);})[_0xf06b('0x13')](function(_0x319f17){logger[_0xf06b('0x22')]('['+_0xe5813e['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x319f17[_0xf06b('0x31')]);logger[_0xf06b('0x22')]('['+_0xe5813e[_0xf06b('0x23')]()+_0xf06b('0x66'),_0x2aa8ca['calleridnum']);return getTicket(_0x319f17,_0x174a74,_0xe77015,_0x5cd027,_0x2aa8ca,_0x52fca9,_0xe5813e);})[_0xf06b('0x13')](function(_0x100ead){logger['info'](util[_0xf06b('0x50')]('['+_0xe5813e[_0xf06b('0x23')]()+_0xf06b('0x67'),_0x52fca9[_0xf06b('0x41')],_0x100ead[_0xf06b('0x4f')]));logger[_0xf06b('0x22')](util[_0xf06b('0x50')]('['+_0xe5813e['toUpperCase']()+_0xf06b('0x68'),_0xe5813e));if(_0xe5813e!=='unmanaged'&&_0x52fca9[_0xf06b('0x69')]){logger[_0xf06b('0x22')]('['+_0xe5813e[_0xf06b('0x23')]()+']',_0xf06b('0x6a'));emit(_0x174a74['remoteUri'],_0x1c0a74['name'],_0x52fca9[_0xf06b('0x41')],_0x100ead[_0xf06b('0x4f')]);}})['catch'](function(_0x32c1fb){logger[_0xf06b('0x15')]('['+_0xe5813e['toUpperCase']()+_0xf06b('0x6b'),_0x32c1fb['message']);console[_0xf06b('0x15')](_0xf06b('0x6c'),_0x32c1fb);});};