Built motion from commit 9d1906d1.|2.5.40
[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 _0xd13f=['email','userEmail','length','isdisabled','info','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','lastIndexOf','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','telephone1','enduserId','contactid',']\x20Enduser\x20created!','string','type','nameField','customField','idField','substring','content','ticketType','incident','incidents','getString','/contacts(','/systemusers(','queue','phonecalls','assign','Subjects','Descriptions','Fields','headers','odata-entityid','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','callDirection','%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]','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','util','./util','md5','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail'];(function(_0x1b6638,_0x405ed5){var _0x1cd683=function(_0x55cd25){while(--_0x55cd25){_0x1b6638['push'](_0x1b6638['shift']());}};_0x1cd683(++_0x405ed5);}(_0xd13f,0x173));var _0xfd13=function(_0x2d2ec1,_0xb42bd9){_0x2d2ec1=_0x2d2ec1-0x0;var _0x30c581=_0xd13f[_0x2d2ec1];return _0x30c581;};'use strict';var _=require(_0xfd13('0x0'));var BPromise=require(_0xfd13('0x1'));var rp=require('request-promise');var util=require(_0xfd13('0x2'));var intUtil=require(_0xfd13('0x3'));var md5=require(_0xfd13('0x4'));var Redis=require('ioredis');var logger=require('../../../../config/logger')(_0xfd13('0x5'));var config=require(_0xfd13('0x6'));config[_0xfd13('0x7')]=_[_0xfd13('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xfd13('0x9'))(new Redis(config['redis']));function getAuthToken(_0x423fd9,_0x1e29ef,_0x217f15){var _0x1fd337={'method':_0xfd13('0xa'),'uri':_0x1e29ef,'form':{'client_id':_0x423fd9[_0xfd13('0xb')],'resource':_0x423fd9[_0xfd13('0xc')],'username':_0x423fd9[_0xfd13('0xd')],'password':_0x423fd9[_0xfd13('0xe')],'grant_type':_0xfd13('0xe'),'client_secret':_0x423fd9[_0xfd13('0xf')]},'json':!![]};return rp(_0x1fd337)[_0xfd13('0x10')](function(_0x3b7d86){return _0x3b7d86[_0xfd13('0x11')];})[_0xfd13('0x12')](function(_0x1c0280){logger[_0xfd13('0x13')]('['+[_0x217f15[_0xfd13('0x14')]()]+_0xfd13('0x15'));return _0x1c0280[_0xfd13('0x16')];});}function getUser(_0x2708f2,_0x126a49,_0x38276a,_0x50dc96,_0x3a8df2,_0x3d5f9d){return new BPromise(function(_0x1dd322,_0x1a4c77){return getAuthToken(_0x126a49,_0x50dc96,_0x3d5f9d)[_0xfd13('0x10')](function(_0x17334b){var _0xd930d4={'method':'GET','uri':_0x3a8df2+_0xfd13('0x17'),'headers':{'Authorization':_0xfd13('0x18')+_0x17334b,'OData-Version':_0xfd13('0x19')},'json':!![]};return rp(_0xd930d4);})['then'](function(_0x34bfd9){var _0x476d38=_0x34bfd9[_0xfd13('0x1a')];var _0x1700a7=![];var _0x33ed0e=null;if(!_[_0xfd13('0x1b')](_0x38276a)){if(intUtil[_0xfd13('0x1c')](_0x38276a[_0xfd13('0x1d')])){_0x2708f2[_0xfd13('0x1e')]=_0x38276a['email'];for(_0x33ed0e=0x0;_0x33ed0e<_0x476d38[_0xfd13('0x1f')];_0x33ed0e++){if(_0x476d38[_0x33ed0e]['internalemailaddress']===_0x38276a[_0xfd13('0x1d')]&&!_0x476d38[_0x33ed0e][_0xfd13('0x20')]){_0x1700a7=!![];logger[_0xfd13('0x21')]('['+[_0x3d5f9d['toUpperCase']()]+']\x20Agent\x20found\x20'+_0x476d38[_0x33ed0e][_0xfd13('0x22')]+'!');_0x2708f2['userId']=_0x476d38[_0x33ed0e][_0xfd13('0x22')];}}}}if(!_0x1700a7){logger[_0xfd13('0x21')]('['+[_0x3d5f9d[_0xfd13('0x14')]()]+_0xfd13('0x23'));_0x2708f2['userEmail']=_0x126a49[_0xfd13('0xd')];for(_0x33ed0e=0x0;_0x33ed0e<_0x476d38[_0xfd13('0x1f')];_0x33ed0e++){if(_0x476d38[_0x33ed0e][_0xfd13('0x24')]===_0x126a49[_0xfd13('0xd')]){_0x2708f2[_0xfd13('0x25')]=_0x476d38[_0x33ed0e][_0xfd13('0x22')];}}}_0x1dd322(_0x2708f2);})[_0xfd13('0x12')](function(_0x59ab95){_0x1a4c77(_0x59ab95[_0xfd13('0x16')]);});});}function createEndUser(_0x1cbbfe,_0x4100dc,_0x510c66,_0x4349a1,_0x196ea7,_0x2cd126){return new BPromise(function(_0x4b7005,_0x3f3208){return getAuthToken(_0x4100dc,_0x510c66,_0x2cd126)['then'](function(_0x4055c8){var _0x556a7e=_0x2cd126[_0xfd13('0x26')]()===_0xfd13('0x27')?_0x196ea7[_0xfd13('0x28')]:_0x196ea7[_0xfd13('0x29')];var _0x26afd4={'method':_0xfd13('0xa'),'uri':_0x4349a1+_0xfd13('0x2a'),'body':{'telephone1':_0x556a7e,'fullname':_0x556a7e,'firstname':_0x556a7e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x1cbbfe[_0xfd13('0x25')]+')'},'headers':{'Authorization':_0xfd13('0x18')+_0x4055c8,'OData-Version':_0xfd13('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x26afd4);})[_0xfd13('0x10')](function(_0x5d42bb){var _0x31b3ee=_0x5d42bb['headers']['odata-entityid'];var _0x469dcc=_0x31b3ee['substring'](_0x31b3ee[_0xfd13('0x2b')]('(')+0x1,_0x31b3ee[_0xfd13('0x2b')](')'));_0x1cbbfe['enduserId']=_0x469dcc;_0x4b7005(_0x1cbbfe);})[_0xfd13('0x12')](function(_0x1980f2){_0x3f3208(_0x1980f2[_0xfd13('0x16')]);});});}function getEndUser(_0x488264,_0x44643c,_0x13ca02,_0x306ffb,_0x492c4f,_0x3fed91,_0x9b5227){var _0x2d99e2=_0x3fed91[_0xfd13('0x26')]()==='outbound'?_0x492c4f[_0xfd13('0x28')]:_0x492c4f[_0xfd13('0x29')];return getAuthToken(_0x44643c,_0x13ca02,_0x3fed91)['then'](function(_0xc60853){var _0x20461b={'method':_0xfd13('0x2c'),'uri':_0x306ffb+_0xfd13('0x2d')+_0x2d99e2['replace']('+',_0xfd13('0x2e'))+'\x27','headers':{'Authorization':_0xfd13('0x18')+_0xc60853,'If-None-Match':null,'OData-Version':_0xfd13('0x19')},'json':!![]};return rp(_0x20461b);})['then'](function(_0x4e5262){var _0x3e8669=![];if(!_0x4e5262)return _0x3e8669;var _0x2daafe=_0x4e5262[_0xfd13('0x1a')];for(var _0x5c7d08=0x0;_0x5c7d08<_0x2daafe[_0xfd13('0x1f')];_0x5c7d08++){if(_0x2daafe[_0x5c7d08][_0xfd13('0x2f')]===_0x2d99e2){_0x3e8669=!![];_0x488264[_0xfd13('0x30')]=_0x2daafe[_0x5c7d08][_0xfd13('0x31')];}}return _0x3e8669;})['then'](function(_0x36b312){if(_0x36b312)return _0x488264;if(_0x9b5227==='nothing'){logger[_0xfd13('0x21')]('['+[_0x3fed91[_0xfd13('0x14')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x488264;}return createEndUser(_0x488264,_0x44643c,_0x13ca02,_0x306ffb,_0x492c4f,_0x3fed91)[_0xfd13('0x10')](function(_0x4b51a1){logger['info']('['+[_0x3fed91[_0xfd13('0x14')]()]+_0xfd13('0x32'),_0x4b51a1[_0xfd13('0x30')]);return _0x4b51a1;});});}function getCustomFields(_0x1bfb50,_0x2f3270,_0x5e6cd0){var _0x4885eb={};if(_0x1bfb50[_0xfd13('0x1f')]>0x0){_['forEach'](_0x1bfb50,function(_0x2526fb){if(_['includes']([_0xfd13('0x33'),'picklist'],_0x2526fb[_0xfd13('0x34')])&&_0x2526fb[_0xfd13('0x35')]&&!_0x2526fb[_0xfd13('0x36')]){var _0x17380b=_0x2526fb[_0xfd13('0x37')][_0xfd13('0x26')]();var _0x163431=_0x17380b[_0xfd13('0x38')](0x0,_0x17380b['indexOf']('_'));var _0x2dccde=_0x17380b['substring'](_0x17380b['indexOf']('_')+0x1);if(_0x163431===_0x5e6cd0){_0x4885eb[_0x2dccde]=_0x2526fb[_0xfd13('0x39')];}}});}return _0x4885eb;}function getTicket(_0x1f0217,_0x3f8b21,_0x2214a6,_0x5ea143,_0x54006c,_0x1f0ec6,_0x5783bb){return new BPromise(function(_0x1e0a11,_0x3e39c6){var _0x5d43a5;return getAuthToken(_0x3f8b21,_0x2214a6,_0x5783bb)[_0xfd13('0x10')](function(_0x3100bc){if(_0x1f0ec6[_0xfd13('0x3a')]===_0xfd13('0x3b')){_0x5d43a5={'method':_0xfd13('0xa'),'uri':_0x5ea143+_0xfd13('0x3c'),'body':Object['assign']({},{'title':intUtil[_0xfd13('0x3d')](_0x1f0ec6['Subjects'],_0x54006c,'\x20'),'description':intUtil[_0xfd13('0x3d')](_0x1f0ec6['Descriptions'],_0x54006c,'\x0a'),'customerid_contact@odata.bind':_0x1f0217['enduserId']?_0xfd13('0x3e')+_0x1f0217[_0xfd13('0x30')]+')':undefined,'ownerid@odata.bind':_0xfd13('0x3f')+_0x1f0217[_0xfd13('0x25')]+')','caseorigincode':'1'},getCustomFields(_0x1f0ec6['Fields'],_0x54006c,_0x1f0ec6['ticketType'])),'headers':{'Authorization':_0xfd13('0x18')+_0x3100bc,'OData-Version':_0xfd13('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1f0ec6['ticketType']==='phonecall'){var _0x50823b=_0x1f0217[_0xfd13('0x30')]?[{'partyid_systemuser@odata.bind':_0xfd13('0x3f')+_0x1f0217[_0xfd13('0x25')]+')','participationtypemask':_0x1f0217['callDirection']===_0xfd13('0x40')?0x2:0x1},{'partyid_contact@odata.bind':_0xfd13('0x3e')+_0x1f0217['enduserId']+')','participationtypemask':_0x1f0217['callDirection']==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xfd13('0x3f')+_0x1f0217[_0xfd13('0x25')]+')','participationtypemask':_0x1f0217['callDirection']===_0xfd13('0x40')?0x2:0x1}];_0x5d43a5={'method':_0xfd13('0xa'),'uri':_0x5ea143+_0xfd13('0x41'),'body':Object[_0xfd13('0x42')]({},{'subject':intUtil[_0xfd13('0x3d')](_0x1f0ec6[_0xfd13('0x43')],_0x54006c,'\x20'),'phonenumber':String(_0x54006c['calleridnum']),'description':intUtil[_0xfd13('0x3d')](_0x1f0ec6[_0xfd13('0x44')],_0x54006c,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1f0217['enduserId']?'/contacts('+_0x1f0217[_0xfd13('0x30')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x1f0217[_0xfd13('0x25')]+')','directioncode':_0x1f0217['callDirection']===_0xfd13('0x40')?![]:!![],'phonecall_activity_parties':_0x50823b},getCustomFields(_0x1f0ec6[_0xfd13('0x45')],_0x54006c,_0x1f0ec6['ticketType'])),'headers':{'Authorization':_0xfd13('0x18')+_0x3100bc,'OData-Version':_0xfd13('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5d43a5);})[_0xfd13('0x10')](function(_0x4da4d2){var _0x51a63f=_0x4da4d2[_0xfd13('0x46')][_0xfd13('0x47')];var _0x3b9371=_0x51a63f[_0xfd13('0x38')](_0x51a63f[_0xfd13('0x2b')]('(')+0x1,_0x51a63f[_0xfd13('0x2b')](')'));_0x1f0217[_0xfd13('0x48')]=_0x3b9371;_0x1e0a11(_0x1f0217);})[_0xfd13('0x12')](function(_0x13c691){_0x3e39c6(_0x13c691[_0xfd13('0x16')]);});});}function emit(_0x2fb9ef,_0xe062eb,_0x505d2d,_0x2fb085){var _0x44ddcd={'uri':util[_0xfd13('0x49')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x2fb9ef,_0x505d2d,_0x2fb085)};io['to'](util['format'](_0xfd13('0x4a'),_0xe062eb))[_0xfd13('0x4b')](_0xfd13('0x4c'),_0x44ddcd);}exports['cs']=function(_0x57dc12,_0x5d678f,_0x49093b,_0x3248ab,_0x96340c,_0x5e1992,_0x16225b,_0x552bd0){var _0x129ad7={};_0x5e1992[_0xfd13('0xc')]=intUtil[_0xfd13('0x4d')](_0x5e1992[_0xfd13('0xc')]);_0x5e1992['serverUrl']=intUtil['stripTrailingSlash'](_0x5e1992[_0xfd13('0x4e')]);_0x129ad7[_0xfd13('0x4f')]=_0x552bd0===_0xfd13('0x40')||_0x552bd0==='unmanaged'?'queue':_0xfd13('0x27');var _0xef65f3=util[_0xfd13('0x49')](_0xfd13('0x50'),_0x5e1992[_0xfd13('0xc')]);var _0x571dd3=util[_0xfd13('0x49')](_0xfd13('0x51'),_0x5e1992[_0xfd13('0x52')]);var _0x3e0ba4=util[_0xfd13('0x49')](_0xfd13('0x53'),_0x5e1992[_0xfd13('0x4e')],_0x5d678f[_0xfd13('0x54')],md5(_0x5d678f[_0xfd13('0x54')]));if(_0x96340c&&_0x96340c[_0xfd13('0x55')]){logger[_0xfd13('0x21')](_0xfd13('0x56'),'Recording\x20is\x20enabled!');_0x5d678f[_0xfd13('0x57')]=_0x3e0ba4;}else if(_0x16225b&&_0x16225b[_0xfd13('0x58')]&&_0x16225b[_0xfd13('0x58')]!==_0xfd13('0x59')){logger[_0xfd13('0x21')](_0xfd13('0x5a'),'Recording\x20is\x20enabled!');_0x5d678f['recordingURL']=_0x3e0ba4;}else{_0x5d678f['recordingURL']='';}return getUser(_0x129ad7,_0x5e1992,_0x3248ab,_0x571dd3,_0xef65f3,_0x552bd0)[_0xfd13('0x10')](function(_0x4cc2d2){logger[_0xfd13('0x21')]('['+_0x552bd0[_0xfd13('0x14')]()+_0xfd13('0x5b'),_0x4cc2d2['userId']);logger['info']('['+_0x552bd0[_0xfd13('0x14')]()+_0xfd13('0x5c'),_0x4cc2d2[_0xfd13('0x1e')]);return getEndUser(_0x4cc2d2,_0x5e1992,_0x571dd3,_0xef65f3,_0x5d678f,_0x552bd0,_0x49093b[_0xfd13('0x5d')]);})[_0xfd13('0x10')](function(_0x4b2bd5){logger[_0xfd13('0x21')]('['+_0x552bd0[_0xfd13('0x14')]()+_0xfd13('0x5e'),_0x4b2bd5[_0xfd13('0x30')]);logger[_0xfd13('0x21')]('['+_0x552bd0[_0xfd13('0x14')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x5d678f[_0xfd13('0x29')]);return getTicket(_0x4b2bd5,_0x5e1992,_0x571dd3,_0xef65f3,_0x5d678f,_0x49093b,_0x552bd0);})[_0xfd13('0x10')](function(_0x1fb8a5){logger[_0xfd13('0x21')](util['format']('['+_0x552bd0[_0xfd13('0x14')]()+_0xfd13('0x5f'),_0x49093b['ticketType'],_0x1fb8a5[_0xfd13('0x48')]));logger[_0xfd13('0x21')](util[_0xfd13('0x49')]('['+_0x552bd0[_0xfd13('0x14')]()+_0xfd13('0x60'),_0x552bd0));if(_0x552bd0!==_0xfd13('0x61')){logger['info']('['+_0x552bd0[_0xfd13('0x14')]()+']',_0xfd13('0x62'));emit(_0x5e1992[_0xfd13('0xc')],_0x3248ab['name'],_0x49093b['ticketType'],_0x1fb8a5[_0xfd13('0x48')]);}})[_0xfd13('0x12')](function(_0x3abd1f){logger['error']('['+_0x552bd0[_0xfd13('0x14')]()+_0xfd13('0x63'),util['inspect'](_0x3abd1f,{'showHidden':!![],'depth':null}));});};