Built motion from commit 994c64e1.|2.6.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 _0x9d4c=['userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','outbound','destcalleridnum','contacts','/systemusers(','Bearer\x20','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','toLowerCase','calleridnum','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','getString','/contacts(','Fields','phonecall','callDirection','queue','assign','Descriptions','ticketId','format','user:%s','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','userEmail','moduleCreate',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','ioredis','../../../../config/logger','../../../../config/environment','redis','defaults','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','resolve','POST','clientId','username','password','clientSecret','then','access_token','catch','error','toUpperCase','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','value','validateEmail','email','length','info',']\x20Agent\x20found\x20'];(function(_0x13080c,_0x878006){var _0x228c66=function(_0x46a8fe){while(--_0x46a8fe){_0x13080c['push'](_0x13080c['shift']());}};_0x228c66(++_0x878006);}(_0x9d4c,0xaa));var _0xc9d4=function(_0x21a359,_0x4d8f55){_0x21a359=_0x21a359-0x0;var _0x375ce9=_0x9d4c[_0x21a359];return _0x375ce9;};'use strict';var _=require(_0xc9d4('0x0'));var rp=require(_0xc9d4('0x1'));var util=require('util');var intUtil=require(_0xc9d4('0x2'));var md5=require('md5');var Redis=require(_0xc9d4('0x3'));var logger=require(_0xc9d4('0x4'))('dynamics365');var config=require(_0xc9d4('0x5'));config[_0xc9d4('0x6')]=_[_0xc9d4('0x7')](config[_0xc9d4('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xc9d4('0x8'))(new Redis(config['redis']));function getAuthToken(_0x232d89,_0x5675ad,_0x8b7103){if(_0x232d89[_0xc9d4('0x9')]){_0x232d89[_0xc9d4('0xa')]=_0x232d89[_0xc9d4('0xb')][_0xc9d4('0xc')];_0x232d89['tenantId']=_0x232d89[_0xc9d4('0xb')]['data2'];return Promise[_0xc9d4('0xd')](_0x232d89[_0xc9d4('0xb')]['data5']);}var _0x134dc1={'method':_0xc9d4('0xe'),'uri':_0x5675ad,'form':{'client_id':_0x232d89[_0xc9d4('0xf')],'resource':_0x232d89[_0xc9d4('0xa')],'username':_0x232d89[_0xc9d4('0x10')],'password':_0x232d89[_0xc9d4('0x11')],'grant_type':_0xc9d4('0x11'),'client_secret':_0x232d89[_0xc9d4('0x12')]},'json':!![]};return rp(_0x134dc1)[_0xc9d4('0x13')](function(_0x20cb57){return _0x20cb57[_0xc9d4('0x14')];})[_0xc9d4('0x15')](function(_0x2e07f4){logger[_0xc9d4('0x16')]('['+[_0x8b7103[_0xc9d4('0x17')]()]+']\x20Wrong\x20credentials!');return _0x2e07f4[_0xc9d4('0x18')];});}function getUser(_0x4b4777,_0xdb59cb,_0x5e2393,_0x322aee,_0x180916,_0x5b9891){return new Promise(function(_0x2ce26b,_0x29f1cf){return getAuthToken(_0xdb59cb,_0x322aee,_0x5b9891)[_0xc9d4('0x13')](function(_0x475fc8){var _0x49bbf7={'method':'GET','uri':_0x180916+_0xc9d4('0x19'),'headers':{'Authorization':'Bearer\x20'+_0x475fc8,'OData-Version':'4.0'},'json':!![]};return rp(_0x49bbf7);})[_0xc9d4('0x13')](function(_0x3ebda6){var _0x16fa8f=_0x3ebda6[_0xc9d4('0x1a')];var _0x51af61=![];var _0x4e040d=null;if(!_['isNil'](_0x5e2393)){if(intUtil[_0xc9d4('0x1b')](_0x5e2393[_0xc9d4('0x1c')])){_0x4b4777['userEmail']=_0x5e2393[_0xc9d4('0x1c')];for(_0x4e040d=0x0;_0x4e040d<_0x16fa8f[_0xc9d4('0x1d')];_0x4e040d++){if(_0x16fa8f[_0x4e040d]['internalemailaddress']===_0x5e2393[_0xc9d4('0x1c')]&&!_0x16fa8f[_0x4e040d]['isdisabled']){_0x51af61=!![];logger[_0xc9d4('0x1e')]('['+[_0x5b9891[_0xc9d4('0x17')]()]+_0xc9d4('0x1f')+_0x16fa8f[_0x4e040d]['systemuserid']+'!');_0x4b4777[_0xc9d4('0x20')]=_0x16fa8f[_0x4e040d]['systemuserid'];}}}}if(!_0x51af61){logger[_0xc9d4('0x1e')]('['+[_0x5b9891['toUpperCase']()]+_0xc9d4('0x21'));_0x4b4777['userEmail']=_0xdb59cb[_0xc9d4('0x10')];for(_0x4e040d=0x0;_0x4e040d<_0x16fa8f[_0xc9d4('0x1d')];_0x4e040d++){if(_0x16fa8f[_0x4e040d][_0xc9d4('0x22')]===_0xdb59cb[_0xc9d4('0x10')]){_0x4b4777[_0xc9d4('0x20')]=_0x16fa8f[_0x4e040d]['systemuserid'];}}}_0x2ce26b(_0x4b4777);})['catch'](function(_0x37a17b){_0x29f1cf(_0x37a17b[_0xc9d4('0x18')]);});});}function createEndUser(_0x289c68,_0x4bf5e2,_0x5a2707,_0x7ae2e,_0x2cb166,_0x1e6c39){return new Promise(function(_0x387d0e,_0x4a8a28){return getAuthToken(_0x4bf5e2,_0x5a2707,_0x1e6c39)[_0xc9d4('0x13')](function(_0x4ac81c){var _0x2604bd=_0x1e6c39['toLowerCase']()===_0xc9d4('0x23')?_0x2cb166[_0xc9d4('0x24')]:_0x2cb166['calleridnum'];var _0x28588c={'method':_0xc9d4('0xe'),'uri':_0x7ae2e+_0xc9d4('0x25'),'body':{'telephone1':_0x2604bd,'fullname':_0x2604bd,'firstname':_0x2604bd,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xc9d4('0x26')+_0x289c68['userId']+')'},'headers':{'Authorization':_0xc9d4('0x27')+_0x4ac81c,'OData-Version':_0xc9d4('0x28')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x28588c);})[_0xc9d4('0x13')](function(_0x3273f5){var _0x1167a4=_0x3273f5[_0xc9d4('0x29')][_0xc9d4('0x2a')];var _0x527818=_0x1167a4[_0xc9d4('0x2b')](_0x1167a4['lastIndexOf']('(')+0x1,_0x1167a4[_0xc9d4('0x2c')](')'));_0x289c68[_0xc9d4('0x2d')]=_0x527818;_0x387d0e(_0x289c68);})[_0xc9d4('0x15')](function(_0x3c2d03){_0x4a8a28(_0x3c2d03['message']);});});}function getEndUser(_0x5c56f4,_0x55fe7b,_0x16983a,_0x27ed3f,_0x598289,_0x3a1ce9,_0x496f55){var _0x58ecb4=_0x3a1ce9[_0xc9d4('0x2e')]()===_0xc9d4('0x23')?_0x598289[_0xc9d4('0x24')]:_0x598289[_0xc9d4('0x2f')];return getAuthToken(_0x55fe7b,_0x16983a,_0x3a1ce9)[_0xc9d4('0x13')](function(_0x1f86b0){var _0x5cdd82={'method':_0xc9d4('0x30'),'uri':_0x27ed3f+_0xc9d4('0x31')+_0x58ecb4[_0xc9d4('0x32')]('+',_0xc9d4('0x33'))+'\x27','headers':{'Authorization':_0xc9d4('0x27')+_0x1f86b0,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5cdd82);})[_0xc9d4('0x13')](function(_0x3732bd){var _0x4484c9=![];if(!_0x3732bd)return _0x4484c9;var _0x1a0b5b=_0x3732bd[_0xc9d4('0x1a')];for(var _0x371b8c=0x0;_0x371b8c<_0x1a0b5b[_0xc9d4('0x1d')];_0x371b8c++){if(_0x1a0b5b[_0x371b8c][_0xc9d4('0x34')]===_0x58ecb4){_0x4484c9=!![];_0x5c56f4['enduserId']=_0x1a0b5b[_0x371b8c][_0xc9d4('0x35')];}}return _0x4484c9;})[_0xc9d4('0x13')](function(_0x4c20cd){if(_0x4c20cd)return _0x5c56f4;if(_0x496f55==='nothing'){logger[_0xc9d4('0x1e')]('['+[_0x3a1ce9['toUpperCase']()]+_0xc9d4('0x36'));return _0x5c56f4;}return createEndUser(_0x5c56f4,_0x55fe7b,_0x16983a,_0x27ed3f,_0x598289,_0x3a1ce9)[_0xc9d4('0x13')](function(_0x5bf17d){logger['info']('['+[_0x3a1ce9[_0xc9d4('0x17')]()]+_0xc9d4('0x37'),_0x5bf17d[_0xc9d4('0x2d')]);return _0x5bf17d;});});}function getCustomFields(_0x4109c5,_0x118b52,_0x45356d){var _0x3ec6a6={};if(_0x4109c5[_0xc9d4('0x1d')]>0x0){_[_0xc9d4('0x38')](_0x4109c5,function(_0x4613d8){if(_[_0xc9d4('0x39')](['string',_0xc9d4('0x3a')],_0x4613d8[_0xc9d4('0x3b')])&&_0x4613d8[_0xc9d4('0x3c')]&&!_0x4613d8[_0xc9d4('0x3d')]){var _0xe5e387=_0x4613d8[_0xc9d4('0x3e')][_0xc9d4('0x2e')]();var _0x45106e=_0xe5e387[_0xc9d4('0x2b')](0x0,_0xe5e387[_0xc9d4('0x3f')]('_'));var _0x5a2fef=_0xe5e387[_0xc9d4('0x2b')](_0xe5e387[_0xc9d4('0x3f')]('_')+0x1);if(_0x45106e===_0x45356d){_0x3ec6a6[_0x5a2fef]=_0x4613d8[_0xc9d4('0x40')];}}});}return _0x3ec6a6;}function getTicket(_0x49fe7e,_0x444f06,_0x4a6b5d,_0x3e560d,_0x265e0e,_0x3ebc22,_0x51d70c){return new Promise(function(_0x13d1d0,_0x526646){var _0x4d58dc;return getAuthToken(_0x444f06,_0x4a6b5d,_0x51d70c)[_0xc9d4('0x13')](function(_0x1e4e07){if(_0x3ebc22[_0xc9d4('0x41')]===_0xc9d4('0x42')){_0x4d58dc={'method':_0xc9d4('0xe'),'uri':_0x3e560d+_0xc9d4('0x43'),'body':Object['assign']({},{'title':intUtil[_0xc9d4('0x44')](_0x3ebc22['Subjects'],_0x265e0e,'\x20'),'description':intUtil[_0xc9d4('0x44')](_0x3ebc22['Descriptions'],_0x265e0e,'\x0a'),'customerid_contact@odata.bind':_0x49fe7e[_0xc9d4('0x2d')]?_0xc9d4('0x45')+_0x49fe7e[_0xc9d4('0x2d')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x49fe7e['userId']+')','caseorigincode':'1'},getCustomFields(_0x3ebc22[_0xc9d4('0x46')],_0x265e0e,_0x3ebc22[_0xc9d4('0x41')])),'headers':{'Authorization':'Bearer\x20'+_0x1e4e07,'OData-Version':_0xc9d4('0x28')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3ebc22['ticketType']===_0xc9d4('0x47')){var _0x3e789d=_0x49fe7e[_0xc9d4('0x2d')]?[{'partyid_systemuser@odata.bind':_0xc9d4('0x26')+_0x49fe7e[_0xc9d4('0x20')]+')','participationtypemask':_0x49fe7e[_0xc9d4('0x48')]===_0xc9d4('0x49')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x49fe7e[_0xc9d4('0x2d')]+')','participationtypemask':_0x49fe7e[_0xc9d4('0x48')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xc9d4('0x26')+_0x49fe7e[_0xc9d4('0x20')]+')','participationtypemask':_0x49fe7e[_0xc9d4('0x48')]===_0xc9d4('0x49')?0x2:0x1}];_0x4d58dc={'method':_0xc9d4('0xe'),'uri':_0x3e560d+'phonecalls','body':Object[_0xc9d4('0x4a')]({},{'subject':intUtil['getString'](_0x3ebc22['Subjects'],_0x265e0e,'\x20'),'phonenumber':String(_0x265e0e[_0xc9d4('0x2f')]),'description':intUtil['getString'](_0x3ebc22[_0xc9d4('0x4b')],_0x265e0e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x49fe7e[_0xc9d4('0x2d')]?'/contacts('+_0x49fe7e[_0xc9d4('0x2d')]+')':undefined,'ownerid@odata.bind':_0xc9d4('0x26')+_0x49fe7e['userId']+')','directioncode':_0x49fe7e['callDirection']===_0xc9d4('0x49')?![]:!![],'phonecall_activity_parties':_0x3e789d},getCustomFields(_0x3ebc22[_0xc9d4('0x46')],_0x265e0e,_0x3ebc22['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x1e4e07,'OData-Version':_0xc9d4('0x28')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4d58dc);})[_0xc9d4('0x13')](function(_0x275f9f){var _0x51f273=_0x275f9f['headers']['odata-entityid'];var _0x399843=_0x51f273['substring'](_0x51f273[_0xc9d4('0x2c')]('(')+0x1,_0x51f273['lastIndexOf'](')'));_0x49fe7e[_0xc9d4('0x4c')]=_0x399843;_0x13d1d0(_0x49fe7e);})[_0xc9d4('0x15')](function(_0x36fd72){_0x526646(_0x36fd72[_0xc9d4('0x18')]);});});}function emit(_0x21ae06,_0x204296,_0x11e777,_0x4b5ab1){var _0x524d2f={'uri':util[_0xc9d4('0x4d')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x21ae06,_0x11e777,_0x4b5ab1)};io['to'](util['format'](_0xc9d4('0x4e'),_0x204296))['emit'](_0xc9d4('0x4f'),_0x524d2f);}exports['cs']=function(_0x269628,_0x544895,_0x3e8c5a,_0x54d8d5,_0x36d7ab,_0x381975,_0x38fee5,_0x51d62c){var _0x1a1851={};_0x381975['remoteUri']=_0x381975[_0xc9d4('0x9')]?intUtil[_0xc9d4('0x50')](_0x381975['CloudProvider'][_0xc9d4('0xc')]):intUtil['stripTrailingSlash'](_0x381975['remoteUri']);_0x381975['serverUrl']=intUtil['stripTrailingSlash'](_0x381975[_0xc9d4('0x51')]);_0x1a1851['callDirection']=_0x51d62c===_0xc9d4('0x49')||_0x51d62c===_0xc9d4('0x52')?_0xc9d4('0x49'):_0xc9d4('0x23');var _0xb7cb17=_0x381975[_0xc9d4('0x9')]?util[_0xc9d4('0x4d')](_0xc9d4('0x53'),_0x381975[_0xc9d4('0xb')][_0xc9d4('0xc')]):util[_0xc9d4('0x4d')](_0xc9d4('0x53'),_0x381975[_0xc9d4('0xa')]);var _0x2c26ba=util[_0xc9d4('0x4d')]('https://login.microsoftonline.com/%s/oauth2/token',_0x381975['tenantId']);var _0x4cb591=util[_0xc9d4('0x4d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x381975[_0xc9d4('0x51')],_0x544895[_0xc9d4('0x54')],md5(_0x544895['uniqueid']));if(_0x36d7ab&&_0x36d7ab[_0xc9d4('0x55')]){logger['info']('[QUEUE]',_0xc9d4('0x56'));_0x544895['recordingURL']=_0x4cb591;}else if(_0x38fee5&&_0x38fee5['recordingFormat']&&_0x38fee5[_0xc9d4('0x57')]!==_0xc9d4('0x58')){logger['info'](_0xc9d4('0x59'),'Recording\x20is\x20enabled!');_0x544895[_0xc9d4('0x5a')]=_0x4cb591;}else{_0x544895[_0xc9d4('0x5a')]='';}return getUser(_0x1a1851,_0x381975,_0x54d8d5,_0x2c26ba,_0xb7cb17,_0x51d62c)[_0xc9d4('0x13')](function(_0x5cae30){logger[_0xc9d4('0x1e')]('['+_0x51d62c['toUpperCase']()+_0xc9d4('0x5b'),_0x5cae30[_0xc9d4('0x20')]);logger['info']('['+_0x51d62c[_0xc9d4('0x17')]()+_0xc9d4('0x5c'),_0x5cae30[_0xc9d4('0x5d')]);return getEndUser(_0x5cae30,_0x381975,_0x2c26ba,_0xb7cb17,_0x544895,_0x51d62c,_0x3e8c5a[_0xc9d4('0x5e')]);})['then'](function(_0x12dd7d){logger[_0xc9d4('0x1e')]('['+_0x51d62c[_0xc9d4('0x17')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x12dd7d[_0xc9d4('0x2d')]);logger['info']('['+_0x51d62c[_0xc9d4('0x17')]()+_0xc9d4('0x5f'),_0x544895[_0xc9d4('0x2f')]);return getTicket(_0x12dd7d,_0x381975,_0x2c26ba,_0xb7cb17,_0x544895,_0x3e8c5a,_0x51d62c);})['then'](function(_0x28d67b){logger[_0xc9d4('0x1e')](util[_0xc9d4('0x4d')]('['+_0x51d62c[_0xc9d4('0x17')]()+_0xc9d4('0x60'),_0x3e8c5a[_0xc9d4('0x41')],_0x28d67b['ticketId']));logger['info'](util[_0xc9d4('0x4d')]('['+_0x51d62c[_0xc9d4('0x17')]()+_0xc9d4('0x61'),_0x51d62c));if(_0x51d62c!==_0xc9d4('0x52')){logger[_0xc9d4('0x1e')]('['+_0x51d62c['toUpperCase']()+']',_0xc9d4('0x62'));emit(_0x381975['remoteUri'],_0x54d8d5[_0xc9d4('0x63')],_0x3e8c5a[_0xc9d4('0x41')],_0x28d67b['ticketId']);}})[_0xc9d4('0x15')](function(_0x5cdcff){logger[_0xc9d4('0x16')]('['+_0x51d62c[_0xc9d4('0x17')]()+_0xc9d4('0x64'),_0x5cdcff['message']);});};