Built motion from commit 896e83a8.|2.6.30
[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 _0x4bdd=['%2b','enduserId','contactid',']\x20Enduser\x20created!','string','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','assign','Subjects','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','getString','lastIndexOf','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','trigger:browser:url','stripTrailingSlash','data7','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','request-promise','util','md5','ioredis','dynamics365','../../../../config/environment','redis','localhost','modernAuthentication','remoteUri','tenantId','data2','resolve','CloudProvider','data5','POST','clientId','username','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','message','Bearer\x20','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','info','userId','destcalleridnum','contacts','/systemusers(','4.0','body','headers','odata-entityid','substring','toLowerCase','outbound','calleridnum','GET','contacts?$select=','&$filter=','\x20eq\x20\x27','replace'];(function(_0x4ed1ac,_0x20fa95){var _0x346a43=function(_0x5c037e){while(--_0x5c037e){_0x4ed1ac['push'](_0x4ed1ac['shift']());}};_0x346a43(++_0x20fa95);}(_0x4bdd,0x10d));var _0xd4bd=function(_0x619347,_0x1d8a56){_0x619347=_0x619347-0x0;var _0x1eae94=_0x4bdd[_0x619347];return _0x1eae94;};'use strict';var _=require('lodash');var rp=require(_0xd4bd('0x0'));var util=require(_0xd4bd('0x1'));var intUtil=require('./util');var md5=require(_0xd4bd('0x2'));var Redis=require(_0xd4bd('0x3'));var logger=require('../../../../config/logger')(_0xd4bd('0x4'));var config=require(_0xd4bd('0x5'));config[_0xd4bd('0x6')]=_['defaults'](config[_0xd4bd('0x6')],{'host':_0xd4bd('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAuthToken(_0x5c6d7e,_0x4b8de8,_0x31ff87){if(_0x5c6d7e[_0xd4bd('0x8')]){_0x5c6d7e[_0xd4bd('0x9')]=_0x5c6d7e['CloudProvider']['data7'];_0x5c6d7e[_0xd4bd('0xa')]=_0x5c6d7e['CloudProvider'][_0xd4bd('0xb')];return Promise[_0xd4bd('0xc')](_0x5c6d7e[_0xd4bd('0xd')][_0xd4bd('0xe')]);}var _0x3950ad={'method':_0xd4bd('0xf'),'uri':_0x4b8de8,'form':{'client_id':_0x5c6d7e[_0xd4bd('0x10')],'resource':_0x5c6d7e['remoteUri'],'username':_0x5c6d7e[_0xd4bd('0x11')],'password':_0x5c6d7e[_0xd4bd('0x12')],'grant_type':_0xd4bd('0x12'),'client_secret':_0x5c6d7e[_0xd4bd('0x13')]},'json':!![]};return rp(_0x3950ad)[_0xd4bd('0x14')](function(_0x2abe4e){return _0x2abe4e[_0xd4bd('0x15')];})[_0xd4bd('0x16')](function(_0x266e9a){logger['error']('['+[_0x31ff87[_0xd4bd('0x17')]()]+_0xd4bd('0x18'));return _0x266e9a[_0xd4bd('0x19')];});}function getUser(_0x19ba5c,_0x3306b8,_0x542bc8,_0x41e6aa,_0x3ace71,_0x398ae8){return new Promise(function(_0x251a08,_0x403809){return getAuthToken(_0x3306b8,_0x41e6aa,_0x398ae8)[_0xd4bd('0x14')](function(_0x2e6ba2){var _0x180d2a={'method':'GET','uri':_0x3ace71+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xd4bd('0x1a')+_0x2e6ba2,'OData-Version':'4.0'},'json':!![]};return rp(_0x180d2a);})[_0xd4bd('0x14')](function(_0x40aa26){var _0x1f1000=_0x40aa26[_0xd4bd('0x1b')];var _0x1269c4=![];var _0x517a2e=null;if(!_[_0xd4bd('0x1c')](_0x542bc8)){if(intUtil[_0xd4bd('0x1d')](_0x542bc8[_0xd4bd('0x1e')])){_0x19ba5c[_0xd4bd('0x1f')]=_0x542bc8['email'];for(_0x517a2e=0x0;_0x517a2e<_0x1f1000[_0xd4bd('0x20')];_0x517a2e++){if(_0x1f1000[_0x517a2e][_0xd4bd('0x21')]===_0x542bc8['email']&&!_0x1f1000[_0x517a2e][_0xd4bd('0x22')]){_0x1269c4=!![];logger['info']('['+[_0x398ae8['toUpperCase']()]+_0xd4bd('0x23')+_0x1f1000[_0x517a2e][_0xd4bd('0x24')]+'!');_0x19ba5c['userId']=_0x1f1000[_0x517a2e]['systemuserid'];}}}}if(!_0x1269c4){logger[_0xd4bd('0x25')]('['+[_0x398ae8[_0xd4bd('0x17')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x19ba5c[_0xd4bd('0x1f')]=_0x3306b8[_0xd4bd('0x11')];for(_0x517a2e=0x0;_0x517a2e<_0x1f1000[_0xd4bd('0x20')];_0x517a2e++){if(_0x1f1000[_0x517a2e]['internalemailaddress']===_0x3306b8[_0xd4bd('0x11')]){_0x19ba5c[_0xd4bd('0x26')]=_0x1f1000[_0x517a2e][_0xd4bd('0x24')];}}}_0x251a08(_0x19ba5c);})['catch'](function(_0x105651){_0x403809(_0x105651[_0xd4bd('0x19')]);});});}function createEndUser(_0xba3554,_0x4f8e85,_0x3ad14b,_0x44e6d1,_0x1013ae,_0x4a265c,_0x5cbee3){return new Promise(function(_0x47a660,_0x2331eb){return getAuthToken(_0x4f8e85,_0x3ad14b,_0x4a265c)[_0xd4bd('0x14')](function(_0x5e8c33){var _0x2cc15c=_0x4a265c['toLowerCase']()==='outbound'?_0x1013ae[_0xd4bd('0x27')]:_0x1013ae['calleridnum'];var _0x523abb={'method':_0xd4bd('0xf'),'uri':_0x44e6d1+_0xd4bd('0x28'),'body':{'fullname':_0x2cc15c,'firstname':_0x2cc15c,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xd4bd('0x29')+_0xba3554[_0xd4bd('0x26')]+')'},'headers':{'Authorization':_0xd4bd('0x1a')+_0x5e8c33,'OData-Version':_0xd4bd('0x2a')},'json':!![],'resolveWithFullResponse':!![]};_0x523abb[_0xd4bd('0x2b')][_0x5cbee3]=_0x2cc15c;return rp(_0x523abb);})[_0xd4bd('0x14')](function(_0x22153b){var _0x2507e2=_0x22153b[_0xd4bd('0x2c')][_0xd4bd('0x2d')];var _0x5b45cb=_0x2507e2[_0xd4bd('0x2e')](_0x2507e2['lastIndexOf']('(')+0x1,_0x2507e2['lastIndexOf'](')'));_0xba3554['enduserId']=_0x5b45cb;_0x47a660(_0xba3554);})['catch'](function(_0x1de473){_0x2331eb(_0x1de473[_0xd4bd('0x19')]);});});}function getEndUser(_0x1a4dbd,_0x31241b,_0x4036b2,_0x3546de,_0x5be174,_0x4adc4b,_0x5dbba9,_0x5b467e){var _0x5cb2b4=_0x4adc4b[_0xd4bd('0x2f')]()===_0xd4bd('0x30')?_0x5be174['destcalleridnum']:_0x5be174[_0xd4bd('0x31')];return getAuthToken(_0x31241b,_0x4036b2,_0x4adc4b)[_0xd4bd('0x14')](function(_0x5e9c23){_0x5b467e=_0x5b467e?_0x5b467e:'telephone1';var _0x3e434c={'method':_0xd4bd('0x32'),'uri':_0x3546de+_0xd4bd('0x33')+_0x5b467e+_0xd4bd('0x34')+_0x5b467e+_0xd4bd('0x35')+_0x5cb2b4[_0xd4bd('0x36')]('+',_0xd4bd('0x37'))+'\x27','headers':{'Authorization':_0xd4bd('0x1a')+_0x5e9c23,'If-None-Match':null,'OData-Version':_0xd4bd('0x2a')},'json':!![]};return rp(_0x3e434c);})['then'](function(_0x58bfd1){var _0x235345=![];if(!_0x58bfd1)return _0x235345;var _0x119876=_0x58bfd1[_0xd4bd('0x1b')];for(var _0x55f975=0x0;_0x55f975<_0x119876[_0xd4bd('0x20')];_0x55f975++){if(_0x119876[_0x55f975][_0x5b467e]===_0x5cb2b4){_0x235345=!![];_0x1a4dbd[_0xd4bd('0x38')]=_0x119876[_0x55f975][_0xd4bd('0x39')];}}return _0x235345;})[_0xd4bd('0x14')](function(_0x409855){if(_0x409855)return _0x1a4dbd;if(_0x5dbba9==='nothing'){logger['info']('['+[_0x4adc4b[_0xd4bd('0x17')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x1a4dbd;}return createEndUser(_0x1a4dbd,_0x31241b,_0x4036b2,_0x3546de,_0x5be174,_0x4adc4b,_0x5b467e)['then'](function(_0x569c2f){logger[_0xd4bd('0x25')]('['+[_0x4adc4b[_0xd4bd('0x17')]()]+_0xd4bd('0x3a'),_0x569c2f[_0xd4bd('0x38')]);return _0x569c2f;});});}function getCustomFields(_0x12b138,_0x22a250,_0xbe3865){var _0x54e8c2={};if(_0x12b138['length']>0x0){_['forEach'](_0x12b138,function(_0x3ae39a){if(_['includes']([_0xd4bd('0x3b'),_0xd4bd('0x3c')],_0x3ae39a[_0xd4bd('0x3d')])&&_0x3ae39a[_0xd4bd('0x3e')]&&!_0x3ae39a[_0xd4bd('0x3f')]){var _0x21ff64=_0x3ae39a[_0xd4bd('0x40')][_0xd4bd('0x2f')]();var _0x4435a0=_0x21ff64[_0xd4bd('0x2e')](0x0,_0x21ff64[_0xd4bd('0x41')]('_'));var _0x3dc15b=_0x21ff64[_0xd4bd('0x2e')](_0x21ff64['indexOf']('_')+0x1);if(_0x4435a0===_0xbe3865){_0x54e8c2[_0x3dc15b]=_0x3ae39a[_0xd4bd('0x42')];}}});}return _0x54e8c2;}function getTicket(_0x394b2a,_0x3ae8b9,_0x36e54d,_0x2f3caf,_0x26504d,_0x2bf57d,_0x2d29d4){return new Promise(function(_0x56da19,_0xfadd96){var _0x5a0312;return getAuthToken(_0x3ae8b9,_0x36e54d,_0x2d29d4)[_0xd4bd('0x14')](function(_0x2200bf){if(_0x2bf57d[_0xd4bd('0x43')]===_0xd4bd('0x44')){_0x5a0312={'method':_0xd4bd('0xf'),'uri':_0x2f3caf+'incidents','body':Object[_0xd4bd('0x45')]({},{'title':intUtil['getString'](_0x2bf57d[_0xd4bd('0x46')],_0x26504d,'\x20'),'description':intUtil['getString'](_0x2bf57d[_0xd4bd('0x47')],_0x26504d,'\x0a'),'customerid_contact@odata.bind':_0x394b2a[_0xd4bd('0x38')]?_0xd4bd('0x48')+_0x394b2a[_0xd4bd('0x38')]+')':undefined,'ownerid@odata.bind':_0xd4bd('0x29')+_0x394b2a[_0xd4bd('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x2bf57d[_0xd4bd('0x49')],_0x26504d,_0x2bf57d[_0xd4bd('0x43')])),'headers':{'Authorization':'Bearer\x20'+_0x2200bf,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2bf57d[_0xd4bd('0x43')]===_0xd4bd('0x4a')){var _0x231533=_0x394b2a['enduserId']?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x394b2a[_0xd4bd('0x26')]+')','participationtypemask':_0x394b2a[_0xd4bd('0x4b')]===_0xd4bd('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x394b2a['enduserId']+')','participationtypemask':_0x394b2a[_0xd4bd('0x4b')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xd4bd('0x29')+_0x394b2a[_0xd4bd('0x26')]+')','participationtypemask':_0x394b2a[_0xd4bd('0x4b')]==='queue'?0x2:0x1}];_0x5a0312={'method':_0xd4bd('0xf'),'uri':_0x2f3caf+_0xd4bd('0x4d'),'body':Object['assign']({},{'subject':intUtil[_0xd4bd('0x4e')](_0x2bf57d['Subjects'],_0x26504d,'\x20'),'phonenumber':String(_0x26504d[_0xd4bd('0x31')]),'description':intUtil[_0xd4bd('0x4e')](_0x2bf57d[_0xd4bd('0x47')],_0x26504d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x394b2a['enduserId']?_0xd4bd('0x48')+_0x394b2a['enduserId']+')':undefined,'ownerid@odata.bind':_0xd4bd('0x29')+_0x394b2a[_0xd4bd('0x26')]+')','directioncode':_0x394b2a['callDirection']===_0xd4bd('0x4c')?![]:!![],'phonecall_activity_parties':_0x231533},getCustomFields(_0x2bf57d[_0xd4bd('0x49')],_0x26504d,_0x2bf57d['ticketType'])),'headers':{'Authorization':_0xd4bd('0x1a')+_0x2200bf,'OData-Version':_0xd4bd('0x2a')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5a0312);})[_0xd4bd('0x14')](function(_0x1080ac){var _0x3a27d1=_0x1080ac[_0xd4bd('0x2c')][_0xd4bd('0x2d')];var _0x3a4aac=_0x3a27d1[_0xd4bd('0x2e')](_0x3a27d1[_0xd4bd('0x4f')]('(')+0x1,_0x3a27d1[_0xd4bd('0x4f')](')'));_0x394b2a[_0xd4bd('0x50')]=_0x3a4aac;_0x56da19(_0x394b2a);})['catch'](function(_0x29111c){_0xfadd96(_0x29111c[_0xd4bd('0x19')]);});});}function emit(_0x1bed31,_0x5c267e,_0x35ce87,_0x351d58){var _0x5bb015={'uri':util[_0xd4bd('0x51')](_0xd4bd('0x52'),_0x1bed31,_0x35ce87,_0x351d58)};io['to'](util['format']('user:%s',_0x5c267e))['emit'](_0xd4bd('0x53'),_0x5bb015);}exports['cs']=function(_0x4dcf0e,_0x3322f,_0x9af33e,_0x7c0456,_0x2184dd,_0x472eed,_0x1653dd,_0x3b5ff7){var _0x3ddb6a={};_0x472eed[_0xd4bd('0x9')]=_0x472eed[_0xd4bd('0x8')]?intUtil[_0xd4bd('0x54')](_0x472eed[_0xd4bd('0xd')][_0xd4bd('0x55')]):intUtil[_0xd4bd('0x54')](_0x472eed[_0xd4bd('0x9')]);_0x472eed[_0xd4bd('0x56')]=intUtil[_0xd4bd('0x54')](_0x472eed['serverUrl']);_0x3ddb6a[_0xd4bd('0x4b')]=_0x3b5ff7===_0xd4bd('0x4c')||_0x3b5ff7===_0xd4bd('0x57')?_0xd4bd('0x4c'):'outbound';var _0x3a0e08=_0x472eed[_0xd4bd('0x8')]?util[_0xd4bd('0x51')](_0xd4bd('0x58'),_0x472eed[_0xd4bd('0xd')]['data7']):util[_0xd4bd('0x51')]('%s/api/data/v9.0/',_0x472eed['remoteUri']);var _0x5a8362=util[_0xd4bd('0x51')]('https://login.microsoftonline.com/%s/oauth2/token',_0x472eed[_0xd4bd('0xa')]);var _0x137d9c=util[_0xd4bd('0x51')](_0xd4bd('0x59'),_0x472eed['serverUrl'],_0x3322f['uniqueid'],md5(_0x3322f[_0xd4bd('0x5a')]));if(_0x2184dd&&_0x2184dd[_0xd4bd('0x5b')]){logger[_0xd4bd('0x25')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3322f[_0xd4bd('0x5c')]=_0x137d9c;}else if(_0x1653dd&&_0x1653dd[_0xd4bd('0x5d')]&&_0x1653dd[_0xd4bd('0x5d')]!==_0xd4bd('0x5e')){logger[_0xd4bd('0x25')](_0xd4bd('0x5f'),_0xd4bd('0x60'));_0x3322f[_0xd4bd('0x5c')]=_0x137d9c;}else{_0x3322f[_0xd4bd('0x5c')]='';}return getUser(_0x3ddb6a,_0x472eed,_0x7c0456,_0x5a8362,_0x3a0e08,_0x3b5ff7)[_0xd4bd('0x14')](function(_0x4ae180){logger[_0xd4bd('0x25')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+']\x20The\x20User\x20ID\x20is:',_0x4ae180['userId']);logger[_0xd4bd('0x25')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+_0xd4bd('0x61'),_0x4ae180[_0xd4bd('0x1f')]);return getEndUser(_0x4ae180,_0x472eed,_0x5a8362,_0x3a0e08,_0x3322f,_0x3b5ff7,_0x9af33e[_0xd4bd('0x62')],_0x9af33e[_0xd4bd('0x63')]);})[_0xd4bd('0x14')](function(_0x10fefa){logger[_0xd4bd('0x25')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x10fefa['enduserId']);logger[_0xd4bd('0x25')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+_0xd4bd('0x64'),_0x3322f[_0xd4bd('0x31')]);return getTicket(_0x10fefa,_0x472eed,_0x5a8362,_0x3a0e08,_0x3322f,_0x9af33e,_0x3b5ff7);})[_0xd4bd('0x14')](function(_0x172f03){logger['info'](util[_0xd4bd('0x51')]('['+_0x3b5ff7['toUpperCase']()+_0xd4bd('0x65'),_0x9af33e[_0xd4bd('0x43')],_0x172f03[_0xd4bd('0x50')]));logger[_0xd4bd('0x25')](util[_0xd4bd('0x51')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+_0xd4bd('0x66'),_0x3b5ff7));if(_0x3b5ff7!=='unmanaged'&&_0x9af33e[_0xd4bd('0x67')]){logger[_0xd4bd('0x25')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x472eed['remoteUri'],_0x7c0456[_0xd4bd('0x68')],_0x9af33e['ticketType'],_0x172f03[_0xd4bd('0x50')]);}})[_0xd4bd('0x16')](function(_0x39050e){logger[_0xd4bd('0x69')]('['+_0x3b5ff7[_0xd4bd('0x17')]()+_0xd4bd('0x6a'),_0x39050e[_0xd4bd('0x19')]);console[_0xd4bd('0x69')](_0xd4bd('0x6b'),_0x39050e);});};