Built motion from commit 994c64e1.|2.6.1
[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 _0x02f9=['endUserId','],\x20getEndUser\x20input\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','toLowerCase','idField','customField','content','toString','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','Subjects','getString','Descriptions','Fields','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','ticketNumber','push','all','Tags','map','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','email','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','then','],\x20EndUser\x20schema'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x02f9,0x11a));var _0x902f=function(_0x1ee30a,_0x76f735){_0x1ee30a=_0x1ee30a-0x0;var _0x4aeee9=_0x02f9[_0x1ee30a];return _0x4aeee9;};'use strict';var _=require(_0x902f('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0x902f('0x1'));var md5=require(_0x902f('0x2'));var Redis=require(_0x902f('0x3'));var intUtil=require(_0x902f('0x4'));var config=require(_0x902f('0x5'));var logger=require(_0x902f('0x6'))('servicenow');config[_0x902f('0x7')]=_['defaults'](config[_0x902f('0x7')],{'host':_0x902f('0x8'),'port':0x18eb});var io=require(_0x902f('0x9'))(new Redis(config[_0x902f('0x7')]));function getAdminUser(_0x49824e,_0x253fde,_0x58b94b,_0x45239b,_0x420168,_0xf2dcbc){return new Promise(function(_0x2e3cf1,_0x56df3e){var _0x1b84e9={'method':_0x902f('0xa'),'uri':_0x45239b+_0x902f('0xb')+'&'+_0x420168+'&'+_0xf2dcbc,'auth':_0x253fde,'json':!![]};return rp(_0x1b84e9)['then'](function(_0xcddfee){if(_0xcddfee[_0x902f('0xc')][_0x902f('0xd')]>0x0){_0x58b94b[_0x902f('0xe')]=_0xcddfee['result'][0x0][_0x902f('0xf')];}logger[_0x902f('0x10')]('['+[_0x49824e['toUpperCase']()]+_0x902f('0x11'),_0x58b94b);_0x2e3cf1(_0x58b94b);})[_0x902f('0x12')](function(_0x52ad4b){logger[_0x902f('0x13')]('['+[_0x49824e['toUpperCase']()]+']',_0x52ad4b['message']);_0x56df3e(_0x52ad4b[_0x902f('0x14')]);});});}function getUser(_0x3ddfb9,_0x334293,_0x539107,_0x342b13,_0x35099e){return function(_0x45d3af){logger[_0x902f('0x10')]('['+[_0x3ddfb9[_0x902f('0x15')]()]+_0x902f('0x16'),_0x45d3af);return new Promise(function(_0xb14adc,_0x248ee7){if(intUtil[_0x902f('0x17')](_0x45d3af[_0x902f('0x18')])){var _0x55ea64={'method':_0x902f('0xa'),'uri':_0x539107+'sys_user?sysparm_query=email%3D'+_0x45d3af[_0x902f('0x18')]+'&'+_0x342b13+'&'+_0x35099e,'auth':_0x334293,'json':!![]};logger[_0x902f('0x10')]('['+[_0x3ddfb9[_0x902f('0x15')]()]+_0x902f('0x19'),_0x55ea64);return rp(_0x55ea64)['then'](function(_0x1f6323){logger[_0x902f('0x10')]('['+[_0x3ddfb9[_0x902f('0x15')]()]+_0x902f('0x1a'),_0x1f6323);if(_0x1f6323[_0x902f('0xc')][_0x902f('0xd')]>0x0&&String(_0x1f6323['result'][0x0]['active'])===_0x902f('0x1b')){_0x45d3af[_0x902f('0x1c')]=_0x1f6323['result'][0x0]['sys_id'];}else{_0x45d3af[_0x902f('0x1c')]=_0x45d3af[_0x902f('0xe')];_0x45d3af[_0x902f('0x18')]=_0x45d3af[_0x902f('0x1d')];}logger[_0x902f('0x10')]('['+[_0x3ddfb9['toUpperCase']()]+'],\x20getUser\x20crm',_0x45d3af);_0xb14adc(_0x45d3af);})[_0x902f('0x12')](function(_0x272150){logger[_0x902f('0x13')]('['+[_0x3ddfb9[_0x902f('0x15')]()]+']',_0x272150[_0x902f('0x14')]);_0x248ee7(_0x272150[_0x902f('0x14')]);});}else{logger[_0x902f('0x10')]('['+[_0x3ddfb9[_0x902f('0x15')]()]+_0x902f('0x1e'));_0x45d3af['userId']=_0x45d3af[_0x902f('0xe')];_0x45d3af[_0x902f('0x18')]=_0x45d3af['adminEmail'];_0xb14adc(_0x45d3af);}});};}function createEndUser(_0x458b8c,_0x5475e6,_0xcbe512,_0x415e68,_0xb08319){logger[_0x902f('0x10')]('['+[_0x458b8c[_0x902f('0x15')]()]+_0x902f('0x1f'),_0xcbe512);return new Promise(function(_0xe569dc,_0x1ac2a3){var _0x5f9598={'method':_0x902f('0x20'),'uri':_0x415e68+_0x902f('0x21')+_0xb08319,'body':{'user_name':_0xcbe512[_0x902f('0x22')],'roles':_0x902f('0x23'),'first_name':_0xcbe512[_0x902f('0x22')],'active':'true','date_format':_0x902f('0x24'),'phone':_0xcbe512['endUserNumber']},'auth':_0x5475e6,'json':!![]};return rp(_0x5f9598)[_0x902f('0x25')](function(_0x34b02a){logger[_0x902f('0x10')]('['+[_0x458b8c['toUpperCase']()]+_0x902f('0x26'),_0x34b02a[_0x902f('0xc')]);_0xcbe512[_0x902f('0x27')]=_0x34b02a[_0x902f('0xc')][_0x902f('0xf')];_0xe569dc(_0xcbe512);})['catch'](function(_0x27af78){logger['error']('['+[_0x458b8c[_0x902f('0x15')]()]+']',_0x27af78[_0x902f('0x14')]);_0x1ac2a3(_0x27af78['message']);});});}function getEndUser(_0xa5863c,_0xffe5de,_0x47495d,_0x19dca6,_0x14d027){return function(_0x26fe1c){logger[_0x902f('0x10')]('['+[_0xa5863c[_0x902f('0x15')]()]+_0x902f('0x28'),_0x26fe1c);return new Promise(function(_0x18f1e8,_0x2cafeb){var _0x1dd39a={'method':_0x902f('0xa'),'uri':_0x47495d+'sys_user?sysparm_query=phone%3D'+_0x26fe1c[_0x902f('0x22')]+'&'+_0x19dca6+'&'+_0x14d027,'auth':_0xffe5de,'json':!![]};return rp(_0x1dd39a)['then'](function(_0x438cab){if(_0x438cab[_0x902f('0xc')]['length']>0x0){_0x26fe1c['endUserId']=_0x438cab[_0x902f('0xc')][0x0][_0x902f('0xf')];logger[_0x902f('0x10')]('['+[_0xa5863c[_0x902f('0x15')]()]+'],\x20getEndUser\x20crm',_0x26fe1c);_0x18f1e8(_0x26fe1c);}else{return createEndUser(_0xa5863c,_0xffe5de,_0x26fe1c,_0x47495d,_0x19dca6)[_0x902f('0x25')](function(_0x44a1cb){logger[_0x902f('0x10')]('['+[_0xa5863c[_0x902f('0x15')]()]+_0x902f('0x29'),_0x44a1cb);_0x18f1e8(_0x44a1cb);});}})[_0x902f('0x12')](function(_0x24edbb){logger[_0x902f('0x13')]('['+[_0xa5863c['toUpperCase']()]+']',_0x24edbb[_0x902f('0x14')]);_0x2cafeb(_0x24edbb[_0x902f('0x14')]);});});};}function getCustomFields(_0x38dfa5,_0x4e09f8){var _0x5a132f={};if(_0x38dfa5['length']>0x0){_[_0x902f('0x2a')](_0x38dfa5,function(_0x2cfacb){if(_[_0x902f('0x2b')]([_0x902f('0x2c'),_0x902f('0x2d')],_0x2cfacb[_0x902f('0x2e')])&&_0x2cfacb[_0x902f('0x2f')]&&!_0x2cfacb['customField']){_0x5a132f[_0x2cfacb['nameField'][_0x902f('0x30')]()]=_0x2cfacb['content']['toString']();}else if(_[_0x902f('0x2b')]([_0x902f('0x2c'),_0x902f('0x2d')],_0x2cfacb[_0x902f('0x2e')])&&_0x2cfacb[_0x902f('0x31')]&&_0x2cfacb[_0x902f('0x32')]){_0x5a132f[_0x2cfacb[_0x902f('0x31')][_0x902f('0x30')]()]=_0x2cfacb[_0x902f('0x33')][_0x902f('0x34')]();}else if(_0x2cfacb[_0x902f('0x2e')]===_0x902f('0x35')&&_0x2cfacb[_0x902f('0x36')]&&_0x2cfacb['idField']&&_0x2cfacb[_0x902f('0x32')]){_0x5a132f[_0x2cfacb[_0x902f('0x31')][_0x902f('0x30')]()]=_0x4e09f8[_0x2cfacb[_0x902f('0x36')]][_0x902f('0x34')]();}else if(_0x2cfacb[_0x902f('0x2e')]===_0x902f('0x37')&&_0x2cfacb[_0x902f('0x38')]&&_0x2cfacb[_0x902f('0x38')][_0x902f('0x39')]&&_0x2cfacb[_0x902f('0x31')]&&_0x2cfacb[_0x902f('0x32')]){_0x5a132f[_0x2cfacb['idField'][_0x902f('0x30')]()]=_0x4e09f8[_0x2cfacb['Variable'][_0x902f('0x39')][_0x902f('0x30')]()][_0x902f('0x34')]();}});}return _0x5a132f;}function getTicket(_0x445bcf,_0x3b7360,_0x54258a,_0x4252c4,_0x3b1e9b,_0x2e05d7){return function(_0x5ce400){logger['info']('['+[_0x445bcf['toUpperCase']()]+_0x902f('0x3a'),_0x5ce400);return new Promise(function(_0x37919a,_0x5be4b3){var _0x4f7669=_0x445bcf[_0x902f('0x30')]()===_0x902f('0x3b')?_0x5ce400[_0x902f('0x1c')]:_0x5ce400[_0x902f('0x27')];var _0x34a767={'method':_0x902f('0x20'),'uri':_0x54258a+_0x902f('0x3c')+'?'+_0x2e05d7,'body':Object['assign']({},{'active':_0x902f('0x1b'),'caller_id':_0x4f7669,'assigned_to':_0x5ce400['userId'],'short_description':intUtil['getString'](_0x4252c4[_0x902f('0x3d')],_0x3b1e9b,'\x20'),'description':intUtil[_0x902f('0x3e')](_0x4252c4[_0x902f('0x3f')],_0x3b1e9b,'\x0a')},getCustomFields(_0x4252c4[_0x902f('0x40')],_0x3b1e9b)),'auth':_0x3b7360,'json':!![]};return rp(_0x34a767)[_0x902f('0x25')](function(_0xa949c1){logger['info']('['+[_0x445bcf[_0x902f('0x15')]()]+']\x20POST\x20incident\x20entity\x20schema',_0xa949c1['result']);_0x5ce400[_0x902f('0x41')]=_0xa949c1[_0x902f('0xc')][_0x902f('0xf')];_0x5ce400['ticketNumber']=_0xa949c1[_0x902f('0xc')][_0x902f('0x42')];logger[_0x902f('0x10')]('['+[_0x445bcf[_0x902f('0x15')]()]+_0x902f('0x43'),_0x5ce400);_0x37919a(_0x5ce400);})['catch'](function(_0x2f8547){logger[_0x902f('0x13')]('['+[_0x445bcf[_0x902f('0x15')]()]+']',_0x2f8547[_0x902f('0x14')]);_0x5be4b3(_0x2f8547[_0x902f('0x14')]);});});};}function createRemoteTag(_0x591c4d,_0x2a1e51,_0x167e61,_0x4771d4){return new Promise(function(_0x83b07c,_0x48c609){var _0x3eb69b={'method':_0x902f('0x20'),'uri':_0x167e61+_0x902f('0x44')+'?'+_0x4771d4,'body':{'short_description':_0x591c4d,'global':!![],'active':!![],'name':_0x591c4d},'auth':_0x2a1e51,'json':!![]};return rp(_0x3eb69b)[_0x902f('0x25')](function(_0x1de3a4){var _0xf4ddd9=_0x1de3a4['result'][_0x902f('0xf')];_0x83b07c(_0xf4ddd9);});});}function getRemoteTag(_0x5ea05e,_0x46c0c1,_0x3ab7e7,_0x27e1e7,_0x344323){return new Promise(function(_0x25c7d3,_0x4efb91){var _0x430ec8={'method':_0x902f('0xa'),'uri':_0x3ab7e7+_0x902f('0x44')+_0x902f('0x45')+_0x5ea05e+'&'+_0x27e1e7,'auth':_0x46c0c1,'json':!![]};return rp(_0x430ec8)[_0x902f('0x25')](function(_0x2e7a73){if(_0x2e7a73[_0x902f('0xc')][_0x902f('0xd')]>0x0){var _0x407f2b=_0x2e7a73['result'][0x0]['sys_id'];_0x25c7d3(_0x407f2b);}else{return createRemoteTag(_0x5ea05e,_0x46c0c1,_0x3ab7e7,_0x27e1e7)[_0x902f('0x25')](function(_0x18f7c6){_0x25c7d3(_0x18f7c6);});}});});}function assignTagToIncident(_0x2ee748,_0x5dcac3,_0x3425a5,_0x1f7fb3,_0x9a1725){return new Promise(function(_0x5734a4,_0x3cefc2){var _0x3b231a={'method':_0x902f('0x20'),'uri':_0x3425a5+_0x902f('0x46')+'?'+_0x9a1725,'body':{'label':_0x2ee748,'table':'incident','id_type':_0x902f('0x47'),'table_key':_0x1f7fb3[_0x902f('0x41')],'title':_0x902f('0x48')+_0x1f7fb3[_0x902f('0x49')],'id_display':_0x1f7fb3['ticketNumber']},'auth':_0x5dcac3,'json':!![]};return rp(_0x3b231a)[_0x902f('0x25')](function(_0x39147a){_0x5734a4();})['catch'](function(){_0x5734a4();});});}function manageTags(_0x3129ce,_0x33acbc,_0xf439d1,_0x2126ce,_0xba2ffd,_0x356186,_0x1d219a){return new Promise(function(_0xc58525,_0x62da09){var _0x5e3906=[];_0x33acbc[_0x902f('0x2a')](function(_0x433541){_0x5e3906[_0x902f('0x4a')](getRemoteTag(_0x433541,_0xf439d1,_0x2126ce,_0x356186,_0x1d219a));});return Promise[_0x902f('0x4b')](_0x5e3906)[_0x902f('0x25')](function(_0x4cdb59){if(_0x4cdb59['length']){logger[_0x902f('0x10')]('['+[_0x3129ce[_0x902f('0x15')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x4cdb59);var _0x3ed682=[];_0x4cdb59[_0x902f('0x2a')](function(_0x4bbe53){_0x3ed682[_0x902f('0x4a')](assignTagToIncident(_0x4bbe53,_0xf439d1,_0x2126ce,_0xba2ffd,_0x356186));});return Promise['all'](_0x3ed682)[_0x902f('0x25')](function(){_0xc58525();})[_0x902f('0x12')](function(){_0xc58525();});}else{_0xc58525();}});});}function getTags(_0x4c6304,_0x35ce7a,_0x37cfb1,_0x391011,_0x364883,_0x53e895){return function(_0x1d7bd1){return new Promise(function(_0x2e6659,_0x47b0a2){var _0x38a0e8=[];var _0x3e4f62=_0x391011[_0x902f('0x4c')];if(_0x3e4f62&&_0x3e4f62[_0x902f('0xd')]>0x0){_0x38a0e8=_[_0x902f('0x4d')](_0x3e4f62,_0x902f('0x39'));}if(_0x38a0e8[_0x902f('0xd')]>0x0){return manageTags(_0x4c6304,_0x38a0e8,_0x35ce7a,_0x37cfb1,_0x1d7bd1,_0x364883,_0x53e895)[_0x902f('0x25')](function(){_0x2e6659(_0x1d7bd1);});}else{_0x2e6659(_0x1d7bd1);}});};}function emit(_0x3f763c,_0x4d7261,_0x593ace){var _0x5ebc45='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x902f('0x4e');var _0x5c75f8={'uri':_0x3f763c+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x593ace+_0x5ebc45};io['to'](util[_0x902f('0x4f')]('user:%s',_0x4d7261))[_0x902f('0x50')](_0x902f('0x51'),_0x5c75f8);}exports['cs']=function(_0x171e95,_0x12b70e,_0x6785e9,_0x234c36,_0x5dc6e6,_0x2fa16e,_0x159cf9,_0xb8dd9a){var _0x96f06a={};var _0x4cabb4={'user':_0x2fa16e[_0x902f('0x52')],'pass':_0x2fa16e[_0x902f('0x53')]};var _0x482cc5=_0x902f('0x54');var _0x39df1e=_0x902f('0x55');_0x2fa16e[_0x902f('0x56')]=intUtil[_0x902f('0x57')](_0x2fa16e['remoteUri']);_0x2fa16e['serverUrl']=intUtil[_0x902f('0x57')](_0x2fa16e['serverUrl']);var _0xff4bad=util[_0x902f('0x4f')]('%s/api/now/table/',_0x2fa16e[_0x902f('0x56')]);_0x96f06a[_0x902f('0x18')]=!_['isNil'](_0x234c36)?_0x234c36[_0x902f('0x58')]:null;_0x96f06a[_0x902f('0x1d')]=_0x2fa16e['email'];_0x96f06a['endUserNumber']=_0xb8dd9a[_0x902f('0x30')]()===_0x902f('0x3b')?_0x12b70e[_0x902f('0x59')]:_0x12b70e[_0x902f('0x5a')];_0x96f06a[_0x902f('0x5b')]=_0xb8dd9a==='queue'||_0xb8dd9a==='unmanaged'?_0x902f('0x5c'):_0x902f('0x3b');var _0x292d07=util['format'](_0x902f('0x5d'),_0x2fa16e[_0x902f('0x5e')],_0x12b70e['uniqueid'],md5(_0x12b70e[_0x902f('0x5f')]));if(_0x5dc6e6&&_0x5dc6e6[_0x902f('0x60')]){logger[_0x902f('0x10')](_0x902f('0x61'),_0x902f('0x62'));_0x12b70e['recordingURL']=_0x292d07;}else if(_0x159cf9&&_0x159cf9[_0x902f('0x63')]&&_0x159cf9[_0x902f('0x63')]!==_0x902f('0x64')){logger[_0x902f('0x10')]('[OUTBOUND]',_0x902f('0x62'));_0x12b70e[_0x902f('0x65')]=_0x292d07;}else{_0x12b70e[_0x902f('0x65')]='';}return getAdminUser(_0xb8dd9a,_0x4cabb4,_0x96f06a,_0xff4bad,_0x39df1e,_0x482cc5)[_0x902f('0x25')](getUser(_0xb8dd9a,_0x4cabb4,_0xff4bad,_0x39df1e,_0x482cc5))[_0x902f('0x25')](getEndUser(_0xb8dd9a,_0x4cabb4,_0xff4bad,_0x39df1e,_0x482cc5))[_0x902f('0x25')](getTicket(_0xb8dd9a,_0x4cabb4,_0xff4bad,_0x6785e9,_0x12b70e,_0x39df1e))[_0x902f('0x25')](function(_0x2755df){logger[_0x902f('0x10')](util[_0x902f('0x4f')](_0x902f('0x66'),_0x2755df[_0x902f('0x41')]));logger[_0x902f('0x10')](util[_0x902f('0x4f')](_0x902f('0x67'),_0xb8dd9a));if(_0xb8dd9a!==_0x902f('0x68')){logger[_0x902f('0x10')]('['+[_0xb8dd9a[_0x902f('0x15')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2fa16e[_0x902f('0x56')],_0x234c36['name'],_0x2755df[_0x902f('0x41')]);}})['catch'](function(_0x5a61b5){logger['error']('['+[_0xb8dd9a[_0x902f('0x15')]()]+_0x902f('0x69'),util[_0x902f('0x6a')](_0x5a61b5,{'showHidden':!![],'depth':null}));});};