Built motion from commit (unavailable).|2.5.14
[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 _0x8d20=['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]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','util','./util','md5','../../../../config/logger','dynamics365','redis','localhost','POST','clientId','remoteUri','username','password','clientSecret','then','error','toUpperCase',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','userEmail','email','length','internalemailaddress','isdisabled','info','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','catch','message','toLowerCase','outbound','destcalleridnum','/systemusers(','userId','headers','odata-entityid','substring','lastIndexOf','enduserId','calleridnum','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','string','nameField','customField','indexOf','content','ticketType','incident','incidents','Subjects','Descriptions','/contacts(','Fields','phonecall','phonecalls','assign','getString','queue','callDirection','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','stripTrailingSlash','serverUrl'];(function(_0x32c002,_0x26da70){var _0x3aabff=function(_0x2aaf9c){while(--_0x2aaf9c){_0x32c002['push'](_0x32c002['shift']());}};_0x3aabff(++_0x26da70);}(_0x8d20,0x132));var _0x08d2=function(_0x49bc25,_0x349d96){_0x49bc25=_0x49bc25-0x0;var _0x413bce=_0x8d20[_0x49bc25];return _0x413bce;};'use strict';var _=require(_0x08d2('0x0'));var BPromise=require(_0x08d2('0x1'));var rp=require(_0x08d2('0x2'));var util=require(_0x08d2('0x3'));var intUtil=require(_0x08d2('0x4'));var md5=require(_0x08d2('0x5'));var Redis=require('ioredis');var logger=require(_0x08d2('0x6'))(_0x08d2('0x7'));var config=require('../../../../config/environment');config[_0x08d2('0x8')]=_['defaults'](config[_0x08d2('0x8')],{'host':_0x08d2('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x08d2('0x8')]));function getAuthToken(_0x356ffc,_0x1995ed,_0x2947df){var _0x5c3051={'method':_0x08d2('0xa'),'uri':_0x1995ed,'form':{'client_id':_0x356ffc[_0x08d2('0xb')],'resource':_0x356ffc[_0x08d2('0xc')],'username':_0x356ffc[_0x08d2('0xd')],'password':_0x356ffc[_0x08d2('0xe')],'grant_type':_0x08d2('0xe'),'client_secret':_0x356ffc[_0x08d2('0xf')]},'json':!![]};return rp(_0x5c3051)[_0x08d2('0x10')](function(_0x1d744d){return _0x1d744d['access_token'];})['catch'](function(_0x4ef5b0){logger[_0x08d2('0x11')]('['+[_0x2947df[_0x08d2('0x12')]()]+_0x08d2('0x13'));return _0x4ef5b0['message'];});}function getUser(_0x1bb581,_0x422913,_0x3d123b,_0x4268b6,_0x37b3bc,_0x1c1eaa){return new BPromise(function(_0x341c18,_0x1fc600){return getAuthToken(_0x422913,_0x4268b6,_0x1c1eaa)[_0x08d2('0x10')](function(_0x4a287e){var _0x431296={'method':_0x08d2('0x14'),'uri':_0x37b3bc+_0x08d2('0x15'),'headers':{'Authorization':_0x08d2('0x16')+_0x4a287e,'OData-Version':_0x08d2('0x17')},'json':!![]};return rp(_0x431296);})[_0x08d2('0x10')](function(_0x203b78){var _0x75db27=_0x203b78[_0x08d2('0x18')];var _0x515cd6=![];var _0xfe61d=null;if(!_['isNil'](_0x3d123b)){if(intUtil[_0x08d2('0x19')](_0x3d123b['email'])){_0x1bb581[_0x08d2('0x1a')]=_0x3d123b[_0x08d2('0x1b')];for(_0xfe61d=0x0;_0xfe61d<_0x75db27[_0x08d2('0x1c')];_0xfe61d++){if(_0x75db27[_0xfe61d][_0x08d2('0x1d')]===_0x3d123b[_0x08d2('0x1b')]&&!_0x75db27[_0xfe61d][_0x08d2('0x1e')]){_0x515cd6=!![];logger[_0x08d2('0x1f')]('['+[_0x1c1eaa[_0x08d2('0x12')]()]+']\x20Agent\x20found\x20'+_0x75db27[_0xfe61d][_0x08d2('0x20')]+'!');_0x1bb581['userId']=_0x75db27[_0xfe61d]['systemuserid'];}}}}if(!_0x515cd6){logger[_0x08d2('0x1f')]('['+[_0x1c1eaa['toUpperCase']()]+_0x08d2('0x21'));_0x1bb581[_0x08d2('0x1a')]=_0x422913[_0x08d2('0xd')];for(_0xfe61d=0x0;_0xfe61d<_0x75db27[_0x08d2('0x1c')];_0xfe61d++){if(_0x75db27[_0xfe61d][_0x08d2('0x1d')]===_0x422913[_0x08d2('0xd')]){_0x1bb581['userId']=_0x75db27[_0xfe61d]['systemuserid'];}}}_0x341c18(_0x1bb581);})[_0x08d2('0x22')](function(_0x538910){_0x1fc600(_0x538910[_0x08d2('0x23')]);});});}function createEndUser(_0x3cc4c7,_0x318f7c,_0x5bcf0c,_0x437f4c,_0x258bc2,_0x3ef3d1){return new BPromise(function(_0x5d2636,_0x4efc31){return getAuthToken(_0x318f7c,_0x5bcf0c,_0x3ef3d1)['then'](function(_0x5d9eb6){var _0x38f43e=_0x3ef3d1[_0x08d2('0x24')]()===_0x08d2('0x25')?_0x258bc2[_0x08d2('0x26')]:_0x258bc2['calleridnum'];var _0x17db64={'method':_0x08d2('0xa'),'uri':_0x437f4c+'contacts','body':{'telephone1':_0x38f43e,'fullname':_0x38f43e,'firstname':_0x38f43e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x08d2('0x27')+_0x3cc4c7[_0x08d2('0x28')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x5d9eb6,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x17db64);})[_0x08d2('0x10')](function(_0x4414b7){var _0x2e986f=_0x4414b7[_0x08d2('0x29')][_0x08d2('0x2a')];var _0x5bf253=_0x2e986f[_0x08d2('0x2b')](_0x2e986f['lastIndexOf']('(')+0x1,_0x2e986f[_0x08d2('0x2c')](')'));_0x3cc4c7[_0x08d2('0x2d')]=_0x5bf253;_0x5d2636(_0x3cc4c7);})[_0x08d2('0x22')](function(_0x1c1f1e){_0x4efc31(_0x1c1f1e['message']);});});}function getEndUser(_0x454138,_0x4863b3,_0x584d09,_0x3aefc0,_0x4e16b5,_0xca3081){return new BPromise(function(_0xf9a597,_0x473c93){return getAuthToken(_0x4863b3,_0x584d09,_0xca3081)[_0x08d2('0x10')](function(_0x3fe4a5){var _0x9eb443={'method':_0x08d2('0x14'),'uri':_0x3aefc0+'contacts?$select=telephone1','headers':{'Authorization':_0x08d2('0x16')+_0x3fe4a5,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x9eb443);})['then'](function(_0x3b4752){var _0x3b720f=null;if(_0x3b4752){var _0x3b3c11=_0x3b4752[_0x08d2('0x18')];var _0x888c2b=![];for(_0x3b720f=0x0;_0x3b720f<_0x3b3c11[_0x08d2('0x1c')];_0x3b720f++){var _0x2cb015=_0xca3081[_0x08d2('0x24')]()===_0x08d2('0x25')?_0x4e16b5[_0x08d2('0x26')]:_0x4e16b5[_0x08d2('0x2e')];if(_0x3b3c11[_0x3b720f]['telephone1']===_0x2cb015){_0x888c2b=!![];_0x454138[_0x08d2('0x2d')]=_0x3b3c11[_0x3b720f][_0x08d2('0x2f')];}}if(_0x888c2b){_0xf9a597(_0x454138);}else{return createEndUser(_0x454138,_0x4863b3,_0x584d09,_0x3aefc0,_0x4e16b5,_0xca3081)[_0x08d2('0x10')](function(_0x3b3bed){logger[_0x08d2('0x1f')]('['+[_0xca3081[_0x08d2('0x12')]()]+_0x08d2('0x30'),_0x3b3bed['enduserId']);_0xf9a597(_0x3b3bed);});}}else{return createEndUser(_0x454138,_0x4863b3,_0x584d09,_0x3aefc0,_0x4e16b5,_0xca3081)['then'](function(_0x46352a){logger[_0x08d2('0x1f')]('['+[_0xca3081[_0x08d2('0x12')]()]+_0x08d2('0x31'),_0x46352a[_0x08d2('0x2d')]);_0xf9a597(_0x46352a);});}});});}function getCustomFields(_0x2bd820,_0x4cf78d,_0xc17cf4){var _0x159db1={};if(_0x2bd820[_0x08d2('0x1c')]>0x0){_[_0x08d2('0x32')](_0x2bd820,function(_0x175566){if(_0x175566['type']===_0x08d2('0x33')&&_0x175566[_0x08d2('0x34')]&&!_0x175566[_0x08d2('0x35')]){var _0x239c63=_0x175566['idField']['toLowerCase']();var _0x603507=_0x239c63[_0x08d2('0x2b')](0x0,_0x239c63['indexOf']('_'));var _0x462666=_0x239c63[_0x08d2('0x2b')](_0x239c63[_0x08d2('0x36')]('_')+0x1);if(_0x603507===_0xc17cf4){_0x159db1[_0x462666]=_0x175566[_0x08d2('0x37')];}}});}return _0x159db1;}function getTicket(_0x1a6673,_0xcf59b1,_0x47242b,_0x626983,_0x41ca95,_0x5e3afd,_0x2275a2){return new BPromise(function(_0x44c55c,_0xf2b85a){var _0x2cfb78;return getAuthToken(_0xcf59b1,_0x47242b,_0x2275a2)[_0x08d2('0x10')](function(_0x5ececb){if(_0x5e3afd[_0x08d2('0x38')]===_0x08d2('0x39')){_0x2cfb78={'method':_0x08d2('0xa'),'uri':_0x626983+_0x08d2('0x3a'),'body':Object['assign']({},{'title':intUtil['getString'](_0x5e3afd[_0x08d2('0x3b')],_0x41ca95,'\x20'),'description':intUtil['getString'](_0x5e3afd[_0x08d2('0x3c')],_0x41ca95,'\x0a'),'customerid_contact@odata.bind':_0x08d2('0x3d')+_0x1a6673['enduserId']+')','ownerid@odata.bind':_0x08d2('0x27')+_0x1a6673[_0x08d2('0x28')]+')','caseorigincode':'1'},getCustomFields(_0x5e3afd[_0x08d2('0x3e')],_0x41ca95,_0x5e3afd['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x5ececb,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5e3afd['ticketType']===_0x08d2('0x3f')){_0x2cfb78={'method':_0x08d2('0xa'),'uri':_0x626983+_0x08d2('0x40'),'body':Object[_0x08d2('0x41')]({},{'subject':intUtil[_0x08d2('0x42')](_0x5e3afd['Subjects'],_0x41ca95,'\x20'),'phonenumber':String(_0x41ca95[_0x08d2('0x2e')]),'description':intUtil[_0x08d2('0x42')](_0x5e3afd[_0x08d2('0x3c')],_0x41ca95,'\x0a'),'regardingobjectid_contact@odata.bind':_0x08d2('0x3d')+_0x1a6673[_0x08d2('0x2d')]+')','ownerid@odata.bind':_0x08d2('0x27')+_0x1a6673[_0x08d2('0x28')]+')','directioncode':_0x1a6673['callDirection']===_0x08d2('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x08d2('0x27')+_0x1a6673[_0x08d2('0x28')]+')','participationtypemask':_0x1a6673[_0x08d2('0x44')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x08d2('0x3d')+_0x1a6673[_0x08d2('0x2d')]+')','participationtypemask':_0x1a6673[_0x08d2('0x44')]===_0x08d2('0x43')?0x1:0x2}]},getCustomFields(_0x5e3afd['Fields'],_0x41ca95,_0x5e3afd[_0x08d2('0x38')])),'headers':{'Authorization':_0x08d2('0x16')+_0x5ececb,'OData-Version':_0x08d2('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x2cfb78);})[_0x08d2('0x10')](function(_0x12eea6){var _0x14a645=_0x12eea6[_0x08d2('0x29')]['odata-entityid'];var _0x536337=_0x14a645[_0x08d2('0x2b')](_0x14a645[_0x08d2('0x2c')]('(')+0x1,_0x14a645[_0x08d2('0x2c')](')'));_0x1a6673['ticketId']=_0x536337;_0x44c55c(_0x1a6673);})[_0x08d2('0x22')](function(_0x409044){_0xf2b85a(_0x409044[_0x08d2('0x23')]);});});}function emit(_0x437f4a,_0x149dac,_0x28e794,_0x282b4c){var _0x23efd4={'uri':util['format'](_0x08d2('0x45'),_0x437f4a,_0x28e794,_0x282b4c)};io['to'](util[_0x08d2('0x46')](_0x08d2('0x47'),_0x149dac))['emit']('trigger:browser:url',_0x23efd4);}exports['cs']=function(_0x3be69e,_0x213498,_0xae91f9,_0x3bb05f,_0xf84a0a,_0x410d79,_0x30cdea,_0x1c36ad){var _0x2e3441={};_0x410d79[_0x08d2('0xc')]=intUtil[_0x08d2('0x48')](_0x410d79['remoteUri']);_0x410d79[_0x08d2('0x49')]=intUtil[_0x08d2('0x48')](_0x410d79[_0x08d2('0x49')]);_0x2e3441[_0x08d2('0x44')]=_0x1c36ad===_0x08d2('0x43')||_0x1c36ad===_0x08d2('0x4a')?'queue':_0x08d2('0x25');var _0x38f8d4=util[_0x08d2('0x46')](_0x08d2('0x4b'),_0x410d79[_0x08d2('0xc')]);var _0x197b5f=util[_0x08d2('0x46')](_0x08d2('0x4c'),_0x410d79[_0x08d2('0x4d')]);var _0x4e6c7c=util['format'](_0x08d2('0x4e'),_0x410d79[_0x08d2('0x49')],_0x213498[_0x08d2('0x4f')],md5(_0x213498[_0x08d2('0x4f')]));if(_0xf84a0a&&_0xf84a0a[_0x08d2('0x50')]){logger[_0x08d2('0x1f')](_0x08d2('0x51'),'Recording\x20is\x20enabled!');_0x213498[_0x08d2('0x52')]=_0x4e6c7c;}else if(_0x30cdea&&_0x30cdea[_0x08d2('0x53')]&&_0x30cdea[_0x08d2('0x53')]!==_0x08d2('0x54')){logger[_0x08d2('0x1f')](_0x08d2('0x55'),_0x08d2('0x56'));_0x213498[_0x08d2('0x52')]=_0x4e6c7c;}else{_0x213498[_0x08d2('0x52')]='';}return getUser(_0x2e3441,_0x410d79,_0x3bb05f,_0x197b5f,_0x38f8d4,_0x1c36ad)['then'](function(_0x267500){logger[_0x08d2('0x1f')]('['+_0x1c36ad[_0x08d2('0x12')]()+']\x20The\x20User\x20ID\x20is:',_0x267500[_0x08d2('0x28')]);logger[_0x08d2('0x1f')]('['+_0x1c36ad[_0x08d2('0x12')]()+']\x20The\x20User\x20email\x20is:',_0x267500[_0x08d2('0x1a')]);return getEndUser(_0x267500,_0x410d79,_0x197b5f,_0x38f8d4,_0x213498,_0x1c36ad);})[_0x08d2('0x10')](function(_0x183912){logger[_0x08d2('0x1f')]('['+_0x1c36ad[_0x08d2('0x12')]()+_0x08d2('0x57'),_0x183912[_0x08d2('0x2d')]);logger[_0x08d2('0x1f')]('['+_0x1c36ad[_0x08d2('0x12')]()+_0x08d2('0x58'),_0x213498['calleridnum']);return getTicket(_0x183912,_0x410d79,_0x197b5f,_0x38f8d4,_0x213498,_0xae91f9,_0x1c36ad);})[_0x08d2('0x10')](function(_0x24ce55){logger[_0x08d2('0x1f')](util['format']('['+_0x1c36ad[_0x08d2('0x12')]()+_0x08d2('0x59'),_0xae91f9[_0x08d2('0x38')],_0x24ce55[_0x08d2('0x5a')]));logger['info'](util[_0x08d2('0x46')]('['+_0x1c36ad[_0x08d2('0x12')]()+_0x08d2('0x5b'),_0x1c36ad));if(_0x1c36ad!==_0x08d2('0x4a')){logger[_0x08d2('0x1f')]('['+_0x1c36ad[_0x08d2('0x12')]()+']',_0x08d2('0x5c'));emit(_0x410d79[_0x08d2('0xc')],_0x3bb05f['name'],_0xae91f9[_0x08d2('0x38')],_0x24ce55[_0x08d2('0x5a')]);}})['catch'](function(_0x2e3ca4){logger[_0x08d2('0x11')]('['+_0x1c36ad[_0x08d2('0x12')]()+_0x08d2('0x5d'),util[_0x08d2('0x5e')](_0x2e3ca4,{'showHidden':!![],'depth':null}));});};