Built motion from commit 3c2ce842.|2.6.31
[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 _0x8630=['trigger:browser:url','stripTrailingSlash','serverUrl','outbound','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','md5','ioredis','../../../../config/logger','dynamics365','defaults','redis','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','resolve','data5','POST','clientId','username','password','clientSecret','catch','error',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','type','customField','indexOf','content','incident','getString','Subjects','Descriptions','/contacts(','Fields','callDirection','queue','phonecalls','ticketType','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s'];(function(_0x3e25c1,_0x1d15f9){var _0x52e7f2=function(_0x597a5a){while(--_0x597a5a){_0x3e25c1['push'](_0x3e25c1['shift']());}};_0x52e7f2(++_0x1d15f9);}(_0x8630,0x1cd));var _0x0863=function(_0x170668,_0x3ef761){_0x170668=_0x170668-0x0;var _0x199be9=_0x8630[_0x170668];return _0x199be9;};'use strict';var _=require(_0x0863('0x0'));var rp=require('request-promise');var util=require(_0x0863('0x1'));var intUtil=require(_0x0863('0x2'));var md5=require(_0x0863('0x3'));var Redis=require(_0x0863('0x4'));var logger=require(_0x0863('0x5'))(_0x0863('0x6'));var config=require('../../../../config/environment');config['redis']=_[_0x0863('0x7')](config[_0x0863('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x0863('0x9'))(new Redis(config['redis']));function getAuthToken(_0x1a3114,_0x2af9e3,_0x15ee62){if(_0x1a3114[_0x0863('0xa')]){_0x1a3114[_0x0863('0xb')]=_0x1a3114[_0x0863('0xc')][_0x0863('0xd')];_0x1a3114[_0x0863('0xe')]=_0x1a3114[_0x0863('0xc')][_0x0863('0xf')];return Promise[_0x0863('0x10')](_0x1a3114[_0x0863('0xc')][_0x0863('0x11')]);}var _0x9f3d15={'method':_0x0863('0x12'),'uri':_0x2af9e3,'form':{'client_id':_0x1a3114[_0x0863('0x13')],'resource':_0x1a3114['remoteUri'],'username':_0x1a3114[_0x0863('0x14')],'password':_0x1a3114[_0x0863('0x15')],'grant_type':_0x0863('0x15'),'client_secret':_0x1a3114[_0x0863('0x16')]},'json':!![]};return rp(_0x9f3d15)['then'](function(_0x43e6cc){return _0x43e6cc['access_token'];})[_0x0863('0x17')](function(_0x5e11f9){logger[_0x0863('0x18')]('['+[_0x15ee62['toUpperCase']()]+_0x0863('0x19'));return _0x5e11f9[_0x0863('0x1a')];});}function getUser(_0x1b4ecb,_0x1b1073,_0x552322,_0x56a398,_0x1d2b55,_0xfa2552){return new Promise(function(_0x5d822b,_0x22958f){return getAuthToken(_0x1b1073,_0x56a398,_0xfa2552)[_0x0863('0x1b')](function(_0x30e277){var _0x22a5ab={'method':_0x0863('0x1c'),'uri':_0x1d2b55+_0x0863('0x1d'),'headers':{'Authorization':_0x0863('0x1e')+_0x30e277,'OData-Version':_0x0863('0x1f')},'json':!![]};return rp(_0x22a5ab);})[_0x0863('0x1b')](function(_0x266e5c){var _0x2e4c51=_0x266e5c[_0x0863('0x20')];var _0x3124ed=![];var _0x54e4ba=null;if(!_[_0x0863('0x21')](_0x552322)){if(intUtil[_0x0863('0x22')](_0x552322[_0x0863('0x23')])){_0x1b4ecb[_0x0863('0x24')]=_0x552322[_0x0863('0x23')];for(_0x54e4ba=0x0;_0x54e4ba<_0x2e4c51[_0x0863('0x25')];_0x54e4ba++){if(_0x2e4c51[_0x54e4ba][_0x0863('0x26')]===_0x552322[_0x0863('0x23')]&&!_0x2e4c51[_0x54e4ba][_0x0863('0x27')]){_0x3124ed=!![];logger[_0x0863('0x28')]('['+[_0xfa2552[_0x0863('0x29')]()]+_0x0863('0x2a')+_0x2e4c51[_0x54e4ba]['systemuserid']+'!');_0x1b4ecb[_0x0863('0x2b')]=_0x2e4c51[_0x54e4ba][_0x0863('0x2c')];}}}}if(!_0x3124ed){logger[_0x0863('0x28')]('['+[_0xfa2552[_0x0863('0x29')]()]+_0x0863('0x2d'));_0x1b4ecb[_0x0863('0x24')]=_0x1b1073[_0x0863('0x14')];for(_0x54e4ba=0x0;_0x54e4ba<_0x2e4c51[_0x0863('0x25')];_0x54e4ba++){if(_0x2e4c51[_0x54e4ba]['internalemailaddress']===_0x1b1073[_0x0863('0x14')]){_0x1b4ecb[_0x0863('0x2b')]=_0x2e4c51[_0x54e4ba][_0x0863('0x2c')];}}}_0x5d822b(_0x1b4ecb);})[_0x0863('0x17')](function(_0x270b35){_0x22958f(_0x270b35['message']);});});}function createEndUser(_0x4fa9a0,_0x4988bb,_0x8ca2e6,_0x51d82a,_0x41e1a2,_0x40d7c5,_0x331bd0){return new Promise(function(_0x434871,_0x6433f8){return getAuthToken(_0x4988bb,_0x8ca2e6,_0x40d7c5)['then'](function(_0x5d0b94){var _0x49dde5=_0x40d7c5[_0x0863('0x2e')]()==='outbound'?_0x41e1a2[_0x0863('0x2f')]:_0x41e1a2[_0x0863('0x30')];var _0x2dbe01={'method':_0x0863('0x12'),'uri':_0x51d82a+_0x0863('0x31'),'body':{'fullname':_0x49dde5,'firstname':_0x49dde5,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x0863('0x32')+_0x4fa9a0[_0x0863('0x2b')]+')'},'headers':{'Authorization':_0x0863('0x1e')+_0x5d0b94,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x2dbe01[_0x0863('0x33')][_0x331bd0]=_0x49dde5;return rp(_0x2dbe01);})[_0x0863('0x1b')](function(_0x2509af){var _0x2fb9ba=_0x2509af[_0x0863('0x34')][_0x0863('0x35')];var _0x5cd282=_0x2fb9ba[_0x0863('0x36')](_0x2fb9ba[_0x0863('0x37')]('(')+0x1,_0x2fb9ba[_0x0863('0x37')](')'));_0x4fa9a0[_0x0863('0x38')]=_0x5cd282;_0x434871(_0x4fa9a0);})[_0x0863('0x17')](function(_0x3d48ce){_0x6433f8(_0x3d48ce['message']);});});}function getEndUser(_0x2fe131,_0x1eda86,_0x49d82c,_0x245a60,_0x5d9710,_0x50d928,_0x4e79c7,_0x278f2e){var _0xf3a6ac=_0x50d928[_0x0863('0x2e')]()==='outbound'?_0x5d9710[_0x0863('0x2f')]:_0x5d9710[_0x0863('0x30')];return getAuthToken(_0x1eda86,_0x49d82c,_0x50d928)[_0x0863('0x1b')](function(_0x4bcf8d){_0x278f2e=_0x278f2e?_0x278f2e:'telephone1';var _0x5a5769={'method':_0x0863('0x1c'),'uri':_0x245a60+_0x0863('0x39')+_0x278f2e+_0x0863('0x3a')+_0x278f2e+_0x0863('0x3b')+_0xf3a6ac[_0x0863('0x3c')]('+',_0x0863('0x3d'))+'\x27','headers':{'Authorization':_0x0863('0x1e')+_0x4bcf8d,'If-None-Match':null,'OData-Version':_0x0863('0x1f')},'json':!![]};return rp(_0x5a5769);})[_0x0863('0x1b')](function(_0x453f40){var _0x4ebe71=![];if(!_0x453f40)return _0x4ebe71;var _0x114d3c=_0x453f40[_0x0863('0x20')];for(var _0x1abb59=0x0;_0x1abb59<_0x114d3c[_0x0863('0x25')];_0x1abb59++){if(_0x114d3c[_0x1abb59][_0x278f2e]===_0xf3a6ac){_0x4ebe71=!![];_0x2fe131['enduserId']=_0x114d3c[_0x1abb59][_0x0863('0x3e')];}}return _0x4ebe71;})['then'](function(_0x8fe55a){if(_0x8fe55a)return _0x2fe131;if(_0x4e79c7===_0x0863('0x3f')){logger[_0x0863('0x28')]('['+[_0x50d928[_0x0863('0x29')]()]+_0x0863('0x40'));return _0x2fe131;}return createEndUser(_0x2fe131,_0x1eda86,_0x49d82c,_0x245a60,_0x5d9710,_0x50d928,_0x278f2e)['then'](function(_0x351694){logger['info']('['+[_0x50d928[_0x0863('0x29')]()]+_0x0863('0x41'),_0x351694[_0x0863('0x38')]);return _0x351694;});});}function getCustomFields(_0x3b7c56,_0x388f7a,_0x4e4221){var _0x107f97={};if(_0x3b7c56[_0x0863('0x25')]>0x0){_[_0x0863('0x42')](_0x3b7c56,function(_0x4e4327){if(_['includes'](['string','picklist'],_0x4e4327[_0x0863('0x43')])&&_0x4e4327['nameField']&&!_0x4e4327[_0x0863('0x44')]){var _0x47702e=_0x4e4327['idField'][_0x0863('0x2e')]();var _0xfaf1b6=_0x47702e['substring'](0x0,_0x47702e[_0x0863('0x45')]('_'));var _0x285de7=_0x47702e[_0x0863('0x36')](_0x47702e[_0x0863('0x45')]('_')+0x1);if(_0xfaf1b6===_0x4e4221){_0x107f97[_0x285de7]=_0x4e4327[_0x0863('0x46')];}}});}return _0x107f97;}function getTicket(_0x1c3d08,_0x2cd79c,_0x31460f,_0x5ead1f,_0x40aa0d,_0x2d48b8,_0x2cfcb2){return new Promise(function(_0x44116a,_0x46d9a3){var _0x1ac09f;return getAuthToken(_0x2cd79c,_0x31460f,_0x2cfcb2)[_0x0863('0x1b')](function(_0x286f26){if(_0x2d48b8['ticketType']===_0x0863('0x47')){_0x1ac09f={'method':'POST','uri':_0x5ead1f+'incidents','body':Object['assign']({},{'title':intUtil[_0x0863('0x48')](_0x2d48b8[_0x0863('0x49')],_0x40aa0d,'\x20'),'description':intUtil['getString'](_0x2d48b8[_0x0863('0x4a')],_0x40aa0d,'\x0a'),'customerid_contact@odata.bind':_0x1c3d08[_0x0863('0x38')]?_0x0863('0x4b')+_0x1c3d08['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x1c3d08[_0x0863('0x2b')]+')','caseorigincode':'1'},getCustomFields(_0x2d48b8[_0x0863('0x4c')],_0x40aa0d,_0x2d48b8['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x286f26,'OData-Version':_0x0863('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2d48b8['ticketType']==='phonecall'){var _0xc9332b=_0x1c3d08[_0x0863('0x38')]?[{'partyid_systemuser@odata.bind':_0x0863('0x32')+_0x1c3d08[_0x0863('0x2b')]+')','participationtypemask':_0x1c3d08[_0x0863('0x4d')]===_0x0863('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':_0x0863('0x4b')+_0x1c3d08[_0x0863('0x38')]+')','participationtypemask':_0x1c3d08['callDirection']===_0x0863('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x0863('0x32')+_0x1c3d08[_0x0863('0x2b')]+')','participationtypemask':_0x1c3d08[_0x0863('0x4d')]===_0x0863('0x4e')?0x2:0x1}];_0x1ac09f={'method':_0x0863('0x12'),'uri':_0x5ead1f+_0x0863('0x4f'),'body':Object['assign']({},{'subject':intUtil['getString'](_0x2d48b8['Subjects'],_0x40aa0d,'\x20'),'phonenumber':String(_0x40aa0d[_0x0863('0x30')]),'description':intUtil[_0x0863('0x48')](_0x2d48b8[_0x0863('0x4a')],_0x40aa0d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1c3d08[_0x0863('0x38')]?_0x0863('0x4b')+_0x1c3d08[_0x0863('0x38')]+')':undefined,'ownerid@odata.bind':_0x0863('0x32')+_0x1c3d08[_0x0863('0x2b')]+')','directioncode':_0x1c3d08[_0x0863('0x4d')]===_0x0863('0x4e')?![]:!![],'phonecall_activity_parties':_0xc9332b},getCustomFields(_0x2d48b8[_0x0863('0x4c')],_0x40aa0d,_0x2d48b8[_0x0863('0x50')])),'headers':{'Authorization':_0x0863('0x1e')+_0x286f26,'OData-Version':_0x0863('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1ac09f);})[_0x0863('0x1b')](function(_0xfe078c){var _0x1524f9=_0xfe078c[_0x0863('0x34')][_0x0863('0x35')];var _0x216a61=_0x1524f9[_0x0863('0x36')](_0x1524f9['lastIndexOf']('(')+0x1,_0x1524f9[_0x0863('0x37')](')'));_0x1c3d08['ticketId']=_0x216a61;_0x44116a(_0x1c3d08);})[_0x0863('0x17')](function(_0x577b49){_0x46d9a3(_0x577b49[_0x0863('0x1a')]);});});}function emit(_0x27807a,_0xf57f9,_0x47c329,_0x754c99){var _0x57fc52={'uri':util['format'](_0x0863('0x51'),_0x27807a,_0x47c329,_0x754c99)};io['to'](util[_0x0863('0x52')](_0x0863('0x53'),_0xf57f9))['emit'](_0x0863('0x54'),_0x57fc52);}exports['cs']=function(_0x2fd942,_0x3ed47b,_0x216d72,_0x1002d5,_0xa12f99,_0x447ad9,_0x2645ef,_0x49a5fc){var _0x591f2a={};_0x447ad9[_0x0863('0xb')]=_0x447ad9['modernAuthentication']?intUtil[_0x0863('0x55')](_0x447ad9[_0x0863('0xc')]['data7']):intUtil['stripTrailingSlash'](_0x447ad9[_0x0863('0xb')]);_0x447ad9[_0x0863('0x56')]=intUtil[_0x0863('0x55')](_0x447ad9[_0x0863('0x56')]);_0x591f2a[_0x0863('0x4d')]=_0x49a5fc==='queue'||_0x49a5fc==='unmanaged'?'queue':_0x0863('0x57');var _0x7184c7=_0x447ad9['modernAuthentication']?util['format']('%s/api/data/v9.0/',_0x447ad9[_0x0863('0xc')][_0x0863('0xd')]):util['format']('%s/api/data/v9.0/',_0x447ad9[_0x0863('0xb')]);var _0x42b162=util[_0x0863('0x52')](_0x0863('0x58'),_0x447ad9[_0x0863('0xe')]);var _0x37c003=util['format'](_0x0863('0x59'),_0x447ad9[_0x0863('0x56')],_0x3ed47b[_0x0863('0x5a')],md5(_0x3ed47b[_0x0863('0x5a')]));if(_0xa12f99&&_0xa12f99['monitor_format']){logger[_0x0863('0x28')](_0x0863('0x5b'),_0x0863('0x5c'));_0x3ed47b[_0x0863('0x5d')]=_0x37c003;}else if(_0x2645ef&&_0x2645ef[_0x0863('0x5e')]&&_0x2645ef[_0x0863('0x5e')]!==_0x0863('0x5f')){logger[_0x0863('0x28')](_0x0863('0x60'),_0x0863('0x5c'));_0x3ed47b['recordingURL']=_0x37c003;}else{_0x3ed47b[_0x0863('0x5d')]='';}return getUser(_0x591f2a,_0x447ad9,_0x1002d5,_0x42b162,_0x7184c7,_0x49a5fc)['then'](function(_0x3b7317){logger[_0x0863('0x28')]('['+_0x49a5fc[_0x0863('0x29')]()+']\x20The\x20User\x20ID\x20is:',_0x3b7317[_0x0863('0x2b')]);logger[_0x0863('0x28')]('['+_0x49a5fc['toUpperCase']()+_0x0863('0x61'),_0x3b7317[_0x0863('0x24')]);return getEndUser(_0x3b7317,_0x447ad9,_0x42b162,_0x7184c7,_0x3ed47b,_0x49a5fc,_0x216d72['moduleCreate'],_0x216d72[_0x0863('0x62')]);})['then'](function(_0x44cd73){logger[_0x0863('0x28')]('['+_0x49a5fc[_0x0863('0x29')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x44cd73[_0x0863('0x38')]);logger[_0x0863('0x28')]('['+_0x49a5fc[_0x0863('0x29')]()+_0x0863('0x63'),_0x3ed47b[_0x0863('0x30')]);return getTicket(_0x44cd73,_0x447ad9,_0x42b162,_0x7184c7,_0x3ed47b,_0x216d72,_0x49a5fc);})[_0x0863('0x1b')](function(_0x262b62){logger[_0x0863('0x28')](util[_0x0863('0x52')]('['+_0x49a5fc['toUpperCase']()+_0x0863('0x64'),_0x216d72[_0x0863('0x50')],_0x262b62['ticketId']));logger[_0x0863('0x28')](util[_0x0863('0x52')]('['+_0x49a5fc[_0x0863('0x29')]()+_0x0863('0x65'),_0x49a5fc));if(_0x49a5fc!==_0x0863('0x66')&&_0x216d72[_0x0863('0x67')]){logger[_0x0863('0x28')]('['+_0x49a5fc[_0x0863('0x29')]()+']',_0x0863('0x68'));emit(_0x447ad9[_0x0863('0xb')],_0x1002d5[_0x0863('0x69')],_0x216d72[_0x0863('0x50')],_0x262b62[_0x0863('0x6a')]);}})[_0x0863('0x17')](function(_0x5b1cf2){logger[_0x0863('0x18')]('['+_0x49a5fc[_0x0863('0x29')]()+_0x0863('0x6b'),_0x5b1cf2[_0x0863('0x1a')]);console[_0x0863('0x18')](_0x0863('0x6c'),_0x5b1cf2);});};