Built motion from commit 746c7d2a.|2.5.35
[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 _0x864a=['%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','length','adminId','result','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','true','userId',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','includes','string','customField','nameField','toLowerCase','content','toString','idField','type','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','Subjects','getString','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl'];(function(_0x1fd675,_0x587658){var _0x521d1c=function(_0x2d16e0){while(--_0x2d16e0){_0x1fd675['push'](_0x1fd675['shift']());}};_0x521d1c(++_0x587658);}(_0x864a,0x172));var _0xa864=function(_0x5acb42,_0x1f64df){_0x5acb42=_0x5acb42-0x0;var _0x5eaa75=_0x864a[_0x5acb42];return _0x5eaa75;};'use strict';var _=require(_0xa864('0x0'));var Promise=require('bluebird');var rp=require(_0xa864('0x1'));var util=require(_0xa864('0x2'));var md5=require(_0xa864('0x3'));var Redis=require(_0xa864('0x4'));var intUtil=require(_0xa864('0x5'));var config=require(_0xa864('0x6'));var logger=require(_0xa864('0x7'))(_0xa864('0x8'));config[_0xa864('0x9')]=_[_0xa864('0xa')](config[_0xa864('0x9')],{'host':_0xa864('0xb'),'port':0x18eb});var io=require(_0xa864('0xc'))(new Redis(config[_0xa864('0x9')]));function getAdminUser(_0x433de4,_0xa31f4,_0x320912,_0xa99a25,_0x3b603e,_0x4600c9){return new Promise(function(_0x5360ff,_0x2abee1){var _0x4a2578={'method':_0xa864('0xd'),'uri':_0xa99a25+_0xa864('0xe')+'&'+_0x3b603e+'&'+_0x4600c9,'auth':_0xa31f4,'json':!![]};return rp(_0x4a2578)['then'](function(_0x2ed8f8){if(_0x2ed8f8['result'][_0xa864('0xf')]>0x0){_0x320912[_0xa864('0x10')]=_0x2ed8f8[_0xa864('0x11')][0x0][_0xa864('0x12')];}logger[_0xa864('0x13')]('['+[_0x433de4['toUpperCase']()]+_0xa864('0x14'),_0x320912);_0x5360ff(_0x320912);})[_0xa864('0x15')](function(_0x502de9){logger[_0xa864('0x16')]('['+[_0x433de4[_0xa864('0x17')]()]+']',_0x502de9[_0xa864('0x18')]);_0x2abee1(_0x502de9['message']);});});}function getUser(_0x4cd99b,_0x58e5b4,_0x1496f7,_0x456e0c,_0x2feb1f){return function(_0x3873db){logger[_0xa864('0x13')]('['+[_0x4cd99b[_0xa864('0x17')]()]+_0xa864('0x19'),_0x3873db);return new Promise(function(_0x55d6e9,_0x37c638){if(intUtil[_0xa864('0x1a')](_0x3873db[_0xa864('0x1b')])){var _0x5d7aeb={'method':_0xa864('0xd'),'uri':_0x1496f7+_0xa864('0x1c')+_0x3873db[_0xa864('0x1b')]+'&'+_0x456e0c+'&'+_0x2feb1f,'auth':_0x58e5b4,'json':!![]};logger[_0xa864('0x13')]('['+[_0x4cd99b[_0xa864('0x17')]()]+_0xa864('0x1d'),_0x5d7aeb);return rp(_0x5d7aeb)[_0xa864('0x1e')](function(_0x2d93e8){logger['info']('['+[_0x4cd99b[_0xa864('0x17')]()]+_0xa864('0x1f'),_0x2d93e8);if(_0x2d93e8['result'][_0xa864('0xf')]>0x0&&String(_0x2d93e8[_0xa864('0x11')][0x0]['active'])===_0xa864('0x20')){_0x3873db[_0xa864('0x21')]=_0x2d93e8[_0xa864('0x11')][0x0]['sys_id'];}else{_0x3873db[_0xa864('0x21')]=_0x3873db[_0xa864('0x10')];_0x3873db[_0xa864('0x1b')]=_0x3873db['adminEmail'];}logger[_0xa864('0x13')]('['+[_0x4cd99b[_0xa864('0x17')]()]+'],\x20getUser\x20crm',_0x3873db);_0x55d6e9(_0x3873db);})[_0xa864('0x15')](function(_0x1c052c){logger[_0xa864('0x16')]('['+[_0x4cd99b[_0xa864('0x17')]()]+']',_0x1c052c[_0xa864('0x18')]);_0x37c638(_0x1c052c[_0xa864('0x18')]);});}else{logger['info']('['+[_0x4cd99b['toUpperCase']()]+_0xa864('0x22'));_0x3873db[_0xa864('0x21')]=_0x3873db['adminId'];_0x3873db['userEmail']=_0x3873db[_0xa864('0x23')];_0x55d6e9(_0x3873db);}});};}function createEndUser(_0x459aaf,_0xf4a8d4,_0x335380,_0x1cef39,_0x3cf51a){logger[_0xa864('0x13')]('['+[_0x459aaf[_0xa864('0x17')]()]+_0xa864('0x24'),_0x335380);return new Promise(function(_0x29e033,_0x2a47a2){var _0x53e3e2={'method':_0xa864('0x25'),'uri':_0x1cef39+_0xa864('0x26')+_0x3cf51a,'body':{'user_name':_0x335380['endUserNumber'],'roles':_0xa864('0x27'),'first_name':_0x335380[_0xa864('0x28')],'active':_0xa864('0x20'),'date_format':'System','phone':_0x335380[_0xa864('0x28')]},'auth':_0xf4a8d4,'json':!![]};return rp(_0x53e3e2)[_0xa864('0x1e')](function(_0xf8e9db){logger[_0xa864('0x13')]('['+[_0x459aaf[_0xa864('0x17')]()]+_0xa864('0x29'),_0xf8e9db[_0xa864('0x11')]);_0x335380[_0xa864('0x2a')]=_0xf8e9db[_0xa864('0x11')][_0xa864('0x12')];_0x29e033(_0x335380);})['catch'](function(_0x4b72ff){logger[_0xa864('0x16')]('['+[_0x459aaf[_0xa864('0x17')]()]+']',_0x4b72ff['message']);_0x2a47a2(_0x4b72ff[_0xa864('0x18')]);});});}function getEndUser(_0x56f52d,_0x150851,_0x5a1906,_0x5f2a0c,_0x3d410c){return function(_0x46eb46){logger[_0xa864('0x13')]('['+[_0x56f52d[_0xa864('0x17')]()]+_0xa864('0x2b'),_0x46eb46);return new Promise(function(_0x26f77b,_0x81f616){var _0x105246={'method':_0xa864('0xd'),'uri':_0x5a1906+_0xa864('0x2c')+_0x46eb46[_0xa864('0x28')]+'&'+_0x5f2a0c+'&'+_0x3d410c,'auth':_0x150851,'json':!![]};return rp(_0x105246)[_0xa864('0x1e')](function(_0x200296){if(_0x200296[_0xa864('0x11')][_0xa864('0xf')]>0x0){_0x46eb46['endUserId']=_0x200296[_0xa864('0x11')][0x0]['sys_id'];logger[_0xa864('0x13')]('['+[_0x56f52d['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x46eb46);_0x26f77b(_0x46eb46);}else{return createEndUser(_0x56f52d,_0x150851,_0x46eb46,_0x5a1906,_0x5f2a0c)[_0xa864('0x1e')](function(_0x35df0f){logger[_0xa864('0x13')]('['+[_0x56f52d[_0xa864('0x17')]()]+_0xa864('0x2d'),_0x35df0f);_0x26f77b(_0x35df0f);});}})[_0xa864('0x15')](function(_0x11ae23){logger['error']('['+[_0x56f52d[_0xa864('0x17')]()]+']',_0x11ae23['message']);_0x81f616(_0x11ae23['message']);});});};}function getCustomFields(_0x4f6d32,_0x2ff80d){var _0xe0fa04={};if(_0x4f6d32[_0xa864('0xf')]>0x0){_[_0xa864('0x2e')](_0x4f6d32,function(_0x23c81e){if(_[_0xa864('0x2f')]([_0xa864('0x30'),'picklist'],_0x23c81e['type'])&&_0x23c81e['nameField']&&!_0x23c81e[_0xa864('0x31')]){_0xe0fa04[_0x23c81e[_0xa864('0x32')][_0xa864('0x33')]()]=_0x23c81e[_0xa864('0x34')][_0xa864('0x35')]();}else if(_[_0xa864('0x2f')]([_0xa864('0x30'),'picklist'],_0x23c81e['type'])&&_0x23c81e[_0xa864('0x36')]&&_0x23c81e[_0xa864('0x31')]){_0xe0fa04[_0x23c81e[_0xa864('0x36')]['toLowerCase']()]=_0x23c81e['content'][_0xa864('0x35')]();}else if(_0x23c81e[_0xa864('0x37')]===_0xa864('0x38')&&_0x23c81e[_0xa864('0x39')]&&_0x23c81e['idField']&&_0x23c81e[_0xa864('0x31')]){_0xe0fa04[_0x23c81e[_0xa864('0x36')]['toLowerCase']()]=_0x2ff80d[_0x23c81e[_0xa864('0x39')]][_0xa864('0x35')]();}else if(_0x23c81e[_0xa864('0x37')]===_0xa864('0x3a')&&_0x23c81e['Variable']&&_0x23c81e[_0xa864('0x3b')][_0xa864('0x3c')]&&_0x23c81e['idField']&&_0x23c81e[_0xa864('0x31')]){_0xe0fa04[_0x23c81e[_0xa864('0x36')][_0xa864('0x33')]()]=_0x2ff80d[_0x23c81e[_0xa864('0x3b')][_0xa864('0x3c')]['toLowerCase']()][_0xa864('0x35')]();}});}return _0xe0fa04;}function getTicket(_0x951226,_0x3e971a,_0x198772,_0x4fba8f,_0x5a02c7,_0x51bbf0){return function(_0x18bc3d){logger['info']('['+[_0x951226[_0xa864('0x17')]()]+_0xa864('0x3d'),_0x18bc3d);return new Promise(function(_0x45cfc2,_0xef7aa9){var _0x463294=_0x951226[_0xa864('0x33')]()===_0xa864('0x3e')?_0x18bc3d[_0xa864('0x21')]:_0x18bc3d['endUserId'];var _0xb3853b={'method':_0xa864('0x25'),'uri':_0x198772+_0xa864('0x3f')+'?'+_0x51bbf0,'body':Object[_0xa864('0x40')]({},{'active':_0xa864('0x20'),'caller_id':_0x463294,'assigned_to':_0x18bc3d[_0xa864('0x21')],'short_description':intUtil['getString'](_0x4fba8f[_0xa864('0x41')],_0x5a02c7,'\x20'),'description':intUtil[_0xa864('0x42')](_0x4fba8f['Descriptions'],_0x5a02c7,'\x0a')},getCustomFields(_0x4fba8f[_0xa864('0x43')],_0x5a02c7)),'auth':_0x3e971a,'json':!![]};return rp(_0xb3853b)[_0xa864('0x1e')](function(_0x11abfc){logger[_0xa864('0x13')]('['+[_0x951226[_0xa864('0x17')]()]+_0xa864('0x44'),_0x11abfc[_0xa864('0x11')]);_0x18bc3d[_0xa864('0x45')]=_0x11abfc[_0xa864('0x11')][_0xa864('0x12')];_0x18bc3d[_0xa864('0x46')]=_0x11abfc['result']['number'];logger[_0xa864('0x13')]('['+[_0x951226['toUpperCase']()]+_0xa864('0x47'),_0x18bc3d);_0x45cfc2(_0x18bc3d);})[_0xa864('0x15')](function(_0x205373){logger[_0xa864('0x16')]('['+[_0x951226['toUpperCase']()]+']',_0x205373[_0xa864('0x18')]);_0xef7aa9(_0x205373['message']);});});};}function createRemoteTag(_0x1eccc4,_0x1214fe,_0xf2ce0b,_0x540d56){return new Promise(function(_0x32740a,_0x54a4a3){var _0x1d5c16={'method':'POST','uri':_0xf2ce0b+'label'+'?'+_0x540d56,'body':{'short_description':_0x1eccc4,'global':!![],'active':!![],'name':_0x1eccc4},'auth':_0x1214fe,'json':!![]};return rp(_0x1d5c16)['then'](function(_0x2b2911){var _0x1362a4=_0x2b2911[_0xa864('0x11')][_0xa864('0x12')];_0x32740a(_0x1362a4);});});}function getRemoteTag(_0x5dc2e4,_0x5bfd19,_0x1f4383,_0x3f143c,_0xcef8fc){return new Promise(function(_0x41e7b0,_0x3a1b2){var _0x481946={'method':'GET','uri':_0x1f4383+_0xa864('0x48')+_0xa864('0x49')+_0x5dc2e4+'&'+_0x3f143c,'auth':_0x5bfd19,'json':!![]};return rp(_0x481946)['then'](function(_0x4b0cf8){if(_0x4b0cf8[_0xa864('0x11')][_0xa864('0xf')]>0x0){var _0x22dcb0=_0x4b0cf8[_0xa864('0x11')][0x0]['sys_id'];_0x41e7b0(_0x22dcb0);}else{return createRemoteTag(_0x5dc2e4,_0x5bfd19,_0x1f4383,_0x3f143c)[_0xa864('0x1e')](function(_0x354d93){_0x41e7b0(_0x354d93);});}});});}function assignTagToIncident(_0x432269,_0x1b9ce5,_0x4750d6,_0x4ebd30,_0x2666ab){return new Promise(function(_0xfcc5ea,_0x2f5d4e){var _0x3ddb90={'method':_0xa864('0x25'),'uri':_0x4750d6+_0xa864('0x4a')+'?'+_0x2666ab,'body':{'label':_0x432269,'table':'incident','id_type':'Incident','table_key':_0x4ebd30[_0xa864('0x45')],'title':_0xa864('0x4b')+_0x4ebd30[_0xa864('0x46')],'id_display':_0x4ebd30[_0xa864('0x46')]},'auth':_0x1b9ce5,'json':!![]};return rp(_0x3ddb90)[_0xa864('0x1e')](function(_0x1dff92){_0xfcc5ea();})[_0xa864('0x15')](function(){_0xfcc5ea();});});}function manageTags(_0x3c2cdf,_0xf97083,_0x53b5a5,_0x35769a,_0x27cd03,_0xed96bb,_0x17e8e5){return new Promise(function(_0x12e0b5,_0xce956f){var _0x12d262=[];_0xf97083[_0xa864('0x2e')](function(_0x370f53){_0x12d262['push'](getRemoteTag(_0x370f53,_0x53b5a5,_0x35769a,_0xed96bb,_0x17e8e5));});return Promise[_0xa864('0x4c')](_0x12d262)[_0xa864('0x1e')](function(_0x11e0b4){if(_0x11e0b4[_0xa864('0xf')]){logger[_0xa864('0x13')]('['+[_0x3c2cdf['toUpperCase']()]+_0xa864('0x4d'),_0x11e0b4);var _0x2da8f5=[];_0x11e0b4[_0xa864('0x2e')](function(_0x1de54b){_0x2da8f5['push'](assignTagToIncident(_0x1de54b,_0x53b5a5,_0x35769a,_0x27cd03,_0xed96bb));});return Promise[_0xa864('0x4c')](_0x2da8f5)['then'](function(){_0x12e0b5();})[_0xa864('0x15')](function(){_0x12e0b5();});}else{_0x12e0b5();}});});}function getTags(_0xbc0365,_0x5c3feb,_0x59aea0,_0x5d3f6f,_0x47c6f0,_0x588f51){return function(_0x2f2e22){return new Promise(function(_0x22bf56,_0xf2bf7a){var _0x38d6a8=[];var _0x5a7b27=_0x5d3f6f[_0xa864('0x4e')];if(_0x5a7b27&&_0x5a7b27[_0xa864('0xf')]>0x0){_0x38d6a8=_[_0xa864('0x4f')](_0x5a7b27,_0xa864('0x3c'));}if(_0x38d6a8['length']>0x0){return manageTags(_0xbc0365,_0x38d6a8,_0x5c3feb,_0x59aea0,_0x2f2e22,_0x47c6f0,_0x588f51)[_0xa864('0x1e')](function(){_0x22bf56(_0x2f2e22);});}else{_0x22bf56(_0x2f2e22);}});};}function emit(_0x27bd8e,_0x5df1a9,_0x3a00d9){var _0x516862=_0xa864('0x50')+_0xa864('0x51')+_0xa864('0x52')+_0xa864('0x53');var _0x2e27fa={'uri':_0x27bd8e+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x3a00d9+_0x516862};io['to'](util[_0xa864('0x54')]('user:%s',_0x5df1a9))[_0xa864('0x55')](_0xa864('0x56'),_0x2e27fa);}exports['cs']=function(_0x2b6d74,_0x32602f,_0x4d8fd0,_0x22f8c0,_0x14c2e8,_0x48c4b9,_0xb50c65,_0x1e6717){var _0x138225={};var _0x1b8f18={'user':_0x48c4b9[_0xa864('0x57')],'pass':_0x48c4b9[_0xa864('0x58')]};var _0x11c099=_0xa864('0x59');var _0x4b98b3=_0xa864('0x5a');_0x48c4b9[_0xa864('0x5b')]=intUtil[_0xa864('0x5c')](_0x48c4b9[_0xa864('0x5b')]);_0x48c4b9[_0xa864('0x5d')]=intUtil[_0xa864('0x5c')](_0x48c4b9[_0xa864('0x5d')]);var _0x1ae3c7=util['format'](_0xa864('0x5e'),_0x48c4b9['remoteUri']);_0x138225[_0xa864('0x1b')]=!_[_0xa864('0x5f')](_0x22f8c0)?_0x22f8c0[_0xa864('0x60')]:null;_0x138225['adminEmail']=_0x48c4b9['email'];_0x138225['endUserNumber']=_0x1e6717['toLowerCase']()===_0xa864('0x3e')?_0x32602f[_0xa864('0x61')]:_0x32602f[_0xa864('0x62')];_0x138225[_0xa864('0x63')]=_0x1e6717===_0xa864('0x64')||_0x1e6717==='unmanaged'?_0xa864('0x64'):_0xa864('0x3e');var _0x5e63a9=util[_0xa864('0x54')](_0xa864('0x65'),_0x48c4b9[_0xa864('0x5d')],_0x32602f[_0xa864('0x66')],md5(_0x32602f[_0xa864('0x66')]));if(_0x14c2e8&&_0x14c2e8[_0xa864('0x67')]){logger[_0xa864('0x13')](_0xa864('0x68'),_0xa864('0x69'));_0x32602f[_0xa864('0x6a')]=_0x5e63a9;}else if(_0xb50c65&&_0xb50c65[_0xa864('0x6b')]&&_0xb50c65[_0xa864('0x6b')]!==_0xa864('0x6c')){logger[_0xa864('0x13')](_0xa864('0x6d'),_0xa864('0x69'));_0x32602f[_0xa864('0x6a')]=_0x5e63a9;}else{_0x32602f['recordingURL']='';}return getAdminUser(_0x1e6717,_0x1b8f18,_0x138225,_0x1ae3c7,_0x4b98b3,_0x11c099)['then'](getUser(_0x1e6717,_0x1b8f18,_0x1ae3c7,_0x4b98b3,_0x11c099))['then'](getEndUser(_0x1e6717,_0x1b8f18,_0x1ae3c7,_0x4b98b3,_0x11c099))[_0xa864('0x1e')](getTicket(_0x1e6717,_0x1b8f18,_0x1ae3c7,_0x4d8fd0,_0x32602f,_0x4b98b3))[_0xa864('0x1e')](function(_0x3bbc70){logger[_0xa864('0x13')](util[_0xa864('0x54')](_0xa864('0x6e'),_0x3bbc70[_0xa864('0x45')]));logger[_0xa864('0x13')](util[_0xa864('0x54')](_0xa864('0x6f'),_0x1e6717));if(_0x1e6717!==_0xa864('0x70')){logger[_0xa864('0x13')]('['+[_0x1e6717['toUpperCase']()]+']',_0xa864('0x71'));emit(_0x48c4b9[_0xa864('0x5b')],_0x22f8c0[_0xa864('0x3c')],_0x3bbc70[_0xa864('0x45')]);}})['catch'](function(_0x34d669){logger[_0xa864('0x16')]('['+[_0x1e6717['toUpperCase']()]+_0xa864('0x72'),util[_0xa864('0x73')](_0x34d669,{'showHidden':!![],'depth':null}));});};