Built motion from commit (unavailable).|2.3.97
[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 _0x00d6=['redis','defaults','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','value','email','length','isdisabled','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','internalemailaddress','toLowerCase','outbound','destcalleridnum','/systemusers(','headers','odata-entityid','substring','lastIndexOf','GET','contacts?$select=telephone1','Bearer\x20','calleridnum','telephone1','contactid','info',']\x20Enduser\x20created!','enduserId','forEach','string','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','serverUrl','abandoned','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%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:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment'];(function(_0x216f7d,_0x496249){var _0xc49d7f=function(_0x27be52){while(--_0x27be52){_0x216f7d['push'](_0x216f7d['shift']());}};_0xc49d7f(++_0x496249);}(_0x00d6,0x1e5));var _0x600d=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x00d6[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0x600d('0x0'));var BPromise=require(_0x600d('0x1'));var rp=require(_0x600d('0x2'));var util=require(_0x600d('0x3'));var intUtil=require(_0x600d('0x4'));var md5=require(_0x600d('0x5'));var Redis=require(_0x600d('0x6'));var logger=require(_0x600d('0x7'))(_0x600d('0x8'));var config=require(_0x600d('0x9'));config[_0x600d('0xa')]=_[_0x600d('0xb')](config[_0x600d('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x600d('0xa')]));function getAuthToken(_0x5de536,_0x260fc9,_0x1c2655){var _0x150acd={'method':_0x600d('0xc'),'uri':_0x260fc9,'form':{'client_id':_0x5de536[_0x600d('0xd')],'resource':_0x5de536[_0x600d('0xe')],'username':_0x5de536[_0x600d('0xf')],'password':_0x5de536[_0x600d('0x10')],'grant_type':'password','client_secret':_0x5de536[_0x600d('0x11')]},'json':!![]};return rp(_0x150acd)[_0x600d('0x12')](function(_0x86c372){return _0x86c372[_0x600d('0x13')];})[_0x600d('0x14')](function(_0x5264fd){logger['error']('['+[_0x1c2655[_0x600d('0x15')]()]+_0x600d('0x16'));return _0x5264fd[_0x600d('0x17')];});}function getUser(_0x91d0f2,_0x3a7aa9,_0x207862,_0x692546,_0x3f95f9,_0x576a3f){return new BPromise(function(_0x386674,_0x28cfbc){return getAuthToken(_0x3a7aa9,_0x692546,_0x576a3f)[_0x600d('0x12')](function(_0x15c76d){var _0x192a45={'method':'GET','uri':_0x3f95f9+_0x600d('0x18'),'headers':{'Authorization':'Bearer\x20'+_0x15c76d,'OData-Version':_0x600d('0x19')},'json':!![]};return rp(_0x192a45);})['then'](function(_0x263476){var _0x441b5f=_0x263476[_0x600d('0x1a')];var _0x32d31a=![];var _0x34be3c=null;if(!_['isNil'](_0x207862)){if(intUtil['validateEmail'](_0x207862[_0x600d('0x1b')])){_0x91d0f2['userEmail']=_0x207862['email'];for(_0x34be3c=0x0;_0x34be3c<_0x441b5f[_0x600d('0x1c')];_0x34be3c++){if(_0x441b5f[_0x34be3c]['internalemailaddress']===_0x207862[_0x600d('0x1b')]&&!_0x441b5f[_0x34be3c][_0x600d('0x1d')]){_0x32d31a=!![];logger['info']('['+[_0x576a3f[_0x600d('0x15')]()]+']\x20Agent\x20found\x20'+_0x441b5f[_0x34be3c][_0x600d('0x1e')]+'!');_0x91d0f2[_0x600d('0x1f')]=_0x441b5f[_0x34be3c]['systemuserid'];}}}}if(!_0x32d31a){logger['info']('['+[_0x576a3f['toUpperCase']()]+_0x600d('0x20'));_0x91d0f2[_0x600d('0x21')]=_0x3a7aa9[_0x600d('0xf')];for(_0x34be3c=0x0;_0x34be3c<_0x441b5f[_0x600d('0x1c')];_0x34be3c++){if(_0x441b5f[_0x34be3c][_0x600d('0x22')]===_0x3a7aa9['username']){_0x91d0f2['userId']=_0x441b5f[_0x34be3c][_0x600d('0x1e')];}}}_0x386674(_0x91d0f2);})[_0x600d('0x14')](function(_0x42610d){_0x28cfbc(_0x42610d[_0x600d('0x17')]);});});}function createEndUser(_0x5c6694,_0x19f8f8,_0x5636c1,_0x2cc5c4,_0x2909b0,_0x30659b){return new BPromise(function(_0x40415d,_0x5edeb7){return getAuthToken(_0x19f8f8,_0x5636c1,_0x30659b)[_0x600d('0x12')](function(_0x2ca864){var _0x2e8eab=_0x30659b[_0x600d('0x23')]()===_0x600d('0x24')?_0x2909b0[_0x600d('0x25')]:_0x2909b0['calleridnum'];var _0x4b0d3c={'method':'POST','uri':_0x2cc5c4+'contacts','body':{'telephone1':_0x2e8eab,'fullname':_0x2e8eab,'firstname':_0x2e8eab,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x600d('0x26')+_0x5c6694['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x2ca864,'OData-Version':_0x600d('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4b0d3c);})['then'](function(_0x53161a){var _0x268190=_0x53161a[_0x600d('0x27')][_0x600d('0x28')];var _0x21a4e8=_0x268190[_0x600d('0x29')](_0x268190[_0x600d('0x2a')]('(')+0x1,_0x268190[_0x600d('0x2a')](')'));_0x5c6694['enduserId']=_0x21a4e8;_0x40415d(_0x5c6694);})[_0x600d('0x14')](function(_0x24e43a){_0x5edeb7(_0x24e43a['message']);});});}function getEndUser(_0xefb8c4,_0x457e19,_0x306c06,_0x515640,_0x114f60,_0x2a4e76){return new BPromise(function(_0x403030,_0x2f2dac){return getAuthToken(_0x457e19,_0x306c06,_0x2a4e76)[_0x600d('0x12')](function(_0x9558db){var _0x300884={'method':_0x600d('0x2b'),'uri':_0x515640+_0x600d('0x2c'),'headers':{'Authorization':_0x600d('0x2d')+_0x9558db,'If-None-Match':null,'OData-Version':_0x600d('0x19')},'json':!![]};return rp(_0x300884);})['then'](function(_0x3e3793){var _0x269017=null;if(_0x3e3793){var _0x3cebb2=_0x3e3793[_0x600d('0x1a')];var _0x297726=![];for(_0x269017=0x0;_0x269017<_0x3cebb2[_0x600d('0x1c')];_0x269017++){var _0x7eb43d=_0x2a4e76[_0x600d('0x23')]()==='outbound'?_0x114f60['destcalleridnum']:_0x114f60[_0x600d('0x2e')];if(_0x3cebb2[_0x269017][_0x600d('0x2f')]===_0x7eb43d){_0x297726=!![];_0xefb8c4['enduserId']=_0x3cebb2[_0x269017][_0x600d('0x30')];}}if(_0x297726){_0x403030(_0xefb8c4);}else{return createEndUser(_0xefb8c4,_0x457e19,_0x306c06,_0x515640,_0x114f60,_0x2a4e76)[_0x600d('0x12')](function(_0x521ffc){logger[_0x600d('0x31')]('['+[_0x2a4e76[_0x600d('0x15')]()]+_0x600d('0x32'),_0x521ffc[_0x600d('0x33')]);_0x403030(_0x521ffc);});}}else{return createEndUser(_0xefb8c4,_0x457e19,_0x306c06,_0x515640,_0x114f60,_0x2a4e76)['then'](function(_0x43f930){logger['info']('['+[_0x2a4e76[_0x600d('0x15')]()]+']\x20Enduser\x20Created!',_0x43f930['enduserId']);_0x403030(_0x43f930);});}});});}function getCustomFields(_0x4618cb,_0x3a98eb,_0x58227d){var _0xdd747c={};if(_0x4618cb[_0x600d('0x1c')]>0x0){_[_0x600d('0x34')](_0x4618cb,function(_0x9aec6f){if(_0x9aec6f['type']===_0x600d('0x35')&&_0x9aec6f[_0x600d('0x36')]&&!_0x9aec6f[_0x600d('0x37')]){var _0x1946b6=_0x9aec6f[_0x600d('0x38')][_0x600d('0x23')]();var _0x4c27ed=_0x1946b6[_0x600d('0x29')](0x0,_0x1946b6[_0x600d('0x39')]('_'));var _0x370781=_0x1946b6[_0x600d('0x29')](_0x1946b6[_0x600d('0x39')]('_')+0x1);if(_0x4c27ed===_0x58227d){_0xdd747c[_0x370781]=_0x9aec6f[_0x600d('0x3a')];}}});}return _0xdd747c;}function getTicket(_0x51aefb,_0x162927,_0x4694c5,_0x1b8a8f,_0x3c3fb4,_0x8a5fc1,_0x42fd3a){return new BPromise(function(_0x612eb6,_0x5ebc8e){var _0x4c7e13;return getAuthToken(_0x162927,_0x4694c5,_0x42fd3a)['then'](function(_0xc09577){if(_0x8a5fc1[_0x600d('0x3b')]===_0x600d('0x3c')){_0x4c7e13={'method':_0x600d('0xc'),'uri':_0x1b8a8f+_0x600d('0x3d'),'body':Object[_0x600d('0x3e')]({},{'title':intUtil[_0x600d('0x3f')](_0x8a5fc1[_0x600d('0x40')],_0x3c3fb4,'\x20'),'description':intUtil[_0x600d('0x3f')](_0x8a5fc1[_0x600d('0x41')],_0x3c3fb4,'\x0a'),'customerid_contact@odata.bind':_0x600d('0x42')+_0x51aefb[_0x600d('0x33')]+')','ownerid@odata.bind':_0x600d('0x26')+_0x51aefb['userId']+')','caseorigincode':'1'},getCustomFields(_0x8a5fc1[_0x600d('0x43')],_0x3c3fb4,_0x8a5fc1[_0x600d('0x3b')])),'headers':{'Authorization':_0x600d('0x2d')+_0xc09577,'OData-Version':_0x600d('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x8a5fc1[_0x600d('0x3b')]===_0x600d('0x44')){_0x4c7e13={'method':'POST','uri':_0x1b8a8f+_0x600d('0x45'),'body':Object[_0x600d('0x3e')]({},{'subject':intUtil[_0x600d('0x3f')](_0x8a5fc1[_0x600d('0x40')],_0x3c3fb4,'\x20'),'phonenumber':String(_0x3c3fb4[_0x600d('0x2e')]),'description':intUtil['getString'](_0x8a5fc1[_0x600d('0x41')],_0x3c3fb4,'\x0a'),'regardingobjectid_contact@odata.bind':_0x600d('0x42')+_0x51aefb[_0x600d('0x33')]+')','ownerid@odata.bind':_0x600d('0x26')+_0x51aefb['userId']+')','directioncode':_0x51aefb[_0x600d('0x46')]===_0x600d('0x47')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x600d('0x26')+_0x51aefb[_0x600d('0x1f')]+')','participationtypemask':_0x51aefb[_0x600d('0x46')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x600d('0x42')+_0x51aefb[_0x600d('0x33')]+')','participationtypemask':_0x51aefb[_0x600d('0x46')]===_0x600d('0x47')?0x1:0x2}]},getCustomFields(_0x8a5fc1[_0x600d('0x43')],_0x3c3fb4,_0x8a5fc1[_0x600d('0x3b')])),'headers':{'Authorization':_0x600d('0x2d')+_0xc09577,'OData-Version':_0x600d('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4c7e13);})[_0x600d('0x12')](function(_0x2c75b7){var _0x28cc1e=_0x2c75b7[_0x600d('0x27')]['odata-entityid'];var _0x35d0bd=_0x28cc1e['substring'](_0x28cc1e[_0x600d('0x2a')]('(')+0x1,_0x28cc1e['lastIndexOf'](')'));_0x51aefb[_0x600d('0x48')]=_0x35d0bd;_0x612eb6(_0x51aefb);})['catch'](function(_0x22ebcc){_0x5ebc8e(_0x22ebcc['message']);});});}function emit(_0x44b9e5,_0x2ff9a8,_0x2e012d,_0x387812){var _0x4ceaf9={'uri':util['format'](_0x600d('0x49'),_0x44b9e5,_0x2e012d,_0x387812)};io['to'](util[_0x600d('0x4a')](_0x600d('0x4b'),_0x2ff9a8))['emit']('trigger:browser:url',_0x4ceaf9);}exports['cs']=function(_0x543e34,_0x1d91ed,_0x41a05c,_0xb5a3a,_0x43b5ef,_0x3719c6,_0x57fefa,_0x278455){var _0x188b32={};_0x3719c6[_0x600d('0xe')]=intUtil['stripTrailingSlash'](_0x3719c6[_0x600d('0xe')]);_0x3719c6[_0x600d('0x4c')]=intUtil['stripTrailingSlash'](_0x3719c6[_0x600d('0x4c')]);_0x188b32[_0x600d('0x46')]=_0x278455===_0x600d('0x47')||_0x278455===_0x600d('0x4d')?_0x600d('0x47'):'outbound';var _0x7654c8=util['format'](_0x600d('0x4e'),_0x3719c6[_0x600d('0xe')]);var _0x5573ec=util[_0x600d('0x4a')](_0x600d('0x4f'),_0x3719c6[_0x600d('0x50')]);var _0xc2b198=util[_0x600d('0x4a')](_0x600d('0x51'),_0x3719c6[_0x600d('0x4c')],_0x1d91ed[_0x600d('0x52')],md5(_0x1d91ed[_0x600d('0x52')]));if(_0x43b5ef&&_0x43b5ef[_0x600d('0x53')]){logger[_0x600d('0x31')](_0x600d('0x54'),_0x600d('0x55'));_0x1d91ed[_0x600d('0x56')]=_0xc2b198;}else if(_0x57fefa&&_0x57fefa[_0x600d('0x57')]&&_0x57fefa[_0x600d('0x57')]!==_0x600d('0x58')){logger[_0x600d('0x31')](_0x600d('0x59'),'Recording\x20is\x20enabled!');_0x1d91ed['recordingURL']=_0xc2b198;}else{_0x1d91ed[_0x600d('0x56')]='';}return getUser(_0x188b32,_0x3719c6,_0xb5a3a,_0x5573ec,_0x7654c8,_0x278455)[_0x600d('0x12')](function(_0x2659ca){logger[_0x600d('0x31')]('['+_0x278455['toUpperCase']()+_0x600d('0x5a'),_0x2659ca[_0x600d('0x1f')]);logger[_0x600d('0x31')]('['+_0x278455[_0x600d('0x15')]()+_0x600d('0x5b'),_0x2659ca[_0x600d('0x21')]);return getEndUser(_0x2659ca,_0x3719c6,_0x5573ec,_0x7654c8,_0x1d91ed,_0x278455);})[_0x600d('0x12')](function(_0x3e71ff){logger[_0x600d('0x31')]('['+_0x278455[_0x600d('0x15')]()+_0x600d('0x5c'),_0x3e71ff[_0x600d('0x33')]);logger['info']('['+_0x278455[_0x600d('0x15')]()+_0x600d('0x5d'),_0x1d91ed[_0x600d('0x2e')]);return getTicket(_0x3e71ff,_0x3719c6,_0x5573ec,_0x7654c8,_0x1d91ed,_0x41a05c,_0x278455);})[_0x600d('0x12')](function(_0x2f5600){logger[_0x600d('0x31')](util[_0x600d('0x4a')]('['+_0x278455[_0x600d('0x15')]()+_0x600d('0x5e'),_0x41a05c[_0x600d('0x3b')],_0x2f5600[_0x600d('0x48')]));logger[_0x600d('0x31')](util['format']('['+_0x278455[_0x600d('0x15')]()+']\x20Call\x20direction:\x20%s',_0x278455));if(_0x278455!=='abandoned'){logger[_0x600d('0x31')]('['+_0x278455['toUpperCase']()+']',_0x600d('0x5f'));emit(_0x3719c6[_0x600d('0xe')],_0xb5a3a[_0x600d('0x60')],_0x41a05c[_0x600d('0x3b')],_0x2f5600[_0x600d('0x48')]);}})['catch'](function(_0x59cacf){logger[_0x600d('0x61')]('['+_0x278455['toUpperCase']()+_0x600d('0x62'),util['inspect'](_0x59cacf,{'showHidden':!![],'depth':null}));});};