64297839d3c66808c2f4b1b16516e437d6f3cc9d
[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 _0x5aae=['%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','userEmail','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','ioredis','../../../../config/logger','dynamics365','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','resolve','data5','POST','username','password','clientSecret','access_token','error','toUpperCase','message','then','Bearer\x20','4.0','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','catch','toLowerCase','destcalleridnum','calleridnum','contacts','odata-entityid','substring','lastIndexOf','enduserId','outbound','GET','replace','telephone1','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','nameField','customField','indexOf','content','incident','incidents','assign','getString','Subjects','Descriptions','/contacts(','Fields','ticketType','phonecall','/systemusers(','callDirection','queue','phonecalls','ticketId','format'];(function(_0x40d58b,_0x5b1503){var _0x26f998=function(_0x4888e0){while(--_0x4888e0){_0x40d58b['push'](_0x40d58b['shift']());}};_0x26f998(++_0x5b1503);}(_0x5aae,0x15a));var _0xe5aa=function(_0x115d8d,_0xacde78){_0x115d8d=_0x115d8d-0x0;var _0x250c76=_0x5aae[_0x115d8d];return _0x250c76;};'use strict';var _=require(_0xe5aa('0x0'));var rp=require(_0xe5aa('0x1'));var util=require(_0xe5aa('0x2'));var intUtil=require(_0xe5aa('0x3'));var md5=require('md5');var Redis=require(_0xe5aa('0x4'));var logger=require(_0xe5aa('0x5'))(_0xe5aa('0x6'));var config=require('../../../../config/environment');config[_0xe5aa('0x7')]=_[_0xe5aa('0x8')](config[_0xe5aa('0x7')],{'host':_0xe5aa('0x9'),'port':0x18eb});var io=require(_0xe5aa('0xa'))(new Redis(config['redis']));function getAuthToken(_0x448de3,_0x5431fa,_0x11c1ab){if(_0x448de3[_0xe5aa('0xb')]){_0x448de3[_0xe5aa('0xc')]=_0x448de3[_0xe5aa('0xd')][_0xe5aa('0xe')];_0x448de3[_0xe5aa('0xf')]=_0x448de3['CloudProvider'][_0xe5aa('0x10')];return Promise[_0xe5aa('0x11')](_0x448de3[_0xe5aa('0xd')][_0xe5aa('0x12')]);}var _0x12832c={'method':_0xe5aa('0x13'),'uri':_0x5431fa,'form':{'client_id':_0x448de3['clientId'],'resource':_0x448de3[_0xe5aa('0xc')],'username':_0x448de3[_0xe5aa('0x14')],'password':_0x448de3[_0xe5aa('0x15')],'grant_type':_0xe5aa('0x15'),'client_secret':_0x448de3[_0xe5aa('0x16')]},'json':!![]};return rp(_0x12832c)['then'](function(_0x412b75){return _0x412b75[_0xe5aa('0x17')];})['catch'](function(_0x3a1dbe){logger[_0xe5aa('0x18')]('['+[_0x11c1ab[_0xe5aa('0x19')]()]+']\x20Wrong\x20credentials!');return _0x3a1dbe[_0xe5aa('0x1a')];});}function getUser(_0x399ff1,_0x3de4f3,_0x471a7c,_0x4ad133,_0x10144c,_0x15f647){return new Promise(function(_0xa2ab60,_0x4281ea){return getAuthToken(_0x3de4f3,_0x4ad133,_0x15f647)[_0xe5aa('0x1b')](function(_0x12c737){var _0x5796e0={'method':'GET','uri':_0x10144c+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xe5aa('0x1c')+_0x12c737,'OData-Version':_0xe5aa('0x1d')},'json':!![]};return rp(_0x5796e0);})['then'](function(_0x47021c){var _0x54b36d=_0x47021c[_0xe5aa('0x1e')];var _0x19d216=![];var _0x47cb09=null;if(!_[_0xe5aa('0x1f')](_0x471a7c)){if(intUtil[_0xe5aa('0x20')](_0x471a7c[_0xe5aa('0x21')])){_0x399ff1['userEmail']=_0x471a7c[_0xe5aa('0x21')];for(_0x47cb09=0x0;_0x47cb09<_0x54b36d[_0xe5aa('0x22')];_0x47cb09++){if(_0x54b36d[_0x47cb09][_0xe5aa('0x23')]===_0x471a7c[_0xe5aa('0x21')]&&!_0x54b36d[_0x47cb09][_0xe5aa('0x24')]){_0x19d216=!![];logger[_0xe5aa('0x25')]('['+[_0x15f647[_0xe5aa('0x19')]()]+_0xe5aa('0x26')+_0x54b36d[_0x47cb09][_0xe5aa('0x27')]+'!');_0x399ff1[_0xe5aa('0x28')]=_0x54b36d[_0x47cb09][_0xe5aa('0x27')];}}}}if(!_0x19d216){logger['info']('['+[_0x15f647[_0xe5aa('0x19')]()]+_0xe5aa('0x29'));_0x399ff1['userEmail']=_0x3de4f3[_0xe5aa('0x14')];for(_0x47cb09=0x0;_0x47cb09<_0x54b36d['length'];_0x47cb09++){if(_0x54b36d[_0x47cb09][_0xe5aa('0x23')]===_0x3de4f3[_0xe5aa('0x14')]){_0x399ff1[_0xe5aa('0x28')]=_0x54b36d[_0x47cb09]['systemuserid'];}}}_0xa2ab60(_0x399ff1);})[_0xe5aa('0x2a')](function(_0x4dae31){_0x4281ea(_0x4dae31[_0xe5aa('0x1a')]);});});}function createEndUser(_0x162903,_0x1f77f6,_0x55e4e7,_0x3c47d8,_0x55b17e,_0xb29893){return new Promise(function(_0x3d97d8,_0x2bc1e4){return getAuthToken(_0x1f77f6,_0x55e4e7,_0xb29893)[_0xe5aa('0x1b')](function(_0x5d3fd9){var _0xef09f6=_0xb29893[_0xe5aa('0x2b')]()==='outbound'?_0x55b17e[_0xe5aa('0x2c')]:_0x55b17e[_0xe5aa('0x2d')];var _0x1d5a9e={'method':_0xe5aa('0x13'),'uri':_0x3c47d8+_0xe5aa('0x2e'),'body':{'telephone1':_0xef09f6,'fullname':_0xef09f6,'firstname':_0xef09f6,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x162903[_0xe5aa('0x28')]+')'},'headers':{'Authorization':_0xe5aa('0x1c')+_0x5d3fd9,'OData-Version':_0xe5aa('0x1d')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x1d5a9e);})[_0xe5aa('0x1b')](function(_0x288a0){var _0x1d5d94=_0x288a0['headers'][_0xe5aa('0x2f')];var _0x498246=_0x1d5d94[_0xe5aa('0x30')](_0x1d5d94[_0xe5aa('0x31')]('(')+0x1,_0x1d5d94['lastIndexOf'](')'));_0x162903[_0xe5aa('0x32')]=_0x498246;_0x3d97d8(_0x162903);})[_0xe5aa('0x2a')](function(_0x58ea7f){_0x2bc1e4(_0x58ea7f[_0xe5aa('0x1a')]);});});}function getEndUser(_0x7de527,_0x2deec1,_0x200814,_0x813d02,_0x10b7d3,_0x445094,_0x260248){var _0x94d98e=_0x445094[_0xe5aa('0x2b')]()===_0xe5aa('0x33')?_0x10b7d3[_0xe5aa('0x2c')]:_0x10b7d3[_0xe5aa('0x2d')];return getAuthToken(_0x2deec1,_0x200814,_0x445094)[_0xe5aa('0x1b')](function(_0x478853){var _0x46011c={'method':_0xe5aa('0x34'),'uri':_0x813d02+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x94d98e[_0xe5aa('0x35')]('+','%2b')+'\x27','headers':{'Authorization':_0xe5aa('0x1c')+_0x478853,'If-None-Match':null,'OData-Version':_0xe5aa('0x1d')},'json':!![]};return rp(_0x46011c);})['then'](function(_0xf82ba){var _0x3d011c=![];if(!_0xf82ba)return _0x3d011c;var _0xa852f7=_0xf82ba[_0xe5aa('0x1e')];for(var _0x161f75=0x0;_0x161f75<_0xa852f7[_0xe5aa('0x22')];_0x161f75++){if(_0xa852f7[_0x161f75][_0xe5aa('0x36')]===_0x94d98e){_0x3d011c=!![];_0x7de527['enduserId']=_0xa852f7[_0x161f75][_0xe5aa('0x37')];}}return _0x3d011c;})['then'](function(_0x71ec22){if(_0x71ec22)return _0x7de527;if(_0x260248===_0xe5aa('0x38')){logger[_0xe5aa('0x25')]('['+[_0x445094['toUpperCase']()]+_0xe5aa('0x39'));return _0x7de527;}return createEndUser(_0x7de527,_0x2deec1,_0x200814,_0x813d02,_0x10b7d3,_0x445094)['then'](function(_0x41a9bb){logger[_0xe5aa('0x25')]('['+[_0x445094[_0xe5aa('0x19')]()]+_0xe5aa('0x3a'),_0x41a9bb[_0xe5aa('0x32')]);return _0x41a9bb;});});}function getCustomFields(_0x20090f,_0x3dc652,_0x52d0e2){var _0x51bf24={};if(_0x20090f[_0xe5aa('0x22')]>0x0){_[_0xe5aa('0x3b')](_0x20090f,function(_0x51eaec){if(_[_0xe5aa('0x3c')]([_0xe5aa('0x3d'),'picklist'],_0x51eaec['type'])&&_0x51eaec[_0xe5aa('0x3e')]&&!_0x51eaec[_0xe5aa('0x3f')]){var _0x4fc156=_0x51eaec['idField'][_0xe5aa('0x2b')]();var _0x2fd292=_0x4fc156[_0xe5aa('0x30')](0x0,_0x4fc156['indexOf']('_'));var _0x53f332=_0x4fc156[_0xe5aa('0x30')](_0x4fc156[_0xe5aa('0x40')]('_')+0x1);if(_0x2fd292===_0x52d0e2){_0x51bf24[_0x53f332]=_0x51eaec[_0xe5aa('0x41')];}}});}return _0x51bf24;}function getTicket(_0x105e1f,_0x314938,_0x46de5e,_0xd49913,_0x4fa45d,_0x191b60,_0x2b439d){return new Promise(function(_0x5f353c,_0x1738be){var _0xddd4fb;return getAuthToken(_0x314938,_0x46de5e,_0x2b439d)[_0xe5aa('0x1b')](function(_0x379a72){if(_0x191b60['ticketType']===_0xe5aa('0x42')){_0xddd4fb={'method':_0xe5aa('0x13'),'uri':_0xd49913+_0xe5aa('0x43'),'body':Object[_0xe5aa('0x44')]({},{'title':intUtil[_0xe5aa('0x45')](_0x191b60[_0xe5aa('0x46')],_0x4fa45d,'\x20'),'description':intUtil['getString'](_0x191b60[_0xe5aa('0x47')],_0x4fa45d,'\x0a'),'customerid_contact@odata.bind':_0x105e1f[_0xe5aa('0x32')]?_0xe5aa('0x48')+_0x105e1f[_0xe5aa('0x32')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x105e1f[_0xe5aa('0x28')]+')','caseorigincode':'1'},getCustomFields(_0x191b60[_0xe5aa('0x49')],_0x4fa45d,_0x191b60['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x379a72,'OData-Version':_0xe5aa('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x191b60[_0xe5aa('0x4a')]===_0xe5aa('0x4b')){var _0x4641c9=_0x105e1f[_0xe5aa('0x32')]?[{'partyid_systemuser@odata.bind':_0xe5aa('0x4c')+_0x105e1f[_0xe5aa('0x28')]+')','participationtypemask':_0x105e1f['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xe5aa('0x48')+_0x105e1f[_0xe5aa('0x32')]+')','participationtypemask':_0x105e1f[_0xe5aa('0x4d')]===_0xe5aa('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xe5aa('0x4c')+_0x105e1f[_0xe5aa('0x28')]+')','participationtypemask':_0x105e1f['callDirection']===_0xe5aa('0x4e')?0x2:0x1}];_0xddd4fb={'method':_0xe5aa('0x13'),'uri':_0xd49913+_0xe5aa('0x4f'),'body':Object[_0xe5aa('0x44')]({},{'subject':intUtil[_0xe5aa('0x45')](_0x191b60['Subjects'],_0x4fa45d,'\x20'),'phonenumber':String(_0x4fa45d[_0xe5aa('0x2d')]),'description':intUtil['getString'](_0x191b60[_0xe5aa('0x47')],_0x4fa45d,'\x0a'),'regardingobjectid_contact@odata.bind':_0x105e1f['enduserId']?_0xe5aa('0x48')+_0x105e1f[_0xe5aa('0x32')]+')':undefined,'ownerid@odata.bind':_0xe5aa('0x4c')+_0x105e1f[_0xe5aa('0x28')]+')','directioncode':_0x105e1f[_0xe5aa('0x4d')]===_0xe5aa('0x4e')?![]:!![],'phonecall_activity_parties':_0x4641c9},getCustomFields(_0x191b60['Fields'],_0x4fa45d,_0x191b60[_0xe5aa('0x4a')])),'headers':{'Authorization':_0xe5aa('0x1c')+_0x379a72,'OData-Version':_0xe5aa('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xddd4fb);})['then'](function(_0x460ccb){var _0x97ffae=_0x460ccb['headers'][_0xe5aa('0x2f')];var _0x42bc55=_0x97ffae['substring'](_0x97ffae['lastIndexOf']('(')+0x1,_0x97ffae[_0xe5aa('0x31')](')'));_0x105e1f[_0xe5aa('0x50')]=_0x42bc55;_0x5f353c(_0x105e1f);})[_0xe5aa('0x2a')](function(_0xc4f3c2){_0x1738be(_0xc4f3c2[_0xe5aa('0x1a')]);});});}function emit(_0x60485a,_0x44b11f,_0x1eba09,_0x40422e){var _0x46aabc={'uri':util[_0xe5aa('0x51')](_0xe5aa('0x52'),_0x60485a,_0x1eba09,_0x40422e)};io['to'](util[_0xe5aa('0x51')](_0xe5aa('0x53'),_0x44b11f))[_0xe5aa('0x54')]('trigger:browser:url',_0x46aabc);}exports['cs']=function(_0x2737bd,_0x31907c,_0x2ecbcc,_0x4663b7,_0x3a6d21,_0x152f20,_0x3b50ae,_0x15be0a){var _0x44f169={};_0x152f20[_0xe5aa('0xc')]=_0x152f20[_0xe5aa('0xb')]?intUtil['stripTrailingSlash'](_0x152f20[_0xe5aa('0xd')][_0xe5aa('0xe')]):intUtil[_0xe5aa('0x55')](_0x152f20[_0xe5aa('0xc')]);_0x152f20[_0xe5aa('0x56')]=intUtil[_0xe5aa('0x55')](_0x152f20[_0xe5aa('0x56')]);_0x44f169[_0xe5aa('0x4d')]=_0x15be0a===_0xe5aa('0x4e')||_0x15be0a===_0xe5aa('0x57')?_0xe5aa('0x4e'):_0xe5aa('0x33');var _0x1d37c2=_0x152f20[_0xe5aa('0xb')]?util[_0xe5aa('0x51')]('%s/api/data/v9.0/',_0x152f20[_0xe5aa('0xd')][_0xe5aa('0xe')]):util[_0xe5aa('0x51')](_0xe5aa('0x58'),_0x152f20['remoteUri']);var _0x1a0f9c=util[_0xe5aa('0x51')](_0xe5aa('0x59'),_0x152f20[_0xe5aa('0xf')]);var _0x4afc9e=util[_0xe5aa('0x51')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x152f20['serverUrl'],_0x31907c[_0xe5aa('0x5a')],md5(_0x31907c[_0xe5aa('0x5a')]));if(_0x3a6d21&&_0x3a6d21[_0xe5aa('0x5b')]){logger[_0xe5aa('0x25')](_0xe5aa('0x5c'),'Recording\x20is\x20enabled!');_0x31907c[_0xe5aa('0x5d')]=_0x4afc9e;}else if(_0x3b50ae&&_0x3b50ae[_0xe5aa('0x5e')]&&_0x3b50ae['recordingFormat']!==_0xe5aa('0x5f')){logger[_0xe5aa('0x25')](_0xe5aa('0x60'),_0xe5aa('0x61'));_0x31907c[_0xe5aa('0x5d')]=_0x4afc9e;}else{_0x31907c[_0xe5aa('0x5d')]='';}return getUser(_0x44f169,_0x152f20,_0x4663b7,_0x1a0f9c,_0x1d37c2,_0x15be0a)[_0xe5aa('0x1b')](function(_0xff2f72){logger[_0xe5aa('0x25')]('['+_0x15be0a[_0xe5aa('0x19')]()+_0xe5aa('0x62'),_0xff2f72[_0xe5aa('0x28')]);logger[_0xe5aa('0x25')]('['+_0x15be0a[_0xe5aa('0x19')]()+_0xe5aa('0x63'),_0xff2f72[_0xe5aa('0x64')]);return getEndUser(_0xff2f72,_0x152f20,_0x1a0f9c,_0x1d37c2,_0x31907c,_0x15be0a,_0x2ecbcc[_0xe5aa('0x65')]);})[_0xe5aa('0x1b')](function(_0x3407e3){logger['info']('['+_0x15be0a[_0xe5aa('0x19')]()+_0xe5aa('0x66'),_0x3407e3[_0xe5aa('0x32')]);logger['info']('['+_0x15be0a[_0xe5aa('0x19')]()+_0xe5aa('0x67'),_0x31907c[_0xe5aa('0x2d')]);return getTicket(_0x3407e3,_0x152f20,_0x1a0f9c,_0x1d37c2,_0x31907c,_0x2ecbcc,_0x15be0a);})[_0xe5aa('0x1b')](function(_0x34a329){logger[_0xe5aa('0x25')](util['format']('['+_0x15be0a['toUpperCase']()+_0xe5aa('0x68'),_0x2ecbcc[_0xe5aa('0x4a')],_0x34a329['ticketId']));logger[_0xe5aa('0x25')](util['format']('['+_0x15be0a[_0xe5aa('0x19')]()+_0xe5aa('0x69'),_0x15be0a));if(_0x15be0a!==_0xe5aa('0x57')){logger[_0xe5aa('0x25')]('['+_0x15be0a[_0xe5aa('0x19')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x152f20['remoteUri'],_0x4663b7['name'],_0x2ecbcc['ticketType'],_0x34a329[_0xe5aa('0x50')]);}})['catch'](function(_0x379ed4){logger[_0xe5aa('0x18')]('['+_0x15be0a[_0xe5aa('0x19')]()+_0xe5aa('0x6a'),_0x379ed4[_0xe5aa('0x1a')]);});};