50e2c15f7cf18b3cfc1c56cd07f66f8d9f46d5a3
[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 _0x90d1=['getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','format','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','md5','./util','../../../../config/logger','redis','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','sys_id','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','true','userId','adminEmail',']\x20using\x20admin\x20profile','sys_user?','user','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','forEach','string','picklist','type','customField','nameField','content','toString','includes','toLowerCase','variableName','idField','customVariable','Variable','name','outbound','POST'];(function(_0x56a641,_0x4c0596){var _0x329947=function(_0x551652){while(--_0x551652){_0x56a641['push'](_0x56a641['shift']());}};_0x329947(++_0x4c0596);}(_0x90d1,0x1cf));var _0x190d=function(_0x525513,_0x44220c){_0x525513=_0x525513-0x0;var _0x17f77f=_0x90d1[_0x525513];return _0x17f77f;};'use strict';var _=require('lodash');var Promise=require('bluebird');var rp=require('request-promise');var util=require('util');var md5=require(_0x190d('0x0'));var Redis=require('ioredis');var intUtil=require(_0x190d('0x1'));var config=require('../../../../config/environment');var logger=require(_0x190d('0x2'))('servicenow');config[_0x190d('0x3')]=_['defaults'](config[_0x190d('0x3')],{'host':_0x190d('0x4'),'port':0x18eb});var io=require(_0x190d('0x5'))(new Redis(config[_0x190d('0x3')]));function getAdminUser(_0x4a4439,_0x19bbe4,_0x42209f,_0x4d1032,_0x53625b,_0x1472ce){return new Promise(function(_0x1addf6,_0xfca261){var _0x3762b9={'method':'GET','uri':_0x4d1032+_0x190d('0x6')+'&'+_0x53625b+'&'+_0x1472ce,'auth':_0x19bbe4,'json':!![]};return rp(_0x3762b9)[_0x190d('0x7')](function(_0x309c92){if(_0x309c92['result'][_0x190d('0x8')]>0x0){_0x42209f[_0x190d('0x9')]=_0x309c92[_0x190d('0xa')][0x0][_0x190d('0xb')];}logger['info']('['+[_0x4a4439['toUpperCase']()]+_0x190d('0xc'),_0x42209f);_0x1addf6(_0x42209f);})[_0x190d('0xd')](function(_0x56e2e0){logger[_0x190d('0xe')]('['+[_0x4a4439[_0x190d('0xf')]()]+']',_0x56e2e0[_0x190d('0x10')]);_0xfca261(_0x56e2e0['message']);});});}function getUser(_0x5601c0,_0xfac45a,_0x4275ed,_0x4f986,_0x1e30ca){return function(_0x41e597){logger[_0x190d('0x11')]('['+[_0x5601c0[_0x190d('0xf')]()]+_0x190d('0x12'),_0x41e597);return new Promise(function(_0x5af0c1,_0x41c696){if(intUtil[_0x190d('0x13')](_0x41e597[_0x190d('0x14')])){var _0x3feafe={'method':_0x190d('0x15'),'uri':_0x4275ed+_0x190d('0x16')+_0x41e597['userEmail']+'&'+_0x4f986+'&'+_0x1e30ca,'auth':_0xfac45a,'json':!![]};logger['info']('['+[_0x5601c0[_0x190d('0xf')]()]+'],\x20getUser\x20rp\x20obj',_0x3feafe);return rp(_0x3feafe)[_0x190d('0x7')](function(_0x769b15){logger['info']('['+[_0x5601c0[_0x190d('0xf')]()]+_0x190d('0x17'),_0x769b15);if(_0x769b15[_0x190d('0xa')]['length']>0x0&&String(_0x769b15[_0x190d('0xa')][0x0][_0x190d('0x18')])===_0x190d('0x19')){_0x41e597[_0x190d('0x1a')]=_0x769b15[_0x190d('0xa')][0x0][_0x190d('0xb')];}else{_0x41e597[_0x190d('0x1a')]=_0x41e597['adminId'];_0x41e597[_0x190d('0x14')]=_0x41e597[_0x190d('0x1b')];}logger[_0x190d('0x11')]('['+[_0x5601c0[_0x190d('0xf')]()]+'],\x20getUser\x20crm',_0x41e597);_0x5af0c1(_0x41e597);})['catch'](function(_0xe66c1){logger['error']('['+[_0x5601c0[_0x190d('0xf')]()]+']',_0xe66c1[_0x190d('0x10')]);_0x41c696(_0xe66c1[_0x190d('0x10')]);});}else{logger[_0x190d('0x11')]('['+[_0x5601c0['toUpperCase']()]+_0x190d('0x1c'));_0x41e597['userId']=_0x41e597[_0x190d('0x9')];_0x41e597[_0x190d('0x14')]=_0x41e597[_0x190d('0x1b')];_0x5af0c1(_0x41e597);}});};}function createEndUser(_0x5cb893,_0x767086,_0x389248,_0x42b995,_0x29e7e8){logger[_0x190d('0x11')]('['+[_0x5cb893[_0x190d('0xf')]()]+'],\x20createEndUser\x20input\x20crm',_0x389248);return new Promise(function(_0x426351,_0x11cae2){var _0x2405d2={'method':'POST','uri':_0x42b995+_0x190d('0x1d')+_0x29e7e8,'body':{'user_name':_0x389248['endUserNumber'],'roles':_0x190d('0x1e'),'first_name':_0x389248[_0x190d('0x1f')],'active':_0x190d('0x19'),'date_format':'System','phone':_0x389248[_0x190d('0x1f')]},'auth':_0x767086,'json':!![]};return rp(_0x2405d2)[_0x190d('0x7')](function(_0x199b6b){logger[_0x190d('0x11')]('['+[_0x5cb893[_0x190d('0xf')]()]+_0x190d('0x20'),_0x199b6b[_0x190d('0xa')]);_0x389248[_0x190d('0x21')]=_0x199b6b['result'][_0x190d('0xb')];_0x426351(_0x389248);})[_0x190d('0xd')](function(_0x3cc49e){logger[_0x190d('0xe')]('['+[_0x5cb893[_0x190d('0xf')]()]+']',_0x3cc49e[_0x190d('0x10')]);_0x11cae2(_0x3cc49e[_0x190d('0x10')]);});});}function getEndUser(_0x20a8b6,_0x3bfb9b,_0x843b94,_0x48d7c5,_0x12d709){return function(_0x2f75fc){logger[_0x190d('0x11')]('['+[_0x20a8b6['toUpperCase']()]+_0x190d('0x22'),_0x2f75fc);return new Promise(function(_0x2e6a32,_0x200725){var _0x325868={'method':_0x190d('0x15'),'uri':_0x843b94+'sys_user?sysparm_query=phone%3D'+_0x2f75fc[_0x190d('0x1f')]+'&'+_0x48d7c5+'&'+_0x12d709,'auth':_0x3bfb9b,'json':!![]};return rp(_0x325868)[_0x190d('0x7')](function(_0x5cde2d){if(_0x5cde2d[_0x190d('0xa')][_0x190d('0x8')]>0x0){_0x2f75fc[_0x190d('0x21')]=_0x5cde2d[_0x190d('0xa')][0x0]['sys_id'];logger[_0x190d('0x11')]('['+[_0x20a8b6[_0x190d('0xf')]()]+'],\x20getEndUser\x20crm',_0x2f75fc);_0x2e6a32(_0x2f75fc);}else{return createEndUser(_0x20a8b6,_0x3bfb9b,_0x2f75fc,_0x843b94,_0x48d7c5)[_0x190d('0x7')](function(_0x4ea624){logger[_0x190d('0x11')]('['+[_0x20a8b6[_0x190d('0xf')]()]+'],\x20createEndUser\x20crm',_0x4ea624);_0x2e6a32(_0x4ea624);});}})[_0x190d('0xd')](function(_0x5a4154){logger[_0x190d('0xe')]('['+[_0x20a8b6[_0x190d('0xf')]()]+']',_0x5a4154[_0x190d('0x10')]);_0x200725(_0x5a4154[_0x190d('0x10')]);});});};}function getCustomFields(_0x5757ed,_0x2bb516){var _0x453ed3={};if(_0x5757ed['length']>0x0){_[_0x190d('0x23')](_0x5757ed,function(_0x2b149f){if(_['includes']([_0x190d('0x24'),_0x190d('0x25')],_0x2b149f[_0x190d('0x26')])&&_0x2b149f['nameField']&&!_0x2b149f[_0x190d('0x27')]){_0x453ed3[_0x2b149f[_0x190d('0x28')]['toLowerCase']()]=_0x2b149f[_0x190d('0x29')][_0x190d('0x2a')]();}else if(_[_0x190d('0x2b')]([_0x190d('0x24'),'picklist'],_0x2b149f['type'])&&_0x2b149f['idField']&&_0x2b149f[_0x190d('0x27')]){_0x453ed3[_0x2b149f['idField'][_0x190d('0x2c')]()]=_0x2b149f[_0x190d('0x29')]['toString']();}else if(_0x2b149f[_0x190d('0x26')]==='variable'&&_0x2b149f[_0x190d('0x2d')]&&_0x2b149f[_0x190d('0x2e')]&&_0x2b149f['customField']){_0x453ed3[_0x2b149f[_0x190d('0x2e')][_0x190d('0x2c')]()]=_0x2bb516[_0x2b149f[_0x190d('0x2d')]][_0x190d('0x2a')]();}else if(_0x2b149f[_0x190d('0x26')]===_0x190d('0x2f')&&_0x2b149f[_0x190d('0x30')]&&_0x2b149f[_0x190d('0x30')][_0x190d('0x31')]&&_0x2b149f['idField']&&_0x2b149f['customField']){_0x453ed3[_0x2b149f[_0x190d('0x2e')][_0x190d('0x2c')]()]=_0x2bb516[_0x2b149f['Variable'][_0x190d('0x31')][_0x190d('0x2c')]()]['toString']();}});}return _0x453ed3;}function getTicket(_0x16e78e,_0x4a1db4,_0x3c3226,_0x2c330b,_0x4407f3,_0x16a058){return function(_0x4eb77f){logger[_0x190d('0x11')]('['+[_0x16e78e[_0x190d('0xf')]()]+']\x20getTicket\x20input\x20crm',_0x4eb77f);return new Promise(function(_0x40a092,_0x514d70){var _0x509f33=_0x16e78e[_0x190d('0x2c')]()===_0x190d('0x32')?_0x4eb77f[_0x190d('0x1a')]:_0x4eb77f['endUserId'];var _0x16ae26={'method':_0x190d('0x33'),'uri':_0x3c3226+'incident'+'?'+_0x16a058,'body':Object['assign']({},{'active':'true','caller_id':_0x509f33,'assigned_to':_0x4eb77f[_0x190d('0x1a')],'short_description':intUtil[_0x190d('0x34')](_0x2c330b[_0x190d('0x35')],_0x4407f3,'\x20'),'description':intUtil[_0x190d('0x34')](_0x2c330b[_0x190d('0x36')],_0x4407f3,'\x0a')},getCustomFields(_0x2c330b[_0x190d('0x37')],_0x4407f3)),'auth':_0x4a1db4,'json':!![]};return rp(_0x16ae26)[_0x190d('0x7')](function(_0x4e9813){logger['info']('['+[_0x16e78e['toUpperCase']()]+_0x190d('0x38'),_0x4e9813[_0x190d('0xa')]);_0x4eb77f[_0x190d('0x39')]=_0x4e9813[_0x190d('0xa')][_0x190d('0xb')];_0x4eb77f[_0x190d('0x3a')]=_0x4e9813['result'][_0x190d('0x3b')];logger[_0x190d('0x11')]('['+[_0x16e78e['toUpperCase']()]+_0x190d('0x3c'),_0x4eb77f);_0x40a092(_0x4eb77f);})[_0x190d('0xd')](function(_0x3abfb1){logger[_0x190d('0xe')]('['+[_0x16e78e['toUpperCase']()]+']',_0x3abfb1[_0x190d('0x10')]);_0x514d70(_0x3abfb1[_0x190d('0x10')]);});});};}function createRemoteTag(_0x4d0db4,_0x57105e,_0x4c7ae6,_0x3fbb99){return new Promise(function(_0xff4a7a,_0x2dfacf){var _0x2f672f={'method':'POST','uri':_0x4c7ae6+_0x190d('0x3d')+'?'+_0x3fbb99,'body':{'short_description':_0x4d0db4,'global':!![],'active':!![],'name':_0x4d0db4},'auth':_0x57105e,'json':!![]};return rp(_0x2f672f)['then'](function(_0x602349){var _0x1b31ac=_0x602349[_0x190d('0xa')][_0x190d('0xb')];_0xff4a7a(_0x1b31ac);});});}function getRemoteTag(_0x41a659,_0xe42cf0,_0x44e550,_0x175943,_0x49f73f){return new Promise(function(_0x5c2401,_0x1f3832){var _0x1fade6={'method':_0x190d('0x15'),'uri':_0x44e550+_0x190d('0x3d')+_0x190d('0x3e')+_0x41a659+'&'+_0x175943,'auth':_0xe42cf0,'json':!![]};return rp(_0x1fade6)[_0x190d('0x7')](function(_0x20d4a0){if(_0x20d4a0[_0x190d('0xa')][_0x190d('0x8')]>0x0){var _0x597c88=_0x20d4a0['result'][0x0][_0x190d('0xb')];_0x5c2401(_0x597c88);}else{return createRemoteTag(_0x41a659,_0xe42cf0,_0x44e550,_0x175943)[_0x190d('0x7')](function(_0x353ccc){_0x5c2401(_0x353ccc);});}});});}function assignTagToIncident(_0x2e2d60,_0x1ce4eb,_0x43b4c0,_0x58bf77,_0x4ad16e){return new Promise(function(_0x225d1c,_0x26ddf8){var _0x4613ae={'method':_0x190d('0x33'),'uri':_0x43b4c0+_0x190d('0x3f')+'?'+_0x4ad16e,'body':{'label':_0x2e2d60,'table':_0x190d('0x40'),'id_type':'Incident','table_key':_0x58bf77[_0x190d('0x39')],'title':'Incident\x20-\x20'+_0x58bf77[_0x190d('0x3a')],'id_display':_0x58bf77[_0x190d('0x3a')]},'auth':_0x1ce4eb,'json':!![]};return rp(_0x4613ae)[_0x190d('0x7')](function(_0xaaf95e){_0x225d1c();})[_0x190d('0xd')](function(){_0x225d1c();});});}function manageTags(_0x5cbbe0,_0x2710d7,_0x48e8e7,_0x7d8ca1,_0x225728,_0x19926b,_0x51c594){return new Promise(function(_0x3bc282,_0x3580c2){var _0x169fbe=[];_0x2710d7['forEach'](function(_0x3c9926){_0x169fbe[_0x190d('0x41')](getRemoteTag(_0x3c9926,_0x48e8e7,_0x7d8ca1,_0x19926b,_0x51c594));});return Promise[_0x190d('0x42')](_0x169fbe)[_0x190d('0x7')](function(_0x95e42a){if(_0x95e42a['length']){logger[_0x190d('0x11')]('['+[_0x5cbbe0['toUpperCase']()]+_0x190d('0x43'),_0x95e42a);var _0x59d5d2=[];_0x95e42a[_0x190d('0x23')](function(_0x38d7e4){_0x59d5d2[_0x190d('0x41')](assignTagToIncident(_0x38d7e4,_0x48e8e7,_0x7d8ca1,_0x225728,_0x19926b));});return Promise[_0x190d('0x42')](_0x59d5d2)[_0x190d('0x7')](function(){_0x3bc282();})[_0x190d('0xd')](function(){_0x3bc282();});}else{_0x3bc282();}});});}function getTags(_0xe2595d,_0x49e07d,_0x32d653,_0x2ccbf0,_0x4d2bcb,_0x59c838){return function(_0x4dc271){return new Promise(function(_0x50eff3,_0x234908){var _0x1b24d1=[];var _0x41a43f=_0x2ccbf0['Tags'];if(_0x41a43f&&_0x41a43f['length']>0x0){_0x1b24d1=_[_0x190d('0x44')](_0x41a43f,'name');}if(_0x1b24d1['length']>0x0){return manageTags(_0xe2595d,_0x1b24d1,_0x49e07d,_0x32d653,_0x4dc271,_0x4d2bcb,_0x59c838)[_0x190d('0x7')](function(){_0x50eff3(_0x4dc271);});}else{_0x50eff3(_0x4dc271);}});};}function emit(_0x193937,_0x54701d,_0x2eb150){var _0x3d7103=_0x190d('0x45')+_0x190d('0x46')+_0x190d('0x47')+_0x190d('0x48');var _0x204aae={'uri':_0x193937+_0x190d('0x49')+_0x2eb150+_0x3d7103};io['to'](util['format'](_0x190d('0x4a'),_0x54701d))[_0x190d('0x4b')](_0x190d('0x4c'),_0x204aae);}exports['cs']=function(_0x5247fe,_0x1dca43,_0x4788a8,_0xe0b1de,_0x162789,_0x4ebec7,_0x3d9011,_0x15fce8){var _0x1ac312={};var _0x58b1be={'user':_0x4ebec7[_0x190d('0x4d')],'pass':_0x4ebec7[_0x190d('0x4e')]};var _0x55d240=_0x190d('0x4f');var _0x2a3a4e=_0x190d('0x50');_0x4ebec7[_0x190d('0x51')]=intUtil[_0x190d('0x52')](_0x4ebec7[_0x190d('0x51')]);_0x4ebec7[_0x190d('0x53')]=intUtil[_0x190d('0x52')](_0x4ebec7[_0x190d('0x53')]);var _0x5034ae=util[_0x190d('0x54')](_0x190d('0x55'),_0x4ebec7['remoteUri']);_0x1ac312[_0x190d('0x14')]=!_[_0x190d('0x56')](_0xe0b1de)?_0xe0b1de[_0x190d('0x57')]:null;_0x1ac312[_0x190d('0x1b')]=_0x4ebec7['email'];_0x1ac312['endUserNumber']=_0x15fce8[_0x190d('0x2c')]()===_0x190d('0x32')?_0x1dca43[_0x190d('0x58')]:_0x1dca43[_0x190d('0x59')];_0x1ac312['callDirection']=_0x15fce8===_0x190d('0x5a')||_0x15fce8===_0x190d('0x5b')?_0x190d('0x5a'):_0x190d('0x32');var _0x13cdb9=util[_0x190d('0x54')](_0x190d('0x5c'),_0x4ebec7['serverUrl'],_0x1dca43['uniqueid'],md5(_0x1dca43[_0x190d('0x5d')]));if(_0x162789&&_0x162789[_0x190d('0x5e')]){logger[_0x190d('0x11')](_0x190d('0x5f'),_0x190d('0x60'));_0x1dca43[_0x190d('0x61')]=_0x13cdb9;}else if(_0x3d9011&&_0x3d9011['recordingFormat']&&_0x3d9011[_0x190d('0x62')]!=='none'){logger[_0x190d('0x11')](_0x190d('0x63'),'Recording\x20is\x20enabled!');_0x1dca43[_0x190d('0x61')]=_0x13cdb9;}else{_0x1dca43[_0x190d('0x61')]='';}return getAdminUser(_0x15fce8,_0x58b1be,_0x1ac312,_0x5034ae,_0x2a3a4e,_0x55d240)[_0x190d('0x7')](getUser(_0x15fce8,_0x58b1be,_0x5034ae,_0x2a3a4e,_0x55d240))['then'](getEndUser(_0x15fce8,_0x58b1be,_0x5034ae,_0x2a3a4e,_0x55d240))[_0x190d('0x7')](getTicket(_0x15fce8,_0x58b1be,_0x5034ae,_0x4788a8,_0x1dca43,_0x2a3a4e))[_0x190d('0x7')](function(_0x41f92b){logger[_0x190d('0x11')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x41f92b[_0x190d('0x39')]));logger[_0x190d('0x11')](util['format']('call\x20direction:\x20%s',_0x15fce8));if(_0x15fce8!==_0x190d('0x5b')){logger[_0x190d('0x11')]('['+[_0x15fce8[_0x190d('0xf')]()]+']',_0x190d('0x64'));emit(_0x4ebec7[_0x190d('0x51')],_0xe0b1de[_0x190d('0x31')],_0x41f92b[_0x190d('0x39')]);}})[_0x190d('0xd')](function(_0x4fa052){logger[_0x190d('0xe')]('['+[_0x15fce8[_0x190d('0xf')]()]+_0x190d('0x65'),util[_0x190d('0x66')](_0x4fa052,{'showHidden':!![],'depth':null}));});};