dac18e48c9c08251f6e8907ffba69d198d388ff7
[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 _0x6343=['getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/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','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','ticketId','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','request-promise','util','../../../../config/logger','servicenow','defaults','redis','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminEmail','],\x20getUser\x20crm','POST','sys_user?','endUserNumber','user','true','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes','string','picklist','customField','toString','idField','toLowerCase','type','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign'];(function(_0x3471d2,_0x568dad){var _0x27afed=function(_0x4e845f){while(--_0x4e845f){_0x3471d2['push'](_0x3471d2['shift']());}};_0x27afed(++_0x568dad);}(_0x6343,0x168));var _0x3634=function(_0x26cc24,_0x682ea6){_0x26cc24=_0x26cc24-0x0;var _0xc102e3=_0x6343[_0x26cc24];return _0xc102e3;};'use strict';var _=require('lodash');var Promise=require('bluebird');var rp=require(_0x3634('0x0'));var util=require(_0x3634('0x1'));var md5=require('md5');var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x3634('0x2'))(_0x3634('0x3'));config['redis']=_[_0x3634('0x4')](config[_0x3634('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x3634('0x6'))(new Redis(config[_0x3634('0x5')]));function getAdminUser(_0x4e6d71,_0x5affba,_0x19170a,_0x1bcdb2,_0xfac918,_0x3c813b){return new Promise(function(_0x2e8e8b,_0x43f681){var _0x5e907a={'method':'GET','uri':_0x1bcdb2+_0x3634('0x7')+'&'+_0xfac918+'&'+_0x3c813b,'auth':_0x5affba,'json':!![]};return rp(_0x5e907a)[_0x3634('0x8')](function(_0x4d7e0c){if(_0x4d7e0c[_0x3634('0x9')][_0x3634('0xa')]>0x0){_0x19170a[_0x3634('0xb')]=_0x4d7e0c[_0x3634('0x9')][0x0][_0x3634('0xc')];}logger[_0x3634('0xd')]('['+[_0x4e6d71[_0x3634('0xe')]()]+_0x3634('0xf'),_0x19170a);_0x2e8e8b(_0x19170a);})[_0x3634('0x10')](function(_0x36f54b){logger[_0x3634('0x11')]('['+[_0x4e6d71[_0x3634('0xe')]()]+']',_0x36f54b[_0x3634('0x12')]);_0x43f681(_0x36f54b[_0x3634('0x12')]);});});}function getUser(_0x5a5063,_0x167247,_0x48787f,_0x69609d,_0x18285c){return function(_0x2fc628){logger[_0x3634('0xd')]('['+[_0x5a5063[_0x3634('0xe')]()]+'],\x20getUser\x20input\x20crm',_0x2fc628);return new Promise(function(_0x3121a3,_0x4b8ec8){if(intUtil['validateEmail'](_0x2fc628[_0x3634('0x13')])){var _0x4b2115={'method':_0x3634('0x14'),'uri':_0x48787f+_0x3634('0x15')+_0x2fc628[_0x3634('0x13')]+'&'+_0x69609d+'&'+_0x18285c,'auth':_0x167247,'json':!![]};logger['info']('['+[_0x5a5063[_0x3634('0xe')]()]+_0x3634('0x16'),_0x4b2115);return rp(_0x4b2115)['then'](function(_0xeb9231){logger['info']('['+[_0x5a5063[_0x3634('0xe')]()]+_0x3634('0x17'),_0xeb9231);if(_0xeb9231['result'][_0x3634('0xa')]>0x0&&String(_0xeb9231[_0x3634('0x9')][0x0][_0x3634('0x18')])==='true'){_0x2fc628[_0x3634('0x19')]=_0xeb9231[_0x3634('0x9')][0x0]['sys_id'];}else{_0x2fc628[_0x3634('0x19')]=_0x2fc628['adminId'];_0x2fc628['userEmail']=_0x2fc628[_0x3634('0x1a')];}logger[_0x3634('0xd')]('['+[_0x5a5063['toUpperCase']()]+_0x3634('0x1b'),_0x2fc628);_0x3121a3(_0x2fc628);})[_0x3634('0x10')](function(_0x17db44){logger[_0x3634('0x11')]('['+[_0x5a5063[_0x3634('0xe')]()]+']',_0x17db44[_0x3634('0x12')]);_0x4b8ec8(_0x17db44[_0x3634('0x12')]);});}else{logger[_0x3634('0xd')]('['+[_0x5a5063[_0x3634('0xe')]()]+']\x20using\x20admin\x20profile');_0x2fc628[_0x3634('0x19')]=_0x2fc628['adminId'];_0x2fc628['userEmail']=_0x2fc628['adminEmail'];_0x3121a3(_0x2fc628);}});};}function createEndUser(_0x7a35c4,_0x576977,_0x3bf28b,_0x12b80e,_0x49804f){logger['info']('['+[_0x7a35c4[_0x3634('0xe')]()]+'],\x20createEndUser\x20input\x20crm',_0x3bf28b);return new Promise(function(_0x281504,_0x5d273c){var _0x1e04cc={'method':_0x3634('0x1c'),'uri':_0x12b80e+_0x3634('0x1d')+_0x49804f,'body':{'user_name':_0x3bf28b[_0x3634('0x1e')],'roles':_0x3634('0x1f'),'first_name':_0x3bf28b[_0x3634('0x1e')],'active':_0x3634('0x20'),'date_format':_0x3634('0x21'),'phone':_0x3bf28b['endUserNumber']},'auth':_0x576977,'json':!![]};return rp(_0x1e04cc)['then'](function(_0x4d26b4){logger[_0x3634('0xd')]('['+[_0x7a35c4['toUpperCase']()]+_0x3634('0x22'),_0x4d26b4[_0x3634('0x9')]);_0x3bf28b[_0x3634('0x23')]=_0x4d26b4[_0x3634('0x9')][_0x3634('0xc')];_0x281504(_0x3bf28b);})[_0x3634('0x10')](function(_0x5e7afb){logger[_0x3634('0x11')]('['+[_0x7a35c4[_0x3634('0xe')]()]+']',_0x5e7afb[_0x3634('0x12')]);_0x5d273c(_0x5e7afb[_0x3634('0x12')]);});});}function getEndUser(_0x424825,_0x5980fd,_0x455fba,_0x464ab0,_0xff159){return function(_0x598c7e){logger[_0x3634('0xd')]('['+[_0x424825[_0x3634('0xe')]()]+_0x3634('0x24'),_0x598c7e);return new Promise(function(_0x359b07,_0x53e0f6){var _0x149840={'method':_0x3634('0x14'),'uri':_0x455fba+_0x3634('0x25')+_0x598c7e['endUserNumber']+'&'+_0x464ab0+'&'+_0xff159,'auth':_0x5980fd,'json':!![]};return rp(_0x149840)['then'](function(_0x55b8d8){if(_0x55b8d8[_0x3634('0x9')][_0x3634('0xa')]>0x0){_0x598c7e['endUserId']=_0x55b8d8[_0x3634('0x9')][0x0][_0x3634('0xc')];logger[_0x3634('0xd')]('['+[_0x424825[_0x3634('0xe')]()]+_0x3634('0x26'),_0x598c7e);_0x359b07(_0x598c7e);}else{return createEndUser(_0x424825,_0x5980fd,_0x598c7e,_0x455fba,_0x464ab0)[_0x3634('0x8')](function(_0x431619){logger['info']('['+[_0x424825[_0x3634('0xe')]()]+'],\x20createEndUser\x20crm',_0x431619);_0x359b07(_0x431619);});}})[_0x3634('0x10')](function(_0x3ae966){logger[_0x3634('0x11')]('['+[_0x424825[_0x3634('0xe')]()]+']',_0x3ae966[_0x3634('0x12')]);_0x53e0f6(_0x3ae966['message']);});});};}function getCustomFields(_0x10ff70,_0x33af29){var _0x32d112={};if(_0x10ff70[_0x3634('0xa')]>0x0){_[_0x3634('0x27')](_0x10ff70,function(_0x17714e){if(_[_0x3634('0x28')]([_0x3634('0x29'),_0x3634('0x2a')],_0x17714e['type'])&&_0x17714e['nameField']&&!_0x17714e[_0x3634('0x2b')]){_0x32d112[_0x17714e['nameField']['toLowerCase']()]=_0x17714e['content'][_0x3634('0x2c')]();}else if(_['includes']([_0x3634('0x29'),_0x3634('0x2a')],_0x17714e['type'])&&_0x17714e['idField']&&_0x17714e['customField']){_0x32d112[_0x17714e[_0x3634('0x2d')][_0x3634('0x2e')]()]=_0x17714e['content'][_0x3634('0x2c')]();}else if(_0x17714e[_0x3634('0x2f')]===_0x3634('0x30')&&_0x17714e[_0x3634('0x31')]&&_0x17714e[_0x3634('0x2d')]&&_0x17714e['customField']){_0x32d112[_0x17714e['idField'][_0x3634('0x2e')]()]=_0x33af29[_0x17714e[_0x3634('0x31')]][_0x3634('0x2c')]();}else if(_0x17714e[_0x3634('0x2f')]===_0x3634('0x32')&&_0x17714e[_0x3634('0x33')]&&_0x17714e['Variable'][_0x3634('0x34')]&&_0x17714e[_0x3634('0x2d')]&&_0x17714e[_0x3634('0x2b')]){_0x32d112[_0x17714e['idField']['toLowerCase']()]=_0x33af29[_0x17714e[_0x3634('0x33')][_0x3634('0x34')][_0x3634('0x2e')]()][_0x3634('0x2c')]();}});}return _0x32d112;}function getTicket(_0x96b117,_0x12e6ab,_0x3f513a,_0x38a75a,_0x52de40,_0xfb94f0){return function(_0x3401b8){logger[_0x3634('0xd')]('['+[_0x96b117[_0x3634('0xe')]()]+_0x3634('0x35'),_0x3401b8);return new Promise(function(_0x151654,_0x10e5e4){var _0x326b61=_0x96b117[_0x3634('0x2e')]()==='outbound'?_0x3401b8[_0x3634('0x19')]:_0x3401b8[_0x3634('0x23')];var _0x4a4a94={'method':_0x3634('0x1c'),'uri':_0x3f513a+_0x3634('0x36')+'?'+_0xfb94f0,'body':Object[_0x3634('0x37')]({},{'active':_0x3634('0x20'),'caller_id':_0x326b61,'assigned_to':_0x3401b8[_0x3634('0x19')],'short_description':intUtil[_0x3634('0x38')](_0x38a75a['Subjects'],_0x52de40,'\x20'),'description':intUtil[_0x3634('0x38')](_0x38a75a[_0x3634('0x39')],_0x52de40,'\x0a')},getCustomFields(_0x38a75a[_0x3634('0x3a')],_0x52de40)),'auth':_0x12e6ab,'json':!![]};return rp(_0x4a4a94)[_0x3634('0x8')](function(_0x2a1e51){logger['info']('['+[_0x96b117[_0x3634('0xe')]()]+_0x3634('0x3b'),_0x2a1e51['result']);_0x3401b8['ticketId']=_0x2a1e51[_0x3634('0x9')]['sys_id'];_0x3401b8[_0x3634('0x3c')]=_0x2a1e51[_0x3634('0x9')][_0x3634('0x3d')];logger[_0x3634('0xd')]('['+[_0x96b117['toUpperCase']()]+_0x3634('0x3e'),_0x3401b8);_0x151654(_0x3401b8);})[_0x3634('0x10')](function(_0x3d04ab){logger[_0x3634('0x11')]('['+[_0x96b117[_0x3634('0xe')]()]+']',_0x3d04ab[_0x3634('0x12')]);_0x10e5e4(_0x3d04ab[_0x3634('0x12')]);});});};}function createRemoteTag(_0xc83a28,_0x32bfe4,_0x320286,_0xcedbb6){return new Promise(function(_0x4265eb,_0x557438){var _0x32b48c={'method':_0x3634('0x1c'),'uri':_0x320286+_0x3634('0x3f')+'?'+_0xcedbb6,'body':{'short_description':_0xc83a28,'global':!![],'active':!![],'name':_0xc83a28},'auth':_0x32bfe4,'json':!![]};return rp(_0x32b48c)[_0x3634('0x8')](function(_0x752546){var _0x15f414=_0x752546[_0x3634('0x9')][_0x3634('0xc')];_0x4265eb(_0x15f414);});});}function getRemoteTag(_0x3a8308,_0x5f2287,_0x2bcb9e,_0x2ea4b0,_0x48d641){return new Promise(function(_0x31165c,_0x1be01b){var _0x53443e={'method':_0x3634('0x14'),'uri':_0x2bcb9e+_0x3634('0x3f')+_0x3634('0x40')+_0x3a8308+'&'+_0x2ea4b0,'auth':_0x5f2287,'json':!![]};return rp(_0x53443e)['then'](function(_0x2c16fa){if(_0x2c16fa['result'][_0x3634('0xa')]>0x0){var _0x51f2f8=_0x2c16fa[_0x3634('0x9')][0x0][_0x3634('0xc')];_0x31165c(_0x51f2f8);}else{return createRemoteTag(_0x3a8308,_0x5f2287,_0x2bcb9e,_0x2ea4b0)[_0x3634('0x8')](function(_0x5e3788){_0x31165c(_0x5e3788);});}});});}function assignTagToIncident(_0x2f2032,_0x2b72cd,_0x5df700,_0x2a2c92,_0xbc0017){return new Promise(function(_0x460773,_0x6781cb){var _0x589c0d={'method':_0x3634('0x1c'),'uri':_0x5df700+_0x3634('0x41')+'?'+_0xbc0017,'body':{'label':_0x2f2032,'table':'incident','id_type':'Incident','table_key':_0x2a2c92['ticketId'],'title':_0x3634('0x42')+_0x2a2c92['ticketNumber'],'id_display':_0x2a2c92[_0x3634('0x3c')]},'auth':_0x2b72cd,'json':!![]};return rp(_0x589c0d)[_0x3634('0x8')](function(_0x185b18){_0x460773();})['catch'](function(){_0x460773();});});}function manageTags(_0x1445a4,_0x3f3dc1,_0x56f3cc,_0x2f1b5d,_0x1c37f4,_0x27e00b,_0x5a9808){return new Promise(function(_0x31c910,_0xb69eea){var _0x897c0e=[];_0x3f3dc1[_0x3634('0x27')](function(_0x218902){_0x897c0e['push'](getRemoteTag(_0x218902,_0x56f3cc,_0x2f1b5d,_0x27e00b,_0x5a9808));});return Promise[_0x3634('0x43')](_0x897c0e)[_0x3634('0x8')](function(_0xfa3195){if(_0xfa3195['length']){logger[_0x3634('0xd')]('['+[_0x1445a4['toUpperCase']()]+_0x3634('0x44'),_0xfa3195);var _0x12ee97=[];_0xfa3195['forEach'](function(_0x128461){_0x12ee97[_0x3634('0x45')](assignTagToIncident(_0x128461,_0x56f3cc,_0x2f1b5d,_0x1c37f4,_0x27e00b));});return Promise[_0x3634('0x43')](_0x12ee97)['then'](function(){_0x31c910();})[_0x3634('0x10')](function(){_0x31c910();});}else{_0x31c910();}});});}function getTags(_0x4b724c,_0x4b81ec,_0x1cea1b,_0x58cd2e,_0x30fd12,_0x70898e){return function(_0x1761d4){return new Promise(function(_0x88ae3b,_0x5251ae){var _0x3768ec=[];var _0x12c078=_0x58cd2e['Tags'];if(_0x12c078&&_0x12c078[_0x3634('0xa')]>0x0){_0x3768ec=_['map'](_0x12c078,_0x3634('0x34'));}if(_0x3768ec['length']>0x0){return manageTags(_0x4b724c,_0x3768ec,_0x4b81ec,_0x1cea1b,_0x1761d4,_0x30fd12,_0x70898e)['then'](function(){_0x88ae3b(_0x1761d4);});}else{_0x88ae3b(_0x1761d4);}});};}function emit(_0x11c4cc,_0x9a3947,_0x10b783){var _0x55f9dc=_0x3634('0x46')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x3634('0x47')+_0x3634('0x48');var _0x2e7b1d={'uri':_0x11c4cc+_0x3634('0x49')+_0x10b783+_0x55f9dc};io['to'](util[_0x3634('0x4a')](_0x3634('0x4b'),_0x9a3947))[_0x3634('0x4c')](_0x3634('0x4d'),_0x2e7b1d);}exports['cs']=function(_0x347acc,_0x10d3c7,_0x214c61,_0x4bbfed,_0x5bbe3b,_0x191ab8,_0x592793,_0x465712){var _0x352d98={};var _0x3376ef={'user':_0x191ab8[_0x3634('0x4e')],'pass':_0x191ab8[_0x3634('0x4f')]};var _0x506f7c=_0x3634('0x50');var _0x411e19=_0x3634('0x51');_0x191ab8[_0x3634('0x52')]=intUtil[_0x3634('0x53')](_0x191ab8['remoteUri']);_0x191ab8[_0x3634('0x54')]=intUtil[_0x3634('0x53')](_0x191ab8[_0x3634('0x54')]);var _0x363d8b=util['format']('%s/api/now/table/',_0x191ab8[_0x3634('0x52')]);_0x352d98[_0x3634('0x13')]=!_[_0x3634('0x55')](_0x4bbfed)?_0x4bbfed[_0x3634('0x56')]:null;_0x352d98['adminEmail']=_0x191ab8[_0x3634('0x56')];_0x352d98['endUserNumber']=_0x465712[_0x3634('0x2e')]()==='outbound'?_0x10d3c7[_0x3634('0x57')]:_0x10d3c7[_0x3634('0x58')];_0x352d98[_0x3634('0x59')]=_0x465712===_0x3634('0x5a')||_0x465712===_0x3634('0x5b')?_0x3634('0x5a'):'outbound';var _0x3007d1=util['format'](_0x3634('0x5c'),_0x191ab8[_0x3634('0x54')],_0x10d3c7[_0x3634('0x5d')],md5(_0x10d3c7[_0x3634('0x5d')]));if(_0x5bbe3b&&_0x5bbe3b[_0x3634('0x5e')]){logger[_0x3634('0xd')](_0x3634('0x5f'),_0x3634('0x60'));_0x10d3c7[_0x3634('0x61')]=_0x3007d1;}else if(_0x592793&&_0x592793['recordingFormat']&&_0x592793[_0x3634('0x62')]!==_0x3634('0x63')){logger[_0x3634('0xd')](_0x3634('0x64'),_0x3634('0x60'));_0x10d3c7[_0x3634('0x61')]=_0x3007d1;}else{_0x10d3c7[_0x3634('0x61')]='';}return getAdminUser(_0x465712,_0x3376ef,_0x352d98,_0x363d8b,_0x411e19,_0x506f7c)[_0x3634('0x8')](getUser(_0x465712,_0x3376ef,_0x363d8b,_0x411e19,_0x506f7c))[_0x3634('0x8')](getEndUser(_0x465712,_0x3376ef,_0x363d8b,_0x411e19,_0x506f7c))[_0x3634('0x8')](getTicket(_0x465712,_0x3376ef,_0x363d8b,_0x214c61,_0x10d3c7,_0x411e19))['then'](function(_0x3f09cf){logger[_0x3634('0xd')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x3f09cf[_0x3634('0x65')]));logger[_0x3634('0xd')](util[_0x3634('0x4a')](_0x3634('0x66'),_0x465712));if(_0x465712!=='unmanaged'){logger[_0x3634('0xd')]('['+[_0x465712[_0x3634('0xe')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x191ab8[_0x3634('0x52')],_0x4bbfed[_0x3634('0x34')],_0x3f09cf['ticketId']);}})[_0x3634('0x10')](function(_0x476872){logger['error']('['+[_0x465712[_0x3634('0xe')]()]+_0x3634('0x67'),util['inspect'](_0x476872,{'showHidden':!![],'depth':null}));});};