98f5d9bff808cbf57cc155b55f1513ae75f35af5
[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 _0xab95=['destcalleridnum','calleridnum','contacts','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','&$filter=','\x20eq\x20\x27','replace',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','string','picklist','customField','idField','indexOf','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','queue','callDirection','phonecalls','format','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','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','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','userEmail',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','../../../../config/logger','../../../../config/environment','defaults','localhost','socket.io-emitter','redis','modernAuthentication','data7','tenantId','CloudProvider','data2','resolve','data5','POST','clientId','password','clientSecret','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','then','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','outbound'];(function(_0x5c2a2b,_0x22c94e){var _0x19921f=function(_0x3fb937){while(--_0x3fb937){_0x5c2a2b['push'](_0x5c2a2b['shift']());}};_0x19921f(++_0x22c94e);}(_0xab95,0x118));var _0x5ab9=function(_0x3e060a,_0x4ef70e){_0x3e060a=_0x3e060a-0x0;var _0x23f01e=_0xab95[_0x3e060a];return _0x23f01e;};'use strict';var _=require(_0x5ab9('0x0'));var rp=require(_0x5ab9('0x1'));var util=require(_0x5ab9('0x2'));var intUtil=require(_0x5ab9('0x3'));var md5=require(_0x5ab9('0x4'));var Redis=require(_0x5ab9('0x5'));var logger=require(_0x5ab9('0x6'))('dynamics365');var config=require(_0x5ab9('0x7'));config['redis']=_[_0x5ab9('0x8')](config['redis'],{'host':_0x5ab9('0x9'),'port':0x18eb});var io=require(_0x5ab9('0xa'))(new Redis(config[_0x5ab9('0xb')]));function getAuthToken(_0x3d9ca0,_0x202e51,_0x58fb99){if(_0x3d9ca0[_0x5ab9('0xc')]){_0x3d9ca0['remoteUri']=_0x3d9ca0['CloudProvider'][_0x5ab9('0xd')];_0x3d9ca0[_0x5ab9('0xe')]=_0x3d9ca0[_0x5ab9('0xf')][_0x5ab9('0x10')];return Promise[_0x5ab9('0x11')](_0x3d9ca0['CloudProvider'][_0x5ab9('0x12')]);}var _0x5524c3={'method':_0x5ab9('0x13'),'uri':_0x202e51,'form':{'client_id':_0x3d9ca0[_0x5ab9('0x14')],'resource':_0x3d9ca0['remoteUri'],'username':_0x3d9ca0['username'],'password':_0x3d9ca0[_0x5ab9('0x15')],'grant_type':_0x5ab9('0x15'),'client_secret':_0x3d9ca0[_0x5ab9('0x16')]},'json':!![]};return rp(_0x5524c3)['then'](function(_0x3c9351){return _0x3c9351['access_token'];})[_0x5ab9('0x17')](function(_0x281932){logger[_0x5ab9('0x18')]('['+[_0x58fb99[_0x5ab9('0x19')]()]+_0x5ab9('0x1a'));return _0x281932[_0x5ab9('0x1b')];});}function getUser(_0x4a05c2,_0xd68df1,_0x2cf066,_0x3df66e,_0x471740,_0x86363e){return new Promise(function(_0x30ee0d,_0x161df0){return getAuthToken(_0xd68df1,_0x3df66e,_0x86363e)['then'](function(_0x5d9e2e){var _0x323017={'method':_0x5ab9('0x1c'),'uri':_0x471740+_0x5ab9('0x1d'),'headers':{'Authorization':_0x5ab9('0x1e')+_0x5d9e2e,'OData-Version':_0x5ab9('0x1f')},'json':!![]};return rp(_0x323017);})[_0x5ab9('0x20')](function(_0xca28c8){var _0x600038=_0xca28c8[_0x5ab9('0x21')];var _0xb85f3f=![];var _0x5abd3f=null;if(!_[_0x5ab9('0x22')](_0x2cf066)){if(intUtil[_0x5ab9('0x23')](_0x2cf066[_0x5ab9('0x24')])){_0x4a05c2['userEmail']=_0x2cf066[_0x5ab9('0x24')];for(_0x5abd3f=0x0;_0x5abd3f<_0x600038[_0x5ab9('0x25')];_0x5abd3f++){if(_0x600038[_0x5abd3f][_0x5ab9('0x26')]===_0x2cf066['email']&&!_0x600038[_0x5abd3f][_0x5ab9('0x27')]){_0xb85f3f=!![];logger[_0x5ab9('0x28')]('['+[_0x86363e[_0x5ab9('0x19')]()]+']\x20Agent\x20found\x20'+_0x600038[_0x5abd3f][_0x5ab9('0x29')]+'!');_0x4a05c2[_0x5ab9('0x2a')]=_0x600038[_0x5abd3f]['systemuserid'];}}}}if(!_0xb85f3f){logger['info']('['+[_0x86363e[_0x5ab9('0x19')]()]+_0x5ab9('0x2b'));_0x4a05c2['userEmail']=_0xd68df1[_0x5ab9('0x2c')];for(_0x5abd3f=0x0;_0x5abd3f<_0x600038[_0x5ab9('0x25')];_0x5abd3f++){if(_0x600038[_0x5abd3f][_0x5ab9('0x26')]===_0xd68df1[_0x5ab9('0x2c')]){_0x4a05c2[_0x5ab9('0x2a')]=_0x600038[_0x5abd3f][_0x5ab9('0x29')];}}}_0x30ee0d(_0x4a05c2);})[_0x5ab9('0x17')](function(_0x3831bb){_0x161df0(_0x3831bb[_0x5ab9('0x1b')]);});});}function createEndUser(_0x23d8a3,_0x5318da,_0xe39246,_0x3df591,_0x4c13be,_0x4652a6,_0x253bb9){return new Promise(function(_0x8d1cb4,_0x18286b){return getAuthToken(_0x5318da,_0xe39246,_0x4652a6)[_0x5ab9('0x20')](function(_0x29cc2d){var _0x4f324b=_0x4652a6[_0x5ab9('0x2d')]()===_0x5ab9('0x2e')?_0x4c13be[_0x5ab9('0x2f')]:_0x4c13be[_0x5ab9('0x30')];var _0x5a4cb4={'method':'POST','uri':_0x3df591+_0x5ab9('0x31'),'body':{'fullname':_0x4f324b,'firstname':_0x4f324b,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x23d8a3[_0x5ab9('0x2a')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x29cc2d,'OData-Version':_0x5ab9('0x1f')},'json':!![],'resolveWithFullResponse':!![]};_0x5a4cb4[_0x5ab9('0x32')][_0x253bb9]=_0x4f324b;return rp(_0x5a4cb4);})[_0x5ab9('0x20')](function(_0x4257ce){var _0x37fb57=_0x4257ce[_0x5ab9('0x33')][_0x5ab9('0x34')];var _0x30b425=_0x37fb57[_0x5ab9('0x35')](_0x37fb57[_0x5ab9('0x36')]('(')+0x1,_0x37fb57['lastIndexOf'](')'));_0x23d8a3[_0x5ab9('0x37')]=_0x30b425;_0x8d1cb4(_0x23d8a3);})[_0x5ab9('0x17')](function(_0xc981f9){_0x18286b(_0xc981f9[_0x5ab9('0x1b')]);});});}function getEndUser(_0x24e42c,_0x2ca12d,_0x2f8080,_0x35aec0,_0x2bb8e0,_0x44dffd,_0x94e34,_0x3b7be1){var _0x4f2051=_0x44dffd[_0x5ab9('0x2d')]()===_0x5ab9('0x2e')?_0x2bb8e0[_0x5ab9('0x2f')]:_0x2bb8e0['calleridnum'];return getAuthToken(_0x2ca12d,_0x2f8080,_0x44dffd)[_0x5ab9('0x20')](function(_0x524892){_0x3b7be1=_0x3b7be1?_0x3b7be1:_0x5ab9('0x38');var _0x20aaa9={'method':_0x5ab9('0x1c'),'uri':_0x35aec0+'contacts?$select='+_0x3b7be1+_0x5ab9('0x39')+_0x3b7be1+_0x5ab9('0x3a')+_0x4f2051[_0x5ab9('0x3b')]('+','%2b')+'\x27','headers':{'Authorization':_0x5ab9('0x1e')+_0x524892,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x20aaa9);})['then'](function(_0x185f3f){var _0x4016be=![];if(!_0x185f3f)return _0x4016be;var _0x1f824c=_0x185f3f['value'];for(var _0xc71a7a=0x0;_0xc71a7a<_0x1f824c[_0x5ab9('0x25')];_0xc71a7a++){if(_0x1f824c[_0xc71a7a][_0x3b7be1]===_0x4f2051){_0x4016be=!![];_0x24e42c[_0x5ab9('0x37')]=_0x1f824c[_0xc71a7a]['contactid'];}}return _0x4016be;})[_0x5ab9('0x20')](function(_0x1a54a8){if(_0x1a54a8)return _0x24e42c;if(_0x94e34==='nothing'){logger['info']('['+[_0x44dffd[_0x5ab9('0x19')]()]+_0x5ab9('0x3c'));return _0x24e42c;}return createEndUser(_0x24e42c,_0x2ca12d,_0x2f8080,_0x35aec0,_0x2bb8e0,_0x44dffd,_0x3b7be1)[_0x5ab9('0x20')](function(_0x8c8ce3){logger[_0x5ab9('0x28')]('['+[_0x44dffd[_0x5ab9('0x19')]()]+_0x5ab9('0x3d'),_0x8c8ce3[_0x5ab9('0x37')]);return _0x8c8ce3;});});}function getCustomFields(_0x57c731,_0x3b064c,_0x7cf043){var _0x3d57b4={};if(_0x57c731[_0x5ab9('0x25')]>0x0){_[_0x5ab9('0x3e')](_0x57c731,function(_0x49c8c3){if(_['includes']([_0x5ab9('0x3f'),_0x5ab9('0x40')],_0x49c8c3['type'])&&_0x49c8c3['nameField']&&!_0x49c8c3[_0x5ab9('0x41')]){var _0x5100cb=_0x49c8c3[_0x5ab9('0x42')][_0x5ab9('0x2d')]();var _0x2f91f0=_0x5100cb[_0x5ab9('0x35')](0x0,_0x5100cb[_0x5ab9('0x43')]('_'));var _0x1985c8=_0x5100cb[_0x5ab9('0x35')](_0x5100cb[_0x5ab9('0x43')]('_')+0x1);if(_0x2f91f0===_0x7cf043){_0x3d57b4[_0x1985c8]=_0x49c8c3['content'];}}});}return _0x3d57b4;}function getTicket(_0x3f4cdb,_0x356662,_0x1c343c,_0x1cd6ba,_0x4879d4,_0x18b657,_0xe7f568){return new Promise(function(_0x150eb3,_0x562efc){var _0x1c67b1;return getAuthToken(_0x356662,_0x1c343c,_0xe7f568)['then'](function(_0x280b6e){if(_0x18b657[_0x5ab9('0x44')]==='incident'){_0x1c67b1={'method':'POST','uri':_0x1cd6ba+_0x5ab9('0x45'),'body':Object[_0x5ab9('0x46')]({},{'title':intUtil[_0x5ab9('0x47')](_0x18b657[_0x5ab9('0x48')],_0x4879d4,'\x20'),'description':intUtil[_0x5ab9('0x47')](_0x18b657[_0x5ab9('0x49')],_0x4879d4,'\x0a'),'customerid_contact@odata.bind':_0x3f4cdb[_0x5ab9('0x37')]?_0x5ab9('0x4a')+_0x3f4cdb[_0x5ab9('0x37')]+')':undefined,'ownerid@odata.bind':_0x5ab9('0x4b')+_0x3f4cdb['userId']+')','caseorigincode':'1'},getCustomFields(_0x18b657[_0x5ab9('0x4c')],_0x4879d4,_0x18b657[_0x5ab9('0x44')])),'headers':{'Authorization':'Bearer\x20'+_0x280b6e,'OData-Version':_0x5ab9('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x18b657[_0x5ab9('0x44')]===_0x5ab9('0x4d')){var _0x303a2d=_0x3f4cdb['enduserId']?[{'partyid_systemuser@odata.bind':_0x5ab9('0x4b')+_0x3f4cdb[_0x5ab9('0x2a')]+')','participationtypemask':_0x3f4cdb['callDirection']===_0x5ab9('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':_0x5ab9('0x4a')+_0x3f4cdb[_0x5ab9('0x37')]+')','participationtypemask':_0x3f4cdb[_0x5ab9('0x4f')]===_0x5ab9('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x5ab9('0x4b')+_0x3f4cdb['userId']+')','participationtypemask':_0x3f4cdb['callDirection']===_0x5ab9('0x4e')?0x2:0x1}];_0x1c67b1={'method':_0x5ab9('0x13'),'uri':_0x1cd6ba+_0x5ab9('0x50'),'body':Object['assign']({},{'subject':intUtil[_0x5ab9('0x47')](_0x18b657[_0x5ab9('0x48')],_0x4879d4,'\x20'),'phonenumber':String(_0x4879d4[_0x5ab9('0x30')]),'description':intUtil['getString'](_0x18b657['Descriptions'],_0x4879d4,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3f4cdb['enduserId']?_0x5ab9('0x4a')+_0x3f4cdb['enduserId']+')':undefined,'ownerid@odata.bind':_0x5ab9('0x4b')+_0x3f4cdb[_0x5ab9('0x2a')]+')','directioncode':_0x3f4cdb[_0x5ab9('0x4f')]==='queue'?![]:!![],'phonecall_activity_parties':_0x303a2d},getCustomFields(_0x18b657[_0x5ab9('0x4c')],_0x4879d4,_0x18b657['ticketType'])),'headers':{'Authorization':_0x5ab9('0x1e')+_0x280b6e,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1c67b1);})[_0x5ab9('0x20')](function(_0xa70a25){var _0x69a37b=_0xa70a25[_0x5ab9('0x33')][_0x5ab9('0x34')];var _0x57b566=_0x69a37b[_0x5ab9('0x35')](_0x69a37b[_0x5ab9('0x36')]('(')+0x1,_0x69a37b[_0x5ab9('0x36')](')'));_0x3f4cdb['ticketId']=_0x57b566;_0x150eb3(_0x3f4cdb);})[_0x5ab9('0x17')](function(_0x161114){_0x562efc(_0x161114[_0x5ab9('0x1b')]);});});}function emit(_0x3f89c1,_0x235493,_0x302b91,_0x5f0eab){var _0x52fe9e={'uri':util[_0x5ab9('0x51')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x3f89c1,_0x302b91,_0x5f0eab)};io['to'](util['format']('user:%s',_0x235493))[_0x5ab9('0x52')](_0x5ab9('0x53'),_0x52fe9e);}exports['cs']=function(_0x5785ed,_0x44038e,_0x57f714,_0x1de0f7,_0x3bea33,_0x362eba,_0x1666aa,_0x2d8fe8){var _0x6fd4e7={};_0x362eba[_0x5ab9('0x54')]=_0x362eba[_0x5ab9('0xc')]?intUtil[_0x5ab9('0x55')](_0x362eba['CloudProvider']['data7']):intUtil['stripTrailingSlash'](_0x362eba[_0x5ab9('0x54')]);_0x362eba[_0x5ab9('0x56')]=intUtil['stripTrailingSlash'](_0x362eba[_0x5ab9('0x56')]);_0x6fd4e7[_0x5ab9('0x4f')]=_0x2d8fe8==='queue'||_0x2d8fe8===_0x5ab9('0x57')?_0x5ab9('0x4e'):_0x5ab9('0x2e');var _0x483d50=_0x362eba[_0x5ab9('0xc')]?util[_0x5ab9('0x51')](_0x5ab9('0x58'),_0x362eba[_0x5ab9('0xf')][_0x5ab9('0xd')]):util[_0x5ab9('0x51')](_0x5ab9('0x58'),_0x362eba[_0x5ab9('0x54')]);var _0x3e5d6c=util[_0x5ab9('0x51')](_0x5ab9('0x59'),_0x362eba['tenantId']);var _0x3e1e1a=util[_0x5ab9('0x51')](_0x5ab9('0x5a'),_0x362eba[_0x5ab9('0x56')],_0x44038e[_0x5ab9('0x5b')],md5(_0x44038e[_0x5ab9('0x5b')]));if(_0x3bea33&&_0x3bea33[_0x5ab9('0x5c')]){logger[_0x5ab9('0x28')]('[QUEUE]',_0x5ab9('0x5d'));_0x44038e['recordingURL']=_0x3e1e1a;}else if(_0x1666aa&&_0x1666aa[_0x5ab9('0x5e')]&&_0x1666aa[_0x5ab9('0x5e')]!=='none'){logger[_0x5ab9('0x28')](_0x5ab9('0x5f'),_0x5ab9('0x5d'));_0x44038e[_0x5ab9('0x60')]=_0x3e1e1a;}else{_0x44038e[_0x5ab9('0x60')]='';}return getUser(_0x6fd4e7,_0x362eba,_0x1de0f7,_0x3e5d6c,_0x483d50,_0x2d8fe8)['then'](function(_0x19e07c){logger[_0x5ab9('0x28')]('['+_0x2d8fe8['toUpperCase']()+_0x5ab9('0x61'),_0x19e07c[_0x5ab9('0x2a')]);logger[_0x5ab9('0x28')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+_0x5ab9('0x62'),_0x19e07c[_0x5ab9('0x63')]);return getEndUser(_0x19e07c,_0x362eba,_0x3e5d6c,_0x483d50,_0x44038e,_0x2d8fe8,_0x57f714['moduleCreate'],_0x57f714['additionalSearchContact']);})[_0x5ab9('0x20')](function(_0x4acd85){logger[_0x5ab9('0x28')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x4acd85[_0x5ab9('0x37')]);logger[_0x5ab9('0x28')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+_0x5ab9('0x64'),_0x44038e[_0x5ab9('0x30')]);return getTicket(_0x4acd85,_0x362eba,_0x3e5d6c,_0x483d50,_0x44038e,_0x57f714,_0x2d8fe8);})[_0x5ab9('0x20')](function(_0x429ef2){logger[_0x5ab9('0x28')](util[_0x5ab9('0x51')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+_0x5ab9('0x65'),_0x57f714[_0x5ab9('0x44')],_0x429ef2[_0x5ab9('0x66')]));logger[_0x5ab9('0x28')](util[_0x5ab9('0x51')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+_0x5ab9('0x67'),_0x2d8fe8));if(_0x2d8fe8!=='unmanaged'&&_0x57f714[_0x5ab9('0x68')]){logger[_0x5ab9('0x28')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+']',_0x5ab9('0x69'));emit(_0x362eba[_0x5ab9('0x54')],_0x1de0f7[_0x5ab9('0x6a')],_0x57f714[_0x5ab9('0x44')],_0x429ef2[_0x5ab9('0x66')]);}})[_0x5ab9('0x17')](function(_0xc1feac){logger[_0x5ab9('0x18')]('['+_0x2d8fe8[_0x5ab9('0x19')]()+_0x5ab9('0x6b'),_0xc1feac[_0x5ab9('0x1b')]);console[_0x5ab9('0x18')](_0x5ab9('0x6c'),_0xc1feac);});};