Built motion from commit (unavailable).|2.5.3
[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 _0x1521=['content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','email','userEmail','length','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','userId','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','destcalleridnum','calleridnum','/systemusers(','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','GET','contacts?$select=telephone1','toLowerCase','outbound','telephone1',']\x20Enduser\x20created!','string','nameField','customField','idField','indexOf'];(function(_0x2e7a43,_0x3b3df4){var _0x52e9e1=function(_0x2c08cf){while(--_0x2c08cf){_0x2e7a43['push'](_0x2e7a43['shift']());}};_0x52e9e1(++_0x3b3df4);}(_0x1521,0x19d));var _0x1152=function(_0x51674a,_0x77ccff){_0x51674a=_0x51674a-0x0;var _0x13fca6=_0x1521[_0x51674a];return _0x13fca6;};'use strict';var _=require(_0x1152('0x0'));var BPromise=require(_0x1152('0x1'));var rp=require('request-promise');var util=require(_0x1152('0x2'));var intUtil=require(_0x1152('0x3'));var md5=require(_0x1152('0x4'));var Redis=require(_0x1152('0x5'));var logger=require(_0x1152('0x6'))(_0x1152('0x7'));var config=require(_0x1152('0x8'));config[_0x1152('0x9')]=_[_0x1152('0xa')](config[_0x1152('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x1152('0xb'))(new Redis(config[_0x1152('0x9')]));function getAuthToken(_0x340eae,_0x23a150,_0x25e0de){var _0x446b6b={'method':_0x1152('0xc'),'uri':_0x23a150,'form':{'client_id':_0x340eae[_0x1152('0xd')],'resource':_0x340eae[_0x1152('0xe')],'username':_0x340eae[_0x1152('0xf')],'password':_0x340eae[_0x1152('0x10')],'grant_type':_0x1152('0x10'),'client_secret':_0x340eae[_0x1152('0x11')]},'json':!![]};return rp(_0x446b6b)[_0x1152('0x12')](function(_0x1b193c){return _0x1b193c[_0x1152('0x13')];})[_0x1152('0x14')](function(_0x449070){logger[_0x1152('0x15')]('['+[_0x25e0de[_0x1152('0x16')]()]+']\x20Wrong\x20credentials!');return _0x449070[_0x1152('0x17')];});}function getUser(_0x47853f,_0x8bea0b,_0x2e2e7a,_0x56b5f8,_0x564438,_0x3c992d){return new BPromise(function(_0x1a653b,_0x34573e){return getAuthToken(_0x8bea0b,_0x56b5f8,_0x3c992d)[_0x1152('0x12')](function(_0x29d963){var _0x2468ae={'method':'GET','uri':_0x564438+_0x1152('0x18'),'headers':{'Authorization':_0x1152('0x19')+_0x29d963,'OData-Version':'4.0'},'json':!![]};return rp(_0x2468ae);})[_0x1152('0x12')](function(_0x1947f9){var _0x5977ae=_0x1947f9[_0x1152('0x1a')];var _0x6a305c=![];var _0x4eb8ac=null;if(!_['isNil'](_0x2e2e7a)){if(intUtil['validateEmail'](_0x2e2e7a[_0x1152('0x1b')])){_0x47853f[_0x1152('0x1c')]=_0x2e2e7a[_0x1152('0x1b')];for(_0x4eb8ac=0x0;_0x4eb8ac<_0x5977ae[_0x1152('0x1d')];_0x4eb8ac++){if(_0x5977ae[_0x4eb8ac][_0x1152('0x1e')]===_0x2e2e7a['email']&&!_0x5977ae[_0x4eb8ac][_0x1152('0x1f')]){_0x6a305c=!![];logger['info']('['+[_0x3c992d['toUpperCase']()]+_0x1152('0x20')+_0x5977ae[_0x4eb8ac][_0x1152('0x21')]+'!');_0x47853f[_0x1152('0x22')]=_0x5977ae[_0x4eb8ac][_0x1152('0x21')];}}}}if(!_0x6a305c){logger[_0x1152('0x23')]('['+[_0x3c992d[_0x1152('0x16')]()]+_0x1152('0x24'));_0x47853f[_0x1152('0x1c')]=_0x8bea0b['username'];for(_0x4eb8ac=0x0;_0x4eb8ac<_0x5977ae[_0x1152('0x1d')];_0x4eb8ac++){if(_0x5977ae[_0x4eb8ac][_0x1152('0x1e')]===_0x8bea0b[_0x1152('0xf')]){_0x47853f[_0x1152('0x22')]=_0x5977ae[_0x4eb8ac][_0x1152('0x21')];}}}_0x1a653b(_0x47853f);})[_0x1152('0x14')](function(_0x45c7cb){_0x34573e(_0x45c7cb[_0x1152('0x17')]);});});}function createEndUser(_0x48e542,_0x23d635,_0x27be86,_0x24ec50,_0x39ca60,_0x5cf272){return new BPromise(function(_0x4f230d,_0x240c7b){return getAuthToken(_0x23d635,_0x27be86,_0x5cf272)[_0x1152('0x12')](function(_0x27e87d){var _0x43e81b=_0x5cf272['toLowerCase']()==='outbound'?_0x39ca60[_0x1152('0x25')]:_0x39ca60[_0x1152('0x26')];var _0x3aead2={'method':_0x1152('0xc'),'uri':_0x24ec50+'contacts','body':{'telephone1':_0x43e81b,'fullname':_0x43e81b,'firstname':_0x43e81b,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x1152('0x27')+_0x48e542[_0x1152('0x22')]+')'},'headers':{'Authorization':_0x1152('0x19')+_0x27e87d,'OData-Version':_0x1152('0x28')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x3aead2);})[_0x1152('0x12')](function(_0xa5bec7){var _0x311600=_0xa5bec7[_0x1152('0x29')][_0x1152('0x2a')];var _0x4aa61f=_0x311600[_0x1152('0x2b')](_0x311600[_0x1152('0x2c')]('(')+0x1,_0x311600[_0x1152('0x2c')](')'));_0x48e542[_0x1152('0x2d')]=_0x4aa61f;_0x4f230d(_0x48e542);})[_0x1152('0x14')](function(_0x36a7ca){_0x240c7b(_0x36a7ca[_0x1152('0x17')]);});});}function getEndUser(_0x3040b9,_0x3ce4ef,_0x53b684,_0x44a4ec,_0x37427c,_0x442466){return new BPromise(function(_0x3b2b9c,_0x5f2330){return getAuthToken(_0x3ce4ef,_0x53b684,_0x442466)[_0x1152('0x12')](function(_0x59ccb7){var _0x1566f8={'method':_0x1152('0x2e'),'uri':_0x44a4ec+_0x1152('0x2f'),'headers':{'Authorization':_0x1152('0x19')+_0x59ccb7,'If-None-Match':null,'OData-Version':_0x1152('0x28')},'json':!![]};return rp(_0x1566f8);})['then'](function(_0x1cf070){var _0xdea7ef=null;if(_0x1cf070){var _0x43c7e9=_0x1cf070['value'];var _0x32f5d2=![];for(_0xdea7ef=0x0;_0xdea7ef<_0x43c7e9[_0x1152('0x1d')];_0xdea7ef++){var _0x160744=_0x442466[_0x1152('0x30')]()===_0x1152('0x31')?_0x37427c[_0x1152('0x25')]:_0x37427c['calleridnum'];if(_0x43c7e9[_0xdea7ef][_0x1152('0x32')]===_0x160744){_0x32f5d2=!![];_0x3040b9[_0x1152('0x2d')]=_0x43c7e9[_0xdea7ef]['contactid'];}}if(_0x32f5d2){_0x3b2b9c(_0x3040b9);}else{return createEndUser(_0x3040b9,_0x3ce4ef,_0x53b684,_0x44a4ec,_0x37427c,_0x442466)[_0x1152('0x12')](function(_0x18ad66){logger[_0x1152('0x23')]('['+[_0x442466['toUpperCase']()]+_0x1152('0x33'),_0x18ad66[_0x1152('0x2d')]);_0x3b2b9c(_0x18ad66);});}}else{return createEndUser(_0x3040b9,_0x3ce4ef,_0x53b684,_0x44a4ec,_0x37427c,_0x442466)['then'](function(_0x54bdfc){logger[_0x1152('0x23')]('['+[_0x442466[_0x1152('0x16')]()]+']\x20Enduser\x20Created!',_0x54bdfc[_0x1152('0x2d')]);_0x3b2b9c(_0x54bdfc);});}});});}function getCustomFields(_0x3c4908,_0x36fb6e,_0x81f75d){var _0x15ff2d={};if(_0x3c4908[_0x1152('0x1d')]>0x0){_['forEach'](_0x3c4908,function(_0x140bf0){if(_0x140bf0['type']===_0x1152('0x34')&&_0x140bf0[_0x1152('0x35')]&&!_0x140bf0[_0x1152('0x36')]){var _0x1588d9=_0x140bf0[_0x1152('0x37')][_0x1152('0x30')]();var _0x5d4260=_0x1588d9[_0x1152('0x2b')](0x0,_0x1588d9['indexOf']('_'));var _0x59e5a9=_0x1588d9[_0x1152('0x2b')](_0x1588d9[_0x1152('0x38')]('_')+0x1);if(_0x5d4260===_0x81f75d){_0x15ff2d[_0x59e5a9]=_0x140bf0[_0x1152('0x39')];}}});}return _0x15ff2d;}function getTicket(_0x3e6687,_0x155b2c,_0x4b1c8e,_0x490a1f,_0x4edcd6,_0x30c2de,_0x1d1c44){return new BPromise(function(_0x212276,_0x295562){var _0x102dbf;return getAuthToken(_0x155b2c,_0x4b1c8e,_0x1d1c44)[_0x1152('0x12')](function(_0x433298){if(_0x30c2de[_0x1152('0x3a')]===_0x1152('0x3b')){_0x102dbf={'method':_0x1152('0xc'),'uri':_0x490a1f+_0x1152('0x3c'),'body':Object[_0x1152('0x3d')]({},{'title':intUtil[_0x1152('0x3e')](_0x30c2de[_0x1152('0x3f')],_0x4edcd6,'\x20'),'description':intUtil['getString'](_0x30c2de[_0x1152('0x40')],_0x4edcd6,'\x0a'),'customerid_contact@odata.bind':_0x1152('0x41')+_0x3e6687['enduserId']+')','ownerid@odata.bind':_0x1152('0x27')+_0x3e6687['userId']+')','caseorigincode':'1'},getCustomFields(_0x30c2de[_0x1152('0x42')],_0x4edcd6,_0x30c2de['ticketType'])),'headers':{'Authorization':_0x1152('0x19')+_0x433298,'OData-Version':_0x1152('0x28')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x30c2de[_0x1152('0x3a')]===_0x1152('0x43')){_0x102dbf={'method':'POST','uri':_0x490a1f+_0x1152('0x44'),'body':Object[_0x1152('0x3d')]({},{'subject':intUtil[_0x1152('0x3e')](_0x30c2de['Subjects'],_0x4edcd6,'\x20'),'phonenumber':String(_0x4edcd6[_0x1152('0x26')]),'description':intUtil['getString'](_0x30c2de['Descriptions'],_0x4edcd6,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1152('0x41')+_0x3e6687['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x3e6687[_0x1152('0x22')]+')','directioncode':_0x3e6687[_0x1152('0x45')]===_0x1152('0x46')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x3e6687[_0x1152('0x22')]+')','participationtypemask':_0x3e6687[_0x1152('0x45')]===_0x1152('0x46')?0x2:0x1},{'partyid_contact@odata.bind':_0x1152('0x41')+_0x3e6687[_0x1152('0x2d')]+')','participationtypemask':_0x3e6687[_0x1152('0x45')]===_0x1152('0x46')?0x1:0x2}]},getCustomFields(_0x30c2de[_0x1152('0x42')],_0x4edcd6,_0x30c2de[_0x1152('0x3a')])),'headers':{'Authorization':'Bearer\x20'+_0x433298,'OData-Version':_0x1152('0x28')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x102dbf);})[_0x1152('0x12')](function(_0x1caad5){var _0x47ef79=_0x1caad5[_0x1152('0x29')][_0x1152('0x2a')];var _0x2c9614=_0x47ef79[_0x1152('0x2b')](_0x47ef79[_0x1152('0x2c')]('(')+0x1,_0x47ef79[_0x1152('0x2c')](')'));_0x3e6687['ticketId']=_0x2c9614;_0x212276(_0x3e6687);})[_0x1152('0x14')](function(_0x377213){_0x295562(_0x377213['message']);});});}function emit(_0x478602,_0x280c4a,_0x43e732,_0x286a7a){var _0x2e6a36={'uri':util[_0x1152('0x47')](_0x1152('0x48'),_0x478602,_0x43e732,_0x286a7a)};io['to'](util[_0x1152('0x47')]('user:%s',_0x280c4a))[_0x1152('0x49')](_0x1152('0x4a'),_0x2e6a36);}exports['cs']=function(_0x3445ac,_0x414a3d,_0x4446f3,_0x130f61,_0x2d24ca,_0x1c7bed,_0x15156e,_0x2f294c){var _0x2b64cd={};_0x1c7bed[_0x1152('0xe')]=intUtil[_0x1152('0x4b')](_0x1c7bed[_0x1152('0xe')]);_0x1c7bed[_0x1152('0x4c')]=intUtil['stripTrailingSlash'](_0x1c7bed[_0x1152('0x4c')]);_0x2b64cd[_0x1152('0x45')]=_0x2f294c===_0x1152('0x46')||_0x2f294c===_0x1152('0x4d')?'queue':_0x1152('0x31');var _0x3f6a55=util['format']('%s/api/data/v9.0/',_0x1c7bed['remoteUri']);var _0x4f3293=util[_0x1152('0x47')](_0x1152('0x4e'),_0x1c7bed[_0x1152('0x4f')]);var _0x4c2f78=util[_0x1152('0x47')](_0x1152('0x50'),_0x1c7bed[_0x1152('0x4c')],_0x414a3d[_0x1152('0x51')],md5(_0x414a3d['uniqueid']));if(_0x2d24ca&&_0x2d24ca[_0x1152('0x52')]){logger[_0x1152('0x23')](_0x1152('0x53'),_0x1152('0x54'));_0x414a3d[_0x1152('0x55')]=_0x4c2f78;}else if(_0x15156e&&_0x15156e['recordingFormat']&&_0x15156e['recordingFormat']!=='none'){logger[_0x1152('0x23')](_0x1152('0x56'),_0x1152('0x54'));_0x414a3d[_0x1152('0x55')]=_0x4c2f78;}else{_0x414a3d[_0x1152('0x55')]='';}return getUser(_0x2b64cd,_0x1c7bed,_0x130f61,_0x4f3293,_0x3f6a55,_0x2f294c)[_0x1152('0x12')](function(_0x3cede4){logger[_0x1152('0x23')]('['+_0x2f294c['toUpperCase']()+_0x1152('0x57'),_0x3cede4['userId']);logger[_0x1152('0x23')]('['+_0x2f294c[_0x1152('0x16')]()+']\x20The\x20User\x20email\x20is:',_0x3cede4[_0x1152('0x1c')]);return getEndUser(_0x3cede4,_0x1c7bed,_0x4f3293,_0x3f6a55,_0x414a3d,_0x2f294c);})[_0x1152('0x12')](function(_0x2ded3d){logger['info']('['+_0x2f294c['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x2ded3d[_0x1152('0x2d')]);logger[_0x1152('0x23')]('['+_0x2f294c[_0x1152('0x16')]()+_0x1152('0x58'),_0x414a3d[_0x1152('0x26')]);return getTicket(_0x2ded3d,_0x1c7bed,_0x4f3293,_0x3f6a55,_0x414a3d,_0x4446f3,_0x2f294c);})['then'](function(_0x4af4e1){logger['info'](util[_0x1152('0x47')]('['+_0x2f294c['toUpperCase']()+_0x1152('0x59'),_0x4446f3[_0x1152('0x3a')],_0x4af4e1[_0x1152('0x5a')]));logger['info'](util[_0x1152('0x47')]('['+_0x2f294c[_0x1152('0x16')]()+']\x20Call\x20direction:\x20%s',_0x2f294c));if(_0x2f294c!==_0x1152('0x4d')){logger['info']('['+_0x2f294c['toUpperCase']()+']',_0x1152('0x5b'));emit(_0x1c7bed['remoteUri'],_0x130f61[_0x1152('0x5c')],_0x4446f3[_0x1152('0x3a')],_0x4af4e1[_0x1152('0x5a')]);}})['catch'](function(_0x46b7f6){logger[_0x1152('0x15')]('['+_0x2f294c['toUpperCase']()+_0x1152('0x5d'),util['inspect'](_0x46b7f6,{'showHidden':!![],'depth':null}));});};