Built motion from commit (unavailable).|2.5.21
[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 _0x8639=['getString','Descriptions','/contacts(','Fields','ticketType','phonecall','phonecalls','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[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','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','redis','defaults','clientId','remoteUri','username','password','clientSecret','then','access_token','error',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','catch','toLowerCase','outbound','destcalleridnum','POST','contacts','/systemusers(','headers','odata-entityid','lastIndexOf','calleridnum','telephone1','enduserId','contactid',']\x20Enduser\x20Created!','type','string','customField','idField','substring','indexOf','content','incident','incidents','assign','Subjects'];(function(_0xd0405d,_0x40d6d3){var _0x311f12=function(_0x5f6555){while(--_0x5f6555){_0xd0405d['push'](_0xd0405d['shift']());}};_0x311f12(++_0x40d6d3);}(_0x8639,0x1aa));var _0x9863=function(_0x38576e,_0x241a05){_0x38576e=_0x38576e-0x0;var _0x4a271e=_0x8639[_0x38576e];return _0x4a271e;};'use strict';var _=require('lodash');var BPromise=require(_0x9863('0x0'));var rp=require(_0x9863('0x1'));var util=require(_0x9863('0x2'));var intUtil=require(_0x9863('0x3'));var md5=require(_0x9863('0x4'));var Redis=require(_0x9863('0x5'));var logger=require(_0x9863('0x6'))(_0x9863('0x7'));var config=require('../../../../config/environment');config[_0x9863('0x8')]=_[_0x9863('0x9')](config[_0x9863('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9863('0x8')]));function getAuthToken(_0x2b189f,_0x1e0465,_0x476f72){var _0x2c3736={'method':'POST','uri':_0x1e0465,'form':{'client_id':_0x2b189f[_0x9863('0xa')],'resource':_0x2b189f[_0x9863('0xb')],'username':_0x2b189f[_0x9863('0xc')],'password':_0x2b189f[_0x9863('0xd')],'grant_type':_0x9863('0xd'),'client_secret':_0x2b189f[_0x9863('0xe')]},'json':!![]};return rp(_0x2c3736)[_0x9863('0xf')](function(_0x177195){return _0x177195[_0x9863('0x10')];})['catch'](function(_0x389844){logger[_0x9863('0x11')]('['+[_0x476f72['toUpperCase']()]+_0x9863('0x12'));return _0x389844[_0x9863('0x13')];});}function getUser(_0x47189c,_0x2bdae3,_0x4438eb,_0x7cd42b,_0x37ad00,_0x1dc46f){return new BPromise(function(_0x1cf913,_0x402546){return getAuthToken(_0x2bdae3,_0x7cd42b,_0x1dc46f)['then'](function(_0x112635){var _0x14641a={'method':_0x9863('0x14'),'uri':_0x37ad00+_0x9863('0x15'),'headers':{'Authorization':_0x9863('0x16')+_0x112635,'OData-Version':_0x9863('0x17')},'json':!![]};return rp(_0x14641a);})[_0x9863('0xf')](function(_0x38713c){var _0x302280=_0x38713c[_0x9863('0x18')];var _0x234e47=![];var _0x81245=null;if(!_[_0x9863('0x19')](_0x4438eb)){if(intUtil[_0x9863('0x1a')](_0x4438eb[_0x9863('0x1b')])){_0x47189c[_0x9863('0x1c')]=_0x4438eb[_0x9863('0x1b')];for(_0x81245=0x0;_0x81245<_0x302280[_0x9863('0x1d')];_0x81245++){if(_0x302280[_0x81245][_0x9863('0x1e')]===_0x4438eb[_0x9863('0x1b')]&&!_0x302280[_0x81245][_0x9863('0x1f')]){_0x234e47=!![];logger[_0x9863('0x20')]('['+[_0x1dc46f[_0x9863('0x21')]()]+_0x9863('0x22')+_0x302280[_0x81245][_0x9863('0x23')]+'!');_0x47189c['userId']=_0x302280[_0x81245][_0x9863('0x23')];}}}}if(!_0x234e47){logger['info']('['+[_0x1dc46f[_0x9863('0x21')]()]+_0x9863('0x24'));_0x47189c[_0x9863('0x1c')]=_0x2bdae3[_0x9863('0xc')];for(_0x81245=0x0;_0x81245<_0x302280['length'];_0x81245++){if(_0x302280[_0x81245][_0x9863('0x1e')]===_0x2bdae3[_0x9863('0xc')]){_0x47189c[_0x9863('0x25')]=_0x302280[_0x81245][_0x9863('0x23')];}}}_0x1cf913(_0x47189c);})[_0x9863('0x26')](function(_0x20d8ea){_0x402546(_0x20d8ea[_0x9863('0x13')]);});});}function createEndUser(_0xe2accb,_0x132c8f,_0x27a461,_0x213614,_0x37fd8a,_0x47123c){return new BPromise(function(_0x1d5802,_0x3df94f){return getAuthToken(_0x132c8f,_0x27a461,_0x47123c)[_0x9863('0xf')](function(_0x40b3d4){var _0x294bcc=_0x47123c[_0x9863('0x27')]()===_0x9863('0x28')?_0x37fd8a[_0x9863('0x29')]:_0x37fd8a['calleridnum'];var _0x436591={'method':_0x9863('0x2a'),'uri':_0x213614+_0x9863('0x2b'),'body':{'telephone1':_0x294bcc,'fullname':_0x294bcc,'firstname':_0x294bcc,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x9863('0x2c')+_0xe2accb['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x40b3d4,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x436591);})[_0x9863('0xf')](function(_0x40821e){var _0x377d68=_0x40821e[_0x9863('0x2d')][_0x9863('0x2e')];var _0x313fd2=_0x377d68['substring'](_0x377d68[_0x9863('0x2f')]('(')+0x1,_0x377d68['lastIndexOf'](')'));_0xe2accb['enduserId']=_0x313fd2;_0x1d5802(_0xe2accb);})[_0x9863('0x26')](function(_0x198f51){_0x3df94f(_0x198f51[_0x9863('0x13')]);});});}function getEndUser(_0x39dbbe,_0x4d301a,_0x52b884,_0x150ebd,_0x15d6db,_0x5427e5){return new BPromise(function(_0x47ea5c,_0x5061a2){return getAuthToken(_0x4d301a,_0x52b884,_0x5427e5)[_0x9863('0xf')](function(_0x2aec9f){var _0x5d9bd3={'method':_0x9863('0x14'),'uri':_0x150ebd+'contacts?$select=telephone1','headers':{'Authorization':_0x9863('0x16')+_0x2aec9f,'If-None-Match':null,'OData-Version':_0x9863('0x17')},'json':!![]};return rp(_0x5d9bd3);})[_0x9863('0xf')](function(_0x3986ae){var _0xa95346=null;if(_0x3986ae){var _0x446093=_0x3986ae[_0x9863('0x18')];var _0x4dedd6=![];for(_0xa95346=0x0;_0xa95346<_0x446093['length'];_0xa95346++){var _0xb1ffe4=_0x5427e5[_0x9863('0x27')]()===_0x9863('0x28')?_0x15d6db[_0x9863('0x29')]:_0x15d6db[_0x9863('0x30')];if(_0x446093[_0xa95346][_0x9863('0x31')]===_0xb1ffe4){_0x4dedd6=!![];_0x39dbbe[_0x9863('0x32')]=_0x446093[_0xa95346][_0x9863('0x33')];}}if(_0x4dedd6){_0x47ea5c(_0x39dbbe);}else{return createEndUser(_0x39dbbe,_0x4d301a,_0x52b884,_0x150ebd,_0x15d6db,_0x5427e5)[_0x9863('0xf')](function(_0x296354){logger[_0x9863('0x20')]('['+[_0x5427e5[_0x9863('0x21')]()]+']\x20Enduser\x20created!',_0x296354[_0x9863('0x32')]);_0x47ea5c(_0x296354);});}}else{return createEndUser(_0x39dbbe,_0x4d301a,_0x52b884,_0x150ebd,_0x15d6db,_0x5427e5)[_0x9863('0xf')](function(_0x3284de){logger['info']('['+[_0x5427e5[_0x9863('0x21')]()]+_0x9863('0x34'),_0x3284de[_0x9863('0x32')]);_0x47ea5c(_0x3284de);});}});});}function getCustomFields(_0x24b0f9,_0x18c1a1,_0x543503){var _0x95aaf2={};if(_0x24b0f9[_0x9863('0x1d')]>0x0){_['forEach'](_0x24b0f9,function(_0x1055e9){if(_0x1055e9[_0x9863('0x35')]===_0x9863('0x36')&&_0x1055e9['nameField']&&!_0x1055e9[_0x9863('0x37')]){var _0x140d5e=_0x1055e9[_0x9863('0x38')][_0x9863('0x27')]();var _0x3bbbbd=_0x140d5e[_0x9863('0x39')](0x0,_0x140d5e[_0x9863('0x3a')]('_'));var _0x449c25=_0x140d5e[_0x9863('0x39')](_0x140d5e['indexOf']('_')+0x1);if(_0x3bbbbd===_0x543503){_0x95aaf2[_0x449c25]=_0x1055e9[_0x9863('0x3b')];}}});}return _0x95aaf2;}function getTicket(_0x2881c4,_0x496cfe,_0x4908c6,_0x4b40aa,_0x2e949f,_0x9bc53,_0x5974ac){return new BPromise(function(_0x309c10,_0x3586c8){var _0x12aa93;return getAuthToken(_0x496cfe,_0x4908c6,_0x5974ac)['then'](function(_0x5704a7){if(_0x9bc53['ticketType']===_0x9863('0x3c')){_0x12aa93={'method':_0x9863('0x2a'),'uri':_0x4b40aa+_0x9863('0x3d'),'body':Object[_0x9863('0x3e')]({},{'title':intUtil['getString'](_0x9bc53[_0x9863('0x3f')],_0x2e949f,'\x20'),'description':intUtil[_0x9863('0x40')](_0x9bc53[_0x9863('0x41')],_0x2e949f,'\x0a'),'customerid_contact@odata.bind':_0x9863('0x42')+_0x2881c4[_0x9863('0x32')]+')','ownerid@odata.bind':_0x9863('0x2c')+_0x2881c4[_0x9863('0x25')]+')','caseorigincode':'1'},getCustomFields(_0x9bc53[_0x9863('0x43')],_0x2e949f,_0x9bc53[_0x9863('0x44')])),'headers':{'Authorization':_0x9863('0x16')+_0x5704a7,'OData-Version':_0x9863('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x9bc53[_0x9863('0x44')]===_0x9863('0x45')){_0x12aa93={'method':'POST','uri':_0x4b40aa+_0x9863('0x46'),'body':Object[_0x9863('0x3e')]({},{'subject':intUtil[_0x9863('0x40')](_0x9bc53['Subjects'],_0x2e949f,'\x20'),'phonenumber':String(_0x2e949f[_0x9863('0x30')]),'description':intUtil['getString'](_0x9bc53[_0x9863('0x41')],_0x2e949f,'\x0a'),'regardingobjectid_contact@odata.bind':_0x9863('0x42')+_0x2881c4[_0x9863('0x32')]+')','ownerid@odata.bind':'/systemusers('+_0x2881c4[_0x9863('0x25')]+')','directioncode':_0x2881c4[_0x9863('0x47')]===_0x9863('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x9863('0x2c')+_0x2881c4[_0x9863('0x25')]+')','participationtypemask':_0x2881c4['callDirection']===_0x9863('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0x9863('0x42')+_0x2881c4['enduserId']+')','participationtypemask':_0x2881c4[_0x9863('0x47')]===_0x9863('0x48')?0x1:0x2}]},getCustomFields(_0x9bc53[_0x9863('0x43')],_0x2e949f,_0x9bc53['ticketType'])),'headers':{'Authorization':_0x9863('0x16')+_0x5704a7,'OData-Version':_0x9863('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x12aa93);})[_0x9863('0xf')](function(_0x26b8f9){var _0xe27bdc=_0x26b8f9[_0x9863('0x2d')][_0x9863('0x2e')];var _0x3a2834=_0xe27bdc[_0x9863('0x39')](_0xe27bdc[_0x9863('0x2f')]('(')+0x1,_0xe27bdc[_0x9863('0x2f')](')'));_0x2881c4[_0x9863('0x49')]=_0x3a2834;_0x309c10(_0x2881c4);})[_0x9863('0x26')](function(_0x39abcf){_0x3586c8(_0x39abcf['message']);});});}function emit(_0x35a2b4,_0x6cc563,_0xc4049e,_0x277b3f){var _0x16a279={'uri':util[_0x9863('0x4a')](_0x9863('0x4b'),_0x35a2b4,_0xc4049e,_0x277b3f)};io['to'](util[_0x9863('0x4a')](_0x9863('0x4c'),_0x6cc563))[_0x9863('0x4d')]('trigger:browser:url',_0x16a279);}exports['cs']=function(_0x2a7345,_0x51cd4b,_0x1783e6,_0x1c2531,_0xc42d93,_0x102ff8,_0x5308f4,_0x3483e9){var _0x4f2115={};_0x102ff8['remoteUri']=intUtil['stripTrailingSlash'](_0x102ff8[_0x9863('0xb')]);_0x102ff8[_0x9863('0x4e')]=intUtil['stripTrailingSlash'](_0x102ff8[_0x9863('0x4e')]);_0x4f2115['callDirection']=_0x3483e9===_0x9863('0x48')||_0x3483e9==='unmanaged'?_0x9863('0x48'):'outbound';var _0x29e22d=util[_0x9863('0x4a')](_0x9863('0x4f'),_0x102ff8[_0x9863('0xb')]);var _0x202135=util[_0x9863('0x4a')](_0x9863('0x50'),_0x102ff8[_0x9863('0x51')]);var _0x5b98ae=util[_0x9863('0x4a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x102ff8[_0x9863('0x4e')],_0x51cd4b[_0x9863('0x52')],md5(_0x51cd4b[_0x9863('0x52')]));if(_0xc42d93&&_0xc42d93[_0x9863('0x53')]){logger[_0x9863('0x20')](_0x9863('0x54'),_0x9863('0x55'));_0x51cd4b[_0x9863('0x56')]=_0x5b98ae;}else if(_0x5308f4&&_0x5308f4[_0x9863('0x57')]&&_0x5308f4['recordingFormat']!=='none'){logger['info'](_0x9863('0x58'),_0x9863('0x55'));_0x51cd4b[_0x9863('0x56')]=_0x5b98ae;}else{_0x51cd4b['recordingURL']='';}return getUser(_0x4f2115,_0x102ff8,_0x1c2531,_0x202135,_0x29e22d,_0x3483e9)[_0x9863('0xf')](function(_0x304d50){logger['info']('['+_0x3483e9[_0x9863('0x21')]()+_0x9863('0x59'),_0x304d50[_0x9863('0x25')]);logger[_0x9863('0x20')]('['+_0x3483e9[_0x9863('0x21')]()+_0x9863('0x5a'),_0x304d50[_0x9863('0x1c')]);return getEndUser(_0x304d50,_0x102ff8,_0x202135,_0x29e22d,_0x51cd4b,_0x3483e9);})[_0x9863('0xf')](function(_0x27532e){logger[_0x9863('0x20')]('['+_0x3483e9['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x27532e['enduserId']);logger[_0x9863('0x20')]('['+_0x3483e9[_0x9863('0x21')]()+_0x9863('0x5b'),_0x51cd4b[_0x9863('0x30')]);return getTicket(_0x27532e,_0x102ff8,_0x202135,_0x29e22d,_0x51cd4b,_0x1783e6,_0x3483e9);})['then'](function(_0x27b5b7){logger[_0x9863('0x20')](util[_0x9863('0x4a')]('['+_0x3483e9[_0x9863('0x21')]()+_0x9863('0x5c'),_0x1783e6[_0x9863('0x44')],_0x27b5b7['ticketId']));logger[_0x9863('0x20')](util[_0x9863('0x4a')]('['+_0x3483e9['toUpperCase']()+_0x9863('0x5d'),_0x3483e9));if(_0x3483e9!=='unmanaged'){logger[_0x9863('0x20')]('['+_0x3483e9[_0x9863('0x21')]()+']',_0x9863('0x5e'));emit(_0x102ff8[_0x9863('0xb')],_0x1c2531[_0x9863('0x5f')],_0x1783e6[_0x9863('0x44')],_0x27b5b7['ticketId']);}})[_0x9863('0x26')](function(_0x586f3b){logger[_0x9863('0x11')]('['+_0x3483e9[_0x9863('0x21')]()+_0x9863('0x60'),util[_0x9863('0x61')](_0x586f3b,{'showHidden':!![],'depth':null}));});};