674613e899e048bd307a2f338bb6eb020aa73890
[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 _0x757a=['%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','unmanaged',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','info','catch','toUpperCase','message','],\x20getUser\x20input\x20crm','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20entity','result','active','true','userId','sys_id','adminId','adminEmail','error',']\x20using\x20admin\x20profile','POST','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','picklist','type','nameField','toLowerCase','content','toString','includes','customField','idField','variableName','customVariable','Variable','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','length','label_entry','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','name','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','%s/api/now/table/','isNil','email','outbound','destcalleridnum','callDirection','queue'];(function(_0x5bf9bf,_0x4eae82){var _0xcbf393=function(_0x54012d){while(--_0x54012d){_0x5bf9bf['push'](_0x5bf9bf['shift']());}};_0xcbf393(++_0x4eae82);}(_0x757a,0xde));var _0xa757=function(_0x4d9f1c,_0x2286a3){_0x4d9f1c=_0x4d9f1c-0x0;var _0x3e34dd=_0x757a[_0x4d9f1c];return _0x3e34dd;};'use strict';var _=require('lodash');var Promise=require(_0xa757('0x0'));var rp=require(_0xa757('0x1'));var util=require('util');var md5=require('md5');var Redis=require('ioredis');var intUtil=require(_0xa757('0x2'));var config=require(_0xa757('0x3'));var logger=require(_0xa757('0x4'))(_0xa757('0x5'));config[_0xa757('0x6')]=_[_0xa757('0x7')](config['redis'],{'host':_0xa757('0x8'),'port':0x18eb});var io=require(_0xa757('0x9'))(new Redis(config['redis']));function getAdminUser(_0x2930fa,_0x2f7793,_0x447344,_0x1a95ee,_0x3a3db6,_0x5aef8a){return new Promise(function(_0x89c630,_0x2ca96f){var _0x32f0ec={'method':_0xa757('0xa'),'uri':_0x1a95ee+_0xa757('0xb')+'&'+_0x3a3db6+'&'+_0x5aef8a,'auth':_0x2f7793,'json':!![]};return rp(_0x32f0ec)[_0xa757('0xc')](function(_0x17408b){if(_0x17408b['result']['length']>0x0){_0x447344['adminId']=_0x17408b['result'][0x0]['sys_id'];}logger[_0xa757('0xd')]('['+[_0x2930fa['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x447344);_0x89c630(_0x447344);})[_0xa757('0xe')](function(_0x513b1f){logger['error']('['+[_0x2930fa[_0xa757('0xf')]()]+']',_0x513b1f[_0xa757('0x10')]);_0x2ca96f(_0x513b1f[_0xa757('0x10')]);});});}function getUser(_0x4a0c38,_0x86abd,_0x31cfd2,_0xf12b68,_0x2f7947){return function(_0x185011){logger[_0xa757('0xd')]('['+[_0x4a0c38['toUpperCase']()]+_0xa757('0x11'),_0x185011);return new Promise(function(_0x44eab8,_0xde8248){if(intUtil['validateEmail'](_0x185011['userEmail'])){var _0x151c04={'method':_0xa757('0xa'),'uri':_0x31cfd2+_0xa757('0x12')+_0x185011[_0xa757('0x13')]+'&'+_0xf12b68+'&'+_0x2f7947,'auth':_0x86abd,'json':!![]};logger[_0xa757('0xd')]('['+[_0x4a0c38[_0xa757('0xf')]()]+'],\x20getUser\x20rp\x20obj',_0x151c04);return rp(_0x151c04)[_0xa757('0xc')](function(_0x4fec52){logger[_0xa757('0xd')]('['+[_0x4a0c38[_0xa757('0xf')]()]+_0xa757('0x14'),_0x4fec52);if(_0x4fec52[_0xa757('0x15')]['length']>0x0&&String(_0x4fec52['result'][0x0][_0xa757('0x16')])===_0xa757('0x17')){_0x185011[_0xa757('0x18')]=_0x4fec52[_0xa757('0x15')][0x0][_0xa757('0x19')];}else{_0x185011[_0xa757('0x18')]=_0x185011[_0xa757('0x1a')];_0x185011[_0xa757('0x13')]=_0x185011[_0xa757('0x1b')];}logger['info']('['+[_0x4a0c38[_0xa757('0xf')]()]+'],\x20getUser\x20crm',_0x185011);_0x44eab8(_0x185011);})[_0xa757('0xe')](function(_0x47903b){logger[_0xa757('0x1c')]('['+[_0x4a0c38[_0xa757('0xf')]()]+']',_0x47903b[_0xa757('0x10')]);_0xde8248(_0x47903b['message']);});}else{logger[_0xa757('0xd')]('['+[_0x4a0c38[_0xa757('0xf')]()]+_0xa757('0x1d'));_0x185011[_0xa757('0x18')]=_0x185011['adminId'];_0x185011[_0xa757('0x13')]=_0x185011['adminEmail'];_0x44eab8(_0x185011);}});};}function createEndUser(_0x5a5664,_0x54b75e,_0x4f8de2,_0xfdf69d,_0x596ae2){logger[_0xa757('0xd')]('['+[_0x5a5664[_0xa757('0xf')]()]+'],\x20createEndUser\x20input\x20crm',_0x4f8de2);return new Promise(function(_0x2a0c9a,_0x5119ad){var _0x2c4823={'method':_0xa757('0x1e'),'uri':_0xfdf69d+'sys_user?'+_0x596ae2,'body':{'user_name':_0x4f8de2[_0xa757('0x1f')],'roles':'user','first_name':_0x4f8de2[_0xa757('0x1f')],'active':_0xa757('0x17'),'date_format':_0xa757('0x20'),'phone':_0x4f8de2[_0xa757('0x1f')]},'auth':_0x54b75e,'json':!![]};return rp(_0x2c4823)[_0xa757('0xc')](function(_0x2c1885){logger[_0xa757('0xd')]('['+[_0x5a5664[_0xa757('0xf')]()]+_0xa757('0x21'),_0x2c1885[_0xa757('0x15')]);_0x4f8de2[_0xa757('0x22')]=_0x2c1885[_0xa757('0x15')][_0xa757('0x19')];_0x2a0c9a(_0x4f8de2);})[_0xa757('0xe')](function(_0x27be88){logger[_0xa757('0x1c')]('['+[_0x5a5664[_0xa757('0xf')]()]+']',_0x27be88[_0xa757('0x10')]);_0x5119ad(_0x27be88[_0xa757('0x10')]);});});}function getEndUser(_0x29a5ba,_0x3de18f,_0x170aa9,_0x379de7,_0x3aae1e){return function(_0x59700d){logger[_0xa757('0xd')]('['+[_0x29a5ba[_0xa757('0xf')]()]+_0xa757('0x23'),_0x59700d);return new Promise(function(_0x1794a9,_0x1c4c40){var _0x51e2aa={'method':_0xa757('0xa'),'uri':_0x170aa9+_0xa757('0x24')+_0x59700d[_0xa757('0x1f')]+'&'+_0x379de7+'&'+_0x3aae1e,'auth':_0x3de18f,'json':!![]};return rp(_0x51e2aa)[_0xa757('0xc')](function(_0xd54446){if(_0xd54446[_0xa757('0x15')]['length']>0x0){_0x59700d[_0xa757('0x22')]=_0xd54446[_0xa757('0x15')][0x0][_0xa757('0x19')];logger[_0xa757('0xd')]('['+[_0x29a5ba[_0xa757('0xf')]()]+_0xa757('0x25'),_0x59700d);_0x1794a9(_0x59700d);}else{return createEndUser(_0x29a5ba,_0x3de18f,_0x59700d,_0x170aa9,_0x379de7)[_0xa757('0xc')](function(_0x3e12a5){logger[_0xa757('0xd')]('['+[_0x29a5ba['toUpperCase']()]+_0xa757('0x26'),_0x3e12a5);_0x1794a9(_0x3e12a5);});}})[_0xa757('0xe')](function(_0x9f73c6){logger[_0xa757('0x1c')]('['+[_0x29a5ba[_0xa757('0xf')]()]+']',_0x9f73c6[_0xa757('0x10')]);_0x1c4c40(_0x9f73c6['message']);});});};}function getCustomFields(_0x10d3fd,_0x6d77ed){var _0x48cde9={};if(_0x10d3fd['length']>0x0){_[_0xa757('0x27')](_0x10d3fd,function(_0x6193bf){if(_['includes'](['string',_0xa757('0x28')],_0x6193bf[_0xa757('0x29')])&&_0x6193bf[_0xa757('0x2a')]&&!_0x6193bf['customField']){_0x48cde9[_0x6193bf[_0xa757('0x2a')][_0xa757('0x2b')]()]=_0x6193bf[_0xa757('0x2c')][_0xa757('0x2d')]();}else if(_[_0xa757('0x2e')](['string',_0xa757('0x28')],_0x6193bf['type'])&&_0x6193bf['idField']&&_0x6193bf[_0xa757('0x2f')]){_0x48cde9[_0x6193bf[_0xa757('0x30')][_0xa757('0x2b')]()]=_0x6193bf[_0xa757('0x2c')][_0xa757('0x2d')]();}else if(_0x6193bf['type']==='variable'&&_0x6193bf[_0xa757('0x31')]&&_0x6193bf[_0xa757('0x30')]&&_0x6193bf[_0xa757('0x2f')]){_0x48cde9[_0x6193bf[_0xa757('0x30')][_0xa757('0x2b')]()]=_0x6d77ed[_0x6193bf[_0xa757('0x31')]]['toString']();}else if(_0x6193bf[_0xa757('0x29')]===_0xa757('0x32')&&_0x6193bf['Variable']&&_0x6193bf[_0xa757('0x33')]['name']&&_0x6193bf[_0xa757('0x30')]&&_0x6193bf[_0xa757('0x2f')]){_0x48cde9[_0x6193bf['idField'][_0xa757('0x2b')]()]=_0x6d77ed[_0x6193bf[_0xa757('0x33')]['name'][_0xa757('0x2b')]()][_0xa757('0x2d')]();}});}return _0x48cde9;}function getTicket(_0x27ae35,_0x17af73,_0x543b5b,_0x199dc9,_0x1be3bb,_0x450815){return function(_0xec4610){logger['info']('['+[_0x27ae35[_0xa757('0xf')]()]+']\x20getTicket\x20input\x20crm',_0xec4610);return new Promise(function(_0x50c131,_0x2acf88){var _0x3c039d=_0x27ae35[_0xa757('0x2b')]()==='outbound'?_0xec4610[_0xa757('0x18')]:_0xec4610['endUserId'];var _0x2ed63f={'method':_0xa757('0x1e'),'uri':_0x543b5b+_0xa757('0x34')+'?'+_0x450815,'body':Object[_0xa757('0x35')]({},{'active':_0xa757('0x17'),'caller_id':_0x3c039d,'assigned_to':_0xec4610[_0xa757('0x18')],'short_description':intUtil[_0xa757('0x36')](_0x199dc9[_0xa757('0x37')],_0x1be3bb,'\x20'),'description':intUtil['getString'](_0x199dc9[_0xa757('0x38')],_0x1be3bb,'\x0a')},getCustomFields(_0x199dc9[_0xa757('0x39')],_0x1be3bb)),'auth':_0x17af73,'json':!![]};return rp(_0x2ed63f)[_0xa757('0xc')](function(_0x29434d){logger[_0xa757('0xd')]('['+[_0x27ae35[_0xa757('0xf')]()]+_0xa757('0x3a'),_0x29434d[_0xa757('0x15')]);_0xec4610[_0xa757('0x3b')]=_0x29434d[_0xa757('0x15')][_0xa757('0x19')];_0xec4610[_0xa757('0x3c')]=_0x29434d[_0xa757('0x15')][_0xa757('0x3d')];logger[_0xa757('0xd')]('['+[_0x27ae35[_0xa757('0xf')]()]+']\x20getTicket\x20crm',_0xec4610);_0x50c131(_0xec4610);})[_0xa757('0xe')](function(_0x51157e){logger[_0xa757('0x1c')]('['+[_0x27ae35[_0xa757('0xf')]()]+']',_0x51157e[_0xa757('0x10')]);_0x2acf88(_0x51157e[_0xa757('0x10')]);});});};}function createRemoteTag(_0x4cb461,_0x35cd81,_0x1ee01e,_0x8614f9){return new Promise(function(_0x980e1,_0x595f16){var _0x383674={'method':_0xa757('0x1e'),'uri':_0x1ee01e+_0xa757('0x3e')+'?'+_0x8614f9,'body':{'short_description':_0x4cb461,'global':!![],'active':!![],'name':_0x4cb461},'auth':_0x35cd81,'json':!![]};return rp(_0x383674)[_0xa757('0xc')](function(_0x33666d){var _0x291b26=_0x33666d['result']['sys_id'];_0x980e1(_0x291b26);});});}function getRemoteTag(_0x5d21c1,_0x5a49d0,_0x1d8742,_0x9b3779,_0x137477){return new Promise(function(_0x32313b,_0x1e31ef){var _0x2d290b={'method':'GET','uri':_0x1d8742+_0xa757('0x3e')+_0xa757('0x3f')+_0x5d21c1+'&'+_0x9b3779,'auth':_0x5a49d0,'json':!![]};return rp(_0x2d290b)[_0xa757('0xc')](function(_0x29b2f5){if(_0x29b2f5['result'][_0xa757('0x40')]>0x0){var _0x44c542=_0x29b2f5['result'][0x0][_0xa757('0x19')];_0x32313b(_0x44c542);}else{return createRemoteTag(_0x5d21c1,_0x5a49d0,_0x1d8742,_0x9b3779)['then'](function(_0x211980){_0x32313b(_0x211980);});}});});}function assignTagToIncident(_0x5d375c,_0x51be6e,_0x58633a,_0x4badee,_0x367b48){return new Promise(function(_0x235c1e,_0x1b6058){var _0x1b5db5={'method':_0xa757('0x1e'),'uri':_0x58633a+_0xa757('0x41')+'?'+_0x367b48,'body':{'label':_0x5d375c,'table':'incident','id_type':'Incident','table_key':_0x4badee[_0xa757('0x3b')],'title':_0xa757('0x42')+_0x4badee[_0xa757('0x3c')],'id_display':_0x4badee['ticketNumber']},'auth':_0x51be6e,'json':!![]};return rp(_0x1b5db5)['then'](function(_0x18dff7){_0x235c1e();})[_0xa757('0xe')](function(){_0x235c1e();});});}function manageTags(_0x215a80,_0x504c4f,_0x12b802,_0x3e6d40,_0x5b9844,_0x466728,_0x45f2a4){return new Promise(function(_0x415fe1,_0x24845a){var _0x1291df=[];_0x504c4f[_0xa757('0x27')](function(_0x213219){_0x1291df[_0xa757('0x43')](getRemoteTag(_0x213219,_0x12b802,_0x3e6d40,_0x466728,_0x45f2a4));});return Promise[_0xa757('0x44')](_0x1291df)[_0xa757('0xc')](function(_0x5d3219){if(_0x5d3219[_0xa757('0x40')]){logger['info']('['+[_0x215a80['toUpperCase']()]+_0xa757('0x45'),_0x5d3219);var _0x3da8c1=[];_0x5d3219[_0xa757('0x27')](function(_0x444417){_0x3da8c1[_0xa757('0x43')](assignTagToIncident(_0x444417,_0x12b802,_0x3e6d40,_0x5b9844,_0x466728));});return Promise[_0xa757('0x44')](_0x3da8c1)[_0xa757('0xc')](function(){_0x415fe1();})[_0xa757('0xe')](function(){_0x415fe1();});}else{_0x415fe1();}});});}function getTags(_0x13e584,_0x22a185,_0x42f2c0,_0x4fc507,_0x3f8c5c,_0xa811a6){return function(_0x5f0b71){return new Promise(function(_0x11ebb3,_0x409ee9){var _0x198a11=[];var _0x180cec=_0x4fc507[_0xa757('0x46')];if(_0x180cec&&_0x180cec[_0xa757('0x40')]>0x0){_0x198a11=_['map'](_0x180cec,_0xa757('0x47'));}if(_0x198a11['length']>0x0){return manageTags(_0x13e584,_0x198a11,_0x22a185,_0x42f2c0,_0x5f0b71,_0x3f8c5c,_0xa811a6)[_0xa757('0xc')](function(){_0x11ebb3(_0x5f0b71);});}else{_0x11ebb3(_0x5f0b71);}});};}function emit(_0x3250d0,_0x2d9d97,_0x3c87c0){var _0x39ca41='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0xa757('0x48')+_0xa757('0x49');var _0x2338e5={'uri':_0x3250d0+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x3c87c0+_0x39ca41};io['to'](util[_0xa757('0x4a')]('user:%s',_0x2d9d97))[_0xa757('0x4b')](_0xa757('0x4c'),_0x2338e5);}exports['cs']=function(_0x2b0ad4,_0xbf1bbf,_0x10cb5e,_0x40a79b,_0x54730c,_0xa28144,_0x193233,_0x1e15ee){var _0x125bda={};var _0x1c35bc={'user':_0xa28144['username'],'pass':_0xa28144[_0xa757('0x4d')]};var _0x423f3a=_0xa757('0x4e');var _0x38724c=_0xa757('0x4f');_0xa28144['remoteUri']=intUtil[_0xa757('0x50')](_0xa28144[_0xa757('0x51')]);_0xa28144[_0xa757('0x52')]=intUtil['stripTrailingSlash'](_0xa28144[_0xa757('0x52')]);var _0x233835=util[_0xa757('0x4a')](_0xa757('0x53'),_0xa28144[_0xa757('0x51')]);_0x125bda[_0xa757('0x13')]=!_[_0xa757('0x54')](_0x40a79b)?_0x40a79b[_0xa757('0x55')]:null;_0x125bda[_0xa757('0x1b')]=_0xa28144[_0xa757('0x55')];_0x125bda[_0xa757('0x1f')]=_0x1e15ee[_0xa757('0x2b')]()===_0xa757('0x56')?_0xbf1bbf[_0xa757('0x57')]:_0xbf1bbf['calleridnum'];_0x125bda[_0xa757('0x58')]=_0x1e15ee===_0xa757('0x59')||_0x1e15ee==='unmanaged'?_0xa757('0x59'):_0xa757('0x56');var _0x505bd6=util[_0xa757('0x4a')](_0xa757('0x5a'),_0xa28144[_0xa757('0x52')],_0xbf1bbf[_0xa757('0x5b')],md5(_0xbf1bbf[_0xa757('0x5b')]));if(_0x54730c&&_0x54730c[_0xa757('0x5c')]){logger[_0xa757('0xd')](_0xa757('0x5d'),_0xa757('0x5e'));_0xbf1bbf[_0xa757('0x5f')]=_0x505bd6;}else if(_0x193233&&_0x193233[_0xa757('0x60')]&&_0x193233[_0xa757('0x60')]!==_0xa757('0x61')){logger[_0xa757('0xd')](_0xa757('0x62'),_0xa757('0x5e'));_0xbf1bbf['recordingURL']=_0x505bd6;}else{_0xbf1bbf[_0xa757('0x5f')]='';}return getAdminUser(_0x1e15ee,_0x1c35bc,_0x125bda,_0x233835,_0x38724c,_0x423f3a)['then'](getUser(_0x1e15ee,_0x1c35bc,_0x233835,_0x38724c,_0x423f3a))[_0xa757('0xc')](getEndUser(_0x1e15ee,_0x1c35bc,_0x233835,_0x38724c,_0x423f3a))[_0xa757('0xc')](getTicket(_0x1e15ee,_0x1c35bc,_0x233835,_0x10cb5e,_0xbf1bbf,_0x38724c))[_0xa757('0xc')](function(_0x3d92ca){logger[_0xa757('0xd')](util['format'](_0xa757('0x63'),_0x3d92ca[_0xa757('0x3b')]));logger[_0xa757('0xd')](util['format'](_0xa757('0x64'),_0x1e15ee));if(_0x1e15ee!==_0xa757('0x65')){logger[_0xa757('0xd')]('['+[_0x1e15ee['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0xa28144[_0xa757('0x51')],_0x40a79b[_0xa757('0x47')],_0x3d92ca[_0xa757('0x3b')]);}})['catch'](function(_0x5dcd35){logger['error']('['+[_0x1e15ee['toUpperCase']()]+_0xa757('0x66'),util[_0xa757('0x67')](_0x5dcd35,{'showHidden':!![],'depth':null}));});};