4c43054ece74efbc15b274e635e274c12bf06855
[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 _0x41dd=['call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20entity','active','true','userId',']\x20using\x20admin\x20profile','adminEmail','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','error','forEach','string','type','nameField','customField','content','toString','includes','picklist','idField','toLowerCase','variable','variableName','customVariable','Variable','name','outbound','incident','assign','getString','Subjects','Descriptions','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident','ticketId','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','username','sysparm_limit=1','stripTrailingSlash','serverUrl','email','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s'];(function(_0x2842b4,_0x2b1b7b){var _0x2b9521=function(_0x3613b8){while(--_0x3613b8){_0x2842b4['push'](_0x2842b4['shift']());}};_0x2b9521(++_0x2b1b7b);}(_0x41dd,0xd4));var _0xd41d=function(_0x2ef505,_0x210e76){_0x2ef505=_0x2ef505-0x0;var _0x3029d8=_0x41dd[_0x2ef505];return _0x3029d8;};'use strict';var _=require(_0xd41d('0x0'));var Promise=require(_0xd41d('0x1'));var rp=require(_0xd41d('0x2'));var util=require('util');var md5=require(_0xd41d('0x3'));var Redis=require(_0xd41d('0x4'));var intUtil=require(_0xd41d('0x5'));var config=require(_0xd41d('0x6'));var logger=require(_0xd41d('0x7'))(_0xd41d('0x8'));config[_0xd41d('0x9')]=_[_0xd41d('0xa')](config[_0xd41d('0x9')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd41d('0x9')]));function getAdminUser(_0x5c9ba4,_0x185db0,_0x2e0615,_0x209907,_0x36f15c,_0x396c1f){return new Promise(function(_0x4cffbb,_0x7c1c75){var _0x4e6393={'method':_0xd41d('0xb'),'uri':_0x209907+_0xd41d('0xc')+'&'+_0x36f15c+'&'+_0x396c1f,'auth':_0x185db0,'json':!![]};return rp(_0x4e6393)[_0xd41d('0xd')](function(_0x2b30df){if(_0x2b30df[_0xd41d('0xe')][_0xd41d('0xf')]>0x0){_0x2e0615['adminId']=_0x2b30df[_0xd41d('0xe')][0x0][_0xd41d('0x10')];}logger[_0xd41d('0x11')]('['+[_0x5c9ba4[_0xd41d('0x12')]()]+_0xd41d('0x13'),_0x2e0615);_0x4cffbb(_0x2e0615);})[_0xd41d('0x14')](function(_0x4895b2){logger['error']('['+[_0x5c9ba4[_0xd41d('0x12')]()]+']',_0x4895b2[_0xd41d('0x15')]);_0x7c1c75(_0x4895b2['message']);});});}function getUser(_0x1e8c66,_0xbdb383,_0x563c8b,_0x39408b,_0x487178){return function(_0x39651a){logger[_0xd41d('0x11')]('['+[_0x1e8c66[_0xd41d('0x12')]()]+_0xd41d('0x16'),_0x39651a);return new Promise(function(_0x4f9830,_0xaef414){if(intUtil[_0xd41d('0x17')](_0x39651a['userEmail'])){var _0x40aad0={'method':_0xd41d('0xb'),'uri':_0x563c8b+_0xd41d('0x18')+_0x39651a[_0xd41d('0x19')]+'&'+_0x39408b+'&'+_0x487178,'auth':_0xbdb383,'json':!![]};logger[_0xd41d('0x11')]('['+[_0x1e8c66[_0xd41d('0x12')]()]+'],\x20getUser\x20rp\x20obj',_0x40aad0);return rp(_0x40aad0)['then'](function(_0x355b23){logger[_0xd41d('0x11')]('['+[_0x1e8c66[_0xd41d('0x12')]()]+_0xd41d('0x1a'),_0x355b23);if(_0x355b23[_0xd41d('0xe')][_0xd41d('0xf')]>0x0&&String(_0x355b23[_0xd41d('0xe')][0x0][_0xd41d('0x1b')])===_0xd41d('0x1c')){_0x39651a[_0xd41d('0x1d')]=_0x355b23['result'][0x0][_0xd41d('0x10')];}else{_0x39651a[_0xd41d('0x1d')]=_0x39651a['adminId'];_0x39651a[_0xd41d('0x19')]=_0x39651a['adminEmail'];}logger[_0xd41d('0x11')]('['+[_0x1e8c66[_0xd41d('0x12')]()]+'],\x20getUser\x20crm',_0x39651a);_0x4f9830(_0x39651a);})[_0xd41d('0x14')](function(_0x25eecf){logger['error']('['+[_0x1e8c66['toUpperCase']()]+']',_0x25eecf[_0xd41d('0x15')]);_0xaef414(_0x25eecf[_0xd41d('0x15')]);});}else{logger[_0xd41d('0x11')]('['+[_0x1e8c66[_0xd41d('0x12')]()]+_0xd41d('0x1e'));_0x39651a[_0xd41d('0x1d')]=_0x39651a['adminId'];_0x39651a[_0xd41d('0x19')]=_0x39651a[_0xd41d('0x1f')];_0x4f9830(_0x39651a);}});};}function createEndUser(_0xef7225,_0x582cc1,_0x1a3f1b,_0x4f86df,_0x5a7507){logger[_0xd41d('0x11')]('['+[_0xef7225['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x1a3f1b);return new Promise(function(_0x7e3ae8,_0x4ce981){var _0x58c66c={'method':_0xd41d('0x20'),'uri':_0x4f86df+_0xd41d('0x21')+_0x5a7507,'body':{'user_name':_0x1a3f1b['endUserNumber'],'roles':'user','first_name':_0x1a3f1b[_0xd41d('0x22')],'active':_0xd41d('0x1c'),'date_format':_0xd41d('0x23'),'phone':_0x1a3f1b[_0xd41d('0x22')]},'auth':_0x582cc1,'json':!![]};return rp(_0x58c66c)[_0xd41d('0xd')](function(_0x5efe44){logger['info']('['+[_0xef7225[_0xd41d('0x12')]()]+_0xd41d('0x24'),_0x5efe44[_0xd41d('0xe')]);_0x1a3f1b[_0xd41d('0x25')]=_0x5efe44[_0xd41d('0xe')][_0xd41d('0x10')];_0x7e3ae8(_0x1a3f1b);})[_0xd41d('0x14')](function(_0x18568e){logger['error']('['+[_0xef7225[_0xd41d('0x12')]()]+']',_0x18568e[_0xd41d('0x15')]);_0x4ce981(_0x18568e['message']);});});}function getEndUser(_0x371dea,_0x4ab4fa,_0x24e45d,_0x16007e,_0x2b346a){return function(_0x36871f){logger[_0xd41d('0x11')]('['+[_0x371dea['toUpperCase']()]+_0xd41d('0x26'),_0x36871f);return new Promise(function(_0x4eac17,_0x245d4b){var _0x28d6f7={'method':_0xd41d('0xb'),'uri':_0x24e45d+_0xd41d('0x27')+_0x36871f['endUserNumber']+'&'+_0x16007e+'&'+_0x2b346a,'auth':_0x4ab4fa,'json':!![]};return rp(_0x28d6f7)[_0xd41d('0xd')](function(_0x32e97f){if(_0x32e97f[_0xd41d('0xe')]['length']>0x0){_0x36871f[_0xd41d('0x25')]=_0x32e97f['result'][0x0][_0xd41d('0x10')];logger[_0xd41d('0x11')]('['+[_0x371dea[_0xd41d('0x12')]()]+_0xd41d('0x28'),_0x36871f);_0x4eac17(_0x36871f);}else{return createEndUser(_0x371dea,_0x4ab4fa,_0x36871f,_0x24e45d,_0x16007e)[_0xd41d('0xd')](function(_0x1c1a1f){logger['info']('['+[_0x371dea[_0xd41d('0x12')]()]+_0xd41d('0x29'),_0x1c1a1f);_0x4eac17(_0x1c1a1f);});}})[_0xd41d('0x14')](function(_0x8345ea){logger[_0xd41d('0x2a')]('['+[_0x371dea['toUpperCase']()]+']',_0x8345ea[_0xd41d('0x15')]);_0x245d4b(_0x8345ea[_0xd41d('0x15')]);});});};}function getCustomFields(_0x588bb4,_0x1016bf){var _0x11e417={};if(_0x588bb4[_0xd41d('0xf')]>0x0){_[_0xd41d('0x2b')](_0x588bb4,function(_0x11a673){if(_['includes']([_0xd41d('0x2c'),'picklist'],_0x11a673[_0xd41d('0x2d')])&&_0x11a673[_0xd41d('0x2e')]&&!_0x11a673[_0xd41d('0x2f')]){_0x11e417[_0x11a673[_0xd41d('0x2e')]['toLowerCase']()]=_0x11a673[_0xd41d('0x30')][_0xd41d('0x31')]();}else if(_[_0xd41d('0x32')]([_0xd41d('0x2c'),_0xd41d('0x33')],_0x11a673['type'])&&_0x11a673[_0xd41d('0x34')]&&_0x11a673['customField']){_0x11e417[_0x11a673[_0xd41d('0x34')][_0xd41d('0x35')]()]=_0x11a673[_0xd41d('0x30')][_0xd41d('0x31')]();}else if(_0x11a673[_0xd41d('0x2d')]===_0xd41d('0x36')&&_0x11a673[_0xd41d('0x37')]&&_0x11a673[_0xd41d('0x34')]&&_0x11a673[_0xd41d('0x2f')]){_0x11e417[_0x11a673[_0xd41d('0x34')][_0xd41d('0x35')]()]=_0x1016bf[_0x11a673[_0xd41d('0x37')]][_0xd41d('0x31')]();}else if(_0x11a673[_0xd41d('0x2d')]===_0xd41d('0x38')&&_0x11a673[_0xd41d('0x39')]&&_0x11a673[_0xd41d('0x39')][_0xd41d('0x3a')]&&_0x11a673[_0xd41d('0x34')]&&_0x11a673['customField']){_0x11e417[_0x11a673[_0xd41d('0x34')][_0xd41d('0x35')]()]=_0x1016bf[_0x11a673[_0xd41d('0x39')]['name'][_0xd41d('0x35')]()][_0xd41d('0x31')]();}});}return _0x11e417;}function getTicket(_0x47852b,_0x53f454,_0x1ba44c,_0x422324,_0x5e8e6d,_0x1dcca1){return function(_0x116013){logger[_0xd41d('0x11')]('['+[_0x47852b['toUpperCase']()]+']\x20getTicket\x20input\x20crm',_0x116013);return new Promise(function(_0x3c8dfe,_0x653ea4){var _0x12f46c=_0x47852b[_0xd41d('0x35')]()===_0xd41d('0x3b')?_0x116013[_0xd41d('0x1d')]:_0x116013[_0xd41d('0x25')];var _0x470d28={'method':_0xd41d('0x20'),'uri':_0x1ba44c+_0xd41d('0x3c')+'?'+_0x1dcca1,'body':Object[_0xd41d('0x3d')]({},{'active':'true','caller_id':_0x12f46c,'assigned_to':_0x116013[_0xd41d('0x1d')],'short_description':intUtil[_0xd41d('0x3e')](_0x422324[_0xd41d('0x3f')],_0x5e8e6d,'\x20'),'description':intUtil[_0xd41d('0x3e')](_0x422324[_0xd41d('0x40')],_0x5e8e6d,'\x0a')},getCustomFields(_0x422324['Fields'],_0x5e8e6d)),'auth':_0x53f454,'json':!![]};return rp(_0x470d28)[_0xd41d('0xd')](function(_0x383080){logger['info']('['+[_0x47852b['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x383080['result']);_0x116013['ticketId']=_0x383080[_0xd41d('0xe')]['sys_id'];_0x116013[_0xd41d('0x41')]=_0x383080['result'][_0xd41d('0x42')];logger['info']('['+[_0x47852b[_0xd41d('0x12')]()]+_0xd41d('0x43'),_0x116013);_0x3c8dfe(_0x116013);})[_0xd41d('0x14')](function(_0x21f40a){logger[_0xd41d('0x2a')]('['+[_0x47852b[_0xd41d('0x12')]()]+']',_0x21f40a[_0xd41d('0x15')]);_0x653ea4(_0x21f40a[_0xd41d('0x15')]);});});};}function createRemoteTag(_0x4cafde,_0x33fcef,_0x3ed6e3,_0x3e7631){return new Promise(function(_0x1adcc4,_0x4cd202){var _0x2f1b23={'method':'POST','uri':_0x3ed6e3+_0xd41d('0x44')+'?'+_0x3e7631,'body':{'short_description':_0x4cafde,'global':!![],'active':!![],'name':_0x4cafde},'auth':_0x33fcef,'json':!![]};return rp(_0x2f1b23)[_0xd41d('0xd')](function(_0x148318){var _0x24d4f8=_0x148318[_0xd41d('0xe')][_0xd41d('0x10')];_0x1adcc4(_0x24d4f8);});});}function getRemoteTag(_0x495475,_0x41537f,_0x32ebd,_0x453e6e,_0x110dac){return new Promise(function(_0x53dcf0,_0x52b02f){var _0x3168a6={'method':_0xd41d('0xb'),'uri':_0x32ebd+_0xd41d('0x44')+_0xd41d('0x45')+_0x495475+'&'+_0x453e6e,'auth':_0x41537f,'json':!![]};return rp(_0x3168a6)[_0xd41d('0xd')](function(_0x20c2f7){if(_0x20c2f7['result'][_0xd41d('0xf')]>0x0){var _0x14f14a=_0x20c2f7[_0xd41d('0xe')][0x0][_0xd41d('0x10')];_0x53dcf0(_0x14f14a);}else{return createRemoteTag(_0x495475,_0x41537f,_0x32ebd,_0x453e6e)[_0xd41d('0xd')](function(_0x3285c5){_0x53dcf0(_0x3285c5);});}});});}function assignTagToIncident(_0xf08eff,_0x49786d,_0x40e900,_0x64536,_0x45bce9){return new Promise(function(_0x4e1eff,_0x25e683){var _0x1955d3={'method':_0xd41d('0x20'),'uri':_0x40e900+'label_entry'+'?'+_0x45bce9,'body':{'label':_0xf08eff,'table':'incident','id_type':_0xd41d('0x46'),'table_key':_0x64536[_0xd41d('0x47')],'title':_0xd41d('0x48')+_0x64536[_0xd41d('0x41')],'id_display':_0x64536[_0xd41d('0x41')]},'auth':_0x49786d,'json':!![]};return rp(_0x1955d3)['then'](function(_0x1bd1a0){_0x4e1eff();})['catch'](function(){_0x4e1eff();});});}function manageTags(_0x48171a,_0x3b8597,_0x2164d7,_0xe10c10,_0x29eaed,_0x2d755d,_0x25e51c){return new Promise(function(_0x13f928,_0x37db5c){var _0xd5ccbb=[];_0x3b8597['forEach'](function(_0x45f600){_0xd5ccbb[_0xd41d('0x49')](getRemoteTag(_0x45f600,_0x2164d7,_0xe10c10,_0x2d755d,_0x25e51c));});return Promise[_0xd41d('0x4a')](_0xd5ccbb)[_0xd41d('0xd')](function(_0x2172da){if(_0x2172da[_0xd41d('0xf')]){logger['info']('['+[_0x48171a[_0xd41d('0x12')]()]+_0xd41d('0x4b'),_0x2172da);var _0x6c6882=[];_0x2172da[_0xd41d('0x2b')](function(_0x19e0ac){_0x6c6882[_0xd41d('0x49')](assignTagToIncident(_0x19e0ac,_0x2164d7,_0xe10c10,_0x29eaed,_0x2d755d));});return Promise['all'](_0x6c6882)[_0xd41d('0xd')](function(){_0x13f928();})[_0xd41d('0x14')](function(){_0x13f928();});}else{_0x13f928();}});});}function getTags(_0x5ba43e,_0x30f417,_0x289cc5,_0x156199,_0x111aa7,_0x5d025d){return function(_0x1bc810){return new Promise(function(_0x2774cc,_0x1810fe){var _0x9ffe29=[];var _0x11707d=_0x156199[_0xd41d('0x4c')];if(_0x11707d&&_0x11707d[_0xd41d('0xf')]>0x0){_0x9ffe29=_[_0xd41d('0x4d')](_0x11707d,_0xd41d('0x3a'));}if(_0x9ffe29[_0xd41d('0xf')]>0x0){return manageTags(_0x5ba43e,_0x9ffe29,_0x30f417,_0x289cc5,_0x1bc810,_0x111aa7,_0x5d025d)[_0xd41d('0xd')](function(){_0x2774cc(_0x1bc810);});}else{_0x2774cc(_0x1bc810);}});};}function emit(_0x5d78a0,_0x18adcb,_0x280545){var _0x1ba435=_0xd41d('0x4e')+_0xd41d('0x4f')+'%26sysparm_record_list%3Dactive%253Dtrue'+'%255EORDERBYDESCnumber';var _0x252316={'uri':_0x5d78a0+_0xd41d('0x50')+_0x280545+_0x1ba435};io['to'](util[_0xd41d('0x51')](_0xd41d('0x52'),_0x18adcb))['emit']('trigger:browser:url',_0x252316);}exports['cs']=function(_0x1df313,_0x23e566,_0x43ab18,_0x333ef8,_0x5c0687,_0x41b8c8,_0x5bc5fe,_0x2e8ec5){var _0x22a734={};var _0x2c57e0={'user':_0x41b8c8[_0xd41d('0x53')],'pass':_0x41b8c8['password']};var _0x564a95=_0xd41d('0x54');var _0x85f79='sysparm_display_value=true';_0x41b8c8['remoteUri']=intUtil[_0xd41d('0x55')](_0x41b8c8['remoteUri']);_0x41b8c8[_0xd41d('0x56')]=intUtil['stripTrailingSlash'](_0x41b8c8[_0xd41d('0x56')]);var _0x7cfba0=util[_0xd41d('0x51')]('%s/api/now/table/',_0x41b8c8['remoteUri']);_0x22a734[_0xd41d('0x19')]=!_['isNil'](_0x333ef8)?_0x333ef8[_0xd41d('0x57')]:null;_0x22a734[_0xd41d('0x1f')]=_0x41b8c8[_0xd41d('0x57')];_0x22a734[_0xd41d('0x22')]=_0x2e8ec5[_0xd41d('0x35')]()===_0xd41d('0x3b')?_0x23e566[_0xd41d('0x58')]:_0x23e566[_0xd41d('0x59')];_0x22a734['callDirection']=_0x2e8ec5===_0xd41d('0x5a')||_0x2e8ec5===_0xd41d('0x5b')?_0xd41d('0x5a'):_0xd41d('0x3b');var _0x161fcc=util[_0xd41d('0x51')](_0xd41d('0x5c'),_0x41b8c8[_0xd41d('0x56')],_0x23e566[_0xd41d('0x5d')],md5(_0x23e566[_0xd41d('0x5d')]));if(_0x5c0687&&_0x5c0687['monitor_format']){logger[_0xd41d('0x11')](_0xd41d('0x5e'),_0xd41d('0x5f'));_0x23e566[_0xd41d('0x60')]=_0x161fcc;}else if(_0x5bc5fe&&_0x5bc5fe[_0xd41d('0x61')]&&_0x5bc5fe['recordingFormat']!==_0xd41d('0x62')){logger['info']('[OUTBOUND]',_0xd41d('0x5f'));_0x23e566[_0xd41d('0x60')]=_0x161fcc;}else{_0x23e566[_0xd41d('0x60')]='';}return getAdminUser(_0x2e8ec5,_0x2c57e0,_0x22a734,_0x7cfba0,_0x85f79,_0x564a95)['then'](getUser(_0x2e8ec5,_0x2c57e0,_0x7cfba0,_0x85f79,_0x564a95))['then'](getEndUser(_0x2e8ec5,_0x2c57e0,_0x7cfba0,_0x85f79,_0x564a95))['then'](getTicket(_0x2e8ec5,_0x2c57e0,_0x7cfba0,_0x43ab18,_0x23e566,_0x85f79))['then'](function(_0x2fb58a){logger['info'](util[_0xd41d('0x51')](_0xd41d('0x63'),_0x2fb58a['ticketId']));logger[_0xd41d('0x11')](util[_0xd41d('0x51')](_0xd41d('0x64'),_0x2e8ec5));if(_0x2e8ec5!==_0xd41d('0x5b')){logger[_0xd41d('0x11')]('['+[_0x2e8ec5[_0xd41d('0x12')]()]+']',_0xd41d('0x65'));emit(_0x41b8c8['remoteUri'],_0x333ef8['name'],_0x2fb58a[_0xd41d('0x47')]);}})[_0xd41d('0x14')](function(_0x30f957){logger[_0xd41d('0x2a')]('['+[_0x2e8ec5['toUpperCase']()]+_0xd41d('0x66'),util[_0xd41d('0x67')](_0x30f957,{'showHidden':!![],'depth':null}));});};