57f414eca1a261056eb351bda7c339758152042d
[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 _0x0ea7=['unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','],\x20getUser\x20input\x20crm','GET','userEmail','],\x20getUser\x20rp\x20obj','true','userId','sys_id','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','toString','idField','customField','toLowerCase','content','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','outbound','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','label_entry','incident','Incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','%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','password','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s'];(function(_0x566667,_0x51ae8f){var _0x34e450=function(_0x168acc){while(--_0x168acc){_0x566667['push'](_0x566667['shift']());}};_0x34e450(++_0x51ae8f);}(_0x0ea7,0x13d));var _0x70ea=function(_0xf0276c,_0x4e2ca4){_0xf0276c=_0xf0276c-0x0;var _0x1a2327=_0x0ea7[_0xf0276c];return _0x1a2327;};'use strict';var _=require('lodash');var Promise=require('bluebird');var rp=require(_0x70ea('0x0'));var util=require(_0x70ea('0x1'));var md5=require(_0x70ea('0x2'));var Redis=require(_0x70ea('0x3'));var intUtil=require(_0x70ea('0x4'));var config=require(_0x70ea('0x5'));var logger=require(_0x70ea('0x6'))(_0x70ea('0x7'));config[_0x70ea('0x8')]=_['defaults'](config[_0x70ea('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x70ea('0x9'))(new Redis(config[_0x70ea('0x8')]));function getAdminUser(_0x4c2df6,_0x5b6138,_0x28ac30,_0x3ac3b6,_0x30c6d8,_0x2512f9){return new Promise(function(_0x482693,_0x3f5f39){var _0x3fd19b={'method':'GET','uri':_0x3ac3b6+_0x70ea('0xa')+'&'+_0x30c6d8+'&'+_0x2512f9,'auth':_0x5b6138,'json':!![]};return rp(_0x3fd19b)[_0x70ea('0xb')](function(_0x21cac7){if(_0x21cac7[_0x70ea('0xc')][_0x70ea('0xd')]>0x0){_0x28ac30[_0x70ea('0xe')]=_0x21cac7[_0x70ea('0xc')][0x0]['sys_id'];}logger[_0x70ea('0xf')]('['+[_0x4c2df6[_0x70ea('0x10')]()]+_0x70ea('0x11'),_0x28ac30);_0x482693(_0x28ac30);})[_0x70ea('0x12')](function(_0xfcf84c){logger['error']('['+[_0x4c2df6['toUpperCase']()]+']',_0xfcf84c[_0x70ea('0x13')]);_0x3f5f39(_0xfcf84c[_0x70ea('0x13')]);});});}function getUser(_0x5005ba,_0x1a9a5d,_0x3c8ebb,_0x4fb99a,_0x33a973){return function(_0x3794b4){logger[_0x70ea('0xf')]('['+[_0x5005ba['toUpperCase']()]+_0x70ea('0x14'),_0x3794b4);return new Promise(function(_0xa3ff5e,_0x395da8){if(intUtil['validateEmail'](_0x3794b4['userEmail'])){var _0x4710ef={'method':_0x70ea('0x15'),'uri':_0x3c8ebb+'sys_user?sysparm_query=email%3D'+_0x3794b4[_0x70ea('0x16')]+'&'+_0x4fb99a+'&'+_0x33a973,'auth':_0x1a9a5d,'json':!![]};logger[_0x70ea('0xf')]('['+[_0x5005ba[_0x70ea('0x10')]()]+_0x70ea('0x17'),_0x4710ef);return rp(_0x4710ef)[_0x70ea('0xb')](function(_0x57bb20){logger['info']('['+[_0x5005ba[_0x70ea('0x10')]()]+'],\x20getUser\x20entity',_0x57bb20);if(_0x57bb20[_0x70ea('0xc')][_0x70ea('0xd')]>0x0&&String(_0x57bb20['result'][0x0]['active'])===_0x70ea('0x18')){_0x3794b4[_0x70ea('0x19')]=_0x57bb20[_0x70ea('0xc')][0x0][_0x70ea('0x1a')];}else{_0x3794b4[_0x70ea('0x19')]=_0x3794b4[_0x70ea('0xe')];_0x3794b4['userEmail']=_0x3794b4[_0x70ea('0x1b')];}logger[_0x70ea('0xf')]('['+[_0x5005ba[_0x70ea('0x10')]()]+_0x70ea('0x1c'),_0x3794b4);_0xa3ff5e(_0x3794b4);})['catch'](function(_0xbcc3e){logger[_0x70ea('0x1d')]('['+[_0x5005ba['toUpperCase']()]+']',_0xbcc3e[_0x70ea('0x13')]);_0x395da8(_0xbcc3e[_0x70ea('0x13')]);});}else{logger[_0x70ea('0xf')]('['+[_0x5005ba[_0x70ea('0x10')]()]+_0x70ea('0x1e'));_0x3794b4['userId']=_0x3794b4[_0x70ea('0xe')];_0x3794b4[_0x70ea('0x16')]=_0x3794b4[_0x70ea('0x1b')];_0xa3ff5e(_0x3794b4);}});};}function createEndUser(_0x5d105a,_0x222a1c,_0x272e01,_0x3a4be3,_0x1da55a){logger[_0x70ea('0xf')]('['+[_0x5d105a[_0x70ea('0x10')]()]+'],\x20createEndUser\x20input\x20crm',_0x272e01);return new Promise(function(_0x33b093,_0x207817){var _0x408d5a={'method':_0x70ea('0x1f'),'uri':_0x3a4be3+_0x70ea('0x20')+_0x1da55a,'body':{'user_name':_0x272e01[_0x70ea('0x21')],'roles':_0x70ea('0x22'),'first_name':_0x272e01[_0x70ea('0x21')],'active':_0x70ea('0x18'),'date_format':_0x70ea('0x23'),'phone':_0x272e01[_0x70ea('0x21')]},'auth':_0x222a1c,'json':!![]};return rp(_0x408d5a)[_0x70ea('0xb')](function(_0x2d039f){logger['info']('['+[_0x5d105a['toUpperCase']()]+_0x70ea('0x24'),_0x2d039f[_0x70ea('0xc')]);_0x272e01[_0x70ea('0x25')]=_0x2d039f[_0x70ea('0xc')][_0x70ea('0x1a')];_0x33b093(_0x272e01);})['catch'](function(_0x288418){logger[_0x70ea('0x1d')]('['+[_0x5d105a[_0x70ea('0x10')]()]+']',_0x288418[_0x70ea('0x13')]);_0x207817(_0x288418['message']);});});}function getEndUser(_0x3629d6,_0x33a46e,_0x32d9b5,_0x1bcafb,_0x3ab6bd){return function(_0x5d194d){logger['info']('['+[_0x3629d6[_0x70ea('0x10')]()]+_0x70ea('0x26'),_0x5d194d);return new Promise(function(_0x1ceee8,_0x5def7a){var _0x35b7f6={'method':'GET','uri':_0x32d9b5+_0x70ea('0x27')+_0x5d194d[_0x70ea('0x21')]+'&'+_0x1bcafb+'&'+_0x3ab6bd,'auth':_0x33a46e,'json':!![]};return rp(_0x35b7f6)[_0x70ea('0xb')](function(_0x12b728){if(_0x12b728[_0x70ea('0xc')][_0x70ea('0xd')]>0x0){_0x5d194d[_0x70ea('0x25')]=_0x12b728[_0x70ea('0xc')][0x0][_0x70ea('0x1a')];logger['info']('['+[_0x3629d6['toUpperCase']()]+_0x70ea('0x28'),_0x5d194d);_0x1ceee8(_0x5d194d);}else{return createEndUser(_0x3629d6,_0x33a46e,_0x5d194d,_0x32d9b5,_0x1bcafb)['then'](function(_0x4398aa){logger[_0x70ea('0xf')]('['+[_0x3629d6[_0x70ea('0x10')]()]+_0x70ea('0x29'),_0x4398aa);_0x1ceee8(_0x4398aa);});}})['catch'](function(_0x26de77){logger['error']('['+[_0x3629d6['toUpperCase']()]+']',_0x26de77['message']);_0x5def7a(_0x26de77[_0x70ea('0x13')]);});});};}function getCustomFields(_0x41da90,_0x365a60){var _0x370c8a={};if(_0x41da90[_0x70ea('0xd')]>0x0){_[_0x70ea('0x2a')](_0x41da90,function(_0x3e43f3){if(_[_0x70ea('0x2b')]([_0x70ea('0x2c'),_0x70ea('0x2d')],_0x3e43f3[_0x70ea('0x2e')])&&_0x3e43f3[_0x70ea('0x2f')]&&!_0x3e43f3['customField']){_0x370c8a[_0x3e43f3[_0x70ea('0x2f')]['toLowerCase']()]=_0x3e43f3['content'][_0x70ea('0x30')]();}else if(_[_0x70ea('0x2b')]([_0x70ea('0x2c'),_0x70ea('0x2d')],_0x3e43f3[_0x70ea('0x2e')])&&_0x3e43f3[_0x70ea('0x31')]&&_0x3e43f3[_0x70ea('0x32')]){_0x370c8a[_0x3e43f3['idField'][_0x70ea('0x33')]()]=_0x3e43f3[_0x70ea('0x34')][_0x70ea('0x30')]();}else if(_0x3e43f3[_0x70ea('0x2e')]===_0x70ea('0x35')&&_0x3e43f3[_0x70ea('0x36')]&&_0x3e43f3[_0x70ea('0x31')]&&_0x3e43f3[_0x70ea('0x32')]){_0x370c8a[_0x3e43f3[_0x70ea('0x31')][_0x70ea('0x33')]()]=_0x365a60[_0x3e43f3[_0x70ea('0x36')]]['toString']();}else if(_0x3e43f3[_0x70ea('0x2e')]==='customVariable'&&_0x3e43f3[_0x70ea('0x37')]&&_0x3e43f3['Variable']['name']&&_0x3e43f3[_0x70ea('0x31')]&&_0x3e43f3[_0x70ea('0x32')]){_0x370c8a[_0x3e43f3[_0x70ea('0x31')]['toLowerCase']()]=_0x365a60[_0x3e43f3[_0x70ea('0x37')][_0x70ea('0x38')][_0x70ea('0x33')]()][_0x70ea('0x30')]();}});}return _0x370c8a;}function getTicket(_0x1c5479,_0xe08422,_0x1c46ac,_0x5c3a6a,_0x17a7d7,_0x23e939){return function(_0x519baf){logger[_0x70ea('0xf')]('['+[_0x1c5479[_0x70ea('0x10')]()]+_0x70ea('0x39'),_0x519baf);return new Promise(function(_0x5e4459,_0x451137){var _0x309788=_0x1c5479[_0x70ea('0x33')]()===_0x70ea('0x3a')?_0x519baf[_0x70ea('0x19')]:_0x519baf['endUserId'];var _0x21b758={'method':'POST','uri':_0x1c46ac+'incident'+'?'+_0x23e939,'body':Object[_0x70ea('0x3b')]({},{'active':'true','caller_id':_0x309788,'assigned_to':_0x519baf[_0x70ea('0x19')],'short_description':intUtil[_0x70ea('0x3c')](_0x5c3a6a[_0x70ea('0x3d')],_0x17a7d7,'\x20'),'description':intUtil[_0x70ea('0x3c')](_0x5c3a6a[_0x70ea('0x3e')],_0x17a7d7,'\x0a')},getCustomFields(_0x5c3a6a['Fields'],_0x17a7d7)),'auth':_0xe08422,'json':!![]};return rp(_0x21b758)[_0x70ea('0xb')](function(_0x558ae1){logger['info']('['+[_0x1c5479[_0x70ea('0x10')]()]+_0x70ea('0x3f'),_0x558ae1[_0x70ea('0xc')]);_0x519baf[_0x70ea('0x40')]=_0x558ae1[_0x70ea('0xc')][_0x70ea('0x1a')];_0x519baf[_0x70ea('0x41')]=_0x558ae1[_0x70ea('0xc')][_0x70ea('0x42')];logger['info']('['+[_0x1c5479[_0x70ea('0x10')]()]+_0x70ea('0x43'),_0x519baf);_0x5e4459(_0x519baf);})[_0x70ea('0x12')](function(_0x31ecf8){logger['error']('['+[_0x1c5479[_0x70ea('0x10')]()]+']',_0x31ecf8[_0x70ea('0x13')]);_0x451137(_0x31ecf8['message']);});});};}function createRemoteTag(_0x23060c,_0x1109b0,_0x3e0bde,_0x15f30f){return new Promise(function(_0x3f142a,_0x4402cd){var _0x50973d={'method':_0x70ea('0x1f'),'uri':_0x3e0bde+'label'+'?'+_0x15f30f,'body':{'short_description':_0x23060c,'global':!![],'active':!![],'name':_0x23060c},'auth':_0x1109b0,'json':!![]};return rp(_0x50973d)[_0x70ea('0xb')](function(_0x439184){var _0x49f647=_0x439184['result'][_0x70ea('0x1a')];_0x3f142a(_0x49f647);});});}function getRemoteTag(_0x2e584c,_0x265d85,_0x2d34c6,_0x296e8b,_0x5c5196){return new Promise(function(_0x121ec1,_0x12faca){var _0x539944={'method':_0x70ea('0x15'),'uri':_0x2d34c6+_0x70ea('0x44')+'?sysparm_query=name%3D'+_0x2e584c+'&'+_0x296e8b,'auth':_0x265d85,'json':!![]};return rp(_0x539944)[_0x70ea('0xb')](function(_0x294fbf){if(_0x294fbf['result'][_0x70ea('0xd')]>0x0){var _0x1bcbe8=_0x294fbf[_0x70ea('0xc')][0x0][_0x70ea('0x1a')];_0x121ec1(_0x1bcbe8);}else{return createRemoteTag(_0x2e584c,_0x265d85,_0x2d34c6,_0x296e8b)[_0x70ea('0xb')](function(_0x214b9e){_0x121ec1(_0x214b9e);});}});});}function assignTagToIncident(_0x284555,_0x2e52e0,_0x4618b7,_0x50a19d,_0x2565e0){return new Promise(function(_0x5ca141,_0x66d1fd){var _0x2d189a={'method':_0x70ea('0x1f'),'uri':_0x4618b7+_0x70ea('0x45')+'?'+_0x2565e0,'body':{'label':_0x284555,'table':_0x70ea('0x46'),'id_type':_0x70ea('0x47'),'table_key':_0x50a19d[_0x70ea('0x40')],'title':_0x70ea('0x48')+_0x50a19d[_0x70ea('0x41')],'id_display':_0x50a19d[_0x70ea('0x41')]},'auth':_0x2e52e0,'json':!![]};return rp(_0x2d189a)[_0x70ea('0xb')](function(_0x1d1615){_0x5ca141();})[_0x70ea('0x12')](function(){_0x5ca141();});});}function manageTags(_0x4d0d41,_0x58b0e4,_0x4a8356,_0x4fbd58,_0x3de80f,_0x24dcb5,_0x1c02ce){return new Promise(function(_0x2c7d1b,_0x3ea47a){var _0x891cd=[];_0x58b0e4[_0x70ea('0x2a')](function(_0x238662){_0x891cd[_0x70ea('0x49')](getRemoteTag(_0x238662,_0x4a8356,_0x4fbd58,_0x24dcb5,_0x1c02ce));});return Promise['all'](_0x891cd)[_0x70ea('0xb')](function(_0x311096){if(_0x311096['length']){logger[_0x70ea('0xf')]('['+[_0x4d0d41['toUpperCase']()]+_0x70ea('0x4a'),_0x311096);var _0x2f13aa=[];_0x311096[_0x70ea('0x2a')](function(_0x58df30){_0x2f13aa['push'](assignTagToIncident(_0x58df30,_0x4a8356,_0x4fbd58,_0x3de80f,_0x24dcb5));});return Promise[_0x70ea('0x4b')](_0x2f13aa)[_0x70ea('0xb')](function(){_0x2c7d1b();})[_0x70ea('0x12')](function(){_0x2c7d1b();});}else{_0x2c7d1b();}});});}function getTags(_0x396422,_0x24af99,_0x2b37cd,_0x4d8eaf,_0x2aed5f,_0x589861){return function(_0x5eb455){return new Promise(function(_0x376b1c,_0xdee193){var _0x172418=[];var _0x28e681=_0x4d8eaf[_0x70ea('0x4c')];if(_0x28e681&&_0x28e681[_0x70ea('0xd')]>0x0){_0x172418=_[_0x70ea('0x4d')](_0x28e681,_0x70ea('0x38'));}if(_0x172418['length']>0x0){return manageTags(_0x396422,_0x172418,_0x24af99,_0x2b37cd,_0x5eb455,_0x2aed5f,_0x589861)[_0x70ea('0xb')](function(){_0x376b1c(_0x5eb455);});}else{_0x376b1c(_0x5eb455);}});};}function emit(_0x3094b9,_0x14e1cb,_0x1cfd6d){var _0x183df1=_0x70ea('0x4e')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x70ea('0x4f')+_0x70ea('0x50');var _0x3f39e4={'uri':_0x3094b9+_0x70ea('0x51')+_0x1cfd6d+_0x183df1};io['to'](util[_0x70ea('0x52')](_0x70ea('0x53'),_0x14e1cb))[_0x70ea('0x54')](_0x70ea('0x55'),_0x3f39e4);}exports['cs']=function(_0x3c41e6,_0x4fcef7,_0x2e2633,_0x4ca0dc,_0x232d2e,_0x114007,_0x5a62a2,_0x453fc1){var _0x199920={};var _0x5d2ea7={'user':_0x114007['username'],'pass':_0x114007[_0x70ea('0x56')]};var _0x5686f4='sysparm_limit=1';var _0x3019a3=_0x70ea('0x57');_0x114007['remoteUri']=intUtil['stripTrailingSlash'](_0x114007[_0x70ea('0x58')]);_0x114007[_0x70ea('0x59')]=intUtil[_0x70ea('0x5a')](_0x114007[_0x70ea('0x59')]);var _0x19c653=util[_0x70ea('0x52')](_0x70ea('0x5b'),_0x114007[_0x70ea('0x58')]);_0x199920[_0x70ea('0x16')]=!_[_0x70ea('0x5c')](_0x4ca0dc)?_0x4ca0dc[_0x70ea('0x5d')]:null;_0x199920[_0x70ea('0x1b')]=_0x114007[_0x70ea('0x5d')];_0x199920[_0x70ea('0x21')]=_0x453fc1[_0x70ea('0x33')]()===_0x70ea('0x3a')?_0x4fcef7['destcalleridnum']:_0x4fcef7['calleridnum'];_0x199920[_0x70ea('0x5e')]=_0x453fc1===_0x70ea('0x5f')||_0x453fc1==='unmanaged'?_0x70ea('0x5f'):_0x70ea('0x3a');var _0x5d811a=util[_0x70ea('0x52')](_0x70ea('0x60'),_0x114007[_0x70ea('0x59')],_0x4fcef7[_0x70ea('0x61')],md5(_0x4fcef7[_0x70ea('0x61')]));if(_0x232d2e&&_0x232d2e[_0x70ea('0x62')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x4fcef7[_0x70ea('0x63')]=_0x5d811a;}else if(_0x5a62a2&&_0x5a62a2[_0x70ea('0x64')]&&_0x5a62a2[_0x70ea('0x64')]!=='none'){logger[_0x70ea('0xf')]('[OUTBOUND]',_0x70ea('0x65'));_0x4fcef7[_0x70ea('0x63')]=_0x5d811a;}else{_0x4fcef7[_0x70ea('0x63')]='';}return getAdminUser(_0x453fc1,_0x5d2ea7,_0x199920,_0x19c653,_0x3019a3,_0x5686f4)[_0x70ea('0xb')](getUser(_0x453fc1,_0x5d2ea7,_0x19c653,_0x3019a3,_0x5686f4))[_0x70ea('0xb')](getEndUser(_0x453fc1,_0x5d2ea7,_0x19c653,_0x3019a3,_0x5686f4))[_0x70ea('0xb')](getTicket(_0x453fc1,_0x5d2ea7,_0x19c653,_0x2e2633,_0x4fcef7,_0x3019a3))[_0x70ea('0xb')](function(_0x2d6b04){logger[_0x70ea('0xf')](util['format'](_0x70ea('0x66'),_0x2d6b04[_0x70ea('0x40')]));logger[_0x70ea('0xf')](util[_0x70ea('0x52')]('call\x20direction:\x20%s',_0x453fc1));if(_0x453fc1!==_0x70ea('0x67')){logger[_0x70ea('0xf')]('['+[_0x453fc1[_0x70ea('0x10')]()]+']',_0x70ea('0x68'));emit(_0x114007['remoteUri'],_0x4ca0dc[_0x70ea('0x38')],_0x2d6b04[_0x70ea('0x40')]);}})[_0x70ea('0x12')](function(_0x3551be){logger['error']('['+[_0x453fc1['toUpperCase']()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x3551be,{'showHidden':!![],'depth':null}));});};