f8980c235cfb59af53849d85f3371ab724c4ace9
[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 _0x8f9d=['content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','Fields','phonecall','phonecalls','/contacts(','/systemusers(','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','remoteUri','serverUrl','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','clientId','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','isNil','email','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','length','username','destcalleridnum','calleridnum','POST','contacts','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1','value','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','string','picklist','type','nameField','toLowerCase','indexOf'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x8f9d,0x93));var _0xd8f9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x8f9d[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xd8f9('0x0'));var BPromise=require('bluebird');var rp=require(_0xd8f9('0x1'));var util=require('util');var intUtil=require(_0xd8f9('0x2'));var md5=require(_0xd8f9('0x3'));var Redis=require(_0xd8f9('0x4'));var logger=require(_0xd8f9('0x5'))(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));config[_0xd8f9('0x8')]=_['defaults'](config[_0xd8f9('0x8')],{'host':_0xd8f9('0x9'),'port':0x18eb});var io=require(_0xd8f9('0xa'))(new Redis(config[_0xd8f9('0x8')]));function getAuthToken(_0xf6105,_0x5c410f,_0x46babd){var _0x6691e={'method':'POST','uri':_0x5c410f,'form':{'client_id':_0xf6105[_0xd8f9('0xb')],'resource':_0xf6105['remoteUri'],'username':_0xf6105['username'],'password':_0xf6105[_0xd8f9('0xc')],'grant_type':_0xd8f9('0xc'),'client_secret':_0xf6105[_0xd8f9('0xd')]},'json':!![]};return rp(_0x6691e)[_0xd8f9('0xe')](function(_0x6a0ec2){return _0x6a0ec2[_0xd8f9('0xf')];})[_0xd8f9('0x10')](function(_0x4bd11c){logger[_0xd8f9('0x11')]('['+[_0x46babd['toUpperCase']()]+_0xd8f9('0x12'));return _0x4bd11c[_0xd8f9('0x13')];});}function getUser(_0x11c122,_0x5b01ce,_0x46468b,_0x3df6d2,_0x4cfebf,_0x223f10){return new BPromise(function(_0x4c11f2,_0x3529e9){return getAuthToken(_0x5b01ce,_0x3df6d2,_0x223f10)[_0xd8f9('0xe')](function(_0x234901){var _0x10369c={'method':_0xd8f9('0x14'),'uri':_0x4cfebf+_0xd8f9('0x15'),'headers':{'Authorization':_0xd8f9('0x16')+_0x234901,'OData-Version':'4.0'},'json':!![]};return rp(_0x10369c);})['then'](function(_0x284a1a){var _0xc6a825=_0x284a1a['value'];var _0x35943f=![];var _0x47bdea=null;if(!_[_0xd8f9('0x17')](_0x46468b)){if(intUtil['validateEmail'](_0x46468b['email'])){_0x11c122['userEmail']=_0x46468b[_0xd8f9('0x18')];for(_0x47bdea=0x0;_0x47bdea<_0xc6a825['length'];_0x47bdea++){if(_0xc6a825[_0x47bdea][_0xd8f9('0x19')]===_0x46468b[_0xd8f9('0x18')]&&!_0xc6a825[_0x47bdea][_0xd8f9('0x1a')]){_0x35943f=!![];logger[_0xd8f9('0x1b')]('['+[_0x223f10[_0xd8f9('0x1c')]()]+_0xd8f9('0x1d')+_0xc6a825[_0x47bdea]['systemuserid']+'!');_0x11c122[_0xd8f9('0x1e')]=_0xc6a825[_0x47bdea][_0xd8f9('0x1f')];}}}}if(!_0x35943f){logger[_0xd8f9('0x1b')]('['+[_0x223f10[_0xd8f9('0x1c')]()]+_0xd8f9('0x20'));_0x11c122[_0xd8f9('0x21')]=_0x5b01ce['username'];for(_0x47bdea=0x0;_0x47bdea<_0xc6a825[_0xd8f9('0x22')];_0x47bdea++){if(_0xc6a825[_0x47bdea][_0xd8f9('0x19')]===_0x5b01ce[_0xd8f9('0x23')]){_0x11c122[_0xd8f9('0x1e')]=_0xc6a825[_0x47bdea][_0xd8f9('0x1f')];}}}_0x4c11f2(_0x11c122);})['catch'](function(_0xcc9b18){_0x3529e9(_0xcc9b18[_0xd8f9('0x13')]);});});}function createEndUser(_0x28854a,_0xd15475,_0x3e68dc,_0x9e1d6d,_0x175123,_0x461880){return new BPromise(function(_0x4aab29,_0x464a6a){return getAuthToken(_0xd15475,_0x3e68dc,_0x461880)[_0xd8f9('0xe')](function(_0x3967fb){var _0x58a3ca=_0x461880['toLowerCase']()==='outbound'?_0x175123[_0xd8f9('0x24')]:_0x175123[_0xd8f9('0x25')];var _0x5050a4={'method':_0xd8f9('0x26'),'uri':_0x9e1d6d+_0xd8f9('0x27'),'body':{'telephone1':_0x58a3ca,'fullname':_0x58a3ca,'firstname':_0x58a3ca,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x28854a[_0xd8f9('0x1e')]+')'},'headers':{'Authorization':_0xd8f9('0x16')+_0x3967fb,'OData-Version':_0xd8f9('0x28')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5050a4);})['then'](function(_0xda1b6d){var _0x48f7c0=_0xda1b6d[_0xd8f9('0x29')][_0xd8f9('0x2a')];var _0x4ab385=_0x48f7c0[_0xd8f9('0x2b')](_0x48f7c0['lastIndexOf']('(')+0x1,_0x48f7c0[_0xd8f9('0x2c')](')'));_0x28854a[_0xd8f9('0x2d')]=_0x4ab385;_0x4aab29(_0x28854a);})[_0xd8f9('0x10')](function(_0x394399){_0x464a6a(_0x394399[_0xd8f9('0x13')]);});});}function getEndUser(_0x105f00,_0xcfd867,_0x5211c2,_0x11d865,_0x5d285a,_0x52871a){return new BPromise(function(_0x54e19c,_0x57bf98){return getAuthToken(_0xcfd867,_0x5211c2,_0x52871a)[_0xd8f9('0xe')](function(_0xebc856){var _0x1ee3f0={'method':_0xd8f9('0x14'),'uri':_0x11d865+_0xd8f9('0x2e'),'headers':{'Authorization':'Bearer\x20'+_0xebc856,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1ee3f0);})[_0xd8f9('0xe')](function(_0x97278d){var _0x579dfa=null;if(_0x97278d){var _0x39ce9c=_0x97278d[_0xd8f9('0x2f')];var _0x1bb587=![];for(_0x579dfa=0x0;_0x579dfa<_0x39ce9c['length'];_0x579dfa++){var _0x5f21fb=_0x52871a['toLowerCase']()==='outbound'?_0x5d285a[_0xd8f9('0x24')]:_0x5d285a[_0xd8f9('0x25')];if(_0x39ce9c[_0x579dfa][_0xd8f9('0x30')]===_0x5f21fb){_0x1bb587=!![];_0x105f00[_0xd8f9('0x2d')]=_0x39ce9c[_0x579dfa][_0xd8f9('0x31')];}}if(_0x1bb587){_0x54e19c(_0x105f00);}else{return createEndUser(_0x105f00,_0xcfd867,_0x5211c2,_0x11d865,_0x5d285a,_0x52871a)['then'](function(_0x3333ea){logger[_0xd8f9('0x1b')]('['+[_0x52871a[_0xd8f9('0x1c')]()]+_0xd8f9('0x32'),_0x3333ea[_0xd8f9('0x2d')]);_0x54e19c(_0x3333ea);});}}else{return createEndUser(_0x105f00,_0xcfd867,_0x5211c2,_0x11d865,_0x5d285a,_0x52871a)[_0xd8f9('0xe')](function(_0x37b3cc){logger[_0xd8f9('0x1b')]('['+[_0x52871a[_0xd8f9('0x1c')]()]+_0xd8f9('0x33'),_0x37b3cc[_0xd8f9('0x2d')]);_0x54e19c(_0x37b3cc);});}});});}function getCustomFields(_0x5d16b8,_0x310836,_0x3cfd69){var _0x149530={};if(_0x5d16b8[_0xd8f9('0x22')]>0x0){_['forEach'](_0x5d16b8,function(_0x157dfd){if(_[_0xd8f9('0x34')]([_0xd8f9('0x35'),_0xd8f9('0x36')],_0x157dfd[_0xd8f9('0x37')])&&_0x157dfd[_0xd8f9('0x38')]&&!_0x157dfd['customField']){var _0x4cbf11=_0x157dfd['idField'][_0xd8f9('0x39')]();var _0x293179=_0x4cbf11[_0xd8f9('0x2b')](0x0,_0x4cbf11[_0xd8f9('0x3a')]('_'));var _0x9af000=_0x4cbf11[_0xd8f9('0x2b')](_0x4cbf11[_0xd8f9('0x3a')]('_')+0x1);if(_0x293179===_0x3cfd69){_0x149530[_0x9af000]=_0x157dfd[_0xd8f9('0x3b')];}}});}return _0x149530;}function getTicket(_0x30e9aa,_0x5ed1b7,_0x4aabbe,_0x433d06,_0xaf253e,_0x2993a2,_0x5703a6){return new BPromise(function(_0x5ad80d,_0x32c300){var _0x29cfc7;return getAuthToken(_0x5ed1b7,_0x4aabbe,_0x5703a6)[_0xd8f9('0xe')](function(_0x496326){if(_0x2993a2[_0xd8f9('0x3c')]===_0xd8f9('0x3d')){_0x29cfc7={'method':_0xd8f9('0x26'),'uri':_0x433d06+_0xd8f9('0x3e'),'body':Object[_0xd8f9('0x3f')]({},{'title':intUtil[_0xd8f9('0x40')](_0x2993a2[_0xd8f9('0x41')],_0xaf253e,'\x20'),'description':intUtil[_0xd8f9('0x40')](_0x2993a2[_0xd8f9('0x42')],_0xaf253e,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x30e9aa['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x30e9aa[_0xd8f9('0x1e')]+')','caseorigincode':'1'},getCustomFields(_0x2993a2[_0xd8f9('0x43')],_0xaf253e,_0x2993a2[_0xd8f9('0x3c')])),'headers':{'Authorization':_0xd8f9('0x16')+_0x496326,'OData-Version':_0xd8f9('0x28')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2993a2[_0xd8f9('0x3c')]===_0xd8f9('0x44')){_0x29cfc7={'method':_0xd8f9('0x26'),'uri':_0x433d06+_0xd8f9('0x45'),'body':Object[_0xd8f9('0x3f')]({},{'subject':intUtil[_0xd8f9('0x40')](_0x2993a2[_0xd8f9('0x41')],_0xaf253e,'\x20'),'phonenumber':String(_0xaf253e[_0xd8f9('0x25')]),'description':intUtil['getString'](_0x2993a2[_0xd8f9('0x42')],_0xaf253e,'\x0a'),'regardingobjectid_contact@odata.bind':_0xd8f9('0x46')+_0x30e9aa[_0xd8f9('0x2d')]+')','ownerid@odata.bind':_0xd8f9('0x47')+_0x30e9aa['userId']+')','directioncode':_0x30e9aa[_0xd8f9('0x48')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x30e9aa[_0xd8f9('0x1e')]+')','participationtypemask':_0x30e9aa[_0xd8f9('0x48')]===_0xd8f9('0x49')?0x2:0x1},{'partyid_contact@odata.bind':_0xd8f9('0x46')+_0x30e9aa[_0xd8f9('0x2d')]+')','participationtypemask':_0x30e9aa[_0xd8f9('0x48')]===_0xd8f9('0x49')?0x1:0x2}]},getCustomFields(_0x2993a2[_0xd8f9('0x43')],_0xaf253e,_0x2993a2[_0xd8f9('0x3c')])),'headers':{'Authorization':_0xd8f9('0x16')+_0x496326,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x29cfc7);})['then'](function(_0x5aefd1){var _0x1bb936=_0x5aefd1[_0xd8f9('0x29')]['odata-entityid'];var _0x21e1fb=_0x1bb936[_0xd8f9('0x2b')](_0x1bb936[_0xd8f9('0x2c')]('(')+0x1,_0x1bb936[_0xd8f9('0x2c')](')'));_0x30e9aa[_0xd8f9('0x4a')]=_0x21e1fb;_0x5ad80d(_0x30e9aa);})[_0xd8f9('0x10')](function(_0x455278){_0x32c300(_0x455278[_0xd8f9('0x13')]);});});}function emit(_0x50efce,_0x34f14e,_0x225c72,_0x136389){var _0x47075a={'uri':util[_0xd8f9('0x4b')](_0xd8f9('0x4c'),_0x50efce,_0x225c72,_0x136389)};io['to'](util[_0xd8f9('0x4b')](_0xd8f9('0x4d'),_0x34f14e))[_0xd8f9('0x4e')](_0xd8f9('0x4f'),_0x47075a);}exports['cs']=function(_0x2bbff4,_0x5ad787,_0x21555c,_0x177908,_0x181ad7,_0x273eda,_0x5a0e67,_0x2de50d){var _0x2784bd={};_0x273eda[_0xd8f9('0x50')]=intUtil['stripTrailingSlash'](_0x273eda[_0xd8f9('0x50')]);_0x273eda[_0xd8f9('0x51')]=intUtil[_0xd8f9('0x52')](_0x273eda[_0xd8f9('0x51')]);_0x2784bd['callDirection']=_0x2de50d===_0xd8f9('0x49')||_0x2de50d===_0xd8f9('0x53')?'queue':'outbound';var _0xea8945=util[_0xd8f9('0x4b')](_0xd8f9('0x54'),_0x273eda['remoteUri']);var _0x3855ef=util['format'](_0xd8f9('0x55'),_0x273eda['tenantId']);var _0x200567=util[_0xd8f9('0x4b')](_0xd8f9('0x56'),_0x273eda[_0xd8f9('0x51')],_0x5ad787['uniqueid'],md5(_0x5ad787[_0xd8f9('0x57')]));if(_0x181ad7&&_0x181ad7[_0xd8f9('0x58')]){logger[_0xd8f9('0x1b')](_0xd8f9('0x59'),_0xd8f9('0x5a'));_0x5ad787[_0xd8f9('0x5b')]=_0x200567;}else if(_0x5a0e67&&_0x5a0e67[_0xd8f9('0x5c')]&&_0x5a0e67[_0xd8f9('0x5c')]!=='none'){logger[_0xd8f9('0x1b')](_0xd8f9('0x5d'),_0xd8f9('0x5a'));_0x5ad787[_0xd8f9('0x5b')]=_0x200567;}else{_0x5ad787[_0xd8f9('0x5b')]='';}return getUser(_0x2784bd,_0x273eda,_0x177908,_0x3855ef,_0xea8945,_0x2de50d)['then'](function(_0x48e4d4){logger['info']('['+_0x2de50d[_0xd8f9('0x1c')]()+_0xd8f9('0x5e'),_0x48e4d4['userId']);logger['info']('['+_0x2de50d[_0xd8f9('0x1c')]()+_0xd8f9('0x5f'),_0x48e4d4[_0xd8f9('0x21')]);return getEndUser(_0x48e4d4,_0x273eda,_0x3855ef,_0xea8945,_0x5ad787,_0x2de50d);})[_0xd8f9('0xe')](function(_0x389eac){logger[_0xd8f9('0x1b')]('['+_0x2de50d['toUpperCase']()+_0xd8f9('0x60'),_0x389eac[_0xd8f9('0x2d')]);logger[_0xd8f9('0x1b')]('['+_0x2de50d[_0xd8f9('0x1c')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x5ad787[_0xd8f9('0x25')]);return getTicket(_0x389eac,_0x273eda,_0x3855ef,_0xea8945,_0x5ad787,_0x21555c,_0x2de50d);})[_0xd8f9('0xe')](function(_0x244aa3){logger[_0xd8f9('0x1b')](util[_0xd8f9('0x4b')]('['+_0x2de50d[_0xd8f9('0x1c')]()+_0xd8f9('0x61'),_0x21555c[_0xd8f9('0x3c')],_0x244aa3[_0xd8f9('0x4a')]));logger['info'](util['format']('['+_0x2de50d['toUpperCase']()+_0xd8f9('0x62'),_0x2de50d));if(_0x2de50d!==_0xd8f9('0x53')){logger[_0xd8f9('0x1b')]('['+_0x2de50d[_0xd8f9('0x1c')]()+']',_0xd8f9('0x63'));emit(_0x273eda[_0xd8f9('0x50')],_0x177908[_0xd8f9('0x64')],_0x21555c[_0xd8f9('0x3c')],_0x244aa3['ticketId']);}})[_0xd8f9('0x10')](function(_0x5a329a){logger[_0xd8f9('0x11')]('['+_0x2de50d[_0xd8f9('0x1c')]()+_0xd8f9('0x65'),util[_0xd8f9('0x66')](_0x5a329a,{'showHidden':!![],'depth':null}));});};