Built motion from commit bbec7235.|2.6.20
[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 _0xc812=['variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number','label','?sysparm_query=name%3D','label_entry','Incident','ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','format','user:%s','trigger:browser:url','username','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','isNil','email','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','request-promise','util','md5','ioredis','./util','../../../../config/environment','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','info','],\x20getAdminUser\x20crm','catch','toUpperCase','message','validateEmail','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','result','true','userId','sys_id','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','endUserNumber','System','],\x20EndUser\x20schema','endUserId','error','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','forEach','includes','string','picklist','type','customField','content','toString','idField','variable','toLowerCase'];(function(_0x7f982b,_0x2ef252){var _0x18f03d=function(_0x1cd3eb){while(--_0x1cd3eb){_0x7f982b['push'](_0x7f982b['shift']());}};_0x18f03d(++_0x2ef252);}(_0xc812,0x1e4));var _0x2c81=function(_0x316301,_0x26ccf0){_0x316301=_0x316301-0x0;var _0x423bf8=_0xc812[_0x316301];return _0x423bf8;};'use strict';var _=require('lodash');var Promise=require('bluebird');var rp=require(_0x2c81('0x0'));var util=require(_0x2c81('0x1'));var md5=require(_0x2c81('0x2'));var Redis=require(_0x2c81('0x3'));var intUtil=require(_0x2c81('0x4'));var config=require(_0x2c81('0x5'));var logger=require('../../../../config/logger')(_0x2c81('0x6'));config[_0x2c81('0x7')]=_[_0x2c81('0x8')](config['redis'],{'host':_0x2c81('0x9'),'port':0x18eb});var io=require(_0x2c81('0xa'))(new Redis(config[_0x2c81('0x7')]));function getAdminUser(_0x2e4c8b,_0x4ca3d4,_0x48bea9,_0xb25373,_0x396926,_0x4901a6){return new Promise(function(_0x5f55a2,_0x163a99){var _0x2b2a20={'method':_0x2c81('0xb'),'uri':_0xb25373+_0x2c81('0xc')+'&'+_0x396926+'&'+_0x4901a6,'auth':_0x4ca3d4,'json':!![]};return rp(_0x2b2a20)[_0x2c81('0xd')](function(_0x1a8ffc){if(_0x1a8ffc['result'][_0x2c81('0xe')]>0x0){_0x48bea9[_0x2c81('0xf')]=_0x1a8ffc['result'][0x0]['sys_id'];}logger[_0x2c81('0x10')]('['+[_0x2e4c8b['toUpperCase']()]+_0x2c81('0x11'),_0x48bea9);_0x5f55a2(_0x48bea9);})[_0x2c81('0x12')](function(_0x3fe09e){logger['error']('['+[_0x2e4c8b[_0x2c81('0x13')]()]+']',_0x3fe09e[_0x2c81('0x14')]);_0x163a99(_0x3fe09e[_0x2c81('0x14')]);});});}function getUser(_0x5cec93,_0x316afc,_0x55ba6a,_0x4b62c6,_0x2bc637){return function(_0x31c29e){logger[_0x2c81('0x10')]('['+[_0x5cec93[_0x2c81('0x13')]()]+'],\x20getUser\x20input\x20crm',_0x31c29e);return new Promise(function(_0x2f1f9b,_0x929bdf){if(intUtil[_0x2c81('0x15')](_0x31c29e['userEmail'])){var _0x359302={'method':'GET','uri':_0x55ba6a+_0x2c81('0x16')+_0x31c29e[_0x2c81('0x17')]+'&'+_0x4b62c6+'&'+_0x2bc637,'auth':_0x316afc,'json':!![]};logger[_0x2c81('0x10')]('['+[_0x5cec93['toUpperCase']()]+_0x2c81('0x18'),_0x359302);return rp(_0x359302)[_0x2c81('0xd')](function(_0x3df093){logger[_0x2c81('0x10')]('['+[_0x5cec93['toUpperCase']()]+'],\x20getUser\x20entity',_0x3df093);if(_0x3df093[_0x2c81('0x19')][_0x2c81('0xe')]>0x0&&String(_0x3df093[_0x2c81('0x19')][0x0]['active'])===_0x2c81('0x1a')){_0x31c29e[_0x2c81('0x1b')]=_0x3df093[_0x2c81('0x19')][0x0][_0x2c81('0x1c')];}else{_0x31c29e[_0x2c81('0x1b')]=_0x31c29e[_0x2c81('0xf')];_0x31c29e[_0x2c81('0x17')]=_0x31c29e[_0x2c81('0x1d')];}logger[_0x2c81('0x10')]('['+[_0x5cec93[_0x2c81('0x13')]()]+_0x2c81('0x1e'),_0x31c29e);_0x2f1f9b(_0x31c29e);})['catch'](function(_0x23812f){logger['error']('['+[_0x5cec93[_0x2c81('0x13')]()]+']',_0x23812f[_0x2c81('0x14')]);_0x929bdf(_0x23812f[_0x2c81('0x14')]);});}else{logger['info']('['+[_0x5cec93[_0x2c81('0x13')]()]+_0x2c81('0x1f'));_0x31c29e[_0x2c81('0x1b')]=_0x31c29e[_0x2c81('0xf')];_0x31c29e[_0x2c81('0x17')]=_0x31c29e[_0x2c81('0x1d')];_0x2f1f9b(_0x31c29e);}});};}function createEndUser(_0x33c143,_0x551460,_0x5582b9,_0x2d093e,_0x17bb24){logger[_0x2c81('0x10')]('['+[_0x33c143['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x5582b9);return new Promise(function(_0x35bc26,_0x4af8b5){var _0x37cceb={'method':_0x2c81('0x20'),'uri':_0x2d093e+'sys_user?'+_0x17bb24,'body':{'user_name':_0x5582b9[_0x2c81('0x21')],'roles':'user','first_name':_0x5582b9[_0x2c81('0x21')],'active':'true','date_format':_0x2c81('0x22'),'phone':_0x5582b9[_0x2c81('0x21')]},'auth':_0x551460,'json':!![]};return rp(_0x37cceb)[_0x2c81('0xd')](function(_0x295295){logger[_0x2c81('0x10')]('['+[_0x33c143[_0x2c81('0x13')]()]+_0x2c81('0x23'),_0x295295['result']);_0x5582b9[_0x2c81('0x24')]=_0x295295['result'][_0x2c81('0x1c')];_0x35bc26(_0x5582b9);})['catch'](function(_0x16d81a){logger[_0x2c81('0x25')]('['+[_0x33c143['toUpperCase']()]+']',_0x16d81a[_0x2c81('0x14')]);_0x4af8b5(_0x16d81a[_0x2c81('0x14')]);});});}function getEndUser(_0xcf0cfc,_0x1f50ff,_0x3fdf8e,_0x417600,_0x215195){return function(_0x32f1f6){logger['info']('['+[_0xcf0cfc['toUpperCase']()]+_0x2c81('0x26'),_0x32f1f6);return new Promise(function(_0x217a8c,_0x5bafe9){var _0x2b396f={'method':_0x2c81('0xb'),'uri':_0x3fdf8e+_0x2c81('0x27')+_0x32f1f6[_0x2c81('0x21')]+'&'+_0x417600+'&'+_0x215195,'auth':_0x1f50ff,'json':!![]};return rp(_0x2b396f)[_0x2c81('0xd')](function(_0x345e0d){if(_0x345e0d[_0x2c81('0x19')]['length']>0x0){_0x32f1f6[_0x2c81('0x24')]=_0x345e0d[_0x2c81('0x19')][0x0][_0x2c81('0x1c')];logger[_0x2c81('0x10')]('['+[_0xcf0cfc[_0x2c81('0x13')]()]+'],\x20getEndUser\x20crm',_0x32f1f6);_0x217a8c(_0x32f1f6);}else{return createEndUser(_0xcf0cfc,_0x1f50ff,_0x32f1f6,_0x3fdf8e,_0x417600)[_0x2c81('0xd')](function(_0xb88eb1){logger['info']('['+[_0xcf0cfc[_0x2c81('0x13')]()]+'],\x20createEndUser\x20crm',_0xb88eb1);_0x217a8c(_0xb88eb1);});}})['catch'](function(_0x5987f6){logger[_0x2c81('0x25')]('['+[_0xcf0cfc['toUpperCase']()]+']',_0x5987f6['message']);_0x5bafe9(_0x5987f6[_0x2c81('0x14')]);});});};}function getCustomFields(_0x178071,_0x2a5e8c){var _0x5b00bd={};if(_0x178071['length']>0x0){_[_0x2c81('0x28')](_0x178071,function(_0x1124b3){if(_[_0x2c81('0x29')]([_0x2c81('0x2a'),_0x2c81('0x2b')],_0x1124b3[_0x2c81('0x2c')])&&_0x1124b3['nameField']&&!_0x1124b3[_0x2c81('0x2d')]){_0x5b00bd[_0x1124b3['nameField']['toLowerCase']()]=_0x1124b3[_0x2c81('0x2e')][_0x2c81('0x2f')]();}else if(_['includes'](['string',_0x2c81('0x2b')],_0x1124b3[_0x2c81('0x2c')])&&_0x1124b3[_0x2c81('0x30')]&&_0x1124b3[_0x2c81('0x2d')]){_0x5b00bd[_0x1124b3['idField']['toLowerCase']()]=_0x1124b3[_0x2c81('0x2e')][_0x2c81('0x2f')]();}else if(_0x1124b3[_0x2c81('0x2c')]===_0x2c81('0x31')&&_0x1124b3['variableName']&&_0x1124b3[_0x2c81('0x30')]&&_0x1124b3[_0x2c81('0x2d')]){_0x5b00bd[_0x1124b3[_0x2c81('0x30')][_0x2c81('0x32')]()]=_0x2a5e8c[_0x1124b3[_0x2c81('0x33')]][_0x2c81('0x2f')]();}else if(_0x1124b3[_0x2c81('0x2c')]===_0x2c81('0x34')&&_0x1124b3[_0x2c81('0x35')]&&_0x1124b3[_0x2c81('0x35')][_0x2c81('0x36')]&&_0x1124b3[_0x2c81('0x30')]&&_0x1124b3[_0x2c81('0x2d')]){_0x5b00bd[_0x1124b3[_0x2c81('0x30')][_0x2c81('0x32')]()]=_0x2a5e8c[_0x1124b3[_0x2c81('0x35')][_0x2c81('0x36')][_0x2c81('0x32')]()]['toString']();}});}return _0x5b00bd;}function getTicket(_0x3a2883,_0x8582c2,_0x5d96c9,_0x577846,_0x299422,_0x5a8d4d){return function(_0x35a8fe){logger[_0x2c81('0x10')]('['+[_0x3a2883['toUpperCase']()]+_0x2c81('0x37'),_0x35a8fe);return new Promise(function(_0x46c1c1,_0x36e7d6){var _0x31e385=_0x3a2883[_0x2c81('0x32')]()===_0x2c81('0x38')?_0x35a8fe[_0x2c81('0x1b')]:_0x35a8fe[_0x2c81('0x24')];var _0x47e195={'method':_0x2c81('0x20'),'uri':_0x5d96c9+_0x2c81('0x39')+'?'+_0x5a8d4d,'body':Object[_0x2c81('0x3a')]({},{'active':_0x2c81('0x1a'),'caller_id':_0x31e385,'assigned_to':_0x35a8fe[_0x2c81('0x1b')],'short_description':intUtil[_0x2c81('0x3b')](_0x577846[_0x2c81('0x3c')],_0x299422,'\x20'),'description':intUtil['getString'](_0x577846[_0x2c81('0x3d')],_0x299422,'\x0a')},getCustomFields(_0x577846[_0x2c81('0x3e')],_0x299422)),'auth':_0x8582c2,'json':!![]};return rp(_0x47e195)[_0x2c81('0xd')](function(_0x1b7a6c){logger[_0x2c81('0x10')]('['+[_0x3a2883[_0x2c81('0x13')]()]+_0x2c81('0x3f'),_0x1b7a6c[_0x2c81('0x19')]);_0x35a8fe[_0x2c81('0x40')]=_0x1b7a6c[_0x2c81('0x19')][_0x2c81('0x1c')];_0x35a8fe['ticketNumber']=_0x1b7a6c[_0x2c81('0x19')][_0x2c81('0x41')];logger[_0x2c81('0x10')]('['+[_0x3a2883[_0x2c81('0x13')]()]+']\x20getTicket\x20crm',_0x35a8fe);_0x46c1c1(_0x35a8fe);})[_0x2c81('0x12')](function(_0x382640){logger[_0x2c81('0x25')]('['+[_0x3a2883[_0x2c81('0x13')]()]+']',_0x382640['message']);_0x36e7d6(_0x382640[_0x2c81('0x14')]);});});};}function createRemoteTag(_0x54255e,_0x3ad322,_0x5f0267,_0x2ad16c){return new Promise(function(_0x122c87,_0x58e199){var _0x5c2930={'method':_0x2c81('0x20'),'uri':_0x5f0267+_0x2c81('0x42')+'?'+_0x2ad16c,'body':{'short_description':_0x54255e,'global':!![],'active':!![],'name':_0x54255e},'auth':_0x3ad322,'json':!![]};return rp(_0x5c2930)[_0x2c81('0xd')](function(_0x43e15c){var _0x553579=_0x43e15c['result'][_0x2c81('0x1c')];_0x122c87(_0x553579);});});}function getRemoteTag(_0x23219c,_0x4f9157,_0x4fea10,_0x305b84,_0x41f494){return new Promise(function(_0x3b5610,_0x306a6b){var _0x50ab59={'method':'GET','uri':_0x4fea10+_0x2c81('0x42')+_0x2c81('0x43')+_0x23219c+'&'+_0x305b84,'auth':_0x4f9157,'json':!![]};return rp(_0x50ab59)[_0x2c81('0xd')](function(_0x482ba9){if(_0x482ba9[_0x2c81('0x19')]['length']>0x0){var _0x30c9ff=_0x482ba9[_0x2c81('0x19')][0x0]['sys_id'];_0x3b5610(_0x30c9ff);}else{return createRemoteTag(_0x23219c,_0x4f9157,_0x4fea10,_0x305b84)['then'](function(_0x150dd4){_0x3b5610(_0x150dd4);});}});});}function assignTagToIncident(_0x1b6537,_0x3390af,_0x27f108,_0x4f0cde,_0x1cb96c){return new Promise(function(_0x29a84d,_0x1c892f){var _0x817df6={'method':_0x2c81('0x20'),'uri':_0x27f108+_0x2c81('0x44')+'?'+_0x1cb96c,'body':{'label':_0x1b6537,'table':_0x2c81('0x39'),'id_type':_0x2c81('0x45'),'table_key':_0x4f0cde[_0x2c81('0x40')],'title':'Incident\x20-\x20'+_0x4f0cde[_0x2c81('0x46')],'id_display':_0x4f0cde[_0x2c81('0x46')]},'auth':_0x3390af,'json':!![]};return rp(_0x817df6)[_0x2c81('0xd')](function(_0x127e3a){_0x29a84d();})[_0x2c81('0x12')](function(){_0x29a84d();});});}function manageTags(_0x29dba6,_0x19d45f,_0x59b667,_0x872312,_0x1693b2,_0xa89e63,_0x5b9b98){return new Promise(function(_0x38629a,_0x219dac){var _0x440cae=[];_0x19d45f[_0x2c81('0x28')](function(_0x3b389d){_0x440cae[_0x2c81('0x47')](getRemoteTag(_0x3b389d,_0x59b667,_0x872312,_0xa89e63,_0x5b9b98));});return Promise[_0x2c81('0x48')](_0x440cae)[_0x2c81('0xd')](function(_0x4fccf8){if(_0x4fccf8['length']){logger['info']('['+[_0x29dba6[_0x2c81('0x13')]()]+_0x2c81('0x49'),_0x4fccf8);var _0x2cdb8b=[];_0x4fccf8['forEach'](function(_0x5d1b63){_0x2cdb8b[_0x2c81('0x47')](assignTagToIncident(_0x5d1b63,_0x59b667,_0x872312,_0x1693b2,_0xa89e63));});return Promise['all'](_0x2cdb8b)['then'](function(){_0x38629a();})[_0x2c81('0x12')](function(){_0x38629a();});}else{_0x38629a();}});});}function getTags(_0x409118,_0x48acd6,_0x400845,_0x305a0b,_0xb86080,_0x368da1){return function(_0x2ac460){return new Promise(function(_0x409e0e,_0x4f016e){var _0x281583=[];var _0x53fb35=_0x305a0b[_0x2c81('0x4a')];if(_0x53fb35&&_0x53fb35[_0x2c81('0xe')]>0x0){_0x281583=_[_0x2c81('0x4b')](_0x53fb35,_0x2c81('0x36'));}if(_0x281583['length']>0x0){return manageTags(_0x409118,_0x281583,_0x48acd6,_0x400845,_0x2ac460,_0xb86080,_0x368da1)[_0x2c81('0xd')](function(){_0x409e0e(_0x2ac460);});}else{_0x409e0e(_0x2ac460);}});};}function emit(_0x582dbf,_0x83d51,_0x30e9d0){var _0x17dd9c=_0x2c81('0x4c')+_0x2c81('0x4d')+_0x2c81('0x4e')+'%255EORDERBYDESCnumber';var _0x220371={'uri':_0x582dbf+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x30e9d0+_0x17dd9c};io['to'](util[_0x2c81('0x4f')](_0x2c81('0x50'),_0x83d51))['emit'](_0x2c81('0x51'),_0x220371);}exports['cs']=function(_0x33bf64,_0x3c79b3,_0x8cbdd0,_0x188bc5,_0x18bc1e,_0x37a1f0,_0x1da2b7,_0x39fc54){var _0x22cbcd={};var _0x212a0a={'user':_0x37a1f0[_0x2c81('0x52')],'pass':_0x37a1f0['password']};var _0x254f24='sysparm_limit=1';var _0x2251fd=_0x2c81('0x53');_0x37a1f0['remoteUri']=intUtil[_0x2c81('0x54')](_0x37a1f0[_0x2c81('0x55')]);_0x37a1f0[_0x2c81('0x56')]=intUtil['stripTrailingSlash'](_0x37a1f0['serverUrl']);var _0xb3e38c=util['format']('%s/api/now/table/',_0x37a1f0[_0x2c81('0x55')]);_0x22cbcd['userEmail']=!_[_0x2c81('0x57')](_0x188bc5)?_0x188bc5[_0x2c81('0x58')]:null;_0x22cbcd[_0x2c81('0x1d')]=_0x37a1f0['email'];_0x22cbcd[_0x2c81('0x21')]=_0x39fc54[_0x2c81('0x32')]()===_0x2c81('0x38')?_0x3c79b3['destcalleridnum']:_0x3c79b3[_0x2c81('0x59')];_0x22cbcd[_0x2c81('0x5a')]=_0x39fc54==='queue'||_0x39fc54===_0x2c81('0x5b')?_0x2c81('0x5c'):_0x2c81('0x38');var _0x17ad6a=util[_0x2c81('0x4f')](_0x2c81('0x5d'),_0x37a1f0['serverUrl'],_0x3c79b3[_0x2c81('0x5e')],md5(_0x3c79b3[_0x2c81('0x5e')]));if(_0x18bc1e&&_0x18bc1e[_0x2c81('0x5f')]){logger[_0x2c81('0x10')](_0x2c81('0x60'),_0x2c81('0x61'));_0x3c79b3[_0x2c81('0x62')]=_0x17ad6a;}else if(_0x1da2b7&&_0x1da2b7[_0x2c81('0x63')]&&_0x1da2b7[_0x2c81('0x63')]!==_0x2c81('0x64')){logger[_0x2c81('0x10')](_0x2c81('0x65'),_0x2c81('0x61'));_0x3c79b3[_0x2c81('0x62')]=_0x17ad6a;}else{_0x3c79b3[_0x2c81('0x62')]='';}return getAdminUser(_0x39fc54,_0x212a0a,_0x22cbcd,_0xb3e38c,_0x2251fd,_0x254f24)[_0x2c81('0xd')](getUser(_0x39fc54,_0x212a0a,_0xb3e38c,_0x2251fd,_0x254f24))[_0x2c81('0xd')](getEndUser(_0x39fc54,_0x212a0a,_0xb3e38c,_0x2251fd,_0x254f24))[_0x2c81('0xd')](getTicket(_0x39fc54,_0x212a0a,_0xb3e38c,_0x8cbdd0,_0x3c79b3,_0x2251fd))[_0x2c81('0xd')](function(_0x888487){logger[_0x2c81('0x10')](util[_0x2c81('0x4f')](_0x2c81('0x66'),_0x888487['ticketId']));logger[_0x2c81('0x10')](util[_0x2c81('0x4f')](_0x2c81('0x67'),_0x39fc54));if(_0x39fc54!==_0x2c81('0x5b')){logger[_0x2c81('0x10')]('['+[_0x39fc54[_0x2c81('0x13')]()]+']',_0x2c81('0x68'));emit(_0x37a1f0[_0x2c81('0x55')],_0x188bc5[_0x2c81('0x36')],_0x888487['ticketId']);}})[_0x2c81('0x12')](function(_0x5e24bd){logger[_0x2c81('0x25')]('['+[_0x39fc54['toUpperCase']()]+_0x2c81('0x69'),util[_0x2c81('0x6a')](_0x5e24bd,{'showHidden':!![],'depth':null}));});};