Built motion from commit b0a9a629.|2.6.33
[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 _0xe93d=['lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','type','nameField','customField','idField','indexOf','ticketType','incident','incidents','assign','getString','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','Subjects','Descriptions','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','uniqueid','monitor_format','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','data5','clientId','username','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','userId','toLowerCase','outbound','destcalleridnum','calleridnum','POST','contacts','/systemusers(','body','substring'];(function(_0x3d4c3f,_0x258527){var _0x54ab5f=function(_0x5e330c){while(--_0x5e330c){_0x3d4c3f['push'](_0x3d4c3f['shift']());}};_0x54ab5f(++_0x258527);}(_0xe93d,0xa5));var _0xde93=function(_0x1977b6,_0x4ff10d){_0x1977b6=_0x1977b6-0x0;var _0x5f5466=_0xe93d[_0x1977b6];return _0x5f5466;};'use strict';var _=require(_0xde93('0x0'));var rp=require(_0xde93('0x1'));var util=require(_0xde93('0x2'));var intUtil=require('./util');var md5=require(_0xde93('0x3'));var Redis=require('ioredis');var logger=require(_0xde93('0x4'))(_0xde93('0x5'));var config=require(_0xde93('0x6'));config['redis']=_['defaults'](config[_0xde93('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xde93('0x8'))(new Redis(config[_0xde93('0x7')]));function getAuthToken(_0x29b0b1,_0x2ab050,_0x4d99c9){if(_0x29b0b1[_0xde93('0x9')]){_0x29b0b1[_0xde93('0xa')]=_0x29b0b1[_0xde93('0xb')][_0xde93('0xc')];_0x29b0b1[_0xde93('0xd')]=_0x29b0b1['CloudProvider'][_0xde93('0xe')];return Promise['resolve'](_0x29b0b1['CloudProvider'][_0xde93('0xf')]);}var _0xaa63ed={'method':'POST','uri':_0x2ab050,'form':{'client_id':_0x29b0b1[_0xde93('0x10')],'resource':_0x29b0b1['remoteUri'],'username':_0x29b0b1[_0xde93('0x11')],'password':_0x29b0b1[_0xde93('0x12')],'grant_type':'password','client_secret':_0x29b0b1[_0xde93('0x13')]},'json':!![]};return rp(_0xaa63ed)[_0xde93('0x14')](function(_0x13689b){return _0x13689b[_0xde93('0x15')];})[_0xde93('0x16')](function(_0x1e8558){logger[_0xde93('0x17')]('['+[_0x4d99c9['toUpperCase']()]+_0xde93('0x18'));return _0x1e8558[_0xde93('0x19')];});}function getUser(_0xe46c57,_0x3361e3,_0x383642,_0x48cb9d,_0x1838ff,_0x589250){return new Promise(function(_0x4b8824,_0x21d1e0){return getAuthToken(_0x3361e3,_0x48cb9d,_0x589250)['then'](function(_0x1b24f4){var _0x54cf58={'method':_0xde93('0x1a'),'uri':_0x1838ff+_0xde93('0x1b'),'headers':{'Authorization':_0xde93('0x1c')+_0x1b24f4,'OData-Version':_0xde93('0x1d')},'json':!![]};return rp(_0x54cf58);})['then'](function(_0x1c5554){var _0x2f4e4f=_0x1c5554[_0xde93('0x1e')];var _0x4eb978=![];var _0x2e5609=null;if(!_[_0xde93('0x1f')](_0x383642)){if(intUtil[_0xde93('0x20')](_0x383642[_0xde93('0x21')])){_0xe46c57['userEmail']=_0x383642[_0xde93('0x21')];for(_0x2e5609=0x0;_0x2e5609<_0x2f4e4f[_0xde93('0x22')];_0x2e5609++){if(_0x2f4e4f[_0x2e5609][_0xde93('0x23')]===_0x383642['email']&&!_0x2f4e4f[_0x2e5609][_0xde93('0x24')]){_0x4eb978=!![];logger[_0xde93('0x25')]('['+[_0x589250[_0xde93('0x26')]()]+_0xde93('0x27')+_0x2f4e4f[_0x2e5609][_0xde93('0x28')]+'!');_0xe46c57['userId']=_0x2f4e4f[_0x2e5609][_0xde93('0x28')];}}}}if(!_0x4eb978){logger[_0xde93('0x25')]('['+[_0x589250[_0xde93('0x26')]()]+_0xde93('0x29'));_0xe46c57[_0xde93('0x2a')]=_0x3361e3[_0xde93('0x11')];for(_0x2e5609=0x0;_0x2e5609<_0x2f4e4f[_0xde93('0x22')];_0x2e5609++){if(_0x2f4e4f[_0x2e5609][_0xde93('0x23')]===_0x3361e3[_0xde93('0x11')]){_0xe46c57[_0xde93('0x2b')]=_0x2f4e4f[_0x2e5609][_0xde93('0x28')];}}}_0x4b8824(_0xe46c57);})[_0xde93('0x16')](function(_0x2911d3){_0x21d1e0(_0x2911d3[_0xde93('0x19')]);});});}function createEndUser(_0x4334c8,_0xade3bb,_0x5d27e9,_0x1a6e98,_0x13b45d,_0x4e0e9a,_0xbf54e4){return new Promise(function(_0x57697e,_0x3aa3cc){return getAuthToken(_0xade3bb,_0x5d27e9,_0x4e0e9a)['then'](function(_0x4003cf){var _0x2e0f6a=_0x4e0e9a[_0xde93('0x2c')]()===_0xde93('0x2d')?_0x13b45d[_0xde93('0x2e')]:_0x13b45d[_0xde93('0x2f')];var _0x4a4ef1={'method':_0xde93('0x30'),'uri':_0x1a6e98+_0xde93('0x31'),'body':{'fullname':_0x2e0f6a,'firstname':_0x2e0f6a,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xde93('0x32')+_0x4334c8[_0xde93('0x2b')]+')'},'headers':{'Authorization':_0xde93('0x1c')+_0x4003cf,'OData-Version':_0xde93('0x1d')},'json':!![],'resolveWithFullResponse':!![]};_0x4a4ef1[_0xde93('0x33')][_0xbf54e4]=_0x2e0f6a;return rp(_0x4a4ef1);})[_0xde93('0x14')](function(_0x1647a4){var _0x895132=_0x1647a4['headers']['odata-entityid'];var _0x56ca2b=_0x895132[_0xde93('0x34')](_0x895132[_0xde93('0x35')]('(')+0x1,_0x895132[_0xde93('0x35')](')'));_0x4334c8[_0xde93('0x36')]=_0x56ca2b;_0x57697e(_0x4334c8);})['catch'](function(_0x492f82){_0x3aa3cc(_0x492f82[_0xde93('0x19')]);});});}function getEndUser(_0x43e97d,_0x27b8ea,_0x40a07d,_0x25ab06,_0x305f9a,_0x3ae719,_0x33753b,_0x13c9b4){var _0x10b344=_0x3ae719[_0xde93('0x2c')]()===_0xde93('0x2d')?_0x305f9a[_0xde93('0x2e')]:_0x305f9a[_0xde93('0x2f')];return getAuthToken(_0x27b8ea,_0x40a07d,_0x3ae719)['then'](function(_0x20d216){_0x13c9b4=_0x13c9b4?_0x13c9b4:_0xde93('0x37');var _0xf55152={'method':_0xde93('0x1a'),'uri':_0x25ab06+_0xde93('0x38')+_0x13c9b4+_0xde93('0x39')+_0x13c9b4+_0xde93('0x3a')+_0x10b344['replace']('+','%2b')+'\x27','headers':{'Authorization':_0xde93('0x1c')+_0x20d216,'If-None-Match':null,'OData-Version':_0xde93('0x1d')},'json':!![]};return rp(_0xf55152);})[_0xde93('0x14')](function(_0x1e7ce0){var _0x952ff8=![];if(!_0x1e7ce0)return _0x952ff8;var _0x42e348=_0x1e7ce0[_0xde93('0x1e')];for(var _0x3f4a3e=0x0;_0x3f4a3e<_0x42e348[_0xde93('0x22')];_0x3f4a3e++){if(_0x42e348[_0x3f4a3e][_0x13c9b4]===_0x10b344){_0x952ff8=!![];_0x43e97d[_0xde93('0x36')]=_0x42e348[_0x3f4a3e][_0xde93('0x3b')];}}return _0x952ff8;})[_0xde93('0x14')](function(_0x515050){if(_0x515050)return _0x43e97d;if(_0x33753b===_0xde93('0x3c')){logger[_0xde93('0x25')]('['+[_0x3ae719[_0xde93('0x26')]()]+_0xde93('0x3d'));return _0x43e97d;}return createEndUser(_0x43e97d,_0x27b8ea,_0x40a07d,_0x25ab06,_0x305f9a,_0x3ae719,_0x13c9b4)['then'](function(_0x2c9fc6){logger[_0xde93('0x25')]('['+[_0x3ae719[_0xde93('0x26')]()]+_0xde93('0x3e'),_0x2c9fc6[_0xde93('0x36')]);return _0x2c9fc6;});});}function getCustomFields(_0x4bc99c,_0x245ba7,_0x19de0a){var _0x33f67d={};if(_0x4bc99c[_0xde93('0x22')]>0x0){_[_0xde93('0x3f')](_0x4bc99c,function(_0x311d4a){if(_[_0xde93('0x40')]([_0xde93('0x41'),'picklist'],_0x311d4a[_0xde93('0x42')])&&_0x311d4a[_0xde93('0x43')]&&!_0x311d4a[_0xde93('0x44')]){var _0x435299=_0x311d4a[_0xde93('0x45')][_0xde93('0x2c')]();var _0xe78577=_0x435299[_0xde93('0x34')](0x0,_0x435299[_0xde93('0x46')]('_'));var _0xaca024=_0x435299['substring'](_0x435299[_0xde93('0x46')]('_')+0x1);if(_0xe78577===_0x19de0a){_0x33f67d[_0xaca024]=_0x311d4a['content'];}}});}return _0x33f67d;}function getTicket(_0x1caca0,_0x43a073,_0x1afd11,_0x441907,_0x1d24b4,_0x1002ba,_0x391f41){return new Promise(function(_0x3ba072,_0x5bf1cf){var _0x52108c;return getAuthToken(_0x43a073,_0x1afd11,_0x391f41)[_0xde93('0x14')](function(_0x4cb63d){if(_0x1002ba[_0xde93('0x47')]===_0xde93('0x48')){_0x52108c={'method':'POST','uri':_0x441907+_0xde93('0x49'),'body':Object[_0xde93('0x4a')]({},{'title':intUtil[_0xde93('0x4b')](_0x1002ba['Subjects'],_0x1d24b4,'\x20'),'description':intUtil[_0xde93('0x4b')](_0x1002ba['Descriptions'],_0x1d24b4,'\x0a'),'customerid_contact@odata.bind':_0x1caca0[_0xde93('0x36')]?_0xde93('0x4c')+_0x1caca0[_0xde93('0x36')]+')':undefined,'ownerid@odata.bind':_0xde93('0x32')+_0x1caca0[_0xde93('0x2b')]+')','caseorigincode':'1'},getCustomFields(_0x1002ba[_0xde93('0x4d')],_0x1d24b4,_0x1002ba[_0xde93('0x47')])),'headers':{'Authorization':'Bearer\x20'+_0x4cb63d,'OData-Version':_0xde93('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1002ba[_0xde93('0x47')]===_0xde93('0x4e')){var _0x34f7e4=_0x1caca0[_0xde93('0x36')]?[{'partyid_systemuser@odata.bind':_0xde93('0x32')+_0x1caca0[_0xde93('0x2b')]+')','participationtypemask':_0x1caca0[_0xde93('0x4f')]===_0xde93('0x50')?0x2:0x1},{'partyid_contact@odata.bind':_0xde93('0x4c')+_0x1caca0[_0xde93('0x36')]+')','participationtypemask':_0x1caca0['callDirection']===_0xde93('0x50')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x1caca0[_0xde93('0x2b')]+')','participationtypemask':_0x1caca0[_0xde93('0x4f')]===_0xde93('0x50')?0x2:0x1}];_0x52108c={'method':_0xde93('0x30'),'uri':_0x441907+_0xde93('0x51'),'body':Object[_0xde93('0x4a')]({},{'subject':intUtil[_0xde93('0x4b')](_0x1002ba[_0xde93('0x52')],_0x1d24b4,'\x20'),'phonenumber':String(_0x1d24b4[_0xde93('0x2f')]),'description':intUtil[_0xde93('0x4b')](_0x1002ba[_0xde93('0x53')],_0x1d24b4,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1caca0['enduserId']?_0xde93('0x4c')+_0x1caca0[_0xde93('0x36')]+')':undefined,'ownerid@odata.bind':_0xde93('0x32')+_0x1caca0[_0xde93('0x2b')]+')','directioncode':_0x1caca0[_0xde93('0x4f')]===_0xde93('0x50')?![]:!![],'phonecall_activity_parties':_0x34f7e4},getCustomFields(_0x1002ba[_0xde93('0x4d')],_0x1d24b4,_0x1002ba['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x4cb63d,'OData-Version':_0xde93('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x52108c);})['then'](function(_0x591e80){var _0x3de8fa=_0x591e80['headers']['odata-entityid'];var _0x5457c5=_0x3de8fa[_0xde93('0x34')](_0x3de8fa['lastIndexOf']('(')+0x1,_0x3de8fa['lastIndexOf'](')'));_0x1caca0[_0xde93('0x54')]=_0x5457c5;_0x3ba072(_0x1caca0);})[_0xde93('0x16')](function(_0x42fb11){_0x5bf1cf(_0x42fb11[_0xde93('0x19')]);});});}function emit(_0x1749c3,_0xafe891,_0x5a07c4,_0x7c5084){var _0x49a613={'uri':util[_0xde93('0x55')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x1749c3,_0x5a07c4,_0x7c5084)};io['to'](util[_0xde93('0x55')](_0xde93('0x56'),_0xafe891))[_0xde93('0x57')](_0xde93('0x58'),_0x49a613);}exports['cs']=function(_0x46a2e8,_0x37807f,_0x284caa,_0x2762d4,_0x4f4459,_0x34fba5,_0x585002,_0x3f3706){var _0x18c497={};_0x34fba5['remoteUri']=_0x34fba5[_0xde93('0x9')]?intUtil[_0xde93('0x59')](_0x34fba5[_0xde93('0xb')]['data7']):intUtil[_0xde93('0x59')](_0x34fba5['remoteUri']);_0x34fba5['serverUrl']=intUtil[_0xde93('0x59')](_0x34fba5[_0xde93('0x5a')]);_0x18c497[_0xde93('0x4f')]=_0x3f3706===_0xde93('0x50')||_0x3f3706===_0xde93('0x5b')?_0xde93('0x50'):'outbound';var _0xd0e43c=_0x34fba5[_0xde93('0x9')]?util[_0xde93('0x55')](_0xde93('0x5c'),_0x34fba5[_0xde93('0xb')][_0xde93('0xc')]):util[_0xde93('0x55')](_0xde93('0x5c'),_0x34fba5['remoteUri']);var _0x5dc5d4=util[_0xde93('0x55')]('https://login.microsoftonline.com/%s/oauth2/token',_0x34fba5[_0xde93('0xd')]);var _0x1f665d=util[_0xde93('0x55')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x34fba5[_0xde93('0x5a')],_0x37807f[_0xde93('0x5d')],md5(_0x37807f[_0xde93('0x5d')]));if(_0x4f4459&&_0x4f4459[_0xde93('0x5e')]){logger[_0xde93('0x25')]('[QUEUE]','Recording\x20is\x20enabled!');_0x37807f[_0xde93('0x5f')]=_0x1f665d;}else if(_0x585002&&_0x585002[_0xde93('0x60')]&&_0x585002[_0xde93('0x60')]!==_0xde93('0x61')){logger[_0xde93('0x25')](_0xde93('0x62'),_0xde93('0x63'));_0x37807f[_0xde93('0x5f')]=_0x1f665d;}else{_0x37807f[_0xde93('0x5f')]='';}return getUser(_0x18c497,_0x34fba5,_0x2762d4,_0x5dc5d4,_0xd0e43c,_0x3f3706)[_0xde93('0x14')](function(_0x36fdd0){logger[_0xde93('0x25')]('['+_0x3f3706[_0xde93('0x26')]()+']\x20The\x20User\x20ID\x20is:',_0x36fdd0[_0xde93('0x2b')]);logger[_0xde93('0x25')]('['+_0x3f3706[_0xde93('0x26')]()+_0xde93('0x64'),_0x36fdd0['userEmail']);return getEndUser(_0x36fdd0,_0x34fba5,_0x5dc5d4,_0xd0e43c,_0x37807f,_0x3f3706,_0x284caa['moduleCreate'],_0x284caa[_0xde93('0x65')]);})['then'](function(_0x327ab6){logger['info']('['+_0x3f3706[_0xde93('0x26')]()+_0xde93('0x66'),_0x327ab6['enduserId']);logger[_0xde93('0x25')]('['+_0x3f3706[_0xde93('0x26')]()+_0xde93('0x67'),_0x37807f[_0xde93('0x2f')]);return getTicket(_0x327ab6,_0x34fba5,_0x5dc5d4,_0xd0e43c,_0x37807f,_0x284caa,_0x3f3706);})[_0xde93('0x14')](function(_0x20e287){logger[_0xde93('0x25')](util[_0xde93('0x55')]('['+_0x3f3706[_0xde93('0x26')]()+_0xde93('0x68'),_0x284caa['ticketType'],_0x20e287[_0xde93('0x54')]));logger[_0xde93('0x25')](util[_0xde93('0x55')]('['+_0x3f3706[_0xde93('0x26')]()+_0xde93('0x69'),_0x3f3706));if(_0x3f3706!==_0xde93('0x5b')&&_0x284caa[_0xde93('0x6a')]){logger['info']('['+_0x3f3706['toUpperCase']()+']',_0xde93('0x6b'));emit(_0x34fba5[_0xde93('0xa')],_0x2762d4[_0xde93('0x6c')],_0x284caa[_0xde93('0x47')],_0x20e287[_0xde93('0x54')]);}})[_0xde93('0x16')](function(_0x5476b6){logger[_0xde93('0x17')]('['+_0x3f3706[_0xde93('0x26')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x5476b6[_0xde93('0x19')]);console[_0xde93('0x17')]('Error\x20running\x20Dynamics365\x20integration',_0x5476b6);});};