Built motion from commit 497d3d92.|2.5.43
[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 _0xf773=['recordingFormat','[OUTBOUND]','recordingURL',']\x20The\x20User\x20email\x20is:','userEmail','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:','ticketId',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','util','./util','md5','ioredis','dynamics365','../../../../config/environment','redis','defaults','localhost','clientId','username','password','clientSecret','then','access_token','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','destcalleridnum','calleridnum','POST','contacts','/systemusers(','headers','odata-entityid','substring','outbound','replace','%2b','enduserId','contactid','nothing',']\x20Enduser\x20created!','forEach','includes','string','type','idField','indexOf','ticketType','incident','incidents','assign','getString','Subjects','Fields','phonecall','callDirection','queue','/contacts(','phonecalls','Descriptions','lastIndexOf','format','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','%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!'];(function(_0x3fdc4c,_0x42ec50){var _0x206e98=function(_0x57404f){while(--_0x57404f){_0x3fdc4c['push'](_0x3fdc4c['shift']());}};_0x206e98(++_0x42ec50);}(_0xf773,0x6d));var _0x3f77=function(_0x201830,_0x4e5236){_0x201830=_0x201830-0x0;var _0xdc8337=_0xf773[_0x201830];return _0xdc8337;};'use strict';var _=require(_0x3f77('0x0'));var BPromise=require(_0x3f77('0x1'));var rp=require('request-promise');var util=require(_0x3f77('0x2'));var intUtil=require(_0x3f77('0x3'));var md5=require(_0x3f77('0x4'));var Redis=require(_0x3f77('0x5'));var logger=require('../../../../config/logger')(_0x3f77('0x6'));var config=require(_0x3f77('0x7'));config[_0x3f77('0x8')]=_[_0x3f77('0x9')](config[_0x3f77('0x8')],{'host':_0x3f77('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3f77('0x8')]));function getAuthToken(_0x1625ba,_0x475a80,_0x4c45ea){var _0x284517={'method':'POST','uri':_0x475a80,'form':{'client_id':_0x1625ba[_0x3f77('0xb')],'resource':_0x1625ba['remoteUri'],'username':_0x1625ba[_0x3f77('0xc')],'password':_0x1625ba[_0x3f77('0xd')],'grant_type':_0x3f77('0xd'),'client_secret':_0x1625ba[_0x3f77('0xe')]},'json':!![]};return rp(_0x284517)[_0x3f77('0xf')](function(_0x3d7f1b){return _0x3d7f1b[_0x3f77('0x10')];})[_0x3f77('0x11')](function(_0x3e6477){logger['error']('['+[_0x4c45ea['toUpperCase']()]+_0x3f77('0x12'));return _0x3e6477[_0x3f77('0x13')];});}function getUser(_0x4d109b,_0x11af27,_0x4cbf97,_0x68de63,_0x276e0b,_0x1afc60){return new BPromise(function(_0x147234,_0x509c33){return getAuthToken(_0x11af27,_0x68de63,_0x1afc60)[_0x3f77('0xf')](function(_0x5454ba){var _0x219fc2={'method':_0x3f77('0x14'),'uri':_0x276e0b+_0x3f77('0x15'),'headers':{'Authorization':_0x3f77('0x16')+_0x5454ba,'OData-Version':_0x3f77('0x17')},'json':!![]};return rp(_0x219fc2);})[_0x3f77('0xf')](function(_0x2dbdec){var _0x4cab38=_0x2dbdec[_0x3f77('0x18')];var _0x3b26e5=![];var _0x2a18fc=null;if(!_[_0x3f77('0x19')](_0x4cbf97)){if(intUtil['validateEmail'](_0x4cbf97['email'])){_0x4d109b['userEmail']=_0x4cbf97[_0x3f77('0x1a')];for(_0x2a18fc=0x0;_0x2a18fc<_0x4cab38[_0x3f77('0x1b')];_0x2a18fc++){if(_0x4cab38[_0x2a18fc][_0x3f77('0x1c')]===_0x4cbf97[_0x3f77('0x1a')]&&!_0x4cab38[_0x2a18fc][_0x3f77('0x1d')]){_0x3b26e5=!![];logger[_0x3f77('0x1e')]('['+[_0x1afc60[_0x3f77('0x1f')]()]+_0x3f77('0x20')+_0x4cab38[_0x2a18fc][_0x3f77('0x21')]+'!');_0x4d109b[_0x3f77('0x22')]=_0x4cab38[_0x2a18fc]['systemuserid'];}}}}if(!_0x3b26e5){logger['info']('['+[_0x1afc60['toUpperCase']()]+_0x3f77('0x23'));_0x4d109b['userEmail']=_0x11af27['username'];for(_0x2a18fc=0x0;_0x2a18fc<_0x4cab38[_0x3f77('0x1b')];_0x2a18fc++){if(_0x4cab38[_0x2a18fc][_0x3f77('0x1c')]===_0x11af27[_0x3f77('0xc')]){_0x4d109b[_0x3f77('0x22')]=_0x4cab38[_0x2a18fc][_0x3f77('0x21')];}}}_0x147234(_0x4d109b);})['catch'](function(_0x4e6467){_0x509c33(_0x4e6467[_0x3f77('0x13')]);});});}function createEndUser(_0xf32b1,_0x10186b,_0x33ac38,_0x3376c6,_0x1be536,_0x4267c5){return new BPromise(function(_0x61c07c,_0x1cdd4b){return getAuthToken(_0x10186b,_0x33ac38,_0x4267c5)['then'](function(_0x29516e){var _0x3a7262=_0x4267c5[_0x3f77('0x24')]()==='outbound'?_0x1be536[_0x3f77('0x25')]:_0x1be536[_0x3f77('0x26')];var _0x4c8f52={'method':_0x3f77('0x27'),'uri':_0x3376c6+_0x3f77('0x28'),'body':{'telephone1':_0x3a7262,'fullname':_0x3a7262,'firstname':_0x3a7262,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x3f77('0x29')+_0xf32b1[_0x3f77('0x22')]+')'},'headers':{'Authorization':_0x3f77('0x16')+_0x29516e,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4c8f52);})['then'](function(_0x33dbec){var _0x13c516=_0x33dbec[_0x3f77('0x2a')][_0x3f77('0x2b')];var _0x5429ee=_0x13c516[_0x3f77('0x2c')](_0x13c516['lastIndexOf']('(')+0x1,_0x13c516['lastIndexOf'](')'));_0xf32b1['enduserId']=_0x5429ee;_0x61c07c(_0xf32b1);})[_0x3f77('0x11')](function(_0x51432c){_0x1cdd4b(_0x51432c[_0x3f77('0x13')]);});});}function getEndUser(_0x263b10,_0x19a81f,_0xd0c25a,_0x58ba9d,_0x4c2a7c,_0x1fd8af,_0x4747ff){var _0x3e92e8=_0x1fd8af[_0x3f77('0x24')]()===_0x3f77('0x2d')?_0x4c2a7c[_0x3f77('0x25')]:_0x4c2a7c[_0x3f77('0x26')];return getAuthToken(_0x19a81f,_0xd0c25a,_0x1fd8af)[_0x3f77('0xf')](function(_0x324260){var _0x565393={'method':'GET','uri':_0x58ba9d+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x3e92e8[_0x3f77('0x2e')]('+',_0x3f77('0x2f'))+'\x27','headers':{'Authorization':_0x3f77('0x16')+_0x324260,'If-None-Match':null,'OData-Version':_0x3f77('0x17')},'json':!![]};return rp(_0x565393);})[_0x3f77('0xf')](function(_0x9a1cb6){var _0x55d469=![];if(!_0x9a1cb6)return _0x55d469;var _0x3f4e70=_0x9a1cb6['value'];for(var _0x5b2cc7=0x0;_0x5b2cc7<_0x3f4e70[_0x3f77('0x1b')];_0x5b2cc7++){if(_0x3f4e70[_0x5b2cc7]['telephone1']===_0x3e92e8){_0x55d469=!![];_0x263b10[_0x3f77('0x30')]=_0x3f4e70[_0x5b2cc7][_0x3f77('0x31')];}}return _0x55d469;})[_0x3f77('0xf')](function(_0x3e9da3){if(_0x3e9da3)return _0x263b10;if(_0x4747ff===_0x3f77('0x32')){logger[_0x3f77('0x1e')]('['+[_0x1fd8af['toUpperCase']()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x263b10;}return createEndUser(_0x263b10,_0x19a81f,_0xd0c25a,_0x58ba9d,_0x4c2a7c,_0x1fd8af)['then'](function(_0x45edbe){logger[_0x3f77('0x1e')]('['+[_0x1fd8af[_0x3f77('0x1f')]()]+_0x3f77('0x33'),_0x45edbe['enduserId']);return _0x45edbe;});});}function getCustomFields(_0x3a9ca8,_0x593704,_0x185ff2){var _0x19598f={};if(_0x3a9ca8[_0x3f77('0x1b')]>0x0){_[_0x3f77('0x34')](_0x3a9ca8,function(_0x579c8d){if(_[_0x3f77('0x35')]([_0x3f77('0x36'),'picklist'],_0x579c8d[_0x3f77('0x37')])&&_0x579c8d['nameField']&&!_0x579c8d['customField']){var _0x5968f5=_0x579c8d[_0x3f77('0x38')][_0x3f77('0x24')]();var _0x3e063d=_0x5968f5[_0x3f77('0x2c')](0x0,_0x5968f5[_0x3f77('0x39')]('_'));var _0x90a03b=_0x5968f5['substring'](_0x5968f5[_0x3f77('0x39')]('_')+0x1);if(_0x3e063d===_0x185ff2){_0x19598f[_0x90a03b]=_0x579c8d['content'];}}});}return _0x19598f;}function getTicket(_0x23a951,_0xb4e3be,_0xb37620,_0x2372b9,_0x3cdcb5,_0x51dd8f,_0xdbc105){return new BPromise(function(_0x538435,_0x1aef67){var _0x562836;return getAuthToken(_0xb4e3be,_0xb37620,_0xdbc105)[_0x3f77('0xf')](function(_0x149c77){if(_0x51dd8f[_0x3f77('0x3a')]===_0x3f77('0x3b')){_0x562836={'method':_0x3f77('0x27'),'uri':_0x2372b9+_0x3f77('0x3c'),'body':Object[_0x3f77('0x3d')]({},{'title':intUtil[_0x3f77('0x3e')](_0x51dd8f[_0x3f77('0x3f')],_0x3cdcb5,'\x20'),'description':intUtil['getString'](_0x51dd8f['Descriptions'],_0x3cdcb5,'\x0a'),'customerid_contact@odata.bind':_0x23a951[_0x3f77('0x30')]?'/contacts('+_0x23a951[_0x3f77('0x30')]+')':undefined,'ownerid@odata.bind':_0x3f77('0x29')+_0x23a951['userId']+')','caseorigincode':'1'},getCustomFields(_0x51dd8f[_0x3f77('0x40')],_0x3cdcb5,_0x51dd8f[_0x3f77('0x3a')])),'headers':{'Authorization':_0x3f77('0x16')+_0x149c77,'OData-Version':_0x3f77('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x51dd8f[_0x3f77('0x3a')]===_0x3f77('0x41')){var _0x191555=_0x23a951[_0x3f77('0x30')]?[{'partyid_systemuser@odata.bind':_0x3f77('0x29')+_0x23a951[_0x3f77('0x22')]+')','participationtypemask':_0x23a951[_0x3f77('0x42')]===_0x3f77('0x43')?0x2:0x1},{'partyid_contact@odata.bind':_0x3f77('0x44')+_0x23a951['enduserId']+')','participationtypemask':_0x23a951['callDirection']===_0x3f77('0x43')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x23a951['userId']+')','participationtypemask':_0x23a951[_0x3f77('0x42')]==='queue'?0x2:0x1}];_0x562836={'method':_0x3f77('0x27'),'uri':_0x2372b9+_0x3f77('0x45'),'body':Object[_0x3f77('0x3d')]({},{'subject':intUtil[_0x3f77('0x3e')](_0x51dd8f[_0x3f77('0x3f')],_0x3cdcb5,'\x20'),'phonenumber':String(_0x3cdcb5[_0x3f77('0x26')]),'description':intUtil[_0x3f77('0x3e')](_0x51dd8f[_0x3f77('0x46')],_0x3cdcb5,'\x0a'),'regardingobjectid_contact@odata.bind':_0x23a951[_0x3f77('0x30')]?'/contacts('+_0x23a951['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x23a951[_0x3f77('0x22')]+')','directioncode':_0x23a951[_0x3f77('0x42')]===_0x3f77('0x43')?![]:!![],'phonecall_activity_parties':_0x191555},getCustomFields(_0x51dd8f[_0x3f77('0x40')],_0x3cdcb5,_0x51dd8f[_0x3f77('0x3a')])),'headers':{'Authorization':_0x3f77('0x16')+_0x149c77,'OData-Version':_0x3f77('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x562836);})[_0x3f77('0xf')](function(_0x525cf1){var _0x334f2f=_0x525cf1[_0x3f77('0x2a')][_0x3f77('0x2b')];var _0x221076=_0x334f2f[_0x3f77('0x2c')](_0x334f2f[_0x3f77('0x47')]('(')+0x1,_0x334f2f['lastIndexOf'](')'));_0x23a951['ticketId']=_0x221076;_0x538435(_0x23a951);})['catch'](function(_0x83f89f){_0x1aef67(_0x83f89f[_0x3f77('0x13')]);});});}function emit(_0x50fdec,_0x1a7eeb,_0x45d82f,_0x2f3024){var _0x30a61d={'uri':util[_0x3f77('0x48')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x50fdec,_0x45d82f,_0x2f3024)};io['to'](util[_0x3f77('0x48')]('user:%s',_0x1a7eeb))[_0x3f77('0x49')](_0x3f77('0x4a'),_0x30a61d);}exports['cs']=function(_0x5d0fba,_0x2fb11e,_0x1469d3,_0x4d5861,_0x54d89b,_0x5664ea,_0x45f4b5,_0x129583){var _0x9b6999={};_0x5664ea[_0x3f77('0x4b')]=intUtil[_0x3f77('0x4c')](_0x5664ea[_0x3f77('0x4b')]);_0x5664ea[_0x3f77('0x4d')]=intUtil[_0x3f77('0x4c')](_0x5664ea[_0x3f77('0x4d')]);_0x9b6999[_0x3f77('0x42')]=_0x129583===_0x3f77('0x43')||_0x129583===_0x3f77('0x4e')?_0x3f77('0x43'):_0x3f77('0x2d');var _0x14fce9=util[_0x3f77('0x48')](_0x3f77('0x4f'),_0x5664ea[_0x3f77('0x4b')]);var _0x4d49f4=util[_0x3f77('0x48')](_0x3f77('0x50'),_0x5664ea[_0x3f77('0x51')]);var _0x396c62=util[_0x3f77('0x48')](_0x3f77('0x52'),_0x5664ea[_0x3f77('0x4d')],_0x2fb11e[_0x3f77('0x53')],md5(_0x2fb11e[_0x3f77('0x53')]));if(_0x54d89b&&_0x54d89b[_0x3f77('0x54')]){logger[_0x3f77('0x1e')](_0x3f77('0x55'),_0x3f77('0x56'));_0x2fb11e['recordingURL']=_0x396c62;}else if(_0x45f4b5&&_0x45f4b5['recordingFormat']&&_0x45f4b5[_0x3f77('0x57')]!=='none'){logger['info'](_0x3f77('0x58'),_0x3f77('0x56'));_0x2fb11e[_0x3f77('0x59')]=_0x396c62;}else{_0x2fb11e[_0x3f77('0x59')]='';}return getUser(_0x9b6999,_0x5664ea,_0x4d5861,_0x4d49f4,_0x14fce9,_0x129583)['then'](function(_0x115096){logger['info']('['+_0x129583[_0x3f77('0x1f')]()+']\x20The\x20User\x20ID\x20is:',_0x115096[_0x3f77('0x22')]);logger[_0x3f77('0x1e')]('['+_0x129583[_0x3f77('0x1f')]()+_0x3f77('0x5a'),_0x115096[_0x3f77('0x5b')]);return getEndUser(_0x115096,_0x5664ea,_0x4d49f4,_0x14fce9,_0x2fb11e,_0x129583,_0x1469d3[_0x3f77('0x5c')]);})['then'](function(_0x10a119){logger[_0x3f77('0x1e')]('['+_0x129583['toUpperCase']()+_0x3f77('0x5d'),_0x10a119[_0x3f77('0x30')]);logger[_0x3f77('0x1e')]('['+_0x129583[_0x3f77('0x1f')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x2fb11e[_0x3f77('0x26')]);return getTicket(_0x10a119,_0x5664ea,_0x4d49f4,_0x14fce9,_0x2fb11e,_0x1469d3,_0x129583);})[_0x3f77('0xf')](function(_0x4e1ecb){logger[_0x3f77('0x1e')](util[_0x3f77('0x48')]('['+_0x129583[_0x3f77('0x1f')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x1469d3[_0x3f77('0x3a')],_0x4e1ecb[_0x3f77('0x5e')]));logger[_0x3f77('0x1e')](util['format']('['+_0x129583[_0x3f77('0x1f')]()+_0x3f77('0x5f'),_0x129583));if(_0x129583!=='unmanaged'){logger[_0x3f77('0x1e')]('['+_0x129583[_0x3f77('0x1f')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x5664ea['remoteUri'],_0x4d5861[_0x3f77('0x60')],_0x1469d3['ticketType'],_0x4e1ecb[_0x3f77('0x5e')]);}})[_0x3f77('0x11')](function(_0x1d7ceb){logger['error']('['+_0x129583['toUpperCase']()+_0x3f77('0x61'),util['inspect'](_0x1d7ceb,{'showHidden':!![],'depth':null}));});};