Built motion from commit c116dc8b.|2.6.30
[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 _0xde39=['assign','getString','Descriptions','/contacts(','Fields','ticketType','queue','callDirection','phonecalls','Subjects','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','openNewTab','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','md5','ioredis','../../../../config/logger','dynamics365','redis','defaults','socket.io-emitter','modernAuthentication','remoteUri','data7','tenantId','CloudProvider','data2','resolve','data5','POST','clientId','username','password','clientSecret','access_token','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','catch','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','odata-entityid','lastIndexOf','calleridnum','&$filter=','\x20eq\x20\x27','replace','%2b','value','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','enduserId','includes','string','customField','idField','substring','indexOf','content','incident','incidents'];(function(_0x240969,_0x331045){var _0x28056b=function(_0x54f158){while(--_0x54f158){_0x240969['push'](_0x240969['shift']());}};_0x28056b(++_0x331045);}(_0xde39,0xfd));var _0x9de3=function(_0x34b1b8,_0x54c9bf){_0x34b1b8=_0x34b1b8-0x0;var _0x542dd8=_0xde39[_0x34b1b8];return _0x542dd8;};'use strict';var _=require(_0x9de3('0x0'));var rp=require(_0x9de3('0x1'));var util=require('util');var intUtil=require('./util');var md5=require(_0x9de3('0x2'));var Redis=require(_0x9de3('0x3'));var logger=require(_0x9de3('0x4'))(_0x9de3('0x5'));var config=require('../../../../config/environment');config[_0x9de3('0x6')]=_[_0x9de3('0x7')](config[_0x9de3('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x9de3('0x8'))(new Redis(config[_0x9de3('0x6')]));function getAuthToken(_0xfcfdb1,_0x3ffd79,_0x4bfa04){if(_0xfcfdb1[_0x9de3('0x9')]){_0xfcfdb1[_0x9de3('0xa')]=_0xfcfdb1['CloudProvider'][_0x9de3('0xb')];_0xfcfdb1[_0x9de3('0xc')]=_0xfcfdb1[_0x9de3('0xd')][_0x9de3('0xe')];return Promise[_0x9de3('0xf')](_0xfcfdb1[_0x9de3('0xd')][_0x9de3('0x10')]);}var _0x37f186={'method':_0x9de3('0x11'),'uri':_0x3ffd79,'form':{'client_id':_0xfcfdb1[_0x9de3('0x12')],'resource':_0xfcfdb1['remoteUri'],'username':_0xfcfdb1[_0x9de3('0x13')],'password':_0xfcfdb1[_0x9de3('0x14')],'grant_type':_0x9de3('0x14'),'client_secret':_0xfcfdb1[_0x9de3('0x15')]},'json':!![]};return rp(_0x37f186)['then'](function(_0x2beaaf){return _0x2beaaf[_0x9de3('0x16')];})['catch'](function(_0x373312){logger[_0x9de3('0x17')]('['+[_0x4bfa04[_0x9de3('0x18')]()]+_0x9de3('0x19'));return _0x373312[_0x9de3('0x1a')];});}function getUser(_0x159a91,_0x2cbd1a,_0x397d5d,_0x17a199,_0xf11907,_0x1cf683){return new Promise(function(_0xb60eae,_0x1d240b){return getAuthToken(_0x2cbd1a,_0x17a199,_0x1cf683)[_0x9de3('0x1b')](function(_0x12ba14){var _0x2327d6={'method':_0x9de3('0x1c'),'uri':_0xf11907+_0x9de3('0x1d'),'headers':{'Authorization':_0x9de3('0x1e')+_0x12ba14,'OData-Version':_0x9de3('0x1f')},'json':!![]};return rp(_0x2327d6);})[_0x9de3('0x1b')](function(_0x4c2ad7){var _0xa18682=_0x4c2ad7['value'];var _0x3b036d=![];var _0x4691c5=null;if(!_[_0x9de3('0x20')](_0x397d5d)){if(intUtil[_0x9de3('0x21')](_0x397d5d[_0x9de3('0x22')])){_0x159a91[_0x9de3('0x23')]=_0x397d5d['email'];for(_0x4691c5=0x0;_0x4691c5<_0xa18682[_0x9de3('0x24')];_0x4691c5++){if(_0xa18682[_0x4691c5][_0x9de3('0x25')]===_0x397d5d[_0x9de3('0x22')]&&!_0xa18682[_0x4691c5][_0x9de3('0x26')]){_0x3b036d=!![];logger[_0x9de3('0x27')]('['+[_0x1cf683['toUpperCase']()]+']\x20Agent\x20found\x20'+_0xa18682[_0x4691c5][_0x9de3('0x28')]+'!');_0x159a91[_0x9de3('0x29')]=_0xa18682[_0x4691c5]['systemuserid'];}}}}if(!_0x3b036d){logger[_0x9de3('0x27')]('['+[_0x1cf683[_0x9de3('0x18')]()]+_0x9de3('0x2a'));_0x159a91['userEmail']=_0x2cbd1a[_0x9de3('0x13')];for(_0x4691c5=0x0;_0x4691c5<_0xa18682[_0x9de3('0x24')];_0x4691c5++){if(_0xa18682[_0x4691c5]['internalemailaddress']===_0x2cbd1a[_0x9de3('0x13')]){_0x159a91[_0x9de3('0x29')]=_0xa18682[_0x4691c5][_0x9de3('0x28')];}}}_0xb60eae(_0x159a91);})[_0x9de3('0x2b')](function(_0x40b0bc){_0x1d240b(_0x40b0bc['message']);});});}function createEndUser(_0x4c4cb7,_0x5cd14f,_0x43f89b,_0x348d50,_0x58cec0,_0x557b00,_0x51253c){return new Promise(function(_0x422f65,_0x4e1767){return getAuthToken(_0x5cd14f,_0x43f89b,_0x557b00)[_0x9de3('0x1b')](function(_0x10e19f){var _0x562432=_0x557b00[_0x9de3('0x2c')]()===_0x9de3('0x2d')?_0x58cec0[_0x9de3('0x2e')]:_0x58cec0['calleridnum'];var _0x2575e9={'method':'POST','uri':_0x348d50+_0x9de3('0x2f'),'body':{'fullname':_0x562432,'firstname':_0x562432,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x9de3('0x30')+_0x4c4cb7[_0x9de3('0x29')]+')'},'headers':{'Authorization':_0x9de3('0x1e')+_0x10e19f,'OData-Version':_0x9de3('0x1f')},'json':!![],'resolveWithFullResponse':!![]};_0x2575e9['body'][_0x51253c]=_0x562432;return rp(_0x2575e9);})[_0x9de3('0x1b')](function(_0x1a4092){var _0x366e09=_0x1a4092['headers'][_0x9de3('0x31')];var _0x53b875=_0x366e09['substring'](_0x366e09[_0x9de3('0x32')]('(')+0x1,_0x366e09[_0x9de3('0x32')](')'));_0x4c4cb7['enduserId']=_0x53b875;_0x422f65(_0x4c4cb7);})[_0x9de3('0x2b')](function(_0x5ad35d){_0x4e1767(_0x5ad35d['message']);});});}function getEndUser(_0x443ff0,_0x8ff065,_0x411067,_0x191351,_0x2780dd,_0x23d348,_0x224867,_0x389e12){var _0x33abc1=_0x23d348['toLowerCase']()===_0x9de3('0x2d')?_0x2780dd['destcalleridnum']:_0x2780dd[_0x9de3('0x33')];return getAuthToken(_0x8ff065,_0x411067,_0x23d348)[_0x9de3('0x1b')](function(_0x2f5ac8){_0x389e12=_0x389e12?_0x389e12:'telephone1';var _0xceb5c5={'method':_0x9de3('0x1c'),'uri':_0x191351+'contacts?$select='+_0x389e12+_0x9de3('0x34')+_0x389e12+_0x9de3('0x35')+_0x33abc1[_0x9de3('0x36')]('+',_0x9de3('0x37'))+'\x27','headers':{'Authorization':_0x9de3('0x1e')+_0x2f5ac8,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xceb5c5);})['then'](function(_0x391f20){var _0x3841af=![];if(!_0x391f20)return _0x3841af;var _0x465471=_0x391f20[_0x9de3('0x38')];for(var _0x3a506f=0x0;_0x3a506f<_0x465471[_0x9de3('0x24')];_0x3a506f++){if(_0x465471[_0x3a506f][_0x389e12]===_0x33abc1){_0x3841af=!![];_0x443ff0['enduserId']=_0x465471[_0x3a506f][_0x9de3('0x39')];}}return _0x3841af;})[_0x9de3('0x1b')](function(_0x539472){if(_0x539472)return _0x443ff0;if(_0x224867===_0x9de3('0x3a')){logger[_0x9de3('0x27')]('['+[_0x23d348[_0x9de3('0x18')]()]+_0x9de3('0x3b'));return _0x443ff0;}return createEndUser(_0x443ff0,_0x8ff065,_0x411067,_0x191351,_0x2780dd,_0x23d348,_0x389e12)[_0x9de3('0x1b')](function(_0x13ae9e){logger[_0x9de3('0x27')]('['+[_0x23d348[_0x9de3('0x18')]()]+_0x9de3('0x3c'),_0x13ae9e[_0x9de3('0x3d')]);return _0x13ae9e;});});}function getCustomFields(_0x4effd2,_0x2c76c9,_0x1667e9){var _0x366b2c={};if(_0x4effd2['length']>0x0){_['forEach'](_0x4effd2,function(_0x1dc2ce){if(_[_0x9de3('0x3e')]([_0x9de3('0x3f'),'picklist'],_0x1dc2ce['type'])&&_0x1dc2ce['nameField']&&!_0x1dc2ce[_0x9de3('0x40')]){var _0x3400de=_0x1dc2ce[_0x9de3('0x41')][_0x9de3('0x2c')]();var _0x2abf2b=_0x3400de[_0x9de3('0x42')](0x0,_0x3400de[_0x9de3('0x43')]('_'));var _0x11d0a5=_0x3400de[_0x9de3('0x42')](_0x3400de['indexOf']('_')+0x1);if(_0x2abf2b===_0x1667e9){_0x366b2c[_0x11d0a5]=_0x1dc2ce[_0x9de3('0x44')];}}});}return _0x366b2c;}function getTicket(_0x40dacf,_0x40aad2,_0x59edbd,_0x22edf2,_0x5e311a,_0x10910d,_0x346261){return new Promise(function(_0x3e743f,_0x11c627){var _0x19c41c;return getAuthToken(_0x40aad2,_0x59edbd,_0x346261)[_0x9de3('0x1b')](function(_0x2f9151){if(_0x10910d['ticketType']===_0x9de3('0x45')){_0x19c41c={'method':_0x9de3('0x11'),'uri':_0x22edf2+_0x9de3('0x46'),'body':Object[_0x9de3('0x47')]({},{'title':intUtil[_0x9de3('0x48')](_0x10910d['Subjects'],_0x5e311a,'\x20'),'description':intUtil['getString'](_0x10910d[_0x9de3('0x49')],_0x5e311a,'\x0a'),'customerid_contact@odata.bind':_0x40dacf[_0x9de3('0x3d')]?_0x9de3('0x4a')+_0x40dacf[_0x9de3('0x3d')]+')':undefined,'ownerid@odata.bind':_0x9de3('0x30')+_0x40dacf[_0x9de3('0x29')]+')','caseorigincode':'1'},getCustomFields(_0x10910d[_0x9de3('0x4b')],_0x5e311a,_0x10910d[_0x9de3('0x4c')])),'headers':{'Authorization':'Bearer\x20'+_0x2f9151,'OData-Version':_0x9de3('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x10910d[_0x9de3('0x4c')]==='phonecall'){var _0x4674ed=_0x40dacf[_0x9de3('0x3d')]?[{'partyid_systemuser@odata.bind':_0x9de3('0x30')+_0x40dacf[_0x9de3('0x29')]+')','participationtypemask':_0x40dacf['callDirection']===_0x9de3('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0x9de3('0x4a')+_0x40dacf['enduserId']+')','participationtypemask':_0x40dacf[_0x9de3('0x4e')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x40dacf['userId']+')','participationtypemask':_0x40dacf['callDirection']===_0x9de3('0x4d')?0x2:0x1}];_0x19c41c={'method':'POST','uri':_0x22edf2+_0x9de3('0x4f'),'body':Object[_0x9de3('0x47')]({},{'subject':intUtil['getString'](_0x10910d[_0x9de3('0x50')],_0x5e311a,'\x20'),'phonenumber':String(_0x5e311a['calleridnum']),'description':intUtil[_0x9de3('0x48')](_0x10910d[_0x9de3('0x49')],_0x5e311a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x40dacf[_0x9de3('0x3d')]?_0x9de3('0x4a')+_0x40dacf[_0x9de3('0x3d')]+')':undefined,'ownerid@odata.bind':_0x9de3('0x30')+_0x40dacf[_0x9de3('0x29')]+')','directioncode':_0x40dacf[_0x9de3('0x4e')]===_0x9de3('0x4d')?![]:!![],'phonecall_activity_parties':_0x4674ed},getCustomFields(_0x10910d[_0x9de3('0x4b')],_0x5e311a,_0x10910d['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x2f9151,'OData-Version':_0x9de3('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x19c41c);})[_0x9de3('0x1b')](function(_0x4bb43f){var _0x47f171=_0x4bb43f[_0x9de3('0x51')]['odata-entityid'];var _0x425cb1=_0x47f171[_0x9de3('0x42')](_0x47f171[_0x9de3('0x32')]('(')+0x1,_0x47f171[_0x9de3('0x32')](')'));_0x40dacf[_0x9de3('0x52')]=_0x425cb1;_0x3e743f(_0x40dacf);})['catch'](function(_0xf586ba){_0x11c627(_0xf586ba['message']);});});}function emit(_0x53406e,_0x4d1108,_0x4c75e6,_0x30c97d){var _0x373d77={'uri':util[_0x9de3('0x53')](_0x9de3('0x54'),_0x53406e,_0x4c75e6,_0x30c97d)};io['to'](util[_0x9de3('0x53')]('user:%s',_0x4d1108))['emit'](_0x9de3('0x55'),_0x373d77);}exports['cs']=function(_0x377134,_0x562e48,_0x127654,_0x5e9fe6,_0x47c1d5,_0x5ab8fe,_0x1b5134,_0x7b1948){var _0x31421d={};_0x5ab8fe['remoteUri']=_0x5ab8fe[_0x9de3('0x9')]?intUtil[_0x9de3('0x56')](_0x5ab8fe[_0x9de3('0xd')][_0x9de3('0xb')]):intUtil[_0x9de3('0x56')](_0x5ab8fe[_0x9de3('0xa')]);_0x5ab8fe['serverUrl']=intUtil['stripTrailingSlash'](_0x5ab8fe[_0x9de3('0x57')]);_0x31421d[_0x9de3('0x4e')]=_0x7b1948===_0x9de3('0x4d')||_0x7b1948==='unmanaged'?_0x9de3('0x4d'):_0x9de3('0x2d');var _0x1c8280=_0x5ab8fe[_0x9de3('0x9')]?util[_0x9de3('0x53')](_0x9de3('0x58'),_0x5ab8fe[_0x9de3('0xd')]['data7']):util[_0x9de3('0x53')](_0x9de3('0x58'),_0x5ab8fe[_0x9de3('0xa')]);var _0x4ec4c4=util[_0x9de3('0x53')]('https://login.microsoftonline.com/%s/oauth2/token',_0x5ab8fe['tenantId']);var _0x2eb545=util['format'](_0x9de3('0x59'),_0x5ab8fe[_0x9de3('0x57')],_0x562e48[_0x9de3('0x5a')],md5(_0x562e48[_0x9de3('0x5a')]));if(_0x47c1d5&&_0x47c1d5[_0x9de3('0x5b')]){logger[_0x9de3('0x27')]('[QUEUE]',_0x9de3('0x5c'));_0x562e48[_0x9de3('0x5d')]=_0x2eb545;}else if(_0x1b5134&&_0x1b5134[_0x9de3('0x5e')]&&_0x1b5134[_0x9de3('0x5e')]!==_0x9de3('0x5f')){logger['info']('[OUTBOUND]',_0x9de3('0x5c'));_0x562e48['recordingURL']=_0x2eb545;}else{_0x562e48[_0x9de3('0x5d')]='';}return getUser(_0x31421d,_0x5ab8fe,_0x5e9fe6,_0x4ec4c4,_0x1c8280,_0x7b1948)['then'](function(_0x8c1a3){logger[_0x9de3('0x27')]('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x60'),_0x8c1a3[_0x9de3('0x29')]);logger[_0x9de3('0x27')]('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x61'),_0x8c1a3[_0x9de3('0x23')]);return getEndUser(_0x8c1a3,_0x5ab8fe,_0x4ec4c4,_0x1c8280,_0x562e48,_0x7b1948,_0x127654[_0x9de3('0x62')],_0x127654['additionalSearchContact']);})[_0x9de3('0x1b')](function(_0x1281bc){logger[_0x9de3('0x27')]('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x63'),_0x1281bc[_0x9de3('0x3d')]);logger['info']('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x64'),_0x562e48[_0x9de3('0x33')]);return getTicket(_0x1281bc,_0x5ab8fe,_0x4ec4c4,_0x1c8280,_0x562e48,_0x127654,_0x7b1948);})[_0x9de3('0x1b')](function(_0x379d83){logger[_0x9de3('0x27')](util[_0x9de3('0x53')]('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x65'),_0x127654[_0x9de3('0x4c')],_0x379d83['ticketId']));logger[_0x9de3('0x27')](util[_0x9de3('0x53')]('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x66'),_0x7b1948));if(_0x7b1948!==_0x9de3('0x67')&&_0x127654[_0x9de3('0x68')]){logger[_0x9de3('0x27')]('['+_0x7b1948[_0x9de3('0x18')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x5ab8fe[_0x9de3('0xa')],_0x5e9fe6[_0x9de3('0x69')],_0x127654[_0x9de3('0x4c')],_0x379d83[_0x9de3('0x52')]);}})[_0x9de3('0x2b')](function(_0x7b9257){logger[_0x9de3('0x17')]('['+_0x7b1948[_0x9de3('0x18')]()+_0x9de3('0x6a'),_0x7b9257[_0x9de3('0x1a')]);console[_0x9de3('0x17')](_0x9de3('0x6b'),_0x7b9257);});};