e2ffe3c692a4a093f04bc8e515dc576c6e4098aa
[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 _0xafed=['],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','nameField','customField','toString','idField','toLowerCase','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%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','%s/api/now/table/','email','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','then','result','length','sys_id','info','toUpperCase','catch','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminId','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D'];(function(_0x16b973,_0x38d209){var _0x3b408a=function(_0x4ea2ad){while(--_0x4ea2ad){_0x16b973['push'](_0x16b973['shift']());}};_0x3b408a(++_0x38d209);}(_0xafed,0x1a0));var _0xdafe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xafed[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdafe('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0xdafe('0x1'));var md5=require(_0xdafe('0x2'));var Redis=require(_0xdafe('0x3'));var intUtil=require(_0xdafe('0x4'));var config=require(_0xdafe('0x5'));var logger=require(_0xdafe('0x6'))(_0xdafe('0x7'));config[_0xdafe('0x8')]=_['defaults'](config[_0xdafe('0x8')],{'host':_0xdafe('0x9'),'port':0x18eb});var io=require(_0xdafe('0xa'))(new Redis(config['redis']));function getAdminUser(_0x77401a,_0x2e1804,_0x12bd52,_0x405418,_0x4d7eb1,_0xac10ff){return new Promise(function(_0x3b9b27,_0x230976){var _0x181fb3={'method':_0xdafe('0xb'),'uri':_0x405418+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x4d7eb1+'&'+_0xac10ff,'auth':_0x2e1804,'json':!![]};return rp(_0x181fb3)[_0xdafe('0xc')](function(_0x12fa9d){if(_0x12fa9d[_0xdafe('0xd')][_0xdafe('0xe')]>0x0){_0x12bd52['adminId']=_0x12fa9d[_0xdafe('0xd')][0x0][_0xdafe('0xf')];}logger[_0xdafe('0x10')]('['+[_0x77401a[_0xdafe('0x11')]()]+'],\x20getAdminUser\x20crm',_0x12bd52);_0x3b9b27(_0x12bd52);})[_0xdafe('0x12')](function(_0x33fa81){logger['error']('['+[_0x77401a[_0xdafe('0x11')]()]+']',_0x33fa81[_0xdafe('0x13')]);_0x230976(_0x33fa81[_0xdafe('0x13')]);});});}function getUser(_0x2dd68c,_0x59bf28,_0x2cfb26,_0x46ad01,_0x4cc48c){return function(_0x2b018e){logger[_0xdafe('0x10')]('['+[_0x2dd68c['toUpperCase']()]+_0xdafe('0x14'),_0x2b018e);return new Promise(function(_0x1c715d,_0x30d15c){if(intUtil[_0xdafe('0x15')](_0x2b018e[_0xdafe('0x16')])){var _0x5cd304={'method':'GET','uri':_0x2cfb26+_0xdafe('0x17')+_0x2b018e[_0xdafe('0x16')]+'&'+_0x46ad01+'&'+_0x4cc48c,'auth':_0x59bf28,'json':!![]};logger[_0xdafe('0x10')]('['+[_0x2dd68c['toUpperCase']()]+_0xdafe('0x18'),_0x5cd304);return rp(_0x5cd304)[_0xdafe('0xc')](function(_0x5088b8){logger[_0xdafe('0x10')]('['+[_0x2dd68c['toUpperCase']()]+_0xdafe('0x19'),_0x5088b8);if(_0x5088b8[_0xdafe('0xd')]['length']>0x0&&String(_0x5088b8[_0xdafe('0xd')][0x0][_0xdafe('0x1a')])===_0xdafe('0x1b')){_0x2b018e['userId']=_0x5088b8[_0xdafe('0xd')][0x0][_0xdafe('0xf')];}else{_0x2b018e[_0xdafe('0x1c')]=_0x2b018e[_0xdafe('0x1d')];_0x2b018e['userEmail']=_0x2b018e[_0xdafe('0x1e')];}logger['info']('['+[_0x2dd68c[_0xdafe('0x11')]()]+_0xdafe('0x1f'),_0x2b018e);_0x1c715d(_0x2b018e);})[_0xdafe('0x12')](function(_0x4f2456){logger[_0xdafe('0x20')]('['+[_0x2dd68c[_0xdafe('0x11')]()]+']',_0x4f2456[_0xdafe('0x13')]);_0x30d15c(_0x4f2456['message']);});}else{logger[_0xdafe('0x10')]('['+[_0x2dd68c[_0xdafe('0x11')]()]+_0xdafe('0x21'));_0x2b018e['userId']=_0x2b018e['adminId'];_0x2b018e[_0xdafe('0x16')]=_0x2b018e[_0xdafe('0x1e')];_0x1c715d(_0x2b018e);}});};}function createEndUser(_0x5b39b7,_0xad5547,_0x2aa545,_0x2a427b,_0x1bc865){logger['info']('['+[_0x5b39b7[_0xdafe('0x11')]()]+_0xdafe('0x22'),_0x2aa545);return new Promise(function(_0x4f1ede,_0x1f4688){var _0x5cbdc2={'method':_0xdafe('0x23'),'uri':_0x2a427b+_0xdafe('0x24')+_0x1bc865,'body':{'user_name':_0x2aa545['endUserNumber'],'roles':_0xdafe('0x25'),'first_name':_0x2aa545[_0xdafe('0x26')],'active':_0xdafe('0x1b'),'date_format':_0xdafe('0x27'),'phone':_0x2aa545[_0xdafe('0x26')]},'auth':_0xad5547,'json':!![]};return rp(_0x5cbdc2)[_0xdafe('0xc')](function(_0x7108fa){logger[_0xdafe('0x10')]('['+[_0x5b39b7[_0xdafe('0x11')]()]+_0xdafe('0x28'),_0x7108fa[_0xdafe('0xd')]);_0x2aa545[_0xdafe('0x29')]=_0x7108fa[_0xdafe('0xd')][_0xdafe('0xf')];_0x4f1ede(_0x2aa545);})['catch'](function(_0x5e4f52){logger[_0xdafe('0x20')]('['+[_0x5b39b7[_0xdafe('0x11')]()]+']',_0x5e4f52[_0xdafe('0x13')]);_0x1f4688(_0x5e4f52['message']);});});}function getEndUser(_0x1ab200,_0xea7418,_0x285227,_0x480c2a,_0x2d6f04){return function(_0x5e2800){logger['info']('['+[_0x1ab200[_0xdafe('0x11')]()]+_0xdafe('0x2a'),_0x5e2800);return new Promise(function(_0x10f3e8,_0xcae1d0){var _0xfa28eb={'method':_0xdafe('0xb'),'uri':_0x285227+_0xdafe('0x2b')+_0x5e2800['endUserNumber']+'&'+_0x480c2a+'&'+_0x2d6f04,'auth':_0xea7418,'json':!![]};return rp(_0xfa28eb)[_0xdafe('0xc')](function(_0x441c6d){if(_0x441c6d[_0xdafe('0xd')]['length']>0x0){_0x5e2800['endUserId']=_0x441c6d['result'][0x0][_0xdafe('0xf')];logger['info']('['+[_0x1ab200['toUpperCase']()]+_0xdafe('0x2c'),_0x5e2800);_0x10f3e8(_0x5e2800);}else{return createEndUser(_0x1ab200,_0xea7418,_0x5e2800,_0x285227,_0x480c2a)[_0xdafe('0xc')](function(_0x2c6703){logger['info']('['+[_0x1ab200['toUpperCase']()]+_0xdafe('0x2d'),_0x2c6703);_0x10f3e8(_0x2c6703);});}})[_0xdafe('0x12')](function(_0x4c1fdf){logger[_0xdafe('0x20')]('['+[_0x1ab200[_0xdafe('0x11')]()]+']',_0x4c1fdf[_0xdafe('0x13')]);_0xcae1d0(_0x4c1fdf[_0xdafe('0x13')]);});});};}function getCustomFields(_0x4e2647,_0x6a7cc5){var _0x10c707={};if(_0x4e2647[_0xdafe('0xe')]>0x0){_[_0xdafe('0x2e')](_0x4e2647,function(_0x5435b7){if(_[_0xdafe('0x2f')](['string',_0xdafe('0x30')],_0x5435b7[_0xdafe('0x31')])&&_0x5435b7[_0xdafe('0x32')]&&!_0x5435b7[_0xdafe('0x33')]){_0x10c707[_0x5435b7['nameField']['toLowerCase']()]=_0x5435b7['content'][_0xdafe('0x34')]();}else if(_[_0xdafe('0x2f')](['string','picklist'],_0x5435b7[_0xdafe('0x31')])&&_0x5435b7[_0xdafe('0x35')]&&_0x5435b7[_0xdafe('0x33')]){_0x10c707[_0x5435b7[_0xdafe('0x35')][_0xdafe('0x36')]()]=_0x5435b7[_0xdafe('0x37')][_0xdafe('0x34')]();}else if(_0x5435b7['type']===_0xdafe('0x38')&&_0x5435b7[_0xdafe('0x39')]&&_0x5435b7[_0xdafe('0x35')]&&_0x5435b7[_0xdafe('0x33')]){_0x10c707[_0x5435b7[_0xdafe('0x35')][_0xdafe('0x36')]()]=_0x6a7cc5[_0x5435b7[_0xdafe('0x39')]][_0xdafe('0x34')]();}else if(_0x5435b7[_0xdafe('0x31')]===_0xdafe('0x3a')&&_0x5435b7[_0xdafe('0x3b')]&&_0x5435b7['Variable']['name']&&_0x5435b7[_0xdafe('0x35')]&&_0x5435b7[_0xdafe('0x33')]){_0x10c707[_0x5435b7[_0xdafe('0x35')][_0xdafe('0x36')]()]=_0x6a7cc5[_0x5435b7[_0xdafe('0x3b')][_0xdafe('0x3c')]['toLowerCase']()][_0xdafe('0x34')]();}});}return _0x10c707;}function getTicket(_0x5e0bab,_0x24a7f7,_0x30a932,_0x49773c,_0x5a8710,_0x549c67){return function(_0x5382f5){logger['info']('['+[_0x5e0bab[_0xdafe('0x11')]()]+_0xdafe('0x3d'),_0x5382f5);return new Promise(function(_0xe765e,_0x1318fd){var _0x2d499d=_0x5e0bab[_0xdafe('0x36')]()==='outbound'?_0x5382f5[_0xdafe('0x1c')]:_0x5382f5[_0xdafe('0x29')];var _0x36613d={'method':'POST','uri':_0x30a932+_0xdafe('0x3e')+'?'+_0x549c67,'body':Object[_0xdafe('0x3f')]({},{'active':_0xdafe('0x1b'),'caller_id':_0x2d499d,'assigned_to':_0x5382f5[_0xdafe('0x1c')],'short_description':intUtil[_0xdafe('0x40')](_0x49773c[_0xdafe('0x41')],_0x5a8710,'\x20'),'description':intUtil['getString'](_0x49773c[_0xdafe('0x42')],_0x5a8710,'\x0a')},getCustomFields(_0x49773c[_0xdafe('0x43')],_0x5a8710)),'auth':_0x24a7f7,'json':!![]};return rp(_0x36613d)['then'](function(_0x474b7d){logger[_0xdafe('0x10')]('['+[_0x5e0bab[_0xdafe('0x11')]()]+_0xdafe('0x44'),_0x474b7d[_0xdafe('0xd')]);_0x5382f5[_0xdafe('0x45')]=_0x474b7d[_0xdafe('0xd')][_0xdafe('0xf')];_0x5382f5[_0xdafe('0x46')]=_0x474b7d['result'][_0xdafe('0x47')];logger['info']('['+[_0x5e0bab[_0xdafe('0x11')]()]+']\x20getTicket\x20crm',_0x5382f5);_0xe765e(_0x5382f5);})[_0xdafe('0x12')](function(_0x4a7338){logger[_0xdafe('0x20')]('['+[_0x5e0bab[_0xdafe('0x11')]()]+']',_0x4a7338[_0xdafe('0x13')]);_0x1318fd(_0x4a7338[_0xdafe('0x13')]);});});};}function createRemoteTag(_0x100439,_0x1acd77,_0x2ffad9,_0x2450f5){return new Promise(function(_0xa0ea13,_0x5a73b3){var _0x22f935={'method':_0xdafe('0x23'),'uri':_0x2ffad9+_0xdafe('0x48')+'?'+_0x2450f5,'body':{'short_description':_0x100439,'global':!![],'active':!![],'name':_0x100439},'auth':_0x1acd77,'json':!![]};return rp(_0x22f935)[_0xdafe('0xc')](function(_0x590f93){var _0x4b17f7=_0x590f93[_0xdafe('0xd')]['sys_id'];_0xa0ea13(_0x4b17f7);});});}function getRemoteTag(_0x15fdaf,_0x4eec16,_0x25944e,_0x3636eb,_0x23bf0e){return new Promise(function(_0xa92393,_0x4fa66c){var _0x118ecf={'method':_0xdafe('0xb'),'uri':_0x25944e+_0xdafe('0x48')+_0xdafe('0x49')+_0x15fdaf+'&'+_0x3636eb,'auth':_0x4eec16,'json':!![]};return rp(_0x118ecf)[_0xdafe('0xc')](function(_0x2004a3){if(_0x2004a3[_0xdafe('0xd')][_0xdafe('0xe')]>0x0){var _0x57ead1=_0x2004a3[_0xdafe('0xd')][0x0][_0xdafe('0xf')];_0xa92393(_0x57ead1);}else{return createRemoteTag(_0x15fdaf,_0x4eec16,_0x25944e,_0x3636eb)['then'](function(_0x47241d){_0xa92393(_0x47241d);});}});});}function assignTagToIncident(_0x558bec,_0x38831c,_0x5a195f,_0x18aed6,_0xa95ab5){return new Promise(function(_0x4a4230,_0x254f9c){var _0x4aec2e={'method':_0xdafe('0x23'),'uri':_0x5a195f+'label_entry'+'?'+_0xa95ab5,'body':{'label':_0x558bec,'table':'incident','id_type':_0xdafe('0x4a'),'table_key':_0x18aed6[_0xdafe('0x45')],'title':_0xdafe('0x4b')+_0x18aed6[_0xdafe('0x46')],'id_display':_0x18aed6[_0xdafe('0x46')]},'auth':_0x38831c,'json':!![]};return rp(_0x4aec2e)[_0xdafe('0xc')](function(_0x51ae46){_0x4a4230();})[_0xdafe('0x12')](function(){_0x4a4230();});});}function manageTags(_0x269cea,_0x1cc872,_0x1d1d82,_0x39ed2b,_0x5240a1,_0x5f35da,_0x5c325e){return new Promise(function(_0x2f4765,_0x448ecb){var _0x188573=[];_0x1cc872['forEach'](function(_0x1b0384){_0x188573[_0xdafe('0x4c')](getRemoteTag(_0x1b0384,_0x1d1d82,_0x39ed2b,_0x5f35da,_0x5c325e));});return Promise[_0xdafe('0x4d')](_0x188573)[_0xdafe('0xc')](function(_0xc0e74e){if(_0xc0e74e[_0xdafe('0xe')]){logger[_0xdafe('0x10')]('['+[_0x269cea[_0xdafe('0x11')]()]+_0xdafe('0x4e'),_0xc0e74e);var _0x53af8a=[];_0xc0e74e[_0xdafe('0x2e')](function(_0x246d5c){_0x53af8a[_0xdafe('0x4c')](assignTagToIncident(_0x246d5c,_0x1d1d82,_0x39ed2b,_0x5240a1,_0x5f35da));});return Promise['all'](_0x53af8a)[_0xdafe('0xc')](function(){_0x2f4765();})[_0xdafe('0x12')](function(){_0x2f4765();});}else{_0x2f4765();}});});}function getTags(_0x1369bf,_0x5b45df,_0x4cb8cd,_0xf4dbe8,_0x2901cb,_0x49d810){return function(_0x1cbeb3){return new Promise(function(_0x1c3f65,_0x8c7c97){var _0x5686fc=[];var _0x26fca6=_0xf4dbe8[_0xdafe('0x4f')];if(_0x26fca6&&_0x26fca6['length']>0x0){_0x5686fc=_['map'](_0x26fca6,_0xdafe('0x3c'));}if(_0x5686fc[_0xdafe('0xe')]>0x0){return manageTags(_0x1369bf,_0x5686fc,_0x5b45df,_0x4cb8cd,_0x1cbeb3,_0x2901cb,_0x49d810)[_0xdafe('0xc')](function(){_0x1c3f65(_0x1cbeb3);});}else{_0x1c3f65(_0x1cbeb3);}});};}function emit(_0x3debb1,_0x196244,_0xf471b5){var _0x34eb37='%26sysparm_record_target%3Dincident'+_0xdafe('0x50')+_0xdafe('0x51')+_0xdafe('0x52');var _0x1a9faa={'uri':_0x3debb1+_0xdafe('0x53')+_0xf471b5+_0x34eb37};io['to'](util[_0xdafe('0x54')](_0xdafe('0x55'),_0x196244))[_0xdafe('0x56')](_0xdafe('0x57'),_0x1a9faa);}exports['cs']=function(_0x3a1e32,_0x30e991,_0x4e7fb0,_0x226a9f,_0x4c5afe,_0x17a3a4,_0x28e989,_0x528f1c){var _0x251fa5={};var _0x3c88d3={'user':_0x17a3a4[_0xdafe('0x58')],'pass':_0x17a3a4[_0xdafe('0x59')]};var _0x4c7151=_0xdafe('0x5a');var _0x197cd1=_0xdafe('0x5b');_0x17a3a4[_0xdafe('0x5c')]=intUtil[_0xdafe('0x5d')](_0x17a3a4[_0xdafe('0x5c')]);_0x17a3a4[_0xdafe('0x5e')]=intUtil[_0xdafe('0x5d')](_0x17a3a4[_0xdafe('0x5e')]);var _0xe6285b=util[_0xdafe('0x54')](_0xdafe('0x5f'),_0x17a3a4[_0xdafe('0x5c')]);_0x251fa5[_0xdafe('0x16')]=!_['isNil'](_0x226a9f)?_0x226a9f[_0xdafe('0x60')]:null;_0x251fa5[_0xdafe('0x1e')]=_0x17a3a4[_0xdafe('0x60')];_0x251fa5[_0xdafe('0x26')]=_0x528f1c['toLowerCase']()==='outbound'?_0x30e991[_0xdafe('0x61')]:_0x30e991[_0xdafe('0x62')];_0x251fa5[_0xdafe('0x63')]=_0x528f1c===_0xdafe('0x64')||_0x528f1c==='unmanaged'?'queue':'outbound';var _0x43ac74=util[_0xdafe('0x54')](_0xdafe('0x65'),_0x17a3a4['serverUrl'],_0x30e991[_0xdafe('0x66')],md5(_0x30e991[_0xdafe('0x66')]));if(_0x4c5afe&&_0x4c5afe[_0xdafe('0x67')]){logger[_0xdafe('0x10')](_0xdafe('0x68'),_0xdafe('0x69'));_0x30e991['recordingURL']=_0x43ac74;}else if(_0x28e989&&_0x28e989[_0xdafe('0x6a')]&&_0x28e989[_0xdafe('0x6a')]!==_0xdafe('0x6b')){logger[_0xdafe('0x10')](_0xdafe('0x6c'),_0xdafe('0x69'));_0x30e991[_0xdafe('0x6d')]=_0x43ac74;}else{_0x30e991[_0xdafe('0x6d')]='';}return getAdminUser(_0x528f1c,_0x3c88d3,_0x251fa5,_0xe6285b,_0x197cd1,_0x4c7151)['then'](getUser(_0x528f1c,_0x3c88d3,_0xe6285b,_0x197cd1,_0x4c7151))[_0xdafe('0xc')](getEndUser(_0x528f1c,_0x3c88d3,_0xe6285b,_0x197cd1,_0x4c7151))[_0xdafe('0xc')](getTicket(_0x528f1c,_0x3c88d3,_0xe6285b,_0x4e7fb0,_0x30e991,_0x197cd1))[_0xdafe('0xc')](function(_0x32f181){logger[_0xdafe('0x10')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x32f181[_0xdafe('0x45')]));logger[_0xdafe('0x10')](util['format'](_0xdafe('0x6e'),_0x528f1c));if(_0x528f1c!==_0xdafe('0x6f')){logger[_0xdafe('0x10')]('['+[_0x528f1c[_0xdafe('0x11')]()]+']',_0xdafe('0x70'));emit(_0x17a3a4[_0xdafe('0x5c')],_0x226a9f[_0xdafe('0x3c')],_0x32f181['ticketId']);}})['catch'](function(_0x311258){logger[_0xdafe('0x20')]('['+[_0x528f1c['toUpperCase']()]+_0xdafe('0x71'),util[_0xdafe('0x72')](_0x311258,{'showHidden':!![],'depth':null}));});};