Built motion from commit d1eab355.|2.6.28
[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 _0x7ce5=['serverUrl','%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','info','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data5','POST','clientId','username','password','then','access_token','error','toUpperCase','message','GET','Bearer\x20','4.0','isNil','validateEmail','userEmail','email','length','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','catch','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','replace','%2b','value','nothing',']\x20Enduser\x20created!','includes','picklist','type','nameField','idField','substring','indexOf','content','ticketType','incident','incidents','assign','getString','/contacts(','Fields','callDirection','queue','Subjects','Descriptions','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash'];(function(_0x279368,_0x41c002){var _0x40b6d0=function(_0x493776){while(--_0x493776){_0x279368['push'](_0x279368['shift']());}};_0x40b6d0(++_0x41c002);}(_0x7ce5,0x7c));var _0x57ce=function(_0x101ac1,_0x3119de){_0x101ac1=_0x101ac1-0x0;var _0x3907a1=_0x7ce5[_0x101ac1];return _0x3907a1;};'use strict';var _=require('lodash');var rp=require(_0x57ce('0x0'));var util=require(_0x57ce('0x1'));var intUtil=require(_0x57ce('0x2'));var md5=require(_0x57ce('0x3'));var Redis=require(_0x57ce('0x4'));var logger=require(_0x57ce('0x5'))(_0x57ce('0x6'));var config=require(_0x57ce('0x7'));config[_0x57ce('0x8')]=_[_0x57ce('0x9')](config[_0x57ce('0x8')],{'host':_0x57ce('0xa'),'port':0x18eb});var io=require(_0x57ce('0xb'))(new Redis(config[_0x57ce('0x8')]));function getAuthToken(_0x3f4b2c,_0x10deb0,_0x427181){if(_0x3f4b2c[_0x57ce('0xc')]){_0x3f4b2c[_0x57ce('0xd')]=_0x3f4b2c[_0x57ce('0xe')][_0x57ce('0xf')];_0x3f4b2c[_0x57ce('0x10')]=_0x3f4b2c['CloudProvider']['data2'];return Promise['resolve'](_0x3f4b2c['CloudProvider'][_0x57ce('0x11')]);}var _0x16a22d={'method':_0x57ce('0x12'),'uri':_0x10deb0,'form':{'client_id':_0x3f4b2c[_0x57ce('0x13')],'resource':_0x3f4b2c[_0x57ce('0xd')],'username':_0x3f4b2c[_0x57ce('0x14')],'password':_0x3f4b2c['password'],'grant_type':_0x57ce('0x15'),'client_secret':_0x3f4b2c['clientSecret']},'json':!![]};return rp(_0x16a22d)[_0x57ce('0x16')](function(_0x3e4718){return _0x3e4718[_0x57ce('0x17')];})['catch'](function(_0x26b713){logger[_0x57ce('0x18')]('['+[_0x427181[_0x57ce('0x19')]()]+']\x20Wrong\x20credentials!');return _0x26b713[_0x57ce('0x1a')];});}function getUser(_0x173387,_0x5a5a03,_0x1aa6ed,_0x4b66c3,_0x319acf,_0x314186){return new Promise(function(_0x47ad6e,_0x514840){return getAuthToken(_0x5a5a03,_0x4b66c3,_0x314186)[_0x57ce('0x16')](function(_0x183404){var _0x109434={'method':_0x57ce('0x1b'),'uri':_0x319acf+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x57ce('0x1c')+_0x183404,'OData-Version':_0x57ce('0x1d')},'json':!![]};return rp(_0x109434);})[_0x57ce('0x16')](function(_0x4c2308){var _0x4e2762=_0x4c2308['value'];var _0x7d6780=![];var _0x1cc9aa=null;if(!_[_0x57ce('0x1e')](_0x1aa6ed)){if(intUtil[_0x57ce('0x1f')](_0x1aa6ed['email'])){_0x173387[_0x57ce('0x20')]=_0x1aa6ed[_0x57ce('0x21')];for(_0x1cc9aa=0x0;_0x1cc9aa<_0x4e2762[_0x57ce('0x22')];_0x1cc9aa++){if(_0x4e2762[_0x1cc9aa][_0x57ce('0x23')]===_0x1aa6ed['email']&&!_0x4e2762[_0x1cc9aa][_0x57ce('0x24')]){_0x7d6780=!![];logger['info']('['+[_0x314186[_0x57ce('0x19')]()]+_0x57ce('0x25')+_0x4e2762[_0x1cc9aa]['systemuserid']+'!');_0x173387[_0x57ce('0x26')]=_0x4e2762[_0x1cc9aa][_0x57ce('0x27')];}}}}if(!_0x7d6780){logger['info']('['+[_0x314186[_0x57ce('0x19')]()]+_0x57ce('0x28'));_0x173387[_0x57ce('0x20')]=_0x5a5a03[_0x57ce('0x14')];for(_0x1cc9aa=0x0;_0x1cc9aa<_0x4e2762[_0x57ce('0x22')];_0x1cc9aa++){if(_0x4e2762[_0x1cc9aa]['internalemailaddress']===_0x5a5a03['username']){_0x173387['userId']=_0x4e2762[_0x1cc9aa]['systemuserid'];}}}_0x47ad6e(_0x173387);})[_0x57ce('0x29')](function(_0x20e425){_0x514840(_0x20e425[_0x57ce('0x1a')]);});});}function createEndUser(_0x24bfcd,_0x1b5792,_0x22f309,_0x10d005,_0x31fb88,_0x320ab2,_0x966548){return new Promise(function(_0x3777fb,_0x24d391){return getAuthToken(_0x1b5792,_0x22f309,_0x320ab2)[_0x57ce('0x16')](function(_0x5d5924){var _0xd8c288=_0x320ab2[_0x57ce('0x2a')]()===_0x57ce('0x2b')?_0x31fb88[_0x57ce('0x2c')]:_0x31fb88[_0x57ce('0x2d')];var _0x2c5f09={'method':'POST','uri':_0x10d005+_0x57ce('0x2e'),'body':{'fullname':_0xd8c288,'firstname':_0xd8c288,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x57ce('0x2f')+_0x24bfcd[_0x57ce('0x26')]+')'},'headers':{'Authorization':_0x57ce('0x1c')+_0x5d5924,'OData-Version':_0x57ce('0x1d')},'json':!![],'resolveWithFullResponse':!![]};_0x2c5f09['body'][_0x966548]=_0xd8c288;return rp(_0x2c5f09);})[_0x57ce('0x16')](function(_0x57564e){var _0x51c456=_0x57564e[_0x57ce('0x30')][_0x57ce('0x31')];var _0x1cc597=_0x51c456['substring'](_0x51c456[_0x57ce('0x32')]('(')+0x1,_0x51c456[_0x57ce('0x32')](')'));_0x24bfcd[_0x57ce('0x33')]=_0x1cc597;_0x3777fb(_0x24bfcd);})['catch'](function(_0x81dc22){_0x24d391(_0x81dc22[_0x57ce('0x1a')]);});});}function getEndUser(_0x3bb2a2,_0x1b1417,_0x1ce923,_0x492247,_0x3520b2,_0x1ca262,_0x5a5c88,_0x1a9339){var _0x444786=_0x1ca262[_0x57ce('0x2a')]()==='outbound'?_0x3520b2[_0x57ce('0x2c')]:_0x3520b2[_0x57ce('0x2d')];return getAuthToken(_0x1b1417,_0x1ce923,_0x1ca262)[_0x57ce('0x16')](function(_0x3b0762){_0x1a9339=_0x1a9339?_0x1a9339:_0x57ce('0x34');var _0x181183={'method':_0x57ce('0x1b'),'uri':_0x492247+_0x57ce('0x35')+_0x1a9339+_0x57ce('0x36')+_0x1a9339+'\x20eq\x20\x27'+_0x444786[_0x57ce('0x37')]('+',_0x57ce('0x38'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x3b0762,'If-None-Match':null,'OData-Version':_0x57ce('0x1d')},'json':!![]};return rp(_0x181183);})[_0x57ce('0x16')](function(_0x43f527){var _0x2cf489=![];if(!_0x43f527)return _0x2cf489;var _0x5bc568=_0x43f527[_0x57ce('0x39')];for(var _0x23c0f6=0x0;_0x23c0f6<_0x5bc568['length'];_0x23c0f6++){if(_0x5bc568[_0x23c0f6][_0x1a9339]===_0x444786){_0x2cf489=!![];_0x3bb2a2[_0x57ce('0x33')]=_0x5bc568[_0x23c0f6]['contactid'];}}return _0x2cf489;})[_0x57ce('0x16')](function(_0x46b2f7){if(_0x46b2f7)return _0x3bb2a2;if(_0x5a5c88===_0x57ce('0x3a')){logger['info']('['+[_0x1ca262['toUpperCase']()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x3bb2a2;}return createEndUser(_0x3bb2a2,_0x1b1417,_0x1ce923,_0x492247,_0x3520b2,_0x1ca262,_0x1a9339)[_0x57ce('0x16')](function(_0x21876e){logger['info']('['+[_0x1ca262[_0x57ce('0x19')]()]+_0x57ce('0x3b'),_0x21876e['enduserId']);return _0x21876e;});});}function getCustomFields(_0x3c72ae,_0x21b98a,_0x2422f8){var _0x36da86={};if(_0x3c72ae['length']>0x0){_['forEach'](_0x3c72ae,function(_0x4d922c){if(_[_0x57ce('0x3c')](['string',_0x57ce('0x3d')],_0x4d922c[_0x57ce('0x3e')])&&_0x4d922c[_0x57ce('0x3f')]&&!_0x4d922c['customField']){var _0x56012b=_0x4d922c[_0x57ce('0x40')]['toLowerCase']();var _0x2df6d1=_0x56012b[_0x57ce('0x41')](0x0,_0x56012b[_0x57ce('0x42')]('_'));var _0x5ccb41=_0x56012b['substring'](_0x56012b[_0x57ce('0x42')]('_')+0x1);if(_0x2df6d1===_0x2422f8){_0x36da86[_0x5ccb41]=_0x4d922c[_0x57ce('0x43')];}}});}return _0x36da86;}function getTicket(_0x1d2645,_0x19f2bd,_0x1b00e4,_0x238f68,_0x3b664d,_0x24dae1,_0x29ac0e){return new Promise(function(_0x1ab10c,_0x2aea00){var _0x10cedd;return getAuthToken(_0x19f2bd,_0x1b00e4,_0x29ac0e)[_0x57ce('0x16')](function(_0x3da49a){if(_0x24dae1[_0x57ce('0x44')]===_0x57ce('0x45')){_0x10cedd={'method':'POST','uri':_0x238f68+_0x57ce('0x46'),'body':Object[_0x57ce('0x47')]({},{'title':intUtil['getString'](_0x24dae1['Subjects'],_0x3b664d,'\x20'),'description':intUtil[_0x57ce('0x48')](_0x24dae1['Descriptions'],_0x3b664d,'\x0a'),'customerid_contact@odata.bind':_0x1d2645['enduserId']?_0x57ce('0x49')+_0x1d2645[_0x57ce('0x33')]+')':undefined,'ownerid@odata.bind':_0x57ce('0x2f')+_0x1d2645[_0x57ce('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x24dae1[_0x57ce('0x4a')],_0x3b664d,_0x24dae1[_0x57ce('0x44')])),'headers':{'Authorization':_0x57ce('0x1c')+_0x3da49a,'OData-Version':_0x57ce('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x24dae1[_0x57ce('0x44')]==='phonecall'){var _0x543595=_0x1d2645['enduserId']?[{'partyid_systemuser@odata.bind':_0x57ce('0x2f')+_0x1d2645[_0x57ce('0x26')]+')','participationtypemask':_0x1d2645['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x57ce('0x49')+_0x1d2645[_0x57ce('0x33')]+')','participationtypemask':_0x1d2645[_0x57ce('0x4b')]===_0x57ce('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x57ce('0x2f')+_0x1d2645[_0x57ce('0x26')]+')','participationtypemask':_0x1d2645[_0x57ce('0x4b')]===_0x57ce('0x4c')?0x2:0x1}];_0x10cedd={'method':_0x57ce('0x12'),'uri':_0x238f68+'phonecalls','body':Object[_0x57ce('0x47')]({},{'subject':intUtil['getString'](_0x24dae1[_0x57ce('0x4d')],_0x3b664d,'\x20'),'phonenumber':String(_0x3b664d[_0x57ce('0x2d')]),'description':intUtil[_0x57ce('0x48')](_0x24dae1[_0x57ce('0x4e')],_0x3b664d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1d2645[_0x57ce('0x33')]?'/contacts('+_0x1d2645[_0x57ce('0x33')]+')':undefined,'ownerid@odata.bind':_0x57ce('0x2f')+_0x1d2645['userId']+')','directioncode':_0x1d2645['callDirection']===_0x57ce('0x4c')?![]:!![],'phonecall_activity_parties':_0x543595},getCustomFields(_0x24dae1[_0x57ce('0x4a')],_0x3b664d,_0x24dae1[_0x57ce('0x44')])),'headers':{'Authorization':'Bearer\x20'+_0x3da49a,'OData-Version':_0x57ce('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x10cedd);})[_0x57ce('0x16')](function(_0x11dae8){var _0x494d82=_0x11dae8[_0x57ce('0x30')][_0x57ce('0x31')];var _0x2a943b=_0x494d82[_0x57ce('0x41')](_0x494d82[_0x57ce('0x32')]('(')+0x1,_0x494d82['lastIndexOf'](')'));_0x1d2645[_0x57ce('0x4f')]=_0x2a943b;_0x1ab10c(_0x1d2645);})[_0x57ce('0x29')](function(_0x16f26a){_0x2aea00(_0x16f26a['message']);});});}function emit(_0x53b359,_0xa07a62,_0x15a9ad,_0x260d31){var _0x3179ee={'uri':util[_0x57ce('0x50')](_0x57ce('0x51'),_0x53b359,_0x15a9ad,_0x260d31)};io['to'](util[_0x57ce('0x50')](_0x57ce('0x52'),_0xa07a62))[_0x57ce('0x53')](_0x57ce('0x54'),_0x3179ee);}exports['cs']=function(_0x1c6f03,_0x588e38,_0x47b59d,_0x2d29cb,_0xd89301,_0xfa70a9,_0x30d65d,_0x41973c){var _0x37b2a8={};_0xfa70a9[_0x57ce('0xd')]=_0xfa70a9[_0x57ce('0xc')]?intUtil[_0x57ce('0x55')](_0xfa70a9[_0x57ce('0xe')]['data7']):intUtil[_0x57ce('0x55')](_0xfa70a9[_0x57ce('0xd')]);_0xfa70a9[_0x57ce('0x56')]=intUtil['stripTrailingSlash'](_0xfa70a9[_0x57ce('0x56')]);_0x37b2a8[_0x57ce('0x4b')]=_0x41973c===_0x57ce('0x4c')||_0x41973c==='unmanaged'?_0x57ce('0x4c'):_0x57ce('0x2b');var _0x365d24=_0xfa70a9[_0x57ce('0xc')]?util[_0x57ce('0x50')](_0x57ce('0x57'),_0xfa70a9[_0x57ce('0xe')][_0x57ce('0xf')]):util[_0x57ce('0x50')](_0x57ce('0x57'),_0xfa70a9['remoteUri']);var _0x59daaa=util['format'](_0x57ce('0x58'),_0xfa70a9[_0x57ce('0x10')]);var _0x5e921e=util['format'](_0x57ce('0x59'),_0xfa70a9[_0x57ce('0x56')],_0x588e38['uniqueid'],md5(_0x588e38[_0x57ce('0x5a')]));if(_0xd89301&&_0xd89301[_0x57ce('0x5b')]){logger[_0x57ce('0x5c')](_0x57ce('0x5d'),_0x57ce('0x5e'));_0x588e38[_0x57ce('0x5f')]=_0x5e921e;}else if(_0x30d65d&&_0x30d65d[_0x57ce('0x60')]&&_0x30d65d[_0x57ce('0x60')]!=='none'){logger[_0x57ce('0x5c')](_0x57ce('0x61'),_0x57ce('0x5e'));_0x588e38[_0x57ce('0x5f')]=_0x5e921e;}else{_0x588e38['recordingURL']='';}return getUser(_0x37b2a8,_0xfa70a9,_0x2d29cb,_0x59daaa,_0x365d24,_0x41973c)[_0x57ce('0x16')](function(_0x762f03){logger[_0x57ce('0x5c')]('['+_0x41973c[_0x57ce('0x19')]()+_0x57ce('0x62'),_0x762f03['userId']);logger[_0x57ce('0x5c')]('['+_0x41973c[_0x57ce('0x19')]()+_0x57ce('0x63'),_0x762f03[_0x57ce('0x20')]);return getEndUser(_0x762f03,_0xfa70a9,_0x59daaa,_0x365d24,_0x588e38,_0x41973c,_0x47b59d[_0x57ce('0x64')],_0x47b59d['additionalSearchContact']);})['then'](function(_0x527820){logger['info']('['+_0x41973c[_0x57ce('0x19')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x527820[_0x57ce('0x33')]);logger[_0x57ce('0x5c')]('['+_0x41973c[_0x57ce('0x19')]()+_0x57ce('0x65'),_0x588e38['calleridnum']);return getTicket(_0x527820,_0xfa70a9,_0x59daaa,_0x365d24,_0x588e38,_0x47b59d,_0x41973c);})[_0x57ce('0x16')](function(_0x56a40d){logger[_0x57ce('0x5c')](util['format']('['+_0x41973c[_0x57ce('0x19')]()+_0x57ce('0x66'),_0x47b59d['ticketType'],_0x56a40d[_0x57ce('0x4f')]));logger[_0x57ce('0x5c')](util[_0x57ce('0x50')]('['+_0x41973c[_0x57ce('0x19')]()+_0x57ce('0x67'),_0x41973c));if(_0x41973c!=='unmanaged'&&_0x47b59d['openNewTab']){logger['info']('['+_0x41973c[_0x57ce('0x19')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0xfa70a9[_0x57ce('0xd')],_0x2d29cb['name'],_0x47b59d['ticketType'],_0x56a40d[_0x57ce('0x4f')]);}})[_0x57ce('0x29')](function(_0x18f3cd){logger[_0x57ce('0x18')]('['+_0x41973c[_0x57ce('0x19')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x18f3cd[_0x57ce('0x1a')]);console[_0x57ce('0x18')](_0x57ce('0x68'),_0x18f3cd);});};