Built motion from commit 4ca75f1b.|2.6.28
[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 _0xdad8=['[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','CloudProvider','data7','tenantId','resolve','data5','POST','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','userEmail','length','email','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','message','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','body','odata-entityid','substring','lastIndexOf','enduserId','calleridnum','&$filter=','replace','%2b','nothing','forEach','includes','string','picklist','nameField','customField','idField','indexOf','ticketType','incident','assign','getString','Subjects','Descriptions','/contacts(','phonecall','callDirection','queue','Fields','headers','ticketId','format','trigger:browser:url','remoteUri','modernAuthentication','serverUrl','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','monitor_format'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xdad8,0x1ab));var _0x8dad=function(_0x304a17,_0x2406c4){_0x304a17=_0x304a17-0x0;var _0x184d43=_0xdad8[_0x304a17];return _0x184d43;};'use strict';var _=require(_0x8dad('0x0'));var rp=require('request-promise');var util=require(_0x8dad('0x1'));var intUtil=require(_0x8dad('0x2'));var md5=require('md5');var Redis=require(_0x8dad('0x3'));var logger=require(_0x8dad('0x4'))(_0x8dad('0x5'));var config=require(_0x8dad('0x6'));config[_0x8dad('0x7')]=_['defaults'](config[_0x8dad('0x7')],{'host':_0x8dad('0x8'),'port':0x18eb});var io=require(_0x8dad('0x9'))(new Redis(config['redis']));function getAuthToken(_0x5306d4,_0x21cbb5,_0x33d996){if(_0x5306d4['modernAuthentication']){_0x5306d4['remoteUri']=_0x5306d4[_0x8dad('0xa')][_0x8dad('0xb')];_0x5306d4[_0x8dad('0xc')]=_0x5306d4[_0x8dad('0xa')]['data2'];return Promise[_0x8dad('0xd')](_0x5306d4['CloudProvider'][_0x8dad('0xe')]);}var _0x5b0b8a={'method':_0x8dad('0xf'),'uri':_0x21cbb5,'form':{'client_id':_0x5306d4['clientId'],'resource':_0x5306d4['remoteUri'],'username':_0x5306d4[_0x8dad('0x10')],'password':_0x5306d4[_0x8dad('0x11')],'grant_type':_0x8dad('0x11'),'client_secret':_0x5306d4[_0x8dad('0x12')]},'json':!![]};return rp(_0x5b0b8a)[_0x8dad('0x13')](function(_0x2240c6){return _0x2240c6[_0x8dad('0x14')];})[_0x8dad('0x15')](function(_0x1be0b3){logger[_0x8dad('0x16')]('['+[_0x33d996[_0x8dad('0x17')]()]+_0x8dad('0x18'));return _0x1be0b3['message'];});}function getUser(_0x4f853a,_0x2bbcd9,_0x3e8447,_0x3fdc71,_0x40e432,_0x414d73){return new Promise(function(_0xe6eeb5,_0x20a885){return getAuthToken(_0x2bbcd9,_0x3fdc71,_0x414d73)[_0x8dad('0x13')](function(_0x13b421){var _0x166908={'method':_0x8dad('0x19'),'uri':_0x40e432+_0x8dad('0x1a'),'headers':{'Authorization':_0x8dad('0x1b')+_0x13b421,'OData-Version':_0x8dad('0x1c')},'json':!![]};return rp(_0x166908);})[_0x8dad('0x13')](function(_0x55b6a3){var _0x1bab76=_0x55b6a3[_0x8dad('0x1d')];var _0x361af8=![];var _0x8c8051=null;if(!_['isNil'](_0x3e8447)){if(intUtil[_0x8dad('0x1e')](_0x3e8447['email'])){_0x4f853a[_0x8dad('0x1f')]=_0x3e8447['email'];for(_0x8c8051=0x0;_0x8c8051<_0x1bab76[_0x8dad('0x20')];_0x8c8051++){if(_0x1bab76[_0x8c8051]['internalemailaddress']===_0x3e8447[_0x8dad('0x21')]&&!_0x1bab76[_0x8c8051][_0x8dad('0x22')]){_0x361af8=!![];logger[_0x8dad('0x23')]('['+[_0x414d73[_0x8dad('0x17')]()]+_0x8dad('0x24')+_0x1bab76[_0x8c8051][_0x8dad('0x25')]+'!');_0x4f853a[_0x8dad('0x26')]=_0x1bab76[_0x8c8051][_0x8dad('0x25')];}}}}if(!_0x361af8){logger[_0x8dad('0x23')]('['+[_0x414d73['toUpperCase']()]+_0x8dad('0x27'));_0x4f853a['userEmail']=_0x2bbcd9[_0x8dad('0x10')];for(_0x8c8051=0x0;_0x8c8051<_0x1bab76['length'];_0x8c8051++){if(_0x1bab76[_0x8c8051][_0x8dad('0x28')]===_0x2bbcd9[_0x8dad('0x10')]){_0x4f853a[_0x8dad('0x26')]=_0x1bab76[_0x8c8051][_0x8dad('0x25')];}}}_0xe6eeb5(_0x4f853a);})[_0x8dad('0x15')](function(_0x7626d1){_0x20a885(_0x7626d1[_0x8dad('0x29')]);});});}function createEndUser(_0x510793,_0x748545,_0x483404,_0x240b6e,_0x5223e5,_0xd07601,_0x189ef3){return new Promise(function(_0x5004d5,_0x54afea){return getAuthToken(_0x748545,_0x483404,_0xd07601)[_0x8dad('0x13')](function(_0x17ef4a){var _0x15677c=_0xd07601[_0x8dad('0x2a')]()===_0x8dad('0x2b')?_0x5223e5[_0x8dad('0x2c')]:_0x5223e5['calleridnum'];var _0x2f8e84={'method':'POST','uri':_0x240b6e+_0x8dad('0x2d'),'body':{'fullname':_0x15677c,'firstname':_0x15677c,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x8dad('0x2e')+_0x510793[_0x8dad('0x26')]+')'},'headers':{'Authorization':_0x8dad('0x1b')+_0x17ef4a,'OData-Version':_0x8dad('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x2f8e84[_0x8dad('0x2f')][_0x189ef3]=_0x15677c;return rp(_0x2f8e84);})['then'](function(_0x326284){var _0x13a4df=_0x326284['headers'][_0x8dad('0x30')];var _0x211b45=_0x13a4df[_0x8dad('0x31')](_0x13a4df[_0x8dad('0x32')]('(')+0x1,_0x13a4df[_0x8dad('0x32')](')'));_0x510793[_0x8dad('0x33')]=_0x211b45;_0x5004d5(_0x510793);})['catch'](function(_0x561adf){_0x54afea(_0x561adf[_0x8dad('0x29')]);});});}function getEndUser(_0xfbad77,_0x57fdb,_0x550467,_0x26693e,_0x385331,_0xf82360,_0x348c8e,_0x37907a){var _0x4c3d0f=_0xf82360['toLowerCase']()===_0x8dad('0x2b')?_0x385331[_0x8dad('0x2c')]:_0x385331[_0x8dad('0x34')];return getAuthToken(_0x57fdb,_0x550467,_0xf82360)[_0x8dad('0x13')](function(_0x3d737e){_0x37907a=_0x37907a?_0x37907a:'telephone1';var _0x40266d={'method':_0x8dad('0x19'),'uri':_0x26693e+'contacts?$select='+_0x37907a+_0x8dad('0x35')+_0x37907a+'\x20eq\x20\x27'+_0x4c3d0f[_0x8dad('0x36')]('+',_0x8dad('0x37'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x3d737e,'If-None-Match':null,'OData-Version':_0x8dad('0x1c')},'json':!![]};return rp(_0x40266d);})['then'](function(_0x46c9d1){var _0x23fa39=![];if(!_0x46c9d1)return _0x23fa39;var _0x59b5ed=_0x46c9d1[_0x8dad('0x1d')];for(var _0x1f789d=0x0;_0x1f789d<_0x59b5ed[_0x8dad('0x20')];_0x1f789d++){if(_0x59b5ed[_0x1f789d][_0x37907a]===_0x4c3d0f){_0x23fa39=!![];_0xfbad77[_0x8dad('0x33')]=_0x59b5ed[_0x1f789d]['contactid'];}}return _0x23fa39;})[_0x8dad('0x13')](function(_0x207995){if(_0x207995)return _0xfbad77;if(_0x348c8e===_0x8dad('0x38')){logger[_0x8dad('0x23')]('['+[_0xf82360[_0x8dad('0x17')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0xfbad77;}return createEndUser(_0xfbad77,_0x57fdb,_0x550467,_0x26693e,_0x385331,_0xf82360,_0x37907a)['then'](function(_0x482677){logger[_0x8dad('0x23')]('['+[_0xf82360[_0x8dad('0x17')]()]+']\x20Enduser\x20created!',_0x482677[_0x8dad('0x33')]);return _0x482677;});});}function getCustomFields(_0x5bdf18,_0x2f17be,_0x365e71){var _0x2153de={};if(_0x5bdf18[_0x8dad('0x20')]>0x0){_[_0x8dad('0x39')](_0x5bdf18,function(_0x1cf2ce){if(_[_0x8dad('0x3a')]([_0x8dad('0x3b'),_0x8dad('0x3c')],_0x1cf2ce['type'])&&_0x1cf2ce[_0x8dad('0x3d')]&&!_0x1cf2ce[_0x8dad('0x3e')]){var _0x51a08e=_0x1cf2ce[_0x8dad('0x3f')][_0x8dad('0x2a')]();var _0xaf36f0=_0x51a08e[_0x8dad('0x31')](0x0,_0x51a08e[_0x8dad('0x40')]('_'));var _0xa05ad5=_0x51a08e[_0x8dad('0x31')](_0x51a08e['indexOf']('_')+0x1);if(_0xaf36f0===_0x365e71){_0x2153de[_0xa05ad5]=_0x1cf2ce['content'];}}});}return _0x2153de;}function getTicket(_0x3b41ba,_0x1c42db,_0x4013e0,_0x106d26,_0x3bbe79,_0x4366fa,_0x26ded1){return new Promise(function(_0x367cdd,_0x3bdf56){var _0x3dbee1;return getAuthToken(_0x1c42db,_0x4013e0,_0x26ded1)[_0x8dad('0x13')](function(_0x1ce10f){if(_0x4366fa[_0x8dad('0x41')]===_0x8dad('0x42')){_0x3dbee1={'method':_0x8dad('0xf'),'uri':_0x106d26+'incidents','body':Object[_0x8dad('0x43')]({},{'title':intUtil[_0x8dad('0x44')](_0x4366fa[_0x8dad('0x45')],_0x3bbe79,'\x20'),'description':intUtil[_0x8dad('0x44')](_0x4366fa[_0x8dad('0x46')],_0x3bbe79,'\x0a'),'customerid_contact@odata.bind':_0x3b41ba[_0x8dad('0x33')]?_0x8dad('0x47')+_0x3b41ba['enduserId']+')':undefined,'ownerid@odata.bind':_0x8dad('0x2e')+_0x3b41ba[_0x8dad('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x4366fa['Fields'],_0x3bbe79,_0x4366fa['ticketType'])),'headers':{'Authorization':_0x8dad('0x1b')+_0x1ce10f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4366fa[_0x8dad('0x41')]===_0x8dad('0x48')){var _0x1562bf=_0x3b41ba[_0x8dad('0x33')]?[{'partyid_systemuser@odata.bind':_0x8dad('0x2e')+_0x3b41ba[_0x8dad('0x26')]+')','participationtypemask':_0x3b41ba[_0x8dad('0x49')]===_0x8dad('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0x8dad('0x47')+_0x3b41ba[_0x8dad('0x33')]+')','participationtypemask':_0x3b41ba[_0x8dad('0x49')]===_0x8dad('0x4a')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x3b41ba[_0x8dad('0x26')]+')','participationtypemask':_0x3b41ba[_0x8dad('0x49')]===_0x8dad('0x4a')?0x2:0x1}];_0x3dbee1={'method':_0x8dad('0xf'),'uri':_0x106d26+'phonecalls','body':Object['assign']({},{'subject':intUtil[_0x8dad('0x44')](_0x4366fa['Subjects'],_0x3bbe79,'\x20'),'phonenumber':String(_0x3bbe79['calleridnum']),'description':intUtil[_0x8dad('0x44')](_0x4366fa['Descriptions'],_0x3bbe79,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3b41ba[_0x8dad('0x33')]?_0x8dad('0x47')+_0x3b41ba[_0x8dad('0x33')]+')':undefined,'ownerid@odata.bind':_0x8dad('0x2e')+_0x3b41ba[_0x8dad('0x26')]+')','directioncode':_0x3b41ba[_0x8dad('0x49')]===_0x8dad('0x4a')?![]:!![],'phonecall_activity_parties':_0x1562bf},getCustomFields(_0x4366fa[_0x8dad('0x4b')],_0x3bbe79,_0x4366fa[_0x8dad('0x41')])),'headers':{'Authorization':_0x8dad('0x1b')+_0x1ce10f,'OData-Version':_0x8dad('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3dbee1);})[_0x8dad('0x13')](function(_0xd805f3){var _0x37f953=_0xd805f3[_0x8dad('0x4c')][_0x8dad('0x30')];var _0x1a6aad=_0x37f953['substring'](_0x37f953[_0x8dad('0x32')]('(')+0x1,_0x37f953[_0x8dad('0x32')](')'));_0x3b41ba[_0x8dad('0x4d')]=_0x1a6aad;_0x367cdd(_0x3b41ba);})['catch'](function(_0x2b5fd4){_0x3bdf56(_0x2b5fd4[_0x8dad('0x29')]);});});}function emit(_0x5e3453,_0xb575d3,_0xa0f136,_0x172ab4){var _0x342ea8={'uri':util[_0x8dad('0x4e')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x5e3453,_0xa0f136,_0x172ab4)};io['to'](util[_0x8dad('0x4e')]('user:%s',_0xb575d3))['emit'](_0x8dad('0x4f'),_0x342ea8);}exports['cs']=function(_0x1236ae,_0x4a91cf,_0x54af07,_0x2ea520,_0x1edc26,_0x31ca12,_0x41e387,_0x21fd05){var _0x1042cd={};_0x31ca12[_0x8dad('0x50')]=_0x31ca12[_0x8dad('0x51')]?intUtil['stripTrailingSlash'](_0x31ca12['CloudProvider'][_0x8dad('0xb')]):intUtil['stripTrailingSlash'](_0x31ca12['remoteUri']);_0x31ca12[_0x8dad('0x52')]=intUtil[_0x8dad('0x53')](_0x31ca12[_0x8dad('0x52')]);_0x1042cd[_0x8dad('0x49')]=_0x21fd05===_0x8dad('0x4a')||_0x21fd05===_0x8dad('0x54')?_0x8dad('0x4a'):_0x8dad('0x2b');var _0x5eeb9a=_0x31ca12[_0x8dad('0x51')]?util[_0x8dad('0x4e')](_0x8dad('0x55'),_0x31ca12[_0x8dad('0xa')][_0x8dad('0xb')]):util['format'](_0x8dad('0x55'),_0x31ca12['remoteUri']);var _0x250a71=util[_0x8dad('0x4e')](_0x8dad('0x56'),_0x31ca12['tenantId']);var _0x425d5d=util[_0x8dad('0x4e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x31ca12[_0x8dad('0x52')],_0x4a91cf['uniqueid'],md5(_0x4a91cf['uniqueid']));if(_0x1edc26&&_0x1edc26[_0x8dad('0x57')]){logger[_0x8dad('0x23')](_0x8dad('0x58'),_0x8dad('0x59'));_0x4a91cf[_0x8dad('0x5a')]=_0x425d5d;}else if(_0x41e387&&_0x41e387[_0x8dad('0x5b')]&&_0x41e387['recordingFormat']!==_0x8dad('0x5c')){logger[_0x8dad('0x23')]('[OUTBOUND]',_0x8dad('0x59'));_0x4a91cf[_0x8dad('0x5a')]=_0x425d5d;}else{_0x4a91cf[_0x8dad('0x5a')]='';}return getUser(_0x1042cd,_0x31ca12,_0x2ea520,_0x250a71,_0x5eeb9a,_0x21fd05)[_0x8dad('0x13')](function(_0x1c9de3){logger[_0x8dad('0x23')]('['+_0x21fd05['toUpperCase']()+_0x8dad('0x5d'),_0x1c9de3[_0x8dad('0x26')]);logger[_0x8dad('0x23')]('['+_0x21fd05[_0x8dad('0x17')]()+_0x8dad('0x5e'),_0x1c9de3[_0x8dad('0x1f')]);return getEndUser(_0x1c9de3,_0x31ca12,_0x250a71,_0x5eeb9a,_0x4a91cf,_0x21fd05,_0x54af07[_0x8dad('0x5f')],_0x54af07[_0x8dad('0x60')]);})[_0x8dad('0x13')](function(_0x2a50f3){logger[_0x8dad('0x23')]('['+_0x21fd05[_0x8dad('0x17')]()+_0x8dad('0x61'),_0x2a50f3['enduserId']);logger[_0x8dad('0x23')]('['+_0x21fd05[_0x8dad('0x17')]()+_0x8dad('0x62'),_0x4a91cf[_0x8dad('0x34')]);return getTicket(_0x2a50f3,_0x31ca12,_0x250a71,_0x5eeb9a,_0x4a91cf,_0x54af07,_0x21fd05);})[_0x8dad('0x13')](function(_0x1d5682){logger['info'](util[_0x8dad('0x4e')]('['+_0x21fd05[_0x8dad('0x17')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x54af07['ticketType'],_0x1d5682[_0x8dad('0x4d')]));logger[_0x8dad('0x23')](util[_0x8dad('0x4e')]('['+_0x21fd05[_0x8dad('0x17')]()+_0x8dad('0x63'),_0x21fd05));if(_0x21fd05!==_0x8dad('0x54')&&_0x54af07['openNewTab']){logger[_0x8dad('0x23')]('['+_0x21fd05[_0x8dad('0x17')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x31ca12[_0x8dad('0x50')],_0x2ea520[_0x8dad('0x64')],_0x54af07[_0x8dad('0x41')],_0x1d5682[_0x8dad('0x4d')]);}})[_0x8dad('0x15')](function(_0x54269a){logger['error']('['+_0x21fd05[_0x8dad('0x17')]()+_0x8dad('0x65'),_0x54269a[_0x8dad('0x29')]);console[_0x8dad('0x16')](_0x8dad('0x66'),_0x54269a);});};