Built motion from commit 3061e47c.|2.6.31
[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 _0xc543=['unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','ioredis','./util','../../../../config/environment','redis','defaults','localhost','GET','then','result','sys_id','info','catch','toUpperCase','message','],\x20getUser\x20input\x20crm','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','active','true','userId','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','adminId','adminEmail','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','includes','string','picklist','type','customField','nameField','toLowerCase','content','toString','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','Subjects','getString','Descriptions','Fields','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident\x20-\x20','forEach','push','length',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_target%3Dincident','%255EORDERBYDESCnumber','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email'];(function(_0x1d8bfc,_0x4461d4){var _0x437b5b=function(_0x261283){while(--_0x261283){_0x1d8bfc['push'](_0x1d8bfc['shift']());}};_0x437b5b(++_0x4461d4);}(_0xc543,0x195));var _0x3c54=function(_0x57cbfb,_0x2de760){_0x57cbfb=_0x57cbfb-0x0;var _0x4cb933=_0xc543[_0x57cbfb];return _0x4cb933;};'use strict';var _=require('lodash');var Promise=require(_0x3c54('0x0'));var rp=require('request-promise');var util=require('util');var md5=require('md5');var Redis=require(_0x3c54('0x1'));var intUtil=require(_0x3c54('0x2'));var config=require(_0x3c54('0x3'));var logger=require('../../../../config/logger')('servicenow');config[_0x3c54('0x4')]=_[_0x3c54('0x5')](config[_0x3c54('0x4')],{'host':_0x3c54('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3c54('0x4')]));function getAdminUser(_0x423360,_0x368746,_0x32e853,_0x56538a,_0x72790f,_0x101a81){return new Promise(function(_0x42197d,_0x301e61){var _0x41df1c={'method':_0x3c54('0x7'),'uri':_0x56538a+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x72790f+'&'+_0x101a81,'auth':_0x368746,'json':!![]};return rp(_0x41df1c)[_0x3c54('0x8')](function(_0x11c5e3){if(_0x11c5e3[_0x3c54('0x9')]['length']>0x0){_0x32e853['adminId']=_0x11c5e3[_0x3c54('0x9')][0x0][_0x3c54('0xa')];}logger[_0x3c54('0xb')]('['+[_0x423360['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x32e853);_0x42197d(_0x32e853);})[_0x3c54('0xc')](function(_0x578ba1){logger['error']('['+[_0x423360[_0x3c54('0xd')]()]+']',_0x578ba1[_0x3c54('0xe')]);_0x301e61(_0x578ba1['message']);});});}function getUser(_0x314725,_0x1265a4,_0x4411c1,_0xcb5afc,_0x3dd701){return function(_0x2e7065){logger[_0x3c54('0xb')]('['+[_0x314725[_0x3c54('0xd')]()]+_0x3c54('0xf'),_0x2e7065);return new Promise(function(_0x3a4de2,_0x2def1b){if(intUtil['validateEmail'](_0x2e7065['userEmail'])){var _0x1e2c8a={'method':_0x3c54('0x7'),'uri':_0x4411c1+_0x3c54('0x10')+_0x2e7065[_0x3c54('0x11')]+'&'+_0xcb5afc+'&'+_0x3dd701,'auth':_0x1265a4,'json':!![]};logger['info']('['+[_0x314725[_0x3c54('0xd')]()]+_0x3c54('0x12'),_0x1e2c8a);return rp(_0x1e2c8a)[_0x3c54('0x8')](function(_0x4455dc){logger[_0x3c54('0xb')]('['+[_0x314725[_0x3c54('0xd')]()]+'],\x20getUser\x20entity',_0x4455dc);if(_0x4455dc[_0x3c54('0x9')]['length']>0x0&&String(_0x4455dc[_0x3c54('0x9')][0x0][_0x3c54('0x13')])===_0x3c54('0x14')){_0x2e7065['userId']=_0x4455dc[_0x3c54('0x9')][0x0]['sys_id'];}else{_0x2e7065[_0x3c54('0x15')]=_0x2e7065['adminId'];_0x2e7065['userEmail']=_0x2e7065['adminEmail'];}logger[_0x3c54('0xb')]('['+[_0x314725['toUpperCase']()]+_0x3c54('0x16'),_0x2e7065);_0x3a4de2(_0x2e7065);})['catch'](function(_0x3adb2f){logger[_0x3c54('0x17')]('['+[_0x314725[_0x3c54('0xd')]()]+']',_0x3adb2f[_0x3c54('0xe')]);_0x2def1b(_0x3adb2f[_0x3c54('0xe')]);});}else{logger[_0x3c54('0xb')]('['+[_0x314725[_0x3c54('0xd')]()]+_0x3c54('0x18'));_0x2e7065[_0x3c54('0x15')]=_0x2e7065[_0x3c54('0x19')];_0x2e7065[_0x3c54('0x11')]=_0x2e7065[_0x3c54('0x1a')];_0x3a4de2(_0x2e7065);}});};}function createEndUser(_0xd29856,_0x5ad48f,_0x965f75,_0x5ca9c0,_0x2525c7){logger[_0x3c54('0xb')]('['+[_0xd29856[_0x3c54('0xd')]()]+_0x3c54('0x1b'),_0x965f75);return new Promise(function(_0x36cabd,_0x462a9b){var _0x197f95={'method':_0x3c54('0x1c'),'uri':_0x5ca9c0+'sys_user?'+_0x2525c7,'body':{'user_name':_0x965f75[_0x3c54('0x1d')],'roles':'user','first_name':_0x965f75[_0x3c54('0x1d')],'active':_0x3c54('0x14'),'date_format':_0x3c54('0x1e'),'phone':_0x965f75[_0x3c54('0x1d')]},'auth':_0x5ad48f,'json':!![]};return rp(_0x197f95)[_0x3c54('0x8')](function(_0x4efe07){logger[_0x3c54('0xb')]('['+[_0xd29856[_0x3c54('0xd')]()]+_0x3c54('0x1f'),_0x4efe07[_0x3c54('0x9')]);_0x965f75[_0x3c54('0x20')]=_0x4efe07[_0x3c54('0x9')]['sys_id'];_0x36cabd(_0x965f75);})[_0x3c54('0xc')](function(_0x58a38d){logger['error']('['+[_0xd29856[_0x3c54('0xd')]()]+']',_0x58a38d['message']);_0x462a9b(_0x58a38d[_0x3c54('0xe')]);});});}function getEndUser(_0x4a8a77,_0x45e518,_0x545581,_0x7bc626,_0x128535){return function(_0xbf13f7){logger[_0x3c54('0xb')]('['+[_0x4a8a77['toUpperCase']()]+_0x3c54('0x21'),_0xbf13f7);return new Promise(function(_0x45771a,_0x2d19f8){var _0x375c53={'method':_0x3c54('0x7'),'uri':_0x545581+_0x3c54('0x22')+_0xbf13f7[_0x3c54('0x1d')]+'&'+_0x7bc626+'&'+_0x128535,'auth':_0x45e518,'json':!![]};return rp(_0x375c53)[_0x3c54('0x8')](function(_0x3e8ba5){if(_0x3e8ba5[_0x3c54('0x9')]['length']>0x0){_0xbf13f7['endUserId']=_0x3e8ba5['result'][0x0][_0x3c54('0xa')];logger[_0x3c54('0xb')]('['+[_0x4a8a77[_0x3c54('0xd')]()]+'],\x20getEndUser\x20crm',_0xbf13f7);_0x45771a(_0xbf13f7);}else{return createEndUser(_0x4a8a77,_0x45e518,_0xbf13f7,_0x545581,_0x7bc626)['then'](function(_0x5d4a4e){logger['info']('['+[_0x4a8a77[_0x3c54('0xd')]()]+'],\x20createEndUser\x20crm',_0x5d4a4e);_0x45771a(_0x5d4a4e);});}})[_0x3c54('0xc')](function(_0x33be31){logger[_0x3c54('0x17')]('['+[_0x4a8a77['toUpperCase']()]+']',_0x33be31['message']);_0x2d19f8(_0x33be31[_0x3c54('0xe')]);});});};}function getCustomFields(_0x46c04d,_0x201267){var _0x279d22={};if(_0x46c04d['length']>0x0){_['forEach'](_0x46c04d,function(_0xee0264){if(_[_0x3c54('0x23')]([_0x3c54('0x24'),_0x3c54('0x25')],_0xee0264[_0x3c54('0x26')])&&_0xee0264['nameField']&&!_0xee0264[_0x3c54('0x27')]){_0x279d22[_0xee0264[_0x3c54('0x28')][_0x3c54('0x29')]()]=_0xee0264[_0x3c54('0x2a')][_0x3c54('0x2b')]();}else if(_[_0x3c54('0x23')]([_0x3c54('0x24'),_0x3c54('0x25')],_0xee0264['type'])&&_0xee0264[_0x3c54('0x2c')]&&_0xee0264[_0x3c54('0x27')]){_0x279d22[_0xee0264[_0x3c54('0x2c')][_0x3c54('0x29')]()]=_0xee0264[_0x3c54('0x2a')][_0x3c54('0x2b')]();}else if(_0xee0264['type']===_0x3c54('0x2d')&&_0xee0264[_0x3c54('0x2e')]&&_0xee0264[_0x3c54('0x2c')]&&_0xee0264['customField']){_0x279d22[_0xee0264[_0x3c54('0x2c')][_0x3c54('0x29')]()]=_0x201267[_0xee0264[_0x3c54('0x2e')]][_0x3c54('0x2b')]();}else if(_0xee0264[_0x3c54('0x26')]===_0x3c54('0x2f')&&_0xee0264['Variable']&&_0xee0264['Variable']['name']&&_0xee0264[_0x3c54('0x2c')]&&_0xee0264['customField']){_0x279d22[_0xee0264[_0x3c54('0x2c')][_0x3c54('0x29')]()]=_0x201267[_0xee0264[_0x3c54('0x30')][_0x3c54('0x31')][_0x3c54('0x29')]()][_0x3c54('0x2b')]();}});}return _0x279d22;}function getTicket(_0x460c3f,_0x3453ac,_0x2874a1,_0x4a2e83,_0x30b1dd,_0x2d9121){return function(_0x14b62f){logger[_0x3c54('0xb')]('['+[_0x460c3f[_0x3c54('0xd')]()]+_0x3c54('0x32'),_0x14b62f);return new Promise(function(_0x496daf,_0x448651){var _0x5cf51b=_0x460c3f['toLowerCase']()===_0x3c54('0x33')?_0x14b62f[_0x3c54('0x15')]:_0x14b62f['endUserId'];var _0x3eba41={'method':_0x3c54('0x1c'),'uri':_0x2874a1+_0x3c54('0x34')+'?'+_0x2d9121,'body':Object[_0x3c54('0x35')]({},{'active':'true','caller_id':_0x5cf51b,'assigned_to':_0x14b62f[_0x3c54('0x15')],'short_description':intUtil['getString'](_0x4a2e83[_0x3c54('0x36')],_0x30b1dd,'\x20'),'description':intUtil[_0x3c54('0x37')](_0x4a2e83[_0x3c54('0x38')],_0x30b1dd,'\x0a')},getCustomFields(_0x4a2e83[_0x3c54('0x39')],_0x30b1dd)),'auth':_0x3453ac,'json':!![]};return rp(_0x3eba41)[_0x3c54('0x8')](function(_0x8224b){logger['info']('['+[_0x460c3f[_0x3c54('0xd')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x8224b[_0x3c54('0x9')]);_0x14b62f[_0x3c54('0x3a')]=_0x8224b[_0x3c54('0x9')]['sys_id'];_0x14b62f[_0x3c54('0x3b')]=_0x8224b['result'][_0x3c54('0x3c')];logger[_0x3c54('0xb')]('['+[_0x460c3f[_0x3c54('0xd')]()]+_0x3c54('0x3d'),_0x14b62f);_0x496daf(_0x14b62f);})[_0x3c54('0xc')](function(_0x5a67c2){logger[_0x3c54('0x17')]('['+[_0x460c3f[_0x3c54('0xd')]()]+']',_0x5a67c2[_0x3c54('0xe')]);_0x448651(_0x5a67c2[_0x3c54('0xe')]);});});};}function createRemoteTag(_0x28bb5c,_0x17f5df,_0x26663c,_0x23c0d4){return new Promise(function(_0x464240,_0xa188a1){var _0x351d6f={'method':_0x3c54('0x1c'),'uri':_0x26663c+_0x3c54('0x3e')+'?'+_0x23c0d4,'body':{'short_description':_0x28bb5c,'global':!![],'active':!![],'name':_0x28bb5c},'auth':_0x17f5df,'json':!![]};return rp(_0x351d6f)['then'](function(_0x357513){var _0x287e01=_0x357513[_0x3c54('0x9')]['sys_id'];_0x464240(_0x287e01);});});}function getRemoteTag(_0x5119ab,_0x57432b,_0x3bfe94,_0xd550c4,_0x5755d9){return new Promise(function(_0x5604c7,_0x6f4ac8){var _0x5869c3={'method':_0x3c54('0x7'),'uri':_0x3bfe94+'label'+_0x3c54('0x3f')+_0x5119ab+'&'+_0xd550c4,'auth':_0x57432b,'json':!![]};return rp(_0x5869c3)[_0x3c54('0x8')](function(_0x1f6012){if(_0x1f6012[_0x3c54('0x9')]['length']>0x0){var _0x3ae9a3=_0x1f6012[_0x3c54('0x9')][0x0][_0x3c54('0xa')];_0x5604c7(_0x3ae9a3);}else{return createRemoteTag(_0x5119ab,_0x57432b,_0x3bfe94,_0xd550c4)['then'](function(_0x1a8a53){_0x5604c7(_0x1a8a53);});}});});}function assignTagToIncident(_0x394a54,_0xc4595,_0x934537,_0x1482be,_0x14087a){return new Promise(function(_0x1602aa,_0x16269e){var _0x1f8e1d={'method':'POST','uri':_0x934537+'label_entry'+'?'+_0x14087a,'body':{'label':_0x394a54,'table':_0x3c54('0x34'),'id_type':'Incident','table_key':_0x1482be['ticketId'],'title':_0x3c54('0x40')+_0x1482be['ticketNumber'],'id_display':_0x1482be[_0x3c54('0x3b')]},'auth':_0xc4595,'json':!![]};return rp(_0x1f8e1d)['then'](function(_0x503d87){_0x1602aa();})[_0x3c54('0xc')](function(){_0x1602aa();});});}function manageTags(_0x10f539,_0x3a4994,_0x195458,_0x517da9,_0x46a7b4,_0x4e0ae3,_0x18940d){return new Promise(function(_0xe10de7,_0xefac9f){var _0x28c6c6=[];_0x3a4994[_0x3c54('0x41')](function(_0x1f2952){_0x28c6c6[_0x3c54('0x42')](getRemoteTag(_0x1f2952,_0x195458,_0x517da9,_0x4e0ae3,_0x18940d));});return Promise['all'](_0x28c6c6)[_0x3c54('0x8')](function(_0xb3e7e2){if(_0xb3e7e2[_0x3c54('0x43')]){logger[_0x3c54('0xb')]('['+[_0x10f539[_0x3c54('0xd')]()]+_0x3c54('0x44'),_0xb3e7e2);var _0x5128c1=[];_0xb3e7e2[_0x3c54('0x41')](function(_0x2b2658){_0x5128c1[_0x3c54('0x42')](assignTagToIncident(_0x2b2658,_0x195458,_0x517da9,_0x46a7b4,_0x4e0ae3));});return Promise['all'](_0x5128c1)[_0x3c54('0x8')](function(){_0xe10de7();})[_0x3c54('0xc')](function(){_0xe10de7();});}else{_0xe10de7();}});});}function getTags(_0x291e78,_0x299e0e,_0x78a50b,_0x436ad7,_0x4b3256,_0x634811){return function(_0x33b51f){return new Promise(function(_0x1e2829,_0x23876c){var _0x5f9f1e=[];var _0x167971=_0x436ad7[_0x3c54('0x45')];if(_0x167971&&_0x167971[_0x3c54('0x43')]>0x0){_0x5f9f1e=_['map'](_0x167971,'name');}if(_0x5f9f1e[_0x3c54('0x43')]>0x0){return manageTags(_0x291e78,_0x5f9f1e,_0x299e0e,_0x78a50b,_0x33b51f,_0x4b3256,_0x634811)['then'](function(){_0x1e2829(_0x33b51f);});}else{_0x1e2829(_0x33b51f);}});};}function emit(_0x498daa,_0x5cc2e4,_0x4ca93d){var _0xfd4ad5=_0x3c54('0x46')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x3c54('0x47');var _0x373114={'uri':_0x498daa+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x4ca93d+_0xfd4ad5};io['to'](util[_0x3c54('0x48')](_0x3c54('0x49'),_0x5cc2e4))[_0x3c54('0x4a')](_0x3c54('0x4b'),_0x373114);}exports['cs']=function(_0x56fa7e,_0x39a319,_0x960720,_0xb0aafe,_0xf0067d,_0x47e166,_0x2bef30,_0x1f86e6){var _0xb04d44={};var _0x259229={'user':_0x47e166[_0x3c54('0x4c')],'pass':_0x47e166['password']};var _0x252a66=_0x3c54('0x4d');var _0x36bd07=_0x3c54('0x4e');_0x47e166[_0x3c54('0x4f')]=intUtil['stripTrailingSlash'](_0x47e166[_0x3c54('0x4f')]);_0x47e166[_0x3c54('0x50')]=intUtil[_0x3c54('0x51')](_0x47e166[_0x3c54('0x50')]);var _0x427cec=util[_0x3c54('0x48')](_0x3c54('0x52'),_0x47e166[_0x3c54('0x4f')]);_0xb04d44[_0x3c54('0x11')]=!_[_0x3c54('0x53')](_0xb0aafe)?_0xb0aafe[_0x3c54('0x54')]:null;_0xb04d44[_0x3c54('0x1a')]=_0x47e166['email'];_0xb04d44[_0x3c54('0x1d')]=_0x1f86e6[_0x3c54('0x29')]()===_0x3c54('0x33')?_0x39a319['destcalleridnum']:_0x39a319['calleridnum'];_0xb04d44['callDirection']=_0x1f86e6==='queue'||_0x1f86e6===_0x3c54('0x55')?'queue':_0x3c54('0x33');var _0x16e527=util[_0x3c54('0x48')](_0x3c54('0x56'),_0x47e166[_0x3c54('0x50')],_0x39a319[_0x3c54('0x57')],md5(_0x39a319[_0x3c54('0x57')]));if(_0xf0067d&&_0xf0067d[_0x3c54('0x58')]){logger[_0x3c54('0xb')](_0x3c54('0x59'),_0x3c54('0x5a'));_0x39a319['recordingURL']=_0x16e527;}else if(_0x2bef30&&_0x2bef30['recordingFormat']&&_0x2bef30[_0x3c54('0x5b')]!=='none'){logger[_0x3c54('0xb')]('[OUTBOUND]',_0x3c54('0x5a'));_0x39a319[_0x3c54('0x5c')]=_0x16e527;}else{_0x39a319[_0x3c54('0x5c')]='';}return getAdminUser(_0x1f86e6,_0x259229,_0xb04d44,_0x427cec,_0x36bd07,_0x252a66)[_0x3c54('0x8')](getUser(_0x1f86e6,_0x259229,_0x427cec,_0x36bd07,_0x252a66))['then'](getEndUser(_0x1f86e6,_0x259229,_0x427cec,_0x36bd07,_0x252a66))[_0x3c54('0x8')](getTicket(_0x1f86e6,_0x259229,_0x427cec,_0x960720,_0x39a319,_0x36bd07))[_0x3c54('0x8')](function(_0x37ab38){logger[_0x3c54('0xb')](util[_0x3c54('0x48')](_0x3c54('0x5d'),_0x37ab38[_0x3c54('0x3a')]));logger[_0x3c54('0xb')](util['format'](_0x3c54('0x5e'),_0x1f86e6));if(_0x1f86e6!=='unmanaged'){logger[_0x3c54('0xb')]('['+[_0x1f86e6[_0x3c54('0xd')]()]+']',_0x3c54('0x5f'));emit(_0x47e166[_0x3c54('0x4f')],_0xb0aafe[_0x3c54('0x31')],_0x37ab38[_0x3c54('0x3a')]);}})[_0x3c54('0xc')](function(_0x3dc272){logger['error']('['+[_0x1f86e6['toUpperCase']()]+_0x3c54('0x60'),util[_0x3c54('0x61')](_0x3dc272,{'showHidden':!![],'depth':null}));});};