Built motion from commit (unavailable).|2.5.4
[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 _0x3aa1=['ioredis','../../../../config/logger','dynamics365','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','clientId','username','password','access_token','error','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','validateEmail','email','internalemailaddress','systemuserid','toUpperCase',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','length','then','toLowerCase','destcalleridnum','POST','/systemusers(','userId','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','catch','contacts?$select=telephone1','outbound','calleridnum','telephone1','info',']\x20Enduser\x20created!','forEach','nameField','customField','idField','indexOf','content','ticketType','incidents','assign','getString','Descriptions','Fields','phonecall','phonecalls','Subjects','/contacts(','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','remoteUri','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','lodash','bluebird','./util','md5'];(function(_0x6cd22c,_0x40bde1){var _0x428a79=function(_0x22df89){while(--_0x22df89){_0x6cd22c['push'](_0x6cd22c['shift']());}};_0x428a79(++_0x40bde1);}(_0x3aa1,0x164));var _0x13aa=function(_0x1f1ed1,_0x49d785){_0x1f1ed1=_0x1f1ed1-0x0;var _0x2fc964=_0x3aa1[_0x1f1ed1];return _0x2fc964;};'use strict';var _=require(_0x13aa('0x0'));var BPromise=require(_0x13aa('0x1'));var rp=require('request-promise');var util=require('util');var intUtil=require(_0x13aa('0x2'));var md5=require(_0x13aa('0x3'));var Redis=require(_0x13aa('0x4'));var logger=require(_0x13aa('0x5'))(_0x13aa('0x6'));var config=require(_0x13aa('0x7'));config['redis']=_[_0x13aa('0x8')](config[_0x13aa('0x9')],{'host':_0x13aa('0xa'),'port':0x18eb});var io=require(_0x13aa('0xb'))(new Redis(config['redis']));function getAuthToken(_0x49e6bb,_0x5ef345,_0x5c97e3){var _0x50caa4={'method':'POST','uri':_0x5ef345,'form':{'client_id':_0x49e6bb[_0x13aa('0xc')],'resource':_0x49e6bb['remoteUri'],'username':_0x49e6bb[_0x13aa('0xd')],'password':_0x49e6bb[_0x13aa('0xe')],'grant_type':_0x13aa('0xe'),'client_secret':_0x49e6bb['clientSecret']},'json':!![]};return rp(_0x50caa4)['then'](function(_0x3ea8ae){return _0x3ea8ae[_0x13aa('0xf')];})['catch'](function(_0x3b0b3e){logger[_0x13aa('0x10')]('['+[_0x5c97e3['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x3b0b3e[_0x13aa('0x11')];});}function getUser(_0x3382c0,_0x5689d2,_0x1aac81,_0x1960e6,_0x8a0270,_0x59e2ad){return new BPromise(function(_0x5c7b6e,_0x128ddb){return getAuthToken(_0x5689d2,_0x1960e6,_0x59e2ad)['then'](function(_0x258ff1){var _0x17fddf={'method':_0x13aa('0x12'),'uri':_0x8a0270+_0x13aa('0x13'),'headers':{'Authorization':_0x13aa('0x14')+_0x258ff1,'OData-Version':'4.0'},'json':!![]};return rp(_0x17fddf);})['then'](function(_0x214713){var _0xb3cf05=_0x214713[_0x13aa('0x15')];var _0xc4cbc1=![];var _0x1d94e6=null;if(!_['isNil'](_0x1aac81)){if(intUtil[_0x13aa('0x16')](_0x1aac81['email'])){_0x3382c0['userEmail']=_0x1aac81[_0x13aa('0x17')];for(_0x1d94e6=0x0;_0x1d94e6<_0xb3cf05['length'];_0x1d94e6++){if(_0xb3cf05[_0x1d94e6][_0x13aa('0x18')]===_0x1aac81[_0x13aa('0x17')]&&!_0xb3cf05[_0x1d94e6]['isdisabled']){_0xc4cbc1=!![];logger['info']('['+[_0x59e2ad['toUpperCase']()]+']\x20Agent\x20found\x20'+_0xb3cf05[_0x1d94e6][_0x13aa('0x19')]+'!');_0x3382c0['userId']=_0xb3cf05[_0x1d94e6][_0x13aa('0x19')];}}}}if(!_0xc4cbc1){logger['info']('['+[_0x59e2ad[_0x13aa('0x1a')]()]+_0x13aa('0x1b'));_0x3382c0[_0x13aa('0x1c')]=_0x5689d2[_0x13aa('0xd')];for(_0x1d94e6=0x0;_0x1d94e6<_0xb3cf05[_0x13aa('0x1d')];_0x1d94e6++){if(_0xb3cf05[_0x1d94e6]['internalemailaddress']===_0x5689d2['username']){_0x3382c0['userId']=_0xb3cf05[_0x1d94e6]['systemuserid'];}}}_0x5c7b6e(_0x3382c0);})['catch'](function(_0x362b6b){_0x128ddb(_0x362b6b[_0x13aa('0x11')]);});});}function createEndUser(_0x2e9a23,_0x39ed54,_0x4f3bbd,_0x48a3bb,_0x4e0c98,_0x2f7f8d){return new BPromise(function(_0x38ee0d,_0x2a8f38){return getAuthToken(_0x39ed54,_0x4f3bbd,_0x2f7f8d)[_0x13aa('0x1e')](function(_0x1190fe){var _0x506fdc=_0x2f7f8d[_0x13aa('0x1f')]()==='outbound'?_0x4e0c98[_0x13aa('0x20')]:_0x4e0c98['calleridnum'];var _0x41cdbd={'method':_0x13aa('0x21'),'uri':_0x48a3bb+'contacts','body':{'telephone1':_0x506fdc,'fullname':_0x506fdc,'firstname':_0x506fdc,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x13aa('0x22')+_0x2e9a23[_0x13aa('0x23')]+')'},'headers':{'Authorization':_0x13aa('0x14')+_0x1190fe,'OData-Version':_0x13aa('0x24')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x41cdbd);})[_0x13aa('0x1e')](function(_0x4d6943){var _0x433567=_0x4d6943[_0x13aa('0x25')][_0x13aa('0x26')];var _0x1e5be5=_0x433567[_0x13aa('0x27')](_0x433567[_0x13aa('0x28')]('(')+0x1,_0x433567[_0x13aa('0x28')](')'));_0x2e9a23[_0x13aa('0x29')]=_0x1e5be5;_0x38ee0d(_0x2e9a23);})[_0x13aa('0x2a')](function(_0xcabcca){_0x2a8f38(_0xcabcca[_0x13aa('0x11')]);});});}function getEndUser(_0x55403d,_0x2d2fd2,_0x21feef,_0x459333,_0x2d6f4f,_0x4ea3b4){return new BPromise(function(_0x4f7a31,_0x2049a3){return getAuthToken(_0x2d2fd2,_0x21feef,_0x4ea3b4)['then'](function(_0x498fe2){var _0x3754a4={'method':'GET','uri':_0x459333+_0x13aa('0x2b'),'headers':{'Authorization':_0x13aa('0x14')+_0x498fe2,'If-None-Match':null,'OData-Version':_0x13aa('0x24')},'json':!![]};return rp(_0x3754a4);})['then'](function(_0x3789f6){var _0x46da25=null;if(_0x3789f6){var _0x5af69b=_0x3789f6[_0x13aa('0x15')];var _0x4fbc01=![];for(_0x46da25=0x0;_0x46da25<_0x5af69b['length'];_0x46da25++){var _0x6747b=_0x4ea3b4[_0x13aa('0x1f')]()===_0x13aa('0x2c')?_0x2d6f4f[_0x13aa('0x20')]:_0x2d6f4f[_0x13aa('0x2d')];if(_0x5af69b[_0x46da25][_0x13aa('0x2e')]===_0x6747b){_0x4fbc01=!![];_0x55403d[_0x13aa('0x29')]=_0x5af69b[_0x46da25]['contactid'];}}if(_0x4fbc01){_0x4f7a31(_0x55403d);}else{return createEndUser(_0x55403d,_0x2d2fd2,_0x21feef,_0x459333,_0x2d6f4f,_0x4ea3b4)['then'](function(_0x5e47d3){logger[_0x13aa('0x2f')]('['+[_0x4ea3b4['toUpperCase']()]+_0x13aa('0x30'),_0x5e47d3[_0x13aa('0x29')]);_0x4f7a31(_0x5e47d3);});}}else{return createEndUser(_0x55403d,_0x2d2fd2,_0x21feef,_0x459333,_0x2d6f4f,_0x4ea3b4)[_0x13aa('0x1e')](function(_0x4918ef){logger[_0x13aa('0x2f')]('['+[_0x4ea3b4[_0x13aa('0x1a')]()]+']\x20Enduser\x20Created!',_0x4918ef[_0x13aa('0x29')]);_0x4f7a31(_0x4918ef);});}});});}function getCustomFields(_0x4343fd,_0xef1916,_0x3afd4e){var _0x373f19={};if(_0x4343fd['length']>0x0){_[_0x13aa('0x31')](_0x4343fd,function(_0x46fabd){if(_0x46fabd['type']==='string'&&_0x46fabd[_0x13aa('0x32')]&&!_0x46fabd[_0x13aa('0x33')]){var _0x462ecc=_0x46fabd[_0x13aa('0x34')]['toLowerCase']();var _0x594e8e=_0x462ecc[_0x13aa('0x27')](0x0,_0x462ecc[_0x13aa('0x35')]('_'));var _0xabed4d=_0x462ecc[_0x13aa('0x27')](_0x462ecc['indexOf']('_')+0x1);if(_0x594e8e===_0x3afd4e){_0x373f19[_0xabed4d]=_0x46fabd[_0x13aa('0x36')];}}});}return _0x373f19;}function getTicket(_0x43c3ae,_0x4065b6,_0x5e0f89,_0x41d475,_0x137da5,_0x45323f,_0x357f10){return new BPromise(function(_0x2f06b5,_0x3b671c){var _0x5b1803;return getAuthToken(_0x4065b6,_0x5e0f89,_0x357f10)['then'](function(_0x111de0){if(_0x45323f[_0x13aa('0x37')]==='incident'){_0x5b1803={'method':_0x13aa('0x21'),'uri':_0x41d475+_0x13aa('0x38'),'body':Object[_0x13aa('0x39')]({},{'title':intUtil[_0x13aa('0x3a')](_0x45323f['Subjects'],_0x137da5,'\x20'),'description':intUtil[_0x13aa('0x3a')](_0x45323f[_0x13aa('0x3b')],_0x137da5,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x43c3ae[_0x13aa('0x29')]+')','ownerid@odata.bind':_0x13aa('0x22')+_0x43c3ae[_0x13aa('0x23')]+')','caseorigincode':'1'},getCustomFields(_0x45323f[_0x13aa('0x3c')],_0x137da5,_0x45323f[_0x13aa('0x37')])),'headers':{'Authorization':'Bearer\x20'+_0x111de0,'OData-Version':_0x13aa('0x24')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x45323f[_0x13aa('0x37')]===_0x13aa('0x3d')){_0x5b1803={'method':'POST','uri':_0x41d475+_0x13aa('0x3e'),'body':Object[_0x13aa('0x39')]({},{'subject':intUtil['getString'](_0x45323f[_0x13aa('0x3f')],_0x137da5,'\x20'),'phonenumber':String(_0x137da5[_0x13aa('0x2d')]),'description':intUtil['getString'](_0x45323f[_0x13aa('0x3b')],_0x137da5,'\x0a'),'regardingobjectid_contact@odata.bind':_0x13aa('0x40')+_0x43c3ae['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x43c3ae['userId']+')','directioncode':_0x43c3ae[_0x13aa('0x41')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x13aa('0x22')+_0x43c3ae[_0x13aa('0x23')]+')','participationtypemask':_0x43c3ae[_0x13aa('0x41')]===_0x13aa('0x42')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x43c3ae[_0x13aa('0x29')]+')','participationtypemask':_0x43c3ae[_0x13aa('0x41')]===_0x13aa('0x42')?0x1:0x2}]},getCustomFields(_0x45323f['Fields'],_0x137da5,_0x45323f[_0x13aa('0x37')])),'headers':{'Authorization':_0x13aa('0x14')+_0x111de0,'OData-Version':_0x13aa('0x24')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5b1803);})[_0x13aa('0x1e')](function(_0x16a85c){var _0x16d7d8=_0x16a85c[_0x13aa('0x25')][_0x13aa('0x26')];var _0x1b1afe=_0x16d7d8[_0x13aa('0x27')](_0x16d7d8[_0x13aa('0x28')]('(')+0x1,_0x16d7d8[_0x13aa('0x28')](')'));_0x43c3ae[_0x13aa('0x43')]=_0x1b1afe;_0x2f06b5(_0x43c3ae);})[_0x13aa('0x2a')](function(_0x12d92a){_0x3b671c(_0x12d92a[_0x13aa('0x11')]);});});}function emit(_0x44f732,_0x145da4,_0x59cc50,_0x20c28d){var _0x2da568={'uri':util[_0x13aa('0x44')](_0x13aa('0x45'),_0x44f732,_0x59cc50,_0x20c28d)};io['to'](util['format']('user:%s',_0x145da4))[_0x13aa('0x46')](_0x13aa('0x47'),_0x2da568);}exports['cs']=function(_0x132eac,_0x4d3a89,_0x5c536b,_0x1f133e,_0x59e9e7,_0x4e1a71,_0x4cfa6c,_0x3fa7bb){var _0x2df8a1={};_0x4e1a71[_0x13aa('0x48')]=intUtil['stripTrailingSlash'](_0x4e1a71['remoteUri']);_0x4e1a71['serverUrl']=intUtil['stripTrailingSlash'](_0x4e1a71[_0x13aa('0x49')]);_0x2df8a1['callDirection']=_0x3fa7bb==='queue'||_0x3fa7bb===_0x13aa('0x4a')?'queue':_0x13aa('0x2c');var _0x27ff05=util[_0x13aa('0x44')]('%s/api/data/v9.0/',_0x4e1a71[_0x13aa('0x48')]);var _0x4b0e27=util[_0x13aa('0x44')](_0x13aa('0x4b'),_0x4e1a71[_0x13aa('0x4c')]);var _0x1d92ff=util[_0x13aa('0x44')](_0x13aa('0x4d'),_0x4e1a71[_0x13aa('0x49')],_0x4d3a89['uniqueid'],md5(_0x4d3a89[_0x13aa('0x4e')]));if(_0x59e9e7&&_0x59e9e7['monitor_format']){logger[_0x13aa('0x2f')](_0x13aa('0x4f'),_0x13aa('0x50'));_0x4d3a89[_0x13aa('0x51')]=_0x1d92ff;}else if(_0x4cfa6c&&_0x4cfa6c['recordingFormat']&&_0x4cfa6c['recordingFormat']!==_0x13aa('0x52')){logger[_0x13aa('0x2f')](_0x13aa('0x53'),_0x13aa('0x50'));_0x4d3a89[_0x13aa('0x51')]=_0x1d92ff;}else{_0x4d3a89[_0x13aa('0x51')]='';}return getUser(_0x2df8a1,_0x4e1a71,_0x1f133e,_0x4b0e27,_0x27ff05,_0x3fa7bb)['then'](function(_0x345f63){logger[_0x13aa('0x2f')]('['+_0x3fa7bb['toUpperCase']()+_0x13aa('0x54'),_0x345f63[_0x13aa('0x23')]);logger[_0x13aa('0x2f')]('['+_0x3fa7bb[_0x13aa('0x1a')]()+_0x13aa('0x55'),_0x345f63[_0x13aa('0x1c')]);return getEndUser(_0x345f63,_0x4e1a71,_0x4b0e27,_0x27ff05,_0x4d3a89,_0x3fa7bb);})[_0x13aa('0x1e')](function(_0x109d53){logger[_0x13aa('0x2f')]('['+_0x3fa7bb[_0x13aa('0x1a')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x109d53['enduserId']);logger[_0x13aa('0x2f')]('['+_0x3fa7bb['toUpperCase']()+_0x13aa('0x56'),_0x4d3a89[_0x13aa('0x2d')]);return getTicket(_0x109d53,_0x4e1a71,_0x4b0e27,_0x27ff05,_0x4d3a89,_0x5c536b,_0x3fa7bb);})[_0x13aa('0x1e')](function(_0x12cddc){logger[_0x13aa('0x2f')](util[_0x13aa('0x44')]('['+_0x3fa7bb[_0x13aa('0x1a')]()+_0x13aa('0x57'),_0x5c536b[_0x13aa('0x37')],_0x12cddc[_0x13aa('0x43')]));logger[_0x13aa('0x2f')](util[_0x13aa('0x44')]('['+_0x3fa7bb[_0x13aa('0x1a')]()+']\x20Call\x20direction:\x20%s',_0x3fa7bb));if(_0x3fa7bb!==_0x13aa('0x4a')){logger[_0x13aa('0x2f')]('['+_0x3fa7bb[_0x13aa('0x1a')]()+']',_0x13aa('0x58'));emit(_0x4e1a71[_0x13aa('0x48')],_0x1f133e['name'],_0x5c536b[_0x13aa('0x37')],_0x12cddc['ticketId']);}})['catch'](function(_0x4e20ab){logger[_0x13aa('0x10')]('['+_0x3fa7bb['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0x13aa('0x59')](_0x4e20ab,{'showHidden':!![],'depth':null}));});};