Built motion from commit c738b9ac.|2.6.25
[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 _0x49d7=['[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','ticketId',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','request-promise','md5','./util','../../../../config/logger','servicenow','redis','localhost','sys_user?sysparm_query=user_name%3Dadmin','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm','error','],\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','content','idField','toLowerCase','toString','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number',']\x20getTicket\x20crm','label','GET','?sysparm_query=name%3D','label_entry','incident','Incident','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','map','%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','sysparm_limit=1','sysparm_display_value=true','remoteUri','%s/api/now/table/','isNil','email','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid'];(function(_0x563cca,_0x5beec6){var _0x4c9ddd=function(_0x108cf9){while(--_0x108cf9){_0x563cca['push'](_0x563cca['shift']());}};_0x4c9ddd(++_0x5beec6);}(_0x49d7,0x14e));var _0x749d=function(_0x13992d,_0x3029ea){_0x13992d=_0x13992d-0x0;var _0x3d15bf=_0x49d7[_0x13992d];return _0x3d15bf;};'use strict';var _=require(_0x749d('0x0'));var Promise=require('bluebird');var rp=require(_0x749d('0x1'));var util=require('util');var md5=require(_0x749d('0x2'));var Redis=require('ioredis');var intUtil=require(_0x749d('0x3'));var config=require('../../../../config/environment');var logger=require(_0x749d('0x4'))(_0x749d('0x5'));config[_0x749d('0x6')]=_['defaults'](config[_0x749d('0x6')],{'host':_0x749d('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x749d('0x6')]));function getAdminUser(_0x34901c,_0x4e2413,_0x4076f3,_0x45ac56,_0x20faeb,_0x36e0a6){return new Promise(function(_0x23f6c6,_0x2e80b6){var _0x24e397={'method':'GET','uri':_0x45ac56+_0x749d('0x8')+'&'+_0x20faeb+'&'+_0x36e0a6,'auth':_0x4e2413,'json':!![]};return rp(_0x24e397)['then'](function(_0x3c8b35){if(_0x3c8b35[_0x749d('0x9')][_0x749d('0xa')]>0x0){_0x4076f3[_0x749d('0xb')]=_0x3c8b35[_0x749d('0x9')][0x0][_0x749d('0xc')];}logger[_0x749d('0xd')]('['+[_0x34901c[_0x749d('0xe')]()]+_0x749d('0xf'),_0x4076f3);_0x23f6c6(_0x4076f3);})[_0x749d('0x10')](function(_0xf17b93){logger['error']('['+[_0x34901c[_0x749d('0xe')]()]+']',_0xf17b93['message']);_0x2e80b6(_0xf17b93[_0x749d('0x11')]);});});}function getUser(_0x1cd8f3,_0x459612,_0x1b0cbd,_0x5c1cdc,_0x585a3c){return function(_0x246166){logger[_0x749d('0xd')]('['+[_0x1cd8f3[_0x749d('0xe')]()]+_0x749d('0x12'),_0x246166);return new Promise(function(_0x27d0c2,_0x1344e4){if(intUtil[_0x749d('0x13')](_0x246166[_0x749d('0x14')])){var _0x4442ac={'method':'GET','uri':_0x1b0cbd+_0x749d('0x15')+_0x246166[_0x749d('0x14')]+'&'+_0x5c1cdc+'&'+_0x585a3c,'auth':_0x459612,'json':!![]};logger[_0x749d('0xd')]('['+[_0x1cd8f3[_0x749d('0xe')]()]+_0x749d('0x16'),_0x4442ac);return rp(_0x4442ac)[_0x749d('0x17')](function(_0x5ee9dc){logger['info']('['+[_0x1cd8f3[_0x749d('0xe')]()]+_0x749d('0x18'),_0x5ee9dc);if(_0x5ee9dc[_0x749d('0x9')][_0x749d('0xa')]>0x0&&String(_0x5ee9dc[_0x749d('0x9')][0x0][_0x749d('0x19')])===_0x749d('0x1a')){_0x246166[_0x749d('0x1b')]=_0x5ee9dc[_0x749d('0x9')][0x0][_0x749d('0xc')];}else{_0x246166[_0x749d('0x1b')]=_0x246166[_0x749d('0xb')];_0x246166[_0x749d('0x14')]=_0x246166[_0x749d('0x1c')];}logger[_0x749d('0xd')]('['+[_0x1cd8f3[_0x749d('0xe')]()]+_0x749d('0x1d'),_0x246166);_0x27d0c2(_0x246166);})[_0x749d('0x10')](function(_0x35161a){logger[_0x749d('0x1e')]('['+[_0x1cd8f3[_0x749d('0xe')]()]+']',_0x35161a[_0x749d('0x11')]);_0x1344e4(_0x35161a['message']);});}else{logger[_0x749d('0xd')]('['+[_0x1cd8f3[_0x749d('0xe')]()]+']\x20using\x20admin\x20profile');_0x246166[_0x749d('0x1b')]=_0x246166[_0x749d('0xb')];_0x246166[_0x749d('0x14')]=_0x246166[_0x749d('0x1c')];_0x27d0c2(_0x246166);}});};}function createEndUser(_0x38117a,_0x223411,_0x4f8779,_0x5e9cc6,_0x2c35ff){logger[_0x749d('0xd')]('['+[_0x38117a['toUpperCase']()]+_0x749d('0x1f'),_0x4f8779);return new Promise(function(_0x5af499,_0x3ceeb4){var _0x3ce992={'method':_0x749d('0x20'),'uri':_0x5e9cc6+_0x749d('0x21')+_0x2c35ff,'body':{'user_name':_0x4f8779[_0x749d('0x22')],'roles':'user','first_name':_0x4f8779[_0x749d('0x22')],'active':_0x749d('0x1a'),'date_format':_0x749d('0x23'),'phone':_0x4f8779[_0x749d('0x22')]},'auth':_0x223411,'json':!![]};return rp(_0x3ce992)['then'](function(_0x21e4b2){logger[_0x749d('0xd')]('['+[_0x38117a[_0x749d('0xe')]()]+_0x749d('0x24'),_0x21e4b2[_0x749d('0x9')]);_0x4f8779[_0x749d('0x25')]=_0x21e4b2['result'][_0x749d('0xc')];_0x5af499(_0x4f8779);})['catch'](function(_0x303a83){logger['error']('['+[_0x38117a[_0x749d('0xe')]()]+']',_0x303a83[_0x749d('0x11')]);_0x3ceeb4(_0x303a83[_0x749d('0x11')]);});});}function getEndUser(_0x32297f,_0x202b59,_0x3feaf9,_0x41e85f,_0x16e457){return function(_0x552fad){logger['info']('['+[_0x32297f[_0x749d('0xe')]()]+'],\x20getEndUser\x20input\x20crm',_0x552fad);return new Promise(function(_0x3c2684,_0x3e2490){var _0x36c99b={'method':'GET','uri':_0x3feaf9+_0x749d('0x26')+_0x552fad[_0x749d('0x22')]+'&'+_0x41e85f+'&'+_0x16e457,'auth':_0x202b59,'json':!![]};return rp(_0x36c99b)[_0x749d('0x17')](function(_0x2020c9){if(_0x2020c9[_0x749d('0x9')][_0x749d('0xa')]>0x0){_0x552fad[_0x749d('0x25')]=_0x2020c9[_0x749d('0x9')][0x0][_0x749d('0xc')];logger['info']('['+[_0x32297f[_0x749d('0xe')]()]+_0x749d('0x27'),_0x552fad);_0x3c2684(_0x552fad);}else{return createEndUser(_0x32297f,_0x202b59,_0x552fad,_0x3feaf9,_0x41e85f)['then'](function(_0x4dfdea){logger[_0x749d('0xd')]('['+[_0x32297f['toUpperCase']()]+_0x749d('0x28'),_0x4dfdea);_0x3c2684(_0x4dfdea);});}})['catch'](function(_0x36c648){logger[_0x749d('0x1e')]('['+[_0x32297f['toUpperCase']()]+']',_0x36c648[_0x749d('0x11')]);_0x3e2490(_0x36c648[_0x749d('0x11')]);});});};}function getCustomFields(_0x2c608b,_0xde7138){var _0x2e3531={};if(_0x2c608b[_0x749d('0xa')]>0x0){_[_0x749d('0x29')](_0x2c608b,function(_0x2ddef8){if(_[_0x749d('0x2a')]([_0x749d('0x2b'),_0x749d('0x2c')],_0x2ddef8[_0x749d('0x2d')])&&_0x2ddef8[_0x749d('0x2e')]&&!_0x2ddef8[_0x749d('0x2f')]){_0x2e3531[_0x2ddef8[_0x749d('0x2e')]['toLowerCase']()]=_0x2ddef8[_0x749d('0x30')]['toString']();}else if(_[_0x749d('0x2a')](['string',_0x749d('0x2c')],_0x2ddef8[_0x749d('0x2d')])&&_0x2ddef8[_0x749d('0x31')]&&_0x2ddef8[_0x749d('0x2f')]){_0x2e3531[_0x2ddef8['idField'][_0x749d('0x32')]()]=_0x2ddef8[_0x749d('0x30')][_0x749d('0x33')]();}else if(_0x2ddef8[_0x749d('0x2d')]===_0x749d('0x34')&&_0x2ddef8[_0x749d('0x35')]&&_0x2ddef8[_0x749d('0x31')]&&_0x2ddef8[_0x749d('0x2f')]){_0x2e3531[_0x2ddef8[_0x749d('0x31')][_0x749d('0x32')]()]=_0xde7138[_0x2ddef8[_0x749d('0x35')]][_0x749d('0x33')]();}else if(_0x2ddef8[_0x749d('0x2d')]===_0x749d('0x36')&&_0x2ddef8['Variable']&&_0x2ddef8[_0x749d('0x37')][_0x749d('0x38')]&&_0x2ddef8['idField']&&_0x2ddef8[_0x749d('0x2f')]){_0x2e3531[_0x2ddef8[_0x749d('0x31')][_0x749d('0x32')]()]=_0xde7138[_0x2ddef8[_0x749d('0x37')][_0x749d('0x38')][_0x749d('0x32')]()][_0x749d('0x33')]();}});}return _0x2e3531;}function getTicket(_0x5a7fad,_0x34747b,_0x57709d,_0x5f4b94,_0x53d1be,_0x57be61){return function(_0x429ae2){logger['info']('['+[_0x5a7fad[_0x749d('0xe')]()]+_0x749d('0x39'),_0x429ae2);return new Promise(function(_0x249d88,_0x42a33d){var _0x2742a7=_0x5a7fad['toLowerCase']()===_0x749d('0x3a')?_0x429ae2[_0x749d('0x1b')]:_0x429ae2[_0x749d('0x25')];var _0x58670e={'method':_0x749d('0x20'),'uri':_0x57709d+'incident'+'?'+_0x57be61,'body':Object['assign']({},{'active':'true','caller_id':_0x2742a7,'assigned_to':_0x429ae2[_0x749d('0x1b')],'short_description':intUtil[_0x749d('0x3b')](_0x5f4b94[_0x749d('0x3c')],_0x53d1be,'\x20'),'description':intUtil['getString'](_0x5f4b94[_0x749d('0x3d')],_0x53d1be,'\x0a')},getCustomFields(_0x5f4b94[_0x749d('0x3e')],_0x53d1be)),'auth':_0x34747b,'json':!![]};return rp(_0x58670e)[_0x749d('0x17')](function(_0x1eff86){logger['info']('['+[_0x5a7fad['toUpperCase']()]+_0x749d('0x3f'),_0x1eff86[_0x749d('0x9')]);_0x429ae2['ticketId']=_0x1eff86['result'][_0x749d('0xc')];_0x429ae2[_0x749d('0x40')]=_0x1eff86[_0x749d('0x9')][_0x749d('0x41')];logger[_0x749d('0xd')]('['+[_0x5a7fad[_0x749d('0xe')]()]+_0x749d('0x42'),_0x429ae2);_0x249d88(_0x429ae2);})[_0x749d('0x10')](function(_0xa5786c){logger['error']('['+[_0x5a7fad[_0x749d('0xe')]()]+']',_0xa5786c[_0x749d('0x11')]);_0x42a33d(_0xa5786c[_0x749d('0x11')]);});});};}function createRemoteTag(_0x35383c,_0x58c44,_0x52db6b,_0x6849ea){return new Promise(function(_0xbeb319,_0x302fdb){var _0x4d027d={'method':_0x749d('0x20'),'uri':_0x52db6b+_0x749d('0x43')+'?'+_0x6849ea,'body':{'short_description':_0x35383c,'global':!![],'active':!![],'name':_0x35383c},'auth':_0x58c44,'json':!![]};return rp(_0x4d027d)[_0x749d('0x17')](function(_0x1f3fbc){var _0x81de2=_0x1f3fbc['result'][_0x749d('0xc')];_0xbeb319(_0x81de2);});});}function getRemoteTag(_0x56b6dc,_0x4a2f79,_0x510b51,_0x46e97d,_0x178f26){return new Promise(function(_0x4209fc,_0x30a1a5){var _0x1fdb25={'method':_0x749d('0x44'),'uri':_0x510b51+_0x749d('0x43')+_0x749d('0x45')+_0x56b6dc+'&'+_0x46e97d,'auth':_0x4a2f79,'json':!![]};return rp(_0x1fdb25)[_0x749d('0x17')](function(_0x23c754){if(_0x23c754['result'][_0x749d('0xa')]>0x0){var _0x12f48e=_0x23c754[_0x749d('0x9')][0x0]['sys_id'];_0x4209fc(_0x12f48e);}else{return createRemoteTag(_0x56b6dc,_0x4a2f79,_0x510b51,_0x46e97d)[_0x749d('0x17')](function(_0x25519f){_0x4209fc(_0x25519f);});}});});}function assignTagToIncident(_0x26fa70,_0x574e61,_0x3c0e46,_0x513f77,_0x44decd){return new Promise(function(_0x24ea7d,_0x4d3ec8){var _0x5c0d60={'method':'POST','uri':_0x3c0e46+_0x749d('0x46')+'?'+_0x44decd,'body':{'label':_0x26fa70,'table':_0x749d('0x47'),'id_type':_0x749d('0x48'),'table_key':_0x513f77['ticketId'],'title':_0x749d('0x49')+_0x513f77[_0x749d('0x40')],'id_display':_0x513f77[_0x749d('0x40')]},'auth':_0x574e61,'json':!![]};return rp(_0x5c0d60)[_0x749d('0x17')](function(_0x426430){_0x24ea7d();})[_0x749d('0x10')](function(){_0x24ea7d();});});}function manageTags(_0xabc237,_0x35886c,_0x3ae0fc,_0x3decc5,_0x8ed4ae,_0x86d51e,_0xfe5a5c){return new Promise(function(_0x1ad3d8,_0x4c2477){var _0x3dc36e=[];_0x35886c[_0x749d('0x29')](function(_0x1cbee2){_0x3dc36e['push'](getRemoteTag(_0x1cbee2,_0x3ae0fc,_0x3decc5,_0x86d51e,_0xfe5a5c));});return Promise[_0x749d('0x4a')](_0x3dc36e)['then'](function(_0x8384c0){if(_0x8384c0[_0x749d('0xa')]){logger[_0x749d('0xd')]('['+[_0xabc237[_0x749d('0xe')]()]+_0x749d('0x4b'),_0x8384c0);var _0x24bcfa=[];_0x8384c0['forEach'](function(_0x40b9ed){_0x24bcfa[_0x749d('0x4c')](assignTagToIncident(_0x40b9ed,_0x3ae0fc,_0x3decc5,_0x8ed4ae,_0x86d51e));});return Promise['all'](_0x24bcfa)[_0x749d('0x17')](function(){_0x1ad3d8();})[_0x749d('0x10')](function(){_0x1ad3d8();});}else{_0x1ad3d8();}});});}function getTags(_0x4231f0,_0x2d83e4,_0x34981e,_0xa79105,_0x342cff,_0x184c21){return function(_0x4d3ca8){return new Promise(function(_0x1be808,_0x1959b3){var _0x12ff53=[];var _0x36b594=_0xa79105['Tags'];if(_0x36b594&&_0x36b594[_0x749d('0xa')]>0x0){_0x12ff53=_[_0x749d('0x4d')](_0x36b594,_0x749d('0x38'));}if(_0x12ff53[_0x749d('0xa')]>0x0){return manageTags(_0x4231f0,_0x12ff53,_0x2d83e4,_0x34981e,_0x4d3ca8,_0x342cff,_0x184c21)[_0x749d('0x17')](function(){_0x1be808(_0x4d3ca8);});}else{_0x1be808(_0x4d3ca8);}});};}function emit(_0x3af448,_0x2e9be9,_0x6a55ef){var _0x38da79='%26sysparm_record_target%3Dincident'+_0x749d('0x4e')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x749d('0x4f');var _0x3f10be={'uri':_0x3af448+_0x749d('0x50')+_0x6a55ef+_0x38da79};io['to'](util[_0x749d('0x51')](_0x749d('0x52'),_0x2e9be9))['emit'](_0x749d('0x53'),_0x3f10be);}exports['cs']=function(_0xba2082,_0x3bf5c0,_0x11073a,_0x4809b0,_0x256741,_0x54a84d,_0x2eafd8,_0x4292c5){var _0x197f11={};var _0x390760={'user':_0x54a84d[_0x749d('0x54')],'pass':_0x54a84d['password']};var _0x1277fc=_0x749d('0x55');var _0x46a0d3=_0x749d('0x56');_0x54a84d[_0x749d('0x57')]=intUtil['stripTrailingSlash'](_0x54a84d[_0x749d('0x57')]);_0x54a84d['serverUrl']=intUtil['stripTrailingSlash'](_0x54a84d['serverUrl']);var _0xa3851f=util[_0x749d('0x51')](_0x749d('0x58'),_0x54a84d['remoteUri']);_0x197f11['userEmail']=!_[_0x749d('0x59')](_0x4809b0)?_0x4809b0[_0x749d('0x5a')]:null;_0x197f11[_0x749d('0x1c')]=_0x54a84d[_0x749d('0x5a')];_0x197f11[_0x749d('0x22')]=_0x4292c5[_0x749d('0x32')]()===_0x749d('0x3a')?_0x3bf5c0[_0x749d('0x5b')]:_0x3bf5c0['calleridnum'];_0x197f11[_0x749d('0x5c')]=_0x4292c5===_0x749d('0x5d')||_0x4292c5===_0x749d('0x5e')?_0x749d('0x5d'):_0x749d('0x3a');var _0x477c78=util[_0x749d('0x51')](_0x749d('0x5f'),_0x54a84d[_0x749d('0x60')],_0x3bf5c0['uniqueid'],md5(_0x3bf5c0[_0x749d('0x61')]));if(_0x256741&&_0x256741['monitor_format']){logger[_0x749d('0xd')](_0x749d('0x62'),_0x749d('0x63'));_0x3bf5c0[_0x749d('0x64')]=_0x477c78;}else if(_0x2eafd8&&_0x2eafd8[_0x749d('0x65')]&&_0x2eafd8[_0x749d('0x65')]!==_0x749d('0x66')){logger[_0x749d('0xd')]('[OUTBOUND]',_0x749d('0x63'));_0x3bf5c0[_0x749d('0x64')]=_0x477c78;}else{_0x3bf5c0['recordingURL']='';}return getAdminUser(_0x4292c5,_0x390760,_0x197f11,_0xa3851f,_0x46a0d3,_0x1277fc)[_0x749d('0x17')](getUser(_0x4292c5,_0x390760,_0xa3851f,_0x46a0d3,_0x1277fc))[_0x749d('0x17')](getEndUser(_0x4292c5,_0x390760,_0xa3851f,_0x46a0d3,_0x1277fc))[_0x749d('0x17')](getTicket(_0x4292c5,_0x390760,_0xa3851f,_0x11073a,_0x3bf5c0,_0x46a0d3))[_0x749d('0x17')](function(_0x4a0781){logger[_0x749d('0xd')](util[_0x749d('0x51')](_0x749d('0x67'),_0x4a0781['ticketId']));logger[_0x749d('0xd')](util[_0x749d('0x51')](_0x749d('0x68'),_0x4292c5));if(_0x4292c5!=='unmanaged'){logger['info']('['+[_0x4292c5['toUpperCase']()]+']',_0x749d('0x69'));emit(_0x54a84d['remoteUri'],_0x4809b0[_0x749d('0x38')],_0x4a0781[_0x749d('0x6a')]);}})[_0x749d('0x10')](function(_0x3ae9ea){logger[_0x749d('0x1e')]('['+[_0x4292c5[_0x749d('0xe')]()]+_0x749d('0x6b'),util['inspect'](_0x3ae9ea,{'showHidden':!![],'depth':null}));});};