Built motion from commit (unavailable).|2.5.9
[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 _0xaf9b=['https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','bluebird','./util','md5','ioredis','dynamics365','redis','defaults','localhost','socket.io-emitter','POST','username','password','then','access_token','catch','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','validateEmail','email','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','length','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1','value','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','Subjects','getString','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/'];(function(_0x3181f4,_0x46d28a){var _0x31e106=function(_0x3cd855){while(--_0x3cd855){_0x3181f4['push'](_0x3181f4['shift']());}};_0x31e106(++_0x46d28a);}(_0xaf9b,0xd4));var _0xbaf9=function(_0x4fc0d6,_0x48f9eb){_0x4fc0d6=_0x4fc0d6-0x0;var _0x1a2577=_0xaf9b[_0x4fc0d6];return _0x1a2577;};'use strict';var _=require('lodash');var BPromise=require(_0xbaf9('0x0'));var rp=require('request-promise');var util=require('util');var intUtil=require(_0xbaf9('0x1'));var md5=require(_0xbaf9('0x2'));var Redis=require(_0xbaf9('0x3'));var logger=require('../../../../config/logger')(_0xbaf9('0x4'));var config=require('../../../../config/environment');config[_0xbaf9('0x5')]=_[_0xbaf9('0x6')](config[_0xbaf9('0x5')],{'host':_0xbaf9('0x7'),'port':0x18eb});var io=require(_0xbaf9('0x8'))(new Redis(config[_0xbaf9('0x5')]));function getAuthToken(_0x23c002,_0x37c537,_0xb4e3a8){var _0x16a1d3={'method':_0xbaf9('0x9'),'uri':_0x37c537,'form':{'client_id':_0x23c002['clientId'],'resource':_0x23c002['remoteUri'],'username':_0x23c002[_0xbaf9('0xa')],'password':_0x23c002[_0xbaf9('0xb')],'grant_type':_0xbaf9('0xb'),'client_secret':_0x23c002['clientSecret']},'json':!![]};return rp(_0x16a1d3)[_0xbaf9('0xc')](function(_0x38d5b9){return _0x38d5b9[_0xbaf9('0xd')];})[_0xbaf9('0xe')](function(_0x143d7e){logger[_0xbaf9('0xf')]('['+[_0xb4e3a8[_0xbaf9('0x10')]()]+']\x20Wrong\x20credentials!');return _0x143d7e[_0xbaf9('0x11')];});}function getUser(_0x5aa410,_0xd344e1,_0x12194a,_0x170991,_0x41df37,_0xf1bc05){return new BPromise(function(_0x554814,_0x400d8f){return getAuthToken(_0xd344e1,_0x170991,_0xf1bc05)[_0xbaf9('0xc')](function(_0xf3ddda){var _0x360629={'method':_0xbaf9('0x12'),'uri':_0x41df37+_0xbaf9('0x13'),'headers':{'Authorization':_0xbaf9('0x14')+_0xf3ddda,'OData-Version':_0xbaf9('0x15')},'json':!![]};return rp(_0x360629);})[_0xbaf9('0xc')](function(_0x832358){var _0x218dd3=_0x832358['value'];var _0x34b287=![];var _0x4d825a=null;if(!_[_0xbaf9('0x16')](_0x12194a)){if(intUtil[_0xbaf9('0x17')](_0x12194a[_0xbaf9('0x18')])){_0x5aa410['userEmail']=_0x12194a[_0xbaf9('0x18')];for(_0x4d825a=0x0;_0x4d825a<_0x218dd3['length'];_0x4d825a++){if(_0x218dd3[_0x4d825a][_0xbaf9('0x19')]===_0x12194a[_0xbaf9('0x18')]&&!_0x218dd3[_0x4d825a][_0xbaf9('0x1a')]){_0x34b287=!![];logger[_0xbaf9('0x1b')]('['+[_0xf1bc05['toUpperCase']()]+_0xbaf9('0x1c')+_0x218dd3[_0x4d825a][_0xbaf9('0x1d')]+'!');_0x5aa410[_0xbaf9('0x1e')]=_0x218dd3[_0x4d825a]['systemuserid'];}}}}if(!_0x34b287){logger[_0xbaf9('0x1b')]('['+[_0xf1bc05[_0xbaf9('0x10')]()]+_0xbaf9('0x1f'));_0x5aa410[_0xbaf9('0x20')]=_0xd344e1['username'];for(_0x4d825a=0x0;_0x4d825a<_0x218dd3[_0xbaf9('0x21')];_0x4d825a++){if(_0x218dd3[_0x4d825a][_0xbaf9('0x19')]===_0xd344e1[_0xbaf9('0xa')]){_0x5aa410[_0xbaf9('0x1e')]=_0x218dd3[_0x4d825a][_0xbaf9('0x1d')];}}}_0x554814(_0x5aa410);})[_0xbaf9('0xe')](function(_0x582e80){_0x400d8f(_0x582e80[_0xbaf9('0x11')]);});});}function createEndUser(_0x55f3f5,_0x3443c0,_0x59390b,_0x5e62dd,_0x206111,_0x212f65){return new BPromise(function(_0x48717f,_0x119a52){return getAuthToken(_0x3443c0,_0x59390b,_0x212f65)[_0xbaf9('0xc')](function(_0x840a6d){var _0x254442=_0x212f65[_0xbaf9('0x22')]()===_0xbaf9('0x23')?_0x206111[_0xbaf9('0x24')]:_0x206111[_0xbaf9('0x25')];var _0x3e08c0={'method':_0xbaf9('0x9'),'uri':_0x5e62dd+_0xbaf9('0x26'),'body':{'telephone1':_0x254442,'fullname':_0x254442,'firstname':_0x254442,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xbaf9('0x27')+_0x55f3f5[_0xbaf9('0x1e')]+')'},'headers':{'Authorization':_0xbaf9('0x14')+_0x840a6d,'OData-Version':_0xbaf9('0x15')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x3e08c0);})['then'](function(_0x19779d){var _0x599b53=_0x19779d[_0xbaf9('0x28')][_0xbaf9('0x29')];var _0x1224ba=_0x599b53[_0xbaf9('0x2a')](_0x599b53['lastIndexOf']('(')+0x1,_0x599b53[_0xbaf9('0x2b')](')'));_0x55f3f5[_0xbaf9('0x2c')]=_0x1224ba;_0x48717f(_0x55f3f5);})[_0xbaf9('0xe')](function(_0x39dcf9){_0x119a52(_0x39dcf9[_0xbaf9('0x11')]);});});}function getEndUser(_0x4be9f5,_0x5e6124,_0x112271,_0x3c7f7c,_0x2c59b4,_0x2b4223){return new BPromise(function(_0x54a67a,_0x1be3d6){return getAuthToken(_0x5e6124,_0x112271,_0x2b4223)[_0xbaf9('0xc')](function(_0x908629){var _0x3ccf33={'method':'GET','uri':_0x3c7f7c+_0xbaf9('0x2d'),'headers':{'Authorization':_0xbaf9('0x14')+_0x908629,'If-None-Match':null,'OData-Version':_0xbaf9('0x15')},'json':!![]};return rp(_0x3ccf33);})[_0xbaf9('0xc')](function(_0x142ced){var _0x42ceb8=null;if(_0x142ced){var _0x571319=_0x142ced[_0xbaf9('0x2e')];var _0x3f1a52=![];for(_0x42ceb8=0x0;_0x42ceb8<_0x571319[_0xbaf9('0x21')];_0x42ceb8++){var _0x719846=_0x2b4223['toLowerCase']()===_0xbaf9('0x23')?_0x2c59b4[_0xbaf9('0x24')]:_0x2c59b4['calleridnum'];if(_0x571319[_0x42ceb8][_0xbaf9('0x2f')]===_0x719846){_0x3f1a52=!![];_0x4be9f5['enduserId']=_0x571319[_0x42ceb8][_0xbaf9('0x30')];}}if(_0x3f1a52){_0x54a67a(_0x4be9f5);}else{return createEndUser(_0x4be9f5,_0x5e6124,_0x112271,_0x3c7f7c,_0x2c59b4,_0x2b4223)['then'](function(_0x5a2b9a){logger[_0xbaf9('0x1b')]('['+[_0x2b4223[_0xbaf9('0x10')]()]+_0xbaf9('0x31'),_0x5a2b9a[_0xbaf9('0x2c')]);_0x54a67a(_0x5a2b9a);});}}else{return createEndUser(_0x4be9f5,_0x5e6124,_0x112271,_0x3c7f7c,_0x2c59b4,_0x2b4223)['then'](function(_0xa120d4){logger['info']('['+[_0x2b4223['toUpperCase']()]+_0xbaf9('0x32'),_0xa120d4[_0xbaf9('0x2c')]);_0x54a67a(_0xa120d4);});}});});}function getCustomFields(_0x433da4,_0x219f81,_0x7a8686){var _0x4f8f11={};if(_0x433da4[_0xbaf9('0x21')]>0x0){_['forEach'](_0x433da4,function(_0x3ae12f){if(_0x3ae12f['type']==='string'&&_0x3ae12f[_0xbaf9('0x33')]&&!_0x3ae12f[_0xbaf9('0x34')]){var _0x31bc67=_0x3ae12f[_0xbaf9('0x35')][_0xbaf9('0x22')]();var _0x4495b0=_0x31bc67[_0xbaf9('0x2a')](0x0,_0x31bc67[_0xbaf9('0x36')]('_'));var _0x298cf0=_0x31bc67[_0xbaf9('0x2a')](_0x31bc67[_0xbaf9('0x36')]('_')+0x1);if(_0x4495b0===_0x7a8686){_0x4f8f11[_0x298cf0]=_0x3ae12f[_0xbaf9('0x37')];}}});}return _0x4f8f11;}function getTicket(_0x425e30,_0x526e88,_0x6cede6,_0x46eb29,_0x3015ea,_0x42f3bc,_0x1e6be2){return new BPromise(function(_0x1bc1fa,_0x229000){var _0x1c54b9;return getAuthToken(_0x526e88,_0x6cede6,_0x1e6be2)[_0xbaf9('0xc')](function(_0x322607){if(_0x42f3bc[_0xbaf9('0x38')]===_0xbaf9('0x39')){_0x1c54b9={'method':_0xbaf9('0x9'),'uri':_0x46eb29+_0xbaf9('0x3a'),'body':Object[_0xbaf9('0x3b')]({},{'title':intUtil['getString'](_0x42f3bc[_0xbaf9('0x3c')],_0x3015ea,'\x20'),'description':intUtil[_0xbaf9('0x3d')](_0x42f3bc[_0xbaf9('0x3e')],_0x3015ea,'\x0a'),'customerid_contact@odata.bind':_0xbaf9('0x3f')+_0x425e30[_0xbaf9('0x2c')]+')','ownerid@odata.bind':'/systemusers('+_0x425e30['userId']+')','caseorigincode':'1'},getCustomFields(_0x42f3bc[_0xbaf9('0x40')],_0x3015ea,_0x42f3bc[_0xbaf9('0x38')])),'headers':{'Authorization':_0xbaf9('0x14')+_0x322607,'OData-Version':_0xbaf9('0x15')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x42f3bc[_0xbaf9('0x38')]===_0xbaf9('0x41')){_0x1c54b9={'method':_0xbaf9('0x9'),'uri':_0x46eb29+'phonecalls','body':Object[_0xbaf9('0x3b')]({},{'subject':intUtil[_0xbaf9('0x3d')](_0x42f3bc[_0xbaf9('0x3c')],_0x3015ea,'\x20'),'phonenumber':String(_0x3015ea[_0xbaf9('0x25')]),'description':intUtil[_0xbaf9('0x3d')](_0x42f3bc[_0xbaf9('0x3e')],_0x3015ea,'\x0a'),'regardingobjectid_contact@odata.bind':_0xbaf9('0x3f')+_0x425e30[_0xbaf9('0x2c')]+')','ownerid@odata.bind':_0xbaf9('0x27')+_0x425e30[_0xbaf9('0x1e')]+')','directioncode':_0x425e30[_0xbaf9('0x42')]===_0xbaf9('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xbaf9('0x27')+_0x425e30[_0xbaf9('0x1e')]+')','participationtypemask':_0x425e30['callDirection']===_0xbaf9('0x43')?0x2:0x1},{'partyid_contact@odata.bind':_0xbaf9('0x3f')+_0x425e30[_0xbaf9('0x2c')]+')','participationtypemask':_0x425e30['callDirection']===_0xbaf9('0x43')?0x1:0x2}]},getCustomFields(_0x42f3bc[_0xbaf9('0x40')],_0x3015ea,_0x42f3bc[_0xbaf9('0x38')])),'headers':{'Authorization':_0xbaf9('0x14')+_0x322607,'OData-Version':_0xbaf9('0x15')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1c54b9);})['then'](function(_0xcc3eb){var _0x5145d1=_0xcc3eb[_0xbaf9('0x28')]['odata-entityid'];var _0x579b9b=_0x5145d1[_0xbaf9('0x2a')](_0x5145d1[_0xbaf9('0x2b')]('(')+0x1,_0x5145d1[_0xbaf9('0x2b')](')'));_0x425e30[_0xbaf9('0x44')]=_0x579b9b;_0x1bc1fa(_0x425e30);})['catch'](function(_0x4055f6){_0x229000(_0x4055f6[_0xbaf9('0x11')]);});});}function emit(_0x19e140,_0x18d24f,_0x4f6d28,_0x2e4816){var _0x1243a6={'uri':util['format'](_0xbaf9('0x45'),_0x19e140,_0x4f6d28,_0x2e4816)};io['to'](util[_0xbaf9('0x46')](_0xbaf9('0x47'),_0x18d24f))[_0xbaf9('0x48')](_0xbaf9('0x49'),_0x1243a6);}exports['cs']=function(_0x4c63e6,_0x533ca2,_0xc674b1,_0x47483d,_0x28d385,_0x2867eb,_0x154226,_0x22fd37){var _0x6c6ec7={};_0x2867eb[_0xbaf9('0x4a')]=intUtil[_0xbaf9('0x4b')](_0x2867eb[_0xbaf9('0x4a')]);_0x2867eb[_0xbaf9('0x4c')]=intUtil['stripTrailingSlash'](_0x2867eb['serverUrl']);_0x6c6ec7['callDirection']=_0x22fd37===_0xbaf9('0x43')||_0x22fd37===_0xbaf9('0x4d')?_0xbaf9('0x43'):'outbound';var _0x3f0364=util[_0xbaf9('0x46')](_0xbaf9('0x4e'),_0x2867eb[_0xbaf9('0x4a')]);var _0x3edd0c=util[_0xbaf9('0x46')](_0xbaf9('0x4f'),_0x2867eb[_0xbaf9('0x50')]);var _0x5e7ac3=util[_0xbaf9('0x46')](_0xbaf9('0x51'),_0x2867eb['serverUrl'],_0x533ca2['uniqueid'],md5(_0x533ca2['uniqueid']));if(_0x28d385&&_0x28d385[_0xbaf9('0x52')]){logger[_0xbaf9('0x1b')]('[QUEUE]',_0xbaf9('0x53'));_0x533ca2[_0xbaf9('0x54')]=_0x5e7ac3;}else if(_0x154226&&_0x154226['recordingFormat']&&_0x154226[_0xbaf9('0x55')]!==_0xbaf9('0x56')){logger[_0xbaf9('0x1b')](_0xbaf9('0x57'),_0xbaf9('0x53'));_0x533ca2[_0xbaf9('0x54')]=_0x5e7ac3;}else{_0x533ca2[_0xbaf9('0x54')]='';}return getUser(_0x6c6ec7,_0x2867eb,_0x47483d,_0x3edd0c,_0x3f0364,_0x22fd37)[_0xbaf9('0xc')](function(_0x29d4d1){logger['info']('['+_0x22fd37[_0xbaf9('0x10')]()+_0xbaf9('0x58'),_0x29d4d1[_0xbaf9('0x1e')]);logger['info']('['+_0x22fd37[_0xbaf9('0x10')]()+_0xbaf9('0x59'),_0x29d4d1[_0xbaf9('0x20')]);return getEndUser(_0x29d4d1,_0x2867eb,_0x3edd0c,_0x3f0364,_0x533ca2,_0x22fd37);})[_0xbaf9('0xc')](function(_0x20c7ba){logger[_0xbaf9('0x1b')]('['+_0x22fd37[_0xbaf9('0x10')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x20c7ba[_0xbaf9('0x2c')]);logger[_0xbaf9('0x1b')]('['+_0x22fd37[_0xbaf9('0x10')]()+_0xbaf9('0x5a'),_0x533ca2['calleridnum']);return getTicket(_0x20c7ba,_0x2867eb,_0x3edd0c,_0x3f0364,_0x533ca2,_0xc674b1,_0x22fd37);})['then'](function(_0x16d4b8){logger[_0xbaf9('0x1b')](util[_0xbaf9('0x46')]('['+_0x22fd37[_0xbaf9('0x10')]()+_0xbaf9('0x5b'),_0xc674b1[_0xbaf9('0x38')],_0x16d4b8[_0xbaf9('0x44')]));logger[_0xbaf9('0x1b')](util[_0xbaf9('0x46')]('['+_0x22fd37[_0xbaf9('0x10')]()+_0xbaf9('0x5c'),_0x22fd37));if(_0x22fd37!=='unmanaged'){logger[_0xbaf9('0x1b')]('['+_0x22fd37[_0xbaf9('0x10')]()+']',_0xbaf9('0x5d'));emit(_0x2867eb[_0xbaf9('0x4a')],_0x47483d[_0xbaf9('0x5e')],_0xc674b1['ticketType'],_0x16d4b8[_0xbaf9('0x44')]);}})[_0xbaf9('0xe')](function(_0x163f45){logger[_0xbaf9('0xf')]('['+_0x22fd37['toUpperCase']()+_0xbaf9('0x5f'),util[_0xbaf9('0x60')](_0x163f45,{'showHidden':!![],'depth':null}));});};