31ca90adb588ae32ab0f6854246e082b00b69d2b
[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 _0x5fdc=['picklist','type','nameField','customField','toString','idField','content','variable','toLowerCase','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','getString','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%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','format','user:%s','emit','username','password','sysparm_display_value=true','stripTrailingSlash','serverUrl','%s/api/now/table/','remoteUri','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','true','userId','sys_id','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x5fdc,0x127));var _0xc5fd=function(_0x481b7d,_0x33d662){_0x481b7d=_0x481b7d-0x0;var _0x5a0db5=_0x5fdc[_0x481b7d];return _0x5a0db5;};'use strict';var _=require(_0xc5fd('0x0'));var Promise=require(_0xc5fd('0x1'));var rp=require(_0xc5fd('0x2'));var util=require(_0xc5fd('0x3'));var md5=require(_0xc5fd('0x4'));var Redis=require(_0xc5fd('0x5'));var intUtil=require(_0xc5fd('0x6'));var config=require(_0xc5fd('0x7'));var logger=require(_0xc5fd('0x8'))(_0xc5fd('0x9'));config[_0xc5fd('0xa')]=_[_0xc5fd('0xb')](config[_0xc5fd('0xa')],{'host':_0xc5fd('0xc'),'port':0x18eb});var io=require(_0xc5fd('0xd'))(new Redis(config['redis']));function getAdminUser(_0x5d86e5,_0x493389,_0x224801,_0x46bce3,_0x158e58,_0x45c91f){return new Promise(function(_0x4e6d35,_0x4e1e94){var _0x3442dd={'method':_0xc5fd('0xe'),'uri':_0x46bce3+_0xc5fd('0xf')+'&'+_0x158e58+'&'+_0x45c91f,'auth':_0x493389,'json':!![]};return rp(_0x3442dd)[_0xc5fd('0x10')](function(_0x468f58){if(_0x468f58[_0xc5fd('0x11')]['length']>0x0){_0x224801[_0xc5fd('0x12')]=_0x468f58['result'][0x0]['sys_id'];}logger[_0xc5fd('0x13')]('['+[_0x5d86e5[_0xc5fd('0x14')]()]+_0xc5fd('0x15'),_0x224801);_0x4e6d35(_0x224801);})[_0xc5fd('0x16')](function(_0x2e77a8){logger[_0xc5fd('0x17')]('['+[_0x5d86e5[_0xc5fd('0x14')]()]+']',_0x2e77a8[_0xc5fd('0x18')]);_0x4e1e94(_0x2e77a8['message']);});});}function getUser(_0x124651,_0x103c3d,_0x2221da,_0x3404e0,_0x4d3636){return function(_0x4fd364){logger['info']('['+[_0x124651['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x4fd364);return new Promise(function(_0x35a9d0,_0x430e52){if(intUtil[_0xc5fd('0x19')](_0x4fd364[_0xc5fd('0x1a')])){var _0x2ee392={'method':_0xc5fd('0xe'),'uri':_0x2221da+_0xc5fd('0x1b')+_0x4fd364['userEmail']+'&'+_0x3404e0+'&'+_0x4d3636,'auth':_0x103c3d,'json':!![]};logger[_0xc5fd('0x13')]('['+[_0x124651[_0xc5fd('0x14')]()]+_0xc5fd('0x1c'),_0x2ee392);return rp(_0x2ee392)[_0xc5fd('0x10')](function(_0x3b3093){logger['info']('['+[_0x124651[_0xc5fd('0x14')]()]+_0xc5fd('0x1d'),_0x3b3093);if(_0x3b3093[_0xc5fd('0x11')][_0xc5fd('0x1e')]>0x0&&String(_0x3b3093['result'][0x0]['active'])===_0xc5fd('0x1f')){_0x4fd364[_0xc5fd('0x20')]=_0x3b3093[_0xc5fd('0x11')][0x0][_0xc5fd('0x21')];}else{_0x4fd364[_0xc5fd('0x20')]=_0x4fd364[_0xc5fd('0x12')];_0x4fd364['userEmail']=_0x4fd364[_0xc5fd('0x22')];}logger[_0xc5fd('0x13')]('['+[_0x124651[_0xc5fd('0x14')]()]+_0xc5fd('0x23'),_0x4fd364);_0x35a9d0(_0x4fd364);})[_0xc5fd('0x16')](function(_0x4020af){logger[_0xc5fd('0x17')]('['+[_0x124651['toUpperCase']()]+']',_0x4020af[_0xc5fd('0x18')]);_0x430e52(_0x4020af['message']);});}else{logger[_0xc5fd('0x13')]('['+[_0x124651[_0xc5fd('0x14')]()]+_0xc5fd('0x24'));_0x4fd364[_0xc5fd('0x20')]=_0x4fd364['adminId'];_0x4fd364[_0xc5fd('0x1a')]=_0x4fd364[_0xc5fd('0x22')];_0x35a9d0(_0x4fd364);}});};}function createEndUser(_0x19c4a0,_0x42cbf0,_0x19df33,_0x209975,_0x541c12){logger[_0xc5fd('0x13')]('['+[_0x19c4a0['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x19df33);return new Promise(function(_0x12a962,_0x165ee2){var _0x39b21a={'method':_0xc5fd('0x25'),'uri':_0x209975+_0xc5fd('0x26')+_0x541c12,'body':{'user_name':_0x19df33[_0xc5fd('0x27')],'roles':_0xc5fd('0x28'),'first_name':_0x19df33[_0xc5fd('0x27')],'active':'true','date_format':_0xc5fd('0x29'),'phone':_0x19df33[_0xc5fd('0x27')]},'auth':_0x42cbf0,'json':!![]};return rp(_0x39b21a)[_0xc5fd('0x10')](function(_0x3b9699){logger[_0xc5fd('0x13')]('['+[_0x19c4a0[_0xc5fd('0x14')]()]+_0xc5fd('0x2a'),_0x3b9699[_0xc5fd('0x11')]);_0x19df33[_0xc5fd('0x2b')]=_0x3b9699[_0xc5fd('0x11')][_0xc5fd('0x21')];_0x12a962(_0x19df33);})[_0xc5fd('0x16')](function(_0x4937a8){logger[_0xc5fd('0x17')]('['+[_0x19c4a0[_0xc5fd('0x14')]()]+']',_0x4937a8[_0xc5fd('0x18')]);_0x165ee2(_0x4937a8[_0xc5fd('0x18')]);});});}function getEndUser(_0x308ba4,_0x3a003b,_0x3fefbe,_0xb719be,_0x358883){return function(_0x545bfc){logger[_0xc5fd('0x13')]('['+[_0x308ba4[_0xc5fd('0x14')]()]+_0xc5fd('0x2c'),_0x545bfc);return new Promise(function(_0xc2c90b,_0x5fe679){var _0x52267e={'method':_0xc5fd('0xe'),'uri':_0x3fefbe+'sys_user?sysparm_query=phone%3D'+_0x545bfc[_0xc5fd('0x27')]+'&'+_0xb719be+'&'+_0x358883,'auth':_0x3a003b,'json':!![]};return rp(_0x52267e)[_0xc5fd('0x10')](function(_0x57f3fc){if(_0x57f3fc[_0xc5fd('0x11')]['length']>0x0){_0x545bfc[_0xc5fd('0x2b')]=_0x57f3fc[_0xc5fd('0x11')][0x0][_0xc5fd('0x21')];logger['info']('['+[_0x308ba4[_0xc5fd('0x14')]()]+_0xc5fd('0x2d'),_0x545bfc);_0xc2c90b(_0x545bfc);}else{return createEndUser(_0x308ba4,_0x3a003b,_0x545bfc,_0x3fefbe,_0xb719be)['then'](function(_0x2e20e0){logger[_0xc5fd('0x13')]('['+[_0x308ba4[_0xc5fd('0x14')]()]+_0xc5fd('0x2e'),_0x2e20e0);_0xc2c90b(_0x2e20e0);});}})[_0xc5fd('0x16')](function(_0x33f669){logger['error']('['+[_0x308ba4[_0xc5fd('0x14')]()]+']',_0x33f669[_0xc5fd('0x18')]);_0x5fe679(_0x33f669[_0xc5fd('0x18')]);});});};}function getCustomFields(_0x2a368e,_0x5d3fce){var _0x559ec4={};if(_0x2a368e['length']>0x0){_[_0xc5fd('0x2f')](_0x2a368e,function(_0x336f2a){if(_[_0xc5fd('0x30')]([_0xc5fd('0x31'),_0xc5fd('0x32')],_0x336f2a[_0xc5fd('0x33')])&&_0x336f2a[_0xc5fd('0x34')]&&!_0x336f2a[_0xc5fd('0x35')]){_0x559ec4[_0x336f2a[_0xc5fd('0x34')]['toLowerCase']()]=_0x336f2a['content'][_0xc5fd('0x36')]();}else if(_['includes']([_0xc5fd('0x31'),_0xc5fd('0x32')],_0x336f2a[_0xc5fd('0x33')])&&_0x336f2a['idField']&&_0x336f2a[_0xc5fd('0x35')]){_0x559ec4[_0x336f2a[_0xc5fd('0x37')]['toLowerCase']()]=_0x336f2a[_0xc5fd('0x38')][_0xc5fd('0x36')]();}else if(_0x336f2a['type']===_0xc5fd('0x39')&&_0x336f2a['variableName']&&_0x336f2a[_0xc5fd('0x37')]&&_0x336f2a[_0xc5fd('0x35')]){_0x559ec4[_0x336f2a['idField'][_0xc5fd('0x3a')]()]=_0x5d3fce[_0x336f2a[_0xc5fd('0x3b')]][_0xc5fd('0x36')]();}else if(_0x336f2a['type']===_0xc5fd('0x3c')&&_0x336f2a[_0xc5fd('0x3d')]&&_0x336f2a['Variable']['name']&&_0x336f2a[_0xc5fd('0x37')]&&_0x336f2a['customField']){_0x559ec4[_0x336f2a['idField']['toLowerCase']()]=_0x5d3fce[_0x336f2a[_0xc5fd('0x3d')][_0xc5fd('0x3e')][_0xc5fd('0x3a')]()][_0xc5fd('0x36')]();}});}return _0x559ec4;}function getTicket(_0x453b02,_0x39eca0,_0x480011,_0x4fde42,_0x4ce654,_0x1d550c){return function(_0x23f4b5){logger[_0xc5fd('0x13')]('['+[_0x453b02['toUpperCase']()]+_0xc5fd('0x3f'),_0x23f4b5);return new Promise(function(_0x51641b,_0x884680){var _0x1c1541=_0x453b02[_0xc5fd('0x3a')]()===_0xc5fd('0x40')?_0x23f4b5[_0xc5fd('0x20')]:_0x23f4b5[_0xc5fd('0x2b')];var _0x54d86c={'method':_0xc5fd('0x25'),'uri':_0x480011+_0xc5fd('0x41')+'?'+_0x1d550c,'body':Object['assign']({},{'active':'true','caller_id':_0x1c1541,'assigned_to':_0x23f4b5[_0xc5fd('0x20')],'short_description':intUtil['getString'](_0x4fde42['Subjects'],_0x4ce654,'\x20'),'description':intUtil[_0xc5fd('0x42')](_0x4fde42[_0xc5fd('0x43')],_0x4ce654,'\x0a')},getCustomFields(_0x4fde42['Fields'],_0x4ce654)),'auth':_0x39eca0,'json':!![]};return rp(_0x54d86c)[_0xc5fd('0x10')](function(_0x53fd29){logger['info']('['+[_0x453b02[_0xc5fd('0x14')]()]+_0xc5fd('0x44'),_0x53fd29[_0xc5fd('0x11')]);_0x23f4b5[_0xc5fd('0x45')]=_0x53fd29[_0xc5fd('0x11')][_0xc5fd('0x21')];_0x23f4b5[_0xc5fd('0x46')]=_0x53fd29[_0xc5fd('0x11')][_0xc5fd('0x47')];logger[_0xc5fd('0x13')]('['+[_0x453b02[_0xc5fd('0x14')]()]+']\x20getTicket\x20crm',_0x23f4b5);_0x51641b(_0x23f4b5);})[_0xc5fd('0x16')](function(_0x101b8f){logger[_0xc5fd('0x17')]('['+[_0x453b02['toUpperCase']()]+']',_0x101b8f[_0xc5fd('0x18')]);_0x884680(_0x101b8f[_0xc5fd('0x18')]);});});};}function createRemoteTag(_0x1a30d5,_0x2ee934,_0x5c7d68,_0xcbd63b){return new Promise(function(_0x5b5ecd,_0x520993){var _0x1ce72c={'method':_0xc5fd('0x25'),'uri':_0x5c7d68+_0xc5fd('0x48')+'?'+_0xcbd63b,'body':{'short_description':_0x1a30d5,'global':!![],'active':!![],'name':_0x1a30d5},'auth':_0x2ee934,'json':!![]};return rp(_0x1ce72c)[_0xc5fd('0x10')](function(_0x275e18){var _0x47cff9=_0x275e18['result'][_0xc5fd('0x21')];_0x5b5ecd(_0x47cff9);});});}function getRemoteTag(_0x7e176e,_0x49194c,_0x4e9495,_0x50e0c7,_0x437c8e){return new Promise(function(_0x5dc7c8,_0x168c53){var _0x476fea={'method':_0xc5fd('0xe'),'uri':_0x4e9495+_0xc5fd('0x48')+_0xc5fd('0x49')+_0x7e176e+'&'+_0x50e0c7,'auth':_0x49194c,'json':!![]};return rp(_0x476fea)[_0xc5fd('0x10')](function(_0x1a8190){if(_0x1a8190['result'][_0xc5fd('0x1e')]>0x0){var _0x390bac=_0x1a8190[_0xc5fd('0x11')][0x0]['sys_id'];_0x5dc7c8(_0x390bac);}else{return createRemoteTag(_0x7e176e,_0x49194c,_0x4e9495,_0x50e0c7)['then'](function(_0x1da8b2){_0x5dc7c8(_0x1da8b2);});}});});}function assignTagToIncident(_0x160469,_0x2f30d6,_0x149483,_0x69367,_0x45f9fd){return new Promise(function(_0x469316,_0x435c61){var _0x2ea29a={'method':_0xc5fd('0x25'),'uri':_0x149483+_0xc5fd('0x4a')+'?'+_0x45f9fd,'body':{'label':_0x160469,'table':_0xc5fd('0x41'),'id_type':_0xc5fd('0x4b'),'table_key':_0x69367[_0xc5fd('0x45')],'title':_0xc5fd('0x4c')+_0x69367[_0xc5fd('0x46')],'id_display':_0x69367['ticketNumber']},'auth':_0x2f30d6,'json':!![]};return rp(_0x2ea29a)[_0xc5fd('0x10')](function(_0xc05f80){_0x469316();})[_0xc5fd('0x16')](function(){_0x469316();});});}function manageTags(_0x53a3ee,_0x32a240,_0x2c1252,_0x277616,_0x3d9bde,_0x522985,_0x1733e7){return new Promise(function(_0xfe9144,_0x5dfd9c){var _0x27a1f5=[];_0x32a240['forEach'](function(_0x2849c3){_0x27a1f5[_0xc5fd('0x4d')](getRemoteTag(_0x2849c3,_0x2c1252,_0x277616,_0x522985,_0x1733e7));});return Promise[_0xc5fd('0x4e')](_0x27a1f5)[_0xc5fd('0x10')](function(_0x3bfa8d){if(_0x3bfa8d[_0xc5fd('0x1e')]){logger['info']('['+[_0x53a3ee['toUpperCase']()]+_0xc5fd('0x4f'),_0x3bfa8d);var _0x1ff40b=[];_0x3bfa8d[_0xc5fd('0x2f')](function(_0xfacbc9){_0x1ff40b[_0xc5fd('0x4d')](assignTagToIncident(_0xfacbc9,_0x2c1252,_0x277616,_0x3d9bde,_0x522985));});return Promise[_0xc5fd('0x4e')](_0x1ff40b)[_0xc5fd('0x10')](function(){_0xfe9144();})[_0xc5fd('0x16')](function(){_0xfe9144();});}else{_0xfe9144();}});});}function getTags(_0x4d6f97,_0x34a414,_0x1dab2e,_0x5b337a,_0x5353f0,_0xb31758){return function(_0x2c4c0e){return new Promise(function(_0xf4bb91,_0x545de8){var _0x302a73=[];var _0x310a7b=_0x5b337a[_0xc5fd('0x50')];if(_0x310a7b&&_0x310a7b[_0xc5fd('0x1e')]>0x0){_0x302a73=_['map'](_0x310a7b,_0xc5fd('0x3e'));}if(_0x302a73[_0xc5fd('0x1e')]>0x0){return manageTags(_0x4d6f97,_0x302a73,_0x34a414,_0x1dab2e,_0x2c4c0e,_0x5353f0,_0xb31758)['then'](function(){_0xf4bb91(_0x2c4c0e);});}else{_0xf4bb91(_0x2c4c0e);}});};}function emit(_0x451015,_0x3e6cf3,_0x49473a){var _0x4591be=_0xc5fd('0x51')+_0xc5fd('0x52')+_0xc5fd('0x53')+_0xc5fd('0x54');var _0x31b753={'uri':_0x451015+_0xc5fd('0x55')+_0x49473a+_0x4591be};io['to'](util[_0xc5fd('0x56')](_0xc5fd('0x57'),_0x3e6cf3))[_0xc5fd('0x58')]('trigger:browser:url',_0x31b753);}exports['cs']=function(_0x5131ba,_0x36ad3c,_0x10538c,_0x138ac4,_0x5a494b,_0xf7c5cb,_0x57193b,_0x2696be){var _0x4daefa={};var _0x282255={'user':_0xf7c5cb[_0xc5fd('0x59')],'pass':_0xf7c5cb[_0xc5fd('0x5a')]};var _0x480355='sysparm_limit=1';var _0x3cd0cb=_0xc5fd('0x5b');_0xf7c5cb['remoteUri']=intUtil[_0xc5fd('0x5c')](_0xf7c5cb['remoteUri']);_0xf7c5cb[_0xc5fd('0x5d')]=intUtil[_0xc5fd('0x5c')](_0xf7c5cb['serverUrl']);var _0x51242e=util[_0xc5fd('0x56')](_0xc5fd('0x5e'),_0xf7c5cb[_0xc5fd('0x5f')]);_0x4daefa[_0xc5fd('0x1a')]=!_[_0xc5fd('0x60')](_0x138ac4)?_0x138ac4[_0xc5fd('0x61')]:null;_0x4daefa['adminEmail']=_0xf7c5cb[_0xc5fd('0x61')];_0x4daefa[_0xc5fd('0x27')]=_0x2696be[_0xc5fd('0x3a')]()===_0xc5fd('0x40')?_0x36ad3c[_0xc5fd('0x62')]:_0x36ad3c[_0xc5fd('0x63')];_0x4daefa[_0xc5fd('0x64')]=_0x2696be===_0xc5fd('0x65')||_0x2696be===_0xc5fd('0x66')?'queue':_0xc5fd('0x40');var _0x58ca76=util[_0xc5fd('0x56')](_0xc5fd('0x67'),_0xf7c5cb[_0xc5fd('0x5d')],_0x36ad3c['uniqueid'],md5(_0x36ad3c[_0xc5fd('0x68')]));if(_0x5a494b&&_0x5a494b['monitor_format']){logger['info'](_0xc5fd('0x69'),_0xc5fd('0x6a'));_0x36ad3c[_0xc5fd('0x6b')]=_0x58ca76;}else if(_0x57193b&&_0x57193b[_0xc5fd('0x6c')]&&_0x57193b[_0xc5fd('0x6c')]!==_0xc5fd('0x6d')){logger['info'](_0xc5fd('0x6e'),_0xc5fd('0x6a'));_0x36ad3c[_0xc5fd('0x6b')]=_0x58ca76;}else{_0x36ad3c[_0xc5fd('0x6b')]='';}return getAdminUser(_0x2696be,_0x282255,_0x4daefa,_0x51242e,_0x3cd0cb,_0x480355)[_0xc5fd('0x10')](getUser(_0x2696be,_0x282255,_0x51242e,_0x3cd0cb,_0x480355))['then'](getEndUser(_0x2696be,_0x282255,_0x51242e,_0x3cd0cb,_0x480355))[_0xc5fd('0x10')](getTicket(_0x2696be,_0x282255,_0x51242e,_0x10538c,_0x36ad3c,_0x3cd0cb))[_0xc5fd('0x10')](function(_0x40ac22){logger[_0xc5fd('0x13')](util[_0xc5fd('0x56')](_0xc5fd('0x6f'),_0x40ac22[_0xc5fd('0x45')]));logger['info'](util[_0xc5fd('0x56')](_0xc5fd('0x70'),_0x2696be));if(_0x2696be!==_0xc5fd('0x66')){logger[_0xc5fd('0x13')]('['+[_0x2696be['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0xf7c5cb['remoteUri'],_0x138ac4[_0xc5fd('0x3e')],_0x40ac22[_0xc5fd('0x45')]);}})[_0xc5fd('0x16')](function(_0x5f2c45){logger[_0xc5fd('0x17')]('['+[_0x2696be[_0xc5fd('0x14')]()]+_0xc5fd('0x71'),util[_0xc5fd('0x72')](_0x5f2c45,{'showHidden':!![],'depth':null}));});};