bfde68773efd9580ba7420e15174312c0bc61ac6
[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 _0x7e4d=['contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','includes','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','POST','incidents','getString','Subjects','Descriptions','/contacts(','userId','Fields','queue','callDirection','phonecalls','assign','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','trigger:browser:url','stripTrailingSlash','data7','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:','moduleCreate',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','tenantId','data5','clientId','password','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','isdisabled',']\x20Agent\x20found\x20','systemuserid','info','username','internalemailaddress','then','toLowerCase','outbound','destcalleridnum','calleridnum'];(function(_0x161885,_0x383938){var _0x45107c=function(_0x34ffe0){while(--_0x34ffe0){_0x161885['push'](_0x161885['shift']());}};_0x45107c(++_0x383938);}(_0x7e4d,0xab));var _0xd7e4=function(_0x205313,_0x1172a7){_0x205313=_0x205313-0x0;var _0xfb032=_0x7e4d[_0x205313];return _0xfb032;};'use strict';var _=require(_0xd7e4('0x0'));var rp=require(_0xd7e4('0x1'));var util=require('util');var intUtil=require(_0xd7e4('0x2'));var md5=require(_0xd7e4('0x3'));var Redis=require(_0xd7e4('0x4'));var logger=require(_0xd7e4('0x5'))(_0xd7e4('0x6'));var config=require('../../../../config/environment');config[_0xd7e4('0x7')]=_[_0xd7e4('0x8')](config[_0xd7e4('0x7')],{'host':_0xd7e4('0x9'),'port':0x18eb});var io=require(_0xd7e4('0xa'))(new Redis(config[_0xd7e4('0x7')]));function getAuthToken(_0x10a26b,_0x1a0d07,_0x178c0d){if(_0x10a26b[_0xd7e4('0xb')]){_0x10a26b[_0xd7e4('0xc')]=_0x10a26b[_0xd7e4('0xd')]['data7'];_0x10a26b[_0xd7e4('0xe')]=_0x10a26b['CloudProvider']['data2'];return Promise['resolve'](_0x10a26b['CloudProvider'][_0xd7e4('0xf')]);}var _0xd47cb1={'method':'POST','uri':_0x1a0d07,'form':{'client_id':_0x10a26b[_0xd7e4('0x10')],'resource':_0x10a26b['remoteUri'],'username':_0x10a26b['username'],'password':_0x10a26b[_0xd7e4('0x11')],'grant_type':_0xd7e4('0x11'),'client_secret':_0x10a26b['clientSecret']},'json':!![]};return rp(_0xd47cb1)['then'](function(_0x4d4949){return _0x4d4949[_0xd7e4('0x12')];})[_0xd7e4('0x13')](function(_0x3eec2d){logger[_0xd7e4('0x14')]('['+[_0x178c0d[_0xd7e4('0x15')]()]+_0xd7e4('0x16'));return _0x3eec2d[_0xd7e4('0x17')];});}function getUser(_0x52d958,_0x3e6819,_0x193449,_0x30558d,_0x20f7c2,_0x2e991c){return new Promise(function(_0x47b475,_0x1fc8e9){return getAuthToken(_0x3e6819,_0x30558d,_0x2e991c)['then'](function(_0x11b69e){var _0x521ea0={'method':_0xd7e4('0x18'),'uri':_0x20f7c2+_0xd7e4('0x19'),'headers':{'Authorization':_0xd7e4('0x1a')+_0x11b69e,'OData-Version':_0xd7e4('0x1b')},'json':!![]};return rp(_0x521ea0);})['then'](function(_0x4c2e80){var _0x223d7b=_0x4c2e80[_0xd7e4('0x1c')];var _0x21c664=![];var _0x18b91a=null;if(!_[_0xd7e4('0x1d')](_0x193449)){if(intUtil[_0xd7e4('0x1e')](_0x193449[_0xd7e4('0x1f')])){_0x52d958[_0xd7e4('0x20')]=_0x193449[_0xd7e4('0x1f')];for(_0x18b91a=0x0;_0x18b91a<_0x223d7b[_0xd7e4('0x21')];_0x18b91a++){if(_0x223d7b[_0x18b91a]['internalemailaddress']===_0x193449[_0xd7e4('0x1f')]&&!_0x223d7b[_0x18b91a][_0xd7e4('0x22')]){_0x21c664=!![];logger['info']('['+[_0x2e991c[_0xd7e4('0x15')]()]+_0xd7e4('0x23')+_0x223d7b[_0x18b91a][_0xd7e4('0x24')]+'!');_0x52d958['userId']=_0x223d7b[_0x18b91a][_0xd7e4('0x24')];}}}}if(!_0x21c664){logger[_0xd7e4('0x25')]('['+[_0x2e991c[_0xd7e4('0x15')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x52d958[_0xd7e4('0x20')]=_0x3e6819[_0xd7e4('0x26')];for(_0x18b91a=0x0;_0x18b91a<_0x223d7b[_0xd7e4('0x21')];_0x18b91a++){if(_0x223d7b[_0x18b91a][_0xd7e4('0x27')]===_0x3e6819[_0xd7e4('0x26')]){_0x52d958['userId']=_0x223d7b[_0x18b91a][_0xd7e4('0x24')];}}}_0x47b475(_0x52d958);})[_0xd7e4('0x13')](function(_0x495973){_0x1fc8e9(_0x495973[_0xd7e4('0x17')]);});});}function createEndUser(_0x57a8a4,_0x51a57d,_0x9751fe,_0x4ff7c9,_0x26df04,_0x116681){return new Promise(function(_0x404c67,_0x2a39cc){return getAuthToken(_0x51a57d,_0x9751fe,_0x116681)[_0xd7e4('0x28')](function(_0x20d7ff){var _0x2dffef=_0x116681[_0xd7e4('0x29')]()===_0xd7e4('0x2a')?_0x26df04[_0xd7e4('0x2b')]:_0x26df04[_0xd7e4('0x2c')];var _0x38139a={'method':'POST','uri':_0x4ff7c9+_0xd7e4('0x2d'),'body':{'telephone1':_0x2dffef,'fullname':_0x2dffef,'firstname':_0x2dffef,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xd7e4('0x2e')+_0x57a8a4['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x20d7ff,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x38139a);})[_0xd7e4('0x28')](function(_0x51d8e1){var _0x1871b4=_0x51d8e1[_0xd7e4('0x2f')][_0xd7e4('0x30')];var _0x1617d2=_0x1871b4[_0xd7e4('0x31')](_0x1871b4[_0xd7e4('0x32')]('(')+0x1,_0x1871b4['lastIndexOf'](')'));_0x57a8a4[_0xd7e4('0x33')]=_0x1617d2;_0x404c67(_0x57a8a4);})[_0xd7e4('0x13')](function(_0x581645){_0x2a39cc(_0x581645[_0xd7e4('0x17')]);});});}function getEndUser(_0x2b6be0,_0xcd5c89,_0x462b6c,_0x477907,_0x12d64a,_0x4ab802,_0x988565){var _0x3f7625=_0x4ab802[_0xd7e4('0x29')]()===_0xd7e4('0x2a')?_0x12d64a['destcalleridnum']:_0x12d64a[_0xd7e4('0x2c')];return getAuthToken(_0xcd5c89,_0x462b6c,_0x4ab802)[_0xd7e4('0x28')](function(_0x518e51){var _0x3f2b85={'method':_0xd7e4('0x18'),'uri':_0x477907+_0xd7e4('0x34')+_0x3f7625[_0xd7e4('0x35')]('+',_0xd7e4('0x36'))+'\x27','headers':{'Authorization':_0xd7e4('0x1a')+_0x518e51,'If-None-Match':null,'OData-Version':_0xd7e4('0x1b')},'json':!![]};return rp(_0x3f2b85);})[_0xd7e4('0x28')](function(_0x2a6c1e){var _0x2674b3=![];if(!_0x2a6c1e)return _0x2674b3;var _0x386cd7=_0x2a6c1e[_0xd7e4('0x1c')];for(var _0x32a69f=0x0;_0x32a69f<_0x386cd7[_0xd7e4('0x21')];_0x32a69f++){if(_0x386cd7[_0x32a69f][_0xd7e4('0x37')]===_0x3f7625){_0x2674b3=!![];_0x2b6be0['enduserId']=_0x386cd7[_0x32a69f][_0xd7e4('0x38')];}}return _0x2674b3;})[_0xd7e4('0x28')](function(_0x19635d){if(_0x19635d)return _0x2b6be0;if(_0x988565==='nothing'){logger[_0xd7e4('0x25')]('['+[_0x4ab802['toUpperCase']()]+_0xd7e4('0x39'));return _0x2b6be0;}return createEndUser(_0x2b6be0,_0xcd5c89,_0x462b6c,_0x477907,_0x12d64a,_0x4ab802)[_0xd7e4('0x28')](function(_0x5c439a){logger[_0xd7e4('0x25')]('['+[_0x4ab802[_0xd7e4('0x15')]()]+']\x20Enduser\x20created!',_0x5c439a[_0xd7e4('0x33')]);return _0x5c439a;});});}function getCustomFields(_0x50b6af,_0x5b0f89,_0x4bd190){var _0x2c1e81={};if(_0x50b6af['length']>0x0){_[_0xd7e4('0x3a')](_0x50b6af,function(_0x191d64){if(_[_0xd7e4('0x3b')](['string',_0xd7e4('0x3c')],_0x191d64[_0xd7e4('0x3d')])&&_0x191d64[_0xd7e4('0x3e')]&&!_0x191d64[_0xd7e4('0x3f')]){var _0x3c8da0=_0x191d64[_0xd7e4('0x40')][_0xd7e4('0x29')]();var _0x1dbd94=_0x3c8da0[_0xd7e4('0x31')](0x0,_0x3c8da0[_0xd7e4('0x41')]('_'));var _0x57be67=_0x3c8da0[_0xd7e4('0x31')](_0x3c8da0[_0xd7e4('0x41')]('_')+0x1);if(_0x1dbd94===_0x4bd190){_0x2c1e81[_0x57be67]=_0x191d64[_0xd7e4('0x42')];}}});}return _0x2c1e81;}function getTicket(_0x595727,_0x3a0b15,_0x5e8d81,_0x3b1487,_0x493ab1,_0x524c33,_0xc67f63){return new Promise(function(_0xeb08b6,_0x3f4369){var _0x143ea3;return getAuthToken(_0x3a0b15,_0x5e8d81,_0xc67f63)['then'](function(_0x1a0328){if(_0x524c33[_0xd7e4('0x43')]===_0xd7e4('0x44')){_0x143ea3={'method':_0xd7e4('0x45'),'uri':_0x3b1487+_0xd7e4('0x46'),'body':Object['assign']({},{'title':intUtil[_0xd7e4('0x47')](_0x524c33[_0xd7e4('0x48')],_0x493ab1,'\x20'),'description':intUtil[_0xd7e4('0x47')](_0x524c33[_0xd7e4('0x49')],_0x493ab1,'\x0a'),'customerid_contact@odata.bind':_0x595727['enduserId']?_0xd7e4('0x4a')+_0x595727['enduserId']+')':undefined,'ownerid@odata.bind':_0xd7e4('0x2e')+_0x595727[_0xd7e4('0x4b')]+')','caseorigincode':'1'},getCustomFields(_0x524c33[_0xd7e4('0x4c')],_0x493ab1,_0x524c33[_0xd7e4('0x43')])),'headers':{'Authorization':_0xd7e4('0x1a')+_0x1a0328,'OData-Version':_0xd7e4('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x524c33[_0xd7e4('0x43')]==='phonecall'){var _0x59fb56=_0x595727[_0xd7e4('0x33')]?[{'partyid_systemuser@odata.bind':_0xd7e4('0x2e')+_0x595727[_0xd7e4('0x4b')]+')','participationtypemask':_0x595727['callDirection']===_0xd7e4('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0xd7e4('0x4a')+_0x595727['enduserId']+')','participationtypemask':_0x595727[_0xd7e4('0x4e')]===_0xd7e4('0x4d')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xd7e4('0x2e')+_0x595727[_0xd7e4('0x4b')]+')','participationtypemask':_0x595727[_0xd7e4('0x4e')]==='queue'?0x2:0x1}];_0x143ea3={'method':'POST','uri':_0x3b1487+_0xd7e4('0x4f'),'body':Object[_0xd7e4('0x50')]({},{'subject':intUtil[_0xd7e4('0x47')](_0x524c33['Subjects'],_0x493ab1,'\x20'),'phonenumber':String(_0x493ab1[_0xd7e4('0x2c')]),'description':intUtil['getString'](_0x524c33[_0xd7e4('0x49')],_0x493ab1,'\x0a'),'regardingobjectid_contact@odata.bind':_0x595727['enduserId']?_0xd7e4('0x4a')+_0x595727['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x595727[_0xd7e4('0x4b')]+')','directioncode':_0x595727['callDirection']==='queue'?![]:!![],'phonecall_activity_parties':_0x59fb56},getCustomFields(_0x524c33[_0xd7e4('0x4c')],_0x493ab1,_0x524c33[_0xd7e4('0x43')])),'headers':{'Authorization':_0xd7e4('0x1a')+_0x1a0328,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x143ea3);})[_0xd7e4('0x28')](function(_0x425d72){var _0x30c753=_0x425d72[_0xd7e4('0x2f')][_0xd7e4('0x30')];var _0x1288b4=_0x30c753[_0xd7e4('0x31')](_0x30c753[_0xd7e4('0x32')]('(')+0x1,_0x30c753[_0xd7e4('0x32')](')'));_0x595727[_0xd7e4('0x51')]=_0x1288b4;_0xeb08b6(_0x595727);})[_0xd7e4('0x13')](function(_0x17f629){_0x3f4369(_0x17f629['message']);});});}function emit(_0xe49bc8,_0x501aae,_0x514734,_0xc495f8){var _0x77eb8b={'uri':util['format'](_0xd7e4('0x52'),_0xe49bc8,_0x514734,_0xc495f8)};io['to'](util[_0xd7e4('0x53')](_0xd7e4('0x54'),_0x501aae))['emit'](_0xd7e4('0x55'),_0x77eb8b);}exports['cs']=function(_0x4e5b1a,_0x471e43,_0x39195f,_0x47c187,_0x14312e,_0x5444e7,_0x11c275,_0x7a04e1){var _0x136d20={};_0x5444e7['remoteUri']=_0x5444e7[_0xd7e4('0xb')]?intUtil[_0xd7e4('0x56')](_0x5444e7[_0xd7e4('0xd')][_0xd7e4('0x57')]):intUtil[_0xd7e4('0x56')](_0x5444e7[_0xd7e4('0xc')]);_0x5444e7[_0xd7e4('0x58')]=intUtil[_0xd7e4('0x56')](_0x5444e7['serverUrl']);_0x136d20['callDirection']=_0x7a04e1===_0xd7e4('0x4d')||_0x7a04e1==='unmanaged'?_0xd7e4('0x4d'):_0xd7e4('0x2a');var _0x36300f=_0x5444e7[_0xd7e4('0xb')]?util['format'](_0xd7e4('0x59'),_0x5444e7[_0xd7e4('0xd')][_0xd7e4('0x57')]):util[_0xd7e4('0x53')](_0xd7e4('0x59'),_0x5444e7['remoteUri']);var _0xdf83e9=util[_0xd7e4('0x53')](_0xd7e4('0x5a'),_0x5444e7['tenantId']);var _0x536f0a=util[_0xd7e4('0x53')](_0xd7e4('0x5b'),_0x5444e7['serverUrl'],_0x471e43[_0xd7e4('0x5c')],md5(_0x471e43[_0xd7e4('0x5c')]));if(_0x14312e&&_0x14312e['monitor_format']){logger[_0xd7e4('0x25')](_0xd7e4('0x5d'),'Recording\x20is\x20enabled!');_0x471e43[_0xd7e4('0x5e')]=_0x536f0a;}else if(_0x11c275&&_0x11c275['recordingFormat']&&_0x11c275[_0xd7e4('0x5f')]!==_0xd7e4('0x60')){logger['info'](_0xd7e4('0x61'),_0xd7e4('0x62'));_0x471e43[_0xd7e4('0x5e')]=_0x536f0a;}else{_0x471e43[_0xd7e4('0x5e')]='';}return getUser(_0x136d20,_0x5444e7,_0x47c187,_0xdf83e9,_0x36300f,_0x7a04e1)[_0xd7e4('0x28')](function(_0x1cfbcf){logger[_0xd7e4('0x25')]('['+_0x7a04e1[_0xd7e4('0x15')]()+_0xd7e4('0x63'),_0x1cfbcf['userId']);logger[_0xd7e4('0x25')]('['+_0x7a04e1[_0xd7e4('0x15')]()+']\x20The\x20User\x20email\x20is:',_0x1cfbcf[_0xd7e4('0x20')]);return getEndUser(_0x1cfbcf,_0x5444e7,_0xdf83e9,_0x36300f,_0x471e43,_0x7a04e1,_0x39195f[_0xd7e4('0x64')]);})[_0xd7e4('0x28')](function(_0x419697){logger[_0xd7e4('0x25')]('['+_0x7a04e1[_0xd7e4('0x15')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x419697[_0xd7e4('0x33')]);logger['info']('['+_0x7a04e1[_0xd7e4('0x15')]()+_0xd7e4('0x65'),_0x471e43[_0xd7e4('0x2c')]);return getTicket(_0x419697,_0x5444e7,_0xdf83e9,_0x36300f,_0x471e43,_0x39195f,_0x7a04e1);})[_0xd7e4('0x28')](function(_0x29b7b1){logger[_0xd7e4('0x25')](util[_0xd7e4('0x53')]('['+_0x7a04e1[_0xd7e4('0x15')]()+_0xd7e4('0x66'),_0x39195f[_0xd7e4('0x43')],_0x29b7b1[_0xd7e4('0x51')]));logger['info'](util[_0xd7e4('0x53')]('['+_0x7a04e1[_0xd7e4('0x15')]()+_0xd7e4('0x67'),_0x7a04e1));if(_0x7a04e1!==_0xd7e4('0x68')){logger[_0xd7e4('0x25')]('['+_0x7a04e1[_0xd7e4('0x15')]()+']',_0xd7e4('0x69'));emit(_0x5444e7[_0xd7e4('0xc')],_0x47c187[_0xd7e4('0x6a')],_0x39195f[_0xd7e4('0x43')],_0x29b7b1[_0xd7e4('0x51')]);}})['catch'](function(_0x36d212){logger[_0xd7e4('0x14')]('['+_0x7a04e1['toUpperCase']()+_0xd7e4('0x6b'),_0x36d212[_0xd7e4('0x17')]);});};