Built motion from commit (unavailable).|2.5.30
[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 _0x627e=['variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','ticketId','Incident\x20-\x20','ticketNumber','all','push','Tags','%255EORDERBYDESCnumber','format','user:%s','emit','trigger:browser:url','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','destcalleridnum','calleridnum','unmanaged','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','],\x20getUser\x20rp\x20obj','true','userId','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','System','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','customField','toLowerCase','toString','includes','string','idField'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x627e,0x14a));var _0xe627=function(_0x14d9ed,_0x318a17){_0x14d9ed=_0x14d9ed-0x0;var _0x3885e2=_0x627e[_0x14d9ed];return _0x3885e2;};'use strict';var _=require(_0xe627('0x0'));var Promise=require(_0xe627('0x1'));var rp=require(_0xe627('0x2'));var util=require(_0xe627('0x3'));var md5=require(_0xe627('0x4'));var Redis=require('ioredis');var intUtil=require(_0xe627('0x5'));var config=require(_0xe627('0x6'));var logger=require(_0xe627('0x7'))('servicenow');config['redis']=_['defaults'](config[_0xe627('0x8')],{'host':_0xe627('0x9'),'port':0x18eb});var io=require(_0xe627('0xa'))(new Redis(config[_0xe627('0x8')]));function getAdminUser(_0xd5016e,_0xe065b,_0x4bae52,_0x3f2948,_0x4c9bf9,_0x56549e){return new Promise(function(_0x4411c0,_0x952c23){var _0x5e1f00={'method':'GET','uri':_0x3f2948+_0xe627('0xb')+'&'+_0x4c9bf9+'&'+_0x56549e,'auth':_0xe065b,'json':!![]};return rp(_0x5e1f00)[_0xe627('0xc')](function(_0x1a3e35){if(_0x1a3e35[_0xe627('0xd')][_0xe627('0xe')]>0x0){_0x4bae52[_0xe627('0xf')]=_0x1a3e35[_0xe627('0xd')][0x0][_0xe627('0x10')];}logger[_0xe627('0x11')]('['+[_0xd5016e['toUpperCase']()]+_0xe627('0x12'),_0x4bae52);_0x4411c0(_0x4bae52);})[_0xe627('0x13')](function(_0x9f7eef){logger['error']('['+[_0xd5016e[_0xe627('0x14')]()]+']',_0x9f7eef[_0xe627('0x15')]);_0x952c23(_0x9f7eef[_0xe627('0x15')]);});});}function getUser(_0x119d9c,_0x62896f,_0x6a9a15,_0x271325,_0x54720a){return function(_0x241544){logger[_0xe627('0x11')]('['+[_0x119d9c[_0xe627('0x14')]()]+_0xe627('0x16'),_0x241544);return new Promise(function(_0x403982,_0x30da02){if(intUtil[_0xe627('0x17')](_0x241544[_0xe627('0x18')])){var _0x538b22={'method':_0xe627('0x19'),'uri':_0x6a9a15+'sys_user?sysparm_query=email%3D'+_0x241544[_0xe627('0x18')]+'&'+_0x271325+'&'+_0x54720a,'auth':_0x62896f,'json':!![]};logger['info']('['+[_0x119d9c['toUpperCase']()]+_0xe627('0x1a'),_0x538b22);return rp(_0x538b22)['then'](function(_0x2b2c62){logger[_0xe627('0x11')]('['+[_0x119d9c['toUpperCase']()]+'],\x20getUser\x20entity',_0x2b2c62);if(_0x2b2c62['result'][_0xe627('0xe')]>0x0&&String(_0x2b2c62[_0xe627('0xd')][0x0]['active'])===_0xe627('0x1b')){_0x241544[_0xe627('0x1c')]=_0x2b2c62['result'][0x0][_0xe627('0x10')];}else{_0x241544[_0xe627('0x1c')]=_0x241544['adminId'];_0x241544[_0xe627('0x18')]=_0x241544[_0xe627('0x1d')];}logger[_0xe627('0x11')]('['+[_0x119d9c['toUpperCase']()]+_0xe627('0x1e'),_0x241544);_0x403982(_0x241544);})[_0xe627('0x13')](function(_0x1a5081){logger[_0xe627('0x1f')]('['+[_0x119d9c['toUpperCase']()]+']',_0x1a5081[_0xe627('0x15')]);_0x30da02(_0x1a5081[_0xe627('0x15')]);});}else{logger[_0xe627('0x11')]('['+[_0x119d9c[_0xe627('0x14')]()]+_0xe627('0x20'));_0x241544[_0xe627('0x1c')]=_0x241544[_0xe627('0xf')];_0x241544[_0xe627('0x18')]=_0x241544[_0xe627('0x1d')];_0x403982(_0x241544);}});};}function createEndUser(_0x58c728,_0x5ad327,_0x5aeba1,_0x5cd7c8,_0x1e0bd7){logger[_0xe627('0x11')]('['+[_0x58c728['toUpperCase']()]+_0xe627('0x21'),_0x5aeba1);return new Promise(function(_0x54029d,_0x23e934){var _0x498e1f={'method':_0xe627('0x22'),'uri':_0x5cd7c8+_0xe627('0x23')+_0x1e0bd7,'body':{'user_name':_0x5aeba1['endUserNumber'],'roles':_0xe627('0x24'),'first_name':_0x5aeba1['endUserNumber'],'active':_0xe627('0x1b'),'date_format':_0xe627('0x25'),'phone':_0x5aeba1[_0xe627('0x26')]},'auth':_0x5ad327,'json':!![]};return rp(_0x498e1f)[_0xe627('0xc')](function(_0x4098de){logger[_0xe627('0x11')]('['+[_0x58c728[_0xe627('0x14')]()]+_0xe627('0x27'),_0x4098de[_0xe627('0xd')]);_0x5aeba1[_0xe627('0x28')]=_0x4098de[_0xe627('0xd')]['sys_id'];_0x54029d(_0x5aeba1);})['catch'](function(_0x183fed){logger['error']('['+[_0x58c728[_0xe627('0x14')]()]+']',_0x183fed['message']);_0x23e934(_0x183fed['message']);});});}function getEndUser(_0x422451,_0x5cd337,_0x566161,_0x103c0b,_0x787408){return function(_0x55f001){logger['info']('['+[_0x422451['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x55f001);return new Promise(function(_0x2ff49c,_0x4c746b){var _0x39338c={'method':_0xe627('0x19'),'uri':_0x566161+'sys_user?sysparm_query=phone%3D'+_0x55f001[_0xe627('0x26')]+'&'+_0x103c0b+'&'+_0x787408,'auth':_0x5cd337,'json':!![]};return rp(_0x39338c)[_0xe627('0xc')](function(_0x59b645){if(_0x59b645[_0xe627('0xd')][_0xe627('0xe')]>0x0){_0x55f001[_0xe627('0x28')]=_0x59b645[_0xe627('0xd')][0x0][_0xe627('0x10')];logger[_0xe627('0x11')]('['+[_0x422451['toUpperCase']()]+_0xe627('0x29'),_0x55f001);_0x2ff49c(_0x55f001);}else{return createEndUser(_0x422451,_0x5cd337,_0x55f001,_0x566161,_0x103c0b)['then'](function(_0x26afc2){logger['info']('['+[_0x422451[_0xe627('0x14')]()]+_0xe627('0x2a'),_0x26afc2);_0x2ff49c(_0x26afc2);});}})[_0xe627('0x13')](function(_0x21a533){logger[_0xe627('0x1f')]('['+[_0x422451[_0xe627('0x14')]()]+']',_0x21a533[_0xe627('0x15')]);_0x4c746b(_0x21a533[_0xe627('0x15')]);});});};}function getCustomFields(_0x2119bb,_0x415a25){var _0x1744f5={};if(_0x2119bb[_0xe627('0xe')]>0x0){_[_0xe627('0x2b')](_0x2119bb,function(_0x5e6c80){if(_['includes'](['string','picklist'],_0x5e6c80['type'])&&_0x5e6c80['nameField']&&!_0x5e6c80[_0xe627('0x2c')]){_0x1744f5[_0x5e6c80['nameField'][_0xe627('0x2d')]()]=_0x5e6c80['content'][_0xe627('0x2e')]();}else if(_[_0xe627('0x2f')]([_0xe627('0x30'),'picklist'],_0x5e6c80['type'])&&_0x5e6c80[_0xe627('0x31')]&&_0x5e6c80['customField']){_0x1744f5[_0x5e6c80['idField'][_0xe627('0x2d')]()]=_0x5e6c80['content'][_0xe627('0x2e')]();}else if(_0x5e6c80['type']==='variable'&&_0x5e6c80[_0xe627('0x32')]&&_0x5e6c80[_0xe627('0x31')]&&_0x5e6c80[_0xe627('0x2c')]){_0x1744f5[_0x5e6c80['idField']['toLowerCase']()]=_0x415a25[_0x5e6c80[_0xe627('0x32')]]['toString']();}else if(_0x5e6c80['type']===_0xe627('0x33')&&_0x5e6c80[_0xe627('0x34')]&&_0x5e6c80[_0xe627('0x34')][_0xe627('0x35')]&&_0x5e6c80[_0xe627('0x31')]&&_0x5e6c80[_0xe627('0x2c')]){_0x1744f5[_0x5e6c80['idField'][_0xe627('0x2d')]()]=_0x415a25[_0x5e6c80[_0xe627('0x34')]['name']['toLowerCase']()][_0xe627('0x2e')]();}});}return _0x1744f5;}function getTicket(_0x42a7c0,_0x1f6ee5,_0x18bd41,_0x152076,_0x34d80a,_0x1ea340){return function(_0x4e0b50){logger[_0xe627('0x11')]('['+[_0x42a7c0['toUpperCase']()]+_0xe627('0x36'),_0x4e0b50);return new Promise(function(_0xcd19f5,_0x367a38){var _0x4c5185=_0x42a7c0[_0xe627('0x2d')]()==='outbound'?_0x4e0b50[_0xe627('0x1c')]:_0x4e0b50[_0xe627('0x28')];var _0x375e05={'method':_0xe627('0x22'),'uri':_0x18bd41+_0xe627('0x37')+'?'+_0x1ea340,'body':Object['assign']({},{'active':_0xe627('0x1b'),'caller_id':_0x4c5185,'assigned_to':_0x4e0b50[_0xe627('0x1c')],'short_description':intUtil[_0xe627('0x38')](_0x152076[_0xe627('0x39')],_0x34d80a,'\x20'),'description':intUtil[_0xe627('0x38')](_0x152076[_0xe627('0x3a')],_0x34d80a,'\x0a')},getCustomFields(_0x152076[_0xe627('0x3b')],_0x34d80a)),'auth':_0x1f6ee5,'json':!![]};return rp(_0x375e05)[_0xe627('0xc')](function(_0x2544d8){logger[_0xe627('0x11')]('['+[_0x42a7c0['toUpperCase']()]+_0xe627('0x3c'),_0x2544d8[_0xe627('0xd')]);_0x4e0b50['ticketId']=_0x2544d8[_0xe627('0xd')][_0xe627('0x10')];_0x4e0b50['ticketNumber']=_0x2544d8[_0xe627('0xd')][_0xe627('0x3d')];logger['info']('['+[_0x42a7c0[_0xe627('0x14')]()]+_0xe627('0x3e'),_0x4e0b50);_0xcd19f5(_0x4e0b50);})['catch'](function(_0x27a41f){logger['error']('['+[_0x42a7c0['toUpperCase']()]+']',_0x27a41f['message']);_0x367a38(_0x27a41f['message']);});});};}function createRemoteTag(_0x5ce19d,_0x256b65,_0x285229,_0x3a7f0d){return new Promise(function(_0x131250,_0x16eeff){var _0x69a54e={'method':'POST','uri':_0x285229+_0xe627('0x3f')+'?'+_0x3a7f0d,'body':{'short_description':_0x5ce19d,'global':!![],'active':!![],'name':_0x5ce19d},'auth':_0x256b65,'json':!![]};return rp(_0x69a54e)[_0xe627('0xc')](function(_0x579472){var _0x478d28=_0x579472['result'][_0xe627('0x10')];_0x131250(_0x478d28);});});}function getRemoteTag(_0x324b0b,_0x2aead5,_0x40e935,_0x375b8c,_0x33e43a){return new Promise(function(_0x14ba41,_0x890cbc){var _0x4d88d0={'method':_0xe627('0x19'),'uri':_0x40e935+'label'+_0xe627('0x40')+_0x324b0b+'&'+_0x375b8c,'auth':_0x2aead5,'json':!![]};return rp(_0x4d88d0)['then'](function(_0x1f1413){if(_0x1f1413[_0xe627('0xd')][_0xe627('0xe')]>0x0){var _0xe64a20=_0x1f1413[_0xe627('0xd')][0x0][_0xe627('0x10')];_0x14ba41(_0xe64a20);}else{return createRemoteTag(_0x324b0b,_0x2aead5,_0x40e935,_0x375b8c)[_0xe627('0xc')](function(_0x36c13e){_0x14ba41(_0x36c13e);});}});});}function assignTagToIncident(_0x1f0d6c,_0x480ac3,_0xe4c06d,_0x45cc2e,_0x3c19ab){return new Promise(function(_0x2e32ea,_0x1d81af){var _0x5cbaa4={'method':'POST','uri':_0xe4c06d+_0xe627('0x41')+'?'+_0x3c19ab,'body':{'label':_0x1f0d6c,'table':_0xe627('0x37'),'id_type':'Incident','table_key':_0x45cc2e[_0xe627('0x42')],'title':_0xe627('0x43')+_0x45cc2e[_0xe627('0x44')],'id_display':_0x45cc2e[_0xe627('0x44')]},'auth':_0x480ac3,'json':!![]};return rp(_0x5cbaa4)[_0xe627('0xc')](function(_0x34aec0){_0x2e32ea();})[_0xe627('0x13')](function(){_0x2e32ea();});});}function manageTags(_0x25dccf,_0x4bc086,_0x26e6a3,_0x4f5595,_0x3601ca,_0x35ef04,_0x2a2c73){return new Promise(function(_0x24c680,_0x4bf6ac){var _0x4c04cc=[];_0x4bc086[_0xe627('0x2b')](function(_0x266b11){_0x4c04cc['push'](getRemoteTag(_0x266b11,_0x26e6a3,_0x4f5595,_0x35ef04,_0x2a2c73));});return Promise[_0xe627('0x45')](_0x4c04cc)[_0xe627('0xc')](function(_0x5a81a8){if(_0x5a81a8[_0xe627('0xe')]){logger[_0xe627('0x11')]('['+[_0x25dccf['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x5a81a8);var _0x364496=[];_0x5a81a8['forEach'](function(_0x43e247){_0x364496[_0xe627('0x46')](assignTagToIncident(_0x43e247,_0x26e6a3,_0x4f5595,_0x3601ca,_0x35ef04));});return Promise[_0xe627('0x45')](_0x364496)['then'](function(){_0x24c680();})[_0xe627('0x13')](function(){_0x24c680();});}else{_0x24c680();}});});}function getTags(_0x360aa0,_0x38384f,_0x4521ab,_0x54ffa6,_0x57e4fd,_0x17b510){return function(_0x44e9e3){return new Promise(function(_0x5904e9,_0x1fdb0f){var _0x48236e=[];var _0x5c281f=_0x54ffa6[_0xe627('0x47')];if(_0x5c281f&&_0x5c281f[_0xe627('0xe')]>0x0){_0x48236e=_['map'](_0x5c281f,'name');}if(_0x48236e[_0xe627('0xe')]>0x0){return manageTags(_0x360aa0,_0x48236e,_0x38384f,_0x4521ab,_0x44e9e3,_0x57e4fd,_0x17b510)[_0xe627('0xc')](function(){_0x5904e9(_0x44e9e3);});}else{_0x5904e9(_0x44e9e3);}});};}function emit(_0x99536f,_0x1bd300,_0x421758){var _0x17d03b='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xe627('0x48');var _0x308bb2={'uri':_0x99536f+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x421758+_0x17d03b};io['to'](util[_0xe627('0x49')](_0xe627('0x4a'),_0x1bd300))[_0xe627('0x4b')](_0xe627('0x4c'),_0x308bb2);}exports['cs']=function(_0x51258f,_0xf62c81,_0xba58be,_0x414403,_0x5de48d,_0x574837,_0x36b75a,_0x18b504){var _0x1bef89={};var _0x4c6099={'user':_0x574837['username'],'pass':_0x574837['password']};var _0x58cbd8='sysparm_limit=1';var _0x45d2c2=_0xe627('0x4d');_0x574837[_0xe627('0x4e')]=intUtil[_0xe627('0x4f')](_0x574837[_0xe627('0x4e')]);_0x574837[_0xe627('0x50')]=intUtil['stripTrailingSlash'](_0x574837[_0xe627('0x50')]);var _0x13979f=util[_0xe627('0x49')](_0xe627('0x51'),_0x574837[_0xe627('0x4e')]);_0x1bef89['userEmail']=!_['isNil'](_0x414403)?_0x414403['email']:null;_0x1bef89[_0xe627('0x1d')]=_0x574837[_0xe627('0x52')];_0x1bef89['endUserNumber']=_0x18b504[_0xe627('0x2d')]()===_0xe627('0x53')?_0xf62c81[_0xe627('0x54')]:_0xf62c81[_0xe627('0x55')];_0x1bef89['callDirection']=_0x18b504==='queue'||_0x18b504===_0xe627('0x56')?'queue':_0xe627('0x53');var _0x388b23=util[_0xe627('0x49')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x574837['serverUrl'],_0xf62c81[_0xe627('0x57')],md5(_0xf62c81['uniqueid']));if(_0x5de48d&&_0x5de48d['monitor_format']){logger['info'](_0xe627('0x58'),_0xe627('0x59'));_0xf62c81['recordingURL']=_0x388b23;}else if(_0x36b75a&&_0x36b75a[_0xe627('0x5a')]&&_0x36b75a[_0xe627('0x5a')]!=='none'){logger[_0xe627('0x11')](_0xe627('0x5b'),_0xe627('0x59'));_0xf62c81[_0xe627('0x5c')]=_0x388b23;}else{_0xf62c81[_0xe627('0x5c')]='';}return getAdminUser(_0x18b504,_0x4c6099,_0x1bef89,_0x13979f,_0x45d2c2,_0x58cbd8)[_0xe627('0xc')](getUser(_0x18b504,_0x4c6099,_0x13979f,_0x45d2c2,_0x58cbd8))['then'](getEndUser(_0x18b504,_0x4c6099,_0x13979f,_0x45d2c2,_0x58cbd8))[_0xe627('0xc')](getTicket(_0x18b504,_0x4c6099,_0x13979f,_0xba58be,_0xf62c81,_0x45d2c2))[_0xe627('0xc')](function(_0x4a69dc){logger[_0xe627('0x11')](util[_0xe627('0x49')]('The\x20ticket\x20ID\x20is:\x20%s',_0x4a69dc[_0xe627('0x42')]));logger[_0xe627('0x11')](util[_0xe627('0x49')]('call\x20direction:\x20%s',_0x18b504));if(_0x18b504!=='unmanaged'){logger[_0xe627('0x11')]('['+[_0x18b504[_0xe627('0x14')]()]+']',_0xe627('0x5d'));emit(_0x574837[_0xe627('0x4e')],_0x414403[_0xe627('0x35')],_0x4a69dc[_0xe627('0x42')]);}})[_0xe627('0x13')](function(_0x146180){logger[_0xe627('0x1f')]('['+[_0x18b504[_0xe627('0x14')]()]+_0xe627('0x5e'),util['inspect'](_0x146180,{'showHidden':!![],'depth':null}));});};