Built motion from commit 9d0783e6.|2.6.13
[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 _0xa425=['password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','md5','ioredis','./util','../../../../config/environment','servicenow','redis','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','true','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toString','toLowerCase','content','variable','variableName','idField','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','username'];(function(_0x253b44,_0x4258bb){var _0x548c50=function(_0x13155a){while(--_0x13155a){_0x253b44['push'](_0x253b44['shift']());}};_0x548c50(++_0x4258bb);}(_0xa425,0x161));var _0x5a42=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0xa425[_0x34021d];return _0x16597b;};'use strict';var _=require(_0x5a42('0x0'));var Promise=require(_0x5a42('0x1'));var rp=require(_0x5a42('0x2'));var util=require('util');var md5=require(_0x5a42('0x3'));var Redis=require(_0x5a42('0x4'));var intUtil=require(_0x5a42('0x5'));var config=require(_0x5a42('0x6'));var logger=require('../../../../config/logger')(_0x5a42('0x7'));config[_0x5a42('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5a42('0x9'))(new Redis(config[_0x5a42('0x8')]));function getAdminUser(_0x2b9c4f,_0x4f3b82,_0x267f8b,_0x583302,_0x1c50d7,_0x28b81a){return new Promise(function(_0x523eba,_0x599989){var _0x45ad08={'method':'GET','uri':_0x583302+_0x5a42('0xa')+'&'+_0x1c50d7+'&'+_0x28b81a,'auth':_0x4f3b82,'json':!![]};return rp(_0x45ad08)['then'](function(_0x6ae437){if(_0x6ae437[_0x5a42('0xb')][_0x5a42('0xc')]>0x0){_0x267f8b[_0x5a42('0xd')]=_0x6ae437['result'][0x0][_0x5a42('0xe')];}logger[_0x5a42('0xf')]('['+[_0x2b9c4f[_0x5a42('0x10')]()]+_0x5a42('0x11'),_0x267f8b);_0x523eba(_0x267f8b);})[_0x5a42('0x12')](function(_0x1c8375){logger[_0x5a42('0x13')]('['+[_0x2b9c4f['toUpperCase']()]+']',_0x1c8375[_0x5a42('0x14')]);_0x599989(_0x1c8375[_0x5a42('0x14')]);});});}function getUser(_0x2f3c9a,_0x183f0c,_0x2c60d0,_0x169251,_0x36f536){return function(_0x36d947){logger['info']('['+[_0x2f3c9a[_0x5a42('0x10')]()]+_0x5a42('0x15'),_0x36d947);return new Promise(function(_0xd81c19,_0x40d9c6){if(intUtil[_0x5a42('0x16')](_0x36d947[_0x5a42('0x17')])){var _0x6d1997={'method':_0x5a42('0x18'),'uri':_0x2c60d0+'sys_user?sysparm_query=email%3D'+_0x36d947[_0x5a42('0x17')]+'&'+_0x169251+'&'+_0x36f536,'auth':_0x183f0c,'json':!![]};logger[_0x5a42('0xf')]('['+[_0x2f3c9a[_0x5a42('0x10')]()]+_0x5a42('0x19'),_0x6d1997);return rp(_0x6d1997)[_0x5a42('0x1a')](function(_0x4d68e7){logger['info']('['+[_0x2f3c9a['toUpperCase']()]+_0x5a42('0x1b'),_0x4d68e7);if(_0x4d68e7['result']['length']>0x0&&String(_0x4d68e7['result'][0x0]['active'])===_0x5a42('0x1c')){_0x36d947[_0x5a42('0x1d')]=_0x4d68e7[_0x5a42('0xb')][0x0][_0x5a42('0xe')];}else{_0x36d947[_0x5a42('0x1d')]=_0x36d947[_0x5a42('0xd')];_0x36d947[_0x5a42('0x17')]=_0x36d947[_0x5a42('0x1e')];}logger[_0x5a42('0xf')]('['+[_0x2f3c9a[_0x5a42('0x10')]()]+'],\x20getUser\x20crm',_0x36d947);_0xd81c19(_0x36d947);})[_0x5a42('0x12')](function(_0x554c97){logger['error']('['+[_0x2f3c9a[_0x5a42('0x10')]()]+']',_0x554c97['message']);_0x40d9c6(_0x554c97[_0x5a42('0x14')]);});}else{logger[_0x5a42('0xf')]('['+[_0x2f3c9a['toUpperCase']()]+_0x5a42('0x1f'));_0x36d947[_0x5a42('0x1d')]=_0x36d947['adminId'];_0x36d947[_0x5a42('0x17')]=_0x36d947[_0x5a42('0x1e')];_0xd81c19(_0x36d947);}});};}function createEndUser(_0x3405a5,_0x11f338,_0x233cbf,_0x2207c7,_0x2f9756){logger[_0x5a42('0xf')]('['+[_0x3405a5[_0x5a42('0x10')]()]+_0x5a42('0x20'),_0x233cbf);return new Promise(function(_0x26a467,_0x5c6e3c){var _0x46dd7a={'method':_0x5a42('0x21'),'uri':_0x2207c7+_0x5a42('0x22')+_0x2f9756,'body':{'user_name':_0x233cbf[_0x5a42('0x23')],'roles':'user','first_name':_0x233cbf[_0x5a42('0x23')],'active':_0x5a42('0x1c'),'date_format':_0x5a42('0x24'),'phone':_0x233cbf[_0x5a42('0x23')]},'auth':_0x11f338,'json':!![]};return rp(_0x46dd7a)[_0x5a42('0x1a')](function(_0x52b050){logger[_0x5a42('0xf')]('['+[_0x3405a5[_0x5a42('0x10')]()]+_0x5a42('0x25'),_0x52b050[_0x5a42('0xb')]);_0x233cbf[_0x5a42('0x26')]=_0x52b050[_0x5a42('0xb')][_0x5a42('0xe')];_0x26a467(_0x233cbf);})[_0x5a42('0x12')](function(_0x3ce7c2){logger[_0x5a42('0x13')]('['+[_0x3405a5[_0x5a42('0x10')]()]+']',_0x3ce7c2[_0x5a42('0x14')]);_0x5c6e3c(_0x3ce7c2['message']);});});}function getEndUser(_0x2a3cc8,_0x738bf9,_0x237d43,_0x3aae82,_0x245063){return function(_0x13a7fe){logger[_0x5a42('0xf')]('['+[_0x2a3cc8[_0x5a42('0x10')]()]+'],\x20getEndUser\x20input\x20crm',_0x13a7fe);return new Promise(function(_0x2f3033,_0x3520d0){var _0xbc9459={'method':_0x5a42('0x18'),'uri':_0x237d43+_0x5a42('0x27')+_0x13a7fe['endUserNumber']+'&'+_0x3aae82+'&'+_0x245063,'auth':_0x738bf9,'json':!![]};return rp(_0xbc9459)[_0x5a42('0x1a')](function(_0x1f3ad1){if(_0x1f3ad1[_0x5a42('0xb')]['length']>0x0){_0x13a7fe[_0x5a42('0x26')]=_0x1f3ad1[_0x5a42('0xb')][0x0][_0x5a42('0xe')];logger[_0x5a42('0xf')]('['+[_0x2a3cc8['toUpperCase']()]+_0x5a42('0x28'),_0x13a7fe);_0x2f3033(_0x13a7fe);}else{return createEndUser(_0x2a3cc8,_0x738bf9,_0x13a7fe,_0x237d43,_0x3aae82)[_0x5a42('0x1a')](function(_0x59ec4e){logger[_0x5a42('0xf')]('['+[_0x2a3cc8['toUpperCase']()]+_0x5a42('0x29'),_0x59ec4e);_0x2f3033(_0x59ec4e);});}})[_0x5a42('0x12')](function(_0x59cf1b){logger[_0x5a42('0x13')]('['+[_0x2a3cc8['toUpperCase']()]+']',_0x59cf1b[_0x5a42('0x14')]);_0x3520d0(_0x59cf1b['message']);});});};}function getCustomFields(_0x554a58,_0x1bbbaf){var _0x55922b={};if(_0x554a58[_0x5a42('0xc')]>0x0){_[_0x5a42('0x2a')](_0x554a58,function(_0x56b090){if(_[_0x5a42('0x2b')]([_0x5a42('0x2c'),_0x5a42('0x2d')],_0x56b090[_0x5a42('0x2e')])&&_0x56b090[_0x5a42('0x2f')]&&!_0x56b090[_0x5a42('0x30')]){_0x55922b[_0x56b090[_0x5a42('0x2f')]['toLowerCase']()]=_0x56b090['content'][_0x5a42('0x31')]();}else if(_[_0x5a42('0x2b')]([_0x5a42('0x2c'),_0x5a42('0x2d')],_0x56b090[_0x5a42('0x2e')])&&_0x56b090['idField']&&_0x56b090['customField']){_0x55922b[_0x56b090['idField'][_0x5a42('0x32')]()]=_0x56b090[_0x5a42('0x33')][_0x5a42('0x31')]();}else if(_0x56b090[_0x5a42('0x2e')]===_0x5a42('0x34')&&_0x56b090[_0x5a42('0x35')]&&_0x56b090[_0x5a42('0x36')]&&_0x56b090['customField']){_0x55922b[_0x56b090[_0x5a42('0x36')][_0x5a42('0x32')]()]=_0x1bbbaf[_0x56b090[_0x5a42('0x35')]][_0x5a42('0x31')]();}else if(_0x56b090[_0x5a42('0x2e')]===_0x5a42('0x37')&&_0x56b090[_0x5a42('0x38')]&&_0x56b090['Variable'][_0x5a42('0x39')]&&_0x56b090[_0x5a42('0x36')]&&_0x56b090[_0x5a42('0x30')]){_0x55922b[_0x56b090[_0x5a42('0x36')][_0x5a42('0x32')]()]=_0x1bbbaf[_0x56b090[_0x5a42('0x38')][_0x5a42('0x39')]['toLowerCase']()]['toString']();}});}return _0x55922b;}function getTicket(_0x24d74c,_0x1a5472,_0x3c48c9,_0x3a640e,_0x40d205,_0x393777){return function(_0xefd999){logger['info']('['+[_0x24d74c['toUpperCase']()]+_0x5a42('0x3a'),_0xefd999);return new Promise(function(_0x500e75,_0x591e24){var _0x8abcc3=_0x24d74c['toLowerCase']()===_0x5a42('0x3b')?_0xefd999[_0x5a42('0x1d')]:_0xefd999['endUserId'];var _0x6411d1={'method':'POST','uri':_0x3c48c9+_0x5a42('0x3c')+'?'+_0x393777,'body':Object[_0x5a42('0x3d')]({},{'active':'true','caller_id':_0x8abcc3,'assigned_to':_0xefd999[_0x5a42('0x1d')],'short_description':intUtil[_0x5a42('0x3e')](_0x3a640e[_0x5a42('0x3f')],_0x40d205,'\x20'),'description':intUtil[_0x5a42('0x3e')](_0x3a640e[_0x5a42('0x40')],_0x40d205,'\x0a')},getCustomFields(_0x3a640e[_0x5a42('0x41')],_0x40d205)),'auth':_0x1a5472,'json':!![]};return rp(_0x6411d1)[_0x5a42('0x1a')](function(_0x33eabf){logger[_0x5a42('0xf')]('['+[_0x24d74c['toUpperCase']()]+_0x5a42('0x42'),_0x33eabf[_0x5a42('0xb')]);_0xefd999[_0x5a42('0x43')]=_0x33eabf[_0x5a42('0xb')][_0x5a42('0xe')];_0xefd999[_0x5a42('0x44')]=_0x33eabf[_0x5a42('0xb')][_0x5a42('0x45')];logger[_0x5a42('0xf')]('['+[_0x24d74c[_0x5a42('0x10')]()]+']\x20getTicket\x20crm',_0xefd999);_0x500e75(_0xefd999);})[_0x5a42('0x12')](function(_0x26f2ed){logger[_0x5a42('0x13')]('['+[_0x24d74c[_0x5a42('0x10')]()]+']',_0x26f2ed[_0x5a42('0x14')]);_0x591e24(_0x26f2ed['message']);});});};}function createRemoteTag(_0x369ac9,_0x522fee,_0x347bed,_0x4ef5d9){return new Promise(function(_0x58c490,_0x23c777){var _0x515f2f={'method':_0x5a42('0x21'),'uri':_0x347bed+'label'+'?'+_0x4ef5d9,'body':{'short_description':_0x369ac9,'global':!![],'active':!![],'name':_0x369ac9},'auth':_0x522fee,'json':!![]};return rp(_0x515f2f)['then'](function(_0x4e0099){var _0x1cb2d1=_0x4e0099[_0x5a42('0xb')]['sys_id'];_0x58c490(_0x1cb2d1);});});}function getRemoteTag(_0x4f703f,_0x20a42f,_0x132161,_0x26d1b3,_0x2ce00b){return new Promise(function(_0x477527,_0xc13d62){var _0x590bcd={'method':_0x5a42('0x18'),'uri':_0x132161+_0x5a42('0x46')+_0x5a42('0x47')+_0x4f703f+'&'+_0x26d1b3,'auth':_0x20a42f,'json':!![]};return rp(_0x590bcd)[_0x5a42('0x1a')](function(_0x33e22c){if(_0x33e22c[_0x5a42('0xb')]['length']>0x0){var _0xc02866=_0x33e22c[_0x5a42('0xb')][0x0][_0x5a42('0xe')];_0x477527(_0xc02866);}else{return createRemoteTag(_0x4f703f,_0x20a42f,_0x132161,_0x26d1b3)['then'](function(_0x555a0c){_0x477527(_0x555a0c);});}});});}function assignTagToIncident(_0x298cd3,_0xda173,_0x5b8efe,_0x523c63,_0x38073c){return new Promise(function(_0x13bb5a,_0x1b67d5){var _0x57cf02={'method':_0x5a42('0x21'),'uri':_0x5b8efe+'label_entry'+'?'+_0x38073c,'body':{'label':_0x298cd3,'table':_0x5a42('0x3c'),'id_type':_0x5a42('0x48'),'table_key':_0x523c63[_0x5a42('0x43')],'title':_0x5a42('0x49')+_0x523c63[_0x5a42('0x44')],'id_display':_0x523c63['ticketNumber']},'auth':_0xda173,'json':!![]};return rp(_0x57cf02)['then'](function(_0x13b838){_0x13bb5a();})[_0x5a42('0x12')](function(){_0x13bb5a();});});}function manageTags(_0x2ea868,_0x7bb11f,_0x14e52d,_0x3fb98f,_0xd563c1,_0x201e10,_0x27bf39){return new Promise(function(_0x4866c9,_0x451cc7){var _0x1d272f=[];_0x7bb11f[_0x5a42('0x2a')](function(_0x21dc7c){_0x1d272f[_0x5a42('0x4a')](getRemoteTag(_0x21dc7c,_0x14e52d,_0x3fb98f,_0x201e10,_0x27bf39));});return Promise[_0x5a42('0x4b')](_0x1d272f)[_0x5a42('0x1a')](function(_0xda3765){if(_0xda3765['length']){logger[_0x5a42('0xf')]('['+[_0x2ea868['toUpperCase']()]+_0x5a42('0x4c'),_0xda3765);var _0x1022a0=[];_0xda3765[_0x5a42('0x2a')](function(_0x54841d){_0x1022a0[_0x5a42('0x4a')](assignTagToIncident(_0x54841d,_0x14e52d,_0x3fb98f,_0xd563c1,_0x201e10));});return Promise[_0x5a42('0x4b')](_0x1022a0)['then'](function(){_0x4866c9();})[_0x5a42('0x12')](function(){_0x4866c9();});}else{_0x4866c9();}});});}function getTags(_0x26975c,_0xeeb43,_0x4d62a5,_0x2a97ff,_0x48d8a8,_0x28f24c){return function(_0xc21ee5){return new Promise(function(_0x4234da,_0x43e175){var _0x40b51d=[];var _0x1b33a8=_0x2a97ff[_0x5a42('0x4d')];if(_0x1b33a8&&_0x1b33a8[_0x5a42('0xc')]>0x0){_0x40b51d=_[_0x5a42('0x4e')](_0x1b33a8,'name');}if(_0x40b51d[_0x5a42('0xc')]>0x0){return manageTags(_0x26975c,_0x40b51d,_0xeeb43,_0x4d62a5,_0xc21ee5,_0x48d8a8,_0x28f24c)[_0x5a42('0x1a')](function(){_0x4234da(_0xc21ee5);});}else{_0x4234da(_0xc21ee5);}});};}function emit(_0x6e5536,_0x11c583,_0x29be47){var _0x4b7d9f=_0x5a42('0x4f')+_0x5a42('0x50')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x5a42('0x51');var _0x1f11df={'uri':_0x6e5536+_0x5a42('0x52')+_0x29be47+_0x4b7d9f};io['to'](util[_0x5a42('0x53')](_0x5a42('0x54'),_0x11c583))[_0x5a42('0x55')]('trigger:browser:url',_0x1f11df);}exports['cs']=function(_0x12b9b5,_0x5effb0,_0x38544a,_0x8a048b,_0x421cd9,_0x146dc4,_0x1b4d9c,_0x50049f){var _0x179ed4={};var _0x2c79b2={'user':_0x146dc4[_0x5a42('0x56')],'pass':_0x146dc4[_0x5a42('0x57')]};var _0x4a89e5=_0x5a42('0x58');var _0x173e65=_0x5a42('0x59');_0x146dc4[_0x5a42('0x5a')]=intUtil['stripTrailingSlash'](_0x146dc4[_0x5a42('0x5a')]);_0x146dc4['serverUrl']=intUtil[_0x5a42('0x5b')](_0x146dc4[_0x5a42('0x5c')]);var _0x2665ed=util[_0x5a42('0x53')]('%s/api/now/table/',_0x146dc4[_0x5a42('0x5a')]);_0x179ed4[_0x5a42('0x17')]=!_[_0x5a42('0x5d')](_0x8a048b)?_0x8a048b['email']:null;_0x179ed4[_0x5a42('0x1e')]=_0x146dc4[_0x5a42('0x5e')];_0x179ed4[_0x5a42('0x23')]=_0x50049f[_0x5a42('0x32')]()===_0x5a42('0x3b')?_0x5effb0[_0x5a42('0x5f')]:_0x5effb0[_0x5a42('0x60')];_0x179ed4[_0x5a42('0x61')]=_0x50049f===_0x5a42('0x62')||_0x50049f===_0x5a42('0x63')?'queue':_0x5a42('0x3b');var _0x48c1b9=util[_0x5a42('0x53')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x146dc4[_0x5a42('0x5c')],_0x5effb0[_0x5a42('0x64')],md5(_0x5effb0[_0x5a42('0x64')]));if(_0x421cd9&&_0x421cd9[_0x5a42('0x65')]){logger[_0x5a42('0xf')](_0x5a42('0x66'),_0x5a42('0x67'));_0x5effb0[_0x5a42('0x68')]=_0x48c1b9;}else if(_0x1b4d9c&&_0x1b4d9c[_0x5a42('0x69')]&&_0x1b4d9c['recordingFormat']!==_0x5a42('0x6a')){logger['info']('[OUTBOUND]',_0x5a42('0x67'));_0x5effb0[_0x5a42('0x68')]=_0x48c1b9;}else{_0x5effb0[_0x5a42('0x68')]='';}return getAdminUser(_0x50049f,_0x2c79b2,_0x179ed4,_0x2665ed,_0x173e65,_0x4a89e5)[_0x5a42('0x1a')](getUser(_0x50049f,_0x2c79b2,_0x2665ed,_0x173e65,_0x4a89e5))[_0x5a42('0x1a')](getEndUser(_0x50049f,_0x2c79b2,_0x2665ed,_0x173e65,_0x4a89e5))['then'](getTicket(_0x50049f,_0x2c79b2,_0x2665ed,_0x38544a,_0x5effb0,_0x173e65))[_0x5a42('0x1a')](function(_0x329162){logger[_0x5a42('0xf')](util[_0x5a42('0x53')](_0x5a42('0x6b'),_0x329162[_0x5a42('0x43')]));logger[_0x5a42('0xf')](util[_0x5a42('0x53')](_0x5a42('0x6c'),_0x50049f));if(_0x50049f!=='unmanaged'){logger['info']('['+[_0x50049f[_0x5a42('0x10')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x146dc4[_0x5a42('0x5a')],_0x8a048b['name'],_0x329162[_0x5a42('0x43')]);}})[_0x5a42('0x12')](function(_0x58b77e){logger[_0x5a42('0x13')]('['+[_0x50049f['toUpperCase']()]+_0x5a42('0x6d'),util['inspect'](_0x58b77e,{'showHidden':!![],'depth':null}));});};