Built motion from commit (unavailable).|2.3.1
[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 _0x62b9=['user:%s','emit','serverUrl','stripTrailingSlash','abandoned','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','info','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Enduser\x20phone\x20is:','The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','systemusers?$select=internalemailaddress','4.0','email','userEmail','internalemailaddress','userId','length','systemuserid','catch','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','message','GET','contacts?$select=telephone1','Bearer\x20','value','calleridnum','contactid','forEach','type','string','nameField','customField','idField','indexOf','content','ticketType','incident','assign','getString','Subjects','Descriptions','Fields','phonecall','phonecalls','/contacts(','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s'];(function(_0x2becba,_0x4ea656){var _0x90b5dd=function(_0x26ae2b){while(--_0x26ae2b){_0x2becba['push'](_0x2becba['shift']());}};_0x90b5dd(++_0x4ea656);}(_0x62b9,0x130));var _0x962b=function(_0x458441,_0x3c6516){_0x458441=_0x458441-0x0;var _0x42886e=_0x62b9[_0x458441];return _0x42886e;};'use strict';var _=require(_0x962b('0x0'));var BPromise=require(_0x962b('0x1'));var rp=require(_0x962b('0x2'));var util=require(_0x962b('0x3'));var intUtil=require('./util');var md5=require('md5');var Redis=require(_0x962b('0x4'));var logger=require(_0x962b('0x5'))(_0x962b('0x6'));var config=require(_0x962b('0x7'));config[_0x962b('0x8')]=_['defaults'](config[_0x962b('0x8')],{'host':_0x962b('0x9'),'port':0x18eb});var io=require(_0x962b('0xa'))(new Redis(config[_0x962b('0x8')]));function getAuthToken(_0x44fe4e,_0x19241c){var _0x3a3e2a={'method':_0x962b('0xb'),'uri':_0x19241c,'form':{'client_id':_0x44fe4e[_0x962b('0xc')],'resource':_0x44fe4e[_0x962b('0xd')],'username':_0x44fe4e[_0x962b('0xe')],'password':_0x44fe4e[_0x962b('0xf')],'grant_type':'password','client_secret':_0x44fe4e[_0x962b('0x10')]},'json':!![]};return rp(_0x3a3e2a)[_0x962b('0x11')](function(_0x2e2f1e){return _0x2e2f1e[_0x962b('0x12')];});}function getUser(_0x2f0029,_0x23d02b,_0x4802f6,_0x59a12a,_0x46d8ca){return new BPromise(function(_0x49276d,_0x1347de){return getAuthToken(_0x23d02b,_0x59a12a)[_0x962b('0x11')](function(_0x4bcdfa){var _0x5c8352={'method':'GET','uri':_0x46d8ca+_0x962b('0x13'),'headers':{'Authorization':'Bearer\x20'+_0x4bcdfa,'OData-Version':_0x962b('0x14')},'json':!![]};return rp(_0x5c8352);})[_0x962b('0x11')](function(_0x5d6f2f){var _0x398676=_0x5d6f2f['value'];var _0x299ea0=![];var _0x221ae7=null;if(_0x4802f6&&_0x4802f6[_0x962b('0x15')]){_0x2f0029[_0x962b('0x16')]=_0x4802f6['email'];for(_0x221ae7=0x0;_0x221ae7<_0x398676['length'];_0x221ae7++){if(_0x398676[_0x221ae7][_0x962b('0x17')]===_0x4802f6['email']){_0x299ea0=!![];_0x2f0029[_0x962b('0x18')]=_0x398676[_0x221ae7]['systemuserid'];}}}if(!_0x299ea0){_0x2f0029[_0x962b('0x16')]=_0x23d02b['username'];for(_0x221ae7=0x0;_0x221ae7<_0x398676[_0x962b('0x19')];_0x221ae7++){if(_0x398676[_0x221ae7][_0x962b('0x17')]===_0x23d02b[_0x962b('0xe')]){_0x2f0029['userId']=_0x398676[_0x221ae7][_0x962b('0x1a')];}}}_0x49276d(_0x2f0029);})[_0x962b('0x1b')](function(_0x1ee149){_0x1347de(_0x1ee149['message']);});});}function createEndUser(_0x47778d,_0x3df2f0,_0x4c9986,_0x165df0,_0x274baa,_0x3e7d8c){return new BPromise(function(_0x4d9dc8,_0x190519){return getAuthToken(_0x3df2f0,_0x4c9986)[_0x962b('0x11')](function(_0x36bb1e){var _0x26b3af=_0x3e7d8c[_0x962b('0x1c')]()===_0x962b('0x1d')?_0x274baa[_0x962b('0x1e')]:_0x274baa['calleridnum'];var _0x496404={'method':_0x962b('0xb'),'uri':_0x165df0+_0x962b('0x1f'),'body':{'telephone1':_0x26b3af,'fullname':_0x26b3af,'firstname':_0x26b3af,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x962b('0x20')+_0x47778d[_0x962b('0x18')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x36bb1e,'OData-Version':_0x962b('0x14')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x496404);})[_0x962b('0x11')](function(_0xdbbed5){var _0xc9ab1d=_0xdbbed5[_0x962b('0x21')][_0x962b('0x22')];var _0x33b184=_0xc9ab1d[_0x962b('0x23')](_0xc9ab1d[_0x962b('0x24')]('(')+0x1,_0xc9ab1d[_0x962b('0x24')](')'));_0x47778d[_0x962b('0x25')]=_0x33b184;_0x4d9dc8(_0x47778d);})[_0x962b('0x1b')](function(_0x4106e5){_0x190519(_0x4106e5[_0x962b('0x26')]);});});}function getEndUser(_0xae76c6,_0x414427,_0x5a823e,_0x2aeb81,_0x2c23f1,_0x2a5da5){return new BPromise(function(_0x1f2743,_0x42c805){return getAuthToken(_0x414427,_0x5a823e)[_0x962b('0x11')](function(_0x4a0de4){var _0x44c24f={'method':_0x962b('0x27'),'uri':_0x2aeb81+_0x962b('0x28'),'headers':{'Authorization':_0x962b('0x29')+_0x4a0de4,'If-None-Match':null,'OData-Version':_0x962b('0x14')},'json':!![]};return rp(_0x44c24f);})['then'](function(_0x54b2eb){var _0x53756d=null;if(_0x54b2eb){var _0x2b04af=_0x54b2eb[_0x962b('0x2a')];var _0x4faea8=![];for(_0x53756d=0x0;_0x53756d<_0x2b04af[_0x962b('0x19')];_0x53756d++){var _0x3cdccf=_0x2a5da5[_0x962b('0x1c')]()===_0x962b('0x1d')?_0x2c23f1[_0x962b('0x1e')]:_0x2c23f1[_0x962b('0x2b')];if(_0x2b04af[_0x53756d]['telephone1']===_0x3cdccf){_0x4faea8=!![];_0xae76c6[_0x962b('0x25')]=_0x2b04af[_0x53756d][_0x962b('0x2c')];}}if(_0x4faea8){_0x1f2743(_0xae76c6);}else{return createEndUser(_0xae76c6,_0x414427,_0x5a823e,_0x2aeb81,_0x2c23f1,_0x2a5da5)[_0x962b('0x11')](function(_0x5ed3fb){_0x1f2743(_0x5ed3fb);});}}else{return createEndUser(_0xae76c6,_0x414427,_0x5a823e,_0x2aeb81,_0x2c23f1,_0x2a5da5)[_0x962b('0x11')](function(_0x527310){_0x1f2743(_0x527310);});}});});}function getCustomFields(_0x92b99a,_0x1f8aa1,_0x11b69a){var _0x478fd8={};if(_0x92b99a[_0x962b('0x19')]>0x0){_[_0x962b('0x2d')](_0x92b99a,function(_0x4dd3d0){if(_0x4dd3d0[_0x962b('0x2e')]===_0x962b('0x2f')&&_0x4dd3d0[_0x962b('0x30')]&&!_0x4dd3d0[_0x962b('0x31')]){var _0x316c04=_0x4dd3d0[_0x962b('0x32')][_0x962b('0x1c')]();var _0x222342=_0x316c04[_0x962b('0x23')](0x0,_0x316c04[_0x962b('0x33')]('_'));var _0x3dc902=_0x316c04[_0x962b('0x23')](_0x316c04[_0x962b('0x33')]('_')+0x1);if(_0x222342===_0x11b69a){_0x478fd8[_0x3dc902]=_0x4dd3d0[_0x962b('0x34')];}}});}return _0x478fd8;}function getTicket(_0xae8cbf,_0x32425e,_0x5dfe26,_0x6a3cb5,_0x325abd,_0x24af2d){return new BPromise(function(_0xd0d9d7,_0x16ab94){var _0x3f24ef;return getAuthToken(_0x32425e,_0x5dfe26)[_0x962b('0x11')](function(_0x1e9d8e){if(_0x24af2d[_0x962b('0x35')]===_0x962b('0x36')){_0x3f24ef={'method':_0x962b('0xb'),'uri':_0x6a3cb5+'incidents','body':Object[_0x962b('0x37')]({},{'title':intUtil[_0x962b('0x38')](_0x24af2d[_0x962b('0x39')],_0x325abd,'\x20'),'description':intUtil[_0x962b('0x38')](_0x24af2d[_0x962b('0x3a')],_0x325abd,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0xae8cbf[_0x962b('0x25')]+')','ownerid@odata.bind':_0x962b('0x20')+_0xae8cbf[_0x962b('0x18')]+')','caseorigincode':'1'},getCustomFields(_0x24af2d[_0x962b('0x3b')],_0x325abd,_0x24af2d[_0x962b('0x35')])),'headers':{'Authorization':_0x962b('0x29')+_0x1e9d8e,'OData-Version':_0x962b('0x14')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x24af2d[_0x962b('0x35')]===_0x962b('0x3c')){_0x3f24ef={'method':_0x962b('0xb'),'uri':_0x6a3cb5+_0x962b('0x3d'),'body':Object[_0x962b('0x37')]({},{'subject':intUtil[_0x962b('0x38')](_0x24af2d[_0x962b('0x39')],_0x325abd,'\x20'),'phonenumber':String(_0x325abd[_0x962b('0x2b')]),'description':intUtil[_0x962b('0x38')](_0x24af2d['Descriptions'],_0x325abd,'\x0a'),'regardingobjectid_contact@odata.bind':_0x962b('0x3e')+_0xae8cbf[_0x962b('0x25')]+')','ownerid@odata.bind':_0x962b('0x20')+_0xae8cbf[_0x962b('0x18')]+')','directioncode':_0xae8cbf['callDirection']==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x962b('0x20')+_0xae8cbf['userId']+')','participationtypemask':_0xae8cbf['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x962b('0x3e')+_0xae8cbf[_0x962b('0x25')]+')','participationtypemask':_0xae8cbf[_0x962b('0x3f')]===_0x962b('0x40')?0x1:0x2}]},getCustomFields(_0x24af2d[_0x962b('0x3b')],_0x325abd,_0x24af2d[_0x962b('0x35')])),'headers':{'Authorization':'Bearer\x20'+_0x1e9d8e,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3f24ef);})['then'](function(_0x51fa63){var _0x429a2a=_0x51fa63[_0x962b('0x21')][_0x962b('0x22')];var _0x3904bb=_0x429a2a[_0x962b('0x23')](_0x429a2a[_0x962b('0x24')]('(')+0x1,_0x429a2a[_0x962b('0x24')](')'));_0xae8cbf[_0x962b('0x41')]=_0x3904bb;_0xd0d9d7(_0xae8cbf);})[_0x962b('0x1b')](function(_0x3d9b73){_0x16ab94(_0x3d9b73[_0x962b('0x26')]);});});}function emit(_0x532a73,_0x1f5c7c,_0x150b78,_0xadde27){var _0x39bee5={'uri':util[_0x962b('0x42')](_0x962b('0x43'),_0x532a73,_0x150b78,_0xadde27)};io['to'](util['format'](_0x962b('0x44'),_0x1f5c7c))[_0x962b('0x45')]('trigger:browser:url',_0x39bee5);}exports['cs']=function(_0x303ba6,_0x31e522,_0x303e0c,_0x27f0f3,_0x5b24e8,_0x29acfe,_0x22910e,_0xcae6be){var _0x92b488={};_0x29acfe[_0x962b('0xd')]=intUtil['stripTrailingSlash'](_0x29acfe['remoteUri']);_0x29acfe[_0x962b('0x46')]=intUtil[_0x962b('0x47')](_0x29acfe[_0x962b('0x46')]);_0x92b488[_0x962b('0x3f')]=_0xcae6be===_0x962b('0x40')||_0xcae6be===_0x962b('0x48')?_0x962b('0x40'):_0x962b('0x1d');var _0x1120e0=util[_0x962b('0x42')](_0x962b('0x49'),_0x29acfe['remoteUri']);var _0x466a77=util[_0x962b('0x42')]('https://login.microsoftonline.com/%s/oauth2/token',_0x29acfe[_0x962b('0x4a')]);var _0x15adf6=util['format'](_0x962b('0x4b'),_0x29acfe[_0x962b('0x46')],_0x31e522[_0x962b('0x4c')],md5(_0x31e522[_0x962b('0x4c')]));if(_0x5b24e8&&_0x5b24e8[_0x962b('0x4d')]){logger[_0x962b('0x4e')](_0x962b('0x4f'),'Recording\x20is\x20enabled!');_0x31e522[_0x962b('0x50')]=_0x15adf6;}else if(_0x22910e&&_0x22910e['recordingFormat']&&_0x22910e[_0x962b('0x51')]!==_0x962b('0x52')){logger['info'](_0x962b('0x53'),_0x962b('0x54'));_0x31e522['recordingURL']=_0x15adf6;}else{_0x31e522['recordingURL']='';}return getUser(_0x92b488,_0x29acfe,_0x27f0f3,_0x466a77,_0x1120e0)['then'](function(_0x43f2a1){logger['info'](_0x962b('0x55'),_0x43f2a1[_0x962b('0x18')]);logger[_0x962b('0x4e')]('The\x20User\x20email\x20is:',_0x43f2a1[_0x962b('0x16')]);return getEndUser(_0x43f2a1,_0x29acfe,_0x466a77,_0x1120e0,_0x31e522,_0xcae6be);})[_0x962b('0x11')](function(_0x1d9c2e){logger['info'](_0x962b('0x56'),_0x1d9c2e[_0x962b('0x25')]);logger[_0x962b('0x4e')](_0x962b('0x57'),_0x31e522['calleridnum']);return getTicket(_0x1d9c2e,_0x29acfe,_0x466a77,_0x1120e0,_0x31e522,_0x303e0c);})[_0x962b('0x11')](function(_0x2407d1){logger[_0x962b('0x4e')](util['format'](_0x962b('0x58'),_0x303e0c[_0x962b('0x35')],_0x2407d1[_0x962b('0x41')]));logger[_0x962b('0x4e')](util[_0x962b('0x42')]('call\x20direction:\x20%s',_0xcae6be));if(_0xcae6be!==_0x962b('0x48')){logger[_0x962b('0x4e')]('['+_0xcae6be['toUpperCase']()+']',_0x962b('0x59'));emit(_0x29acfe[_0x962b('0xd')],_0x27f0f3[_0x962b('0x5a')],_0x303e0c['ticketType'],_0x2407d1['ticketId']);}})[_0x962b('0x1b')](function(_0x4b07b9){logger[_0x962b('0x5b')]('['+_0xcae6be['toUpperCase']()+_0x962b('0x5c'),util['inspect'](_0x4b07b9,{'showHidden':!![],'depth':null}));});};