0fcf2dc1ffe1d7210e5ba7a2250e070f923090c1
[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 _0x5110=['uniqueid','[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','lodash','bluebird','request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','result','length','catch','error','toUpperCase','message','info','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','active','true','userId','sys_id','adminId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','type','nameField','customField','toLowerCase','content','toString','string','picklist','idField','variable','variableName','customVariable','Variable','name','outbound','endUserId','assign','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','label_entry','incident','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','trigger:browser:url','username','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','calleridnum','callDirection','queue','unmanaged'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x5110,0x1bc));var _0x0511=function(_0x102400,_0x47634e){_0x102400=_0x102400-0x0;var _0x7d8798=_0x5110[_0x102400];return _0x7d8798;};'use strict';var _=require(_0x0511('0x0'));var Promise=require(_0x0511('0x1'));var rp=require(_0x0511('0x2'));var util=require(_0x0511('0x3'));var md5=require(_0x0511('0x4'));var Redis=require('ioredis');var intUtil=require(_0x0511('0x5'));var config=require(_0x0511('0x6'));var logger=require(_0x0511('0x7'))(_0x0511('0x8'));config[_0x0511('0x9')]=_[_0x0511('0xa')](config['redis'],{'host':_0x0511('0xb'),'port':0x18eb});var io=require(_0x0511('0xc'))(new Redis(config[_0x0511('0x9')]));function getAdminUser(_0x1b595a,_0x2e3d91,_0xaec387,_0xc041a5,_0xbccb83,_0x375268){return new Promise(function(_0x393b0e,_0x3bcc1f){var _0x40d423={'method':_0x0511('0xd'),'uri':_0xc041a5+_0x0511('0xe')+'&'+_0xbccb83+'&'+_0x375268,'auth':_0x2e3d91,'json':!![]};return rp(_0x40d423)['then'](function(_0x4f5807){if(_0x4f5807[_0x0511('0xf')][_0x0511('0x10')]>0x0){_0xaec387['adminId']=_0x4f5807[_0x0511('0xf')][0x0]['sys_id'];}logger['info']('['+[_0x1b595a['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0xaec387);_0x393b0e(_0xaec387);})[_0x0511('0x11')](function(_0x59a1b6){logger[_0x0511('0x12')]('['+[_0x1b595a[_0x0511('0x13')]()]+']',_0x59a1b6[_0x0511('0x14')]);_0x3bcc1f(_0x59a1b6[_0x0511('0x14')]);});});}function getUser(_0x3077c7,_0x3c4506,_0x5278ee,_0x4e8295,_0x160c6c){return function(_0x2196b6){logger[_0x0511('0x15')]('['+[_0x3077c7[_0x0511('0x13')]()]+_0x0511('0x16'),_0x2196b6);return new Promise(function(_0x2c8e50,_0x22140f){if(intUtil[_0x0511('0x17')](_0x2196b6['userEmail'])){var _0x5c4778={'method':_0x0511('0xd'),'uri':_0x5278ee+_0x0511('0x18')+_0x2196b6[_0x0511('0x19')]+'&'+_0x4e8295+'&'+_0x160c6c,'auth':_0x3c4506,'json':!![]};logger[_0x0511('0x15')]('['+[_0x3077c7[_0x0511('0x13')]()]+_0x0511('0x1a'),_0x5c4778);return rp(_0x5c4778)[_0x0511('0x1b')](function(_0x5d72d3){logger['info']('['+[_0x3077c7[_0x0511('0x13')]()]+_0x0511('0x1c'),_0x5d72d3);if(_0x5d72d3[_0x0511('0xf')][_0x0511('0x10')]>0x0&&String(_0x5d72d3[_0x0511('0xf')][0x0][_0x0511('0x1d')])===_0x0511('0x1e')){_0x2196b6[_0x0511('0x1f')]=_0x5d72d3['result'][0x0][_0x0511('0x20')];}else{_0x2196b6[_0x0511('0x1f')]=_0x2196b6[_0x0511('0x21')];_0x2196b6[_0x0511('0x19')]=_0x2196b6[_0x0511('0x22')];}logger[_0x0511('0x15')]('['+[_0x3077c7['toUpperCase']()]+'],\x20getUser\x20crm',_0x2196b6);_0x2c8e50(_0x2196b6);})['catch'](function(_0x5dcdc5){logger[_0x0511('0x12')]('['+[_0x3077c7[_0x0511('0x13')]()]+']',_0x5dcdc5[_0x0511('0x14')]);_0x22140f(_0x5dcdc5[_0x0511('0x14')]);});}else{logger['info']('['+[_0x3077c7['toUpperCase']()]+_0x0511('0x23'));_0x2196b6[_0x0511('0x1f')]=_0x2196b6['adminId'];_0x2196b6[_0x0511('0x19')]=_0x2196b6['adminEmail'];_0x2c8e50(_0x2196b6);}});};}function createEndUser(_0x36371a,_0x195e33,_0x526a9a,_0x57c178,_0x78a25d){logger['info']('['+[_0x36371a['toUpperCase']()]+_0x0511('0x24'),_0x526a9a);return new Promise(function(_0x3a594f,_0x4804c8){var _0x375ee4={'method':_0x0511('0x25'),'uri':_0x57c178+_0x0511('0x26')+_0x78a25d,'body':{'user_name':_0x526a9a[_0x0511('0x27')],'roles':'user','first_name':_0x526a9a['endUserNumber'],'active':_0x0511('0x1e'),'date_format':'System','phone':_0x526a9a[_0x0511('0x27')]},'auth':_0x195e33,'json':!![]};return rp(_0x375ee4)[_0x0511('0x1b')](function(_0x429dc3){logger['info']('['+[_0x36371a[_0x0511('0x13')]()]+_0x0511('0x28'),_0x429dc3['result']);_0x526a9a['endUserId']=_0x429dc3[_0x0511('0xf')]['sys_id'];_0x3a594f(_0x526a9a);})[_0x0511('0x11')](function(_0x59139b){logger[_0x0511('0x12')]('['+[_0x36371a[_0x0511('0x13')]()]+']',_0x59139b[_0x0511('0x14')]);_0x4804c8(_0x59139b['message']);});});}function getEndUser(_0xc96c07,_0x3b07e4,_0x48ddb1,_0x4c4c24,_0x51dbbe){return function(_0x3f91b3){logger['info']('['+[_0xc96c07[_0x0511('0x13')]()]+_0x0511('0x29'),_0x3f91b3);return new Promise(function(_0x5a58a5,_0x17774f){var _0x4ed781={'method':_0x0511('0xd'),'uri':_0x48ddb1+_0x0511('0x2a')+_0x3f91b3[_0x0511('0x27')]+'&'+_0x4c4c24+'&'+_0x51dbbe,'auth':_0x3b07e4,'json':!![]};return rp(_0x4ed781)[_0x0511('0x1b')](function(_0x773d37){if(_0x773d37[_0x0511('0xf')]['length']>0x0){_0x3f91b3['endUserId']=_0x773d37['result'][0x0][_0x0511('0x20')];logger[_0x0511('0x15')]('['+[_0xc96c07[_0x0511('0x13')]()]+_0x0511('0x2b'),_0x3f91b3);_0x5a58a5(_0x3f91b3);}else{return createEndUser(_0xc96c07,_0x3b07e4,_0x3f91b3,_0x48ddb1,_0x4c4c24)[_0x0511('0x1b')](function(_0x159c3e){logger['info']('['+[_0xc96c07[_0x0511('0x13')]()]+'],\x20createEndUser\x20crm',_0x159c3e);_0x5a58a5(_0x159c3e);});}})[_0x0511('0x11')](function(_0x4b64ea){logger[_0x0511('0x12')]('['+[_0xc96c07[_0x0511('0x13')]()]+']',_0x4b64ea[_0x0511('0x14')]);_0x17774f(_0x4b64ea['message']);});});};}function getCustomFields(_0x1f05e4,_0x26be06){var _0x228eec={};if(_0x1f05e4[_0x0511('0x10')]>0x0){_[_0x0511('0x2c')](_0x1f05e4,function(_0x547ebd){if(_['includes'](['string','picklist'],_0x547ebd[_0x0511('0x2d')])&&_0x547ebd[_0x0511('0x2e')]&&!_0x547ebd[_0x0511('0x2f')]){_0x228eec[_0x547ebd[_0x0511('0x2e')][_0x0511('0x30')]()]=_0x547ebd[_0x0511('0x31')][_0x0511('0x32')]();}else if(_['includes']([_0x0511('0x33'),_0x0511('0x34')],_0x547ebd['type'])&&_0x547ebd[_0x0511('0x35')]&&_0x547ebd[_0x0511('0x2f')]){_0x228eec[_0x547ebd[_0x0511('0x35')][_0x0511('0x30')]()]=_0x547ebd[_0x0511('0x31')][_0x0511('0x32')]();}else if(_0x547ebd['type']===_0x0511('0x36')&&_0x547ebd[_0x0511('0x37')]&&_0x547ebd[_0x0511('0x35')]&&_0x547ebd[_0x0511('0x2f')]){_0x228eec[_0x547ebd[_0x0511('0x35')]['toLowerCase']()]=_0x26be06[_0x547ebd[_0x0511('0x37')]]['toString']();}else if(_0x547ebd['type']===_0x0511('0x38')&&_0x547ebd[_0x0511('0x39')]&&_0x547ebd[_0x0511('0x39')][_0x0511('0x3a')]&&_0x547ebd['idField']&&_0x547ebd[_0x0511('0x2f')]){_0x228eec[_0x547ebd[_0x0511('0x35')]['toLowerCase']()]=_0x26be06[_0x547ebd[_0x0511('0x39')][_0x0511('0x3a')][_0x0511('0x30')]()][_0x0511('0x32')]();}});}return _0x228eec;}function getTicket(_0x194d5e,_0x5bde54,_0x30267e,_0x4b24dc,_0x2557c5,_0x19a8a5){return function(_0x391b13){logger[_0x0511('0x15')]('['+[_0x194d5e[_0x0511('0x13')]()]+']\x20getTicket\x20input\x20crm',_0x391b13);return new Promise(function(_0xa8ddd1,_0x270ef0){var _0x4f81ed=_0x194d5e['toLowerCase']()===_0x0511('0x3b')?_0x391b13[_0x0511('0x1f')]:_0x391b13[_0x0511('0x3c')];var _0xd812da={'method':_0x0511('0x25'),'uri':_0x30267e+'incident'+'?'+_0x19a8a5,'body':Object[_0x0511('0x3d')]({},{'active':_0x0511('0x1e'),'caller_id':_0x4f81ed,'assigned_to':_0x391b13['userId'],'short_description':intUtil['getString'](_0x4b24dc['Subjects'],_0x2557c5,'\x20'),'description':intUtil['getString'](_0x4b24dc['Descriptions'],_0x2557c5,'\x0a')},getCustomFields(_0x4b24dc[_0x0511('0x3e')],_0x2557c5)),'auth':_0x5bde54,'json':!![]};return rp(_0xd812da)[_0x0511('0x1b')](function(_0x5ecfb0){logger[_0x0511('0x15')]('['+[_0x194d5e['toUpperCase']()]+_0x0511('0x3f'),_0x5ecfb0['result']);_0x391b13[_0x0511('0x40')]=_0x5ecfb0[_0x0511('0xf')][_0x0511('0x20')];_0x391b13[_0x0511('0x41')]=_0x5ecfb0[_0x0511('0xf')]['number'];logger[_0x0511('0x15')]('['+[_0x194d5e['toUpperCase']()]+_0x0511('0x42'),_0x391b13);_0xa8ddd1(_0x391b13);})[_0x0511('0x11')](function(_0x57845f){logger[_0x0511('0x12')]('['+[_0x194d5e[_0x0511('0x13')]()]+']',_0x57845f[_0x0511('0x14')]);_0x270ef0(_0x57845f['message']);});});};}function createRemoteTag(_0x555437,_0x513ec3,_0x45f12a,_0x59e31e){return new Promise(function(_0x44ec78,_0x1a8574){var _0x2b9966={'method':'POST','uri':_0x45f12a+_0x0511('0x43')+'?'+_0x59e31e,'body':{'short_description':_0x555437,'global':!![],'active':!![],'name':_0x555437},'auth':_0x513ec3,'json':!![]};return rp(_0x2b9966)['then'](function(_0x3b062f){var _0x4e0e5c=_0x3b062f[_0x0511('0xf')][_0x0511('0x20')];_0x44ec78(_0x4e0e5c);});});}function getRemoteTag(_0x55caa4,_0x3f0dec,_0x5abc20,_0x4c118d,_0x37a426){return new Promise(function(_0x2b8f26,_0x61991b){var _0x3bbbc8={'method':_0x0511('0xd'),'uri':_0x5abc20+'label'+'?sysparm_query=name%3D'+_0x55caa4+'&'+_0x4c118d,'auth':_0x3f0dec,'json':!![]};return rp(_0x3bbbc8)[_0x0511('0x1b')](function(_0x43a077){if(_0x43a077['result'][_0x0511('0x10')]>0x0){var _0x24c113=_0x43a077[_0x0511('0xf')][0x0][_0x0511('0x20')];_0x2b8f26(_0x24c113);}else{return createRemoteTag(_0x55caa4,_0x3f0dec,_0x5abc20,_0x4c118d)[_0x0511('0x1b')](function(_0x5b0a39){_0x2b8f26(_0x5b0a39);});}});});}function assignTagToIncident(_0xdb28e5,_0x26ad18,_0x3cecef,_0x19e3ef,_0x4cd679){return new Promise(function(_0x14f4f4,_0x4906cb){var _0x556583={'method':_0x0511('0x25'),'uri':_0x3cecef+_0x0511('0x44')+'?'+_0x4cd679,'body':{'label':_0xdb28e5,'table':_0x0511('0x45'),'id_type':_0x0511('0x46'),'table_key':_0x19e3ef[_0x0511('0x40')],'title':_0x0511('0x47')+_0x19e3ef['ticketNumber'],'id_display':_0x19e3ef['ticketNumber']},'auth':_0x26ad18,'json':!![]};return rp(_0x556583)['then'](function(_0x1dae7e){_0x14f4f4();})['catch'](function(){_0x14f4f4();});});}function manageTags(_0x660145,_0x4a438c,_0x751e0a,_0xa220b2,_0x524841,_0x3d2933,_0x303096){return new Promise(function(_0x120d14,_0x27cabc){var _0x57e642=[];_0x4a438c['forEach'](function(_0x2c6efd){_0x57e642[_0x0511('0x48')](getRemoteTag(_0x2c6efd,_0x751e0a,_0xa220b2,_0x3d2933,_0x303096));});return Promise[_0x0511('0x49')](_0x57e642)['then'](function(_0x1d25de){if(_0x1d25de[_0x0511('0x10')]){logger[_0x0511('0x15')]('['+[_0x660145[_0x0511('0x13')]()]+_0x0511('0x4a'),_0x1d25de);var _0x16b46b=[];_0x1d25de[_0x0511('0x2c')](function(_0x54d90f){_0x16b46b[_0x0511('0x48')](assignTagToIncident(_0x54d90f,_0x751e0a,_0xa220b2,_0x524841,_0x3d2933));});return Promise['all'](_0x16b46b)[_0x0511('0x1b')](function(){_0x120d14();})[_0x0511('0x11')](function(){_0x120d14();});}else{_0x120d14();}});});}function getTags(_0x48b235,_0x464cf4,_0x4ccb89,_0x4af36c,_0x3192f3,_0x49a9a0){return function(_0x53e089){return new Promise(function(_0x242ca6,_0x2d7d1f){var _0x3dc29f=[];var _0x397a4b=_0x4af36c[_0x0511('0x4b')];if(_0x397a4b&&_0x397a4b[_0x0511('0x10')]>0x0){_0x3dc29f=_[_0x0511('0x4c')](_0x397a4b,'name');}if(_0x3dc29f[_0x0511('0x10')]>0x0){return manageTags(_0x48b235,_0x3dc29f,_0x464cf4,_0x4ccb89,_0x53e089,_0x3192f3,_0x49a9a0)[_0x0511('0x1b')](function(){_0x242ca6(_0x53e089);});}else{_0x242ca6(_0x53e089);}});};}function emit(_0x4e3bfb,_0x1ef2d8,_0x43c2f4){var _0x140425='%26sysparm_record_target%3Dincident'+_0x0511('0x4d')+_0x0511('0x4e')+'%255EORDERBYDESCnumber';var _0x3520b3={'uri':_0x4e3bfb+_0x0511('0x4f')+_0x43c2f4+_0x140425};io['to'](util[_0x0511('0x50')](_0x0511('0x51'),_0x1ef2d8))['emit'](_0x0511('0x52'),_0x3520b3);}exports['cs']=function(_0x4993d2,_0x28bcff,_0x1b8550,_0x5a6b2c,_0x5074d8,_0x1418ac,_0x2632f8,_0x51f8fb){var _0x206136={};var _0x5e0e7b={'user':_0x1418ac[_0x0511('0x53')],'pass':_0x1418ac[_0x0511('0x54')]};var _0xf4fb3c=_0x0511('0x55');var _0x3fc3c7='sysparm_display_value=true';_0x1418ac[_0x0511('0x56')]=intUtil[_0x0511('0x57')](_0x1418ac[_0x0511('0x56')]);_0x1418ac[_0x0511('0x58')]=intUtil[_0x0511('0x57')](_0x1418ac['serverUrl']);var _0x10bb6f=util[_0x0511('0x50')](_0x0511('0x59'),_0x1418ac['remoteUri']);_0x206136[_0x0511('0x19')]=!_[_0x0511('0x5a')](_0x5a6b2c)?_0x5a6b2c[_0x0511('0x5b')]:null;_0x206136[_0x0511('0x22')]=_0x1418ac[_0x0511('0x5b')];_0x206136[_0x0511('0x27')]=_0x51f8fb[_0x0511('0x30')]()===_0x0511('0x3b')?_0x28bcff['destcalleridnum']:_0x28bcff[_0x0511('0x5c')];_0x206136[_0x0511('0x5d')]=_0x51f8fb===_0x0511('0x5e')||_0x51f8fb===_0x0511('0x5f')?_0x0511('0x5e'):'outbound';var _0x550b18=util[_0x0511('0x50')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1418ac[_0x0511('0x58')],_0x28bcff[_0x0511('0x60')],md5(_0x28bcff[_0x0511('0x60')]));if(_0x5074d8&&_0x5074d8['monitor_format']){logger['info'](_0x0511('0x61'),_0x0511('0x62'));_0x28bcff[_0x0511('0x63')]=_0x550b18;}else if(_0x2632f8&&_0x2632f8[_0x0511('0x64')]&&_0x2632f8[_0x0511('0x64')]!==_0x0511('0x65')){logger[_0x0511('0x15')](_0x0511('0x66'),'Recording\x20is\x20enabled!');_0x28bcff[_0x0511('0x63')]=_0x550b18;}else{_0x28bcff[_0x0511('0x63')]='';}return getAdminUser(_0x51f8fb,_0x5e0e7b,_0x206136,_0x10bb6f,_0x3fc3c7,_0xf4fb3c)[_0x0511('0x1b')](getUser(_0x51f8fb,_0x5e0e7b,_0x10bb6f,_0x3fc3c7,_0xf4fb3c))[_0x0511('0x1b')](getEndUser(_0x51f8fb,_0x5e0e7b,_0x10bb6f,_0x3fc3c7,_0xf4fb3c))['then'](getTicket(_0x51f8fb,_0x5e0e7b,_0x10bb6f,_0x1b8550,_0x28bcff,_0x3fc3c7))[_0x0511('0x1b')](function(_0x29fc9f){logger[_0x0511('0x15')](util[_0x0511('0x50')](_0x0511('0x67'),_0x29fc9f['ticketId']));logger['info'](util[_0x0511('0x50')](_0x0511('0x68'),_0x51f8fb));if(_0x51f8fb!==_0x0511('0x5f')){logger[_0x0511('0x15')]('['+[_0x51f8fb[_0x0511('0x13')]()]+']',_0x0511('0x69'));emit(_0x1418ac['remoteUri'],_0x5a6b2c[_0x0511('0x3a')],_0x29fc9f[_0x0511('0x40')]);}})[_0x0511('0x11')](function(_0xdc5e78){logger[_0x0511('0x12')]('['+[_0x51f8fb[_0x0511('0x13')]()]+_0x0511('0x6a'),util[_0x0511('0x6b')](_0xdc5e78,{'showHidden':!![],'depth':null}));});};