Built motion from commit (unavailable).|2.5.31
[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 _0xe626=['email','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','userEmail','length','username','outbound','destcalleridnum','calleridnum','contacts','odata-entityid','substring','enduserId','contacts?$select=telephone1','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','type','idField','toLowerCase','content','ticketType','incident','POST','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','phonecalls','assign','getString','callDirection','queue','headers','lastIndexOf','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','lodash','bluebird','request-promise','util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','localhost','socket.io-emitter','clientId','remoteUri','password','clientSecret','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail'];(function(_0x350ff3,_0x2c05a8){var _0x9d68cb=function(_0x4f3d4c){while(--_0x4f3d4c){_0x350ff3['push'](_0x350ff3['shift']());}};_0x9d68cb(++_0x2c05a8);}(_0xe626,0x9d));var _0x6e62=function(_0x55c5b4,_0x3d1cae){_0x55c5b4=_0x55c5b4-0x0;var _0x110c82=_0xe626[_0x55c5b4];return _0x110c82;};'use strict';var _=require(_0x6e62('0x0'));var BPromise=require(_0x6e62('0x1'));var rp=require(_0x6e62('0x2'));var util=require(_0x6e62('0x3'));var intUtil=require('./util');var md5=require(_0x6e62('0x4'));var Redis=require(_0x6e62('0x5'));var logger=require(_0x6e62('0x6'))(_0x6e62('0x7'));var config=require(_0x6e62('0x8'));config['redis']=_['defaults'](config['redis'],{'host':_0x6e62('0x9'),'port':0x18eb});var io=require(_0x6e62('0xa'))(new Redis(config['redis']));function getAuthToken(_0x32fd89,_0x1dfbaf,_0x16fa52){var _0x3317f1={'method':'POST','uri':_0x1dfbaf,'form':{'client_id':_0x32fd89[_0x6e62('0xb')],'resource':_0x32fd89[_0x6e62('0xc')],'username':_0x32fd89['username'],'password':_0x32fd89[_0x6e62('0xd')],'grant_type':'password','client_secret':_0x32fd89[_0x6e62('0xe')]},'json':!![]};return rp(_0x3317f1)['then'](function(_0x2d8894){return _0x2d8894['access_token'];})[_0x6e62('0xf')](function(_0x103546){logger[_0x6e62('0x10')]('['+[_0x16fa52[_0x6e62('0x11')]()]+_0x6e62('0x12'));return _0x103546[_0x6e62('0x13')];});}function getUser(_0x3b5c11,_0x49be2d,_0x4e7917,_0x44b131,_0x3b980d,_0x5328fe){return new BPromise(function(_0x91facd,_0x40ec9d){return getAuthToken(_0x49be2d,_0x44b131,_0x5328fe)[_0x6e62('0x14')](function(_0x3f4e35){var _0x58d84e={'method':_0x6e62('0x15'),'uri':_0x3b980d+_0x6e62('0x16'),'headers':{'Authorization':_0x6e62('0x17')+_0x3f4e35,'OData-Version':_0x6e62('0x18')},'json':!![]};return rp(_0x58d84e);})[_0x6e62('0x14')](function(_0x31b304){var _0x42c2ea=_0x31b304[_0x6e62('0x19')];var _0x474e58=![];var _0x15bce5=null;if(!_['isNil'](_0x4e7917)){if(intUtil[_0x6e62('0x1a')](_0x4e7917[_0x6e62('0x1b')])){_0x3b5c11['userEmail']=_0x4e7917[_0x6e62('0x1b')];for(_0x15bce5=0x0;_0x15bce5<_0x42c2ea['length'];_0x15bce5++){if(_0x42c2ea[_0x15bce5][_0x6e62('0x1c')]===_0x4e7917[_0x6e62('0x1b')]&&!_0x42c2ea[_0x15bce5][_0x6e62('0x1d')]){_0x474e58=!![];logger[_0x6e62('0x1e')]('['+[_0x5328fe[_0x6e62('0x11')]()]+_0x6e62('0x1f')+_0x42c2ea[_0x15bce5][_0x6e62('0x20')]+'!');_0x3b5c11[_0x6e62('0x21')]=_0x42c2ea[_0x15bce5][_0x6e62('0x20')];}}}}if(!_0x474e58){logger[_0x6e62('0x1e')]('['+[_0x5328fe[_0x6e62('0x11')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x3b5c11[_0x6e62('0x22')]=_0x49be2d['username'];for(_0x15bce5=0x0;_0x15bce5<_0x42c2ea[_0x6e62('0x23')];_0x15bce5++){if(_0x42c2ea[_0x15bce5][_0x6e62('0x1c')]===_0x49be2d[_0x6e62('0x24')]){_0x3b5c11[_0x6e62('0x21')]=_0x42c2ea[_0x15bce5][_0x6e62('0x20')];}}}_0x91facd(_0x3b5c11);})[_0x6e62('0xf')](function(_0x4373b5){_0x40ec9d(_0x4373b5[_0x6e62('0x13')]);});});}function createEndUser(_0x2e4fe1,_0x448691,_0x5a6ffa,_0x33f81c,_0x555793,_0x2f9c68){return new BPromise(function(_0x2f9baf,_0x318fc3){return getAuthToken(_0x448691,_0x5a6ffa,_0x2f9c68)[_0x6e62('0x14')](function(_0x3b7dfa){var _0x3e7c90=_0x2f9c68['toLowerCase']()===_0x6e62('0x25')?_0x555793[_0x6e62('0x26')]:_0x555793[_0x6e62('0x27')];var _0x50ba00={'method':'POST','uri':_0x33f81c+_0x6e62('0x28'),'body':{'telephone1':_0x3e7c90,'fullname':_0x3e7c90,'firstname':_0x3e7c90,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x2e4fe1['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x3b7dfa,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x50ba00);})[_0x6e62('0x14')](function(_0x4c6af1){var _0x2d9172=_0x4c6af1['headers'][_0x6e62('0x29')];var _0x2fb5ce=_0x2d9172[_0x6e62('0x2a')](_0x2d9172['lastIndexOf']('(')+0x1,_0x2d9172['lastIndexOf'](')'));_0x2e4fe1[_0x6e62('0x2b')]=_0x2fb5ce;_0x2f9baf(_0x2e4fe1);})[_0x6e62('0xf')](function(_0x578607){_0x318fc3(_0x578607['message']);});});}function getEndUser(_0x53dfaa,_0x1f2dd2,_0x537f37,_0xde2488,_0x6af555,_0x3dc663){return new BPromise(function(_0xe525c,_0x190e7b){return getAuthToken(_0x1f2dd2,_0x537f37,_0x3dc663)['then'](function(_0x4b8397){var _0x451e19={'method':_0x6e62('0x15'),'uri':_0xde2488+_0x6e62('0x2c'),'headers':{'Authorization':_0x6e62('0x17')+_0x4b8397,'If-None-Match':null,'OData-Version':_0x6e62('0x18')},'json':!![]};return rp(_0x451e19);})[_0x6e62('0x14')](function(_0x9c62b){var _0x310789=null;if(_0x9c62b){var _0x453fd3=_0x9c62b['value'];var _0xfe27ff=![];for(_0x310789=0x0;_0x310789<_0x453fd3[_0x6e62('0x23')];_0x310789++){var _0x20c71e=_0x3dc663['toLowerCase']()===_0x6e62('0x25')?_0x6af555[_0x6e62('0x26')]:_0x6af555['calleridnum'];if(_0x453fd3[_0x310789][_0x6e62('0x2d')]===_0x20c71e){_0xfe27ff=!![];_0x53dfaa[_0x6e62('0x2b')]=_0x453fd3[_0x310789][_0x6e62('0x2e')];}}if(_0xfe27ff){_0xe525c(_0x53dfaa);}else{return createEndUser(_0x53dfaa,_0x1f2dd2,_0x537f37,_0xde2488,_0x6af555,_0x3dc663)[_0x6e62('0x14')](function(_0x304ac1){logger['info']('['+[_0x3dc663[_0x6e62('0x11')]()]+_0x6e62('0x2f'),_0x304ac1[_0x6e62('0x2b')]);_0xe525c(_0x304ac1);});}}else{return createEndUser(_0x53dfaa,_0x1f2dd2,_0x537f37,_0xde2488,_0x6af555,_0x3dc663)[_0x6e62('0x14')](function(_0x3f069c){logger['info']('['+[_0x3dc663[_0x6e62('0x11')]()]+_0x6e62('0x30'),_0x3f069c[_0x6e62('0x2b')]);_0xe525c(_0x3f069c);});}});});}function getCustomFields(_0x50b715,_0x28af80,_0x362944){var _0x5f3898={};if(_0x50b715['length']>0x0){_[_0x6e62('0x31')](_0x50b715,function(_0x1c2ee1){if(_[_0x6e62('0x32')](['string','picklist'],_0x1c2ee1[_0x6e62('0x33')])&&_0x1c2ee1['nameField']&&!_0x1c2ee1['customField']){var _0xb646d4=_0x1c2ee1[_0x6e62('0x34')][_0x6e62('0x35')]();var _0x3f08e3=_0xb646d4[_0x6e62('0x2a')](0x0,_0xb646d4['indexOf']('_'));var _0x180258=_0xb646d4['substring'](_0xb646d4['indexOf']('_')+0x1);if(_0x3f08e3===_0x362944){_0x5f3898[_0x180258]=_0x1c2ee1[_0x6e62('0x36')];}}});}return _0x5f3898;}function getTicket(_0x469fa1,_0x940288,_0x5352d3,_0x1a7e7f,_0x530162,_0x28bf71,_0x32e3ee){return new BPromise(function(_0x4212e6,_0x2d8565){var _0x38a489;return getAuthToken(_0x940288,_0x5352d3,_0x32e3ee)[_0x6e62('0x14')](function(_0x228519){if(_0x28bf71[_0x6e62('0x37')]===_0x6e62('0x38')){_0x38a489={'method':_0x6e62('0x39'),'uri':_0x1a7e7f+'incidents','body':Object['assign']({},{'title':intUtil['getString'](_0x28bf71[_0x6e62('0x3a')],_0x530162,'\x20'),'description':intUtil['getString'](_0x28bf71[_0x6e62('0x3b')],_0x530162,'\x0a'),'customerid_contact@odata.bind':_0x6e62('0x3c')+_0x469fa1['enduserId']+')','ownerid@odata.bind':_0x6e62('0x3d')+_0x469fa1[_0x6e62('0x21')]+')','caseorigincode':'1'},getCustomFields(_0x28bf71[_0x6e62('0x3e')],_0x530162,_0x28bf71[_0x6e62('0x37')])),'headers':{'Authorization':_0x6e62('0x17')+_0x228519,'OData-Version':_0x6e62('0x18')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x28bf71[_0x6e62('0x37')]===_0x6e62('0x3f')){_0x38a489={'method':_0x6e62('0x39'),'uri':_0x1a7e7f+_0x6e62('0x40'),'body':Object[_0x6e62('0x41')]({},{'subject':intUtil[_0x6e62('0x42')](_0x28bf71[_0x6e62('0x3a')],_0x530162,'\x20'),'phonenumber':String(_0x530162['calleridnum']),'description':intUtil[_0x6e62('0x42')](_0x28bf71[_0x6e62('0x3b')],_0x530162,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x469fa1[_0x6e62('0x2b')]+')','ownerid@odata.bind':'/systemusers('+_0x469fa1[_0x6e62('0x21')]+')','directioncode':_0x469fa1[_0x6e62('0x43')]===_0x6e62('0x44')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x469fa1[_0x6e62('0x21')]+')','participationtypemask':_0x469fa1[_0x6e62('0x43')]===_0x6e62('0x44')?0x2:0x1},{'partyid_contact@odata.bind':_0x6e62('0x3c')+_0x469fa1[_0x6e62('0x2b')]+')','participationtypemask':_0x469fa1[_0x6e62('0x43')]===_0x6e62('0x44')?0x1:0x2}]},getCustomFields(_0x28bf71[_0x6e62('0x3e')],_0x530162,_0x28bf71[_0x6e62('0x37')])),'headers':{'Authorization':_0x6e62('0x17')+_0x228519,'OData-Version':_0x6e62('0x18')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x38a489);})['then'](function(_0x4a009d){var _0x2d7732=_0x4a009d[_0x6e62('0x45')][_0x6e62('0x29')];var _0x15b571=_0x2d7732[_0x6e62('0x2a')](_0x2d7732[_0x6e62('0x46')]('(')+0x1,_0x2d7732['lastIndexOf'](')'));_0x469fa1[_0x6e62('0x47')]=_0x15b571;_0x4212e6(_0x469fa1);})['catch'](function(_0x28bcb3){_0x2d8565(_0x28bcb3[_0x6e62('0x13')]);});});}function emit(_0x3f9dd5,_0x7463fd,_0x43afc9,_0x498f95){var _0x353346={'uri':util[_0x6e62('0x48')](_0x6e62('0x49'),_0x3f9dd5,_0x43afc9,_0x498f95)};io['to'](util[_0x6e62('0x48')]('user:%s',_0x7463fd))[_0x6e62('0x4a')]('trigger:browser:url',_0x353346);}exports['cs']=function(_0x925b76,_0x213bf3,_0x37f77e,_0x21ab5d,_0x366cf4,_0x33d4cf,_0x11d1c4,_0x520ca5){var _0xd821ae={};_0x33d4cf['remoteUri']=intUtil[_0x6e62('0x4b')](_0x33d4cf[_0x6e62('0xc')]);_0x33d4cf[_0x6e62('0x4c')]=intUtil[_0x6e62('0x4b')](_0x33d4cf[_0x6e62('0x4c')]);_0xd821ae['callDirection']=_0x520ca5===_0x6e62('0x44')||_0x520ca5==='unmanaged'?_0x6e62('0x44'):_0x6e62('0x25');var _0x1e513a=util['format'](_0x6e62('0x4d'),_0x33d4cf[_0x6e62('0xc')]);var _0x4daa8d=util[_0x6e62('0x48')]('https://login.microsoftonline.com/%s/oauth2/token',_0x33d4cf[_0x6e62('0x4e')]);var _0x5bf3ef=util[_0x6e62('0x48')](_0x6e62('0x4f'),_0x33d4cf['serverUrl'],_0x213bf3[_0x6e62('0x50')],md5(_0x213bf3[_0x6e62('0x50')]));if(_0x366cf4&&_0x366cf4['monitor_format']){logger['info'](_0x6e62('0x51'),_0x6e62('0x52'));_0x213bf3[_0x6e62('0x53')]=_0x5bf3ef;}else if(_0x11d1c4&&_0x11d1c4[_0x6e62('0x54')]&&_0x11d1c4[_0x6e62('0x54')]!==_0x6e62('0x55')){logger[_0x6e62('0x1e')]('[OUTBOUND]',_0x6e62('0x52'));_0x213bf3[_0x6e62('0x53')]=_0x5bf3ef;}else{_0x213bf3[_0x6e62('0x53')]='';}return getUser(_0xd821ae,_0x33d4cf,_0x21ab5d,_0x4daa8d,_0x1e513a,_0x520ca5)[_0x6e62('0x14')](function(_0x109ff5){logger['info']('['+_0x520ca5[_0x6e62('0x11')]()+_0x6e62('0x56'),_0x109ff5['userId']);logger[_0x6e62('0x1e')]('['+_0x520ca5[_0x6e62('0x11')]()+_0x6e62('0x57'),_0x109ff5[_0x6e62('0x22')]);return getEndUser(_0x109ff5,_0x33d4cf,_0x4daa8d,_0x1e513a,_0x213bf3,_0x520ca5);})[_0x6e62('0x14')](function(_0x4d62d8){logger[_0x6e62('0x1e')]('['+_0x520ca5[_0x6e62('0x11')]()+_0x6e62('0x58'),_0x4d62d8['enduserId']);logger[_0x6e62('0x1e')]('['+_0x520ca5[_0x6e62('0x11')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x213bf3[_0x6e62('0x27')]);return getTicket(_0x4d62d8,_0x33d4cf,_0x4daa8d,_0x1e513a,_0x213bf3,_0x37f77e,_0x520ca5);})['then'](function(_0x29b290){logger[_0x6e62('0x1e')](util[_0x6e62('0x48')]('['+_0x520ca5['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x37f77e[_0x6e62('0x37')],_0x29b290[_0x6e62('0x47')]));logger[_0x6e62('0x1e')](util[_0x6e62('0x48')]('['+_0x520ca5[_0x6e62('0x11')]()+_0x6e62('0x59'),_0x520ca5));if(_0x520ca5!==_0x6e62('0x5a')){logger[_0x6e62('0x1e')]('['+_0x520ca5['toUpperCase']()+']',_0x6e62('0x5b'));emit(_0x33d4cf[_0x6e62('0xc')],_0x21ab5d['name'],_0x37f77e[_0x6e62('0x37')],_0x29b290['ticketId']);}})[_0x6e62('0xf')](function(_0x212cab){logger[_0x6e62('0x10')]('['+_0x520ca5[_0x6e62('0x11')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x212cab,{'showHidden':!![],'depth':null}));});};