Built motion from commit 10af8726.|2.6.34
[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 _0x6ea4=[']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','defaults','localhost','socket.io-emitter','redis','remoteUri','CloudProvider','data7','data2','data5','POST','clientId','username','password','then','access_token','catch','error',']\x20Wrong\x20credentials!','GET','Bearer\x20','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info','toUpperCase','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','message','destcalleridnum','calleridnum','contacts','/systemusers(','body','odata-entityid','lastIndexOf','enduserId','outbound','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','4.0',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','substring','indexOf','content','incident','incidents','assign','getString','Descriptions','/contacts(','Fields','ticketType','phonecall','queue','callDirection','phonecalls','Subjects','headers','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact'];(function(_0x57f540,_0x41a003){var _0x3580a9=function(_0x556d54){while(--_0x556d54){_0x57f540['push'](_0x57f540['shift']());}};_0x3580a9(++_0x41a003);}(_0x6ea4,0x78));var _0x46ea=function(_0x156e15,_0x2d7b11){_0x156e15=_0x156e15-0x0;var _0x2458bf=_0x6ea4[_0x156e15];return _0x2458bf;};'use strict';var _=require(_0x46ea('0x0'));var rp=require('request-promise');var util=require(_0x46ea('0x1'));var intUtil=require(_0x46ea('0x2'));var md5=require(_0x46ea('0x3'));var Redis=require(_0x46ea('0x4'));var logger=require(_0x46ea('0x5'))(_0x46ea('0x6'));var config=require(_0x46ea('0x7'));config['redis']=_[_0x46ea('0x8')](config['redis'],{'host':_0x46ea('0x9'),'port':0x18eb});var io=require(_0x46ea('0xa'))(new Redis(config[_0x46ea('0xb')]));function getAuthToken(_0x9c9575,_0x5c7c10,_0x5959a8){if(_0x9c9575['modernAuthentication']){_0x9c9575[_0x46ea('0xc')]=_0x9c9575[_0x46ea('0xd')][_0x46ea('0xe')];_0x9c9575['tenantId']=_0x9c9575['CloudProvider'][_0x46ea('0xf')];return Promise['resolve'](_0x9c9575[_0x46ea('0xd')][_0x46ea('0x10')]);}var _0x576645={'method':_0x46ea('0x11'),'uri':_0x5c7c10,'form':{'client_id':_0x9c9575[_0x46ea('0x12')],'resource':_0x9c9575[_0x46ea('0xc')],'username':_0x9c9575[_0x46ea('0x13')],'password':_0x9c9575['password'],'grant_type':_0x46ea('0x14'),'client_secret':_0x9c9575['clientSecret']},'json':!![]};return rp(_0x576645)[_0x46ea('0x15')](function(_0x261412){return _0x261412[_0x46ea('0x16')];})[_0x46ea('0x17')](function(_0x20aa54){logger[_0x46ea('0x18')]('['+[_0x5959a8['toUpperCase']()]+_0x46ea('0x19'));return _0x20aa54['message'];});}function getUser(_0x3fe920,_0x2c068c,_0xc120a3,_0x565011,_0x285e84,_0x321f12){return new Promise(function(_0xb98cdd,_0x31e8a2){return getAuthToken(_0x2c068c,_0x565011,_0x321f12)[_0x46ea('0x15')](function(_0x352f6e){var _0x4e585c={'method':_0x46ea('0x1a'),'uri':_0x285e84+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x46ea('0x1b')+_0x352f6e,'OData-Version':'4.0'},'json':!![]};return rp(_0x4e585c);})[_0x46ea('0x15')](function(_0x182170){var _0x30b521=_0x182170[_0x46ea('0x1c')];var _0x446978=![];var _0x5d14bd=null;if(!_[_0x46ea('0x1d')](_0xc120a3)){if(intUtil[_0x46ea('0x1e')](_0xc120a3[_0x46ea('0x1f')])){_0x3fe920['userEmail']=_0xc120a3[_0x46ea('0x1f')];for(_0x5d14bd=0x0;_0x5d14bd<_0x30b521[_0x46ea('0x20')];_0x5d14bd++){if(_0x30b521[_0x5d14bd][_0x46ea('0x21')]===_0xc120a3[_0x46ea('0x1f')]&&!_0x30b521[_0x5d14bd][_0x46ea('0x22')]){_0x446978=!![];logger[_0x46ea('0x23')]('['+[_0x321f12[_0x46ea('0x24')]()]+']\x20Agent\x20found\x20'+_0x30b521[_0x5d14bd][_0x46ea('0x25')]+'!');_0x3fe920[_0x46ea('0x26')]=_0x30b521[_0x5d14bd][_0x46ea('0x25')];}}}}if(!_0x446978){logger[_0x46ea('0x23')]('['+[_0x321f12['toUpperCase']()]+_0x46ea('0x27'));_0x3fe920[_0x46ea('0x28')]=_0x2c068c['username'];for(_0x5d14bd=0x0;_0x5d14bd<_0x30b521[_0x46ea('0x20')];_0x5d14bd++){if(_0x30b521[_0x5d14bd][_0x46ea('0x21')]===_0x2c068c['username']){_0x3fe920[_0x46ea('0x26')]=_0x30b521[_0x5d14bd][_0x46ea('0x25')];}}}_0xb98cdd(_0x3fe920);})['catch'](function(_0x566ffb){_0x31e8a2(_0x566ffb[_0x46ea('0x29')]);});});}function createEndUser(_0x59e89b,_0x8696f2,_0x128fa6,_0x5bb36d,_0x5ecf26,_0x15ced9,_0x5f2c68){return new Promise(function(_0xb1c0d2,_0x513309){return getAuthToken(_0x8696f2,_0x128fa6,_0x15ced9)[_0x46ea('0x15')](function(_0xbcf541){var _0x1d674d=_0x15ced9['toLowerCase']()==='outbound'?_0x5ecf26[_0x46ea('0x2a')]:_0x5ecf26[_0x46ea('0x2b')];var _0x1e1616={'method':_0x46ea('0x11'),'uri':_0x5bb36d+_0x46ea('0x2c'),'body':{'fullname':_0x1d674d,'firstname':_0x1d674d,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x46ea('0x2d')+_0x59e89b[_0x46ea('0x26')]+')'},'headers':{'Authorization':_0x46ea('0x1b')+_0xbcf541,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x1e1616[_0x46ea('0x2e')][_0x5f2c68]=_0x1d674d;return rp(_0x1e1616);})[_0x46ea('0x15')](function(_0x11a0e0){var _0x2a4296=_0x11a0e0['headers'][_0x46ea('0x2f')];var _0x402f87=_0x2a4296['substring'](_0x2a4296[_0x46ea('0x30')]('(')+0x1,_0x2a4296[_0x46ea('0x30')](')'));_0x59e89b[_0x46ea('0x31')]=_0x402f87;_0xb1c0d2(_0x59e89b);})[_0x46ea('0x17')](function(_0x1d82a5){_0x513309(_0x1d82a5[_0x46ea('0x29')]);});});}function getEndUser(_0x3545ba,_0x15d07f,_0x415312,_0x101836,_0x5da2fa,_0x46b85a,_0x419e68,_0x5f2cf8){var _0x13c2ba=_0x46b85a['toLowerCase']()===_0x46ea('0x32')?_0x5da2fa[_0x46ea('0x2a')]:_0x5da2fa['calleridnum'];return getAuthToken(_0x15d07f,_0x415312,_0x46b85a)[_0x46ea('0x15')](function(_0x245a4e){_0x5f2cf8=_0x5f2cf8?_0x5f2cf8:_0x46ea('0x33');var _0x81cc63={'method':_0x46ea('0x1a'),'uri':_0x101836+_0x46ea('0x34')+_0x5f2cf8+_0x46ea('0x35')+_0x5f2cf8+_0x46ea('0x36')+_0x13c2ba[_0x46ea('0x37')]('+','%2b')+'\x27','headers':{'Authorization':_0x46ea('0x1b')+_0x245a4e,'If-None-Match':null,'OData-Version':_0x46ea('0x38')},'json':!![]};return rp(_0x81cc63);})[_0x46ea('0x15')](function(_0x27b4e3){var _0x3b72d3=![];if(!_0x27b4e3)return _0x3b72d3;var _0x405f91=_0x27b4e3[_0x46ea('0x1c')];for(var _0x307045=0x0;_0x307045<_0x405f91['length'];_0x307045++){if(_0x405f91[_0x307045][_0x5f2cf8]===_0x13c2ba){_0x3b72d3=!![];_0x3545ba[_0x46ea('0x31')]=_0x405f91[_0x307045]['contactid'];}}return _0x3b72d3;})[_0x46ea('0x15')](function(_0x2c62ef){if(_0x2c62ef)return _0x3545ba;if(_0x419e68==='nothing'){logger[_0x46ea('0x23')]('['+[_0x46b85a[_0x46ea('0x24')]()]+_0x46ea('0x39'));return _0x3545ba;}return createEndUser(_0x3545ba,_0x15d07f,_0x415312,_0x101836,_0x5da2fa,_0x46b85a,_0x5f2cf8)[_0x46ea('0x15')](function(_0x269ed7){logger[_0x46ea('0x23')]('['+[_0x46b85a[_0x46ea('0x24')]()]+_0x46ea('0x3a'),_0x269ed7[_0x46ea('0x31')]);return _0x269ed7;});});}function getCustomFields(_0x242eed,_0x554bb4,_0x49b32e){var _0x156728={};if(_0x242eed[_0x46ea('0x20')]>0x0){_[_0x46ea('0x3b')](_0x242eed,function(_0x45a785){if(_[_0x46ea('0x3c')]([_0x46ea('0x3d'),_0x46ea('0x3e')],_0x45a785[_0x46ea('0x3f')])&&_0x45a785[_0x46ea('0x40')]&&!_0x45a785[_0x46ea('0x41')]){var _0x319ea8=_0x45a785['idField'][_0x46ea('0x42')]();var _0x1949bb=_0x319ea8[_0x46ea('0x43')](0x0,_0x319ea8[_0x46ea('0x44')]('_'));var _0x22849e=_0x319ea8['substring'](_0x319ea8[_0x46ea('0x44')]('_')+0x1);if(_0x1949bb===_0x49b32e){_0x156728[_0x22849e]=_0x45a785[_0x46ea('0x45')];}}});}return _0x156728;}function getTicket(_0x3966de,_0x255e44,_0x1bf144,_0x5248cd,_0x423127,_0x3f2ce6,_0x11dd0c){return new Promise(function(_0x594f90,_0x2ad70a){var _0x4ab533;return getAuthToken(_0x255e44,_0x1bf144,_0x11dd0c)[_0x46ea('0x15')](function(_0x34c532){if(_0x3f2ce6['ticketType']===_0x46ea('0x46')){_0x4ab533={'method':'POST','uri':_0x5248cd+_0x46ea('0x47'),'body':Object[_0x46ea('0x48')]({},{'title':intUtil[_0x46ea('0x49')](_0x3f2ce6['Subjects'],_0x423127,'\x20'),'description':intUtil[_0x46ea('0x49')](_0x3f2ce6[_0x46ea('0x4a')],_0x423127,'\x0a'),'customerid_contact@odata.bind':_0x3966de[_0x46ea('0x31')]?_0x46ea('0x4b')+_0x3966de[_0x46ea('0x31')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x3966de[_0x46ea('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x3f2ce6[_0x46ea('0x4c')],_0x423127,_0x3f2ce6[_0x46ea('0x4d')])),'headers':{'Authorization':_0x46ea('0x1b')+_0x34c532,'OData-Version':_0x46ea('0x38')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3f2ce6['ticketType']===_0x46ea('0x4e')){var _0x1b1b8e=_0x3966de[_0x46ea('0x31')]?[{'partyid_systemuser@odata.bind':_0x46ea('0x2d')+_0x3966de[_0x46ea('0x26')]+')','participationtypemask':_0x3966de['callDirection']===_0x46ea('0x4f')?0x2:0x1},{'partyid_contact@odata.bind':_0x46ea('0x4b')+_0x3966de['enduserId']+')','participationtypemask':_0x3966de[_0x46ea('0x50')]===_0x46ea('0x4f')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x3966de[_0x46ea('0x26')]+')','participationtypemask':_0x3966de['callDirection']===_0x46ea('0x4f')?0x2:0x1}];_0x4ab533={'method':_0x46ea('0x11'),'uri':_0x5248cd+_0x46ea('0x51'),'body':Object[_0x46ea('0x48')]({},{'subject':intUtil[_0x46ea('0x49')](_0x3f2ce6[_0x46ea('0x52')],_0x423127,'\x20'),'phonenumber':String(_0x423127[_0x46ea('0x2b')]),'description':intUtil[_0x46ea('0x49')](_0x3f2ce6[_0x46ea('0x4a')],_0x423127,'\x0a'),'regardingobjectid_contact@odata.bind':_0x3966de[_0x46ea('0x31')]?_0x46ea('0x4b')+_0x3966de[_0x46ea('0x31')]+')':undefined,'ownerid@odata.bind':_0x46ea('0x2d')+_0x3966de[_0x46ea('0x26')]+')','directioncode':_0x3966de[_0x46ea('0x50')]==='queue'?![]:!![],'phonecall_activity_parties':_0x1b1b8e},getCustomFields(_0x3f2ce6[_0x46ea('0x4c')],_0x423127,_0x3f2ce6[_0x46ea('0x4d')])),'headers':{'Authorization':'Bearer\x20'+_0x34c532,'OData-Version':_0x46ea('0x38')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4ab533);})[_0x46ea('0x15')](function(_0x3a443f){var _0x7fad66=_0x3a443f[_0x46ea('0x53')][_0x46ea('0x2f')];var _0x3307be=_0x7fad66[_0x46ea('0x43')](_0x7fad66[_0x46ea('0x30')]('(')+0x1,_0x7fad66[_0x46ea('0x30')](')'));_0x3966de[_0x46ea('0x54')]=_0x3307be;_0x594f90(_0x3966de);})[_0x46ea('0x17')](function(_0xaf4a3){_0x2ad70a(_0xaf4a3[_0x46ea('0x29')]);});});}function emit(_0x4e9fd1,_0x12056f,_0x542824,_0xd2ac8c){var _0xf72280={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x4e9fd1,_0x542824,_0xd2ac8c)};io['to'](util[_0x46ea('0x55')](_0x46ea('0x56'),_0x12056f))[_0x46ea('0x57')](_0x46ea('0x58'),_0xf72280);}exports['cs']=function(_0x2faa27,_0x533764,_0x5ec562,_0x4053d1,_0x4243de,_0x3046d1,_0xf09e0,_0x30815e){var _0x46f191={};_0x3046d1[_0x46ea('0xc')]=_0x3046d1['modernAuthentication']?intUtil[_0x46ea('0x59')](_0x3046d1[_0x46ea('0xd')][_0x46ea('0xe')]):intUtil[_0x46ea('0x59')](_0x3046d1[_0x46ea('0xc')]);_0x3046d1[_0x46ea('0x5a')]=intUtil['stripTrailingSlash'](_0x3046d1[_0x46ea('0x5a')]);_0x46f191[_0x46ea('0x50')]=_0x30815e==='queue'||_0x30815e===_0x46ea('0x5b')?'queue':_0x46ea('0x32');var _0x3f0692=_0x3046d1['modernAuthentication']?util[_0x46ea('0x55')](_0x46ea('0x5c'),_0x3046d1['CloudProvider']['data7']):util['format']('%s/api/data/v9.0/',_0x3046d1['remoteUri']);var _0xb4c876=util['format'](_0x46ea('0x5d'),_0x3046d1['tenantId']);var _0x129435=util[_0x46ea('0x55')](_0x46ea('0x5e'),_0x3046d1[_0x46ea('0x5a')],_0x533764['uniqueid'],md5(_0x533764[_0x46ea('0x5f')]));if(_0x4243de&&_0x4243de['monitor_format']){logger['info']('[QUEUE]',_0x46ea('0x60'));_0x533764['recordingURL']=_0x129435;}else if(_0xf09e0&&_0xf09e0['recordingFormat']&&_0xf09e0['recordingFormat']!==_0x46ea('0x61')){logger[_0x46ea('0x23')](_0x46ea('0x62'),'Recording\x20is\x20enabled!');_0x533764[_0x46ea('0x63')]=_0x129435;}else{_0x533764[_0x46ea('0x63')]='';}return getUser(_0x46f191,_0x3046d1,_0x4053d1,_0xb4c876,_0x3f0692,_0x30815e)[_0x46ea('0x15')](function(_0x319bff){logger[_0x46ea('0x23')]('['+_0x30815e['toUpperCase']()+_0x46ea('0x64'),_0x319bff[_0x46ea('0x26')]);logger[_0x46ea('0x23')]('['+_0x30815e[_0x46ea('0x24')]()+_0x46ea('0x65'),_0x319bff[_0x46ea('0x28')]);return getEndUser(_0x319bff,_0x3046d1,_0xb4c876,_0x3f0692,_0x533764,_0x30815e,_0x5ec562[_0x46ea('0x66')],_0x5ec562[_0x46ea('0x67')]);})[_0x46ea('0x15')](function(_0x373ea9){logger[_0x46ea('0x23')]('['+_0x30815e[_0x46ea('0x24')]()+_0x46ea('0x68'),_0x373ea9[_0x46ea('0x31')]);logger[_0x46ea('0x23')]('['+_0x30815e[_0x46ea('0x24')]()+_0x46ea('0x69'),_0x533764[_0x46ea('0x2b')]);return getTicket(_0x373ea9,_0x3046d1,_0xb4c876,_0x3f0692,_0x533764,_0x5ec562,_0x30815e);})[_0x46ea('0x15')](function(_0x3e3678){logger[_0x46ea('0x23')](util['format']('['+_0x30815e['toUpperCase']()+_0x46ea('0x6a'),_0x5ec562[_0x46ea('0x4d')],_0x3e3678['ticketId']));logger[_0x46ea('0x23')](util[_0x46ea('0x55')]('['+_0x30815e[_0x46ea('0x24')]()+']\x20Call\x20direction:\x20%s',_0x30815e));if(_0x30815e!==_0x46ea('0x5b')&&_0x5ec562[_0x46ea('0x6b')]){logger[_0x46ea('0x23')]('['+_0x30815e[_0x46ea('0x24')]()+']',_0x46ea('0x6c'));emit(_0x3046d1[_0x46ea('0xc')],_0x4053d1[_0x46ea('0x6d')],_0x5ec562[_0x46ea('0x4d')],_0x3e3678[_0x46ea('0x54')]);}})[_0x46ea('0x17')](function(_0x117942){logger[_0x46ea('0x18')]('['+_0x30815e[_0x46ea('0x24')]()+_0x46ea('0x6e'),_0x117942[_0x46ea('0x29')]);console[_0x46ea('0x18')](_0x46ea('0x6f'),_0x117942);});};