Built motion from commit (unavailable).|2.5.31
[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 _0x3837=[']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','then','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','headers','odata-entityid','substring','lastIndexOf','enduserId','GET','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','string','picklist','type','nameField','idField','indexOf','content','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','ticketType','phonecall','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','bluebird','util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch','error','toUpperCase'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x3837,0x1d1));var _0x7383=function(_0x4f9f85,_0x4a40f6){_0x4f9f85=_0x4f9f85-0x0;var _0x2d3485=_0x3837[_0x4f9f85];return _0x2d3485;};'use strict';var _=require('lodash');var BPromise=require(_0x7383('0x0'));var rp=require('request-promise');var util=require(_0x7383('0x1'));var intUtil=require('./util');var md5=require(_0x7383('0x2'));var Redis=require(_0x7383('0x3'));var logger=require(_0x7383('0x4'))(_0x7383('0x5'));var config=require(_0x7383('0x6'));config['redis']=_['defaults'](config[_0x7383('0x7')],{'host':_0x7383('0x8'),'port':0x18eb});var io=require(_0x7383('0x9'))(new Redis(config[_0x7383('0x7')]));function getAuthToken(_0x193cbf,_0x2ad510,_0x1dc05a){var _0x4b3303={'method':_0x7383('0xa'),'uri':_0x2ad510,'form':{'client_id':_0x193cbf[_0x7383('0xb')],'resource':_0x193cbf[_0x7383('0xc')],'username':_0x193cbf[_0x7383('0xd')],'password':_0x193cbf[_0x7383('0xe')],'grant_type':_0x7383('0xe'),'client_secret':_0x193cbf[_0x7383('0xf')]},'json':!![]};return rp(_0x4b3303)['then'](function(_0xfdec8a){return _0xfdec8a[_0x7383('0x10')];})[_0x7383('0x11')](function(_0x3c29dc){logger[_0x7383('0x12')]('['+[_0x1dc05a[_0x7383('0x13')]()]+_0x7383('0x14'));return _0x3c29dc[_0x7383('0x15')];});}function getUser(_0x273c1e,_0x24be15,_0x250e57,_0x5b018f,_0x43c1d6,_0x3a2c78){return new BPromise(function(_0x21a8b2,_0x2346b9){return getAuthToken(_0x24be15,_0x5b018f,_0x3a2c78)['then'](function(_0x566949){var _0x47b4c4={'method':'GET','uri':_0x43c1d6+_0x7383('0x16'),'headers':{'Authorization':_0x7383('0x17')+_0x566949,'OData-Version':_0x7383('0x18')},'json':!![]};return rp(_0x47b4c4);})[_0x7383('0x19')](function(_0x1f733d){var _0x52af85=_0x1f733d[_0x7383('0x1a')];var _0x2db022=![];var _0x1c7645=null;if(!_[_0x7383('0x1b')](_0x250e57)){if(intUtil[_0x7383('0x1c')](_0x250e57[_0x7383('0x1d')])){_0x273c1e[_0x7383('0x1e')]=_0x250e57[_0x7383('0x1d')];for(_0x1c7645=0x0;_0x1c7645<_0x52af85[_0x7383('0x1f')];_0x1c7645++){if(_0x52af85[_0x1c7645][_0x7383('0x20')]===_0x250e57['email']&&!_0x52af85[_0x1c7645][_0x7383('0x21')]){_0x2db022=!![];logger[_0x7383('0x22')]('['+[_0x3a2c78[_0x7383('0x13')]()]+']\x20Agent\x20found\x20'+_0x52af85[_0x1c7645][_0x7383('0x23')]+'!');_0x273c1e[_0x7383('0x24')]=_0x52af85[_0x1c7645]['systemuserid'];}}}}if(!_0x2db022){logger[_0x7383('0x22')]('['+[_0x3a2c78['toUpperCase']()]+_0x7383('0x25'));_0x273c1e[_0x7383('0x1e')]=_0x24be15['username'];for(_0x1c7645=0x0;_0x1c7645<_0x52af85[_0x7383('0x1f')];_0x1c7645++){if(_0x52af85[_0x1c7645][_0x7383('0x20')]===_0x24be15[_0x7383('0xd')]){_0x273c1e[_0x7383('0x24')]=_0x52af85[_0x1c7645][_0x7383('0x23')];}}}_0x21a8b2(_0x273c1e);})['catch'](function(_0x313cb0){_0x2346b9(_0x313cb0['message']);});});}function createEndUser(_0x4c3e40,_0x388964,_0x1175b2,_0x82bd92,_0x208ef9,_0x4a1840){return new BPromise(function(_0x43448e,_0x4f8a0b){return getAuthToken(_0x388964,_0x1175b2,_0x4a1840)[_0x7383('0x19')](function(_0x25526c){var _0x15717e=_0x4a1840[_0x7383('0x26')]()===_0x7383('0x27')?_0x208ef9[_0x7383('0x28')]:_0x208ef9[_0x7383('0x29')];var _0x43f7a5={'method':_0x7383('0xa'),'uri':_0x82bd92+_0x7383('0x2a'),'body':{'telephone1':_0x15717e,'fullname':_0x15717e,'firstname':_0x15717e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x4c3e40[_0x7383('0x24')]+')'},'headers':{'Authorization':_0x7383('0x17')+_0x25526c,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x43f7a5);})['then'](function(_0x4bdff3){var _0x2ab31e=_0x4bdff3[_0x7383('0x2b')][_0x7383('0x2c')];var _0x27951f=_0x2ab31e[_0x7383('0x2d')](_0x2ab31e[_0x7383('0x2e')]('(')+0x1,_0x2ab31e[_0x7383('0x2e')](')'));_0x4c3e40[_0x7383('0x2f')]=_0x27951f;_0x43448e(_0x4c3e40);})[_0x7383('0x11')](function(_0x16c2de){_0x4f8a0b(_0x16c2de[_0x7383('0x15')]);});});}function getEndUser(_0x350425,_0x14843e,_0x448a62,_0xf77b8a,_0x15f35b,_0x2ffffc){return new BPromise(function(_0x6a48a,_0x3a71fa){return getAuthToken(_0x14843e,_0x448a62,_0x2ffffc)[_0x7383('0x19')](function(_0x4f9cc7){var _0x32ef56={'method':_0x7383('0x30'),'uri':_0xf77b8a+'contacts?$select=telephone1','headers':{'Authorization':_0x7383('0x17')+_0x4f9cc7,'If-None-Match':null,'OData-Version':_0x7383('0x18')},'json':!![]};return rp(_0x32ef56);})[_0x7383('0x19')](function(_0x764305){var _0x2c5df2=null;if(_0x764305){var _0x5da808=_0x764305[_0x7383('0x1a')];var _0x27cb9=![];for(_0x2c5df2=0x0;_0x2c5df2<_0x5da808[_0x7383('0x1f')];_0x2c5df2++){var _0x2650e9=_0x2ffffc[_0x7383('0x26')]()===_0x7383('0x27')?_0x15f35b[_0x7383('0x28')]:_0x15f35b['calleridnum'];if(_0x5da808[_0x2c5df2]['telephone1']===_0x2650e9){_0x27cb9=!![];_0x350425['enduserId']=_0x5da808[_0x2c5df2][_0x7383('0x31')];}}if(_0x27cb9){_0x6a48a(_0x350425);}else{return createEndUser(_0x350425,_0x14843e,_0x448a62,_0xf77b8a,_0x15f35b,_0x2ffffc)[_0x7383('0x19')](function(_0x212d5b){logger[_0x7383('0x22')]('['+[_0x2ffffc[_0x7383('0x13')]()]+_0x7383('0x32'),_0x212d5b[_0x7383('0x2f')]);_0x6a48a(_0x212d5b);});}}else{return createEndUser(_0x350425,_0x14843e,_0x448a62,_0xf77b8a,_0x15f35b,_0x2ffffc)[_0x7383('0x19')](function(_0x320cde){logger['info']('['+[_0x2ffffc[_0x7383('0x13')]()]+_0x7383('0x33'),_0x320cde[_0x7383('0x2f')]);_0x6a48a(_0x320cde);});}});});}function getCustomFields(_0x3c3bd9,_0x34513c,_0x34f585){var _0x4f328a={};if(_0x3c3bd9[_0x7383('0x1f')]>0x0){_['forEach'](_0x3c3bd9,function(_0x55664b){if(_[_0x7383('0x34')]([_0x7383('0x35'),_0x7383('0x36')],_0x55664b[_0x7383('0x37')])&&_0x55664b[_0x7383('0x38')]&&!_0x55664b['customField']){var _0x51ca1d=_0x55664b[_0x7383('0x39')][_0x7383('0x26')]();var _0x572f7c=_0x51ca1d['substring'](0x0,_0x51ca1d[_0x7383('0x3a')]('_'));var _0x1c674e=_0x51ca1d[_0x7383('0x2d')](_0x51ca1d[_0x7383('0x3a')]('_')+0x1);if(_0x572f7c===_0x34f585){_0x4f328a[_0x1c674e]=_0x55664b[_0x7383('0x3b')];}}});}return _0x4f328a;}function getTicket(_0x53c999,_0x141728,_0x5d9085,_0x3951d1,_0x13b638,_0x3c64e8,_0x156cd8){return new BPromise(function(_0x4f7c39,_0x39241e){var _0x152c2a;return getAuthToken(_0x141728,_0x5d9085,_0x156cd8)[_0x7383('0x19')](function(_0x208c08){if(_0x3c64e8['ticketType']===_0x7383('0x3c')){_0x152c2a={'method':_0x7383('0xa'),'uri':_0x3951d1+_0x7383('0x3d'),'body':Object[_0x7383('0x3e')]({},{'title':intUtil[_0x7383('0x3f')](_0x3c64e8[_0x7383('0x40')],_0x13b638,'\x20'),'description':intUtil[_0x7383('0x3f')](_0x3c64e8[_0x7383('0x41')],_0x13b638,'\x0a'),'customerid_contact@odata.bind':_0x7383('0x42')+_0x53c999[_0x7383('0x2f')]+')','ownerid@odata.bind':_0x7383('0x43')+_0x53c999[_0x7383('0x24')]+')','caseorigincode':'1'},getCustomFields(_0x3c64e8[_0x7383('0x44')],_0x13b638,_0x3c64e8['ticketType'])),'headers':{'Authorization':_0x7383('0x17')+_0x208c08,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3c64e8[_0x7383('0x45')]===_0x7383('0x46')){_0x152c2a={'method':_0x7383('0xa'),'uri':_0x3951d1+'phonecalls','body':Object[_0x7383('0x3e')]({},{'subject':intUtil[_0x7383('0x3f')](_0x3c64e8['Subjects'],_0x13b638,'\x20'),'phonenumber':String(_0x13b638[_0x7383('0x29')]),'description':intUtil['getString'](_0x3c64e8[_0x7383('0x41')],_0x13b638,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x53c999[_0x7383('0x2f')]+')','ownerid@odata.bind':'/systemusers('+_0x53c999[_0x7383('0x24')]+')','directioncode':_0x53c999[_0x7383('0x47')]===_0x7383('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x53c999[_0x7383('0x24')]+')','participationtypemask':_0x53c999[_0x7383('0x47')]===_0x7383('0x48')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x53c999['enduserId']+')','participationtypemask':_0x53c999[_0x7383('0x47')]===_0x7383('0x48')?0x1:0x2}]},getCustomFields(_0x3c64e8[_0x7383('0x44')],_0x13b638,_0x3c64e8[_0x7383('0x45')])),'headers':{'Authorization':_0x7383('0x17')+_0x208c08,'OData-Version':_0x7383('0x18')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x152c2a);})[_0x7383('0x19')](function(_0x2fe76d){var _0x380316=_0x2fe76d[_0x7383('0x2b')]['odata-entityid'];var _0x16be62=_0x380316[_0x7383('0x2d')](_0x380316[_0x7383('0x2e')]('(')+0x1,_0x380316[_0x7383('0x2e')](')'));_0x53c999[_0x7383('0x49')]=_0x16be62;_0x4f7c39(_0x53c999);})['catch'](function(_0x210351){_0x39241e(_0x210351[_0x7383('0x15')]);});});}function emit(_0x487cb1,_0x2d5650,_0x3c85a4,_0x40af37){var _0xb20e71={'uri':util[_0x7383('0x4a')](_0x7383('0x4b'),_0x487cb1,_0x3c85a4,_0x40af37)};io['to'](util[_0x7383('0x4a')](_0x7383('0x4c'),_0x2d5650))[_0x7383('0x4d')](_0x7383('0x4e'),_0xb20e71);}exports['cs']=function(_0x3baffd,_0x7cf6cb,_0x43f542,_0x6cf490,_0x5482aa,_0x3490a1,_0x4f2937,_0x16a0db){var _0x1858de={};_0x3490a1['remoteUri']=intUtil[_0x7383('0x4f')](_0x3490a1[_0x7383('0xc')]);_0x3490a1[_0x7383('0x50')]=intUtil['stripTrailingSlash'](_0x3490a1[_0x7383('0x50')]);_0x1858de[_0x7383('0x47')]=_0x16a0db===_0x7383('0x48')||_0x16a0db==='unmanaged'?_0x7383('0x48'):'outbound';var _0x30465f=util['format'](_0x7383('0x51'),_0x3490a1[_0x7383('0xc')]);var _0x6a9b91=util[_0x7383('0x4a')]('https://login.microsoftonline.com/%s/oauth2/token',_0x3490a1[_0x7383('0x52')]);var _0x5f5c68=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3490a1[_0x7383('0x50')],_0x7cf6cb[_0x7383('0x53')],md5(_0x7cf6cb[_0x7383('0x53')]));if(_0x5482aa&&_0x5482aa[_0x7383('0x54')]){logger[_0x7383('0x22')](_0x7383('0x55'),_0x7383('0x56'));_0x7cf6cb['recordingURL']=_0x5f5c68;}else if(_0x4f2937&&_0x4f2937['recordingFormat']&&_0x4f2937[_0x7383('0x57')]!=='none'){logger[_0x7383('0x22')](_0x7383('0x58'),_0x7383('0x56'));_0x7cf6cb['recordingURL']=_0x5f5c68;}else{_0x7cf6cb['recordingURL']='';}return getUser(_0x1858de,_0x3490a1,_0x6cf490,_0x6a9b91,_0x30465f,_0x16a0db)[_0x7383('0x19')](function(_0x4d6573){logger[_0x7383('0x22')]('['+_0x16a0db[_0x7383('0x13')]()+_0x7383('0x59'),_0x4d6573[_0x7383('0x24')]);logger[_0x7383('0x22')]('['+_0x16a0db[_0x7383('0x13')]()+']\x20The\x20User\x20email\x20is:',_0x4d6573[_0x7383('0x1e')]);return getEndUser(_0x4d6573,_0x3490a1,_0x6a9b91,_0x30465f,_0x7cf6cb,_0x16a0db);})[_0x7383('0x19')](function(_0x44e2e3){logger[_0x7383('0x22')]('['+_0x16a0db[_0x7383('0x13')]()+_0x7383('0x5a'),_0x44e2e3[_0x7383('0x2f')]);logger[_0x7383('0x22')]('['+_0x16a0db[_0x7383('0x13')]()+_0x7383('0x5b'),_0x7cf6cb[_0x7383('0x29')]);return getTicket(_0x44e2e3,_0x3490a1,_0x6a9b91,_0x30465f,_0x7cf6cb,_0x43f542,_0x16a0db);})[_0x7383('0x19')](function(_0x34d9f5){logger[_0x7383('0x22')](util['format']('['+_0x16a0db[_0x7383('0x13')]()+_0x7383('0x5c'),_0x43f542[_0x7383('0x45')],_0x34d9f5[_0x7383('0x49')]));logger[_0x7383('0x22')](util[_0x7383('0x4a')]('['+_0x16a0db[_0x7383('0x13')]()+_0x7383('0x5d'),_0x16a0db));if(_0x16a0db!=='unmanaged'){logger[_0x7383('0x22')]('['+_0x16a0db[_0x7383('0x13')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x3490a1[_0x7383('0xc')],_0x6cf490[_0x7383('0x5e')],_0x43f542[_0x7383('0x45')],_0x34d9f5[_0x7383('0x49')]);}})['catch'](function(_0x396f77){logger[_0x7383('0x12')]('['+_0x16a0db['toUpperCase']()+_0x7383('0x5f'),util[_0x7383('0x60')](_0x396f77,{'showHidden':!![],'depth':null}));});};