f3011fa4c6494975ad8fbef047c295ac34bef04a
[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 _0xb4a9=['sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','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','util','md5','ioredis','./util','../../../../config/environment','servicenow','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toString','idField','toLowerCase','variable','variableName','customVariable','Variable','name','outbound','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number','label','?sysparm_query=name%3D','label_entry','Incident','ticketNumber','push','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','username','password','sysparm_limit=1'];(function(_0x5ed229,_0x2a3c95){var _0x3b1565=function(_0x30ffa9){while(--_0x30ffa9){_0x5ed229['push'](_0x5ed229['shift']());}};_0x3b1565(++_0x2a3c95);}(_0xb4a9,0x160));var _0x9b4a=function(_0x59488d,_0x7ac291){_0x59488d=_0x59488d-0x0;var _0xe91e89=_0xb4a9[_0x59488d];return _0xe91e89;};'use strict';var _=require(_0x9b4a('0x0'));var Promise=require(_0x9b4a('0x1'));var rp=require(_0x9b4a('0x2'));var util=require(_0x9b4a('0x3'));var md5=require(_0x9b4a('0x4'));var Redis=require(_0x9b4a('0x5'));var intUtil=require(_0x9b4a('0x6'));var config=require(_0x9b4a('0x7'));var logger=require('../../../../config/logger')(_0x9b4a('0x8'));config['redis']=_['defaults'](config[_0x9b4a('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x9b4a('0xa'))(new Redis(config['redis']));function getAdminUser(_0x4a69eb,_0x5b3efa,_0x22464e,_0x1c20c3,_0x29d399,_0x40cd07){return new Promise(function(_0x59fb23,_0x47406d){var _0x3ad6e4={'method':_0x9b4a('0xb'),'uri':_0x1c20c3+_0x9b4a('0xc')+'&'+_0x29d399+'&'+_0x40cd07,'auth':_0x5b3efa,'json':!![]};return rp(_0x3ad6e4)[_0x9b4a('0xd')](function(_0x17e536){if(_0x17e536[_0x9b4a('0xe')][_0x9b4a('0xf')]>0x0){_0x22464e[_0x9b4a('0x10')]=_0x17e536[_0x9b4a('0xe')][0x0][_0x9b4a('0x11')];}logger[_0x9b4a('0x12')]('['+[_0x4a69eb[_0x9b4a('0x13')]()]+_0x9b4a('0x14'),_0x22464e);_0x59fb23(_0x22464e);})[_0x9b4a('0x15')](function(_0x2c2037){logger[_0x9b4a('0x16')]('['+[_0x4a69eb[_0x9b4a('0x13')]()]+']',_0x2c2037[_0x9b4a('0x17')]);_0x47406d(_0x2c2037[_0x9b4a('0x17')]);});});}function getUser(_0x4f2135,_0x554bb1,_0x1378d2,_0x40f2a4,_0x425624){return function(_0x403c6b){logger['info']('['+[_0x4f2135[_0x9b4a('0x13')]()]+_0x9b4a('0x18'),_0x403c6b);return new Promise(function(_0xbbe528,_0x7eb82f){if(intUtil['validateEmail'](_0x403c6b['userEmail'])){var _0x2af355={'method':_0x9b4a('0xb'),'uri':_0x1378d2+_0x9b4a('0x19')+_0x403c6b[_0x9b4a('0x1a')]+'&'+_0x40f2a4+'&'+_0x425624,'auth':_0x554bb1,'json':!![]};logger[_0x9b4a('0x12')]('['+[_0x4f2135['toUpperCase']()]+_0x9b4a('0x1b'),_0x2af355);return rp(_0x2af355)[_0x9b4a('0xd')](function(_0x2a78d7){logger[_0x9b4a('0x12')]('['+[_0x4f2135[_0x9b4a('0x13')]()]+_0x9b4a('0x1c'),_0x2a78d7);if(_0x2a78d7[_0x9b4a('0xe')]['length']>0x0&&String(_0x2a78d7[_0x9b4a('0xe')][0x0][_0x9b4a('0x1d')])===_0x9b4a('0x1e')){_0x403c6b[_0x9b4a('0x1f')]=_0x2a78d7[_0x9b4a('0xe')][0x0][_0x9b4a('0x11')];}else{_0x403c6b[_0x9b4a('0x1f')]=_0x403c6b[_0x9b4a('0x10')];_0x403c6b[_0x9b4a('0x1a')]=_0x403c6b[_0x9b4a('0x20')];}logger[_0x9b4a('0x12')]('['+[_0x4f2135[_0x9b4a('0x13')]()]+_0x9b4a('0x21'),_0x403c6b);_0xbbe528(_0x403c6b);})[_0x9b4a('0x15')](function(_0x1bc3bc){logger[_0x9b4a('0x16')]('['+[_0x4f2135[_0x9b4a('0x13')]()]+']',_0x1bc3bc['message']);_0x7eb82f(_0x1bc3bc[_0x9b4a('0x17')]);});}else{logger[_0x9b4a('0x12')]('['+[_0x4f2135[_0x9b4a('0x13')]()]+_0x9b4a('0x22'));_0x403c6b[_0x9b4a('0x1f')]=_0x403c6b['adminId'];_0x403c6b[_0x9b4a('0x1a')]=_0x403c6b['adminEmail'];_0xbbe528(_0x403c6b);}});};}function createEndUser(_0x512a29,_0x1a7867,_0x374e6d,_0x21b8a1,_0x126885){logger[_0x9b4a('0x12')]('['+[_0x512a29['toUpperCase']()]+_0x9b4a('0x23'),_0x374e6d);return new Promise(function(_0x138eb8,_0x480890){var _0x315a27={'method':_0x9b4a('0x24'),'uri':_0x21b8a1+'sys_user?'+_0x126885,'body':{'user_name':_0x374e6d[_0x9b4a('0x25')],'roles':_0x9b4a('0x26'),'first_name':_0x374e6d['endUserNumber'],'active':'true','date_format':'System','phone':_0x374e6d[_0x9b4a('0x25')]},'auth':_0x1a7867,'json':!![]};return rp(_0x315a27)[_0x9b4a('0xd')](function(_0x3ee9f8){logger[_0x9b4a('0x12')]('['+[_0x512a29[_0x9b4a('0x13')]()]+_0x9b4a('0x27'),_0x3ee9f8[_0x9b4a('0xe')]);_0x374e6d[_0x9b4a('0x28')]=_0x3ee9f8[_0x9b4a('0xe')]['sys_id'];_0x138eb8(_0x374e6d);})['catch'](function(_0xd5e755){logger['error']('['+[_0x512a29[_0x9b4a('0x13')]()]+']',_0xd5e755[_0x9b4a('0x17')]);_0x480890(_0xd5e755[_0x9b4a('0x17')]);});});}function getEndUser(_0x282ea9,_0x1f9761,_0x554972,_0x5195de,_0x5a279b){return function(_0x2f566a){logger[_0x9b4a('0x12')]('['+[_0x282ea9['toUpperCase']()]+_0x9b4a('0x29'),_0x2f566a);return new Promise(function(_0xf02b54,_0x1a5694){var _0xc4b006={'method':'GET','uri':_0x554972+_0x9b4a('0x2a')+_0x2f566a['endUserNumber']+'&'+_0x5195de+'&'+_0x5a279b,'auth':_0x1f9761,'json':!![]};return rp(_0xc4b006)[_0x9b4a('0xd')](function(_0x50b783){if(_0x50b783[_0x9b4a('0xe')][_0x9b4a('0xf')]>0x0){_0x2f566a[_0x9b4a('0x28')]=_0x50b783[_0x9b4a('0xe')][0x0][_0x9b4a('0x11')];logger[_0x9b4a('0x12')]('['+[_0x282ea9[_0x9b4a('0x13')]()]+_0x9b4a('0x2b'),_0x2f566a);_0xf02b54(_0x2f566a);}else{return createEndUser(_0x282ea9,_0x1f9761,_0x2f566a,_0x554972,_0x5195de)[_0x9b4a('0xd')](function(_0x23a1a0){logger[_0x9b4a('0x12')]('['+[_0x282ea9['toUpperCase']()]+_0x9b4a('0x2c'),_0x23a1a0);_0xf02b54(_0x23a1a0);});}})[_0x9b4a('0x15')](function(_0x29d8cd){logger['error']('['+[_0x282ea9[_0x9b4a('0x13')]()]+']',_0x29d8cd[_0x9b4a('0x17')]);_0x1a5694(_0x29d8cd[_0x9b4a('0x17')]);});});};}function getCustomFields(_0x3eea9c,_0x1433fa){var _0x42a68d={};if(_0x3eea9c['length']>0x0){_[_0x9b4a('0x2d')](_0x3eea9c,function(_0x1f701d){if(_[_0x9b4a('0x2e')]([_0x9b4a('0x2f'),_0x9b4a('0x30')],_0x1f701d[_0x9b4a('0x31')])&&_0x1f701d[_0x9b4a('0x32')]&&!_0x1f701d[_0x9b4a('0x33')]){_0x42a68d[_0x1f701d['nameField']['toLowerCase']()]=_0x1f701d['content'][_0x9b4a('0x34')]();}else if(_['includes']([_0x9b4a('0x2f'),'picklist'],_0x1f701d[_0x9b4a('0x31')])&&_0x1f701d[_0x9b4a('0x35')]&&_0x1f701d[_0x9b4a('0x33')]){_0x42a68d[_0x1f701d[_0x9b4a('0x35')][_0x9b4a('0x36')]()]=_0x1f701d['content'][_0x9b4a('0x34')]();}else if(_0x1f701d['type']===_0x9b4a('0x37')&&_0x1f701d[_0x9b4a('0x38')]&&_0x1f701d[_0x9b4a('0x35')]&&_0x1f701d[_0x9b4a('0x33')]){_0x42a68d[_0x1f701d[_0x9b4a('0x35')]['toLowerCase']()]=_0x1433fa[_0x1f701d['variableName']][_0x9b4a('0x34')]();}else if(_0x1f701d[_0x9b4a('0x31')]===_0x9b4a('0x39')&&_0x1f701d[_0x9b4a('0x3a')]&&_0x1f701d['Variable'][_0x9b4a('0x3b')]&&_0x1f701d[_0x9b4a('0x35')]&&_0x1f701d[_0x9b4a('0x33')]){_0x42a68d[_0x1f701d[_0x9b4a('0x35')][_0x9b4a('0x36')]()]=_0x1433fa[_0x1f701d[_0x9b4a('0x3a')][_0x9b4a('0x3b')][_0x9b4a('0x36')]()][_0x9b4a('0x34')]();}});}return _0x42a68d;}function getTicket(_0xf2e5f7,_0x102b20,_0x5328c6,_0x118e25,_0x25bab2,_0x56ca06){return function(_0xd8fb26){logger[_0x9b4a('0x12')]('['+[_0xf2e5f7['toUpperCase']()]+']\x20getTicket\x20input\x20crm',_0xd8fb26);return new Promise(function(_0x3f1c9b,_0x112645){var _0xc7cbcf=_0xf2e5f7['toLowerCase']()===_0x9b4a('0x3c')?_0xd8fb26[_0x9b4a('0x1f')]:_0xd8fb26[_0x9b4a('0x28')];var _0x216f86={'method':_0x9b4a('0x24'),'uri':_0x5328c6+'incident'+'?'+_0x56ca06,'body':Object[_0x9b4a('0x3d')]({},{'active':'true','caller_id':_0xc7cbcf,'assigned_to':_0xd8fb26['userId'],'short_description':intUtil[_0x9b4a('0x3e')](_0x118e25[_0x9b4a('0x3f')],_0x25bab2,'\x20'),'description':intUtil[_0x9b4a('0x3e')](_0x118e25[_0x9b4a('0x40')],_0x25bab2,'\x0a')},getCustomFields(_0x118e25[_0x9b4a('0x41')],_0x25bab2)),'auth':_0x102b20,'json':!![]};return rp(_0x216f86)[_0x9b4a('0xd')](function(_0x5912ae){logger[_0x9b4a('0x12')]('['+[_0xf2e5f7[_0x9b4a('0x13')]()]+_0x9b4a('0x42'),_0x5912ae[_0x9b4a('0xe')]);_0xd8fb26[_0x9b4a('0x43')]=_0x5912ae[_0x9b4a('0xe')]['sys_id'];_0xd8fb26['ticketNumber']=_0x5912ae[_0x9b4a('0xe')][_0x9b4a('0x44')];logger[_0x9b4a('0x12')]('['+[_0xf2e5f7[_0x9b4a('0x13')]()]+']\x20getTicket\x20crm',_0xd8fb26);_0x3f1c9b(_0xd8fb26);})[_0x9b4a('0x15')](function(_0x34db45){logger['error']('['+[_0xf2e5f7[_0x9b4a('0x13')]()]+']',_0x34db45[_0x9b4a('0x17')]);_0x112645(_0x34db45[_0x9b4a('0x17')]);});});};}function createRemoteTag(_0x523e69,_0xa4098e,_0x21d73f,_0x3d3434){return new Promise(function(_0xf92d2b,_0x1d0bd7){var _0x1c46d0={'method':_0x9b4a('0x24'),'uri':_0x21d73f+_0x9b4a('0x45')+'?'+_0x3d3434,'body':{'short_description':_0x523e69,'global':!![],'active':!![],'name':_0x523e69},'auth':_0xa4098e,'json':!![]};return rp(_0x1c46d0)[_0x9b4a('0xd')](function(_0x2d443e){var _0x45a608=_0x2d443e['result'][_0x9b4a('0x11')];_0xf92d2b(_0x45a608);});});}function getRemoteTag(_0x5949de,_0x4a5bbe,_0x4c3e12,_0x5cd556,_0x4a8ead){return new Promise(function(_0x492552,_0x6fcb1e){var _0x3b054b={'method':_0x9b4a('0xb'),'uri':_0x4c3e12+_0x9b4a('0x45')+_0x9b4a('0x46')+_0x5949de+'&'+_0x5cd556,'auth':_0x4a5bbe,'json':!![]};return rp(_0x3b054b)[_0x9b4a('0xd')](function(_0x177d21){if(_0x177d21['result'][_0x9b4a('0xf')]>0x0){var _0x7d6382=_0x177d21['result'][0x0][_0x9b4a('0x11')];_0x492552(_0x7d6382);}else{return createRemoteTag(_0x5949de,_0x4a5bbe,_0x4c3e12,_0x5cd556)[_0x9b4a('0xd')](function(_0xe0432e){_0x492552(_0xe0432e);});}});});}function assignTagToIncident(_0x5ac2b3,_0x130ff4,_0xc1f299,_0x5eb5cc,_0x4ea944){return new Promise(function(_0x4cec39,_0x9c14d9){var _0x1289d5={'method':_0x9b4a('0x24'),'uri':_0xc1f299+_0x9b4a('0x47')+'?'+_0x4ea944,'body':{'label':_0x5ac2b3,'table':'incident','id_type':_0x9b4a('0x48'),'table_key':_0x5eb5cc['ticketId'],'title':'Incident\x20-\x20'+_0x5eb5cc['ticketNumber'],'id_display':_0x5eb5cc[_0x9b4a('0x49')]},'auth':_0x130ff4,'json':!![]};return rp(_0x1289d5)[_0x9b4a('0xd')](function(_0x3dbf4e){_0x4cec39();})[_0x9b4a('0x15')](function(){_0x4cec39();});});}function manageTags(_0x588947,_0x10c90c,_0x21e285,_0x4f6471,_0x5e49e8,_0x388453,_0x4dc1f6){return new Promise(function(_0x2f165,_0x38793d){var _0x3c2294=[];_0x10c90c[_0x9b4a('0x2d')](function(_0x58e539){_0x3c2294[_0x9b4a('0x4a')](getRemoteTag(_0x58e539,_0x21e285,_0x4f6471,_0x388453,_0x4dc1f6));});return Promise[_0x9b4a('0x4b')](_0x3c2294)[_0x9b4a('0xd')](function(_0x113171){if(_0x113171[_0x9b4a('0xf')]){logger[_0x9b4a('0x12')]('['+[_0x588947[_0x9b4a('0x13')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x113171);var _0x35b4fc=[];_0x113171[_0x9b4a('0x2d')](function(_0x2e56f0){_0x35b4fc[_0x9b4a('0x4a')](assignTagToIncident(_0x2e56f0,_0x21e285,_0x4f6471,_0x5e49e8,_0x388453));});return Promise[_0x9b4a('0x4b')](_0x35b4fc)[_0x9b4a('0xd')](function(){_0x2f165();})[_0x9b4a('0x15')](function(){_0x2f165();});}else{_0x2f165();}});});}function getTags(_0x40bc60,_0xd28731,_0x15a3bd,_0x545e92,_0x46a261,_0x587aef){return function(_0x3e2d3f){return new Promise(function(_0x3e2914,_0x2d16a6){var _0x23ad31=[];var _0x2ca08c=_0x545e92[_0x9b4a('0x4c')];if(_0x2ca08c&&_0x2ca08c[_0x9b4a('0xf')]>0x0){_0x23ad31=_[_0x9b4a('0x4d')](_0x2ca08c,_0x9b4a('0x3b'));}if(_0x23ad31[_0x9b4a('0xf')]>0x0){return manageTags(_0x40bc60,_0x23ad31,_0xd28731,_0x15a3bd,_0x3e2d3f,_0x46a261,_0x587aef)[_0x9b4a('0xd')](function(){_0x3e2914(_0x3e2d3f);});}else{_0x3e2914(_0x3e2d3f);}});};}function emit(_0x51fd48,_0x5080b0,_0x55ed9c){var _0x3f472d=_0x9b4a('0x4e')+_0x9b4a('0x4f')+_0x9b4a('0x50')+'%255EORDERBYDESCnumber';var _0x14dd52={'uri':_0x51fd48+_0x9b4a('0x51')+_0x55ed9c+_0x3f472d};io['to'](util[_0x9b4a('0x52')](_0x9b4a('0x53'),_0x5080b0))[_0x9b4a('0x54')]('trigger:browser:url',_0x14dd52);}exports['cs']=function(_0x55c3a8,_0x1c574b,_0x5a2ac0,_0x2c3943,_0xc11227,_0x534fd9,_0x116894,_0x18fdd9){var _0x49c07f={};var _0x198dee={'user':_0x534fd9[_0x9b4a('0x55')],'pass':_0x534fd9[_0x9b4a('0x56')]};var _0x246687=_0x9b4a('0x57');var _0x27a913=_0x9b4a('0x58');_0x534fd9[_0x9b4a('0x59')]=intUtil[_0x9b4a('0x5a')](_0x534fd9['remoteUri']);_0x534fd9[_0x9b4a('0x5b')]=intUtil[_0x9b4a('0x5a')](_0x534fd9[_0x9b4a('0x5b')]);var _0x2d106e=util[_0x9b4a('0x52')]('%s/api/now/table/',_0x534fd9['remoteUri']);_0x49c07f[_0x9b4a('0x1a')]=!_[_0x9b4a('0x5c')](_0x2c3943)?_0x2c3943[_0x9b4a('0x5d')]:null;_0x49c07f['adminEmail']=_0x534fd9[_0x9b4a('0x5d')];_0x49c07f[_0x9b4a('0x25')]=_0x18fdd9[_0x9b4a('0x36')]()===_0x9b4a('0x3c')?_0x1c574b[_0x9b4a('0x5e')]:_0x1c574b['calleridnum'];_0x49c07f[_0x9b4a('0x5f')]=_0x18fdd9===_0x9b4a('0x60')||_0x18fdd9===_0x9b4a('0x61')?'queue':_0x9b4a('0x3c');var _0x40546e=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x534fd9[_0x9b4a('0x5b')],_0x1c574b[_0x9b4a('0x62')],md5(_0x1c574b[_0x9b4a('0x62')]));if(_0xc11227&&_0xc11227[_0x9b4a('0x63')]){logger[_0x9b4a('0x12')]('[QUEUE]','Recording\x20is\x20enabled!');_0x1c574b[_0x9b4a('0x64')]=_0x40546e;}else if(_0x116894&&_0x116894[_0x9b4a('0x65')]&&_0x116894[_0x9b4a('0x65')]!==_0x9b4a('0x66')){logger[_0x9b4a('0x12')](_0x9b4a('0x67'),_0x9b4a('0x68'));_0x1c574b['recordingURL']=_0x40546e;}else{_0x1c574b[_0x9b4a('0x64')]='';}return getAdminUser(_0x18fdd9,_0x198dee,_0x49c07f,_0x2d106e,_0x27a913,_0x246687)['then'](getUser(_0x18fdd9,_0x198dee,_0x2d106e,_0x27a913,_0x246687))[_0x9b4a('0xd')](getEndUser(_0x18fdd9,_0x198dee,_0x2d106e,_0x27a913,_0x246687))[_0x9b4a('0xd')](getTicket(_0x18fdd9,_0x198dee,_0x2d106e,_0x5a2ac0,_0x1c574b,_0x27a913))[_0x9b4a('0xd')](function(_0xd3ebef){logger[_0x9b4a('0x12')](util['format'](_0x9b4a('0x69'),_0xd3ebef['ticketId']));logger[_0x9b4a('0x12')](util[_0x9b4a('0x52')](_0x9b4a('0x6a'),_0x18fdd9));if(_0x18fdd9!==_0x9b4a('0x61')){logger['info']('['+[_0x18fdd9[_0x9b4a('0x13')]()]+']',_0x9b4a('0x6b'));emit(_0x534fd9[_0x9b4a('0x59')],_0x2c3943['name'],_0xd3ebef[_0x9b4a('0x43')]);}})[_0x9b4a('0x15')](function(_0x175d9b){logger[_0x9b4a('0x16')]('['+[_0x18fdd9['toUpperCase']()]+_0x9b4a('0x6c'),util[_0x9b4a('0x6d')](_0x175d9b,{'showHidden':!![],'depth':null}));});};