cb347d912fb8b2a2ed407907619389816dd84183
[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 _0xf9d5=['POST','clientId','remoteUri','password','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userEmail','then','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','userId','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1','4.0','value','toLowerCase','telephone1',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','getString','Subjects','Descriptions','/contacts(','Fields','phonecalls','assign','callDirection','queue','headers','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','socket.io-emitter'];(function(_0x64cfdd,_0xdad39c){var _0x1ad419=function(_0x588cab){while(--_0x588cab){_0x64cfdd['push'](_0x64cfdd['shift']());}};_0x1ad419(++_0xdad39c);}(_0xf9d5,0x122));var _0x5f9d=function(_0x592919,_0x52d8f5){_0x592919=_0x592919-0x0;var _0x1d413f=_0xf9d5[_0x592919];return _0x1d413f;};'use strict';var _=require('lodash');var BPromise=require(_0x5f9d('0x0'));var rp=require(_0x5f9d('0x1'));var util=require('util');var intUtil=require(_0x5f9d('0x2'));var md5=require(_0x5f9d('0x3'));var Redis=require(_0x5f9d('0x4'));var logger=require(_0x5f9d('0x5'))(_0x5f9d('0x6'));var config=require(_0x5f9d('0x7'));config[_0x5f9d('0x8')]=_['defaults'](config[_0x5f9d('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x5f9d('0x9'))(new Redis(config[_0x5f9d('0x8')]));function getAuthToken(_0x4fb9f7,_0x3420b2,_0x23e865){var _0x46e265={'method':_0x5f9d('0xa'),'uri':_0x3420b2,'form':{'client_id':_0x4fb9f7[_0x5f9d('0xb')],'resource':_0x4fb9f7[_0x5f9d('0xc')],'username':_0x4fb9f7['username'],'password':_0x4fb9f7[_0x5f9d('0xd')],'grant_type':_0x5f9d('0xd'),'client_secret':_0x4fb9f7['clientSecret']},'json':!![]};return rp(_0x46e265)['then'](function(_0x26938c){return _0x26938c[_0x5f9d('0xe')];})[_0x5f9d('0xf')](function(_0x4c3b1a){logger[_0x5f9d('0x10')]('['+[_0x23e865[_0x5f9d('0x11')]()]+_0x5f9d('0x12'));return _0x4c3b1a[_0x5f9d('0x13')];});}function getUser(_0x550655,_0x5d42fd,_0x3450a8,_0x234902,_0x5aacdc,_0x8e2381){return new BPromise(function(_0x3ae401,_0x57cb1a){return getAuthToken(_0x5d42fd,_0x234902,_0x8e2381)['then'](function(_0x2f0154){var _0x334cea={'method':_0x5f9d('0x14'),'uri':_0x5aacdc+_0x5f9d('0x15'),'headers':{'Authorization':_0x5f9d('0x16')+_0x2f0154,'OData-Version':'4.0'},'json':!![]};return rp(_0x334cea);})['then'](function(_0x54bd00){var _0x3d8370=_0x54bd00['value'];var _0x432f1a=![];var _0x48448e=null;if(!_[_0x5f9d('0x17')](_0x3450a8)){if(intUtil[_0x5f9d('0x18')](_0x3450a8[_0x5f9d('0x19')])){_0x550655['userEmail']=_0x3450a8[_0x5f9d('0x19')];for(_0x48448e=0x0;_0x48448e<_0x3d8370[_0x5f9d('0x1a')];_0x48448e++){if(_0x3d8370[_0x48448e][_0x5f9d('0x1b')]===_0x3450a8[_0x5f9d('0x19')]&&!_0x3d8370[_0x48448e][_0x5f9d('0x1c')]){_0x432f1a=!![];logger[_0x5f9d('0x1d')]('['+[_0x8e2381[_0x5f9d('0x11')]()]+_0x5f9d('0x1e')+_0x3d8370[_0x48448e][_0x5f9d('0x1f')]+'!');_0x550655['userId']=_0x3d8370[_0x48448e]['systemuserid'];}}}}if(!_0x432f1a){logger['info']('['+[_0x8e2381[_0x5f9d('0x11')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x550655[_0x5f9d('0x20')]=_0x5d42fd['username'];for(_0x48448e=0x0;_0x48448e<_0x3d8370[_0x5f9d('0x1a')];_0x48448e++){if(_0x3d8370[_0x48448e]['internalemailaddress']===_0x5d42fd['username']){_0x550655['userId']=_0x3d8370[_0x48448e][_0x5f9d('0x1f')];}}}_0x3ae401(_0x550655);})[_0x5f9d('0xf')](function(_0x45c333){_0x57cb1a(_0x45c333[_0x5f9d('0x13')]);});});}function createEndUser(_0x542bbc,_0x379d2d,_0x272b93,_0x190402,_0x74f212,_0x2d097f){return new BPromise(function(_0x14aaca,_0x2d66cc){return getAuthToken(_0x379d2d,_0x272b93,_0x2d097f)[_0x5f9d('0x21')](function(_0x3b1efc){var _0x1ec773=_0x2d097f['toLowerCase']()===_0x5f9d('0x22')?_0x74f212[_0x5f9d('0x23')]:_0x74f212[_0x5f9d('0x24')];var _0x13cc7c={'method':_0x5f9d('0xa'),'uri':_0x190402+_0x5f9d('0x25'),'body':{'telephone1':_0x1ec773,'fullname':_0x1ec773,'firstname':_0x1ec773,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x5f9d('0x26')+_0x542bbc[_0x5f9d('0x27')]+')'},'headers':{'Authorization':_0x5f9d('0x16')+_0x3b1efc,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x13cc7c);})['then'](function(_0x4ba714){var _0x118f77=_0x4ba714['headers'][_0x5f9d('0x28')];var _0x49fe67=_0x118f77[_0x5f9d('0x29')](_0x118f77['lastIndexOf']('(')+0x1,_0x118f77[_0x5f9d('0x2a')](')'));_0x542bbc[_0x5f9d('0x2b')]=_0x49fe67;_0x14aaca(_0x542bbc);})[_0x5f9d('0xf')](function(_0x3b4933){_0x2d66cc(_0x3b4933[_0x5f9d('0x13')]);});});}function getEndUser(_0x5a8b7d,_0x42ba29,_0x480fdf,_0xf30420,_0x4822bc,_0x299736){return new BPromise(function(_0x20f1ba,_0x5d3fe6){return getAuthToken(_0x42ba29,_0x480fdf,_0x299736)[_0x5f9d('0x21')](function(_0x97826c){var _0x36a6bc={'method':'GET','uri':_0xf30420+_0x5f9d('0x2c'),'headers':{'Authorization':_0x5f9d('0x16')+_0x97826c,'If-None-Match':null,'OData-Version':_0x5f9d('0x2d')},'json':!![]};return rp(_0x36a6bc);})[_0x5f9d('0x21')](function(_0x3377af){var _0x506869=null;if(_0x3377af){var _0x3f9687=_0x3377af[_0x5f9d('0x2e')];var _0xb14b3f=![];for(_0x506869=0x0;_0x506869<_0x3f9687[_0x5f9d('0x1a')];_0x506869++){var _0x2eecee=_0x299736[_0x5f9d('0x2f')]()==='outbound'?_0x4822bc[_0x5f9d('0x23')]:_0x4822bc[_0x5f9d('0x24')];if(_0x3f9687[_0x506869][_0x5f9d('0x30')]===_0x2eecee){_0xb14b3f=!![];_0x5a8b7d['enduserId']=_0x3f9687[_0x506869]['contactid'];}}if(_0xb14b3f){_0x20f1ba(_0x5a8b7d);}else{return createEndUser(_0x5a8b7d,_0x42ba29,_0x480fdf,_0xf30420,_0x4822bc,_0x299736)[_0x5f9d('0x21')](function(_0x310d2b){logger[_0x5f9d('0x1d')]('['+[_0x299736[_0x5f9d('0x11')]()]+_0x5f9d('0x31'),_0x310d2b['enduserId']);_0x20f1ba(_0x310d2b);});}}else{return createEndUser(_0x5a8b7d,_0x42ba29,_0x480fdf,_0xf30420,_0x4822bc,_0x299736)['then'](function(_0x43b7b9){logger[_0x5f9d('0x1d')]('['+[_0x299736['toUpperCase']()]+_0x5f9d('0x32'),_0x43b7b9['enduserId']);_0x20f1ba(_0x43b7b9);});}});});}function getCustomFields(_0x340db4,_0x178b9d,_0x55595b){var _0x6fb378={};if(_0x340db4[_0x5f9d('0x1a')]>0x0){_[_0x5f9d('0x33')](_0x340db4,function(_0x4cbce2){if(_[_0x5f9d('0x34')]([_0x5f9d('0x35'),_0x5f9d('0x36')],_0x4cbce2[_0x5f9d('0x37')])&&_0x4cbce2[_0x5f9d('0x38')]&&!_0x4cbce2[_0x5f9d('0x39')]){var _0x114a69=_0x4cbce2[_0x5f9d('0x3a')][_0x5f9d('0x2f')]();var _0x41fb22=_0x114a69[_0x5f9d('0x29')](0x0,_0x114a69[_0x5f9d('0x3b')]('_'));var _0x43e5a2=_0x114a69[_0x5f9d('0x29')](_0x114a69[_0x5f9d('0x3b')]('_')+0x1);if(_0x41fb22===_0x55595b){_0x6fb378[_0x43e5a2]=_0x4cbce2[_0x5f9d('0x3c')];}}});}return _0x6fb378;}function getTicket(_0x45ba15,_0x1590b5,_0xf02211,_0x21b5d1,_0x27795a,_0x270ae8,_0x2a8c73){return new BPromise(function(_0x19f933,_0x13d343){var _0x9afb54;return getAuthToken(_0x1590b5,_0xf02211,_0x2a8c73)[_0x5f9d('0x21')](function(_0x1fd561){if(_0x270ae8[_0x5f9d('0x3d')]===_0x5f9d('0x3e')){_0x9afb54={'method':'POST','uri':_0x21b5d1+_0x5f9d('0x3f'),'body':Object['assign']({},{'title':intUtil[_0x5f9d('0x40')](_0x270ae8[_0x5f9d('0x41')],_0x27795a,'\x20'),'description':intUtil[_0x5f9d('0x40')](_0x270ae8[_0x5f9d('0x42')],_0x27795a,'\x0a'),'customerid_contact@odata.bind':_0x5f9d('0x43')+_0x45ba15[_0x5f9d('0x2b')]+')','ownerid@odata.bind':_0x5f9d('0x26')+_0x45ba15['userId']+')','caseorigincode':'1'},getCustomFields(_0x270ae8[_0x5f9d('0x44')],_0x27795a,_0x270ae8[_0x5f9d('0x3d')])),'headers':{'Authorization':_0x5f9d('0x16')+_0x1fd561,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x270ae8[_0x5f9d('0x3d')]==='phonecall'){_0x9afb54={'method':_0x5f9d('0xa'),'uri':_0x21b5d1+_0x5f9d('0x45'),'body':Object[_0x5f9d('0x46')]({},{'subject':intUtil['getString'](_0x270ae8['Subjects'],_0x27795a,'\x20'),'phonenumber':String(_0x27795a[_0x5f9d('0x24')]),'description':intUtil[_0x5f9d('0x40')](_0x270ae8['Descriptions'],_0x27795a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x5f9d('0x43')+_0x45ba15['enduserId']+')','ownerid@odata.bind':_0x5f9d('0x26')+_0x45ba15[_0x5f9d('0x27')]+')','directioncode':_0x45ba15[_0x5f9d('0x47')]===_0x5f9d('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x5f9d('0x26')+_0x45ba15[_0x5f9d('0x27')]+')','participationtypemask':_0x45ba15[_0x5f9d('0x47')]===_0x5f9d('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0x5f9d('0x43')+_0x45ba15[_0x5f9d('0x2b')]+')','participationtypemask':_0x45ba15['callDirection']===_0x5f9d('0x48')?0x1:0x2}]},getCustomFields(_0x270ae8[_0x5f9d('0x44')],_0x27795a,_0x270ae8['ticketType'])),'headers':{'Authorization':_0x5f9d('0x16')+_0x1fd561,'OData-Version':_0x5f9d('0x2d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x9afb54);})[_0x5f9d('0x21')](function(_0x40cca6){var _0xc9a152=_0x40cca6[_0x5f9d('0x49')][_0x5f9d('0x28')];var _0x30153b=_0xc9a152['substring'](_0xc9a152['lastIndexOf']('(')+0x1,_0xc9a152[_0x5f9d('0x2a')](')'));_0x45ba15[_0x5f9d('0x4a')]=_0x30153b;_0x19f933(_0x45ba15);})[_0x5f9d('0xf')](function(_0x101616){_0x13d343(_0x101616[_0x5f9d('0x13')]);});});}function emit(_0x222a69,_0x3a38d6,_0x257b50,_0x36ee8e){var _0x53da50={'uri':util['format'](_0x5f9d('0x4b'),_0x222a69,_0x257b50,_0x36ee8e)};io['to'](util[_0x5f9d('0x4c')](_0x5f9d('0x4d'),_0x3a38d6))[_0x5f9d('0x4e')](_0x5f9d('0x4f'),_0x53da50);}exports['cs']=function(_0x1dc9ec,_0x2a8598,_0x15170d,_0x44c714,_0x1f95eb,_0x48b18c,_0x4e2814,_0x250d06){var _0x12e1ef={};_0x48b18c[_0x5f9d('0xc')]=intUtil['stripTrailingSlash'](_0x48b18c[_0x5f9d('0xc')]);_0x48b18c['serverUrl']=intUtil[_0x5f9d('0x50')](_0x48b18c['serverUrl']);_0x12e1ef['callDirection']=_0x250d06===_0x5f9d('0x48')||_0x250d06==='unmanaged'?_0x5f9d('0x48'):_0x5f9d('0x22');var _0x353993=util[_0x5f9d('0x4c')](_0x5f9d('0x51'),_0x48b18c[_0x5f9d('0xc')]);var _0x5963b9=util[_0x5f9d('0x4c')]('https://login.microsoftonline.com/%s/oauth2/token',_0x48b18c[_0x5f9d('0x52')]);var _0x5d0cda=util['format'](_0x5f9d('0x53'),_0x48b18c[_0x5f9d('0x54')],_0x2a8598[_0x5f9d('0x55')],md5(_0x2a8598[_0x5f9d('0x55')]));if(_0x1f95eb&&_0x1f95eb['monitor_format']){logger['info'](_0x5f9d('0x56'),_0x5f9d('0x57'));_0x2a8598[_0x5f9d('0x58')]=_0x5d0cda;}else if(_0x4e2814&&_0x4e2814[_0x5f9d('0x59')]&&_0x4e2814[_0x5f9d('0x59')]!=='none'){logger[_0x5f9d('0x1d')]('[OUTBOUND]',_0x5f9d('0x57'));_0x2a8598[_0x5f9d('0x58')]=_0x5d0cda;}else{_0x2a8598[_0x5f9d('0x58')]='';}return getUser(_0x12e1ef,_0x48b18c,_0x44c714,_0x5963b9,_0x353993,_0x250d06)[_0x5f9d('0x21')](function(_0x530158){logger[_0x5f9d('0x1d')]('['+_0x250d06[_0x5f9d('0x11')]()+_0x5f9d('0x5a'),_0x530158[_0x5f9d('0x27')]);logger['info']('['+_0x250d06[_0x5f9d('0x11')]()+_0x5f9d('0x5b'),_0x530158[_0x5f9d('0x20')]);return getEndUser(_0x530158,_0x48b18c,_0x5963b9,_0x353993,_0x2a8598,_0x250d06);})[_0x5f9d('0x21')](function(_0x42fcdc){logger[_0x5f9d('0x1d')]('['+_0x250d06[_0x5f9d('0x11')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x42fcdc[_0x5f9d('0x2b')]);logger[_0x5f9d('0x1d')]('['+_0x250d06[_0x5f9d('0x11')]()+_0x5f9d('0x5c'),_0x2a8598[_0x5f9d('0x24')]);return getTicket(_0x42fcdc,_0x48b18c,_0x5963b9,_0x353993,_0x2a8598,_0x15170d,_0x250d06);})[_0x5f9d('0x21')](function(_0x28eaab){logger[_0x5f9d('0x1d')](util[_0x5f9d('0x4c')]('['+_0x250d06[_0x5f9d('0x11')]()+_0x5f9d('0x5d'),_0x15170d[_0x5f9d('0x3d')],_0x28eaab['ticketId']));logger[_0x5f9d('0x1d')](util[_0x5f9d('0x4c')]('['+_0x250d06[_0x5f9d('0x11')]()+_0x5f9d('0x5e'),_0x250d06));if(_0x250d06!==_0x5f9d('0x5f')){logger['info']('['+_0x250d06[_0x5f9d('0x11')]()+']',_0x5f9d('0x60'));emit(_0x48b18c[_0x5f9d('0xc')],_0x44c714[_0x5f9d('0x61')],_0x15170d[_0x5f9d('0x3d')],_0x28eaab['ticketId']);}})[_0x5f9d('0xf')](function(_0x39cd97){logger[_0x5f9d('0x10')]('['+_0x250d06[_0x5f9d('0x11')]()+_0x5f9d('0x62'),util[_0x5f9d('0x63')](_0x39cd97,{'showHidden':!![],'depth':null}));});};