5770ac68cf33a06c3041600fb191266a7f0834e6
[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 _0xe3b4=['catch','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','value','isNil','validateEmail','email','userEmail','internalemailaddress',']\x20Agent\x20found\x20','userId','systemuserid','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','length','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','Bearer\x20','4.0','body','headers','odata-entityid','substring','lastIndexOf','calleridnum','telephone1','GET','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','enduserId','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','type','nameField','customField','idField','indexOf','ticketType','incidents','assign','getString','Descriptions','/contacts(','phonecall','callDirection','queue','phonecalls','Subjects','Fields','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','unmanaged','format','%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','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab',']\x20Error\x20running\x20Dynamics365\x20integration','error','Error\x20running\x20Dynamics365\x20integration','lodash','./util','md5','../../../../config/logger','dynamics365','defaults','redis','localhost','remoteUri','CloudProvider','data7','tenantId','data2','POST','clientId','password','then','access_token'];(function(_0x3b5fa4,_0x453c68){var _0x8282a=function(_0x41603f){while(--_0x41603f){_0x3b5fa4['push'](_0x3b5fa4['shift']());}};_0x8282a(++_0x453c68);}(_0xe3b4,0x1aa));var _0x4e3b=function(_0x4c0d2a,_0x3dac6f){_0x4c0d2a=_0x4c0d2a-0x0;var _0x48e5cb=_0xe3b4[_0x4c0d2a];return _0x48e5cb;};'use strict';var _=require(_0x4e3b('0x0'));var rp=require('request-promise');var util=require('util');var intUtil=require(_0x4e3b('0x1'));var md5=require(_0x4e3b('0x2'));var Redis=require('ioredis');var logger=require(_0x4e3b('0x3'))(_0x4e3b('0x4'));var config=require('../../../../config/environment');config['redis']=_[_0x4e3b('0x5')](config[_0x4e3b('0x6')],{'host':_0x4e3b('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4e3b('0x6')]));function getAuthToken(_0x1133d7,_0x397235,_0x6be487){if(_0x1133d7['modernAuthentication']){_0x1133d7[_0x4e3b('0x8')]=_0x1133d7[_0x4e3b('0x9')][_0x4e3b('0xa')];_0x1133d7[_0x4e3b('0xb')]=_0x1133d7[_0x4e3b('0x9')][_0x4e3b('0xc')];return Promise['resolve'](_0x1133d7[_0x4e3b('0x9')]['data5']);}var _0x3ff25c={'method':_0x4e3b('0xd'),'uri':_0x397235,'form':{'client_id':_0x1133d7[_0x4e3b('0xe')],'resource':_0x1133d7[_0x4e3b('0x8')],'username':_0x1133d7['username'],'password':_0x1133d7[_0x4e3b('0xf')],'grant_type':_0x4e3b('0xf'),'client_secret':_0x1133d7['clientSecret']},'json':!![]};return rp(_0x3ff25c)[_0x4e3b('0x10')](function(_0x13865a){return _0x13865a[_0x4e3b('0x11')];})[_0x4e3b('0x12')](function(_0x3e4bd9){logger['error']('['+[_0x6be487[_0x4e3b('0x13')]()]+_0x4e3b('0x14'));return _0x3e4bd9[_0x4e3b('0x15')];});}function getUser(_0x1bb563,_0xc6f377,_0x19dd76,_0x25f60d,_0x1750b8,_0x1be674){return new Promise(function(_0x26fe63,_0x50e203){return getAuthToken(_0xc6f377,_0x25f60d,_0x1be674)[_0x4e3b('0x10')](function(_0xd8e828){var _0x4d74fb={'method':'GET','uri':_0x1750b8+_0x4e3b('0x16'),'headers':{'Authorization':'Bearer\x20'+_0xd8e828,'OData-Version':'4.0'},'json':!![]};return rp(_0x4d74fb);})[_0x4e3b('0x10')](function(_0x172465){var _0x2257db=_0x172465[_0x4e3b('0x17')];var _0x2c7280=![];var _0x46cf52=null;if(!_[_0x4e3b('0x18')](_0x19dd76)){if(intUtil[_0x4e3b('0x19')](_0x19dd76[_0x4e3b('0x1a')])){_0x1bb563[_0x4e3b('0x1b')]=_0x19dd76['email'];for(_0x46cf52=0x0;_0x46cf52<_0x2257db['length'];_0x46cf52++){if(_0x2257db[_0x46cf52][_0x4e3b('0x1c')]===_0x19dd76[_0x4e3b('0x1a')]&&!_0x2257db[_0x46cf52]['isdisabled']){_0x2c7280=!![];logger['info']('['+[_0x1be674['toUpperCase']()]+_0x4e3b('0x1d')+_0x2257db[_0x46cf52]['systemuserid']+'!');_0x1bb563[_0x4e3b('0x1e')]=_0x2257db[_0x46cf52][_0x4e3b('0x1f')];}}}}if(!_0x2c7280){logger[_0x4e3b('0x20')]('['+[_0x1be674['toUpperCase']()]+_0x4e3b('0x21'));_0x1bb563[_0x4e3b('0x1b')]=_0xc6f377[_0x4e3b('0x22')];for(_0x46cf52=0x0;_0x46cf52<_0x2257db[_0x4e3b('0x23')];_0x46cf52++){if(_0x2257db[_0x46cf52]['internalemailaddress']===_0xc6f377[_0x4e3b('0x22')]){_0x1bb563[_0x4e3b('0x1e')]=_0x2257db[_0x46cf52][_0x4e3b('0x1f')];}}}_0x26fe63(_0x1bb563);})['catch'](function(_0x13030d){_0x50e203(_0x13030d[_0x4e3b('0x15')]);});});}function createEndUser(_0x4d3f03,_0x119c98,_0x42ee79,_0x57b9cf,_0x28efc3,_0x2d3b2e,_0x516ff9){return new Promise(function(_0x492b56,_0x167ebb){return getAuthToken(_0x119c98,_0x42ee79,_0x2d3b2e)[_0x4e3b('0x10')](function(_0x16ac53){var _0x4ec5f3=_0x2d3b2e[_0x4e3b('0x24')]()===_0x4e3b('0x25')?_0x28efc3[_0x4e3b('0x26')]:_0x28efc3['calleridnum'];var _0x56b6f7={'method':'POST','uri':_0x57b9cf+_0x4e3b('0x27'),'body':{'fullname':_0x4ec5f3,'firstname':_0x4ec5f3,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x4e3b('0x28')+_0x4d3f03['userId']+')'},'headers':{'Authorization':_0x4e3b('0x29')+_0x16ac53,'OData-Version':_0x4e3b('0x2a')},'json':!![],'resolveWithFullResponse':!![]};_0x56b6f7[_0x4e3b('0x2b')][_0x516ff9]=_0x4ec5f3;return rp(_0x56b6f7);})[_0x4e3b('0x10')](function(_0x44fd90){var _0x16c682=_0x44fd90[_0x4e3b('0x2c')][_0x4e3b('0x2d')];var _0x1f0793=_0x16c682[_0x4e3b('0x2e')](_0x16c682[_0x4e3b('0x2f')]('(')+0x1,_0x16c682[_0x4e3b('0x2f')](')'));_0x4d3f03['enduserId']=_0x1f0793;_0x492b56(_0x4d3f03);})[_0x4e3b('0x12')](function(_0x2dc7ae){_0x167ebb(_0x2dc7ae[_0x4e3b('0x15')]);});});}function getEndUser(_0xeb7b99,_0x29ebe8,_0x13c263,_0xa8da0,_0x376b6d,_0x5aed11,_0x547daf,_0x45f5c5){var _0xaaf75e=_0x5aed11[_0x4e3b('0x24')]()===_0x4e3b('0x25')?_0x376b6d[_0x4e3b('0x26')]:_0x376b6d[_0x4e3b('0x30')];return getAuthToken(_0x29ebe8,_0x13c263,_0x5aed11)[_0x4e3b('0x10')](function(_0x573125){_0x45f5c5=_0x45f5c5?_0x45f5c5:_0x4e3b('0x31');var _0x341324={'method':_0x4e3b('0x32'),'uri':_0xa8da0+_0x4e3b('0x33')+_0x45f5c5+_0x4e3b('0x34')+_0x45f5c5+_0x4e3b('0x35')+_0xaaf75e[_0x4e3b('0x36')]('+',_0x4e3b('0x37'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x573125,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x341324);})[_0x4e3b('0x10')](function(_0x147baf){var _0x1ee57c=![];if(!_0x147baf)return _0x1ee57c;var _0x1fc947=_0x147baf[_0x4e3b('0x17')];for(var _0x335ad5=0x0;_0x335ad5<_0x1fc947[_0x4e3b('0x23')];_0x335ad5++){if(_0x1fc947[_0x335ad5][_0x45f5c5]===_0xaaf75e){_0x1ee57c=!![];_0xeb7b99[_0x4e3b('0x38')]=_0x1fc947[_0x335ad5][_0x4e3b('0x39')];}}return _0x1ee57c;})['then'](function(_0x481aeb){if(_0x481aeb)return _0xeb7b99;if(_0x547daf===_0x4e3b('0x3a')){logger['info']('['+[_0x5aed11[_0x4e3b('0x13')]()]+_0x4e3b('0x3b'));return _0xeb7b99;}return createEndUser(_0xeb7b99,_0x29ebe8,_0x13c263,_0xa8da0,_0x376b6d,_0x5aed11,_0x45f5c5)[_0x4e3b('0x10')](function(_0x27ded0){logger['info']('['+[_0x5aed11[_0x4e3b('0x13')]()]+_0x4e3b('0x3c'),_0x27ded0[_0x4e3b('0x38')]);return _0x27ded0;});});}function getCustomFields(_0x302944,_0x8cf8bf,_0x707697){var _0x5dd982={};if(_0x302944[_0x4e3b('0x23')]>0x0){_[_0x4e3b('0x3d')](_0x302944,function(_0x485d7c){if(_[_0x4e3b('0x3e')]([_0x4e3b('0x3f'),'picklist'],_0x485d7c[_0x4e3b('0x40')])&&_0x485d7c[_0x4e3b('0x41')]&&!_0x485d7c[_0x4e3b('0x42')]){var _0x5a0f81=_0x485d7c[_0x4e3b('0x43')][_0x4e3b('0x24')]();var _0x3feace=_0x5a0f81[_0x4e3b('0x2e')](0x0,_0x5a0f81[_0x4e3b('0x44')]('_'));var _0x513178=_0x5a0f81[_0x4e3b('0x2e')](_0x5a0f81[_0x4e3b('0x44')]('_')+0x1);if(_0x3feace===_0x707697){_0x5dd982[_0x513178]=_0x485d7c['content'];}}});}return _0x5dd982;}function getTicket(_0x3bc93a,_0x5ee1f5,_0x3402f2,_0x580239,_0x348ee6,_0x1e7641,_0x469668){return new Promise(function(_0x444365,_0x50896f){var _0x1b14fc;return getAuthToken(_0x5ee1f5,_0x3402f2,_0x469668)[_0x4e3b('0x10')](function(_0x31f37a){if(_0x1e7641[_0x4e3b('0x45')]==='incident'){_0x1b14fc={'method':_0x4e3b('0xd'),'uri':_0x580239+_0x4e3b('0x46'),'body':Object[_0x4e3b('0x47')]({},{'title':intUtil['getString'](_0x1e7641['Subjects'],_0x348ee6,'\x20'),'description':intUtil[_0x4e3b('0x48')](_0x1e7641[_0x4e3b('0x49')],_0x348ee6,'\x0a'),'customerid_contact@odata.bind':_0x3bc93a[_0x4e3b('0x38')]?_0x4e3b('0x4a')+_0x3bc93a[_0x4e3b('0x38')]+')':undefined,'ownerid@odata.bind':_0x4e3b('0x28')+_0x3bc93a['userId']+')','caseorigincode':'1'},getCustomFields(_0x1e7641['Fields'],_0x348ee6,_0x1e7641[_0x4e3b('0x45')])),'headers':{'Authorization':_0x4e3b('0x29')+_0x31f37a,'OData-Version':_0x4e3b('0x2a')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1e7641['ticketType']===_0x4e3b('0x4b')){var _0x1236ed=_0x3bc93a[_0x4e3b('0x38')]?[{'partyid_systemuser@odata.bind':_0x4e3b('0x28')+_0x3bc93a['userId']+')','participationtypemask':_0x3bc93a[_0x4e3b('0x4c')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x3bc93a['enduserId']+')','participationtypemask':_0x3bc93a['callDirection']===_0x4e3b('0x4d')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x4e3b('0x28')+_0x3bc93a[_0x4e3b('0x1e')]+')','participationtypemask':_0x3bc93a[_0x4e3b('0x4c')]===_0x4e3b('0x4d')?0x2:0x1}];_0x1b14fc={'method':_0x4e3b('0xd'),'uri':_0x580239+_0x4e3b('0x4e'),'body':Object['assign']({},{'subject':intUtil[_0x4e3b('0x48')](_0x1e7641[_0x4e3b('0x4f')],_0x348ee6,'\x20'),'phonenumber':String(_0x348ee6['calleridnum']),'description':intUtil[_0x4e3b('0x48')](_0x1e7641['Descriptions'],_0x348ee6,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3bc93a[_0x4e3b('0x38')]?_0x4e3b('0x4a')+_0x3bc93a[_0x4e3b('0x38')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x3bc93a[_0x4e3b('0x1e')]+')','directioncode':_0x3bc93a[_0x4e3b('0x4c')]===_0x4e3b('0x4d')?![]:!![],'phonecall_activity_parties':_0x1236ed},getCustomFields(_0x1e7641[_0x4e3b('0x50')],_0x348ee6,_0x1e7641[_0x4e3b('0x45')])),'headers':{'Authorization':_0x4e3b('0x29')+_0x31f37a,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1b14fc);})['then'](function(_0x338bd7){var _0x21c3fc=_0x338bd7['headers'][_0x4e3b('0x2d')];var _0x43ec19=_0x21c3fc[_0x4e3b('0x2e')](_0x21c3fc[_0x4e3b('0x2f')]('(')+0x1,_0x21c3fc[_0x4e3b('0x2f')](')'));_0x3bc93a[_0x4e3b('0x51')]=_0x43ec19;_0x444365(_0x3bc93a);})[_0x4e3b('0x12')](function(_0x55b571){_0x50896f(_0x55b571[_0x4e3b('0x15')]);});});}function emit(_0x1ada28,_0x26ef73,_0x34c03b,_0x212121){var _0x51c00c={'uri':util['format'](_0x4e3b('0x52'),_0x1ada28,_0x34c03b,_0x212121)};io['to'](util['format'](_0x4e3b('0x53'),_0x26ef73))[_0x4e3b('0x54')](_0x4e3b('0x55'),_0x51c00c);}exports['cs']=function(_0x19a461,_0x461d30,_0x12cc34,_0x1451e6,_0x1f0cac,_0x4845b0,_0x5e6ff2,_0x933b81){var _0x560055={};_0x4845b0[_0x4e3b('0x8')]=_0x4845b0[_0x4e3b('0x56')]?intUtil[_0x4e3b('0x57')](_0x4845b0[_0x4e3b('0x9')][_0x4e3b('0xa')]):intUtil[_0x4e3b('0x57')](_0x4845b0[_0x4e3b('0x8')]);_0x4845b0['serverUrl']=intUtil[_0x4e3b('0x57')](_0x4845b0[_0x4e3b('0x58')]);_0x560055[_0x4e3b('0x4c')]=_0x933b81==='queue'||_0x933b81===_0x4e3b('0x59')?_0x4e3b('0x4d'):_0x4e3b('0x25');var _0x1ce6ab=_0x4845b0['modernAuthentication']?util[_0x4e3b('0x5a')]('%s/api/data/v9.0/',_0x4845b0[_0x4e3b('0x9')][_0x4e3b('0xa')]):util[_0x4e3b('0x5a')](_0x4e3b('0x5b'),_0x4845b0[_0x4e3b('0x8')]);var _0x1f1c4c=util[_0x4e3b('0x5a')](_0x4e3b('0x5c'),_0x4845b0[_0x4e3b('0xb')]);var _0xf6beff=util[_0x4e3b('0x5a')](_0x4e3b('0x5d'),_0x4845b0['serverUrl'],_0x461d30[_0x4e3b('0x5e')],md5(_0x461d30[_0x4e3b('0x5e')]));if(_0x1f0cac&&_0x1f0cac[_0x4e3b('0x5f')]){logger[_0x4e3b('0x20')](_0x4e3b('0x60'),_0x4e3b('0x61'));_0x461d30[_0x4e3b('0x62')]=_0xf6beff;}else if(_0x5e6ff2&&_0x5e6ff2['recordingFormat']&&_0x5e6ff2[_0x4e3b('0x63')]!==_0x4e3b('0x64')){logger['info'](_0x4e3b('0x65'),_0x4e3b('0x61'));_0x461d30['recordingURL']=_0xf6beff;}else{_0x461d30[_0x4e3b('0x62')]='';}return getUser(_0x560055,_0x4845b0,_0x1451e6,_0x1f1c4c,_0x1ce6ab,_0x933b81)[_0x4e3b('0x10')](function(_0xad7024){logger[_0x4e3b('0x20')]('['+_0x933b81[_0x4e3b('0x13')]()+_0x4e3b('0x66'),_0xad7024[_0x4e3b('0x1e')]);logger[_0x4e3b('0x20')]('['+_0x933b81[_0x4e3b('0x13')]()+_0x4e3b('0x67'),_0xad7024[_0x4e3b('0x1b')]);return getEndUser(_0xad7024,_0x4845b0,_0x1f1c4c,_0x1ce6ab,_0x461d30,_0x933b81,_0x12cc34['moduleCreate'],_0x12cc34[_0x4e3b('0x68')]);})[_0x4e3b('0x10')](function(_0x3734b4){logger[_0x4e3b('0x20')]('['+_0x933b81[_0x4e3b('0x13')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x3734b4[_0x4e3b('0x38')]);logger[_0x4e3b('0x20')]('['+_0x933b81[_0x4e3b('0x13')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x461d30[_0x4e3b('0x30')]);return getTicket(_0x3734b4,_0x4845b0,_0x1f1c4c,_0x1ce6ab,_0x461d30,_0x12cc34,_0x933b81);})['then'](function(_0xd3855c){logger[_0x4e3b('0x20')](util[_0x4e3b('0x5a')]('['+_0x933b81[_0x4e3b('0x13')]()+_0x4e3b('0x69'),_0x12cc34[_0x4e3b('0x45')],_0xd3855c[_0x4e3b('0x51')]));logger['info'](util['format']('['+_0x933b81[_0x4e3b('0x13')]()+_0x4e3b('0x6a'),_0x933b81));if(_0x933b81!==_0x4e3b('0x59')&&_0x12cc34[_0x4e3b('0x6b')]){logger['info']('['+_0x933b81[_0x4e3b('0x13')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x4845b0[_0x4e3b('0x8')],_0x1451e6['name'],_0x12cc34['ticketType'],_0xd3855c[_0x4e3b('0x51')]);}})[_0x4e3b('0x12')](function(_0x18de34){logger['error']('['+_0x933b81[_0x4e3b('0x13')]()+_0x4e3b('0x6c'),_0x18de34[_0x4e3b('0x15')]);console[_0x4e3b('0x6d')](_0x4e3b('0x6e'),_0x18de34);});};