Built motion from commit 8c034dcd.|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 _0x6d42=['CloudProvider','data5','clientId','password','clientSecret','then','access_token','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','userId','catch','toLowerCase','outbound','destcalleridnum','calleridnum','POST','contacts','4.0','headers','substring','lastIndexOf','enduserId','message','telephone1','contacts?$select=','\x20eq\x20\x27','%2b','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','type','nameField','customField','incident','incidents','assign','Subjects','getString','Fields','ticketType','phonecall','/systemusers(','callDirection','queue','/contacts(','Descriptions','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','trigger:browser:url','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','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','../../../../config/logger','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','data7','tenantId','data2','resolve'];(function(_0x6096d5,_0x234765){var _0x67bb17=function(_0x4dabfd){while(--_0x4dabfd){_0x6096d5['push'](_0x6096d5['shift']());}};_0x67bb17(++_0x234765);}(_0x6d42,0x137));var _0x26d4=function(_0x56d358,_0x5dbad3){_0x56d358=_0x56d358-0x0;var _0x593fc4=_0x6d42[_0x56d358];return _0x593fc4;};'use strict';var _=require(_0x26d4('0x0'));var rp=require(_0x26d4('0x1'));var util=require(_0x26d4('0x2'));var intUtil=require(_0x26d4('0x3'));var md5=require('md5');var Redis=require('ioredis');var logger=require(_0x26d4('0x4'))('dynamics365');var config=require(_0x26d4('0x5'));config[_0x26d4('0x6')]=_[_0x26d4('0x7')](config[_0x26d4('0x6')],{'host':_0x26d4('0x8'),'port':0x18eb});var io=require(_0x26d4('0x9'))(new Redis(config[_0x26d4('0x6')]));function getAuthToken(_0x19bc58,_0x5c5498,_0x42f72c){if(_0x19bc58[_0x26d4('0xa')]){_0x19bc58[_0x26d4('0xb')]=_0x19bc58['CloudProvider'][_0x26d4('0xc')];_0x19bc58[_0x26d4('0xd')]=_0x19bc58['CloudProvider'][_0x26d4('0xe')];return Promise[_0x26d4('0xf')](_0x19bc58[_0x26d4('0x10')][_0x26d4('0x11')]);}var _0xa4081c={'method':'POST','uri':_0x5c5498,'form':{'client_id':_0x19bc58[_0x26d4('0x12')],'resource':_0x19bc58[_0x26d4('0xb')],'username':_0x19bc58['username'],'password':_0x19bc58[_0x26d4('0x13')],'grant_type':_0x26d4('0x13'),'client_secret':_0x19bc58[_0x26d4('0x14')]},'json':!![]};return rp(_0xa4081c)[_0x26d4('0x15')](function(_0xe0a6e4){return _0xe0a6e4[_0x26d4('0x16')];})['catch'](function(_0x38bddb){logger['error']('['+[_0x42f72c['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x38bddb['message'];});}function getUser(_0x4e76b6,_0x47b11f,_0x998282,_0x4b15b6,_0x32aa6b,_0x1708d4){return new Promise(function(_0x40a838,_0x1bdda0){return getAuthToken(_0x47b11f,_0x4b15b6,_0x1708d4)[_0x26d4('0x15')](function(_0x4e2848){var _0x483078={'method':_0x26d4('0x17'),'uri':_0x32aa6b+_0x26d4('0x18'),'headers':{'Authorization':_0x26d4('0x19')+_0x4e2848,'OData-Version':'4.0'},'json':!![]};return rp(_0x483078);})[_0x26d4('0x15')](function(_0x18d3dd){var _0x5cb5eb=_0x18d3dd[_0x26d4('0x1a')];var _0x339de6=![];var _0x1ab73a=null;if(!_[_0x26d4('0x1b')](_0x998282)){if(intUtil[_0x26d4('0x1c')](_0x998282[_0x26d4('0x1d')])){_0x4e76b6[_0x26d4('0x1e')]=_0x998282[_0x26d4('0x1d')];for(_0x1ab73a=0x0;_0x1ab73a<_0x5cb5eb[_0x26d4('0x1f')];_0x1ab73a++){if(_0x5cb5eb[_0x1ab73a][_0x26d4('0x20')]===_0x998282[_0x26d4('0x1d')]&&!_0x5cb5eb[_0x1ab73a][_0x26d4('0x21')]){_0x339de6=!![];logger[_0x26d4('0x22')]('['+[_0x1708d4[_0x26d4('0x23')]()]+_0x26d4('0x24')+_0x5cb5eb[_0x1ab73a][_0x26d4('0x25')]+'!');_0x4e76b6['userId']=_0x5cb5eb[_0x1ab73a][_0x26d4('0x25')];}}}}if(!_0x339de6){logger[_0x26d4('0x22')]('['+[_0x1708d4[_0x26d4('0x23')]()]+_0x26d4('0x26'));_0x4e76b6['userEmail']=_0x47b11f['username'];for(_0x1ab73a=0x0;_0x1ab73a<_0x5cb5eb[_0x26d4('0x1f')];_0x1ab73a++){if(_0x5cb5eb[_0x1ab73a][_0x26d4('0x20')]===_0x47b11f[_0x26d4('0x27')]){_0x4e76b6[_0x26d4('0x28')]=_0x5cb5eb[_0x1ab73a][_0x26d4('0x25')];}}}_0x40a838(_0x4e76b6);})[_0x26d4('0x29')](function(_0x4b258f){_0x1bdda0(_0x4b258f['message']);});});}function createEndUser(_0x3f5903,_0x4260b6,_0x1a3a07,_0x2d70f6,_0x3c2a04,_0x8276b5,_0x4eacfb){return new Promise(function(_0x29e892,_0x159458){return getAuthToken(_0x4260b6,_0x1a3a07,_0x8276b5)[_0x26d4('0x15')](function(_0x486bf6){var _0x452e47=_0x8276b5[_0x26d4('0x2a')]()===_0x26d4('0x2b')?_0x3c2a04[_0x26d4('0x2c')]:_0x3c2a04[_0x26d4('0x2d')];var _0x30295e={'method':_0x26d4('0x2e'),'uri':_0x2d70f6+_0x26d4('0x2f'),'body':{'fullname':_0x452e47,'firstname':_0x452e47,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x3f5903[_0x26d4('0x28')]+')'},'headers':{'Authorization':_0x26d4('0x19')+_0x486bf6,'OData-Version':_0x26d4('0x30')},'json':!![],'resolveWithFullResponse':!![]};_0x30295e['body'][_0x4eacfb]=_0x452e47;return rp(_0x30295e);})[_0x26d4('0x15')](function(_0x57d135){var _0x428d9e=_0x57d135[_0x26d4('0x31')]['odata-entityid'];var _0x4d7e3b=_0x428d9e[_0x26d4('0x32')](_0x428d9e[_0x26d4('0x33')]('(')+0x1,_0x428d9e[_0x26d4('0x33')](')'));_0x3f5903[_0x26d4('0x34')]=_0x4d7e3b;_0x29e892(_0x3f5903);})[_0x26d4('0x29')](function(_0x2a44b1){_0x159458(_0x2a44b1[_0x26d4('0x35')]);});});}function getEndUser(_0x305108,_0x1af836,_0x24b27e,_0x59cd6c,_0x226627,_0x16c65b,_0x304ed6,_0x2ab563){var _0x4e592f=_0x16c65b['toLowerCase']()===_0x26d4('0x2b')?_0x226627['destcalleridnum']:_0x226627[_0x26d4('0x2d')];return getAuthToken(_0x1af836,_0x24b27e,_0x16c65b)['then'](function(_0x5be1be){_0x2ab563=_0x2ab563?_0x2ab563:_0x26d4('0x36');var _0x142fd4={'method':'GET','uri':_0x59cd6c+_0x26d4('0x37')+_0x2ab563+'&$filter='+_0x2ab563+_0x26d4('0x38')+_0x4e592f['replace']('+',_0x26d4('0x39'))+'\x27','headers':{'Authorization':_0x26d4('0x19')+_0x5be1be,'If-None-Match':null,'OData-Version':_0x26d4('0x30')},'json':!![]};return rp(_0x142fd4);})[_0x26d4('0x15')](function(_0x3884e8){var _0x59cca2=![];if(!_0x3884e8)return _0x59cca2;var _0x36e018=_0x3884e8['value'];for(var _0x1ceffe=0x0;_0x1ceffe<_0x36e018['length'];_0x1ceffe++){if(_0x36e018[_0x1ceffe][_0x2ab563]===_0x4e592f){_0x59cca2=!![];_0x305108[_0x26d4('0x34')]=_0x36e018[_0x1ceffe]['contactid'];}}return _0x59cca2;})[_0x26d4('0x15')](function(_0x37a882){if(_0x37a882)return _0x305108;if(_0x304ed6===_0x26d4('0x3a')){logger[_0x26d4('0x22')]('['+[_0x16c65b[_0x26d4('0x23')]()]+_0x26d4('0x3b'));return _0x305108;}return createEndUser(_0x305108,_0x1af836,_0x24b27e,_0x59cd6c,_0x226627,_0x16c65b,_0x2ab563)[_0x26d4('0x15')](function(_0x3e8065){logger[_0x26d4('0x22')]('['+[_0x16c65b[_0x26d4('0x23')]()]+_0x26d4('0x3c'),_0x3e8065[_0x26d4('0x34')]);return _0x3e8065;});});}function getCustomFields(_0x47e465,_0x5da37c,_0x2166d7){var _0x395a24={};if(_0x47e465['length']>0x0){_[_0x26d4('0x3d')](_0x47e465,function(_0x31633f){if(_[_0x26d4('0x3e')]([_0x26d4('0x3f'),'picklist'],_0x31633f[_0x26d4('0x40')])&&_0x31633f[_0x26d4('0x41')]&&!_0x31633f[_0x26d4('0x42')]){var _0x573cb5=_0x31633f['idField'][_0x26d4('0x2a')]();var _0x5abc78=_0x573cb5['substring'](0x0,_0x573cb5['indexOf']('_'));var _0x363de0=_0x573cb5[_0x26d4('0x32')](_0x573cb5['indexOf']('_')+0x1);if(_0x5abc78===_0x2166d7){_0x395a24[_0x363de0]=_0x31633f['content'];}}});}return _0x395a24;}function getTicket(_0xd8e4b9,_0x3e1981,_0x40cc6d,_0x119d24,_0x5268f9,_0x4cbf20,_0x2bf4ab){return new Promise(function(_0x1a2ed2,_0x4353ad){var _0x16997d;return getAuthToken(_0x3e1981,_0x40cc6d,_0x2bf4ab)['then'](function(_0xac7b9c){if(_0x4cbf20['ticketType']===_0x26d4('0x43')){_0x16997d={'method':_0x26d4('0x2e'),'uri':_0x119d24+_0x26d4('0x44'),'body':Object[_0x26d4('0x45')]({},{'title':intUtil['getString'](_0x4cbf20[_0x26d4('0x46')],_0x5268f9,'\x20'),'description':intUtil[_0x26d4('0x47')](_0x4cbf20['Descriptions'],_0x5268f9,'\x0a'),'customerid_contact@odata.bind':_0xd8e4b9[_0x26d4('0x34')]?'/contacts('+_0xd8e4b9['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0xd8e4b9['userId']+')','caseorigincode':'1'},getCustomFields(_0x4cbf20[_0x26d4('0x48')],_0x5268f9,_0x4cbf20[_0x26d4('0x49')])),'headers':{'Authorization':_0x26d4('0x19')+_0xac7b9c,'OData-Version':_0x26d4('0x30')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4cbf20[_0x26d4('0x49')]===_0x26d4('0x4a')){var _0x23c599=_0xd8e4b9[_0x26d4('0x34')]?[{'partyid_systemuser@odata.bind':_0x26d4('0x4b')+_0xd8e4b9[_0x26d4('0x28')]+')','participationtypemask':_0xd8e4b9[_0x26d4('0x4c')]===_0x26d4('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0x26d4('0x4e')+_0xd8e4b9[_0x26d4('0x34')]+')','participationtypemask':_0xd8e4b9[_0x26d4('0x4c')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x26d4('0x4b')+_0xd8e4b9[_0x26d4('0x28')]+')','participationtypemask':_0xd8e4b9[_0x26d4('0x4c')]===_0x26d4('0x4d')?0x2:0x1}];_0x16997d={'method':'POST','uri':_0x119d24+'phonecalls','body':Object[_0x26d4('0x45')]({},{'subject':intUtil['getString'](_0x4cbf20[_0x26d4('0x46')],_0x5268f9,'\x20'),'phonenumber':String(_0x5268f9['calleridnum']),'description':intUtil[_0x26d4('0x47')](_0x4cbf20[_0x26d4('0x4f')],_0x5268f9,'\x0a'),'regardingobjectid_contact@odata.bind':_0xd8e4b9['enduserId']?_0x26d4('0x4e')+_0xd8e4b9[_0x26d4('0x34')]+')':undefined,'ownerid@odata.bind':_0x26d4('0x4b')+_0xd8e4b9[_0x26d4('0x28')]+')','directioncode':_0xd8e4b9['callDirection']===_0x26d4('0x4d')?![]:!![],'phonecall_activity_parties':_0x23c599},getCustomFields(_0x4cbf20['Fields'],_0x5268f9,_0x4cbf20[_0x26d4('0x49')])),'headers':{'Authorization':_0x26d4('0x19')+_0xac7b9c,'OData-Version':_0x26d4('0x30')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x16997d);})[_0x26d4('0x15')](function(_0x3004bf){var _0x2798f3=_0x3004bf['headers'][_0x26d4('0x50')];var _0x5a3a2f=_0x2798f3[_0x26d4('0x32')](_0x2798f3[_0x26d4('0x33')]('(')+0x1,_0x2798f3[_0x26d4('0x33')](')'));_0xd8e4b9[_0x26d4('0x51')]=_0x5a3a2f;_0x1a2ed2(_0xd8e4b9);})['catch'](function(_0x858e32){_0x4353ad(_0x858e32[_0x26d4('0x35')]);});});}function emit(_0x167cb8,_0x5943b3,_0x38b4c3,_0x29103d){var _0x43f167={'uri':util[_0x26d4('0x52')](_0x26d4('0x53'),_0x167cb8,_0x38b4c3,_0x29103d)};io['to'](util[_0x26d4('0x52')](_0x26d4('0x54'),_0x5943b3))['emit'](_0x26d4('0x55'),_0x43f167);}exports['cs']=function(_0x3cdf6d,_0x3a47e1,_0x32563d,_0x11187b,_0x1dc3cb,_0x575915,_0x584c00,_0x5ee0c8){var _0x5199ac={};_0x575915['remoteUri']=_0x575915[_0x26d4('0xa')]?intUtil['stripTrailingSlash'](_0x575915['CloudProvider']['data7']):intUtil['stripTrailingSlash'](_0x575915['remoteUri']);_0x575915[_0x26d4('0x56')]=intUtil['stripTrailingSlash'](_0x575915['serverUrl']);_0x5199ac['callDirection']=_0x5ee0c8===_0x26d4('0x4d')||_0x5ee0c8===_0x26d4('0x57')?_0x26d4('0x4d'):_0x26d4('0x2b');var _0x1da033=_0x575915[_0x26d4('0xa')]?util[_0x26d4('0x52')](_0x26d4('0x58'),_0x575915[_0x26d4('0x10')][_0x26d4('0xc')]):util[_0x26d4('0x52')](_0x26d4('0x58'),_0x575915['remoteUri']);var _0x3759c1=util[_0x26d4('0x52')](_0x26d4('0x59'),_0x575915['tenantId']);var _0x3685b2=util[_0x26d4('0x52')](_0x26d4('0x5a'),_0x575915[_0x26d4('0x56')],_0x3a47e1[_0x26d4('0x5b')],md5(_0x3a47e1[_0x26d4('0x5b')]));if(_0x1dc3cb&&_0x1dc3cb[_0x26d4('0x5c')]){logger[_0x26d4('0x22')](_0x26d4('0x5d'),_0x26d4('0x5e'));_0x3a47e1[_0x26d4('0x5f')]=_0x3685b2;}else if(_0x584c00&&_0x584c00[_0x26d4('0x60')]&&_0x584c00[_0x26d4('0x60')]!=='none'){logger[_0x26d4('0x22')](_0x26d4('0x61'),_0x26d4('0x5e'));_0x3a47e1[_0x26d4('0x5f')]=_0x3685b2;}else{_0x3a47e1[_0x26d4('0x5f')]='';}return getUser(_0x5199ac,_0x575915,_0x11187b,_0x3759c1,_0x1da033,_0x5ee0c8)[_0x26d4('0x15')](function(_0xe4ba41){logger[_0x26d4('0x22')]('['+_0x5ee0c8[_0x26d4('0x23')]()+']\x20The\x20User\x20ID\x20is:',_0xe4ba41[_0x26d4('0x28')]);logger[_0x26d4('0x22')]('['+_0x5ee0c8['toUpperCase']()+_0x26d4('0x62'),_0xe4ba41[_0x26d4('0x1e')]);return getEndUser(_0xe4ba41,_0x575915,_0x3759c1,_0x1da033,_0x3a47e1,_0x5ee0c8,_0x32563d[_0x26d4('0x63')],_0x32563d[_0x26d4('0x64')]);})[_0x26d4('0x15')](function(_0x410d82){logger[_0x26d4('0x22')]('['+_0x5ee0c8['toUpperCase']()+_0x26d4('0x65'),_0x410d82[_0x26d4('0x34')]);logger[_0x26d4('0x22')]('['+_0x5ee0c8[_0x26d4('0x23')]()+_0x26d4('0x66'),_0x3a47e1['calleridnum']);return getTicket(_0x410d82,_0x575915,_0x3759c1,_0x1da033,_0x3a47e1,_0x32563d,_0x5ee0c8);})[_0x26d4('0x15')](function(_0xf55796){logger[_0x26d4('0x22')](util[_0x26d4('0x52')]('['+_0x5ee0c8[_0x26d4('0x23')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x32563d['ticketType'],_0xf55796[_0x26d4('0x51')]));logger[_0x26d4('0x22')](util['format']('['+_0x5ee0c8[_0x26d4('0x23')]()+_0x26d4('0x67'),_0x5ee0c8));if(_0x5ee0c8!==_0x26d4('0x57')&&_0x32563d[_0x26d4('0x68')]){logger[_0x26d4('0x22')]('['+_0x5ee0c8['toUpperCase']()+']',_0x26d4('0x69'));emit(_0x575915[_0x26d4('0xb')],_0x11187b[_0x26d4('0x6a')],_0x32563d[_0x26d4('0x49')],_0xf55796[_0x26d4('0x51')]);}})[_0x26d4('0x29')](function(_0x44680e){logger[_0x26d4('0x6b')]('['+_0x5ee0c8['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x44680e['message']);console[_0x26d4('0x6b')](_0x26d4('0x6c'),_0x44680e);});};