Built motion from commit ff78e754.|2.6.29
[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 _0xb352=['Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%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','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','result','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm','catch','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','System','then','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','length','endUserId','],\x20createEndUser\x20crm','picklist','type','nameField','toLowerCase','content','includes','string','idField','customField','toString','variable','variableName','customVariable','Variable','name','outbound','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','label_entry'];(function(_0x1cf599,_0x5eefac){var _0x49f6fa=function(_0x26e8b6){while(--_0x26e8b6){_0x1cf599['push'](_0x1cf599['shift']());}};_0x49f6fa(++_0x5eefac);}(_0xb352,0x8e));var _0x2b35=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xb352[_0x68c979];return _0x4f0001;};'use strict';var _=require(_0x2b35('0x0'));var Promise=require(_0x2b35('0x1'));var rp=require(_0x2b35('0x2'));var util=require(_0x2b35('0x3'));var md5=require(_0x2b35('0x4'));var Redis=require(_0x2b35('0x5'));var intUtil=require(_0x2b35('0x6'));var config=require('../../../../config/environment');var logger=require(_0x2b35('0x7'))(_0x2b35('0x8'));config['redis']=_['defaults'](config[_0x2b35('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x2b35('0xa'))(new Redis(config['redis']));function getAdminUser(_0x3806e7,_0x12ecdb,_0x185715,_0x2ee369,_0x14421a,_0x2335c2){return new Promise(function(_0xc19a0d,_0x5b3411){var _0x24a12a={'method':_0x2b35('0xb'),'uri':_0x2ee369+_0x2b35('0xc')+'&'+_0x14421a+'&'+_0x2335c2,'auth':_0x12ecdb,'json':!![]};return rp(_0x24a12a)['then'](function(_0x18224c){if(_0x18224c[_0x2b35('0xd')]['length']>0x0){_0x185715[_0x2b35('0xe')]=_0x18224c[_0x2b35('0xd')][0x0][_0x2b35('0xf')];}logger[_0x2b35('0x10')]('['+[_0x3806e7[_0x2b35('0x11')]()]+_0x2b35('0x12'),_0x185715);_0xc19a0d(_0x185715);})['catch'](function(_0x1c756b){logger[_0x2b35('0x13')]('['+[_0x3806e7[_0x2b35('0x11')]()]+']',_0x1c756b[_0x2b35('0x14')]);_0x5b3411(_0x1c756b['message']);});});}function getUser(_0x494321,_0x3cfad8,_0x833fe5,_0x1b605d,_0x2673dc){return function(_0xc475df){logger['info']('['+[_0x494321[_0x2b35('0x11')]()]+_0x2b35('0x15'),_0xc475df);return new Promise(function(_0x42b54f,_0x4cca05){if(intUtil[_0x2b35('0x16')](_0xc475df[_0x2b35('0x17')])){var _0x237232={'method':'GET','uri':_0x833fe5+_0x2b35('0x18')+_0xc475df['userEmail']+'&'+_0x1b605d+'&'+_0x2673dc,'auth':_0x3cfad8,'json':!![]};logger['info']('['+[_0x494321[_0x2b35('0x11')]()]+_0x2b35('0x19'),_0x237232);return rp(_0x237232)['then'](function(_0x175c5b){logger['info']('['+[_0x494321[_0x2b35('0x11')]()]+_0x2b35('0x1a'),_0x175c5b);if(_0x175c5b[_0x2b35('0xd')]['length']>0x0&&String(_0x175c5b[_0x2b35('0xd')][0x0]['active'])===_0x2b35('0x1b')){_0xc475df['userId']=_0x175c5b[_0x2b35('0xd')][0x0][_0x2b35('0xf')];}else{_0xc475df[_0x2b35('0x1c')]=_0xc475df[_0x2b35('0xe')];_0xc475df[_0x2b35('0x17')]=_0xc475df[_0x2b35('0x1d')];}logger[_0x2b35('0x10')]('['+[_0x494321[_0x2b35('0x11')]()]+_0x2b35('0x1e'),_0xc475df);_0x42b54f(_0xc475df);})[_0x2b35('0x1f')](function(_0x4c7a62){logger[_0x2b35('0x13')]('['+[_0x494321[_0x2b35('0x11')]()]+']',_0x4c7a62[_0x2b35('0x14')]);_0x4cca05(_0x4c7a62[_0x2b35('0x14')]);});}else{logger['info']('['+[_0x494321[_0x2b35('0x11')]()]+']\x20using\x20admin\x20profile');_0xc475df['userId']=_0xc475df[_0x2b35('0xe')];_0xc475df[_0x2b35('0x17')]=_0xc475df[_0x2b35('0x1d')];_0x42b54f(_0xc475df);}});};}function createEndUser(_0x25b2e4,_0x2a6ce1,_0x56169a,_0x705113,_0x230812){logger[_0x2b35('0x10')]('['+[_0x25b2e4[_0x2b35('0x11')]()]+_0x2b35('0x20'),_0x56169a);return new Promise(function(_0x1d8fc6,_0x315076){var _0x4cbbeb={'method':_0x2b35('0x21'),'uri':_0x705113+_0x2b35('0x22')+_0x230812,'body':{'user_name':_0x56169a['endUserNumber'],'roles':_0x2b35('0x23'),'first_name':_0x56169a[_0x2b35('0x24')],'active':_0x2b35('0x1b'),'date_format':_0x2b35('0x25'),'phone':_0x56169a[_0x2b35('0x24')]},'auth':_0x2a6ce1,'json':!![]};return rp(_0x4cbbeb)[_0x2b35('0x26')](function(_0x262706){logger[_0x2b35('0x10')]('['+[_0x25b2e4[_0x2b35('0x11')]()]+'],\x20EndUser\x20schema',_0x262706['result']);_0x56169a['endUserId']=_0x262706[_0x2b35('0xd')]['sys_id'];_0x1d8fc6(_0x56169a);})[_0x2b35('0x1f')](function(_0x5e89cd){logger[_0x2b35('0x13')]('['+[_0x25b2e4[_0x2b35('0x11')]()]+']',_0x5e89cd[_0x2b35('0x14')]);_0x315076(_0x5e89cd[_0x2b35('0x14')]);});});}function getEndUser(_0x30048c,_0x576dbc,_0x1a1cc7,_0x5dce01,_0x53b8f3){return function(_0x2cf85a){logger[_0x2b35('0x10')]('['+[_0x30048c[_0x2b35('0x11')]()]+_0x2b35('0x27'),_0x2cf85a);return new Promise(function(_0x4737e5,_0xf1b334){var _0x52bea6={'method':_0x2b35('0xb'),'uri':_0x1a1cc7+_0x2b35('0x28')+_0x2cf85a[_0x2b35('0x24')]+'&'+_0x5dce01+'&'+_0x53b8f3,'auth':_0x576dbc,'json':!![]};return rp(_0x52bea6)[_0x2b35('0x26')](function(_0x3c674d){if(_0x3c674d[_0x2b35('0xd')][_0x2b35('0x29')]>0x0){_0x2cf85a[_0x2b35('0x2a')]=_0x3c674d[_0x2b35('0xd')][0x0][_0x2b35('0xf')];logger[_0x2b35('0x10')]('['+[_0x30048c[_0x2b35('0x11')]()]+'],\x20getEndUser\x20crm',_0x2cf85a);_0x4737e5(_0x2cf85a);}else{return createEndUser(_0x30048c,_0x576dbc,_0x2cf85a,_0x1a1cc7,_0x5dce01)[_0x2b35('0x26')](function(_0x5dfa7d){logger[_0x2b35('0x10')]('['+[_0x30048c[_0x2b35('0x11')]()]+_0x2b35('0x2b'),_0x5dfa7d);_0x4737e5(_0x5dfa7d);});}})[_0x2b35('0x1f')](function(_0x27248f){logger[_0x2b35('0x13')]('['+[_0x30048c[_0x2b35('0x11')]()]+']',_0x27248f['message']);_0xf1b334(_0x27248f['message']);});});};}function getCustomFields(_0x4dacf7,_0x434078){var _0x2ee091={};if(_0x4dacf7[_0x2b35('0x29')]>0x0){_['forEach'](_0x4dacf7,function(_0x333838){if(_['includes'](['string',_0x2b35('0x2c')],_0x333838[_0x2b35('0x2d')])&&_0x333838[_0x2b35('0x2e')]&&!_0x333838['customField']){_0x2ee091[_0x333838[_0x2b35('0x2e')][_0x2b35('0x2f')]()]=_0x333838[_0x2b35('0x30')]['toString']();}else if(_[_0x2b35('0x31')]([_0x2b35('0x32'),'picklist'],_0x333838[_0x2b35('0x2d')])&&_0x333838[_0x2b35('0x33')]&&_0x333838[_0x2b35('0x34')]){_0x2ee091[_0x333838[_0x2b35('0x33')][_0x2b35('0x2f')]()]=_0x333838[_0x2b35('0x30')][_0x2b35('0x35')]();}else if(_0x333838['type']===_0x2b35('0x36')&&_0x333838[_0x2b35('0x37')]&&_0x333838['idField']&&_0x333838[_0x2b35('0x34')]){_0x2ee091[_0x333838['idField'][_0x2b35('0x2f')]()]=_0x434078[_0x333838['variableName']]['toString']();}else if(_0x333838[_0x2b35('0x2d')]===_0x2b35('0x38')&&_0x333838[_0x2b35('0x39')]&&_0x333838[_0x2b35('0x39')][_0x2b35('0x3a')]&&_0x333838[_0x2b35('0x33')]&&_0x333838[_0x2b35('0x34')]){_0x2ee091[_0x333838['idField']['toLowerCase']()]=_0x434078[_0x333838[_0x2b35('0x39')][_0x2b35('0x3a')][_0x2b35('0x2f')]()][_0x2b35('0x35')]();}});}return _0x2ee091;}function getTicket(_0x2dad90,_0x35a1f9,_0x1169bd,_0x1b27e0,_0x143921,_0x316bcf){return function(_0x575189){logger['info']('['+[_0x2dad90[_0x2b35('0x11')]()]+']\x20getTicket\x20input\x20crm',_0x575189);return new Promise(function(_0x74800e,_0x2adf8f){var _0x2f097b=_0x2dad90[_0x2b35('0x2f')]()===_0x2b35('0x3b')?_0x575189[_0x2b35('0x1c')]:_0x575189[_0x2b35('0x2a')];var _0x1a0aba={'method':_0x2b35('0x21'),'uri':_0x1169bd+_0x2b35('0x3c')+'?'+_0x316bcf,'body':Object[_0x2b35('0x3d')]({},{'active':'true','caller_id':_0x2f097b,'assigned_to':_0x575189[_0x2b35('0x1c')],'short_description':intUtil[_0x2b35('0x3e')](_0x1b27e0[_0x2b35('0x3f')],_0x143921,'\x20'),'description':intUtil['getString'](_0x1b27e0[_0x2b35('0x40')],_0x143921,'\x0a')},getCustomFields(_0x1b27e0[_0x2b35('0x41')],_0x143921)),'auth':_0x35a1f9,'json':!![]};return rp(_0x1a0aba)['then'](function(_0x103bf6){logger['info']('['+[_0x2dad90[_0x2b35('0x11')]()]+_0x2b35('0x42'),_0x103bf6[_0x2b35('0xd')]);_0x575189[_0x2b35('0x43')]=_0x103bf6[_0x2b35('0xd')][_0x2b35('0xf')];_0x575189[_0x2b35('0x44')]=_0x103bf6[_0x2b35('0xd')]['number'];logger['info']('['+[_0x2dad90[_0x2b35('0x11')]()]+_0x2b35('0x45'),_0x575189);_0x74800e(_0x575189);})[_0x2b35('0x1f')](function(_0x433eee){logger[_0x2b35('0x13')]('['+[_0x2dad90['toUpperCase']()]+']',_0x433eee['message']);_0x2adf8f(_0x433eee['message']);});});};}function createRemoteTag(_0x37aace,_0x52df98,_0x360995,_0x4b6672){return new Promise(function(_0x2adb39,_0x46528a){var _0x3dd1c6={'method':_0x2b35('0x21'),'uri':_0x360995+_0x2b35('0x46')+'?'+_0x4b6672,'body':{'short_description':_0x37aace,'global':!![],'active':!![],'name':_0x37aace},'auth':_0x52df98,'json':!![]};return rp(_0x3dd1c6)[_0x2b35('0x26')](function(_0x3e75c7){var _0x5e5314=_0x3e75c7[_0x2b35('0xd')]['sys_id'];_0x2adb39(_0x5e5314);});});}function getRemoteTag(_0x545e3e,_0x831b03,_0x440fe8,_0x10e5c7,_0x5b7bb2){return new Promise(function(_0x3d1dba,_0x55d7cd){var _0x4cf12f={'method':_0x2b35('0xb'),'uri':_0x440fe8+_0x2b35('0x46')+'?sysparm_query=name%3D'+_0x545e3e+'&'+_0x10e5c7,'auth':_0x831b03,'json':!![]};return rp(_0x4cf12f)['then'](function(_0x190b0d){if(_0x190b0d[_0x2b35('0xd')][_0x2b35('0x29')]>0x0){var _0x475dd4=_0x190b0d[_0x2b35('0xd')][0x0][_0x2b35('0xf')];_0x3d1dba(_0x475dd4);}else{return createRemoteTag(_0x545e3e,_0x831b03,_0x440fe8,_0x10e5c7)[_0x2b35('0x26')](function(_0x23fa5e){_0x3d1dba(_0x23fa5e);});}});});}function assignTagToIncident(_0x2ecef8,_0x4625ec,_0xb4de54,_0x43993e,_0x23e87d){return new Promise(function(_0x3b8e46,_0x46b8eb){var _0xe64edd={'method':_0x2b35('0x21'),'uri':_0xb4de54+_0x2b35('0x47')+'?'+_0x23e87d,'body':{'label':_0x2ecef8,'table':_0x2b35('0x3c'),'id_type':'Incident','table_key':_0x43993e[_0x2b35('0x43')],'title':_0x2b35('0x48')+_0x43993e[_0x2b35('0x44')],'id_display':_0x43993e[_0x2b35('0x44')]},'auth':_0x4625ec,'json':!![]};return rp(_0xe64edd)[_0x2b35('0x26')](function(_0x53b07d){_0x3b8e46();})[_0x2b35('0x1f')](function(){_0x3b8e46();});});}function manageTags(_0x3c5534,_0x4d7bec,_0x445c71,_0x173207,_0x5df0a4,_0x26f9cf,_0x476543){return new Promise(function(_0x23e6ff,_0x2fceab){var _0x3bb9d6=[];_0x4d7bec['forEach'](function(_0x21b73b){_0x3bb9d6[_0x2b35('0x49')](getRemoteTag(_0x21b73b,_0x445c71,_0x173207,_0x26f9cf,_0x476543));});return Promise[_0x2b35('0x4a')](_0x3bb9d6)['then'](function(_0x2690d5){if(_0x2690d5[_0x2b35('0x29')]){logger['info']('['+[_0x3c5534[_0x2b35('0x11')]()]+_0x2b35('0x4b'),_0x2690d5);var _0x257f57=[];_0x2690d5['forEach'](function(_0x5812e7){_0x257f57['push'](assignTagToIncident(_0x5812e7,_0x445c71,_0x173207,_0x5df0a4,_0x26f9cf));});return Promise['all'](_0x257f57)['then'](function(){_0x23e6ff();})['catch'](function(){_0x23e6ff();});}else{_0x23e6ff();}});});}function getTags(_0x1ef3b1,_0x46396b,_0x54c0f5,_0x309979,_0x1c2df3,_0x1a0229){return function(_0x5b0e51){return new Promise(function(_0x1fc35a,_0x239f02){var _0x48badc=[];var _0x566bcc=_0x309979[_0x2b35('0x4c')];if(_0x566bcc&&_0x566bcc[_0x2b35('0x29')]>0x0){_0x48badc=_['map'](_0x566bcc,_0x2b35('0x3a'));}if(_0x48badc[_0x2b35('0x29')]>0x0){return manageTags(_0x1ef3b1,_0x48badc,_0x46396b,_0x54c0f5,_0x5b0e51,_0x1c2df3,_0x1a0229)[_0x2b35('0x26')](function(){_0x1fc35a(_0x5b0e51);});}else{_0x1fc35a(_0x5b0e51);}});};}function emit(_0x3a71c9,_0x42dd22,_0x4854a){var _0xc56f4e=_0x2b35('0x4d')+_0x2b35('0x4e')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x2b35('0x4f');var _0x1d1d0f={'uri':_0x3a71c9+_0x2b35('0x50')+_0x4854a+_0xc56f4e};io['to'](util[_0x2b35('0x51')](_0x2b35('0x52'),_0x42dd22))['emit'](_0x2b35('0x53'),_0x1d1d0f);}exports['cs']=function(_0x133eb9,_0xab0201,_0x4e21e6,_0x4b10a3,_0x2874c1,_0x32039b,_0x3c4f00,_0x52daff){var _0x52ce07={};var _0x431ab7={'user':_0x32039b[_0x2b35('0x54')],'pass':_0x32039b[_0x2b35('0x55')]};var _0x1ba6f4=_0x2b35('0x56');var _0x28e279=_0x2b35('0x57');_0x32039b[_0x2b35('0x58')]=intUtil[_0x2b35('0x59')](_0x32039b[_0x2b35('0x58')]);_0x32039b[_0x2b35('0x5a')]=intUtil[_0x2b35('0x59')](_0x32039b[_0x2b35('0x5a')]);var _0x3f2ade=util[_0x2b35('0x51')](_0x2b35('0x5b'),_0x32039b['remoteUri']);_0x52ce07[_0x2b35('0x17')]=!_[_0x2b35('0x5c')](_0x4b10a3)?_0x4b10a3[_0x2b35('0x5d')]:null;_0x52ce07[_0x2b35('0x1d')]=_0x32039b[_0x2b35('0x5d')];_0x52ce07[_0x2b35('0x24')]=_0x52daff[_0x2b35('0x2f')]()===_0x2b35('0x3b')?_0xab0201['destcalleridnum']:_0xab0201[_0x2b35('0x5e')];_0x52ce07['callDirection']=_0x52daff===_0x2b35('0x5f')||_0x52daff===_0x2b35('0x60')?_0x2b35('0x5f'):_0x2b35('0x3b');var _0x180bc9=util[_0x2b35('0x51')](_0x2b35('0x61'),_0x32039b[_0x2b35('0x5a')],_0xab0201['uniqueid'],md5(_0xab0201[_0x2b35('0x62')]));if(_0x2874c1&&_0x2874c1[_0x2b35('0x63')]){logger['info'](_0x2b35('0x64'),_0x2b35('0x65'));_0xab0201[_0x2b35('0x66')]=_0x180bc9;}else if(_0x3c4f00&&_0x3c4f00[_0x2b35('0x67')]&&_0x3c4f00[_0x2b35('0x67')]!=='none'){logger[_0x2b35('0x10')]('[OUTBOUND]',_0x2b35('0x65'));_0xab0201[_0x2b35('0x66')]=_0x180bc9;}else{_0xab0201[_0x2b35('0x66')]='';}return getAdminUser(_0x52daff,_0x431ab7,_0x52ce07,_0x3f2ade,_0x28e279,_0x1ba6f4)['then'](getUser(_0x52daff,_0x431ab7,_0x3f2ade,_0x28e279,_0x1ba6f4))['then'](getEndUser(_0x52daff,_0x431ab7,_0x3f2ade,_0x28e279,_0x1ba6f4))[_0x2b35('0x26')](getTicket(_0x52daff,_0x431ab7,_0x3f2ade,_0x4e21e6,_0xab0201,_0x28e279))['then'](function(_0x287805){logger[_0x2b35('0x10')](util[_0x2b35('0x51')](_0x2b35('0x68'),_0x287805[_0x2b35('0x43')]));logger[_0x2b35('0x10')](util[_0x2b35('0x51')]('call\x20direction:\x20%s',_0x52daff));if(_0x52daff!==_0x2b35('0x60')){logger[_0x2b35('0x10')]('['+[_0x52daff[_0x2b35('0x11')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x32039b[_0x2b35('0x58')],_0x4b10a3[_0x2b35('0x3a')],_0x287805[_0x2b35('0x43')]);}})[_0x2b35('0x1f')](function(_0x192ece){logger['error']('['+[_0x52daff[_0x2b35('0x11')]()]+_0x2b35('0x69'),util[_0x2b35('0x6a')](_0x192ece,{'showHidden':!![],'depth':null}));});};