Built motion from commit 14588770.|2.5.38
[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 _0xb133=[']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','./util','../../../../config/logger','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','GET','Bearer\x20','4.0','value','validateEmail','email','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','userId','info','toUpperCase',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','length','systemuserid','message','toLowerCase','outbound','contacts','/systemusers(','odata-entityid','substring','lastIndexOf','enduserId','destcalleridnum','replace','%2b','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','picklist','customField','idField','indexOf','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','Fields','phonecall','phonecalls','Subjects','calleridnum','callDirection','queue','headers','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','name','ticketId'];(function(_0x2941f9,_0x1eeae7){var _0x208446=function(_0x454959){while(--_0x454959){_0x2941f9['push'](_0x2941f9['shift']());}};_0x208446(++_0x1eeae7);}(_0xb133,0x186));var _0x3b13=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xb133[_0x2112d4];return _0x434972;};'use strict';var _=require(_0x3b13('0x0'));var BPromise=require(_0x3b13('0x1'));var rp=require(_0x3b13('0x2'));var util=require('util');var intUtil=require(_0x3b13('0x3'));var md5=require('md5');var Redis=require('ioredis');var logger=require(_0x3b13('0x4'))('dynamics365');var config=require(_0x3b13('0x5'));config['redis']=_[_0x3b13('0x6')](config[_0x3b13('0x7')],{'host':_0x3b13('0x8'),'port':0x18eb});var io=require(_0x3b13('0x9'))(new Redis(config[_0x3b13('0x7')]));function getAuthToken(_0x99ac97,_0x12ca1f,_0x2fe2b0){var _0x39100b={'method':_0x3b13('0xa'),'uri':_0x12ca1f,'form':{'client_id':_0x99ac97[_0x3b13('0xb')],'resource':_0x99ac97[_0x3b13('0xc')],'username':_0x99ac97[_0x3b13('0xd')],'password':_0x99ac97[_0x3b13('0xe')],'grant_type':'password','client_secret':_0x99ac97[_0x3b13('0xf')]},'json':!![]};return rp(_0x39100b)[_0x3b13('0x10')](function(_0x2c1028){return _0x2c1028[_0x3b13('0x11')];})[_0x3b13('0x12')](function(_0x298c9d){logger[_0x3b13('0x13')]('['+[_0x2fe2b0['toUpperCase']()]+_0x3b13('0x14'));return _0x298c9d['message'];});}function getUser(_0x138cca,_0x211f57,_0x456823,_0x5e9b6a,_0x1b0f46,_0xf6aa6b){return new BPromise(function(_0x409af8,_0x1b7393){return getAuthToken(_0x211f57,_0x5e9b6a,_0xf6aa6b)[_0x3b13('0x10')](function(_0x177ec9){var _0x580074={'method':_0x3b13('0x15'),'uri':_0x1b0f46+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x3b13('0x16')+_0x177ec9,'OData-Version':_0x3b13('0x17')},'json':!![]};return rp(_0x580074);})['then'](function(_0x1fb3c3){var _0xfffd0b=_0x1fb3c3[_0x3b13('0x18')];var _0x10b444=![];var _0x3e0e6b=null;if(!_['isNil'](_0x456823)){if(intUtil[_0x3b13('0x19')](_0x456823['email'])){_0x138cca['userEmail']=_0x456823[_0x3b13('0x1a')];for(_0x3e0e6b=0x0;_0x3e0e6b<_0xfffd0b['length'];_0x3e0e6b++){if(_0xfffd0b[_0x3e0e6b][_0x3b13('0x1b')]===_0x456823['email']&&!_0xfffd0b[_0x3e0e6b][_0x3b13('0x1c')]){_0x10b444=!![];logger['info']('['+[_0xf6aa6b['toUpperCase']()]+_0x3b13('0x1d')+_0xfffd0b[_0x3e0e6b]['systemuserid']+'!');_0x138cca[_0x3b13('0x1e')]=_0xfffd0b[_0x3e0e6b]['systemuserid'];}}}}if(!_0x10b444){logger[_0x3b13('0x1f')]('['+[_0xf6aa6b[_0x3b13('0x20')]()]+_0x3b13('0x21'));_0x138cca[_0x3b13('0x22')]=_0x211f57[_0x3b13('0xd')];for(_0x3e0e6b=0x0;_0x3e0e6b<_0xfffd0b[_0x3b13('0x23')];_0x3e0e6b++){if(_0xfffd0b[_0x3e0e6b]['internalemailaddress']===_0x211f57[_0x3b13('0xd')]){_0x138cca['userId']=_0xfffd0b[_0x3e0e6b][_0x3b13('0x24')];}}}_0x409af8(_0x138cca);})[_0x3b13('0x12')](function(_0x56d1fa){_0x1b7393(_0x56d1fa[_0x3b13('0x25')]);});});}function createEndUser(_0x27edba,_0x567ba0,_0x1237a3,_0x208ede,_0x208c73,_0x3d0b71){return new BPromise(function(_0x538499,_0x5be286){return getAuthToken(_0x567ba0,_0x1237a3,_0x3d0b71)[_0x3b13('0x10')](function(_0x1247cd){var _0x3bd0ff=_0x3d0b71[_0x3b13('0x26')]()===_0x3b13('0x27')?_0x208c73['destcalleridnum']:_0x208c73['calleridnum'];var _0x4646a3={'method':_0x3b13('0xa'),'uri':_0x208ede+_0x3b13('0x28'),'body':{'telephone1':_0x3bd0ff,'fullname':_0x3bd0ff,'firstname':_0x3bd0ff,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x3b13('0x29')+_0x27edba['userId']+')'},'headers':{'Authorization':_0x3b13('0x16')+_0x1247cd,'OData-Version':_0x3b13('0x17')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4646a3);})['then'](function(_0x332b06){var _0x5362ab=_0x332b06['headers'][_0x3b13('0x2a')];var _0x52536a=_0x5362ab[_0x3b13('0x2b')](_0x5362ab[_0x3b13('0x2c')]('(')+0x1,_0x5362ab[_0x3b13('0x2c')](')'));_0x27edba[_0x3b13('0x2d')]=_0x52536a;_0x538499(_0x27edba);})[_0x3b13('0x12')](function(_0x2e7522){_0x5be286(_0x2e7522[_0x3b13('0x25')]);});});}function getEndUser(_0x1ab04f,_0x542248,_0x277041,_0x2f5818,_0xd0e9b,_0x59e998){return new BPromise(function(_0x1574b6,_0x3ed4fe){var _0x4c1e58=_0x59e998[_0x3b13('0x26')]()===_0x3b13('0x27')?_0xd0e9b[_0x3b13('0x2e')]:_0xd0e9b['calleridnum'];return getAuthToken(_0x542248,_0x277041,_0x59e998)[_0x3b13('0x10')](function(_0x4742f2){var _0x206285={'method':_0x3b13('0x15'),'uri':_0x2f5818+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x4c1e58[_0x3b13('0x2f')]('+',_0x3b13('0x30'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x4742f2,'If-None-Match':null,'OData-Version':_0x3b13('0x17')},'json':!![]};return rp(_0x206285);})['then'](function(_0x402448){var _0x3c8b15=null;if(_0x402448){var _0x166856=_0x402448[_0x3b13('0x18')];var _0x24450d=![];for(_0x3c8b15=0x0;_0x3c8b15<_0x166856['length'];_0x3c8b15++){if(_0x166856[_0x3c8b15][_0x3b13('0x31')]===_0x4c1e58){_0x24450d=!![];_0x1ab04f[_0x3b13('0x2d')]=_0x166856[_0x3c8b15][_0x3b13('0x32')];}}if(_0x24450d){_0x1574b6(_0x1ab04f);}else{return createEndUser(_0x1ab04f,_0x542248,_0x277041,_0x2f5818,_0xd0e9b,_0x59e998)['then'](function(_0x31aa33){logger['info']('['+[_0x59e998[_0x3b13('0x20')]()]+_0x3b13('0x33'),_0x31aa33[_0x3b13('0x2d')]);_0x1574b6(_0x31aa33);});}}else{return createEndUser(_0x1ab04f,_0x542248,_0x277041,_0x2f5818,_0xd0e9b,_0x59e998)[_0x3b13('0x10')](function(_0x46b9b8){logger[_0x3b13('0x1f')]('['+[_0x59e998[_0x3b13('0x20')]()]+_0x3b13('0x34'),_0x46b9b8[_0x3b13('0x2d')]);_0x1574b6(_0x46b9b8);});}});});}function getCustomFields(_0x33db97,_0x341188,_0xf145ad){var _0x5c71c3={};if(_0x33db97[_0x3b13('0x23')]>0x0){_[_0x3b13('0x35')](_0x33db97,function(_0x1733ee){if(_[_0x3b13('0x36')](['string',_0x3b13('0x37')],_0x1733ee['type'])&&_0x1733ee['nameField']&&!_0x1733ee[_0x3b13('0x38')]){var _0x5ed010=_0x1733ee[_0x3b13('0x39')][_0x3b13('0x26')]();var _0x20432a=_0x5ed010[_0x3b13('0x2b')](0x0,_0x5ed010[_0x3b13('0x3a')]('_'));var _0x18ecc4=_0x5ed010[_0x3b13('0x2b')](_0x5ed010[_0x3b13('0x3a')]('_')+0x1);if(_0x20432a===_0xf145ad){_0x5c71c3[_0x18ecc4]=_0x1733ee['content'];}}});}return _0x5c71c3;}function getTicket(_0x4ae114,_0x2e7193,_0x49b0eb,_0x116a15,_0x1bb6ae,_0x306e3e,_0x178b80){return new BPromise(function(_0x2f81a8,_0x485f08){var _0x48033f;return getAuthToken(_0x2e7193,_0x49b0eb,_0x178b80)[_0x3b13('0x10')](function(_0x50d344){if(_0x306e3e[_0x3b13('0x3b')]===_0x3b13('0x3c')){_0x48033f={'method':'POST','uri':_0x116a15+_0x3b13('0x3d'),'body':Object[_0x3b13('0x3e')]({},{'title':intUtil[_0x3b13('0x3f')](_0x306e3e['Subjects'],_0x1bb6ae,'\x20'),'description':intUtil['getString'](_0x306e3e[_0x3b13('0x40')],_0x1bb6ae,'\x0a'),'customerid_contact@odata.bind':_0x3b13('0x41')+_0x4ae114['enduserId']+')','ownerid@odata.bind':_0x3b13('0x29')+_0x4ae114[_0x3b13('0x1e')]+')','caseorigincode':'1'},getCustomFields(_0x306e3e[_0x3b13('0x42')],_0x1bb6ae,_0x306e3e['ticketType'])),'headers':{'Authorization':_0x3b13('0x16')+_0x50d344,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x306e3e['ticketType']===_0x3b13('0x43')){_0x48033f={'method':_0x3b13('0xa'),'uri':_0x116a15+_0x3b13('0x44'),'body':Object[_0x3b13('0x3e')]({},{'subject':intUtil[_0x3b13('0x3f')](_0x306e3e[_0x3b13('0x45')],_0x1bb6ae,'\x20'),'phonenumber':String(_0x1bb6ae[_0x3b13('0x46')]),'description':intUtil['getString'](_0x306e3e[_0x3b13('0x40')],_0x1bb6ae,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3b13('0x41')+_0x4ae114[_0x3b13('0x2d')]+')','ownerid@odata.bind':_0x3b13('0x29')+_0x4ae114[_0x3b13('0x1e')]+')','directioncode':_0x4ae114[_0x3b13('0x47')]===_0x3b13('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x3b13('0x29')+_0x4ae114['userId']+')','participationtypemask':_0x4ae114[_0x3b13('0x47')]===_0x3b13('0x48')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x4ae114[_0x3b13('0x2d')]+')','participationtypemask':_0x4ae114[_0x3b13('0x47')]===_0x3b13('0x48')?0x1:0x2}]},getCustomFields(_0x306e3e['Fields'],_0x1bb6ae,_0x306e3e['ticketType'])),'headers':{'Authorization':_0x3b13('0x16')+_0x50d344,'OData-Version':_0x3b13('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x48033f);})['then'](function(_0x304b83){var _0x25f49f=_0x304b83[_0x3b13('0x49')]['odata-entityid'];var _0x2f0115=_0x25f49f[_0x3b13('0x2b')](_0x25f49f[_0x3b13('0x2c')]('(')+0x1,_0x25f49f['lastIndexOf'](')'));_0x4ae114['ticketId']=_0x2f0115;_0x2f81a8(_0x4ae114);})['catch'](function(_0x4ca821){_0x485f08(_0x4ca821['message']);});});}function emit(_0x208831,_0x1fbc77,_0xded45b,_0x296dad){var _0x35fe45={'uri':util[_0x3b13('0x4a')](_0x3b13('0x4b'),_0x208831,_0xded45b,_0x296dad)};io['to'](util['format']('user:%s',_0x1fbc77))[_0x3b13('0x4c')](_0x3b13('0x4d'),_0x35fe45);}exports['cs']=function(_0x5e8077,_0x522172,_0x28c4ac,_0x200f3d,_0x2bc098,_0x8e8747,_0x3ba6a8,_0x575fba){var _0x5c4095={};_0x8e8747[_0x3b13('0xc')]=intUtil[_0x3b13('0x4e')](_0x8e8747[_0x3b13('0xc')]);_0x8e8747[_0x3b13('0x4f')]=intUtil['stripTrailingSlash'](_0x8e8747[_0x3b13('0x4f')]);_0x5c4095['callDirection']=_0x575fba===_0x3b13('0x48')||_0x575fba==='unmanaged'?_0x3b13('0x48'):_0x3b13('0x27');var _0x55b017=util[_0x3b13('0x4a')](_0x3b13('0x50'),_0x8e8747['remoteUri']);var _0xf649db=util[_0x3b13('0x4a')]('https://login.microsoftonline.com/%s/oauth2/token',_0x8e8747[_0x3b13('0x51')]);var _0x267e11=util[_0x3b13('0x4a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x8e8747[_0x3b13('0x4f')],_0x522172[_0x3b13('0x52')],md5(_0x522172[_0x3b13('0x52')]));if(_0x2bc098&&_0x2bc098[_0x3b13('0x53')]){logger[_0x3b13('0x1f')](_0x3b13('0x54'),_0x3b13('0x55'));_0x522172[_0x3b13('0x56')]=_0x267e11;}else if(_0x3ba6a8&&_0x3ba6a8[_0x3b13('0x57')]&&_0x3ba6a8[_0x3b13('0x57')]!==_0x3b13('0x58')){logger[_0x3b13('0x1f')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x522172[_0x3b13('0x56')]=_0x267e11;}else{_0x522172['recordingURL']='';}return getUser(_0x5c4095,_0x8e8747,_0x200f3d,_0xf649db,_0x55b017,_0x575fba)[_0x3b13('0x10')](function(_0x3df647){logger[_0x3b13('0x1f')]('['+_0x575fba['toUpperCase']()+_0x3b13('0x59'),_0x3df647[_0x3b13('0x1e')]);logger[_0x3b13('0x1f')]('['+_0x575fba[_0x3b13('0x20')]()+_0x3b13('0x5a'),_0x3df647[_0x3b13('0x22')]);return getEndUser(_0x3df647,_0x8e8747,_0xf649db,_0x55b017,_0x522172,_0x575fba);})[_0x3b13('0x10')](function(_0x358cd5){logger['info']('['+_0x575fba[_0x3b13('0x20')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x358cd5[_0x3b13('0x2d')]);logger[_0x3b13('0x1f')]('['+_0x575fba[_0x3b13('0x20')]()+_0x3b13('0x5b'),_0x522172[_0x3b13('0x46')]);return getTicket(_0x358cd5,_0x8e8747,_0xf649db,_0x55b017,_0x522172,_0x28c4ac,_0x575fba);})[_0x3b13('0x10')](function(_0x3d2947){logger[_0x3b13('0x1f')](util[_0x3b13('0x4a')]('['+_0x575fba['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x28c4ac['ticketType'],_0x3d2947['ticketId']));logger[_0x3b13('0x1f')](util[_0x3b13('0x4a')]('['+_0x575fba[_0x3b13('0x20')]()+_0x3b13('0x5c'),_0x575fba));if(_0x575fba!=='unmanaged'){logger['info']('['+_0x575fba[_0x3b13('0x20')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x8e8747[_0x3b13('0xc')],_0x200f3d[_0x3b13('0x5d')],_0x28c4ac[_0x3b13('0x3b')],_0x3d2947[_0x3b13('0x5e')]);}})['catch'](function(_0x547585){logger[_0x3b13('0x13')]('['+_0x575fba['toUpperCase']()+_0x3b13('0x5f'),util[_0x3b13('0x60')](_0x547585,{'showHidden':!![],'depth':null}));});};