Built motion from commit (unavailable).|2.5.3
[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 _0x35e4=['substring','indexOf','content','incident','incidents','assign','getString','Descriptions','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','ticketType','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','./util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','POST','password','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','value','email','userEmail','length','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','Bearer\x20','odata-entityid','lastIndexOf','enduserId','contacts?$select=telephone1','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','nameField','idField'];(function(_0x36a0d6,_0x3ddac9){var _0x4b21ec=function(_0x5d6ea0){while(--_0x5d6ea0){_0x36a0d6['push'](_0x36a0d6['shift']());}};_0x4b21ec(++_0x3ddac9);}(_0x35e4,0x1ef));var _0x435e=function(_0x541ff3,_0x512936){_0x541ff3=_0x541ff3-0x0;var _0x361542=_0x35e4[_0x541ff3];return _0x361542;};'use strict';var _=require(_0x435e('0x0'));var BPromise=require(_0x435e('0x1'));var rp=require(_0x435e('0x2'));var util=require('util');var intUtil=require(_0x435e('0x3'));var md5=require('md5');var Redis=require(_0x435e('0x4'));var logger=require(_0x435e('0x5'))(_0x435e('0x6'));var config=require(_0x435e('0x7'));config[_0x435e('0x8')]=_[_0x435e('0x9')](config[_0x435e('0x8')],{'host':_0x435e('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAuthToken(_0x1fefd4,_0x3e7eea,_0x3447c5){var _0x100dac={'method':_0x435e('0xb'),'uri':_0x3e7eea,'form':{'client_id':_0x1fefd4['clientId'],'resource':_0x1fefd4['remoteUri'],'username':_0x1fefd4['username'],'password':_0x1fefd4['password'],'grant_type':_0x435e('0xc'),'client_secret':_0x1fefd4['clientSecret']},'json':!![]};return rp(_0x100dac)[_0x435e('0xd')](function(_0x486dbb){return _0x486dbb[_0x435e('0xe')];})[_0x435e('0xf')](function(_0x10b3d5){logger[_0x435e('0x10')]('['+[_0x3447c5[_0x435e('0x11')]()]+_0x435e('0x12'));return _0x10b3d5[_0x435e('0x13')];});}function getUser(_0x2cd4ed,_0x534b3a,_0x3b1907,_0x7cbc97,_0x2d371f,_0x78bc2d){return new BPromise(function(_0x35f815,_0x186588){return getAuthToken(_0x534b3a,_0x7cbc97,_0x78bc2d)[_0x435e('0xd')](function(_0x4b10f7){var _0x1ca18f={'method':_0x435e('0x14'),'uri':_0x2d371f+_0x435e('0x15'),'headers':{'Authorization':'Bearer\x20'+_0x4b10f7,'OData-Version':_0x435e('0x16')},'json':!![]};return rp(_0x1ca18f);})[_0x435e('0xd')](function(_0x45de86){var _0x4d8ac5=_0x45de86[_0x435e('0x17')];var _0xb41a95=![];var _0x1d315a=null;if(!_['isNil'](_0x3b1907)){if(intUtil['validateEmail'](_0x3b1907[_0x435e('0x18')])){_0x2cd4ed[_0x435e('0x19')]=_0x3b1907[_0x435e('0x18')];for(_0x1d315a=0x0;_0x1d315a<_0x4d8ac5[_0x435e('0x1a')];_0x1d315a++){if(_0x4d8ac5[_0x1d315a]['internalemailaddress']===_0x3b1907[_0x435e('0x18')]&&!_0x4d8ac5[_0x1d315a]['isdisabled']){_0xb41a95=!![];logger[_0x435e('0x1b')]('['+[_0x78bc2d[_0x435e('0x11')]()]+_0x435e('0x1c')+_0x4d8ac5[_0x1d315a][_0x435e('0x1d')]+'!');_0x2cd4ed[_0x435e('0x1e')]=_0x4d8ac5[_0x1d315a][_0x435e('0x1d')];}}}}if(!_0xb41a95){logger['info']('['+[_0x78bc2d['toUpperCase']()]+_0x435e('0x1f'));_0x2cd4ed[_0x435e('0x19')]=_0x534b3a['username'];for(_0x1d315a=0x0;_0x1d315a<_0x4d8ac5[_0x435e('0x1a')];_0x1d315a++){if(_0x4d8ac5[_0x1d315a]['internalemailaddress']===_0x534b3a[_0x435e('0x20')]){_0x2cd4ed[_0x435e('0x1e')]=_0x4d8ac5[_0x1d315a][_0x435e('0x1d')];}}}_0x35f815(_0x2cd4ed);})['catch'](function(_0x404b31){_0x186588(_0x404b31[_0x435e('0x13')]);});});}function createEndUser(_0x566d9d,_0x4bf990,_0x4a76d7,_0x217749,_0x136b55,_0x1d0feb){return new BPromise(function(_0x5cbf6a,_0x5eb9f8){return getAuthToken(_0x4bf990,_0x4a76d7,_0x1d0feb)['then'](function(_0x58bf58){var _0x21fbb6=_0x1d0feb[_0x435e('0x21')]()===_0x435e('0x22')?_0x136b55[_0x435e('0x23')]:_0x136b55[_0x435e('0x24')];var _0x5e7167={'method':_0x435e('0xb'),'uri':_0x217749+_0x435e('0x25'),'body':{'telephone1':_0x21fbb6,'fullname':_0x21fbb6,'firstname':_0x21fbb6,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x435e('0x26')+_0x566d9d['userId']+')'},'headers':{'Authorization':_0x435e('0x27')+_0x58bf58,'OData-Version':_0x435e('0x16')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5e7167);})[_0x435e('0xd')](function(_0x371d15){var _0xa509cc=_0x371d15['headers'][_0x435e('0x28')];var _0x395eb2=_0xa509cc['substring'](_0xa509cc[_0x435e('0x29')]('(')+0x1,_0xa509cc['lastIndexOf'](')'));_0x566d9d[_0x435e('0x2a')]=_0x395eb2;_0x5cbf6a(_0x566d9d);})[_0x435e('0xf')](function(_0x87c9d5){_0x5eb9f8(_0x87c9d5[_0x435e('0x13')]);});});}function getEndUser(_0x426771,_0x128684,_0x416591,_0x2b9fff,_0x3639a5,_0x242144){return new BPromise(function(_0x2a630c,_0x49ec3e){return getAuthToken(_0x128684,_0x416591,_0x242144)[_0x435e('0xd')](function(_0x369608){var _0x26f0c6={'method':_0x435e('0x14'),'uri':_0x2b9fff+_0x435e('0x2b'),'headers':{'Authorization':_0x435e('0x27')+_0x369608,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x26f0c6);})['then'](function(_0x49c2c6){var _0xdc3150=null;if(_0x49c2c6){var _0x3a7c09=_0x49c2c6[_0x435e('0x17')];var _0x539fc9=![];for(_0xdc3150=0x0;_0xdc3150<_0x3a7c09['length'];_0xdc3150++){var _0x154032=_0x242144[_0x435e('0x21')]()===_0x435e('0x22')?_0x3639a5[_0x435e('0x23')]:_0x3639a5[_0x435e('0x24')];if(_0x3a7c09[_0xdc3150][_0x435e('0x2c')]===_0x154032){_0x539fc9=!![];_0x426771[_0x435e('0x2a')]=_0x3a7c09[_0xdc3150][_0x435e('0x2d')];}}if(_0x539fc9){_0x2a630c(_0x426771);}else{return createEndUser(_0x426771,_0x128684,_0x416591,_0x2b9fff,_0x3639a5,_0x242144)['then'](function(_0x4512e8){logger[_0x435e('0x1b')]('['+[_0x242144[_0x435e('0x11')]()]+_0x435e('0x2e'),_0x4512e8[_0x435e('0x2a')]);_0x2a630c(_0x4512e8);});}}else{return createEndUser(_0x426771,_0x128684,_0x416591,_0x2b9fff,_0x3639a5,_0x242144)[_0x435e('0xd')](function(_0x44ca97){logger[_0x435e('0x1b')]('['+[_0x242144['toUpperCase']()]+_0x435e('0x2f'),_0x44ca97[_0x435e('0x2a')]);_0x2a630c(_0x44ca97);});}});});}function getCustomFields(_0x4ab6c3,_0x3f1700,_0x4cb658){var _0x38d38d={};if(_0x4ab6c3[_0x435e('0x1a')]>0x0){_[_0x435e('0x30')](_0x4ab6c3,function(_0xa5e621){if(_0xa5e621['type']==='string'&&_0xa5e621[_0x435e('0x31')]&&!_0xa5e621['customField']){var _0x55fe8f=_0xa5e621[_0x435e('0x32')]['toLowerCase']();var _0x1e376d=_0x55fe8f[_0x435e('0x33')](0x0,_0x55fe8f['indexOf']('_'));var _0x288807=_0x55fe8f[_0x435e('0x33')](_0x55fe8f[_0x435e('0x34')]('_')+0x1);if(_0x1e376d===_0x4cb658){_0x38d38d[_0x288807]=_0xa5e621[_0x435e('0x35')];}}});}return _0x38d38d;}function getTicket(_0x3bc5fe,_0x2355a6,_0x5826aa,_0x3e7226,_0x5cbb4d,_0x9ba5b8,_0x59ee77){return new BPromise(function(_0x30a34d,_0x34403c){var _0xf094f9;return getAuthToken(_0x2355a6,_0x5826aa,_0x59ee77)['then'](function(_0x1eb58f){if(_0x9ba5b8['ticketType']===_0x435e('0x36')){_0xf094f9={'method':_0x435e('0xb'),'uri':_0x3e7226+_0x435e('0x37'),'body':Object[_0x435e('0x38')]({},{'title':intUtil[_0x435e('0x39')](_0x9ba5b8['Subjects'],_0x5cbb4d,'\x20'),'description':intUtil['getString'](_0x9ba5b8[_0x435e('0x3a')],_0x5cbb4d,'\x0a'),'customerid_contact@odata.bind':_0x435e('0x3b')+_0x3bc5fe[_0x435e('0x2a')]+')','ownerid@odata.bind':_0x435e('0x26')+_0x3bc5fe[_0x435e('0x1e')]+')','caseorigincode':'1'},getCustomFields(_0x9ba5b8[_0x435e('0x3c')],_0x5cbb4d,_0x9ba5b8['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x1eb58f,'OData-Version':_0x435e('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x9ba5b8['ticketType']===_0x435e('0x3d')){_0xf094f9={'method':_0x435e('0xb'),'uri':_0x3e7226+_0x435e('0x3e'),'body':Object[_0x435e('0x38')]({},{'subject':intUtil[_0x435e('0x39')](_0x9ba5b8['Subjects'],_0x5cbb4d,'\x20'),'phonenumber':String(_0x5cbb4d['calleridnum']),'description':intUtil['getString'](_0x9ba5b8['Descriptions'],_0x5cbb4d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x435e('0x3b')+_0x3bc5fe[_0x435e('0x2a')]+')','ownerid@odata.bind':'/systemusers('+_0x3bc5fe[_0x435e('0x1e')]+')','directioncode':_0x3bc5fe[_0x435e('0x3f')]===_0x435e('0x40')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x3bc5fe[_0x435e('0x1e')]+')','participationtypemask':_0x3bc5fe[_0x435e('0x3f')]===_0x435e('0x40')?0x2:0x1},{'partyid_contact@odata.bind':_0x435e('0x3b')+_0x3bc5fe[_0x435e('0x2a')]+')','participationtypemask':_0x3bc5fe['callDirection']===_0x435e('0x40')?0x1:0x2}]},getCustomFields(_0x9ba5b8[_0x435e('0x3c')],_0x5cbb4d,_0x9ba5b8[_0x435e('0x41')])),'headers':{'Authorization':'Bearer\x20'+_0x1eb58f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xf094f9);})[_0x435e('0xd')](function(_0x12b2c2){var _0x58569d=_0x12b2c2['headers'][_0x435e('0x28')];var _0x41c550=_0x58569d[_0x435e('0x33')](_0x58569d[_0x435e('0x29')]('(')+0x1,_0x58569d['lastIndexOf'](')'));_0x3bc5fe['ticketId']=_0x41c550;_0x30a34d(_0x3bc5fe);})[_0x435e('0xf')](function(_0x15d772){_0x34403c(_0x15d772[_0x435e('0x13')]);});});}function emit(_0x5e9914,_0x502c09,_0x3f08e5,_0x4f7c92){var _0x19bd4d={'uri':util[_0x435e('0x42')](_0x435e('0x43'),_0x5e9914,_0x3f08e5,_0x4f7c92)};io['to'](util[_0x435e('0x42')](_0x435e('0x44'),_0x502c09))[_0x435e('0x45')](_0x435e('0x46'),_0x19bd4d);}exports['cs']=function(_0x4ae09f,_0x1a0b4e,_0x2468f1,_0x1b1e18,_0x9bf85e,_0x4263c4,_0xa5ad97,_0x2758d2){var _0x32f336={};_0x4263c4[_0x435e('0x47')]=intUtil[_0x435e('0x48')](_0x4263c4['remoteUri']);_0x4263c4['serverUrl']=intUtil['stripTrailingSlash'](_0x4263c4[_0x435e('0x49')]);_0x32f336[_0x435e('0x3f')]=_0x2758d2===_0x435e('0x40')||_0x2758d2===_0x435e('0x4a')?_0x435e('0x40'):_0x435e('0x22');var _0x5e4f77=util['format']('%s/api/data/v9.0/',_0x4263c4[_0x435e('0x47')]);var _0x40e25e=util[_0x435e('0x42')](_0x435e('0x4b'),_0x4263c4[_0x435e('0x4c')]);var _0x3c5e1a=util[_0x435e('0x42')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4263c4[_0x435e('0x49')],_0x1a0b4e[_0x435e('0x4d')],md5(_0x1a0b4e[_0x435e('0x4d')]));if(_0x9bf85e&&_0x9bf85e[_0x435e('0x4e')]){logger['info']('[QUEUE]',_0x435e('0x4f'));_0x1a0b4e['recordingURL']=_0x3c5e1a;}else if(_0xa5ad97&&_0xa5ad97[_0x435e('0x50')]&&_0xa5ad97[_0x435e('0x50')]!==_0x435e('0x51')){logger['info']('[OUTBOUND]',_0x435e('0x4f'));_0x1a0b4e[_0x435e('0x52')]=_0x3c5e1a;}else{_0x1a0b4e[_0x435e('0x52')]='';}return getUser(_0x32f336,_0x4263c4,_0x1b1e18,_0x40e25e,_0x5e4f77,_0x2758d2)[_0x435e('0xd')](function(_0x358d9c){logger['info']('['+_0x2758d2['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x358d9c['userId']);logger[_0x435e('0x1b')]('['+_0x2758d2[_0x435e('0x11')]()+_0x435e('0x53'),_0x358d9c[_0x435e('0x19')]);return getEndUser(_0x358d9c,_0x4263c4,_0x40e25e,_0x5e4f77,_0x1a0b4e,_0x2758d2);})[_0x435e('0xd')](function(_0x233cc1){logger[_0x435e('0x1b')]('['+_0x2758d2[_0x435e('0x11')]()+_0x435e('0x54'),_0x233cc1[_0x435e('0x2a')]);logger[_0x435e('0x1b')]('['+_0x2758d2[_0x435e('0x11')]()+_0x435e('0x55'),_0x1a0b4e[_0x435e('0x24')]);return getTicket(_0x233cc1,_0x4263c4,_0x40e25e,_0x5e4f77,_0x1a0b4e,_0x2468f1,_0x2758d2);})[_0x435e('0xd')](function(_0xd7a0bb){logger[_0x435e('0x1b')](util[_0x435e('0x42')]('['+_0x2758d2['toUpperCase']()+_0x435e('0x56'),_0x2468f1[_0x435e('0x41')],_0xd7a0bb[_0x435e('0x57')]));logger[_0x435e('0x1b')](util[_0x435e('0x42')]('['+_0x2758d2[_0x435e('0x11')]()+_0x435e('0x58'),_0x2758d2));if(_0x2758d2!==_0x435e('0x4a')){logger[_0x435e('0x1b')]('['+_0x2758d2[_0x435e('0x11')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x4263c4[_0x435e('0x47')],_0x1b1e18[_0x435e('0x59')],_0x2468f1[_0x435e('0x41')],_0xd7a0bb[_0x435e('0x57')]);}})[_0x435e('0xf')](function(_0x52d079){logger[_0x435e('0x10')]('['+_0x2758d2[_0x435e('0x11')]()+_0x435e('0x5a'),util['inspect'](_0x52d079,{'showHidden':!![],'depth':null}));});};