899659c7fed52a1f9c2a0ee6c015153fb40b90b3
[motion2.git] / server / services / ami / trigger / integration / servicenow.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 _0x617a=['picklist','nameField','customField','content','toString','includes','type','idField','variable','toLowerCase','variableName','customVariable','Variable','name','outbound','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','label_entry','Incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','format','%s/api/now/table/','isNil','adminEmail','email','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','util','ioredis','./util','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','length','active','true','userId','],\x20getUser\x20crm','error','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','string'];(function(_0x30378e,_0x3a4210){var _0x338f92=function(_0x42fca7){while(--_0x42fca7){_0x30378e['push'](_0x30378e['shift']());}};_0x338f92(++_0x3a4210);}(_0x617a,0xb2));var _0xa617=function(_0x27cfff,_0x468e33){_0x27cfff=_0x27cfff-0x0;var _0x4051cc=_0x617a[_0x27cfff];return _0x4051cc;};'use strict';var _=require(_0xa617('0x0'));var Promise=require(_0xa617('0x1'));var rp=require('request-promise');var util=require(_0xa617('0x2'));var md5=require('md5');var Redis=require(_0xa617('0x3'));var intUtil=require(_0xa617('0x4'));var config=require('../../../../config/environment');var logger=require(_0xa617('0x5'))(_0xa617('0x6'));config[_0xa617('0x7')]=_[_0xa617('0x8')](config[_0xa617('0x7')],{'host':_0xa617('0x9'),'port':0x18eb});var io=require(_0xa617('0xa'))(new Redis(config[_0xa617('0x7')]));function getAdminUser(_0x57f7a1,_0x5f3941,_0x3e9675,_0x4194af,_0x20fbef,_0x5944fa){return new Promise(function(_0xc985e0,_0x468302){var _0x116ea2={'method':_0xa617('0xb'),'uri':_0x4194af+_0xa617('0xc')+'&'+_0x20fbef+'&'+_0x5944fa,'auth':_0x5f3941,'json':!![]};return rp(_0x116ea2)[_0xa617('0xd')](function(_0x38a6cb){if(_0x38a6cb[_0xa617('0xe')]['length']>0x0){_0x3e9675[_0xa617('0xf')]=_0x38a6cb[_0xa617('0xe')][0x0][_0xa617('0x10')];}logger[_0xa617('0x11')]('['+[_0x57f7a1['toUpperCase']()]+_0xa617('0x12'),_0x3e9675);_0xc985e0(_0x3e9675);})[_0xa617('0x13')](function(_0x58395d){logger['error']('['+[_0x57f7a1[_0xa617('0x14')]()]+']',_0x58395d[_0xa617('0x15')]);_0x468302(_0x58395d[_0xa617('0x15')]);});});}function getUser(_0x8a79dd,_0x29ec9b,_0x3d497f,_0x11d5bf,_0x5d0dd9){return function(_0x209982){logger[_0xa617('0x11')]('['+[_0x8a79dd[_0xa617('0x14')]()]+_0xa617('0x16'),_0x209982);return new Promise(function(_0x509de8,_0x2ef095){if(intUtil[_0xa617('0x17')](_0x209982[_0xa617('0x18')])){var _0x587b50={'method':_0xa617('0xb'),'uri':_0x3d497f+_0xa617('0x19')+_0x209982['userEmail']+'&'+_0x11d5bf+'&'+_0x5d0dd9,'auth':_0x29ec9b,'json':!![]};logger[_0xa617('0x11')]('['+[_0x8a79dd[_0xa617('0x14')]()]+'],\x20getUser\x20rp\x20obj',_0x587b50);return rp(_0x587b50)['then'](function(_0x308316){logger[_0xa617('0x11')]('['+[_0x8a79dd[_0xa617('0x14')]()]+_0xa617('0x1a'),_0x308316);if(_0x308316[_0xa617('0xe')][_0xa617('0x1b')]>0x0&&String(_0x308316[_0xa617('0xe')][0x0][_0xa617('0x1c')])===_0xa617('0x1d')){_0x209982[_0xa617('0x1e')]=_0x308316['result'][0x0][_0xa617('0x10')];}else{_0x209982[_0xa617('0x1e')]=_0x209982[_0xa617('0xf')];_0x209982[_0xa617('0x18')]=_0x209982['adminEmail'];}logger['info']('['+[_0x8a79dd[_0xa617('0x14')]()]+_0xa617('0x1f'),_0x209982);_0x509de8(_0x209982);})[_0xa617('0x13')](function(_0x14a097){logger[_0xa617('0x20')]('['+[_0x8a79dd['toUpperCase']()]+']',_0x14a097['message']);_0x2ef095(_0x14a097[_0xa617('0x15')]);});}else{logger[_0xa617('0x11')]('['+[_0x8a79dd[_0xa617('0x14')]()]+']\x20using\x20admin\x20profile');_0x209982[_0xa617('0x1e')]=_0x209982[_0xa617('0xf')];_0x209982[_0xa617('0x18')]=_0x209982['adminEmail'];_0x509de8(_0x209982);}});};}function createEndUser(_0xd09f0f,_0x202287,_0x1255b3,_0x48e9ac,_0xde7bf7){logger[_0xa617('0x11')]('['+[_0xd09f0f[_0xa617('0x14')]()]+_0xa617('0x21'),_0x1255b3);return new Promise(function(_0x4a3a50,_0x32043e){var _0x47d26b={'method':_0xa617('0x22'),'uri':_0x48e9ac+_0xa617('0x23')+_0xde7bf7,'body':{'user_name':_0x1255b3[_0xa617('0x24')],'roles':'user','first_name':_0x1255b3['endUserNumber'],'active':_0xa617('0x1d'),'date_format':'System','phone':_0x1255b3[_0xa617('0x24')]},'auth':_0x202287,'json':!![]};return rp(_0x47d26b)['then'](function(_0x173b87){logger[_0xa617('0x11')]('['+[_0xd09f0f[_0xa617('0x14')]()]+_0xa617('0x25'),_0x173b87[_0xa617('0xe')]);_0x1255b3[_0xa617('0x26')]=_0x173b87[_0xa617('0xe')][_0xa617('0x10')];_0x4a3a50(_0x1255b3);})['catch'](function(_0x54c21b){logger[_0xa617('0x20')]('['+[_0xd09f0f[_0xa617('0x14')]()]+']',_0x54c21b[_0xa617('0x15')]);_0x32043e(_0x54c21b[_0xa617('0x15')]);});});}function getEndUser(_0x4c7a00,_0x478d6f,_0x404715,_0x5ba3c0,_0x49ba07){return function(_0x36df4a){logger['info']('['+[_0x4c7a00[_0xa617('0x14')]()]+_0xa617('0x27'),_0x36df4a);return new Promise(function(_0x161bf1,_0x374ed3){var _0x322631={'method':'GET','uri':_0x404715+'sys_user?sysparm_query=phone%3D'+_0x36df4a[_0xa617('0x24')]+'&'+_0x5ba3c0+'&'+_0x49ba07,'auth':_0x478d6f,'json':!![]};return rp(_0x322631)['then'](function(_0x2df2d8){if(_0x2df2d8[_0xa617('0xe')]['length']>0x0){_0x36df4a[_0xa617('0x26')]=_0x2df2d8[_0xa617('0xe')][0x0]['sys_id'];logger['info']('['+[_0x4c7a00[_0xa617('0x14')]()]+_0xa617('0x28'),_0x36df4a);_0x161bf1(_0x36df4a);}else{return createEndUser(_0x4c7a00,_0x478d6f,_0x36df4a,_0x404715,_0x5ba3c0)[_0xa617('0xd')](function(_0x26dd17){logger[_0xa617('0x11')]('['+[_0x4c7a00['toUpperCase']()]+_0xa617('0x29'),_0x26dd17);_0x161bf1(_0x26dd17);});}})[_0xa617('0x13')](function(_0x15baf3){logger[_0xa617('0x20')]('['+[_0x4c7a00[_0xa617('0x14')]()]+']',_0x15baf3['message']);_0x374ed3(_0x15baf3['message']);});});};}function getCustomFields(_0x37ff4f,_0x284679){var _0x44493c={};if(_0x37ff4f[_0xa617('0x1b')]>0x0){_[_0xa617('0x2a')](_0x37ff4f,function(_0x41a9bc){if(_['includes']([_0xa617('0x2b'),_0xa617('0x2c')],_0x41a9bc['type'])&&_0x41a9bc[_0xa617('0x2d')]&&!_0x41a9bc[_0xa617('0x2e')]){_0x44493c[_0x41a9bc['nameField']['toLowerCase']()]=_0x41a9bc[_0xa617('0x2f')][_0xa617('0x30')]();}else if(_[_0xa617('0x31')]([_0xa617('0x2b'),'picklist'],_0x41a9bc[_0xa617('0x32')])&&_0x41a9bc[_0xa617('0x33')]&&_0x41a9bc[_0xa617('0x2e')]){_0x44493c[_0x41a9bc[_0xa617('0x33')]['toLowerCase']()]=_0x41a9bc[_0xa617('0x2f')]['toString']();}else if(_0x41a9bc[_0xa617('0x32')]===_0xa617('0x34')&&_0x41a9bc['variableName']&&_0x41a9bc['idField']&&_0x41a9bc[_0xa617('0x2e')]){_0x44493c[_0x41a9bc['idField'][_0xa617('0x35')]()]=_0x284679[_0x41a9bc[_0xa617('0x36')]][_0xa617('0x30')]();}else if(_0x41a9bc[_0xa617('0x32')]===_0xa617('0x37')&&_0x41a9bc['Variable']&&_0x41a9bc[_0xa617('0x38')][_0xa617('0x39')]&&_0x41a9bc['idField']&&_0x41a9bc['customField']){_0x44493c[_0x41a9bc[_0xa617('0x33')][_0xa617('0x35')]()]=_0x284679[_0x41a9bc[_0xa617('0x38')][_0xa617('0x39')][_0xa617('0x35')]()][_0xa617('0x30')]();}});}return _0x44493c;}function getTicket(_0x19de85,_0x13be48,_0x58ac2d,_0x9ab19b,_0xda182b,_0x45d800){return function(_0x220b24){logger['info']('['+[_0x19de85[_0xa617('0x14')]()]+']\x20getTicket\x20input\x20crm',_0x220b24);return new Promise(function(_0x5d471a,_0x235fa1){var _0xfa6eb=_0x19de85['toLowerCase']()===_0xa617('0x3a')?_0x220b24[_0xa617('0x1e')]:_0x220b24[_0xa617('0x26')];var _0x545703={'method':_0xa617('0x22'),'uri':_0x58ac2d+_0xa617('0x3b')+'?'+_0x45d800,'body':Object[_0xa617('0x3c')]({},{'active':_0xa617('0x1d'),'caller_id':_0xfa6eb,'assigned_to':_0x220b24[_0xa617('0x1e')],'short_description':intUtil[_0xa617('0x3d')](_0x9ab19b[_0xa617('0x3e')],_0xda182b,'\x20'),'description':intUtil[_0xa617('0x3d')](_0x9ab19b[_0xa617('0x3f')],_0xda182b,'\x0a')},getCustomFields(_0x9ab19b[_0xa617('0x40')],_0xda182b)),'auth':_0x13be48,'json':!![]};return rp(_0x545703)['then'](function(_0x206b68){logger[_0xa617('0x11')]('['+[_0x19de85[_0xa617('0x14')]()]+_0xa617('0x41'),_0x206b68[_0xa617('0xe')]);_0x220b24[_0xa617('0x42')]=_0x206b68['result'][_0xa617('0x10')];_0x220b24[_0xa617('0x43')]=_0x206b68['result'][_0xa617('0x44')];logger[_0xa617('0x11')]('['+[_0x19de85[_0xa617('0x14')]()]+']\x20getTicket\x20crm',_0x220b24);_0x5d471a(_0x220b24);})[_0xa617('0x13')](function(_0x5b6221){logger[_0xa617('0x20')]('['+[_0x19de85[_0xa617('0x14')]()]+']',_0x5b6221['message']);_0x235fa1(_0x5b6221['message']);});});};}function createRemoteTag(_0x23c241,_0x5a194c,_0x5d333c,_0x4afcac){return new Promise(function(_0x30ec53,_0x291777){var _0x43ddae={'method':_0xa617('0x22'),'uri':_0x5d333c+'label'+'?'+_0x4afcac,'body':{'short_description':_0x23c241,'global':!![],'active':!![],'name':_0x23c241},'auth':_0x5a194c,'json':!![]};return rp(_0x43ddae)['then'](function(_0x2ae9e9){var _0x1e161a=_0x2ae9e9[_0xa617('0xe')][_0xa617('0x10')];_0x30ec53(_0x1e161a);});});}function getRemoteTag(_0xdff1ea,_0x446241,_0x2dee64,_0x268095,_0x3d3007){return new Promise(function(_0xc957d5,_0x3a0cd1){var _0x1db257={'method':_0xa617('0xb'),'uri':_0x2dee64+_0xa617('0x45')+'?sysparm_query=name%3D'+_0xdff1ea+'&'+_0x268095,'auth':_0x446241,'json':!![]};return rp(_0x1db257)[_0xa617('0xd')](function(_0x5146d5){if(_0x5146d5[_0xa617('0xe')][_0xa617('0x1b')]>0x0){var _0x174808=_0x5146d5[_0xa617('0xe')][0x0][_0xa617('0x10')];_0xc957d5(_0x174808);}else{return createRemoteTag(_0xdff1ea,_0x446241,_0x2dee64,_0x268095)[_0xa617('0xd')](function(_0x1cfbb8){_0xc957d5(_0x1cfbb8);});}});});}function assignTagToIncident(_0x4d9792,_0x46ffe5,_0x584fd4,_0x47224e,_0x47c577){return new Promise(function(_0x24aab8,_0x5922c3){var _0x748c5f={'method':_0xa617('0x22'),'uri':_0x584fd4+_0xa617('0x46')+'?'+_0x47c577,'body':{'label':_0x4d9792,'table':_0xa617('0x3b'),'id_type':_0xa617('0x47'),'table_key':_0x47224e[_0xa617('0x42')],'title':_0xa617('0x48')+_0x47224e[_0xa617('0x43')],'id_display':_0x47224e[_0xa617('0x43')]},'auth':_0x46ffe5,'json':!![]};return rp(_0x748c5f)[_0xa617('0xd')](function(_0x4c5661){_0x24aab8();})['catch'](function(){_0x24aab8();});});}function manageTags(_0x2f5df0,_0x985e8f,_0x116da4,_0x52825e,_0x1cf4fe,_0x16b9e5,_0x4fa56c){return new Promise(function(_0x333ca2,_0xcfda85){var _0x57d01d=[];_0x985e8f['forEach'](function(_0x5bb1c7){_0x57d01d[_0xa617('0x49')](getRemoteTag(_0x5bb1c7,_0x116da4,_0x52825e,_0x16b9e5,_0x4fa56c));});return Promise['all'](_0x57d01d)[_0xa617('0xd')](function(_0x5a1312){if(_0x5a1312[_0xa617('0x1b')]){logger[_0xa617('0x11')]('['+[_0x2f5df0[_0xa617('0x14')]()]+_0xa617('0x4a'),_0x5a1312);var _0x160806=[];_0x5a1312[_0xa617('0x2a')](function(_0x5cf7c0){_0x160806[_0xa617('0x49')](assignTagToIncident(_0x5cf7c0,_0x116da4,_0x52825e,_0x1cf4fe,_0x16b9e5));});return Promise[_0xa617('0x4b')](_0x160806)[_0xa617('0xd')](function(){_0x333ca2();})[_0xa617('0x13')](function(){_0x333ca2();});}else{_0x333ca2();}});});}function getTags(_0x52b395,_0x4ba106,_0x50bd45,_0x3ee049,_0x5686a1,_0x222573){return function(_0x5b4be7){return new Promise(function(_0x58a6ab,_0x954696){var _0x2fc16b=[];var _0x34e2b1=_0x3ee049[_0xa617('0x4c')];if(_0x34e2b1&&_0x34e2b1['length']>0x0){_0x2fc16b=_['map'](_0x34e2b1,_0xa617('0x39'));}if(_0x2fc16b[_0xa617('0x1b')]>0x0){return manageTags(_0x52b395,_0x2fc16b,_0x4ba106,_0x50bd45,_0x5b4be7,_0x5686a1,_0x222573)['then'](function(){_0x58a6ab(_0x5b4be7);});}else{_0x58a6ab(_0x5b4be7);}});};}function emit(_0x38042c,_0x637afd,_0x164aed){var _0x380cc1='%26sysparm_record_target%3Dincident'+_0xa617('0x4d')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xa617('0x4e');var _0x11897d={'uri':_0x38042c+_0xa617('0x4f')+_0x164aed+_0x380cc1};io['to'](util['format']('user:%s',_0x637afd))[_0xa617('0x50')](_0xa617('0x51'),_0x11897d);}exports['cs']=function(_0x2f7549,_0x31d35e,_0x1aa029,_0x576175,_0x1d040b,_0x1168d3,_0x40719b,_0x4b186c){var _0x193f77={};var _0x546726={'user':_0x1168d3[_0xa617('0x52')],'pass':_0x1168d3[_0xa617('0x53')]};var _0x3f102f=_0xa617('0x54');var _0x345a58=_0xa617('0x55');_0x1168d3[_0xa617('0x56')]=intUtil[_0xa617('0x57')](_0x1168d3[_0xa617('0x56')]);_0x1168d3[_0xa617('0x58')]=intUtil[_0xa617('0x57')](_0x1168d3[_0xa617('0x58')]);var _0x1a14c7=util[_0xa617('0x59')](_0xa617('0x5a'),_0x1168d3[_0xa617('0x56')]);_0x193f77['userEmail']=!_[_0xa617('0x5b')](_0x576175)?_0x576175['email']:null;_0x193f77[_0xa617('0x5c')]=_0x1168d3[_0xa617('0x5d')];_0x193f77[_0xa617('0x24')]=_0x4b186c[_0xa617('0x35')]()===_0xa617('0x3a')?_0x31d35e[_0xa617('0x5e')]:_0x31d35e[_0xa617('0x5f')];_0x193f77[_0xa617('0x60')]=_0x4b186c==='queue'||_0x4b186c==='unmanaged'?_0xa617('0x61'):_0xa617('0x3a');var _0x10818c=util[_0xa617('0x59')](_0xa617('0x62'),_0x1168d3[_0xa617('0x58')],_0x31d35e[_0xa617('0x63')],md5(_0x31d35e[_0xa617('0x63')]));if(_0x1d040b&&_0x1d040b['monitor_format']){logger[_0xa617('0x11')](_0xa617('0x64'),_0xa617('0x65'));_0x31d35e['recordingURL']=_0x10818c;}else if(_0x40719b&&_0x40719b['recordingFormat']&&_0x40719b[_0xa617('0x66')]!==_0xa617('0x67')){logger[_0xa617('0x11')]('[OUTBOUND]',_0xa617('0x65'));_0x31d35e[_0xa617('0x68')]=_0x10818c;}else{_0x31d35e[_0xa617('0x68')]='';}return getAdminUser(_0x4b186c,_0x546726,_0x193f77,_0x1a14c7,_0x345a58,_0x3f102f)[_0xa617('0xd')](getUser(_0x4b186c,_0x546726,_0x1a14c7,_0x345a58,_0x3f102f))[_0xa617('0xd')](getEndUser(_0x4b186c,_0x546726,_0x1a14c7,_0x345a58,_0x3f102f))[_0xa617('0xd')](getTicket(_0x4b186c,_0x546726,_0x1a14c7,_0x1aa029,_0x31d35e,_0x345a58))[_0xa617('0xd')](function(_0x267865){logger[_0xa617('0x11')](util['format'](_0xa617('0x69'),_0x267865['ticketId']));logger['info'](util[_0xa617('0x59')](_0xa617('0x6a'),_0x4b186c));if(_0x4b186c!==_0xa617('0x6b')){logger['info']('['+[_0x4b186c[_0xa617('0x14')]()]+']',_0xa617('0x6c'));emit(_0x1168d3['remoteUri'],_0x576175[_0xa617('0x39')],_0x267865[_0xa617('0x42')]);}})[_0xa617('0x13')](function(_0x297b5f){logger[_0xa617('0x20')]('['+[_0x4b186c[_0xa617('0x14')]()]+_0xa617('0x6d'),util[_0xa617('0x6e')](_0x297b5f,{'showHidden':!![],'depth':null}));});};