Built motion from commit (unavailable).|2.5.11
[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 _0x62d6=['util','md5','../../../../config/logger','dynamics365','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','then','access_token','toUpperCase',']\x20Wrong\x20credentials!','GET','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','internalemailaddress',']\x20Agent\x20found\x20','systemuserid','userId','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','catch','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','lastIndexOf','enduserId','contacts?$select=telephone1','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','type','string','nameField','idField','indexOf','substring','content','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','ticketId','message','format','user:%s','emit','trigger:browser:url','serverUrl','stripTrailingSlash','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20Call\x20direction:\x20%s','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise'];(function(_0x5c8827,_0x5bc5d7){var _0x50ffd5=function(_0x4121bc){while(--_0x4121bc){_0x5c8827['push'](_0x5c8827['shift']());}};_0x50ffd5(++_0x5bc5d7);}(_0x62d6,0x17d));var _0x662d=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x62d6[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0x662d('0x0'));var BPromise=require(_0x662d('0x1'));var rp=require(_0x662d('0x2'));var util=require(_0x662d('0x3'));var intUtil=require('./util');var md5=require(_0x662d('0x4'));var Redis=require('ioredis');var logger=require(_0x662d('0x5'))(_0x662d('0x6'));var config=require(_0x662d('0x7'));config['redis']=_[_0x662d('0x8')](config[_0x662d('0x9')],{'host':_0x662d('0xa'),'port':0x18eb});var io=require(_0x662d('0xb'))(new Redis(config[_0x662d('0x9')]));function getAuthToken(_0x430799,_0x13fc98,_0x3b9fcb){var _0x508860={'method':_0x662d('0xc'),'uri':_0x13fc98,'form':{'client_id':_0x430799[_0x662d('0xd')],'resource':_0x430799[_0x662d('0xe')],'username':_0x430799[_0x662d('0xf')],'password':_0x430799[_0x662d('0x10')],'grant_type':_0x662d('0x10'),'client_secret':_0x430799['clientSecret']},'json':!![]};return rp(_0x508860)[_0x662d('0x11')](function(_0x1ddc29){return _0x1ddc29[_0x662d('0x12')];})['catch'](function(_0x90101f){logger['error']('['+[_0x3b9fcb[_0x662d('0x13')]()]+_0x662d('0x14'));return _0x90101f['message'];});}function getUser(_0x4cf9e9,_0x9c362b,_0x153797,_0x540473,_0x170251,_0x4cbd89){return new BPromise(function(_0x4b7732,_0x1bda3f){return getAuthToken(_0x9c362b,_0x540473,_0x4cbd89)[_0x662d('0x11')](function(_0x1625a0){var _0x44c4a4={'method':_0x662d('0x15'),'uri':_0x170251+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x662d('0x16')+_0x1625a0,'OData-Version':_0x662d('0x17')},'json':!![]};return rp(_0x44c4a4);})[_0x662d('0x11')](function(_0x5e2d5b){var _0x1d4ae3=_0x5e2d5b[_0x662d('0x18')];var _0x549639=![];var _0x2d0265=null;if(!_[_0x662d('0x19')](_0x153797)){if(intUtil[_0x662d('0x1a')](_0x153797[_0x662d('0x1b')])){_0x4cf9e9[_0x662d('0x1c')]=_0x153797[_0x662d('0x1b')];for(_0x2d0265=0x0;_0x2d0265<_0x1d4ae3['length'];_0x2d0265++){if(_0x1d4ae3[_0x2d0265][_0x662d('0x1d')]===_0x153797[_0x662d('0x1b')]&&!_0x1d4ae3[_0x2d0265]['isdisabled']){_0x549639=!![];logger['info']('['+[_0x4cbd89[_0x662d('0x13')]()]+_0x662d('0x1e')+_0x1d4ae3[_0x2d0265][_0x662d('0x1f')]+'!');_0x4cf9e9[_0x662d('0x20')]=_0x1d4ae3[_0x2d0265][_0x662d('0x1f')];}}}}if(!_0x549639){logger[_0x662d('0x21')]('['+[_0x4cbd89[_0x662d('0x13')]()]+_0x662d('0x22'));_0x4cf9e9[_0x662d('0x1c')]=_0x9c362b[_0x662d('0xf')];for(_0x2d0265=0x0;_0x2d0265<_0x1d4ae3[_0x662d('0x23')];_0x2d0265++){if(_0x1d4ae3[_0x2d0265]['internalemailaddress']===_0x9c362b[_0x662d('0xf')]){_0x4cf9e9[_0x662d('0x20')]=_0x1d4ae3[_0x2d0265][_0x662d('0x1f')];}}}_0x4b7732(_0x4cf9e9);})[_0x662d('0x24')](function(_0x3c3cc2){_0x1bda3f(_0x3c3cc2['message']);});});}function createEndUser(_0x507a1c,_0x78aa3f,_0x6bed6b,_0x49c59d,_0x7781a0,_0x3ea20f){return new BPromise(function(_0x3daccb,_0x5aef56){return getAuthToken(_0x78aa3f,_0x6bed6b,_0x3ea20f)['then'](function(_0x5379f6){var _0x56e450=_0x3ea20f[_0x662d('0x25')]()===_0x662d('0x26')?_0x7781a0[_0x662d('0x27')]:_0x7781a0[_0x662d('0x28')];var _0x360d05={'method':_0x662d('0xc'),'uri':_0x49c59d+_0x662d('0x29'),'body':{'telephone1':_0x56e450,'fullname':_0x56e450,'firstname':_0x56e450,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x662d('0x2a')+_0x507a1c[_0x662d('0x20')]+')'},'headers':{'Authorization':_0x662d('0x16')+_0x5379f6,'OData-Version':_0x662d('0x17')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x360d05);})[_0x662d('0x11')](function(_0xe0fc70){var _0x9eaff6=_0xe0fc70[_0x662d('0x2b')][_0x662d('0x2c')];var _0x1cff02=_0x9eaff6['substring'](_0x9eaff6[_0x662d('0x2d')]('(')+0x1,_0x9eaff6[_0x662d('0x2d')](')'));_0x507a1c[_0x662d('0x2e')]=_0x1cff02;_0x3daccb(_0x507a1c);})[_0x662d('0x24')](function(_0x2057a0){_0x5aef56(_0x2057a0['message']);});});}function getEndUser(_0xeeb6c4,_0x451af4,_0x72a872,_0x4ae012,_0x27d780,_0x238869){return new BPromise(function(_0x19d4de,_0x19f946){return getAuthToken(_0x451af4,_0x72a872,_0x238869)[_0x662d('0x11')](function(_0x73c463){var _0x331b95={'method':_0x662d('0x15'),'uri':_0x4ae012+_0x662d('0x2f'),'headers':{'Authorization':_0x662d('0x16')+_0x73c463,'If-None-Match':null,'OData-Version':_0x662d('0x17')},'json':!![]};return rp(_0x331b95);})[_0x662d('0x11')](function(_0x3662e6){var _0x42f715=null;if(_0x3662e6){var _0x5bb83b=_0x3662e6[_0x662d('0x18')];var _0xe38045=![];for(_0x42f715=0x0;_0x42f715<_0x5bb83b[_0x662d('0x23')];_0x42f715++){var _0x5b0a0f=_0x238869[_0x662d('0x25')]()===_0x662d('0x26')?_0x27d780['destcalleridnum']:_0x27d780[_0x662d('0x28')];if(_0x5bb83b[_0x42f715][_0x662d('0x30')]===_0x5b0a0f){_0xe38045=!![];_0xeeb6c4[_0x662d('0x2e')]=_0x5bb83b[_0x42f715][_0x662d('0x31')];}}if(_0xe38045){_0x19d4de(_0xeeb6c4);}else{return createEndUser(_0xeeb6c4,_0x451af4,_0x72a872,_0x4ae012,_0x27d780,_0x238869)[_0x662d('0x11')](function(_0x3dc41f){logger[_0x662d('0x21')]('['+[_0x238869['toUpperCase']()]+_0x662d('0x32'),_0x3dc41f[_0x662d('0x2e')]);_0x19d4de(_0x3dc41f);});}}else{return createEndUser(_0xeeb6c4,_0x451af4,_0x72a872,_0x4ae012,_0x27d780,_0x238869)[_0x662d('0x11')](function(_0x5a0b5a){logger[_0x662d('0x21')]('['+[_0x238869[_0x662d('0x13')]()]+_0x662d('0x33'),_0x5a0b5a[_0x662d('0x2e')]);_0x19d4de(_0x5a0b5a);});}});});}function getCustomFields(_0x44fc4b,_0x489193,_0x4fed65){var _0x342b21={};if(_0x44fc4b['length']>0x0){_[_0x662d('0x34')](_0x44fc4b,function(_0x244602){if(_0x244602[_0x662d('0x35')]===_0x662d('0x36')&&_0x244602[_0x662d('0x37')]&&!_0x244602['customField']){var _0x41ddfc=_0x244602[_0x662d('0x38')]['toLowerCase']();var _0x1988d3=_0x41ddfc['substring'](0x0,_0x41ddfc[_0x662d('0x39')]('_'));var _0x114901=_0x41ddfc[_0x662d('0x3a')](_0x41ddfc[_0x662d('0x39')]('_')+0x1);if(_0x1988d3===_0x4fed65){_0x342b21[_0x114901]=_0x244602[_0x662d('0x3b')];}}});}return _0x342b21;}function getTicket(_0x476c84,_0x2e5d8b,_0x3cbcef,_0x1ffa3c,_0x316667,_0x2edaa4,_0x29c66b){return new BPromise(function(_0x4629cb,_0xeac2fe){var _0xd8d265;return getAuthToken(_0x2e5d8b,_0x3cbcef,_0x29c66b)['then'](function(_0x5a61c3){if(_0x2edaa4[_0x662d('0x3c')]==='incident'){_0xd8d265={'method':'POST','uri':_0x1ffa3c+_0x662d('0x3d'),'body':Object[_0x662d('0x3e')]({},{'title':intUtil[_0x662d('0x3f')](_0x2edaa4[_0x662d('0x40')],_0x316667,'\x20'),'description':intUtil[_0x662d('0x3f')](_0x2edaa4[_0x662d('0x41')],_0x316667,'\x0a'),'customerid_contact@odata.bind':_0x662d('0x42')+_0x476c84[_0x662d('0x2e')]+')','ownerid@odata.bind':_0x662d('0x2a')+_0x476c84[_0x662d('0x20')]+')','caseorigincode':'1'},getCustomFields(_0x2edaa4[_0x662d('0x43')],_0x316667,_0x2edaa4[_0x662d('0x3c')])),'headers':{'Authorization':_0x662d('0x16')+_0x5a61c3,'OData-Version':_0x662d('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2edaa4[_0x662d('0x3c')]===_0x662d('0x44')){_0xd8d265={'method':_0x662d('0xc'),'uri':_0x1ffa3c+'phonecalls','body':Object[_0x662d('0x3e')]({},{'subject':intUtil[_0x662d('0x3f')](_0x2edaa4['Subjects'],_0x316667,'\x20'),'phonenumber':String(_0x316667[_0x662d('0x28')]),'description':intUtil[_0x662d('0x3f')](_0x2edaa4[_0x662d('0x41')],_0x316667,'\x0a'),'regardingobjectid_contact@odata.bind':_0x662d('0x42')+_0x476c84[_0x662d('0x2e')]+')','ownerid@odata.bind':'/systemusers('+_0x476c84[_0x662d('0x20')]+')','directioncode':_0x476c84[_0x662d('0x45')]===_0x662d('0x46')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x662d('0x2a')+_0x476c84[_0x662d('0x20')]+')','participationtypemask':_0x476c84['callDirection']===_0x662d('0x46')?0x2:0x1},{'partyid_contact@odata.bind':_0x662d('0x42')+_0x476c84[_0x662d('0x2e')]+')','participationtypemask':_0x476c84[_0x662d('0x45')]===_0x662d('0x46')?0x1:0x2}]},getCustomFields(_0x2edaa4[_0x662d('0x43')],_0x316667,_0x2edaa4[_0x662d('0x3c')])),'headers':{'Authorization':_0x662d('0x16')+_0x5a61c3,'OData-Version':_0x662d('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xd8d265);})[_0x662d('0x11')](function(_0x2e1eb6){var _0x59bc11=_0x2e1eb6[_0x662d('0x2b')][_0x662d('0x2c')];var _0x858a88=_0x59bc11[_0x662d('0x3a')](_0x59bc11[_0x662d('0x2d')]('(')+0x1,_0x59bc11[_0x662d('0x2d')](')'));_0x476c84[_0x662d('0x47')]=_0x858a88;_0x4629cb(_0x476c84);})[_0x662d('0x24')](function(_0x58e025){_0xeac2fe(_0x58e025[_0x662d('0x48')]);});});}function emit(_0x56add7,_0x197706,_0x5d124f,_0x50bfe1){var _0x266f1f={'uri':util[_0x662d('0x49')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x56add7,_0x5d124f,_0x50bfe1)};io['to'](util[_0x662d('0x49')](_0x662d('0x4a'),_0x197706))[_0x662d('0x4b')](_0x662d('0x4c'),_0x266f1f);}exports['cs']=function(_0xe40c2a,_0x1b4ddf,_0x3de312,_0x490774,_0x2e399d,_0x47164f,_0x1674c3,_0xdbdc1a){var _0x10adea={};_0x47164f[_0x662d('0xe')]=intUtil['stripTrailingSlash'](_0x47164f['remoteUri']);_0x47164f[_0x662d('0x4d')]=intUtil[_0x662d('0x4e')](_0x47164f[_0x662d('0x4d')]);_0x10adea[_0x662d('0x45')]=_0xdbdc1a==='queue'||_0xdbdc1a===_0x662d('0x4f')?_0x662d('0x46'):_0x662d('0x26');var _0x4abaa9=util[_0x662d('0x49')]('%s/api/data/v9.0/',_0x47164f[_0x662d('0xe')]);var _0x5e1fae=util['format'](_0x662d('0x50'),_0x47164f[_0x662d('0x51')]);var _0x2e987b=util[_0x662d('0x49')](_0x662d('0x52'),_0x47164f[_0x662d('0x4d')],_0x1b4ddf[_0x662d('0x53')],md5(_0x1b4ddf[_0x662d('0x53')]));if(_0x2e399d&&_0x2e399d[_0x662d('0x54')]){logger[_0x662d('0x21')](_0x662d('0x55'),_0x662d('0x56'));_0x1b4ddf['recordingURL']=_0x2e987b;}else if(_0x1674c3&&_0x1674c3[_0x662d('0x57')]&&_0x1674c3[_0x662d('0x57')]!=='none'){logger[_0x662d('0x21')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1b4ddf['recordingURL']=_0x2e987b;}else{_0x1b4ddf['recordingURL']='';}return getUser(_0x10adea,_0x47164f,_0x490774,_0x5e1fae,_0x4abaa9,_0xdbdc1a)['then'](function(_0xfad72){logger[_0x662d('0x21')]('['+_0xdbdc1a[_0x662d('0x13')]()+_0x662d('0x58'),_0xfad72[_0x662d('0x20')]);logger[_0x662d('0x21')]('['+_0xdbdc1a[_0x662d('0x13')]()+_0x662d('0x59'),_0xfad72[_0x662d('0x1c')]);return getEndUser(_0xfad72,_0x47164f,_0x5e1fae,_0x4abaa9,_0x1b4ddf,_0xdbdc1a);})[_0x662d('0x11')](function(_0x516139){logger['info']('['+_0xdbdc1a[_0x662d('0x13')]()+_0x662d('0x5a'),_0x516139['enduserId']);logger['info']('['+_0xdbdc1a[_0x662d('0x13')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x1b4ddf[_0x662d('0x28')]);return getTicket(_0x516139,_0x47164f,_0x5e1fae,_0x4abaa9,_0x1b4ddf,_0x3de312,_0xdbdc1a);})[_0x662d('0x11')](function(_0xff78a0){logger[_0x662d('0x21')](util[_0x662d('0x49')]('['+_0xdbdc1a[_0x662d('0x13')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x3de312[_0x662d('0x3c')],_0xff78a0[_0x662d('0x47')]));logger[_0x662d('0x21')](util[_0x662d('0x49')]('['+_0xdbdc1a[_0x662d('0x13')]()+_0x662d('0x5b'),_0xdbdc1a));if(_0xdbdc1a!==_0x662d('0x4f')){logger[_0x662d('0x21')]('['+_0xdbdc1a['toUpperCase']()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x47164f[_0x662d('0xe')],_0x490774[_0x662d('0x5c')],_0x3de312[_0x662d('0x3c')],_0xff78a0['ticketId']);}})[_0x662d('0x24')](function(_0x34f0a7){logger[_0x662d('0x5d')]('['+_0xdbdc1a[_0x662d('0x13')]()+_0x662d('0x5e'),util[_0x662d('0x5f')](_0x34f0a7,{'showHidden':!![],'depth':null}));});};