Built motion from commit e02f907f.|2.6.14
[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 _0x75db=['adminEmail','],\x20createEndUser\x20input\x20crm','user','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','includes','string','type','nameField','toString','picklist','idField','toLowerCase','content','variable','variableName','customField','Variable',']\x20getTicket\x20input\x20crm','outbound','POST','incident','assign','getString','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','label_entry','Incident','Incident\x20-\x20','forEach','push','all','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','localhost','sys_user?sysparm_query=user_name%3Dadmin','then','length','result','sys_id','toUpperCase','catch','error','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','true','userId','adminId'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x75db,0x1eb));var _0xb75d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x75db[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb75d('0x0'));var Promise=require(_0xb75d('0x1'));var rp=require('request-promise');var util=require(_0xb75d('0x2'));var md5=require(_0xb75d('0x3'));var Redis=require(_0xb75d('0x4'));var intUtil=require(_0xb75d('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb75d('0x6'))(_0xb75d('0x7'));config[_0xb75d('0x8')]=_['defaults'](config[_0xb75d('0x8')],{'host':_0xb75d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb75d('0x8')]));function getAdminUser(_0x2ef4b8,_0x2cab9c,_0x1d3023,_0x24e0d8,_0x262157,_0x59e68b){return new Promise(function(_0x35afe7,_0x5df194){var _0x3dd2f2={'method':'GET','uri':_0x24e0d8+_0xb75d('0xa')+'&'+_0x262157+'&'+_0x59e68b,'auth':_0x2cab9c,'json':!![]};return rp(_0x3dd2f2)[_0xb75d('0xb')](function(_0x3ad903){if(_0x3ad903['result'][_0xb75d('0xc')]>0x0){_0x1d3023['adminId']=_0x3ad903[_0xb75d('0xd')][0x0][_0xb75d('0xe')];}logger['info']('['+[_0x2ef4b8[_0xb75d('0xf')]()]+'],\x20getAdminUser\x20crm',_0x1d3023);_0x35afe7(_0x1d3023);})[_0xb75d('0x10')](function(_0x1fcdf1){logger[_0xb75d('0x11')]('['+[_0x2ef4b8[_0xb75d('0xf')]()]+']',_0x1fcdf1[_0xb75d('0x12')]);_0x5df194(_0x1fcdf1[_0xb75d('0x12')]);});});}function getUser(_0x21b83c,_0x5b0862,_0x4df7b1,_0x25f6e8,_0x3bf689){return function(_0x347ee5){logger[_0xb75d('0x13')]('['+[_0x21b83c[_0xb75d('0xf')]()]+_0xb75d('0x14'),_0x347ee5);return new Promise(function(_0x1225c3,_0x4420c0){if(intUtil[_0xb75d('0x15')](_0x347ee5[_0xb75d('0x16')])){var _0x2b3e58={'method':_0xb75d('0x17'),'uri':_0x4df7b1+_0xb75d('0x18')+_0x347ee5[_0xb75d('0x16')]+'&'+_0x25f6e8+'&'+_0x3bf689,'auth':_0x5b0862,'json':!![]};logger['info']('['+[_0x21b83c[_0xb75d('0xf')]()]+'],\x20getUser\x20rp\x20obj',_0x2b3e58);return rp(_0x2b3e58)['then'](function(_0x99aae9){logger[_0xb75d('0x13')]('['+[_0x21b83c['toUpperCase']()]+_0xb75d('0x19'),_0x99aae9);if(_0x99aae9[_0xb75d('0xd')][_0xb75d('0xc')]>0x0&&String(_0x99aae9[_0xb75d('0xd')][0x0]['active'])===_0xb75d('0x1a')){_0x347ee5['userId']=_0x99aae9[_0xb75d('0xd')][0x0][_0xb75d('0xe')];}else{_0x347ee5['userId']=_0x347ee5['adminId'];_0x347ee5['userEmail']=_0x347ee5['adminEmail'];}logger[_0xb75d('0x13')]('['+[_0x21b83c[_0xb75d('0xf')]()]+'],\x20getUser\x20crm',_0x347ee5);_0x1225c3(_0x347ee5);})['catch'](function(_0x3168d2){logger[_0xb75d('0x11')]('['+[_0x21b83c[_0xb75d('0xf')]()]+']',_0x3168d2[_0xb75d('0x12')]);_0x4420c0(_0x3168d2['message']);});}else{logger[_0xb75d('0x13')]('['+[_0x21b83c['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x347ee5[_0xb75d('0x1b')]=_0x347ee5[_0xb75d('0x1c')];_0x347ee5['userEmail']=_0x347ee5[_0xb75d('0x1d')];_0x1225c3(_0x347ee5);}});};}function createEndUser(_0x158c0b,_0x48814b,_0x1ed5bc,_0x39c04d,_0x2eb878){logger[_0xb75d('0x13')]('['+[_0x158c0b[_0xb75d('0xf')]()]+_0xb75d('0x1e'),_0x1ed5bc);return new Promise(function(_0xfacb91,_0x311434){var _0x25f8a1={'method':'POST','uri':_0x39c04d+'sys_user?'+_0x2eb878,'body':{'user_name':_0x1ed5bc['endUserNumber'],'roles':_0xb75d('0x1f'),'first_name':_0x1ed5bc[_0xb75d('0x20')],'active':_0xb75d('0x1a'),'date_format':_0xb75d('0x21'),'phone':_0x1ed5bc['endUserNumber']},'auth':_0x48814b,'json':!![]};return rp(_0x25f8a1)[_0xb75d('0xb')](function(_0x194059){logger[_0xb75d('0x13')]('['+[_0x158c0b[_0xb75d('0xf')]()]+_0xb75d('0x22'),_0x194059['result']);_0x1ed5bc[_0xb75d('0x23')]=_0x194059[_0xb75d('0xd')][_0xb75d('0xe')];_0xfacb91(_0x1ed5bc);})[_0xb75d('0x10')](function(_0x174aa7){logger[_0xb75d('0x11')]('['+[_0x158c0b['toUpperCase']()]+']',_0x174aa7[_0xb75d('0x12')]);_0x311434(_0x174aa7[_0xb75d('0x12')]);});});}function getEndUser(_0x199b45,_0x36ab48,_0x5650e2,_0xa2f18c,_0x19afc7){return function(_0x3cb075){logger[_0xb75d('0x13')]('['+[_0x199b45[_0xb75d('0xf')]()]+_0xb75d('0x24'),_0x3cb075);return new Promise(function(_0x1b4d64,_0x359f0a){var _0x37b911={'method':_0xb75d('0x17'),'uri':_0x5650e2+'sys_user?sysparm_query=phone%3D'+_0x3cb075['endUserNumber']+'&'+_0xa2f18c+'&'+_0x19afc7,'auth':_0x36ab48,'json':!![]};return rp(_0x37b911)[_0xb75d('0xb')](function(_0x5206cd){if(_0x5206cd['result'][_0xb75d('0xc')]>0x0){_0x3cb075[_0xb75d('0x23')]=_0x5206cd[_0xb75d('0xd')][0x0][_0xb75d('0xe')];logger[_0xb75d('0x13')]('['+[_0x199b45[_0xb75d('0xf')]()]+'],\x20getEndUser\x20crm',_0x3cb075);_0x1b4d64(_0x3cb075);}else{return createEndUser(_0x199b45,_0x36ab48,_0x3cb075,_0x5650e2,_0xa2f18c)[_0xb75d('0xb')](function(_0x1cd05d){logger[_0xb75d('0x13')]('['+[_0x199b45[_0xb75d('0xf')]()]+'],\x20createEndUser\x20crm',_0x1cd05d);_0x1b4d64(_0x1cd05d);});}})[_0xb75d('0x10')](function(_0x4d2a3e){logger[_0xb75d('0x11')]('['+[_0x199b45['toUpperCase']()]+']',_0x4d2a3e[_0xb75d('0x12')]);_0x359f0a(_0x4d2a3e[_0xb75d('0x12')]);});});};}function getCustomFields(_0x4191c2,_0x1a2884){var _0xbcdf98={};if(_0x4191c2[_0xb75d('0xc')]>0x0){_['forEach'](_0x4191c2,function(_0xc86ebf){if(_[_0xb75d('0x25')]([_0xb75d('0x26'),'picklist'],_0xc86ebf[_0xb75d('0x27')])&&_0xc86ebf[_0xb75d('0x28')]&&!_0xc86ebf['customField']){_0xbcdf98[_0xc86ebf[_0xb75d('0x28')]['toLowerCase']()]=_0xc86ebf['content'][_0xb75d('0x29')]();}else if(_[_0xb75d('0x25')]([_0xb75d('0x26'),_0xb75d('0x2a')],_0xc86ebf[_0xb75d('0x27')])&&_0xc86ebf[_0xb75d('0x2b')]&&_0xc86ebf['customField']){_0xbcdf98[_0xc86ebf[_0xb75d('0x2b')][_0xb75d('0x2c')]()]=_0xc86ebf[_0xb75d('0x2d')]['toString']();}else if(_0xc86ebf['type']===_0xb75d('0x2e')&&_0xc86ebf[_0xb75d('0x2f')]&&_0xc86ebf[_0xb75d('0x2b')]&&_0xc86ebf[_0xb75d('0x30')]){_0xbcdf98[_0xc86ebf['idField'][_0xb75d('0x2c')]()]=_0x1a2884[_0xc86ebf[_0xb75d('0x2f')]][_0xb75d('0x29')]();}else if(_0xc86ebf[_0xb75d('0x27')]==='customVariable'&&_0xc86ebf[_0xb75d('0x31')]&&_0xc86ebf[_0xb75d('0x31')]['name']&&_0xc86ebf[_0xb75d('0x2b')]&&_0xc86ebf['customField']){_0xbcdf98[_0xc86ebf[_0xb75d('0x2b')][_0xb75d('0x2c')]()]=_0x1a2884[_0xc86ebf['Variable']['name'][_0xb75d('0x2c')]()][_0xb75d('0x29')]();}});}return _0xbcdf98;}function getTicket(_0x1d7251,_0x44a487,_0x12bc52,_0x402f4b,_0x400452,_0x46502b){return function(_0x3b2e28){logger[_0xb75d('0x13')]('['+[_0x1d7251[_0xb75d('0xf')]()]+_0xb75d('0x32'),_0x3b2e28);return new Promise(function(_0x53380a,_0x52262f){var _0x4e3a06=_0x1d7251['toLowerCase']()===_0xb75d('0x33')?_0x3b2e28['userId']:_0x3b2e28[_0xb75d('0x23')];var _0x302060={'method':_0xb75d('0x34'),'uri':_0x12bc52+_0xb75d('0x35')+'?'+_0x46502b,'body':Object[_0xb75d('0x36')]({},{'active':_0xb75d('0x1a'),'caller_id':_0x4e3a06,'assigned_to':_0x3b2e28[_0xb75d('0x1b')],'short_description':intUtil['getString'](_0x402f4b['Subjects'],_0x400452,'\x20'),'description':intUtil[_0xb75d('0x37')](_0x402f4b[_0xb75d('0x38')],_0x400452,'\x0a')},getCustomFields(_0x402f4b['Fields'],_0x400452)),'auth':_0x44a487,'json':!![]};return rp(_0x302060)['then'](function(_0x2e000b){logger[_0xb75d('0x13')]('['+[_0x1d7251[_0xb75d('0xf')]()]+_0xb75d('0x39'),_0x2e000b[_0xb75d('0xd')]);_0x3b2e28[_0xb75d('0x3a')]=_0x2e000b[_0xb75d('0xd')][_0xb75d('0xe')];_0x3b2e28[_0xb75d('0x3b')]=_0x2e000b[_0xb75d('0xd')][_0xb75d('0x3c')];logger['info']('['+[_0x1d7251['toUpperCase']()]+_0xb75d('0x3d'),_0x3b2e28);_0x53380a(_0x3b2e28);})[_0xb75d('0x10')](function(_0x3bbe04){logger[_0xb75d('0x11')]('['+[_0x1d7251['toUpperCase']()]+']',_0x3bbe04['message']);_0x52262f(_0x3bbe04[_0xb75d('0x12')]);});});};}function createRemoteTag(_0x220acc,_0x231f5,_0xf631cf,_0x1aefb1){return new Promise(function(_0x2ebd0c,_0x1b9ba1){var _0x180b4a={'method':'POST','uri':_0xf631cf+'label'+'?'+_0x1aefb1,'body':{'short_description':_0x220acc,'global':!![],'active':!![],'name':_0x220acc},'auth':_0x231f5,'json':!![]};return rp(_0x180b4a)['then'](function(_0x60ce71){var _0x8c3ee3=_0x60ce71[_0xb75d('0xd')][_0xb75d('0xe')];_0x2ebd0c(_0x8c3ee3);});});}function getRemoteTag(_0x51cfde,_0x3a3bd2,_0x228ffc,_0x185cc8,_0x563131){return new Promise(function(_0x4afce5,_0x4c2160){var _0x2c948c={'method':_0xb75d('0x17'),'uri':_0x228ffc+_0xb75d('0x3e')+'?sysparm_query=name%3D'+_0x51cfde+'&'+_0x185cc8,'auth':_0x3a3bd2,'json':!![]};return rp(_0x2c948c)['then'](function(_0x243642){if(_0x243642[_0xb75d('0xd')]['length']>0x0){var _0x2cf80d=_0x243642[_0xb75d('0xd')][0x0][_0xb75d('0xe')];_0x4afce5(_0x2cf80d);}else{return createRemoteTag(_0x51cfde,_0x3a3bd2,_0x228ffc,_0x185cc8)[_0xb75d('0xb')](function(_0xfce9d2){_0x4afce5(_0xfce9d2);});}});});}function assignTagToIncident(_0x934aa0,_0x488417,_0x454776,_0x7839,_0x48fbfc){return new Promise(function(_0x449e77,_0x1d31dc){var _0x24b771={'method':_0xb75d('0x34'),'uri':_0x454776+_0xb75d('0x3f')+'?'+_0x48fbfc,'body':{'label':_0x934aa0,'table':'incident','id_type':_0xb75d('0x40'),'table_key':_0x7839[_0xb75d('0x3a')],'title':_0xb75d('0x41')+_0x7839['ticketNumber'],'id_display':_0x7839[_0xb75d('0x3b')]},'auth':_0x488417,'json':!![]};return rp(_0x24b771)[_0xb75d('0xb')](function(_0x510971){_0x449e77();})[_0xb75d('0x10')](function(){_0x449e77();});});}function manageTags(_0x3655cb,_0x10a3e8,_0x42d437,_0xae5f6f,_0x1ee779,_0x2e587c,_0x24eaaa){return new Promise(function(_0x5a2c71,_0x54a14d){var _0x5ec2dc=[];_0x10a3e8[_0xb75d('0x42')](function(_0x364357){_0x5ec2dc[_0xb75d('0x43')](getRemoteTag(_0x364357,_0x42d437,_0xae5f6f,_0x2e587c,_0x24eaaa));});return Promise[_0xb75d('0x44')](_0x5ec2dc)[_0xb75d('0xb')](function(_0x2372ae){if(_0x2372ae[_0xb75d('0xc')]){logger[_0xb75d('0x13')]('['+[_0x3655cb['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x2372ae);var _0x328100=[];_0x2372ae[_0xb75d('0x42')](function(_0x481f49){_0x328100[_0xb75d('0x43')](assignTagToIncident(_0x481f49,_0x42d437,_0xae5f6f,_0x1ee779,_0x2e587c));});return Promise['all'](_0x328100)[_0xb75d('0xb')](function(){_0x5a2c71();})[_0xb75d('0x10')](function(){_0x5a2c71();});}else{_0x5a2c71();}});});}function getTags(_0x54cded,_0xa5200a,_0x1e8d5b,_0x2a769a,_0x4b5a64,_0x54e642){return function(_0x141882){return new Promise(function(_0x27d4de,_0x4d4815){var _0x4b60e6=[];var _0x19705b=_0x2a769a['Tags'];if(_0x19705b&&_0x19705b['length']>0x0){_0x4b60e6=_['map'](_0x19705b,'name');}if(_0x4b60e6[_0xb75d('0xc')]>0x0){return manageTags(_0x54cded,_0x4b60e6,_0xa5200a,_0x1e8d5b,_0x141882,_0x4b5a64,_0x54e642)['then'](function(){_0x27d4de(_0x141882);});}else{_0x27d4de(_0x141882);}});};}function emit(_0x51130c,_0x18a7df,_0x3815c7){var _0x3a7d15=_0xb75d('0x45')+_0xb75d('0x46')+_0xb75d('0x47')+'%255EORDERBYDESCnumber';var _0x2071e7={'uri':_0x51130c+_0xb75d('0x48')+_0x3815c7+_0x3a7d15};io['to'](util[_0xb75d('0x49')](_0xb75d('0x4a'),_0x18a7df))[_0xb75d('0x4b')](_0xb75d('0x4c'),_0x2071e7);}exports['cs']=function(_0xa62b0e,_0x31b463,_0x4faa73,_0x1ab112,_0x798ae0,_0x42ab3e,_0x34c76b,_0x2436c7){var _0x33ad9e={};var _0x578af6={'user':_0x42ab3e[_0xb75d('0x4d')],'pass':_0x42ab3e[_0xb75d('0x4e')]};var _0x506d0b=_0xb75d('0x4f');var _0xa2150a=_0xb75d('0x50');_0x42ab3e[_0xb75d('0x51')]=intUtil[_0xb75d('0x52')](_0x42ab3e[_0xb75d('0x51')]);_0x42ab3e[_0xb75d('0x53')]=intUtil[_0xb75d('0x52')](_0x42ab3e[_0xb75d('0x53')]);var _0x257de4=util['format'](_0xb75d('0x54'),_0x42ab3e[_0xb75d('0x51')]);_0x33ad9e[_0xb75d('0x16')]=!_['isNil'](_0x1ab112)?_0x1ab112[_0xb75d('0x55')]:null;_0x33ad9e[_0xb75d('0x1d')]=_0x42ab3e[_0xb75d('0x55')];_0x33ad9e['endUserNumber']=_0x2436c7[_0xb75d('0x2c')]()==='outbound'?_0x31b463[_0xb75d('0x56')]:_0x31b463[_0xb75d('0x57')];_0x33ad9e['callDirection']=_0x2436c7===_0xb75d('0x58')||_0x2436c7===_0xb75d('0x59')?'queue':'outbound';var _0x378d31=util[_0xb75d('0x49')](_0xb75d('0x5a'),_0x42ab3e[_0xb75d('0x53')],_0x31b463[_0xb75d('0x5b')],md5(_0x31b463['uniqueid']));if(_0x798ae0&&_0x798ae0[_0xb75d('0x5c')]){logger['info'](_0xb75d('0x5d'),_0xb75d('0x5e'));_0x31b463[_0xb75d('0x5f')]=_0x378d31;}else if(_0x34c76b&&_0x34c76b[_0xb75d('0x60')]&&_0x34c76b[_0xb75d('0x60')]!==_0xb75d('0x61')){logger[_0xb75d('0x13')](_0xb75d('0x62'),'Recording\x20is\x20enabled!');_0x31b463[_0xb75d('0x5f')]=_0x378d31;}else{_0x31b463[_0xb75d('0x5f')]='';}return getAdminUser(_0x2436c7,_0x578af6,_0x33ad9e,_0x257de4,_0xa2150a,_0x506d0b)[_0xb75d('0xb')](getUser(_0x2436c7,_0x578af6,_0x257de4,_0xa2150a,_0x506d0b))[_0xb75d('0xb')](getEndUser(_0x2436c7,_0x578af6,_0x257de4,_0xa2150a,_0x506d0b))[_0xb75d('0xb')](getTicket(_0x2436c7,_0x578af6,_0x257de4,_0x4faa73,_0x31b463,_0xa2150a))['then'](function(_0x121540){logger['info'](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x121540[_0xb75d('0x3a')]));logger['info'](util[_0xb75d('0x49')](_0xb75d('0x63'),_0x2436c7));if(_0x2436c7!==_0xb75d('0x59')){logger['info']('['+[_0x2436c7[_0xb75d('0xf')]()]+']',_0xb75d('0x64'));emit(_0x42ab3e[_0xb75d('0x51')],_0x1ab112[_0xb75d('0x65')],_0x121540[_0xb75d('0x3a')]);}})[_0xb75d('0x10')](function(_0x14e07a){logger[_0xb75d('0x11')]('['+[_0x2436c7['toUpperCase']()]+_0xb75d('0x66'),util[_0xb75d('0x67')](_0x14e07a,{'showHidden':!![],'depth':null}));});};