Built motion from commit 82bb2304.|2.5.39
[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 _0xa5e0=['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','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','validateEmail','userEmail','info','active','true','userId','],\x20getUser\x20crm','adminEmail','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','variableName','Variable','name','toLowerCase','outbound','incident','assign','getString','Subjects','Descriptions','Fields','ticketId','ticketNumber','number','label','?sysparm_query=name%3D'];(function(_0x4105c4,_0x8f1a16){var _0x247abb=function(_0x56e567){while(--_0x56e567){_0x4105c4['push'](_0x4105c4['shift']());}};_0x247abb(++_0x8f1a16);}(_0xa5e0,0x91));var _0x0a5e=function(_0x5deb5f,_0x196be5){_0x5deb5f=_0x5deb5f-0x0;var _0xb1d347=_0xa5e0[_0x5deb5f];return _0xb1d347;};'use strict';var _=require(_0x0a5e('0x0'));var Promise=require(_0x0a5e('0x1'));var rp=require(_0x0a5e('0x2'));var util=require(_0x0a5e('0x3'));var md5=require(_0x0a5e('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x0a5e('0x5'));var logger=require(_0x0a5e('0x6'))(_0x0a5e('0x7'));config[_0x0a5e('0x8')]=_[_0x0a5e('0x9')](config[_0x0a5e('0x8')],{'host':_0x0a5e('0xa'),'port':0x18eb});var io=require(_0x0a5e('0xb'))(new Redis(config['redis']));function getAdminUser(_0x80d65f,_0x3d9fac,_0x172275,_0x45310c,_0x5bc9fb,_0x3c1d84){return new Promise(function(_0x1688c0,_0x2b40f7){var _0x50f197={'method':_0x0a5e('0xc'),'uri':_0x45310c+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x5bc9fb+'&'+_0x3c1d84,'auth':_0x3d9fac,'json':!![]};return rp(_0x50f197)[_0x0a5e('0xd')](function(_0x12fe6a){if(_0x12fe6a[_0x0a5e('0xe')][_0x0a5e('0xf')]>0x0){_0x172275[_0x0a5e('0x10')]=_0x12fe6a[_0x0a5e('0xe')][0x0][_0x0a5e('0x11')];}logger['info']('['+[_0x80d65f[_0x0a5e('0x12')]()]+_0x0a5e('0x13'),_0x172275);_0x1688c0(_0x172275);})[_0x0a5e('0x14')](function(_0x5de04b){logger[_0x0a5e('0x15')]('['+[_0x80d65f[_0x0a5e('0x12')]()]+']',_0x5de04b['message']);_0x2b40f7(_0x5de04b[_0x0a5e('0x16')]);});});}function getUser(_0xd719a3,_0xb8bb53,_0xafb5c5,_0x20aa8a,_0x41842b){return function(_0x2a63f9){logger['info']('['+[_0xd719a3['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x2a63f9);return new Promise(function(_0x1a1726,_0x2ddf03){if(intUtil[_0x0a5e('0x17')](_0x2a63f9['userEmail'])){var _0x16bddd={'method':_0x0a5e('0xc'),'uri':_0xafb5c5+'sys_user?sysparm_query=email%3D'+_0x2a63f9[_0x0a5e('0x18')]+'&'+_0x20aa8a+'&'+_0x41842b,'auth':_0xb8bb53,'json':!![]};logger[_0x0a5e('0x19')]('['+[_0xd719a3[_0x0a5e('0x12')]()]+'],\x20getUser\x20rp\x20obj',_0x16bddd);return rp(_0x16bddd)['then'](function(_0x44840c){logger['info']('['+[_0xd719a3[_0x0a5e('0x12')]()]+'],\x20getUser\x20entity',_0x44840c);if(_0x44840c[_0x0a5e('0xe')][_0x0a5e('0xf')]>0x0&&String(_0x44840c[_0x0a5e('0xe')][0x0][_0x0a5e('0x1a')])===_0x0a5e('0x1b')){_0x2a63f9['userId']=_0x44840c['result'][0x0]['sys_id'];}else{_0x2a63f9[_0x0a5e('0x1c')]=_0x2a63f9[_0x0a5e('0x10')];_0x2a63f9[_0x0a5e('0x18')]=_0x2a63f9['adminEmail'];}logger[_0x0a5e('0x19')]('['+[_0xd719a3[_0x0a5e('0x12')]()]+_0x0a5e('0x1d'),_0x2a63f9);_0x1a1726(_0x2a63f9);})[_0x0a5e('0x14')](function(_0x5889af){logger[_0x0a5e('0x15')]('['+[_0xd719a3[_0x0a5e('0x12')]()]+']',_0x5889af[_0x0a5e('0x16')]);_0x2ddf03(_0x5889af[_0x0a5e('0x16')]);});}else{logger[_0x0a5e('0x19')]('['+[_0xd719a3[_0x0a5e('0x12')]()]+']\x20using\x20admin\x20profile');_0x2a63f9[_0x0a5e('0x1c')]=_0x2a63f9[_0x0a5e('0x10')];_0x2a63f9[_0x0a5e('0x18')]=_0x2a63f9[_0x0a5e('0x1e')];_0x1a1726(_0x2a63f9);}});};}function createEndUser(_0x3a70e0,_0x5419db,_0x415f51,_0x540889,_0x3f3b94){logger['info']('['+[_0x3a70e0[_0x0a5e('0x12')]()]+_0x0a5e('0x1f'),_0x415f51);return new Promise(function(_0x4eeabd,_0x1aa6cf){var _0x2b36f1={'method':_0x0a5e('0x20'),'uri':_0x540889+'sys_user?'+_0x3f3b94,'body':{'user_name':_0x415f51[_0x0a5e('0x21')],'roles':_0x0a5e('0x22'),'first_name':_0x415f51[_0x0a5e('0x21')],'active':_0x0a5e('0x1b'),'date_format':_0x0a5e('0x23'),'phone':_0x415f51[_0x0a5e('0x21')]},'auth':_0x5419db,'json':!![]};return rp(_0x2b36f1)[_0x0a5e('0xd')](function(_0x4b2901){logger[_0x0a5e('0x19')]('['+[_0x3a70e0[_0x0a5e('0x12')]()]+_0x0a5e('0x24'),_0x4b2901['result']);_0x415f51[_0x0a5e('0x25')]=_0x4b2901[_0x0a5e('0xe')]['sys_id'];_0x4eeabd(_0x415f51);})[_0x0a5e('0x14')](function(_0x5aa512){logger[_0x0a5e('0x15')]('['+[_0x3a70e0[_0x0a5e('0x12')]()]+']',_0x5aa512[_0x0a5e('0x16')]);_0x1aa6cf(_0x5aa512['message']);});});}function getEndUser(_0x39ab83,_0x562c70,_0x326ada,_0x41738d,_0x15e43b){return function(_0x300bde){logger[_0x0a5e('0x19')]('['+[_0x39ab83[_0x0a5e('0x12')]()]+'],\x20getEndUser\x20input\x20crm',_0x300bde);return new Promise(function(_0x3ffdc8,_0x5e30af){var _0x4f13a3={'method':_0x0a5e('0xc'),'uri':_0x326ada+_0x0a5e('0x26')+_0x300bde[_0x0a5e('0x21')]+'&'+_0x41738d+'&'+_0x15e43b,'auth':_0x562c70,'json':!![]};return rp(_0x4f13a3)['then'](function(_0x2660d2){if(_0x2660d2['result'][_0x0a5e('0xf')]>0x0){_0x300bde[_0x0a5e('0x25')]=_0x2660d2[_0x0a5e('0xe')][0x0][_0x0a5e('0x11')];logger['info']('['+[_0x39ab83[_0x0a5e('0x12')]()]+'],\x20getEndUser\x20crm',_0x300bde);_0x3ffdc8(_0x300bde);}else{return createEndUser(_0x39ab83,_0x562c70,_0x300bde,_0x326ada,_0x41738d)[_0x0a5e('0xd')](function(_0x23ce3d){logger['info']('['+[_0x39ab83['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x23ce3d);_0x3ffdc8(_0x23ce3d);});}})['catch'](function(_0xccdd78){logger[_0x0a5e('0x15')]('['+[_0x39ab83['toUpperCase']()]+']',_0xccdd78['message']);_0x5e30af(_0xccdd78[_0x0a5e('0x16')]);});});};}function getCustomFields(_0x43a5f3,_0x16d811){var _0x2d3b12={};if(_0x43a5f3[_0x0a5e('0xf')]>0x0){_[_0x0a5e('0x27')](_0x43a5f3,function(_0x2cc937){if(_[_0x0a5e('0x28')]([_0x0a5e('0x29'),_0x0a5e('0x2a')],_0x2cc937[_0x0a5e('0x2b')])&&_0x2cc937[_0x0a5e('0x2c')]&&!_0x2cc937[_0x0a5e('0x2d')]){_0x2d3b12[_0x2cc937['nameField']['toLowerCase']()]=_0x2cc937[_0x0a5e('0x2e')][_0x0a5e('0x2f')]();}else if(_[_0x0a5e('0x28')]([_0x0a5e('0x29'),_0x0a5e('0x2a')],_0x2cc937[_0x0a5e('0x2b')])&&_0x2cc937[_0x0a5e('0x30')]&&_0x2cc937[_0x0a5e('0x2d')]){_0x2d3b12[_0x2cc937[_0x0a5e('0x30')]['toLowerCase']()]=_0x2cc937[_0x0a5e('0x2e')]['toString']();}else if(_0x2cc937['type']==='variable'&&_0x2cc937['variableName']&&_0x2cc937[_0x0a5e('0x30')]&&_0x2cc937[_0x0a5e('0x2d')]){_0x2d3b12[_0x2cc937[_0x0a5e('0x30')]['toLowerCase']()]=_0x16d811[_0x2cc937[_0x0a5e('0x31')]]['toString']();}else if(_0x2cc937[_0x0a5e('0x2b')]==='customVariable'&&_0x2cc937[_0x0a5e('0x32')]&&_0x2cc937[_0x0a5e('0x32')][_0x0a5e('0x33')]&&_0x2cc937[_0x0a5e('0x30')]&&_0x2cc937[_0x0a5e('0x2d')]){_0x2d3b12[_0x2cc937[_0x0a5e('0x30')]['toLowerCase']()]=_0x16d811[_0x2cc937[_0x0a5e('0x32')][_0x0a5e('0x33')][_0x0a5e('0x34')]()]['toString']();}});}return _0x2d3b12;}function getTicket(_0x5b381b,_0x3796d3,_0x2a6cb9,_0x16fc7e,_0x1a2705,_0x19a4f0){return function(_0xf01311){logger[_0x0a5e('0x19')]('['+[_0x5b381b[_0x0a5e('0x12')]()]+']\x20getTicket\x20input\x20crm',_0xf01311);return new Promise(function(_0x4fad4f,_0x26a6e5){var _0x5b06f8=_0x5b381b[_0x0a5e('0x34')]()===_0x0a5e('0x35')?_0xf01311['userId']:_0xf01311[_0x0a5e('0x25')];var _0x739371={'method':'POST','uri':_0x2a6cb9+_0x0a5e('0x36')+'?'+_0x19a4f0,'body':Object[_0x0a5e('0x37')]({},{'active':_0x0a5e('0x1b'),'caller_id':_0x5b06f8,'assigned_to':_0xf01311[_0x0a5e('0x1c')],'short_description':intUtil[_0x0a5e('0x38')](_0x16fc7e[_0x0a5e('0x39')],_0x1a2705,'\x20'),'description':intUtil['getString'](_0x16fc7e[_0x0a5e('0x3a')],_0x1a2705,'\x0a')},getCustomFields(_0x16fc7e[_0x0a5e('0x3b')],_0x1a2705)),'auth':_0x3796d3,'json':!![]};return rp(_0x739371)[_0x0a5e('0xd')](function(_0x3beb4a){logger[_0x0a5e('0x19')]('['+[_0x5b381b[_0x0a5e('0x12')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x3beb4a[_0x0a5e('0xe')]);_0xf01311[_0x0a5e('0x3c')]=_0x3beb4a[_0x0a5e('0xe')]['sys_id'];_0xf01311[_0x0a5e('0x3d')]=_0x3beb4a[_0x0a5e('0xe')][_0x0a5e('0x3e')];logger[_0x0a5e('0x19')]('['+[_0x5b381b['toUpperCase']()]+']\x20getTicket\x20crm',_0xf01311);_0x4fad4f(_0xf01311);})[_0x0a5e('0x14')](function(_0x38a44e){logger[_0x0a5e('0x15')]('['+[_0x5b381b['toUpperCase']()]+']',_0x38a44e['message']);_0x26a6e5(_0x38a44e[_0x0a5e('0x16')]);});});};}function createRemoteTag(_0x365ff9,_0x55c89d,_0x354b79,_0x3366f4){return new Promise(function(_0xd15cb0,_0x26c0fb){var _0x58f9eb={'method':'POST','uri':_0x354b79+_0x0a5e('0x3f')+'?'+_0x3366f4,'body':{'short_description':_0x365ff9,'global':!![],'active':!![],'name':_0x365ff9},'auth':_0x55c89d,'json':!![]};return rp(_0x58f9eb)[_0x0a5e('0xd')](function(_0x6e04c9){var _0x55b533=_0x6e04c9['result'][_0x0a5e('0x11')];_0xd15cb0(_0x55b533);});});}function getRemoteTag(_0xa7a58f,_0x2a1635,_0x27d89b,_0xd13d8a,_0xa3a8a4){return new Promise(function(_0x174710,_0x3b456d){var _0x400ea9={'method':_0x0a5e('0xc'),'uri':_0x27d89b+_0x0a5e('0x3f')+_0x0a5e('0x40')+_0xa7a58f+'&'+_0xd13d8a,'auth':_0x2a1635,'json':!![]};return rp(_0x400ea9)[_0x0a5e('0xd')](function(_0x57dd79){if(_0x57dd79['result'][_0x0a5e('0xf')]>0x0){var _0x20dc16=_0x57dd79[_0x0a5e('0xe')][0x0]['sys_id'];_0x174710(_0x20dc16);}else{return createRemoteTag(_0xa7a58f,_0x2a1635,_0x27d89b,_0xd13d8a)[_0x0a5e('0xd')](function(_0x390d2e){_0x174710(_0x390d2e);});}});});}function assignTagToIncident(_0x2f0db6,_0x54d709,_0x84d3ca,_0xae9657,_0x375b47){return new Promise(function(_0x4ad2a9,_0x283949){var _0x341c6c={'method':'POST','uri':_0x84d3ca+_0x0a5e('0x41')+'?'+_0x375b47,'body':{'label':_0x2f0db6,'table':_0x0a5e('0x36'),'id_type':_0x0a5e('0x42'),'table_key':_0xae9657['ticketId'],'title':_0x0a5e('0x43')+_0xae9657[_0x0a5e('0x3d')],'id_display':_0xae9657['ticketNumber']},'auth':_0x54d709,'json':!![]};return rp(_0x341c6c)['then'](function(_0x3268ae){_0x4ad2a9();})[_0x0a5e('0x14')](function(){_0x4ad2a9();});});}function manageTags(_0xe5cfe1,_0xe983a4,_0x23753e,_0x3e80fe,_0x4648a2,_0x2c19b8,_0x51dc6e){return new Promise(function(_0x956150,_0x2fc5fd){var _0x1e839f=[];_0xe983a4[_0x0a5e('0x27')](function(_0x1db8b4){_0x1e839f[_0x0a5e('0x44')](getRemoteTag(_0x1db8b4,_0x23753e,_0x3e80fe,_0x2c19b8,_0x51dc6e));});return Promise[_0x0a5e('0x45')](_0x1e839f)[_0x0a5e('0xd')](function(_0x4d1223){if(_0x4d1223[_0x0a5e('0xf')]){logger[_0x0a5e('0x19')]('['+[_0xe5cfe1[_0x0a5e('0x12')]()]+_0x0a5e('0x46'),_0x4d1223);var _0x3a565b=[];_0x4d1223['forEach'](function(_0x3209a1){_0x3a565b[_0x0a5e('0x44')](assignTagToIncident(_0x3209a1,_0x23753e,_0x3e80fe,_0x4648a2,_0x2c19b8));});return Promise[_0x0a5e('0x45')](_0x3a565b)[_0x0a5e('0xd')](function(){_0x956150();})[_0x0a5e('0x14')](function(){_0x956150();});}else{_0x956150();}});});}function getTags(_0x249b6a,_0x395d73,_0x296f7b,_0x2b945e,_0x3c9ffb,_0x59cc52){return function(_0x355b0d){return new Promise(function(_0xe2488e,_0x1ae164){var _0x52e627=[];var _0x1bb53d=_0x2b945e[_0x0a5e('0x47')];if(_0x1bb53d&&_0x1bb53d[_0x0a5e('0xf')]>0x0){_0x52e627=_['map'](_0x1bb53d,'name');}if(_0x52e627[_0x0a5e('0xf')]>0x0){return manageTags(_0x249b6a,_0x52e627,_0x395d73,_0x296f7b,_0x355b0d,_0x3c9ffb,_0x59cc52)[_0x0a5e('0xd')](function(){_0xe2488e(_0x355b0d);});}else{_0xe2488e(_0x355b0d);}});};}function emit(_0x570725,_0x53022d,_0x30861c){var _0x423a84=_0x0a5e('0x48')+_0x0a5e('0x49')+_0x0a5e('0x4a')+_0x0a5e('0x4b');var _0x231cbf={'uri':_0x570725+_0x0a5e('0x4c')+_0x30861c+_0x423a84};io['to'](util[_0x0a5e('0x4d')](_0x0a5e('0x4e'),_0x53022d))[_0x0a5e('0x4f')]('trigger:browser:url',_0x231cbf);}exports['cs']=function(_0xbe375b,_0x4c33e4,_0x131e8d,_0x3b0acd,_0x3f33f4,_0x4fd9fc,_0x1ec7f0,_0x52899a){var _0x2d1e50={};var _0x5169db={'user':_0x4fd9fc[_0x0a5e('0x50')],'pass':_0x4fd9fc['password']};var _0x45ba7b=_0x0a5e('0x51');var _0x7389c1='sysparm_display_value=true';_0x4fd9fc[_0x0a5e('0x52')]=intUtil[_0x0a5e('0x53')](_0x4fd9fc[_0x0a5e('0x52')]);_0x4fd9fc[_0x0a5e('0x54')]=intUtil[_0x0a5e('0x53')](_0x4fd9fc['serverUrl']);var _0x4de751=util[_0x0a5e('0x4d')](_0x0a5e('0x55'),_0x4fd9fc[_0x0a5e('0x52')]);_0x2d1e50[_0x0a5e('0x18')]=!_[_0x0a5e('0x56')](_0x3b0acd)?_0x3b0acd[_0x0a5e('0x57')]:null;_0x2d1e50['adminEmail']=_0x4fd9fc[_0x0a5e('0x57')];_0x2d1e50[_0x0a5e('0x21')]=_0x52899a[_0x0a5e('0x34')]()===_0x0a5e('0x35')?_0x4c33e4[_0x0a5e('0x58')]:_0x4c33e4[_0x0a5e('0x59')];_0x2d1e50[_0x0a5e('0x5a')]=_0x52899a===_0x0a5e('0x5b')||_0x52899a===_0x0a5e('0x5c')?_0x0a5e('0x5b'):_0x0a5e('0x35');var _0x1c5153=util[_0x0a5e('0x4d')](_0x0a5e('0x5d'),_0x4fd9fc['serverUrl'],_0x4c33e4[_0x0a5e('0x5e')],md5(_0x4c33e4[_0x0a5e('0x5e')]));if(_0x3f33f4&&_0x3f33f4[_0x0a5e('0x5f')]){logger['info'](_0x0a5e('0x60'),_0x0a5e('0x61'));_0x4c33e4['recordingURL']=_0x1c5153;}else if(_0x1ec7f0&&_0x1ec7f0[_0x0a5e('0x62')]&&_0x1ec7f0[_0x0a5e('0x62')]!==_0x0a5e('0x63')){logger[_0x0a5e('0x19')]('[OUTBOUND]',_0x0a5e('0x61'));_0x4c33e4[_0x0a5e('0x64')]=_0x1c5153;}else{_0x4c33e4[_0x0a5e('0x64')]='';}return getAdminUser(_0x52899a,_0x5169db,_0x2d1e50,_0x4de751,_0x7389c1,_0x45ba7b)[_0x0a5e('0xd')](getUser(_0x52899a,_0x5169db,_0x4de751,_0x7389c1,_0x45ba7b))['then'](getEndUser(_0x52899a,_0x5169db,_0x4de751,_0x7389c1,_0x45ba7b))[_0x0a5e('0xd')](getTicket(_0x52899a,_0x5169db,_0x4de751,_0x131e8d,_0x4c33e4,_0x7389c1))[_0x0a5e('0xd')](function(_0x19ba2f){logger[_0x0a5e('0x19')](util['format'](_0x0a5e('0x65'),_0x19ba2f[_0x0a5e('0x3c')]));logger[_0x0a5e('0x19')](util[_0x0a5e('0x4d')](_0x0a5e('0x66'),_0x52899a));if(_0x52899a!==_0x0a5e('0x5c')){logger[_0x0a5e('0x19')]('['+[_0x52899a[_0x0a5e('0x12')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x4fd9fc[_0x0a5e('0x52')],_0x3b0acd[_0x0a5e('0x33')],_0x19ba2f['ticketId']);}})[_0x0a5e('0x14')](function(_0x1ded27){logger['error']('['+[_0x52899a['toUpperCase']()]+_0x0a5e('0x67'),util[_0x0a5e('0x68')](_0x1ded27,{'showHidden':!![],'depth':null}));});};