0a8cef9576b0608979033a9235a132b14a61bac8
[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 _0x16d2=['stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','queue','unmanaged','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','./util','../../../../config/environment','servicenow','localhost','redis','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','sys_id','adminEmail','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','toLowerCase','content','toString','customField','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','Incident','ticketId','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','trigger:browser:url','password','sysparm_display_value=true','remoteUri'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x16d2,0x83));var _0x216d=function(_0x3755a2,_0x5be61e){_0x3755a2=_0x3755a2-0x0;var _0x2df8e4=_0x16d2[_0x3755a2];return _0x2df8e4;};'use strict';var _=require(_0x216d('0x0'));var Promise=require(_0x216d('0x1'));var rp=require(_0x216d('0x2'));var util=require('util');var md5=require(_0x216d('0x3'));var Redis=require(_0x216d('0x4'));var intUtil=require(_0x216d('0x5'));var config=require(_0x216d('0x6'));var logger=require('../../../../config/logger')(_0x216d('0x7'));config['redis']=_['defaults'](config['redis'],{'host':_0x216d('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x216d('0x9')]));function getAdminUser(_0x20eadc,_0x3aba55,_0x96888f,_0x7ea43c,_0x870352,_0x29d1c6){return new Promise(function(_0x41dd93,_0x115494){var _0x3a5e57={'method':_0x216d('0xa'),'uri':_0x7ea43c+_0x216d('0xb')+'&'+_0x870352+'&'+_0x29d1c6,'auth':_0x3aba55,'json':!![]};return rp(_0x3a5e57)[_0x216d('0xc')](function(_0xdea77d){if(_0xdea77d['result'][_0x216d('0xd')]>0x0){_0x96888f[_0x216d('0xe')]=_0xdea77d[_0x216d('0xf')][0x0]['sys_id'];}logger[_0x216d('0x10')]('['+[_0x20eadc[_0x216d('0x11')]()]+_0x216d('0x12'),_0x96888f);_0x41dd93(_0x96888f);})['catch'](function(_0x232832){logger[_0x216d('0x13')]('['+[_0x20eadc[_0x216d('0x11')]()]+']',_0x232832[_0x216d('0x14')]);_0x115494(_0x232832['message']);});});}function getUser(_0x11e392,_0x1a487a,_0x403b22,_0x271d08,_0x505831){return function(_0x51a6ef){logger[_0x216d('0x10')]('['+[_0x11e392['toUpperCase']()]+_0x216d('0x15'),_0x51a6ef);return new Promise(function(_0x2ed803,_0x1253f0){if(intUtil[_0x216d('0x16')](_0x51a6ef[_0x216d('0x17')])){var _0x153e11={'method':_0x216d('0xa'),'uri':_0x403b22+_0x216d('0x18')+_0x51a6ef['userEmail']+'&'+_0x271d08+'&'+_0x505831,'auth':_0x1a487a,'json':!![]};logger['info']('['+[_0x11e392[_0x216d('0x11')]()]+_0x216d('0x19'),_0x153e11);return rp(_0x153e11)[_0x216d('0xc')](function(_0x14fabd){logger[_0x216d('0x10')]('['+[_0x11e392['toUpperCase']()]+_0x216d('0x1a'),_0x14fabd);if(_0x14fabd[_0x216d('0xf')]['length']>0x0&&String(_0x14fabd['result'][0x0][_0x216d('0x1b')])===_0x216d('0x1c')){_0x51a6ef[_0x216d('0x1d')]=_0x14fabd[_0x216d('0xf')][0x0][_0x216d('0x1e')];}else{_0x51a6ef[_0x216d('0x1d')]=_0x51a6ef[_0x216d('0xe')];_0x51a6ef[_0x216d('0x17')]=_0x51a6ef[_0x216d('0x1f')];}logger[_0x216d('0x10')]('['+[_0x11e392[_0x216d('0x11')]()]+_0x216d('0x20'),_0x51a6ef);_0x2ed803(_0x51a6ef);})[_0x216d('0x21')](function(_0x58b860){logger[_0x216d('0x13')]('['+[_0x11e392[_0x216d('0x11')]()]+']',_0x58b860['message']);_0x1253f0(_0x58b860['message']);});}else{logger[_0x216d('0x10')]('['+[_0x11e392['toUpperCase']()]+_0x216d('0x22'));_0x51a6ef[_0x216d('0x1d')]=_0x51a6ef[_0x216d('0xe')];_0x51a6ef[_0x216d('0x17')]=_0x51a6ef[_0x216d('0x1f')];_0x2ed803(_0x51a6ef);}});};}function createEndUser(_0x299a1d,_0x5bb759,_0x4c0cb1,_0x5999fd,_0x5d8354){logger[_0x216d('0x10')]('['+[_0x299a1d['toUpperCase']()]+_0x216d('0x23'),_0x4c0cb1);return new Promise(function(_0x151c9a,_0x5096af){var _0x5dcb84={'method':'POST','uri':_0x5999fd+_0x216d('0x24')+_0x5d8354,'body':{'user_name':_0x4c0cb1[_0x216d('0x25')],'roles':'user','first_name':_0x4c0cb1['endUserNumber'],'active':_0x216d('0x1c'),'date_format':_0x216d('0x26'),'phone':_0x4c0cb1['endUserNumber']},'auth':_0x5bb759,'json':!![]};return rp(_0x5dcb84)['then'](function(_0x1c67ae){logger[_0x216d('0x10')]('['+[_0x299a1d['toUpperCase']()]+_0x216d('0x27'),_0x1c67ae[_0x216d('0xf')]);_0x4c0cb1[_0x216d('0x28')]=_0x1c67ae[_0x216d('0xf')][_0x216d('0x1e')];_0x151c9a(_0x4c0cb1);})[_0x216d('0x21')](function(_0x328c16){logger['error']('['+[_0x299a1d[_0x216d('0x11')]()]+']',_0x328c16[_0x216d('0x14')]);_0x5096af(_0x328c16[_0x216d('0x14')]);});});}function getEndUser(_0x53562b,_0x261f33,_0x2345f,_0x33b56b,_0x294416){return function(_0x10218b){logger[_0x216d('0x10')]('['+[_0x53562b[_0x216d('0x11')]()]+_0x216d('0x29'),_0x10218b);return new Promise(function(_0x330655,_0x3917d1){var _0x56966a={'method':_0x216d('0xa'),'uri':_0x2345f+_0x216d('0x2a')+_0x10218b[_0x216d('0x25')]+'&'+_0x33b56b+'&'+_0x294416,'auth':_0x261f33,'json':!![]};return rp(_0x56966a)[_0x216d('0xc')](function(_0x5e11f3){if(_0x5e11f3[_0x216d('0xf')][_0x216d('0xd')]>0x0){_0x10218b[_0x216d('0x28')]=_0x5e11f3[_0x216d('0xf')][0x0][_0x216d('0x1e')];logger[_0x216d('0x10')]('['+[_0x53562b[_0x216d('0x11')]()]+_0x216d('0x2b'),_0x10218b);_0x330655(_0x10218b);}else{return createEndUser(_0x53562b,_0x261f33,_0x10218b,_0x2345f,_0x33b56b)[_0x216d('0xc')](function(_0x538289){logger[_0x216d('0x10')]('['+[_0x53562b[_0x216d('0x11')]()]+_0x216d('0x2c'),_0x538289);_0x330655(_0x538289);});}})[_0x216d('0x21')](function(_0x15c2dc){logger[_0x216d('0x13')]('['+[_0x53562b[_0x216d('0x11')]()]+']',_0x15c2dc[_0x216d('0x14')]);_0x3917d1(_0x15c2dc['message']);});});};}function getCustomFields(_0x58729f,_0x357e30){var _0x11601a={};if(_0x58729f[_0x216d('0xd')]>0x0){_[_0x216d('0x2d')](_0x58729f,function(_0x48abae){if(_[_0x216d('0x2e')]([_0x216d('0x2f'),_0x216d('0x30')],_0x48abae[_0x216d('0x31')])&&_0x48abae[_0x216d('0x32')]&&!_0x48abae['customField']){_0x11601a[_0x48abae['nameField'][_0x216d('0x33')]()]=_0x48abae[_0x216d('0x34')][_0x216d('0x35')]();}else if(_[_0x216d('0x2e')]([_0x216d('0x2f'),_0x216d('0x30')],_0x48abae[_0x216d('0x31')])&&_0x48abae['idField']&&_0x48abae[_0x216d('0x36')]){_0x11601a[_0x48abae[_0x216d('0x37')][_0x216d('0x33')]()]=_0x48abae[_0x216d('0x34')]['toString']();}else if(_0x48abae[_0x216d('0x31')]===_0x216d('0x38')&&_0x48abae[_0x216d('0x39')]&&_0x48abae[_0x216d('0x37')]&&_0x48abae['customField']){_0x11601a[_0x48abae[_0x216d('0x37')][_0x216d('0x33')]()]=_0x357e30[_0x48abae['variableName']][_0x216d('0x35')]();}else if(_0x48abae[_0x216d('0x31')]===_0x216d('0x3a')&&_0x48abae[_0x216d('0x3b')]&&_0x48abae[_0x216d('0x3b')][_0x216d('0x3c')]&&_0x48abae['idField']&&_0x48abae[_0x216d('0x36')]){_0x11601a[_0x48abae[_0x216d('0x37')]['toLowerCase']()]=_0x357e30[_0x48abae[_0x216d('0x3b')][_0x216d('0x3c')][_0x216d('0x33')]()][_0x216d('0x35')]();}});}return _0x11601a;}function getTicket(_0x228274,_0x1dbdd9,_0x950221,_0x493efd,_0x358f03,_0x17a6d3){return function(_0x4571c9){logger[_0x216d('0x10')]('['+[_0x228274['toUpperCase']()]+_0x216d('0x3d'),_0x4571c9);return new Promise(function(_0x5441eb,_0x79d261){var _0x58ce5e=_0x228274[_0x216d('0x33')]()===_0x216d('0x3e')?_0x4571c9['userId']:_0x4571c9[_0x216d('0x28')];var _0x1c3c3d={'method':_0x216d('0x3f'),'uri':_0x950221+'incident'+'?'+_0x17a6d3,'body':Object[_0x216d('0x40')]({},{'active':'true','caller_id':_0x58ce5e,'assigned_to':_0x4571c9[_0x216d('0x1d')],'short_description':intUtil[_0x216d('0x41')](_0x493efd['Subjects'],_0x358f03,'\x20'),'description':intUtil[_0x216d('0x41')](_0x493efd[_0x216d('0x42')],_0x358f03,'\x0a')},getCustomFields(_0x493efd[_0x216d('0x43')],_0x358f03)),'auth':_0x1dbdd9,'json':!![]};return rp(_0x1c3c3d)[_0x216d('0xc')](function(_0x2ab87d){logger[_0x216d('0x10')]('['+[_0x228274[_0x216d('0x11')]()]+_0x216d('0x44'),_0x2ab87d[_0x216d('0xf')]);_0x4571c9['ticketId']=_0x2ab87d['result']['sys_id'];_0x4571c9[_0x216d('0x45')]=_0x2ab87d[_0x216d('0xf')][_0x216d('0x46')];logger[_0x216d('0x10')]('['+[_0x228274[_0x216d('0x11')]()]+_0x216d('0x47'),_0x4571c9);_0x5441eb(_0x4571c9);})[_0x216d('0x21')](function(_0x33b260){logger[_0x216d('0x13')]('['+[_0x228274[_0x216d('0x11')]()]+']',_0x33b260[_0x216d('0x14')]);_0x79d261(_0x33b260['message']);});});};}function createRemoteTag(_0x20f56d,_0x2cd470,_0x331ce5,_0x1f94d0){return new Promise(function(_0x169612,_0x558242){var _0x122847={'method':_0x216d('0x3f'),'uri':_0x331ce5+_0x216d('0x48')+'?'+_0x1f94d0,'body':{'short_description':_0x20f56d,'global':!![],'active':!![],'name':_0x20f56d},'auth':_0x2cd470,'json':!![]};return rp(_0x122847)['then'](function(_0x8fda67){var _0x2a0e6e=_0x8fda67[_0x216d('0xf')][_0x216d('0x1e')];_0x169612(_0x2a0e6e);});});}function getRemoteTag(_0x5e59f3,_0x3fc9df,_0x4e227a,_0x1c31ae,_0x1fba5b){return new Promise(function(_0x591022,_0x5f49e4){var _0x15cc66={'method':'GET','uri':_0x4e227a+'label'+_0x216d('0x49')+_0x5e59f3+'&'+_0x1c31ae,'auth':_0x3fc9df,'json':!![]};return rp(_0x15cc66)[_0x216d('0xc')](function(_0x214c93){if(_0x214c93[_0x216d('0xf')][_0x216d('0xd')]>0x0){var _0x383011=_0x214c93[_0x216d('0xf')][0x0][_0x216d('0x1e')];_0x591022(_0x383011);}else{return createRemoteTag(_0x5e59f3,_0x3fc9df,_0x4e227a,_0x1c31ae)[_0x216d('0xc')](function(_0x4a8f7e){_0x591022(_0x4a8f7e);});}});});}function assignTagToIncident(_0x29adbd,_0x5c74df,_0x3f08e4,_0x5a3f27,_0x3f14aa){return new Promise(function(_0x3175d1,_0x82112d){var _0x335244={'method':_0x216d('0x3f'),'uri':_0x3f08e4+_0x216d('0x4a')+'?'+_0x3f14aa,'body':{'label':_0x29adbd,'table':_0x216d('0x4b'),'id_type':_0x216d('0x4c'),'table_key':_0x5a3f27[_0x216d('0x4d')],'title':_0x216d('0x4e')+_0x5a3f27[_0x216d('0x45')],'id_display':_0x5a3f27['ticketNumber']},'auth':_0x5c74df,'json':!![]};return rp(_0x335244)[_0x216d('0xc')](function(_0x1d7553){_0x3175d1();})[_0x216d('0x21')](function(){_0x3175d1();});});}function manageTags(_0x155041,_0x4bd96b,_0x96cc3c,_0x353080,_0x529143,_0x1e2807,_0x22f9a5){return new Promise(function(_0x1816c5,_0x41b533){var _0x937c48=[];_0x4bd96b[_0x216d('0x2d')](function(_0x3ff10e){_0x937c48[_0x216d('0x4f')](getRemoteTag(_0x3ff10e,_0x96cc3c,_0x353080,_0x1e2807,_0x22f9a5));});return Promise[_0x216d('0x50')](_0x937c48)[_0x216d('0xc')](function(_0x4ce473){if(_0x4ce473['length']){logger[_0x216d('0x10')]('['+[_0x155041[_0x216d('0x11')]()]+_0x216d('0x51'),_0x4ce473);var _0x5c9147=[];_0x4ce473[_0x216d('0x2d')](function(_0x2ca3cf){_0x5c9147[_0x216d('0x4f')](assignTagToIncident(_0x2ca3cf,_0x96cc3c,_0x353080,_0x529143,_0x1e2807));});return Promise[_0x216d('0x50')](_0x5c9147)[_0x216d('0xc')](function(){_0x1816c5();})['catch'](function(){_0x1816c5();});}else{_0x1816c5();}});});}function getTags(_0x20e8c8,_0x28ea19,_0x568372,_0x40cbcf,_0x13ff2c,_0x5b38b1){return function(_0x28da54){return new Promise(function(_0x170541,_0x4eb78c){var _0x1db0bb=[];var _0x347c30=_0x40cbcf[_0x216d('0x52')];if(_0x347c30&&_0x347c30['length']>0x0){_0x1db0bb=_['map'](_0x347c30,'name');}if(_0x1db0bb['length']>0x0){return manageTags(_0x20e8c8,_0x1db0bb,_0x28ea19,_0x568372,_0x28da54,_0x13ff2c,_0x5b38b1)[_0x216d('0xc')](function(){_0x170541(_0x28da54);});}else{_0x170541(_0x28da54);}});};}function emit(_0x39b06b,_0x1ea34a,_0x4140f8){var _0x20eb0b='%26sysparm_record_target%3Dincident'+_0x216d('0x53')+_0x216d('0x54')+_0x216d('0x55');var _0xcbef47={'uri':_0x39b06b+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x4140f8+_0x20eb0b};io['to'](util[_0x216d('0x56')]('user:%s',_0x1ea34a))['emit'](_0x216d('0x57'),_0xcbef47);}exports['cs']=function(_0x308eaf,_0x1f7d3f,_0xd3d2f9,_0x4f50f5,_0x4b373d,_0x47d37e,_0x40f87f,_0xa7ad02){var _0x20d68e={};var _0x25737b={'user':_0x47d37e['username'],'pass':_0x47d37e[_0x216d('0x58')]};var _0x3922c9='sysparm_limit=1';var _0x2bf71b=_0x216d('0x59');_0x47d37e[_0x216d('0x5a')]=intUtil['stripTrailingSlash'](_0x47d37e[_0x216d('0x5a')]);_0x47d37e['serverUrl']=intUtil[_0x216d('0x5b')](_0x47d37e[_0x216d('0x5c')]);var _0x11b821=util[_0x216d('0x56')](_0x216d('0x5d'),_0x47d37e[_0x216d('0x5a')]);_0x20d68e[_0x216d('0x17')]=!_[_0x216d('0x5e')](_0x4f50f5)?_0x4f50f5[_0x216d('0x5f')]:null;_0x20d68e[_0x216d('0x1f')]=_0x47d37e['email'];_0x20d68e[_0x216d('0x25')]=_0xa7ad02[_0x216d('0x33')]()===_0x216d('0x3e')?_0x1f7d3f[_0x216d('0x60')]:_0x1f7d3f[_0x216d('0x61')];_0x20d68e['callDirection']=_0xa7ad02===_0x216d('0x62')||_0xa7ad02===_0x216d('0x63')?_0x216d('0x62'):_0x216d('0x3e');var _0xbd3995=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x47d37e[_0x216d('0x5c')],_0x1f7d3f[_0x216d('0x64')],md5(_0x1f7d3f[_0x216d('0x64')]));if(_0x4b373d&&_0x4b373d[_0x216d('0x65')]){logger[_0x216d('0x10')]('[QUEUE]',_0x216d('0x66'));_0x1f7d3f[_0x216d('0x67')]=_0xbd3995;}else if(_0x40f87f&&_0x40f87f['recordingFormat']&&_0x40f87f['recordingFormat']!==_0x216d('0x68')){logger[_0x216d('0x10')](_0x216d('0x69'),_0x216d('0x66'));_0x1f7d3f['recordingURL']=_0xbd3995;}else{_0x1f7d3f[_0x216d('0x67')]='';}return getAdminUser(_0xa7ad02,_0x25737b,_0x20d68e,_0x11b821,_0x2bf71b,_0x3922c9)[_0x216d('0xc')](getUser(_0xa7ad02,_0x25737b,_0x11b821,_0x2bf71b,_0x3922c9))[_0x216d('0xc')](getEndUser(_0xa7ad02,_0x25737b,_0x11b821,_0x2bf71b,_0x3922c9))['then'](getTicket(_0xa7ad02,_0x25737b,_0x11b821,_0xd3d2f9,_0x1f7d3f,_0x2bf71b))[_0x216d('0xc')](function(_0x162f1e){logger[_0x216d('0x10')](util[_0x216d('0x56')](_0x216d('0x6a'),_0x162f1e[_0x216d('0x4d')]));logger[_0x216d('0x10')](util[_0x216d('0x56')](_0x216d('0x6b'),_0xa7ad02));if(_0xa7ad02!==_0x216d('0x63')){logger['info']('['+[_0xa7ad02[_0x216d('0x11')]()]+']',_0x216d('0x6c'));emit(_0x47d37e[_0x216d('0x5a')],_0x4f50f5[_0x216d('0x3c')],_0x162f1e[_0x216d('0x4d')]);}})[_0x216d('0x21')](function(_0x5538f0){logger['error']('['+[_0xa7ad02[_0x216d('0x11')]()]+_0x216d('0x6d'),util[_0x216d('0x6e')](_0x5538f0,{'showHidden':!![],'depth':null}));});};