Built motion from commit (unavailable).|2.6.0
[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 _0x307e=[']\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','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','util','./util','ioredis','../../../../config/logger','../../../../config/environment','defaults','redis','localhost','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','message','outbound','contacts','odata-entityid','lastIndexOf','enduserId','contacts?$select=telephone1','toLowerCase','destcalleridnum','calleridnum',']\x20Enduser\x20created!','forEach','picklist','type','nameField','idField','indexOf','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','/systemusers(','Fields','phonecall','Subjects','callDirection','queue','headers','substring','format','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat',']\x20The\x20User\x20ID\x20is:'];(function(_0x2c164f,_0xe49177){var _0x3db449=function(_0x5bd58e){while(--_0x5bd58e){_0x2c164f['push'](_0x2c164f['shift']());}};_0x3db449(++_0xe49177);}(_0x307e,0xc9));var _0xe307=function(_0x36b466,_0x823631){_0x36b466=_0x36b466-0x0;var _0x17f490=_0x307e[_0x36b466];return _0x17f490;};'use strict';var _=require(_0xe307('0x0'));var BPromise=require(_0xe307('0x1'));var rp=require(_0xe307('0x2'));var util=require(_0xe307('0x3'));var intUtil=require(_0xe307('0x4'));var md5=require('md5');var Redis=require(_0xe307('0x5'));var logger=require(_0xe307('0x6'))('dynamics365');var config=require(_0xe307('0x7'));config['redis']=_[_0xe307('0x8')](config[_0xe307('0x9')],{'host':_0xe307('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe307('0x9')]));function getAuthToken(_0x3645ea,_0x40b840,_0x5598d4){var _0x304363={'method':_0xe307('0xb'),'uri':_0x40b840,'form':{'client_id':_0x3645ea[_0xe307('0xc')],'resource':_0x3645ea[_0xe307('0xd')],'username':_0x3645ea[_0xe307('0xe')],'password':_0x3645ea[_0xe307('0xf')],'grant_type':_0xe307('0xf'),'client_secret':_0x3645ea[_0xe307('0x10')]},'json':!![]};return rp(_0x304363)[_0xe307('0x11')](function(_0x3b67c5){return _0x3b67c5[_0xe307('0x12')];})[_0xe307('0x13')](function(_0x152cb9){logger[_0xe307('0x14')]('['+[_0x5598d4[_0xe307('0x15')]()]+_0xe307('0x16'));return _0x152cb9['message'];});}function getUser(_0x1f5cd4,_0x3fc983,_0x4e04a7,_0x3faac5,_0x2eeb8e,_0x2d3a73){return new BPromise(function(_0x1e38f2,_0x23b5b8){return getAuthToken(_0x3fc983,_0x3faac5,_0x2d3a73)[_0xe307('0x11')](function(_0x46b0d6){var _0x58f715={'method':_0xe307('0x17'),'uri':_0x2eeb8e+_0xe307('0x18'),'headers':{'Authorization':_0xe307('0x19')+_0x46b0d6,'OData-Version':_0xe307('0x1a')},'json':!![]};return rp(_0x58f715);})[_0xe307('0x11')](function(_0x52f83b){var _0x4e4dfe=_0x52f83b[_0xe307('0x1b')];var _0x52ef79=![];var _0x37a8c9=null;if(!_[_0xe307('0x1c')](_0x4e04a7)){if(intUtil[_0xe307('0x1d')](_0x4e04a7[_0xe307('0x1e')])){_0x1f5cd4[_0xe307('0x1f')]=_0x4e04a7[_0xe307('0x1e')];for(_0x37a8c9=0x0;_0x37a8c9<_0x4e4dfe[_0xe307('0x20')];_0x37a8c9++){if(_0x4e4dfe[_0x37a8c9][_0xe307('0x21')]===_0x4e04a7[_0xe307('0x1e')]&&!_0x4e4dfe[_0x37a8c9][_0xe307('0x22')]){_0x52ef79=!![];logger[_0xe307('0x23')]('['+[_0x2d3a73[_0xe307('0x15')]()]+_0xe307('0x24')+_0x4e4dfe[_0x37a8c9][_0xe307('0x25')]+'!');_0x1f5cd4[_0xe307('0x26')]=_0x4e4dfe[_0x37a8c9]['systemuserid'];}}}}if(!_0x52ef79){logger[_0xe307('0x23')]('['+[_0x2d3a73[_0xe307('0x15')]()]+_0xe307('0x27'));_0x1f5cd4[_0xe307('0x1f')]=_0x3fc983[_0xe307('0xe')];for(_0x37a8c9=0x0;_0x37a8c9<_0x4e4dfe[_0xe307('0x20')];_0x37a8c9++){if(_0x4e4dfe[_0x37a8c9][_0xe307('0x21')]===_0x3fc983[_0xe307('0xe')]){_0x1f5cd4[_0xe307('0x26')]=_0x4e4dfe[_0x37a8c9][_0xe307('0x25')];}}}_0x1e38f2(_0x1f5cd4);})['catch'](function(_0x47b2d4){_0x23b5b8(_0x47b2d4[_0xe307('0x28')]);});});}function createEndUser(_0x11fe69,_0x3b169f,_0x188f14,_0xe4e3ee,_0x22bb34,_0x2651ec){return new BPromise(function(_0x10ee3d,_0x1fc65c){return getAuthToken(_0x3b169f,_0x188f14,_0x2651ec)['then'](function(_0x6b9643){var _0x1590bd=_0x2651ec['toLowerCase']()===_0xe307('0x29')?_0x22bb34['destcalleridnum']:_0x22bb34['calleridnum'];var _0x2e36f2={'method':_0xe307('0xb'),'uri':_0xe4e3ee+_0xe307('0x2a'),'body':{'telephone1':_0x1590bd,'fullname':_0x1590bd,'firstname':_0x1590bd,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x11fe69[_0xe307('0x26')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x6b9643,'OData-Version':_0xe307('0x1a')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x2e36f2);})['then'](function(_0x59e18b){var _0x4b3bd7=_0x59e18b['headers'][_0xe307('0x2b')];var _0x3463a8=_0x4b3bd7['substring'](_0x4b3bd7[_0xe307('0x2c')]('(')+0x1,_0x4b3bd7[_0xe307('0x2c')](')'));_0x11fe69[_0xe307('0x2d')]=_0x3463a8;_0x10ee3d(_0x11fe69);})[_0xe307('0x13')](function(_0x4b8490){_0x1fc65c(_0x4b8490[_0xe307('0x28')]);});});}function getEndUser(_0x552236,_0x5b90c0,_0xce93ed,_0x1649a4,_0x344fc5,_0xfdfc8c){return new BPromise(function(_0x504d0b,_0x17b834){return getAuthToken(_0x5b90c0,_0xce93ed,_0xfdfc8c)['then'](function(_0x2af3ec){var _0x21ddc9={'method':'GET','uri':_0x1649a4+_0xe307('0x2e'),'headers':{'Authorization':_0xe307('0x19')+_0x2af3ec,'If-None-Match':null,'OData-Version':_0xe307('0x1a')},'json':!![]};return rp(_0x21ddc9);})[_0xe307('0x11')](function(_0x47ab9f){var _0x4ccf57=null;if(_0x47ab9f){var _0xe0da0a=_0x47ab9f[_0xe307('0x1b')];var _0x558d00=![];for(_0x4ccf57=0x0;_0x4ccf57<_0xe0da0a[_0xe307('0x20')];_0x4ccf57++){var _0x143085=_0xfdfc8c[_0xe307('0x2f')]()==='outbound'?_0x344fc5[_0xe307('0x30')]:_0x344fc5[_0xe307('0x31')];if(_0xe0da0a[_0x4ccf57]['telephone1']===_0x143085){_0x558d00=!![];_0x552236['enduserId']=_0xe0da0a[_0x4ccf57]['contactid'];}}if(_0x558d00){_0x504d0b(_0x552236);}else{return createEndUser(_0x552236,_0x5b90c0,_0xce93ed,_0x1649a4,_0x344fc5,_0xfdfc8c)[_0xe307('0x11')](function(_0x4e3b33){logger[_0xe307('0x23')]('['+[_0xfdfc8c[_0xe307('0x15')]()]+_0xe307('0x32'),_0x4e3b33[_0xe307('0x2d')]);_0x504d0b(_0x4e3b33);});}}else{return createEndUser(_0x552236,_0x5b90c0,_0xce93ed,_0x1649a4,_0x344fc5,_0xfdfc8c)['then'](function(_0x600b40){logger[_0xe307('0x23')]('['+[_0xfdfc8c['toUpperCase']()]+']\x20Enduser\x20Created!',_0x600b40[_0xe307('0x2d')]);_0x504d0b(_0x600b40);});}});});}function getCustomFields(_0x582353,_0x59f9e7,_0x288f07){var _0x2748e1={};if(_0x582353[_0xe307('0x20')]>0x0){_[_0xe307('0x33')](_0x582353,function(_0x36c192){if(_['includes'](['string',_0xe307('0x34')],_0x36c192[_0xe307('0x35')])&&_0x36c192[_0xe307('0x36')]&&!_0x36c192['customField']){var _0x366e8c=_0x36c192[_0xe307('0x37')]['toLowerCase']();var _0x2c06c5=_0x366e8c['substring'](0x0,_0x366e8c[_0xe307('0x38')]('_'));var _0x590f17=_0x366e8c['substring'](_0x366e8c[_0xe307('0x38')]('_')+0x1);if(_0x2c06c5===_0x288f07){_0x2748e1[_0x590f17]=_0x36c192['content'];}}});}return _0x2748e1;}function getTicket(_0xc8468e,_0x137322,_0x24cad8,_0xc81c05,_0x2073bd,_0x187373,_0x39f31a){return new BPromise(function(_0x198627,_0x5a604e){var _0x1f38b4;return getAuthToken(_0x137322,_0x24cad8,_0x39f31a)[_0xe307('0x11')](function(_0x300049){if(_0x187373[_0xe307('0x39')]===_0xe307('0x3a')){_0x1f38b4={'method':_0xe307('0xb'),'uri':_0xc81c05+_0xe307('0x3b'),'body':Object[_0xe307('0x3c')]({},{'title':intUtil[_0xe307('0x3d')](_0x187373['Subjects'],_0x2073bd,'\x20'),'description':intUtil[_0xe307('0x3d')](_0x187373[_0xe307('0x3e')],_0x2073bd,'\x0a'),'customerid_contact@odata.bind':_0xe307('0x3f')+_0xc8468e[_0xe307('0x2d')]+')','ownerid@odata.bind':_0xe307('0x40')+_0xc8468e[_0xe307('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x187373[_0xe307('0x41')],_0x2073bd,_0x187373['ticketType'])),'headers':{'Authorization':_0xe307('0x19')+_0x300049,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x187373[_0xe307('0x39')]===_0xe307('0x42')){_0x1f38b4={'method':'POST','uri':_0xc81c05+'phonecalls','body':Object[_0xe307('0x3c')]({},{'subject':intUtil[_0xe307('0x3d')](_0x187373[_0xe307('0x43')],_0x2073bd,'\x20'),'phonenumber':String(_0x2073bd[_0xe307('0x31')]),'description':intUtil['getString'](_0x187373[_0xe307('0x3e')],_0x2073bd,'\x0a'),'regardingobjectid_contact@odata.bind':_0xe307('0x3f')+_0xc8468e[_0xe307('0x2d')]+')','ownerid@odata.bind':_0xe307('0x40')+_0xc8468e[_0xe307('0x26')]+')','directioncode':_0xc8468e[_0xe307('0x44')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xe307('0x40')+_0xc8468e[_0xe307('0x26')]+')','participationtypemask':_0xc8468e[_0xe307('0x44')]===_0xe307('0x45')?0x2:0x1},{'partyid_contact@odata.bind':_0xe307('0x3f')+_0xc8468e[_0xe307('0x2d')]+')','participationtypemask':_0xc8468e[_0xe307('0x44')]===_0xe307('0x45')?0x1:0x2}]},getCustomFields(_0x187373[_0xe307('0x41')],_0x2073bd,_0x187373[_0xe307('0x39')])),'headers':{'Authorization':'Bearer\x20'+_0x300049,'OData-Version':_0xe307('0x1a')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1f38b4);})['then'](function(_0xcab77e){var _0x15581e=_0xcab77e[_0xe307('0x46')][_0xe307('0x2b')];var _0x336c27=_0x15581e[_0xe307('0x47')](_0x15581e['lastIndexOf']('(')+0x1,_0x15581e[_0xe307('0x2c')](')'));_0xc8468e['ticketId']=_0x336c27;_0x198627(_0xc8468e);})[_0xe307('0x13')](function(_0x43518f){_0x5a604e(_0x43518f[_0xe307('0x28')]);});});}function emit(_0x4d12a4,_0x56934b,_0x3d0271,_0xdd1567){var _0x36c3b0={'uri':util[_0xe307('0x48')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x4d12a4,_0x3d0271,_0xdd1567)};io['to'](util[_0xe307('0x48')]('user:%s',_0x56934b))[_0xe307('0x49')](_0xe307('0x4a'),_0x36c3b0);}exports['cs']=function(_0x36a590,_0x4b3780,_0x989c15,_0x36a4ac,_0x1e340d,_0x2be57b,_0x4ab9b8,_0x1c9a07){var _0x123fee={};_0x2be57b[_0xe307('0xd')]=intUtil[_0xe307('0x4b')](_0x2be57b['remoteUri']);_0x2be57b[_0xe307('0x4c')]=intUtil[_0xe307('0x4b')](_0x2be57b[_0xe307('0x4c')]);_0x123fee[_0xe307('0x44')]=_0x1c9a07==='queue'||_0x1c9a07===_0xe307('0x4d')?_0xe307('0x45'):_0xe307('0x29');var _0x38e81a=util[_0xe307('0x48')]('%s/api/data/v9.0/',_0x2be57b[_0xe307('0xd')]);var _0x5efe2a=util[_0xe307('0x48')](_0xe307('0x4e'),_0x2be57b['tenantId']);var _0x2de7a4=util[_0xe307('0x48')](_0xe307('0x4f'),_0x2be57b[_0xe307('0x4c')],_0x4b3780[_0xe307('0x50')],md5(_0x4b3780[_0xe307('0x50')]));if(_0x1e340d&&_0x1e340d[_0xe307('0x51')]){logger[_0xe307('0x23')](_0xe307('0x52'),_0xe307('0x53'));_0x4b3780[_0xe307('0x54')]=_0x2de7a4;}else if(_0x4ab9b8&&_0x4ab9b8['recordingFormat']&&_0x4ab9b8[_0xe307('0x55')]!=='none'){logger[_0xe307('0x23')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4b3780[_0xe307('0x54')]=_0x2de7a4;}else{_0x4b3780[_0xe307('0x54')]='';}return getUser(_0x123fee,_0x2be57b,_0x36a4ac,_0x5efe2a,_0x38e81a,_0x1c9a07)[_0xe307('0x11')](function(_0x565896){logger[_0xe307('0x23')]('['+_0x1c9a07[_0xe307('0x15')]()+_0xe307('0x56'),_0x565896[_0xe307('0x26')]);logger['info']('['+_0x1c9a07['toUpperCase']()+_0xe307('0x57'),_0x565896[_0xe307('0x1f')]);return getEndUser(_0x565896,_0x2be57b,_0x5efe2a,_0x38e81a,_0x4b3780,_0x1c9a07);})[_0xe307('0x11')](function(_0x42f6c6){logger[_0xe307('0x23')]('['+_0x1c9a07[_0xe307('0x15')]()+_0xe307('0x58'),_0x42f6c6[_0xe307('0x2d')]);logger[_0xe307('0x23')]('['+_0x1c9a07[_0xe307('0x15')]()+_0xe307('0x59'),_0x4b3780[_0xe307('0x31')]);return getTicket(_0x42f6c6,_0x2be57b,_0x5efe2a,_0x38e81a,_0x4b3780,_0x989c15,_0x1c9a07);})['then'](function(_0x87cec7){logger[_0xe307('0x23')](util['format']('['+_0x1c9a07[_0xe307('0x15')]()+_0xe307('0x5a'),_0x989c15[_0xe307('0x39')],_0x87cec7['ticketId']));logger[_0xe307('0x23')](util[_0xe307('0x48')]('['+_0x1c9a07[_0xe307('0x15')]()+']\x20Call\x20direction:\x20%s',_0x1c9a07));if(_0x1c9a07!=='unmanaged'){logger[_0xe307('0x23')]('['+_0x1c9a07[_0xe307('0x15')]()+']',_0xe307('0x5b'));emit(_0x2be57b[_0xe307('0xd')],_0x36a4ac[_0xe307('0x5c')],_0x989c15['ticketType'],_0x87cec7[_0xe307('0x5d')]);}})[_0xe307('0x13')](function(_0x290d00){logger[_0xe307('0x14')]('['+_0x1c9a07[_0xe307('0x15')]()+_0xe307('0x5e'),util[_0xe307('0x5f')](_0x290d00,{'showHidden':!![],'depth':null}));});};