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 _0x9e2e=['recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','./util','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','POST','clientId','username','password','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','email','userEmail','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','userId','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','GET','contacts?$select=telephone1','value','telephone1','contactid',']\x20Enduser\x20Created!','forEach','includes','type','nameField','customField','idField','indexOf','content','ticketType','incident','assign','getString','Descriptions','phonecall','Subjects','/contacts(','callDirection','queue','enduserId','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','remoteUri','serverUrl','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]','Recording\x20is\x20enabled!'];(function(_0x19d39c,_0x3d84bb){var _0x45b97e=function(_0x43f0c6){while(--_0x43f0c6){_0x19d39c['push'](_0x19d39c['shift']());}};_0x45b97e(++_0x3d84bb);}(_0x9e2e,0xd6));var _0xe9e2=function(_0x18d957,_0x50a139){_0x18d957=_0x18d957-0x0;var _0x144993=_0x9e2e[_0x18d957];return _0x144993;};'use strict';var _=require(_0xe9e2('0x0'));var BPromise=require(_0xe9e2('0x1'));var rp=require(_0xe9e2('0x2'));var util=require('util');var intUtil=require(_0xe9e2('0x3'));var md5=require('md5');var Redis=require('ioredis');var logger=require(_0xe9e2('0x4'))(_0xe9e2('0x5'));var config=require(_0xe9e2('0x6'));config[_0xe9e2('0x7')]=_[_0xe9e2('0x8')](config[_0xe9e2('0x7')],{'host':_0xe9e2('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe9e2('0x7')]));function getAuthToken(_0x4f1ef7,_0x2bec58,_0x1ade12){var _0x58a008={'method':_0xe9e2('0xa'),'uri':_0x2bec58,'form':{'client_id':_0x4f1ef7[_0xe9e2('0xb')],'resource':_0x4f1ef7['remoteUri'],'username':_0x4f1ef7[_0xe9e2('0xc')],'password':_0x4f1ef7[_0xe9e2('0xd')],'grant_type':'password','client_secret':_0x4f1ef7['clientSecret']},'json':!![]};return rp(_0x58a008)[_0xe9e2('0xe')](function(_0x359f9c){return _0x359f9c[_0xe9e2('0xf')];})[_0xe9e2('0x10')](function(_0x5407fa){logger['error']('['+[_0x1ade12[_0xe9e2('0x11')]()]+_0xe9e2('0x12'));return _0x5407fa[_0xe9e2('0x13')];});}function getUser(_0x2f11d1,_0x13bfad,_0x23331d,_0x41ea08,_0x1ba905,_0xc67cb1){return new BPromise(function(_0x33a169,_0x58f329){return getAuthToken(_0x13bfad,_0x41ea08,_0xc67cb1)['then'](function(_0x117e38){var _0x590974={'method':'GET','uri':_0x1ba905+_0xe9e2('0x14'),'headers':{'Authorization':_0xe9e2('0x15')+_0x117e38,'OData-Version':_0xe9e2('0x16')},'json':!![]};return rp(_0x590974);})[_0xe9e2('0xe')](function(_0x20da8e){var _0x25d70f=_0x20da8e['value'];var _0xdf6f78=![];var _0x2094fc=null;if(!_[_0xe9e2('0x17')](_0x23331d)){if(intUtil['validateEmail'](_0x23331d[_0xe9e2('0x18')])){_0x2f11d1[_0xe9e2('0x19')]=_0x23331d[_0xe9e2('0x18')];for(_0x2094fc=0x0;_0x2094fc<_0x25d70f['length'];_0x2094fc++){if(_0x25d70f[_0x2094fc][_0xe9e2('0x1a')]===_0x23331d[_0xe9e2('0x18')]&&!_0x25d70f[_0x2094fc][_0xe9e2('0x1b')]){_0xdf6f78=!![];logger['info']('['+[_0xc67cb1[_0xe9e2('0x11')]()]+_0xe9e2('0x1c')+_0x25d70f[_0x2094fc][_0xe9e2('0x1d')]+'!');_0x2f11d1[_0xe9e2('0x1e')]=_0x25d70f[_0x2094fc]['systemuserid'];}}}}if(!_0xdf6f78){logger[_0xe9e2('0x1f')]('['+[_0xc67cb1[_0xe9e2('0x11')]()]+_0xe9e2('0x20'));_0x2f11d1[_0xe9e2('0x19')]=_0x13bfad[_0xe9e2('0xc')];for(_0x2094fc=0x0;_0x2094fc<_0x25d70f[_0xe9e2('0x21')];_0x2094fc++){if(_0x25d70f[_0x2094fc][_0xe9e2('0x1a')]===_0x13bfad[_0xe9e2('0xc')]){_0x2f11d1[_0xe9e2('0x1e')]=_0x25d70f[_0x2094fc][_0xe9e2('0x1d')];}}}_0x33a169(_0x2f11d1);})[_0xe9e2('0x10')](function(_0x2e8577){_0x58f329(_0x2e8577[_0xe9e2('0x13')]);});});}function createEndUser(_0x274468,_0x313b09,_0x1bf061,_0x2fac3e,_0x4d4343,_0x43445d){return new BPromise(function(_0x435dc4,_0x32775d){return getAuthToken(_0x313b09,_0x1bf061,_0x43445d)[_0xe9e2('0xe')](function(_0x57254c){var _0x325bf4=_0x43445d[_0xe9e2('0x22')]()===_0xe9e2('0x23')?_0x4d4343[_0xe9e2('0x24')]:_0x4d4343[_0xe9e2('0x25')];var _0x4fc1ce={'method':'POST','uri':_0x2fac3e+_0xe9e2('0x26'),'body':{'telephone1':_0x325bf4,'fullname':_0x325bf4,'firstname':_0x325bf4,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xe9e2('0x27')+_0x274468[_0xe9e2('0x1e')]+')'},'headers':{'Authorization':_0xe9e2('0x15')+_0x57254c,'OData-Version':_0xe9e2('0x16')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4fc1ce);})[_0xe9e2('0xe')](function(_0x5da7b3){var _0x29d238=_0x5da7b3[_0xe9e2('0x28')][_0xe9e2('0x29')];var _0x3ee31a=_0x29d238[_0xe9e2('0x2a')](_0x29d238[_0xe9e2('0x2b')]('(')+0x1,_0x29d238[_0xe9e2('0x2b')](')'));_0x274468['enduserId']=_0x3ee31a;_0x435dc4(_0x274468);})['catch'](function(_0x38e00f){_0x32775d(_0x38e00f[_0xe9e2('0x13')]);});});}function getEndUser(_0x498e12,_0x2e2d55,_0x13a230,_0x3229ed,_0x5be732,_0x21dcdc){return new BPromise(function(_0x414eef,_0xe3624a){return getAuthToken(_0x2e2d55,_0x13a230,_0x21dcdc)[_0xe9e2('0xe')](function(_0x573038){var _0x2e03d8={'method':_0xe9e2('0x2c'),'uri':_0x3229ed+_0xe9e2('0x2d'),'headers':{'Authorization':'Bearer\x20'+_0x573038,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2e03d8);})[_0xe9e2('0xe')](function(_0x102b06){var _0x414e06=null;if(_0x102b06){var _0x45a093=_0x102b06[_0xe9e2('0x2e')];var _0x104014=![];for(_0x414e06=0x0;_0x414e06<_0x45a093[_0xe9e2('0x21')];_0x414e06++){var _0x52dad8=_0x21dcdc['toLowerCase']()===_0xe9e2('0x23')?_0x5be732['destcalleridnum']:_0x5be732[_0xe9e2('0x25')];if(_0x45a093[_0x414e06][_0xe9e2('0x2f')]===_0x52dad8){_0x104014=!![];_0x498e12['enduserId']=_0x45a093[_0x414e06][_0xe9e2('0x30')];}}if(_0x104014){_0x414eef(_0x498e12);}else{return createEndUser(_0x498e12,_0x2e2d55,_0x13a230,_0x3229ed,_0x5be732,_0x21dcdc)[_0xe9e2('0xe')](function(_0x5f323d){logger[_0xe9e2('0x1f')]('['+[_0x21dcdc[_0xe9e2('0x11')]()]+']\x20Enduser\x20created!',_0x5f323d['enduserId']);_0x414eef(_0x5f323d);});}}else{return createEndUser(_0x498e12,_0x2e2d55,_0x13a230,_0x3229ed,_0x5be732,_0x21dcdc)[_0xe9e2('0xe')](function(_0x2c8ff8){logger[_0xe9e2('0x1f')]('['+[_0x21dcdc['toUpperCase']()]+_0xe9e2('0x31'),_0x2c8ff8['enduserId']);_0x414eef(_0x2c8ff8);});}});});}function getCustomFields(_0x176d78,_0x1041d9,_0x1a3991){var _0x2be7be={};if(_0x176d78[_0xe9e2('0x21')]>0x0){_[_0xe9e2('0x32')](_0x176d78,function(_0xb05a27){if(_[_0xe9e2('0x33')](['string','picklist'],_0xb05a27[_0xe9e2('0x34')])&&_0xb05a27[_0xe9e2('0x35')]&&!_0xb05a27[_0xe9e2('0x36')]){var _0x286336=_0xb05a27[_0xe9e2('0x37')]['toLowerCase']();var _0x2eb636=_0x286336['substring'](0x0,_0x286336[_0xe9e2('0x38')]('_'));var _0x552ff0=_0x286336[_0xe9e2('0x2a')](_0x286336[_0xe9e2('0x38')]('_')+0x1);if(_0x2eb636===_0x1a3991){_0x2be7be[_0x552ff0]=_0xb05a27[_0xe9e2('0x39')];}}});}return _0x2be7be;}function getTicket(_0x5275bb,_0x33e750,_0x40d34b,_0x22092e,_0x340f11,_0xc00528,_0x3c5b53){return new BPromise(function(_0x48a6d7,_0x4ae89f){var _0xebf71e;return getAuthToken(_0x33e750,_0x40d34b,_0x3c5b53)[_0xe9e2('0xe')](function(_0x27dce7){if(_0xc00528[_0xe9e2('0x3a')]===_0xe9e2('0x3b')){_0xebf71e={'method':_0xe9e2('0xa'),'uri':_0x22092e+'incidents','body':Object[_0xe9e2('0x3c')]({},{'title':intUtil['getString'](_0xc00528['Subjects'],_0x340f11,'\x20'),'description':intUtil[_0xe9e2('0x3d')](_0xc00528[_0xe9e2('0x3e')],_0x340f11,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x5275bb['enduserId']+')','ownerid@odata.bind':_0xe9e2('0x27')+_0x5275bb[_0xe9e2('0x1e')]+')','caseorigincode':'1'},getCustomFields(_0xc00528['Fields'],_0x340f11,_0xc00528['ticketType'])),'headers':{'Authorization':_0xe9e2('0x15')+_0x27dce7,'OData-Version':_0xe9e2('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xc00528[_0xe9e2('0x3a')]===_0xe9e2('0x3f')){_0xebf71e={'method':_0xe9e2('0xa'),'uri':_0x22092e+'phonecalls','body':Object[_0xe9e2('0x3c')]({},{'subject':intUtil[_0xe9e2('0x3d')](_0xc00528[_0xe9e2('0x40')],_0x340f11,'\x20'),'phonenumber':String(_0x340f11[_0xe9e2('0x25')]),'description':intUtil['getString'](_0xc00528[_0xe9e2('0x3e')],_0x340f11,'\x0a'),'regardingobjectid_contact@odata.bind':_0xe9e2('0x41')+_0x5275bb['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x5275bb[_0xe9e2('0x1e')]+')','directioncode':_0x5275bb[_0xe9e2('0x42')]===_0xe9e2('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xe9e2('0x27')+_0x5275bb[_0xe9e2('0x1e')]+')','participationtypemask':_0x5275bb['callDirection']===_0xe9e2('0x43')?0x2:0x1},{'partyid_contact@odata.bind':_0xe9e2('0x41')+_0x5275bb[_0xe9e2('0x44')]+')','participationtypemask':_0x5275bb[_0xe9e2('0x42')]===_0xe9e2('0x43')?0x1:0x2}]},getCustomFields(_0xc00528['Fields'],_0x340f11,_0xc00528['ticketType'])),'headers':{'Authorization':_0xe9e2('0x15')+_0x27dce7,'OData-Version':_0xe9e2('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xebf71e);})[_0xe9e2('0xe')](function(_0x5b1257){var _0x1ca157=_0x5b1257[_0xe9e2('0x28')][_0xe9e2('0x29')];var _0x513e79=_0x1ca157[_0xe9e2('0x2a')](_0x1ca157[_0xe9e2('0x2b')]('(')+0x1,_0x1ca157[_0xe9e2('0x2b')](')'));_0x5275bb[_0xe9e2('0x45')]=_0x513e79;_0x48a6d7(_0x5275bb);})['catch'](function(_0x25e832){_0x4ae89f(_0x25e832[_0xe9e2('0x13')]);});});}function emit(_0xed475,_0x452e0a,_0x419ee0,_0x14b280){var _0x5d59be={'uri':util[_0xe9e2('0x46')](_0xe9e2('0x47'),_0xed475,_0x419ee0,_0x14b280)};io['to'](util[_0xe9e2('0x46')](_0xe9e2('0x48'),_0x452e0a))[_0xe9e2('0x49')]('trigger:browser:url',_0x5d59be);}exports['cs']=function(_0x27d24f,_0x5e2b21,_0x1a0d41,_0x222911,_0x278b42,_0x1c4947,_0x4d707c,_0x485022){var _0x318147={};_0x1c4947['remoteUri']=intUtil[_0xe9e2('0x4a')](_0x1c4947[_0xe9e2('0x4b')]);_0x1c4947[_0xe9e2('0x4c')]=intUtil[_0xe9e2('0x4a')](_0x1c4947[_0xe9e2('0x4c')]);_0x318147['callDirection']=_0x485022==='queue'||_0x485022===_0xe9e2('0x4d')?_0xe9e2('0x43'):'outbound';var _0x322f41=util[_0xe9e2('0x46')](_0xe9e2('0x4e'),_0x1c4947[_0xe9e2('0x4b')]);var _0x4616cc=util[_0xe9e2('0x46')](_0xe9e2('0x4f'),_0x1c4947[_0xe9e2('0x50')]);var _0x1976dd=util[_0xe9e2('0x46')](_0xe9e2('0x51'),_0x1c4947['serverUrl'],_0x5e2b21['uniqueid'],md5(_0x5e2b21[_0xe9e2('0x52')]));if(_0x278b42&&_0x278b42[_0xe9e2('0x53')]){logger[_0xe9e2('0x1f')](_0xe9e2('0x54'),_0xe9e2('0x55'));_0x5e2b21[_0xe9e2('0x56')]=_0x1976dd;}else if(_0x4d707c&&_0x4d707c[_0xe9e2('0x57')]&&_0x4d707c['recordingFormat']!==_0xe9e2('0x58')){logger[_0xe9e2('0x1f')](_0xe9e2('0x59'),_0xe9e2('0x55'));_0x5e2b21[_0xe9e2('0x56')]=_0x1976dd;}else{_0x5e2b21['recordingURL']='';}return getUser(_0x318147,_0x1c4947,_0x222911,_0x4616cc,_0x322f41,_0x485022)[_0xe9e2('0xe')](function(_0xa72ca4){logger['info']('['+_0x485022['toUpperCase']()+_0xe9e2('0x5a'),_0xa72ca4[_0xe9e2('0x1e')]);logger['info']('['+_0x485022[_0xe9e2('0x11')]()+_0xe9e2('0x5b'),_0xa72ca4['userEmail']);return getEndUser(_0xa72ca4,_0x1c4947,_0x4616cc,_0x322f41,_0x5e2b21,_0x485022);})[_0xe9e2('0xe')](function(_0x494b9d){logger[_0xe9e2('0x1f')]('['+_0x485022[_0xe9e2('0x11')]()+_0xe9e2('0x5c'),_0x494b9d[_0xe9e2('0x44')]);logger[_0xe9e2('0x1f')]('['+_0x485022[_0xe9e2('0x11')]()+_0xe9e2('0x5d'),_0x5e2b21[_0xe9e2('0x25')]);return getTicket(_0x494b9d,_0x1c4947,_0x4616cc,_0x322f41,_0x5e2b21,_0x1a0d41,_0x485022);})[_0xe9e2('0xe')](function(_0x140ed5){logger['info'](util[_0xe9e2('0x46')]('['+_0x485022['toUpperCase']()+_0xe9e2('0x5e'),_0x1a0d41[_0xe9e2('0x3a')],_0x140ed5[_0xe9e2('0x45')]));logger[_0xe9e2('0x1f')](util[_0xe9e2('0x46')]('['+_0x485022[_0xe9e2('0x11')]()+']\x20Call\x20direction:\x20%s',_0x485022));if(_0x485022!=='unmanaged'){logger[_0xe9e2('0x1f')]('['+_0x485022[_0xe9e2('0x11')]()+']',_0xe9e2('0x5f'));emit(_0x1c4947[_0xe9e2('0x4b')],_0x222911[_0xe9e2('0x60')],_0x1a0d41['ticketType'],_0x140ed5['ticketId']);}})[_0xe9e2('0x10')](function(_0x4eb94d){logger[_0xe9e2('0x61')]('['+_0x485022[_0xe9e2('0x11')]()+_0xe9e2('0x62'),util[_0xe9e2('0x63')](_0x4eb94d,{'showHidden':!![],'depth':null}));});};