Built motion from commit (unavailable).|2.5.26
[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 _0x7d25=['name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','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','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm','message',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','nameField','customField','content','toString','idField','toLowerCase','variable','variableName','Variable','outbound','incident','assign','getString','Descriptions','Fields','ticketId','ticketNumber','number','label','label_entry','Incident','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label'];(function(_0x451680,_0x9187d8){var _0x1ba454=function(_0xac2a5d){while(--_0xac2a5d){_0x451680['push'](_0x451680['shift']());}};_0x1ba454(++_0x9187d8);}(_0x7d25,0x8a));var _0x57d2=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0x7d25[_0x3740fe];return _0x55492b;};'use strict';var _=require('lodash');var Promise=require(_0x57d2('0x0'));var rp=require(_0x57d2('0x1'));var util=require(_0x57d2('0x2'));var md5=require(_0x57d2('0x3'));var Redis=require(_0x57d2('0x4'));var intUtil=require(_0x57d2('0x5'));var config=require(_0x57d2('0x6'));var logger=require('../../../../config/logger')('servicenow');config['redis']=_['defaults'](config[_0x57d2('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x57d2('0x8'))(new Redis(config[_0x57d2('0x7')]));function getAdminUser(_0x147194,_0x59ae87,_0x49e3e5,_0xeb8b91,_0x4f94a6,_0x3a1ec5){return new Promise(function(_0x5153c2,_0xa04872){var _0x485438={'method':_0x57d2('0x9'),'uri':_0xeb8b91+_0x57d2('0xa')+'&'+_0x4f94a6+'&'+_0x3a1ec5,'auth':_0x59ae87,'json':!![]};return rp(_0x485438)[_0x57d2('0xb')](function(_0x3a53a1){if(_0x3a53a1[_0x57d2('0xc')][_0x57d2('0xd')]>0x0){_0x49e3e5[_0x57d2('0xe')]=_0x3a53a1[_0x57d2('0xc')][0x0][_0x57d2('0xf')];}logger[_0x57d2('0x10')]('['+[_0x147194[_0x57d2('0x11')]()]+_0x57d2('0x12'),_0x49e3e5);_0x5153c2(_0x49e3e5);})[_0x57d2('0x13')](function(_0x229734){logger[_0x57d2('0x14')]('['+[_0x147194[_0x57d2('0x11')]()]+']',_0x229734['message']);_0xa04872(_0x229734['message']);});});}function getUser(_0x6fad35,_0x148ef3,_0x4ec4b1,_0x8cf637,_0x319489){return function(_0x4bb8f7){logger[_0x57d2('0x10')]('['+[_0x6fad35['toUpperCase']()]+_0x57d2('0x15'),_0x4bb8f7);return new Promise(function(_0x4b4fe0,_0x2ab5f0){if(intUtil[_0x57d2('0x16')](_0x4bb8f7[_0x57d2('0x17')])){var _0x4a94e3={'method':'GET','uri':_0x4ec4b1+_0x57d2('0x18')+_0x4bb8f7[_0x57d2('0x17')]+'&'+_0x8cf637+'&'+_0x319489,'auth':_0x148ef3,'json':!![]};logger[_0x57d2('0x10')]('['+[_0x6fad35[_0x57d2('0x11')]()]+'],\x20getUser\x20rp\x20obj',_0x4a94e3);return rp(_0x4a94e3)[_0x57d2('0xb')](function(_0xcf924f){logger['info']('['+[_0x6fad35['toUpperCase']()]+_0x57d2('0x19'),_0xcf924f);if(_0xcf924f[_0x57d2('0xc')][_0x57d2('0xd')]>0x0&&String(_0xcf924f[_0x57d2('0xc')][0x0][_0x57d2('0x1a')])===_0x57d2('0x1b')){_0x4bb8f7[_0x57d2('0x1c')]=_0xcf924f[_0x57d2('0xc')][0x0][_0x57d2('0xf')];}else{_0x4bb8f7[_0x57d2('0x1c')]=_0x4bb8f7[_0x57d2('0xe')];_0x4bb8f7[_0x57d2('0x17')]=_0x4bb8f7[_0x57d2('0x1d')];}logger[_0x57d2('0x10')]('['+[_0x6fad35['toUpperCase']()]+_0x57d2('0x1e'),_0x4bb8f7);_0x4b4fe0(_0x4bb8f7);})[_0x57d2('0x13')](function(_0x3c7de8){logger[_0x57d2('0x14')]('['+[_0x6fad35[_0x57d2('0x11')]()]+']',_0x3c7de8['message']);_0x2ab5f0(_0x3c7de8[_0x57d2('0x1f')]);});}else{logger[_0x57d2('0x10')]('['+[_0x6fad35[_0x57d2('0x11')]()]+_0x57d2('0x20'));_0x4bb8f7[_0x57d2('0x1c')]=_0x4bb8f7[_0x57d2('0xe')];_0x4bb8f7[_0x57d2('0x17')]=_0x4bb8f7['adminEmail'];_0x4b4fe0(_0x4bb8f7);}});};}function createEndUser(_0x1ae5ff,_0x15f1ba,_0x277426,_0x1fe383,_0x1957a6){logger[_0x57d2('0x10')]('['+[_0x1ae5ff[_0x57d2('0x11')]()]+_0x57d2('0x21'),_0x277426);return new Promise(function(_0x1d2bdb,_0x2cf9d9){var _0x574589={'method':_0x57d2('0x22'),'uri':_0x1fe383+_0x57d2('0x23')+_0x1957a6,'body':{'user_name':_0x277426[_0x57d2('0x24')],'roles':_0x57d2('0x25'),'first_name':_0x277426['endUserNumber'],'active':_0x57d2('0x1b'),'date_format':_0x57d2('0x26'),'phone':_0x277426[_0x57d2('0x24')]},'auth':_0x15f1ba,'json':!![]};return rp(_0x574589)[_0x57d2('0xb')](function(_0xb3051c){logger[_0x57d2('0x10')]('['+[_0x1ae5ff[_0x57d2('0x11')]()]+_0x57d2('0x27'),_0xb3051c[_0x57d2('0xc')]);_0x277426['endUserId']=_0xb3051c[_0x57d2('0xc')][_0x57d2('0xf')];_0x1d2bdb(_0x277426);})['catch'](function(_0xcf7e0e){logger[_0x57d2('0x14')]('['+[_0x1ae5ff['toUpperCase']()]+']',_0xcf7e0e[_0x57d2('0x1f')]);_0x2cf9d9(_0xcf7e0e[_0x57d2('0x1f')]);});});}function getEndUser(_0x179cce,_0x15613b,_0x1805ee,_0x5184d9,_0x4c14df){return function(_0x581ebc){logger['info']('['+[_0x179cce[_0x57d2('0x11')]()]+_0x57d2('0x28'),_0x581ebc);return new Promise(function(_0x39f3b9,_0x2f2173){var _0x13beac={'method':'GET','uri':_0x1805ee+_0x57d2('0x29')+_0x581ebc['endUserNumber']+'&'+_0x5184d9+'&'+_0x4c14df,'auth':_0x15613b,'json':!![]};return rp(_0x13beac)[_0x57d2('0xb')](function(_0xdcbd13){if(_0xdcbd13[_0x57d2('0xc')]['length']>0x0){_0x581ebc[_0x57d2('0x2a')]=_0xdcbd13[_0x57d2('0xc')][0x0]['sys_id'];logger[_0x57d2('0x10')]('['+[_0x179cce[_0x57d2('0x11')]()]+_0x57d2('0x2b'),_0x581ebc);_0x39f3b9(_0x581ebc);}else{return createEndUser(_0x179cce,_0x15613b,_0x581ebc,_0x1805ee,_0x5184d9)[_0x57d2('0xb')](function(_0x3153fd){logger[_0x57d2('0x10')]('['+[_0x179cce['toUpperCase']()]+_0x57d2('0x2c'),_0x3153fd);_0x39f3b9(_0x3153fd);});}})['catch'](function(_0x1d3303){logger[_0x57d2('0x14')]('['+[_0x179cce[_0x57d2('0x11')]()]+']',_0x1d3303[_0x57d2('0x1f')]);_0x2f2173(_0x1d3303[_0x57d2('0x1f')]);});});};}function getCustomFields(_0x512dbf,_0x282e6e){var _0x1dbbb7={};if(_0x512dbf['length']>0x0){_[_0x57d2('0x2d')](_0x512dbf,function(_0x267c8b){if(_[_0x57d2('0x2e')](['string',_0x57d2('0x2f')],_0x267c8b[_0x57d2('0x30')])&&_0x267c8b[_0x57d2('0x31')]&&!_0x267c8b[_0x57d2('0x32')]){_0x1dbbb7[_0x267c8b['nameField']['toLowerCase']()]=_0x267c8b[_0x57d2('0x33')][_0x57d2('0x34')]();}else if(_[_0x57d2('0x2e')](['string','picklist'],_0x267c8b[_0x57d2('0x30')])&&_0x267c8b['idField']&&_0x267c8b[_0x57d2('0x32')]){_0x1dbbb7[_0x267c8b[_0x57d2('0x35')][_0x57d2('0x36')]()]=_0x267c8b[_0x57d2('0x33')][_0x57d2('0x34')]();}else if(_0x267c8b['type']===_0x57d2('0x37')&&_0x267c8b[_0x57d2('0x38')]&&_0x267c8b['idField']&&_0x267c8b[_0x57d2('0x32')]){_0x1dbbb7[_0x267c8b['idField'][_0x57d2('0x36')]()]=_0x282e6e[_0x267c8b[_0x57d2('0x38')]][_0x57d2('0x34')]();}else if(_0x267c8b[_0x57d2('0x30')]==='customVariable'&&_0x267c8b['Variable']&&_0x267c8b[_0x57d2('0x39')]['name']&&_0x267c8b['idField']&&_0x267c8b[_0x57d2('0x32')]){_0x1dbbb7[_0x267c8b['idField']['toLowerCase']()]=_0x282e6e[_0x267c8b[_0x57d2('0x39')]['name'][_0x57d2('0x36')]()]['toString']();}});}return _0x1dbbb7;}function getTicket(_0x2bf106,_0x49a2c3,_0x50ce3b,_0x1090de,_0x3e39f5,_0xba2cc8){return function(_0x28566d){logger[_0x57d2('0x10')]('['+[_0x2bf106[_0x57d2('0x11')]()]+']\x20getTicket\x20input\x20crm',_0x28566d);return new Promise(function(_0x4541b2,_0xf91b05){var _0x2afbcb=_0x2bf106[_0x57d2('0x36')]()===_0x57d2('0x3a')?_0x28566d[_0x57d2('0x1c')]:_0x28566d[_0x57d2('0x2a')];var _0x406375={'method':'POST','uri':_0x50ce3b+_0x57d2('0x3b')+'?'+_0xba2cc8,'body':Object[_0x57d2('0x3c')]({},{'active':'true','caller_id':_0x2afbcb,'assigned_to':_0x28566d[_0x57d2('0x1c')],'short_description':intUtil['getString'](_0x1090de['Subjects'],_0x3e39f5,'\x20'),'description':intUtil[_0x57d2('0x3d')](_0x1090de[_0x57d2('0x3e')],_0x3e39f5,'\x0a')},getCustomFields(_0x1090de[_0x57d2('0x3f')],_0x3e39f5)),'auth':_0x49a2c3,'json':!![]};return rp(_0x406375)[_0x57d2('0xb')](function(_0x4821b4){logger[_0x57d2('0x10')]('['+[_0x2bf106[_0x57d2('0x11')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x4821b4['result']);_0x28566d[_0x57d2('0x40')]=_0x4821b4[_0x57d2('0xc')][_0x57d2('0xf')];_0x28566d[_0x57d2('0x41')]=_0x4821b4[_0x57d2('0xc')][_0x57d2('0x42')];logger['info']('['+[_0x2bf106['toUpperCase']()]+']\x20getTicket\x20crm',_0x28566d);_0x4541b2(_0x28566d);})[_0x57d2('0x13')](function(_0x505849){logger[_0x57d2('0x14')]('['+[_0x2bf106[_0x57d2('0x11')]()]+']',_0x505849['message']);_0xf91b05(_0x505849[_0x57d2('0x1f')]);});});};}function createRemoteTag(_0xdb19c5,_0x35ced7,_0x557f79,_0x10d4e5){return new Promise(function(_0x224b7d,_0x25e121){var _0x1d8329={'method':_0x57d2('0x22'),'uri':_0x557f79+_0x57d2('0x43')+'?'+_0x10d4e5,'body':{'short_description':_0xdb19c5,'global':!![],'active':!![],'name':_0xdb19c5},'auth':_0x35ced7,'json':!![]};return rp(_0x1d8329)[_0x57d2('0xb')](function(_0x2b93c4){var _0x183ae8=_0x2b93c4['result'][_0x57d2('0xf')];_0x224b7d(_0x183ae8);});});}function getRemoteTag(_0x3ad348,_0x28109b,_0x5e3289,_0x7b334f,_0x3b12c9){return new Promise(function(_0x52ad94,_0x4b5f82){var _0x5aa6d3={'method':'GET','uri':_0x5e3289+_0x57d2('0x43')+'?sysparm_query=name%3D'+_0x3ad348+'&'+_0x7b334f,'auth':_0x28109b,'json':!![]};return rp(_0x5aa6d3)[_0x57d2('0xb')](function(_0x4cdae5){if(_0x4cdae5[_0x57d2('0xc')]['length']>0x0){var _0x240322=_0x4cdae5[_0x57d2('0xc')][0x0][_0x57d2('0xf')];_0x52ad94(_0x240322);}else{return createRemoteTag(_0x3ad348,_0x28109b,_0x5e3289,_0x7b334f)['then'](function(_0x5985e4){_0x52ad94(_0x5985e4);});}});});}function assignTagToIncident(_0xd5b87e,_0x2c1710,_0x3b57fa,_0x227a02,_0x3e5d71){return new Promise(function(_0x421f99,_0x4a2208){var _0x58301e={'method':_0x57d2('0x22'),'uri':_0x3b57fa+_0x57d2('0x44')+'?'+_0x3e5d71,'body':{'label':_0xd5b87e,'table':_0x57d2('0x3b'),'id_type':_0x57d2('0x45'),'table_key':_0x227a02['ticketId'],'title':'Incident\x20-\x20'+_0x227a02[_0x57d2('0x41')],'id_display':_0x227a02[_0x57d2('0x41')]},'auth':_0x2c1710,'json':!![]};return rp(_0x58301e)['then'](function(_0xad397){_0x421f99();})[_0x57d2('0x13')](function(){_0x421f99();});});}function manageTags(_0x15e3b6,_0x472e5d,_0x5ea1e5,_0x59f67c,_0x55f669,_0x4b7b27,_0x434cb7){return new Promise(function(_0x15a15d,_0x343890){var _0xa57b70=[];_0x472e5d[_0x57d2('0x2d')](function(_0x33fa8f){_0xa57b70[_0x57d2('0x46')](getRemoteTag(_0x33fa8f,_0x5ea1e5,_0x59f67c,_0x4b7b27,_0x434cb7));});return Promise['all'](_0xa57b70)[_0x57d2('0xb')](function(_0x4b8024){if(_0x4b8024[_0x57d2('0xd')]){logger['info']('['+[_0x15e3b6[_0x57d2('0x11')]()]+_0x57d2('0x47'),_0x4b8024);var _0x453e6c=[];_0x4b8024[_0x57d2('0x2d')](function(_0xcbe523){_0x453e6c[_0x57d2('0x46')](assignTagToIncident(_0xcbe523,_0x5ea1e5,_0x59f67c,_0x55f669,_0x4b7b27));});return Promise['all'](_0x453e6c)[_0x57d2('0xb')](function(){_0x15a15d();})[_0x57d2('0x13')](function(){_0x15a15d();});}else{_0x15a15d();}});});}function getTags(_0x27b27a,_0x6da8c3,_0x17e0f7,_0x2af67e,_0x26680f,_0x27669e){return function(_0x10141e){return new Promise(function(_0x59c4e4,_0x319643){var _0x4bddff=[];var _0x5b73e7=_0x2af67e['Tags'];if(_0x5b73e7&&_0x5b73e7[_0x57d2('0xd')]>0x0){_0x4bddff=_['map'](_0x5b73e7,_0x57d2('0x48'));}if(_0x4bddff[_0x57d2('0xd')]>0x0){return manageTags(_0x27b27a,_0x4bddff,_0x6da8c3,_0x17e0f7,_0x10141e,_0x26680f,_0x27669e)['then'](function(){_0x59c4e4(_0x10141e);});}else{_0x59c4e4(_0x10141e);}});};}function emit(_0x2792b0,_0xd3d714,_0x3ea517){var _0x13741f='%26sysparm_record_target%3Dincident'+_0x57d2('0x49')+_0x57d2('0x4a')+'%255EORDERBYDESCnumber';var _0x4cfae2={'uri':_0x2792b0+_0x57d2('0x4b')+_0x3ea517+_0x13741f};io['to'](util[_0x57d2('0x4c')]('user:%s',_0xd3d714))[_0x57d2('0x4d')](_0x57d2('0x4e'),_0x4cfae2);}exports['cs']=function(_0x360ee0,_0x858d6e,_0x720441,_0x3899b8,_0xca6e3,_0x2fa113,_0x6bc721,_0x3bec6f){var _0x22f977={};var _0x1d7850={'user':_0x2fa113[_0x57d2('0x4f')],'pass':_0x2fa113['password']};var _0x113c81=_0x57d2('0x50');var _0x1c14af=_0x57d2('0x51');_0x2fa113[_0x57d2('0x52')]=intUtil[_0x57d2('0x53')](_0x2fa113[_0x57d2('0x52')]);_0x2fa113[_0x57d2('0x54')]=intUtil[_0x57d2('0x53')](_0x2fa113[_0x57d2('0x54')]);var _0x1db3ac=util[_0x57d2('0x4c')](_0x57d2('0x55'),_0x2fa113[_0x57d2('0x52')]);_0x22f977[_0x57d2('0x17')]=!_[_0x57d2('0x56')](_0x3899b8)?_0x3899b8['email']:null;_0x22f977[_0x57d2('0x1d')]=_0x2fa113[_0x57d2('0x57')];_0x22f977['endUserNumber']=_0x3bec6f[_0x57d2('0x36')]()===_0x57d2('0x3a')?_0x858d6e[_0x57d2('0x58')]:_0x858d6e[_0x57d2('0x59')];_0x22f977['callDirection']=_0x3bec6f===_0x57d2('0x5a')||_0x3bec6f==='unmanaged'?'queue':_0x57d2('0x3a');var _0x4f30e8=util[_0x57d2('0x4c')](_0x57d2('0x5b'),_0x2fa113[_0x57d2('0x54')],_0x858d6e[_0x57d2('0x5c')],md5(_0x858d6e['uniqueid']));if(_0xca6e3&&_0xca6e3[_0x57d2('0x5d')]){logger[_0x57d2('0x10')](_0x57d2('0x5e'),_0x57d2('0x5f'));_0x858d6e[_0x57d2('0x60')]=_0x4f30e8;}else if(_0x6bc721&&_0x6bc721[_0x57d2('0x61')]&&_0x6bc721[_0x57d2('0x61')]!==_0x57d2('0x62')){logger[_0x57d2('0x10')](_0x57d2('0x63'),'Recording\x20is\x20enabled!');_0x858d6e[_0x57d2('0x60')]=_0x4f30e8;}else{_0x858d6e[_0x57d2('0x60')]='';}return getAdminUser(_0x3bec6f,_0x1d7850,_0x22f977,_0x1db3ac,_0x1c14af,_0x113c81)[_0x57d2('0xb')](getUser(_0x3bec6f,_0x1d7850,_0x1db3ac,_0x1c14af,_0x113c81))[_0x57d2('0xb')](getEndUser(_0x3bec6f,_0x1d7850,_0x1db3ac,_0x1c14af,_0x113c81))[_0x57d2('0xb')](getTicket(_0x3bec6f,_0x1d7850,_0x1db3ac,_0x720441,_0x858d6e,_0x1c14af))[_0x57d2('0xb')](function(_0x3052a3){logger[_0x57d2('0x10')](util[_0x57d2('0x4c')](_0x57d2('0x64'),_0x3052a3[_0x57d2('0x40')]));logger[_0x57d2('0x10')](util['format']('call\x20direction:\x20%s',_0x3bec6f));if(_0x3bec6f!==_0x57d2('0x65')){logger[_0x57d2('0x10')]('['+[_0x3bec6f[_0x57d2('0x11')]()]+']',_0x57d2('0x66'));emit(_0x2fa113[_0x57d2('0x52')],_0x3899b8['name'],_0x3052a3['ticketId']);}})[_0x57d2('0x13')](function(_0x14b5e1){logger[_0x57d2('0x14')]('['+[_0x3bec6f[_0x57d2('0x11')]()]+_0x57d2('0x67'),util[_0x57d2('0x68')](_0x14b5e1,{'showHidden':!![],'depth':null}));});};