Built motion from commit ff78e754.|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 _0x1fa3=['clientSecret','then','catch','error','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','userEmail','email','length','isdisabled',']\x20Agent\x20found\x20','systemuserid','info','toUpperCase',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','userId','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','lastIndexOf','enduserId','outbound','telephone1','GET','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','type','customField','idField','substring','indexOf','content','ticketType','incident','incidents','assign','Subjects','getString','Descriptions','/contacts(','phonecall','callDirection','queue','phonecalls','Fields','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','data7','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','tenantId','data2','data5','POST','username','password'];(function(_0x37dd73,_0x352117){var _0x52bd7e=function(_0x405230){while(--_0x405230){_0x37dd73['push'](_0x37dd73['shift']());}};_0x52bd7e(++_0x352117);}(_0x1fa3,0x1b7));var _0x31fa=function(_0x44e39d,_0x1cb7ef){_0x44e39d=_0x44e39d-0x0;var _0x4a1995=_0x1fa3[_0x44e39d];return _0x4a1995;};'use strict';var _=require(_0x31fa('0x0'));var rp=require(_0x31fa('0x1'));var util=require(_0x31fa('0x2'));var intUtil=require(_0x31fa('0x3'));var md5=require(_0x31fa('0x4'));var Redis=require('ioredis');var logger=require(_0x31fa('0x5'))(_0x31fa('0x6'));var config=require(_0x31fa('0x7'));config[_0x31fa('0x8')]=_[_0x31fa('0x9')](config[_0x31fa('0x8')],{'host':_0x31fa('0xa'),'port':0x18eb});var io=require(_0x31fa('0xb'))(new Redis(config['redis']));function getAuthToken(_0x27dbf8,_0x2847ff,_0x21bf79){if(_0x27dbf8[_0x31fa('0xc')]){_0x27dbf8[_0x31fa('0xd')]=_0x27dbf8[_0x31fa('0xe')]['data7'];_0x27dbf8[_0x31fa('0xf')]=_0x27dbf8[_0x31fa('0xe')][_0x31fa('0x10')];return Promise['resolve'](_0x27dbf8[_0x31fa('0xe')][_0x31fa('0x11')]);}var _0x511a14={'method':_0x31fa('0x12'),'uri':_0x2847ff,'form':{'client_id':_0x27dbf8['clientId'],'resource':_0x27dbf8[_0x31fa('0xd')],'username':_0x27dbf8[_0x31fa('0x13')],'password':_0x27dbf8[_0x31fa('0x14')],'grant_type':'password','client_secret':_0x27dbf8[_0x31fa('0x15')]},'json':!![]};return rp(_0x511a14)[_0x31fa('0x16')](function(_0x2b26ce){return _0x2b26ce['access_token'];})[_0x31fa('0x17')](function(_0x4ef2fb){logger[_0x31fa('0x18')]('['+[_0x21bf79['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x4ef2fb[_0x31fa('0x19')];});}function getUser(_0x1f79e7,_0x20d6fc,_0x3c0815,_0x580612,_0x14d571,_0x42ccaa){return new Promise(function(_0x255c7d,_0x3698e1){return getAuthToken(_0x20d6fc,_0x580612,_0x42ccaa)[_0x31fa('0x16')](function(_0x49744f){var _0x14b8f0={'method':'GET','uri':_0x14d571+_0x31fa('0x1a'),'headers':{'Authorization':_0x31fa('0x1b')+_0x49744f,'OData-Version':_0x31fa('0x1c')},'json':!![]};return rp(_0x14b8f0);})[_0x31fa('0x16')](function(_0x1e3a6c){var _0x26c2d1=_0x1e3a6c[_0x31fa('0x1d')];var _0x116c86=![];var _0x55a300=null;if(!_[_0x31fa('0x1e')](_0x3c0815)){if(intUtil[_0x31fa('0x1f')](_0x3c0815['email'])){_0x1f79e7[_0x31fa('0x20')]=_0x3c0815[_0x31fa('0x21')];for(_0x55a300=0x0;_0x55a300<_0x26c2d1[_0x31fa('0x22')];_0x55a300++){if(_0x26c2d1[_0x55a300]['internalemailaddress']===_0x3c0815[_0x31fa('0x21')]&&!_0x26c2d1[_0x55a300][_0x31fa('0x23')]){_0x116c86=!![];logger['info']('['+[_0x42ccaa['toUpperCase']()]+_0x31fa('0x24')+_0x26c2d1[_0x55a300]['systemuserid']+'!');_0x1f79e7['userId']=_0x26c2d1[_0x55a300][_0x31fa('0x25')];}}}}if(!_0x116c86){logger[_0x31fa('0x26')]('['+[_0x42ccaa[_0x31fa('0x27')]()]+_0x31fa('0x28'));_0x1f79e7[_0x31fa('0x20')]=_0x20d6fc['username'];for(_0x55a300=0x0;_0x55a300<_0x26c2d1[_0x31fa('0x22')];_0x55a300++){if(_0x26c2d1[_0x55a300][_0x31fa('0x29')]===_0x20d6fc[_0x31fa('0x13')]){_0x1f79e7[_0x31fa('0x2a')]=_0x26c2d1[_0x55a300][_0x31fa('0x25')];}}}_0x255c7d(_0x1f79e7);})[_0x31fa('0x17')](function(_0x44e0cc){_0x3698e1(_0x44e0cc[_0x31fa('0x19')]);});});}function createEndUser(_0x351b87,_0x4c51f2,_0x496cea,_0x1a1cf5,_0x18ae3c,_0x4d60c1,_0x503184){return new Promise(function(_0x313939,_0x17aead){return getAuthToken(_0x4c51f2,_0x496cea,_0x4d60c1)[_0x31fa('0x16')](function(_0x33b64b){var _0x53a5b2=_0x4d60c1[_0x31fa('0x2b')]()==='outbound'?_0x18ae3c[_0x31fa('0x2c')]:_0x18ae3c[_0x31fa('0x2d')];var _0x4a8237={'method':'POST','uri':_0x1a1cf5+_0x31fa('0x2e'),'body':{'fullname':_0x53a5b2,'firstname':_0x53a5b2,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x31fa('0x2f')+_0x351b87[_0x31fa('0x2a')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x33b64b,'OData-Version':_0x31fa('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x4a8237[_0x31fa('0x30')][_0x503184]=_0x53a5b2;return rp(_0x4a8237);})[_0x31fa('0x16')](function(_0x49312d){var _0x4261b7=_0x49312d[_0x31fa('0x31')][_0x31fa('0x32')];var _0x4f8623=_0x4261b7['substring'](_0x4261b7[_0x31fa('0x33')]('(')+0x1,_0x4261b7['lastIndexOf'](')'));_0x351b87[_0x31fa('0x34')]=_0x4f8623;_0x313939(_0x351b87);})['catch'](function(_0x4b98c1){_0x17aead(_0x4b98c1[_0x31fa('0x19')]);});});}function getEndUser(_0x86eab7,_0x222cc9,_0x53c313,_0x3a0090,_0x4d3a5d,_0x26eb23,_0x5bbff7,_0x5a7923){var _0x43b50e=_0x26eb23[_0x31fa('0x2b')]()===_0x31fa('0x35')?_0x4d3a5d[_0x31fa('0x2c')]:_0x4d3a5d[_0x31fa('0x2d')];return getAuthToken(_0x222cc9,_0x53c313,_0x26eb23)[_0x31fa('0x16')](function(_0x6b760){_0x5a7923=_0x5a7923?_0x5a7923:_0x31fa('0x36');var _0x2d686a={'method':_0x31fa('0x37'),'uri':_0x3a0090+_0x31fa('0x38')+_0x5a7923+_0x31fa('0x39')+_0x5a7923+_0x31fa('0x3a')+_0x43b50e[_0x31fa('0x3b')]('+',_0x31fa('0x3c'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x6b760,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2d686a);})[_0x31fa('0x16')](function(_0x403f89){var _0x281ac2=![];if(!_0x403f89)return _0x281ac2;var _0x3c65ee=_0x403f89[_0x31fa('0x1d')];for(var _0x283caa=0x0;_0x283caa<_0x3c65ee[_0x31fa('0x22')];_0x283caa++){if(_0x3c65ee[_0x283caa][_0x5a7923]===_0x43b50e){_0x281ac2=!![];_0x86eab7[_0x31fa('0x34')]=_0x3c65ee[_0x283caa][_0x31fa('0x3d')];}}return _0x281ac2;})[_0x31fa('0x16')](function(_0x27141a){if(_0x27141a)return _0x86eab7;if(_0x5bbff7===_0x31fa('0x3e')){logger[_0x31fa('0x26')]('['+[_0x26eb23['toUpperCase']()]+_0x31fa('0x3f'));return _0x86eab7;}return createEndUser(_0x86eab7,_0x222cc9,_0x53c313,_0x3a0090,_0x4d3a5d,_0x26eb23,_0x5a7923)[_0x31fa('0x16')](function(_0x161cb7){logger[_0x31fa('0x26')]('['+[_0x26eb23[_0x31fa('0x27')]()]+_0x31fa('0x40'),_0x161cb7[_0x31fa('0x34')]);return _0x161cb7;});});}function getCustomFields(_0x8011f4,_0x391b53,_0x1cc528){var _0x3a1fe5={};if(_0x8011f4['length']>0x0){_[_0x31fa('0x41')](_0x8011f4,function(_0x31ebd8){if(_[_0x31fa('0x42')]([_0x31fa('0x43'),'picklist'],_0x31ebd8[_0x31fa('0x44')])&&_0x31ebd8['nameField']&&!_0x31ebd8[_0x31fa('0x45')]){var _0x45e9e4=_0x31ebd8[_0x31fa('0x46')][_0x31fa('0x2b')]();var _0x2882e8=_0x45e9e4[_0x31fa('0x47')](0x0,_0x45e9e4['indexOf']('_'));var _0xdd5270=_0x45e9e4[_0x31fa('0x47')](_0x45e9e4[_0x31fa('0x48')]('_')+0x1);if(_0x2882e8===_0x1cc528){_0x3a1fe5[_0xdd5270]=_0x31ebd8[_0x31fa('0x49')];}}});}return _0x3a1fe5;}function getTicket(_0x31b63e,_0x39e7fb,_0x118778,_0x288de5,_0x11e107,_0x333c12,_0x326777){return new Promise(function(_0x10a0fb,_0x196f99){var _0x1c5ec6;return getAuthToken(_0x39e7fb,_0x118778,_0x326777)[_0x31fa('0x16')](function(_0x13667d){if(_0x333c12[_0x31fa('0x4a')]===_0x31fa('0x4b')){_0x1c5ec6={'method':_0x31fa('0x12'),'uri':_0x288de5+_0x31fa('0x4c'),'body':Object[_0x31fa('0x4d')]({},{'title':intUtil['getString'](_0x333c12[_0x31fa('0x4e')],_0x11e107,'\x20'),'description':intUtil[_0x31fa('0x4f')](_0x333c12[_0x31fa('0x50')],_0x11e107,'\x0a'),'customerid_contact@odata.bind':_0x31b63e[_0x31fa('0x34')]?_0x31fa('0x51')+_0x31b63e[_0x31fa('0x34')]+')':undefined,'ownerid@odata.bind':_0x31fa('0x2f')+_0x31b63e[_0x31fa('0x2a')]+')','caseorigincode':'1'},getCustomFields(_0x333c12['Fields'],_0x11e107,_0x333c12[_0x31fa('0x4a')])),'headers':{'Authorization':_0x31fa('0x1b')+_0x13667d,'OData-Version':_0x31fa('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x333c12['ticketType']===_0x31fa('0x52')){var _0x268ece=_0x31b63e[_0x31fa('0x34')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x31b63e[_0x31fa('0x2a')]+')','participationtypemask':_0x31b63e[_0x31fa('0x53')]===_0x31fa('0x54')?0x2:0x1},{'partyid_contact@odata.bind':_0x31fa('0x51')+_0x31b63e[_0x31fa('0x34')]+')','participationtypemask':_0x31b63e[_0x31fa('0x53')]===_0x31fa('0x54')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x31fa('0x2f')+_0x31b63e['userId']+')','participationtypemask':_0x31b63e['callDirection']===_0x31fa('0x54')?0x2:0x1}];_0x1c5ec6={'method':_0x31fa('0x12'),'uri':_0x288de5+_0x31fa('0x55'),'body':Object['assign']({},{'subject':intUtil['getString'](_0x333c12[_0x31fa('0x4e')],_0x11e107,'\x20'),'phonenumber':String(_0x11e107[_0x31fa('0x2d')]),'description':intUtil[_0x31fa('0x4f')](_0x333c12[_0x31fa('0x50')],_0x11e107,'\x0a'),'regardingobjectid_contact@odata.bind':_0x31b63e[_0x31fa('0x34')]?_0x31fa('0x51')+_0x31b63e[_0x31fa('0x34')]+')':undefined,'ownerid@odata.bind':_0x31fa('0x2f')+_0x31b63e[_0x31fa('0x2a')]+')','directioncode':_0x31b63e[_0x31fa('0x53')]==='queue'?![]:!![],'phonecall_activity_parties':_0x268ece},getCustomFields(_0x333c12[_0x31fa('0x56')],_0x11e107,_0x333c12['ticketType'])),'headers':{'Authorization':_0x31fa('0x1b')+_0x13667d,'OData-Version':_0x31fa('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1c5ec6);})[_0x31fa('0x16')](function(_0x316c01){var _0x690b0f=_0x316c01[_0x31fa('0x31')][_0x31fa('0x32')];var _0x485827=_0x690b0f[_0x31fa('0x47')](_0x690b0f['lastIndexOf']('(')+0x1,_0x690b0f[_0x31fa('0x33')](')'));_0x31b63e[_0x31fa('0x57')]=_0x485827;_0x10a0fb(_0x31b63e);})[_0x31fa('0x17')](function(_0x84488f){_0x196f99(_0x84488f['message']);});});}function emit(_0x24f1f9,_0x11bac8,_0x1de251,_0x5069af){var _0xe13447={'uri':util['format'](_0x31fa('0x58'),_0x24f1f9,_0x1de251,_0x5069af)};io['to'](util[_0x31fa('0x59')](_0x31fa('0x5a'),_0x11bac8))[_0x31fa('0x5b')]('trigger:browser:url',_0xe13447);}exports['cs']=function(_0x5a73ca,_0x3e81fd,_0x53b5ba,_0x4d05d9,_0x4333c4,_0xfc8c38,_0x32c692,_0x3504fb){var _0x2a4d40={};_0xfc8c38['remoteUri']=_0xfc8c38[_0x31fa('0xc')]?intUtil[_0x31fa('0x5c')](_0xfc8c38[_0x31fa('0xe')]['data7']):intUtil[_0x31fa('0x5c')](_0xfc8c38[_0x31fa('0xd')]);_0xfc8c38[_0x31fa('0x5d')]=intUtil[_0x31fa('0x5c')](_0xfc8c38[_0x31fa('0x5d')]);_0x2a4d40[_0x31fa('0x53')]=_0x3504fb===_0x31fa('0x54')||_0x3504fb==='unmanaged'?_0x31fa('0x54'):_0x31fa('0x35');var _0x52f265=_0xfc8c38[_0x31fa('0xc')]?util[_0x31fa('0x59')](_0x31fa('0x5e'),_0xfc8c38[_0x31fa('0xe')][_0x31fa('0x5f')]):util[_0x31fa('0x59')](_0x31fa('0x5e'),_0xfc8c38[_0x31fa('0xd')]);var _0x495f2f=util[_0x31fa('0x59')](_0x31fa('0x60'),_0xfc8c38[_0x31fa('0xf')]);var _0xf3a6d2=util[_0x31fa('0x59')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xfc8c38[_0x31fa('0x5d')],_0x3e81fd[_0x31fa('0x61')],md5(_0x3e81fd[_0x31fa('0x61')]));if(_0x4333c4&&_0x4333c4[_0x31fa('0x62')]){logger[_0x31fa('0x26')](_0x31fa('0x63'),_0x31fa('0x64'));_0x3e81fd[_0x31fa('0x65')]=_0xf3a6d2;}else if(_0x32c692&&_0x32c692['recordingFormat']&&_0x32c692[_0x31fa('0x66')]!==_0x31fa('0x67')){logger[_0x31fa('0x26')]('[OUTBOUND]',_0x31fa('0x64'));_0x3e81fd['recordingURL']=_0xf3a6d2;}else{_0x3e81fd[_0x31fa('0x65')]='';}return getUser(_0x2a4d40,_0xfc8c38,_0x4d05d9,_0x495f2f,_0x52f265,_0x3504fb)[_0x31fa('0x16')](function(_0x34dcd7){logger['info']('['+_0x3504fb['toUpperCase']()+_0x31fa('0x68'),_0x34dcd7['userId']);logger[_0x31fa('0x26')]('['+_0x3504fb['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0x34dcd7['userEmail']);return getEndUser(_0x34dcd7,_0xfc8c38,_0x495f2f,_0x52f265,_0x3e81fd,_0x3504fb,_0x53b5ba[_0x31fa('0x69')],_0x53b5ba[_0x31fa('0x6a')]);})['then'](function(_0x38c81e){logger[_0x31fa('0x26')]('['+_0x3504fb[_0x31fa('0x27')]()+_0x31fa('0x6b'),_0x38c81e[_0x31fa('0x34')]);logger[_0x31fa('0x26')]('['+_0x3504fb['toUpperCase']()+_0x31fa('0x6c'),_0x3e81fd[_0x31fa('0x2d')]);return getTicket(_0x38c81e,_0xfc8c38,_0x495f2f,_0x52f265,_0x3e81fd,_0x53b5ba,_0x3504fb);})['then'](function(_0x32152b){logger[_0x31fa('0x26')](util['format']('['+_0x3504fb[_0x31fa('0x27')]()+_0x31fa('0x6d'),_0x53b5ba[_0x31fa('0x4a')],_0x32152b['ticketId']));logger[_0x31fa('0x26')](util[_0x31fa('0x59')]('['+_0x3504fb[_0x31fa('0x27')]()+']\x20Call\x20direction:\x20%s',_0x3504fb));if(_0x3504fb!=='unmanaged'&&_0x53b5ba[_0x31fa('0x6e')]){logger[_0x31fa('0x26')]('['+_0x3504fb['toUpperCase']()+']',_0x31fa('0x6f'));emit(_0xfc8c38[_0x31fa('0xd')],_0x4d05d9[_0x31fa('0x70')],_0x53b5ba[_0x31fa('0x4a')],_0x32152b[_0x31fa('0x57')]);}})['catch'](function(_0xe0fa7){logger[_0x31fa('0x18')]('['+_0x3504fb[_0x31fa('0x27')]()+_0x31fa('0x71'),_0xe0fa7[_0x31fa('0x19')]);console[_0x31fa('0x18')](_0x31fa('0x72'),_0xe0fa7);});};