f6f633a0cfdc017d0d520fe6e9e4a7d4db0ee2ea
[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 _0xcd9d=['recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','md5','dynamics365','redis','defaults','socket.io-emitter','remoteUri','CloudProvider','tenantId','data2','resolve','data5','POST','clientId','username','clientSecret','then','access_token','catch','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','length','userId','outbound','calleridnum','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','customField','idField','toLowerCase','indexOf','ticketType','incident','incidents','assign','getString','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','Subjects','Descriptions','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','data7','serverUrl','unmanaged','format','%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]'];(function(_0x4601be,_0x134d63){var _0x34ba3a=function(_0x4da4d2){while(--_0x4da4d2){_0x4601be['push'](_0x4601be['shift']());}};_0x34ba3a(++_0x134d63);}(_0xcd9d,0xe9));var _0xdcd9=function(_0x5458df,_0x54347c){_0x5458df=_0x5458df-0x0;var _0x6e34bb=_0xcd9d[_0x5458df];return _0x6e34bb;};'use strict';var _=require('lodash');var rp=require(_0xdcd9('0x0'));var util=require(_0xdcd9('0x1'));var intUtil=require(_0xdcd9('0x2'));var md5=require(_0xdcd9('0x3'));var Redis=require('ioredis');var logger=require('../../../../config/logger')(_0xdcd9('0x4'));var config=require('../../../../config/environment');config[_0xdcd9('0x5')]=_[_0xdcd9('0x6')](config[_0xdcd9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xdcd9('0x7'))(new Redis(config[_0xdcd9('0x5')]));function getAuthToken(_0x152709,_0x5d894c,_0x3b3aa8){if(_0x152709['modernAuthentication']){_0x152709[_0xdcd9('0x8')]=_0x152709[_0xdcd9('0x9')]['data7'];_0x152709[_0xdcd9('0xa')]=_0x152709[_0xdcd9('0x9')][_0xdcd9('0xb')];return Promise[_0xdcd9('0xc')](_0x152709[_0xdcd9('0x9')][_0xdcd9('0xd')]);}var _0x1c55c8={'method':_0xdcd9('0xe'),'uri':_0x5d894c,'form':{'client_id':_0x152709[_0xdcd9('0xf')],'resource':_0x152709['remoteUri'],'username':_0x152709[_0xdcd9('0x10')],'password':_0x152709['password'],'grant_type':'password','client_secret':_0x152709[_0xdcd9('0x11')]},'json':!![]};return rp(_0x1c55c8)[_0xdcd9('0x12')](function(_0x48d97d){return _0x48d97d[_0xdcd9('0x13')];})[_0xdcd9('0x14')](function(_0x43b118){logger[_0xdcd9('0x15')]('['+[_0x3b3aa8[_0xdcd9('0x16')]()]+']\x20Wrong\x20credentials!');return _0x43b118[_0xdcd9('0x17')];});}function getUser(_0x1afef6,_0x5accb7,_0x3152fc,_0x481570,_0x31661c,_0x1de7be){return new Promise(function(_0x446df2,_0x1a799f){return getAuthToken(_0x5accb7,_0x481570,_0x1de7be)['then'](function(_0x40679c){var _0xbc91e1={'method':_0xdcd9('0x18'),'uri':_0x31661c+_0xdcd9('0x19'),'headers':{'Authorization':_0xdcd9('0x1a')+_0x40679c,'OData-Version':_0xdcd9('0x1b')},'json':!![]};return rp(_0xbc91e1);})['then'](function(_0x4db8a1){var _0x27b3d9=_0x4db8a1[_0xdcd9('0x1c')];var _0x48ea76=![];var _0x6c3b5b=null;if(!_[_0xdcd9('0x1d')](_0x3152fc)){if(intUtil[_0xdcd9('0x1e')](_0x3152fc[_0xdcd9('0x1f')])){_0x1afef6[_0xdcd9('0x20')]=_0x3152fc[_0xdcd9('0x1f')];for(_0x6c3b5b=0x0;_0x6c3b5b<_0x27b3d9['length'];_0x6c3b5b++){if(_0x27b3d9[_0x6c3b5b][_0xdcd9('0x21')]===_0x3152fc[_0xdcd9('0x1f')]&&!_0x27b3d9[_0x6c3b5b][_0xdcd9('0x22')]){_0x48ea76=!![];logger[_0xdcd9('0x23')]('['+[_0x1de7be[_0xdcd9('0x16')]()]+_0xdcd9('0x24')+_0x27b3d9[_0x6c3b5b][_0xdcd9('0x25')]+'!');_0x1afef6['userId']=_0x27b3d9[_0x6c3b5b][_0xdcd9('0x25')];}}}}if(!_0x48ea76){logger[_0xdcd9('0x23')]('['+[_0x1de7be[_0xdcd9('0x16')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x1afef6[_0xdcd9('0x20')]=_0x5accb7[_0xdcd9('0x10')];for(_0x6c3b5b=0x0;_0x6c3b5b<_0x27b3d9[_0xdcd9('0x26')];_0x6c3b5b++){if(_0x27b3d9[_0x6c3b5b][_0xdcd9('0x21')]===_0x5accb7[_0xdcd9('0x10')]){_0x1afef6[_0xdcd9('0x27')]=_0x27b3d9[_0x6c3b5b]['systemuserid'];}}}_0x446df2(_0x1afef6);})[_0xdcd9('0x14')](function(_0xba4c4f){_0x1a799f(_0xba4c4f[_0xdcd9('0x17')]);});});}function createEndUser(_0x153057,_0x32156b,_0x11cc1f,_0x520b89,_0x58b0be,_0x742711,_0x4f68da){return new Promise(function(_0x900df4,_0x334811){return getAuthToken(_0x32156b,_0x11cc1f,_0x742711)['then'](function(_0xe8c77f){var _0x3f1c3b=_0x742711['toLowerCase']()===_0xdcd9('0x28')?_0x58b0be['destcalleridnum']:_0x58b0be[_0xdcd9('0x29')];var _0x425ae9={'method':_0xdcd9('0xe'),'uri':_0x520b89+'contacts','body':{'fullname':_0x3f1c3b,'firstname':_0x3f1c3b,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xdcd9('0x2a')+_0x153057['userId']+')'},'headers':{'Authorization':_0xdcd9('0x1a')+_0xe8c77f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x425ae9[_0xdcd9('0x2b')][_0x4f68da]=_0x3f1c3b;return rp(_0x425ae9);})[_0xdcd9('0x12')](function(_0x5ec8d5){var _0x54813f=_0x5ec8d5[_0xdcd9('0x2c')][_0xdcd9('0x2d')];var _0x4156d9=_0x54813f[_0xdcd9('0x2e')](_0x54813f[_0xdcd9('0x2f')]('(')+0x1,_0x54813f[_0xdcd9('0x2f')](')'));_0x153057[_0xdcd9('0x30')]=_0x4156d9;_0x900df4(_0x153057);})[_0xdcd9('0x14')](function(_0x118106){_0x334811(_0x118106[_0xdcd9('0x17')]);});});}function getEndUser(_0x14a651,_0x576fcd,_0x3b66a0,_0x1bc1b7,_0x79ac9e,_0x5e6a2c,_0x302fbb,_0x6c0ac5){var _0x324952=_0x5e6a2c['toLowerCase']()===_0xdcd9('0x28')?_0x79ac9e['destcalleridnum']:_0x79ac9e[_0xdcd9('0x29')];return getAuthToken(_0x576fcd,_0x3b66a0,_0x5e6a2c)['then'](function(_0x5ad53f){_0x6c0ac5=_0x6c0ac5?_0x6c0ac5:_0xdcd9('0x31');var _0x389457={'method':_0xdcd9('0x18'),'uri':_0x1bc1b7+_0xdcd9('0x32')+_0x6c0ac5+_0xdcd9('0x33')+_0x6c0ac5+_0xdcd9('0x34')+_0x324952['replace']('+',_0xdcd9('0x35'))+'\x27','headers':{'Authorization':_0xdcd9('0x1a')+_0x5ad53f,'If-None-Match':null,'OData-Version':_0xdcd9('0x1b')},'json':!![]};return rp(_0x389457);})['then'](function(_0x13bd72){var _0x310a43=![];if(!_0x13bd72)return _0x310a43;var _0x28cf43=_0x13bd72['value'];for(var _0x136251=0x0;_0x136251<_0x28cf43['length'];_0x136251++){if(_0x28cf43[_0x136251][_0x6c0ac5]===_0x324952){_0x310a43=!![];_0x14a651[_0xdcd9('0x30')]=_0x28cf43[_0x136251][_0xdcd9('0x36')];}}return _0x310a43;})['then'](function(_0x158478){if(_0x158478)return _0x14a651;if(_0x302fbb===_0xdcd9('0x37')){logger[_0xdcd9('0x23')]('['+[_0x5e6a2c[_0xdcd9('0x16')]()]+_0xdcd9('0x38'));return _0x14a651;}return createEndUser(_0x14a651,_0x576fcd,_0x3b66a0,_0x1bc1b7,_0x79ac9e,_0x5e6a2c,_0x6c0ac5)[_0xdcd9('0x12')](function(_0x35ab10){logger[_0xdcd9('0x23')]('['+[_0x5e6a2c['toUpperCase']()]+_0xdcd9('0x39'),_0x35ab10['enduserId']);return _0x35ab10;});});}function getCustomFields(_0x2675d0,_0x130c18,_0x158ad8){var _0x3a8bb8={};if(_0x2675d0[_0xdcd9('0x26')]>0x0){_[_0xdcd9('0x3a')](_0x2675d0,function(_0x2570cc){if(_[_0xdcd9('0x3b')]([_0xdcd9('0x3c'),_0xdcd9('0x3d')],_0x2570cc[_0xdcd9('0x3e')])&&_0x2570cc['nameField']&&!_0x2570cc[_0xdcd9('0x3f')]){var _0x34dddd=_0x2570cc[_0xdcd9('0x40')][_0xdcd9('0x41')]();var _0x9cbda0=_0x34dddd[_0xdcd9('0x2e')](0x0,_0x34dddd[_0xdcd9('0x42')]('_'));var _0xa9d57c=_0x34dddd[_0xdcd9('0x2e')](_0x34dddd['indexOf']('_')+0x1);if(_0x9cbda0===_0x158ad8){_0x3a8bb8[_0xa9d57c]=_0x2570cc['content'];}}});}return _0x3a8bb8;}function getTicket(_0x1defe6,_0x5ec0a1,_0x459369,_0x1d0afd,_0x178bfa,_0x14058e,_0x37422a){return new Promise(function(_0x3ac39d,_0x39414e){var _0x5e125e;return getAuthToken(_0x5ec0a1,_0x459369,_0x37422a)['then'](function(_0x538aa0){if(_0x14058e[_0xdcd9('0x43')]===_0xdcd9('0x44')){_0x5e125e={'method':'POST','uri':_0x1d0afd+_0xdcd9('0x45'),'body':Object[_0xdcd9('0x46')]({},{'title':intUtil[_0xdcd9('0x47')](_0x14058e['Subjects'],_0x178bfa,'\x20'),'description':intUtil[_0xdcd9('0x47')](_0x14058e['Descriptions'],_0x178bfa,'\x0a'),'customerid_contact@odata.bind':_0x1defe6['enduserId']?_0xdcd9('0x48')+_0x1defe6[_0xdcd9('0x30')]+')':undefined,'ownerid@odata.bind':_0xdcd9('0x2a')+_0x1defe6[_0xdcd9('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x14058e[_0xdcd9('0x49')],_0x178bfa,_0x14058e[_0xdcd9('0x43')])),'headers':{'Authorization':_0xdcd9('0x1a')+_0x538aa0,'OData-Version':_0xdcd9('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x14058e['ticketType']===_0xdcd9('0x4a')){var _0x2e7c6e=_0x1defe6[_0xdcd9('0x30')]?[{'partyid_systemuser@odata.bind':_0xdcd9('0x2a')+_0x1defe6[_0xdcd9('0x27')]+')','participationtypemask':_0x1defe6[_0xdcd9('0x4b')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xdcd9('0x48')+_0x1defe6[_0xdcd9('0x30')]+')','participationtypemask':_0x1defe6[_0xdcd9('0x4b')]===_0xdcd9('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xdcd9('0x2a')+_0x1defe6[_0xdcd9('0x27')]+')','participationtypemask':_0x1defe6[_0xdcd9('0x4b')]===_0xdcd9('0x4c')?0x2:0x1}];_0x5e125e={'method':'POST','uri':_0x1d0afd+_0xdcd9('0x4d'),'body':Object[_0xdcd9('0x46')]({},{'subject':intUtil[_0xdcd9('0x47')](_0x14058e[_0xdcd9('0x4e')],_0x178bfa,'\x20'),'phonenumber':String(_0x178bfa[_0xdcd9('0x29')]),'description':intUtil[_0xdcd9('0x47')](_0x14058e[_0xdcd9('0x4f')],_0x178bfa,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1defe6['enduserId']?_0xdcd9('0x48')+_0x1defe6[_0xdcd9('0x30')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x1defe6['userId']+')','directioncode':_0x1defe6[_0xdcd9('0x4b')]==='queue'?![]:!![],'phonecall_activity_parties':_0x2e7c6e},getCustomFields(_0x14058e[_0xdcd9('0x49')],_0x178bfa,_0x14058e[_0xdcd9('0x43')])),'headers':{'Authorization':_0xdcd9('0x1a')+_0x538aa0,'OData-Version':_0xdcd9('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5e125e);})['then'](function(_0x482e4e){var _0x212af4=_0x482e4e[_0xdcd9('0x2c')]['odata-entityid'];var _0x52bc2a=_0x212af4[_0xdcd9('0x2e')](_0x212af4[_0xdcd9('0x2f')]('(')+0x1,_0x212af4[_0xdcd9('0x2f')](')'));_0x1defe6[_0xdcd9('0x50')]=_0x52bc2a;_0x3ac39d(_0x1defe6);})['catch'](function(_0x681b2a){_0x39414e(_0x681b2a[_0xdcd9('0x17')]);});});}function emit(_0x3bc702,_0xa5a10f,_0x25a760,_0x1151a5){var _0x2c3107={'uri':util['format'](_0xdcd9('0x51'),_0x3bc702,_0x25a760,_0x1151a5)};io['to'](util['format'](_0xdcd9('0x52'),_0xa5a10f))[_0xdcd9('0x53')](_0xdcd9('0x54'),_0x2c3107);}exports['cs']=function(_0x3ca2e8,_0x5a84bb,_0x56c1a2,_0xdc1c07,_0x522683,_0xd1d8be,_0xa60774,_0x3e7b15){var _0x56c553={};_0xd1d8be['remoteUri']=_0xd1d8be[_0xdcd9('0x55')]?intUtil[_0xdcd9('0x56')](_0xd1d8be[_0xdcd9('0x9')][_0xdcd9('0x57')]):intUtil[_0xdcd9('0x56')](_0xd1d8be['remoteUri']);_0xd1d8be['serverUrl']=intUtil[_0xdcd9('0x56')](_0xd1d8be[_0xdcd9('0x58')]);_0x56c553[_0xdcd9('0x4b')]=_0x3e7b15===_0xdcd9('0x4c')||_0x3e7b15===_0xdcd9('0x59')?_0xdcd9('0x4c'):_0xdcd9('0x28');var _0x2f77b6=_0xd1d8be['modernAuthentication']?util['format']('%s/api/data/v9.0/',_0xd1d8be[_0xdcd9('0x9')][_0xdcd9('0x57')]):util[_0xdcd9('0x5a')](_0xdcd9('0x5b'),_0xd1d8be[_0xdcd9('0x8')]);var _0x212d4f=util['format'](_0xdcd9('0x5c'),_0xd1d8be[_0xdcd9('0xa')]);var _0x5c2a51=util[_0xdcd9('0x5a')](_0xdcd9('0x5d'),_0xd1d8be[_0xdcd9('0x58')],_0x5a84bb[_0xdcd9('0x5e')],md5(_0x5a84bb[_0xdcd9('0x5e')]));if(_0x522683&&_0x522683[_0xdcd9('0x5f')]){logger['info'](_0xdcd9('0x60'),'Recording\x20is\x20enabled!');_0x5a84bb[_0xdcd9('0x61')]=_0x5c2a51;}else if(_0xa60774&&_0xa60774[_0xdcd9('0x62')]&&_0xa60774['recordingFormat']!==_0xdcd9('0x63')){logger[_0xdcd9('0x23')](_0xdcd9('0x64'),_0xdcd9('0x65'));_0x5a84bb['recordingURL']=_0x5c2a51;}else{_0x5a84bb[_0xdcd9('0x61')]='';}return getUser(_0x56c553,_0xd1d8be,_0xdc1c07,_0x212d4f,_0x2f77b6,_0x3e7b15)['then'](function(_0x515901){logger[_0xdcd9('0x23')]('['+_0x3e7b15[_0xdcd9('0x16')]()+_0xdcd9('0x66'),_0x515901[_0xdcd9('0x27')]);logger['info']('['+_0x3e7b15[_0xdcd9('0x16')]()+_0xdcd9('0x67'),_0x515901[_0xdcd9('0x20')]);return getEndUser(_0x515901,_0xd1d8be,_0x212d4f,_0x2f77b6,_0x5a84bb,_0x3e7b15,_0x56c1a2['moduleCreate'],_0x56c1a2[_0xdcd9('0x68')]);})[_0xdcd9('0x12')](function(_0x45d644){logger[_0xdcd9('0x23')]('['+_0x3e7b15['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x45d644[_0xdcd9('0x30')]);logger[_0xdcd9('0x23')]('['+_0x3e7b15['toUpperCase']()+_0xdcd9('0x69'),_0x5a84bb[_0xdcd9('0x29')]);return getTicket(_0x45d644,_0xd1d8be,_0x212d4f,_0x2f77b6,_0x5a84bb,_0x56c1a2,_0x3e7b15);})[_0xdcd9('0x12')](function(_0x5a83e1){logger[_0xdcd9('0x23')](util[_0xdcd9('0x5a')]('['+_0x3e7b15['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x56c1a2[_0xdcd9('0x43')],_0x5a83e1[_0xdcd9('0x50')]));logger['info'](util[_0xdcd9('0x5a')]('['+_0x3e7b15[_0xdcd9('0x16')]()+_0xdcd9('0x6a'),_0x3e7b15));if(_0x3e7b15!=='unmanaged'&&_0x56c1a2['openNewTab']){logger[_0xdcd9('0x23')]('['+_0x3e7b15[_0xdcd9('0x16')]()+']',_0xdcd9('0x6b'));emit(_0xd1d8be[_0xdcd9('0x8')],_0xdc1c07[_0xdcd9('0x6c')],_0x56c1a2[_0xdcd9('0x43')],_0x5a83e1[_0xdcd9('0x50')]);}})[_0xdcd9('0x14')](function(_0x49accf){logger['error']('['+_0x3e7b15[_0xdcd9('0x16')]()+_0xdcd9('0x6d'),_0x49accf[_0xdcd9('0x17')]);console[_0xdcd9('0x15')]('Error\x20running\x20Dynamics365\x20integration',_0x49accf);});};