23d5eb44f1e93481195dcf76360054ef500c273a
[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 _0x1ca8=['validateEmail','userEmail','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','true','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','toLowerCase','toString','idField','customField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','incident','Incident','Incident\x20-\x20','push','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','email','destcalleridnum','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','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','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','toUpperCase','catch','error','message','],\x20getUser\x20input\x20crm'];(function(_0x200ced,_0x503efa){var _0x28e175=function(_0x450010){while(--_0x450010){_0x200ced['push'](_0x200ced['shift']());}};_0x28e175(++_0x503efa);}(_0x1ca8,0x1a5));var _0x81ca=function(_0x19b780,_0x44fd25){_0x19b780=_0x19b780-0x0;var _0xbf06de=_0x1ca8[_0x19b780];return _0xbf06de;};'use strict';var _=require(_0x81ca('0x0'));var Promise=require(_0x81ca('0x1'));var rp=require(_0x81ca('0x2'));var util=require(_0x81ca('0x3'));var md5=require(_0x81ca('0x4'));var Redis=require(_0x81ca('0x5'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x81ca('0x6'))(_0x81ca('0x7'));config[_0x81ca('0x8')]=_[_0x81ca('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x81ca('0xa'))(new Redis(config['redis']));function getAdminUser(_0x1c67f5,_0x490964,_0x38eb73,_0x5408b4,_0x4f6261,_0x1a6589){return new Promise(function(_0x371f81,_0x1f7a1b){var _0x5692cd={'method':_0x81ca('0xb'),'uri':_0x5408b4+_0x81ca('0xc')+'&'+_0x4f6261+'&'+_0x1a6589,'auth':_0x490964,'json':!![]};return rp(_0x5692cd)[_0x81ca('0xd')](function(_0x48a90c){if(_0x48a90c[_0x81ca('0xe')][_0x81ca('0xf')]>0x0){_0x38eb73[_0x81ca('0x10')]=_0x48a90c[_0x81ca('0xe')][0x0][_0x81ca('0x11')];}logger['info']('['+[_0x1c67f5[_0x81ca('0x12')]()]+'],\x20getAdminUser\x20crm',_0x38eb73);_0x371f81(_0x38eb73);})[_0x81ca('0x13')](function(_0x5a8871){logger[_0x81ca('0x14')]('['+[_0x1c67f5[_0x81ca('0x12')]()]+']',_0x5a8871[_0x81ca('0x15')]);_0x1f7a1b(_0x5a8871[_0x81ca('0x15')]);});});}function getUser(_0x415f57,_0x384b2a,_0x2e638a,_0x4de653,_0x3fc91f){return function(_0xa4a88f){logger['info']('['+[_0x415f57['toUpperCase']()]+_0x81ca('0x16'),_0xa4a88f);return new Promise(function(_0x3ade9b,_0x858c){if(intUtil[_0x81ca('0x17')](_0xa4a88f[_0x81ca('0x18')])){var _0x59edba={'method':_0x81ca('0xb'),'uri':_0x2e638a+_0x81ca('0x19')+_0xa4a88f[_0x81ca('0x18')]+'&'+_0x4de653+'&'+_0x3fc91f,'auth':_0x384b2a,'json':!![]};logger[_0x81ca('0x1a')]('['+[_0x415f57['toUpperCase']()]+_0x81ca('0x1b'),_0x59edba);return rp(_0x59edba)[_0x81ca('0xd')](function(_0x169d18){logger[_0x81ca('0x1a')]('['+[_0x415f57['toUpperCase']()]+_0x81ca('0x1c'),_0x169d18);if(_0x169d18[_0x81ca('0xe')][_0x81ca('0xf')]>0x0&&String(_0x169d18['result'][0x0][_0x81ca('0x1d')])==='true'){_0xa4a88f[_0x81ca('0x1e')]=_0x169d18['result'][0x0][_0x81ca('0x11')];}else{_0xa4a88f[_0x81ca('0x1e')]=_0xa4a88f[_0x81ca('0x10')];_0xa4a88f[_0x81ca('0x18')]=_0xa4a88f[_0x81ca('0x1f')];}logger[_0x81ca('0x1a')]('['+[_0x415f57[_0x81ca('0x12')]()]+'],\x20getUser\x20crm',_0xa4a88f);_0x3ade9b(_0xa4a88f);})[_0x81ca('0x13')](function(_0x1227b7){logger[_0x81ca('0x14')]('['+[_0x415f57[_0x81ca('0x12')]()]+']',_0x1227b7[_0x81ca('0x15')]);_0x858c(_0x1227b7[_0x81ca('0x15')]);});}else{logger[_0x81ca('0x1a')]('['+[_0x415f57['toUpperCase']()]+_0x81ca('0x20'));_0xa4a88f[_0x81ca('0x1e')]=_0xa4a88f[_0x81ca('0x10')];_0xa4a88f[_0x81ca('0x18')]=_0xa4a88f[_0x81ca('0x1f')];_0x3ade9b(_0xa4a88f);}});};}function createEndUser(_0x5a765b,_0x108665,_0xc4609a,_0x286eed,_0x35f1a0){logger[_0x81ca('0x1a')]('['+[_0x5a765b[_0x81ca('0x12')]()]+_0x81ca('0x21'),_0xc4609a);return new Promise(function(_0x988da7,_0x45adcb){var _0x51e233={'method':_0x81ca('0x22'),'uri':_0x286eed+_0x81ca('0x23')+_0x35f1a0,'body':{'user_name':_0xc4609a[_0x81ca('0x24')],'roles':_0x81ca('0x25'),'first_name':_0xc4609a[_0x81ca('0x24')],'active':_0x81ca('0x26'),'date_format':'System','phone':_0xc4609a['endUserNumber']},'auth':_0x108665,'json':!![]};return rp(_0x51e233)[_0x81ca('0xd')](function(_0x3503a1){logger['info']('['+[_0x5a765b[_0x81ca('0x12')]()]+_0x81ca('0x27'),_0x3503a1[_0x81ca('0xe')]);_0xc4609a[_0x81ca('0x28')]=_0x3503a1[_0x81ca('0xe')]['sys_id'];_0x988da7(_0xc4609a);})[_0x81ca('0x13')](function(_0x36928b){logger[_0x81ca('0x14')]('['+[_0x5a765b[_0x81ca('0x12')]()]+']',_0x36928b[_0x81ca('0x15')]);_0x45adcb(_0x36928b['message']);});});}function getEndUser(_0x3e7321,_0x479dd4,_0xe6015e,_0x2e6c60,_0x237901){return function(_0x5175e5){logger[_0x81ca('0x1a')]('['+[_0x3e7321[_0x81ca('0x12')]()]+_0x81ca('0x29'),_0x5175e5);return new Promise(function(_0x13a15c,_0x35f7e9){var _0x2ed373={'method':_0x81ca('0xb'),'uri':_0xe6015e+_0x81ca('0x2a')+_0x5175e5[_0x81ca('0x24')]+'&'+_0x2e6c60+'&'+_0x237901,'auth':_0x479dd4,'json':!![]};return rp(_0x2ed373)[_0x81ca('0xd')](function(_0x2c5eaa){if(_0x2c5eaa[_0x81ca('0xe')][_0x81ca('0xf')]>0x0){_0x5175e5[_0x81ca('0x28')]=_0x2c5eaa[_0x81ca('0xe')][0x0][_0x81ca('0x11')];logger['info']('['+[_0x3e7321[_0x81ca('0x12')]()]+_0x81ca('0x2b'),_0x5175e5);_0x13a15c(_0x5175e5);}else{return createEndUser(_0x3e7321,_0x479dd4,_0x5175e5,_0xe6015e,_0x2e6c60)[_0x81ca('0xd')](function(_0x405df9){logger[_0x81ca('0x1a')]('['+[_0x3e7321[_0x81ca('0x12')]()]+_0x81ca('0x2c'),_0x405df9);_0x13a15c(_0x405df9);});}})[_0x81ca('0x13')](function(_0x18176f){logger[_0x81ca('0x14')]('['+[_0x3e7321[_0x81ca('0x12')]()]+']',_0x18176f[_0x81ca('0x15')]);_0x35f7e9(_0x18176f[_0x81ca('0x15')]);});});};}function getCustomFields(_0x606efa,_0xafe893){var _0xdf45b2={};if(_0x606efa['length']>0x0){_[_0x81ca('0x2d')](_0x606efa,function(_0x4f053c){if(_[_0x81ca('0x2e')]([_0x81ca('0x2f'),_0x81ca('0x30')],_0x4f053c[_0x81ca('0x31')])&&_0x4f053c[_0x81ca('0x32')]&&!_0x4f053c['customField']){_0xdf45b2[_0x4f053c[_0x81ca('0x32')][_0x81ca('0x33')]()]=_0x4f053c['content'][_0x81ca('0x34')]();}else if(_[_0x81ca('0x2e')]([_0x81ca('0x2f'),'picklist'],_0x4f053c[_0x81ca('0x31')])&&_0x4f053c[_0x81ca('0x35')]&&_0x4f053c[_0x81ca('0x36')]){_0xdf45b2[_0x4f053c[_0x81ca('0x35')][_0x81ca('0x33')]()]=_0x4f053c[_0x81ca('0x37')][_0x81ca('0x34')]();}else if(_0x4f053c[_0x81ca('0x31')]===_0x81ca('0x38')&&_0x4f053c[_0x81ca('0x39')]&&_0x4f053c[_0x81ca('0x35')]&&_0x4f053c[_0x81ca('0x36')]){_0xdf45b2[_0x4f053c['idField'][_0x81ca('0x33')]()]=_0xafe893[_0x4f053c[_0x81ca('0x39')]]['toString']();}else if(_0x4f053c[_0x81ca('0x31')]===_0x81ca('0x3a')&&_0x4f053c[_0x81ca('0x3b')]&&_0x4f053c[_0x81ca('0x3b')]['name']&&_0x4f053c['idField']&&_0x4f053c[_0x81ca('0x36')]){_0xdf45b2[_0x4f053c[_0x81ca('0x35')][_0x81ca('0x33')]()]=_0xafe893[_0x4f053c[_0x81ca('0x3b')][_0x81ca('0x3c')][_0x81ca('0x33')]()][_0x81ca('0x34')]();}});}return _0xdf45b2;}function getTicket(_0x5c2751,_0x290f00,_0x2f6d1b,_0x2cd7e8,_0x1983fb,_0x3faf39){return function(_0x5cde47){logger[_0x81ca('0x1a')]('['+[_0x5c2751[_0x81ca('0x12')]()]+_0x81ca('0x3d'),_0x5cde47);return new Promise(function(_0x18fd3d,_0x26e9e5){var _0x43654a=_0x5c2751[_0x81ca('0x33')]()===_0x81ca('0x3e')?_0x5cde47[_0x81ca('0x1e')]:_0x5cde47['endUserId'];var _0x28ae72={'method':'POST','uri':_0x2f6d1b+'incident'+'?'+_0x3faf39,'body':Object['assign']({},{'active':'true','caller_id':_0x43654a,'assigned_to':_0x5cde47[_0x81ca('0x1e')],'short_description':intUtil[_0x81ca('0x3f')](_0x2cd7e8[_0x81ca('0x40')],_0x1983fb,'\x20'),'description':intUtil[_0x81ca('0x3f')](_0x2cd7e8[_0x81ca('0x41')],_0x1983fb,'\x0a')},getCustomFields(_0x2cd7e8['Fields'],_0x1983fb)),'auth':_0x290f00,'json':!![]};return rp(_0x28ae72)[_0x81ca('0xd')](function(_0x46f381){logger[_0x81ca('0x1a')]('['+[_0x5c2751[_0x81ca('0x12')]()]+_0x81ca('0x42'),_0x46f381[_0x81ca('0xe')]);_0x5cde47[_0x81ca('0x43')]=_0x46f381[_0x81ca('0xe')][_0x81ca('0x11')];_0x5cde47[_0x81ca('0x44')]=_0x46f381[_0x81ca('0xe')][_0x81ca('0x45')];logger['info']('['+[_0x5c2751[_0x81ca('0x12')]()]+']\x20getTicket\x20crm',_0x5cde47);_0x18fd3d(_0x5cde47);})[_0x81ca('0x13')](function(_0x52b2ba){logger['error']('['+[_0x5c2751[_0x81ca('0x12')]()]+']',_0x52b2ba['message']);_0x26e9e5(_0x52b2ba[_0x81ca('0x15')]);});});};}function createRemoteTag(_0x3a0613,_0x50f477,_0x4e6174,_0x213613){return new Promise(function(_0xa5c385,_0x56a99d){var _0x5160bb={'method':_0x81ca('0x22'),'uri':_0x4e6174+_0x81ca('0x46')+'?'+_0x213613,'body':{'short_description':_0x3a0613,'global':!![],'active':!![],'name':_0x3a0613},'auth':_0x50f477,'json':!![]};return rp(_0x5160bb)[_0x81ca('0xd')](function(_0x1065c2){var _0x4feec3=_0x1065c2[_0x81ca('0xe')][_0x81ca('0x11')];_0xa5c385(_0x4feec3);});});}function getRemoteTag(_0x199310,_0x108811,_0x59b983,_0x216af5,_0x57b7e2){return new Promise(function(_0x552630,_0x419219){var _0x410dab={'method':_0x81ca('0xb'),'uri':_0x59b983+_0x81ca('0x46')+_0x81ca('0x47')+_0x199310+'&'+_0x216af5,'auth':_0x108811,'json':!![]};return rp(_0x410dab)[_0x81ca('0xd')](function(_0x360bc0){if(_0x360bc0[_0x81ca('0xe')][_0x81ca('0xf')]>0x0){var _0x698c42=_0x360bc0[_0x81ca('0xe')][0x0][_0x81ca('0x11')];_0x552630(_0x698c42);}else{return createRemoteTag(_0x199310,_0x108811,_0x59b983,_0x216af5)[_0x81ca('0xd')](function(_0x534375){_0x552630(_0x534375);});}});});}function assignTagToIncident(_0x4095d4,_0x562efb,_0x13e624,_0x3503ed,_0x11c462){return new Promise(function(_0xa87e03,_0x2bbf06){var _0x1909e1={'method':_0x81ca('0x22'),'uri':_0x13e624+_0x81ca('0x48')+'?'+_0x11c462,'body':{'label':_0x4095d4,'table':_0x81ca('0x49'),'id_type':_0x81ca('0x4a'),'table_key':_0x3503ed[_0x81ca('0x43')],'title':_0x81ca('0x4b')+_0x3503ed[_0x81ca('0x44')],'id_display':_0x3503ed[_0x81ca('0x44')]},'auth':_0x562efb,'json':!![]};return rp(_0x1909e1)[_0x81ca('0xd')](function(_0x2125bf){_0xa87e03();})[_0x81ca('0x13')](function(){_0xa87e03();});});}function manageTags(_0x1eadfa,_0x25e221,_0x15b993,_0x40a97f,_0x556781,_0x3dd8d7,_0x56405c){return new Promise(function(_0xc8f0b0,_0x1c028f){var _0x22238b=[];_0x25e221['forEach'](function(_0x2cb9d6){_0x22238b[_0x81ca('0x4c')](getRemoteTag(_0x2cb9d6,_0x15b993,_0x40a97f,_0x3dd8d7,_0x56405c));});return Promise[_0x81ca('0x4d')](_0x22238b)[_0x81ca('0xd')](function(_0x51e5b8){if(_0x51e5b8[_0x81ca('0xf')]){logger['info']('['+[_0x1eadfa['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x51e5b8);var _0x13df4f=[];_0x51e5b8[_0x81ca('0x2d')](function(_0x14991d){_0x13df4f['push'](assignTagToIncident(_0x14991d,_0x15b993,_0x40a97f,_0x556781,_0x3dd8d7));});return Promise[_0x81ca('0x4d')](_0x13df4f)[_0x81ca('0xd')](function(){_0xc8f0b0();})['catch'](function(){_0xc8f0b0();});}else{_0xc8f0b0();}});});}function getTags(_0x39eeff,_0x2a49eb,_0xc905e6,_0x2d9f56,_0x4c6020,_0x97984c){return function(_0xde3334){return new Promise(function(_0x40421a,_0x495b00){var _0x4bdf1a=[];var _0x498af6=_0x2d9f56['Tags'];if(_0x498af6&&_0x498af6['length']>0x0){_0x4bdf1a=_[_0x81ca('0x4e')](_0x498af6,_0x81ca('0x3c'));}if(_0x4bdf1a['length']>0x0){return manageTags(_0x39eeff,_0x4bdf1a,_0x2a49eb,_0xc905e6,_0xde3334,_0x4c6020,_0x97984c)['then'](function(){_0x40421a(_0xde3334);});}else{_0x40421a(_0xde3334);}});};}function emit(_0x971867,_0x522892,_0x52dfa2){var _0x4f6459=_0x81ca('0x4f')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x81ca('0x50')+'%255EORDERBYDESCnumber';var _0x4d136b={'uri':_0x971867+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x52dfa2+_0x4f6459};io['to'](util[_0x81ca('0x51')](_0x81ca('0x52'),_0x522892))[_0x81ca('0x53')](_0x81ca('0x54'),_0x4d136b);}exports['cs']=function(_0x1f2b41,_0x196201,_0x54a378,_0x351000,_0x5ce149,_0x3ef553,_0x98ea3e,_0x1c6f59){var _0x5e57bc={};var _0x54f910={'user':_0x3ef553[_0x81ca('0x55')],'pass':_0x3ef553['password']};var _0x3564c9=_0x81ca('0x56');var _0x2605e3=_0x81ca('0x57');_0x3ef553[_0x81ca('0x58')]=intUtil[_0x81ca('0x59')](_0x3ef553[_0x81ca('0x58')]);_0x3ef553[_0x81ca('0x5a')]=intUtil[_0x81ca('0x59')](_0x3ef553[_0x81ca('0x5a')]);var _0xe1f02d=util[_0x81ca('0x51')]('%s/api/now/table/',_0x3ef553[_0x81ca('0x58')]);_0x5e57bc['userEmail']=!_['isNil'](_0x351000)?_0x351000[_0x81ca('0x5b')]:null;_0x5e57bc[_0x81ca('0x1f')]=_0x3ef553[_0x81ca('0x5b')];_0x5e57bc[_0x81ca('0x24')]=_0x1c6f59[_0x81ca('0x33')]()===_0x81ca('0x3e')?_0x196201[_0x81ca('0x5c')]:_0x196201[_0x81ca('0x5d')];_0x5e57bc[_0x81ca('0x5e')]=_0x1c6f59==='queue'||_0x1c6f59===_0x81ca('0x5f')?_0x81ca('0x60'):_0x81ca('0x3e');var _0x362dd2=util[_0x81ca('0x51')](_0x81ca('0x61'),_0x3ef553[_0x81ca('0x5a')],_0x196201[_0x81ca('0x62')],md5(_0x196201[_0x81ca('0x62')]));if(_0x5ce149&&_0x5ce149[_0x81ca('0x63')]){logger[_0x81ca('0x1a')](_0x81ca('0x64'),_0x81ca('0x65'));_0x196201['recordingURL']=_0x362dd2;}else if(_0x98ea3e&&_0x98ea3e[_0x81ca('0x66')]&&_0x98ea3e[_0x81ca('0x66')]!==_0x81ca('0x67')){logger[_0x81ca('0x1a')](_0x81ca('0x68'),_0x81ca('0x65'));_0x196201[_0x81ca('0x69')]=_0x362dd2;}else{_0x196201[_0x81ca('0x69')]='';}return getAdminUser(_0x1c6f59,_0x54f910,_0x5e57bc,_0xe1f02d,_0x2605e3,_0x3564c9)[_0x81ca('0xd')](getUser(_0x1c6f59,_0x54f910,_0xe1f02d,_0x2605e3,_0x3564c9))[_0x81ca('0xd')](getEndUser(_0x1c6f59,_0x54f910,_0xe1f02d,_0x2605e3,_0x3564c9))[_0x81ca('0xd')](getTicket(_0x1c6f59,_0x54f910,_0xe1f02d,_0x54a378,_0x196201,_0x2605e3))[_0x81ca('0xd')](function(_0x3838d7){logger[_0x81ca('0x1a')](util[_0x81ca('0x51')](_0x81ca('0x6a'),_0x3838d7['ticketId']));logger[_0x81ca('0x1a')](util[_0x81ca('0x51')](_0x81ca('0x6b'),_0x1c6f59));if(_0x1c6f59!==_0x81ca('0x5f')){logger['info']('['+[_0x1c6f59[_0x81ca('0x12')]()]+']',_0x81ca('0x6c'));emit(_0x3ef553[_0x81ca('0x58')],_0x351000[_0x81ca('0x3c')],_0x3838d7[_0x81ca('0x43')]);}})[_0x81ca('0x13')](function(_0x4f722e){logger[_0x81ca('0x14')]('['+[_0x1c6f59[_0x81ca('0x12')]()]+_0x81ca('0x6d'),util[_0x81ca('0x6e')](_0x4f722e,{'showHidden':!![],'depth':null}));});};