Built motion from commit e6806ed6.|2.6.0
[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 _0xc11b=['util','md5','../../../../config/environment','../../../../config/logger','defaults','socket.io-emitter','redis','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','catch','error','message','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','content','toString','type','idField','toLowerCase','variableName','Variable','name','outbound','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','Incident','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','%26sysparm_record_target%3Dincident','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','emit','trigger:browser:url','username','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','format','%s/api/now/table/','email','destcalleridnum','callDirection','unmanaged','queue','%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','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise'];(function(_0x19ea31,_0x4dd256){var _0x31370d=function(_0x39b29a){while(--_0x39b29a){_0x19ea31['push'](_0x19ea31['shift']());}};_0x31370d(++_0x4dd256);}(_0xc11b,0x1a1));var _0xbc11=function(_0x39d847,_0x5093f3){_0x39d847=_0x39d847-0x0;var _0x55a0ed=_0xc11b[_0x39d847];return _0x55a0ed;};'use strict';var _=require(_0xbc11('0x0'));var Promise=require(_0xbc11('0x1'));var rp=require(_0xbc11('0x2'));var util=require(_0xbc11('0x3'));var md5=require(_0xbc11('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xbc11('0x5'));var logger=require(_0xbc11('0x6'))('servicenow');config['redis']=_[_0xbc11('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xbc11('0x8'))(new Redis(config[_0xbc11('0x9')]));function getAdminUser(_0x19bf50,_0x1c2c40,_0x40310a,_0x27dbe2,_0x44ea2f,_0x2f4604){return new Promise(function(_0x46280b,_0x56f3f4){var _0x4ac1f2={'method':_0xbc11('0xa'),'uri':_0x27dbe2+_0xbc11('0xb')+'&'+_0x44ea2f+'&'+_0x2f4604,'auth':_0x1c2c40,'json':!![]};return rp(_0x4ac1f2)[_0xbc11('0xc')](function(_0x5ecc4a){if(_0x5ecc4a[_0xbc11('0xd')][_0xbc11('0xe')]>0x0){_0x40310a['adminId']=_0x5ecc4a[_0xbc11('0xd')][0x0][_0xbc11('0xf')];}logger[_0xbc11('0x10')]('['+[_0x19bf50['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x40310a);_0x46280b(_0x40310a);})[_0xbc11('0x11')](function(_0x3eff21){logger[_0xbc11('0x12')]('['+[_0x19bf50['toUpperCase']()]+']',_0x3eff21[_0xbc11('0x13')]);_0x56f3f4(_0x3eff21['message']);});});}function getUser(_0x1c5a8c,_0x90c7ef,_0x4eb9e8,_0x11f115,_0x393ce3){return function(_0x5ec9bc){logger[_0xbc11('0x10')]('['+[_0x1c5a8c[_0xbc11('0x14')]()]+_0xbc11('0x15'),_0x5ec9bc);return new Promise(function(_0x1253ce,_0x180b40){if(intUtil[_0xbc11('0x16')](_0x5ec9bc[_0xbc11('0x17')])){var _0x1d16bd={'method':'GET','uri':_0x4eb9e8+'sys_user?sysparm_query=email%3D'+_0x5ec9bc[_0xbc11('0x17')]+'&'+_0x11f115+'&'+_0x393ce3,'auth':_0x90c7ef,'json':!![]};logger[_0xbc11('0x10')]('['+[_0x1c5a8c['toUpperCase']()]+_0xbc11('0x18'),_0x1d16bd);return rp(_0x1d16bd)[_0xbc11('0xc')](function(_0x14149d){logger['info']('['+[_0x1c5a8c[_0xbc11('0x14')]()]+_0xbc11('0x19'),_0x14149d);if(_0x14149d[_0xbc11('0xd')]['length']>0x0&&String(_0x14149d['result'][0x0][_0xbc11('0x1a')])===_0xbc11('0x1b')){_0x5ec9bc['userId']=_0x14149d[_0xbc11('0xd')][0x0]['sys_id'];}else{_0x5ec9bc[_0xbc11('0x1c')]=_0x5ec9bc[_0xbc11('0x1d')];_0x5ec9bc[_0xbc11('0x17')]=_0x5ec9bc['adminEmail'];}logger['info']('['+[_0x1c5a8c[_0xbc11('0x14')]()]+_0xbc11('0x1e'),_0x5ec9bc);_0x1253ce(_0x5ec9bc);})['catch'](function(_0x4d1082){logger[_0xbc11('0x12')]('['+[_0x1c5a8c[_0xbc11('0x14')]()]+']',_0x4d1082['message']);_0x180b40(_0x4d1082[_0xbc11('0x13')]);});}else{logger[_0xbc11('0x10')]('['+[_0x1c5a8c[_0xbc11('0x14')]()]+_0xbc11('0x1f'));_0x5ec9bc[_0xbc11('0x1c')]=_0x5ec9bc['adminId'];_0x5ec9bc[_0xbc11('0x17')]=_0x5ec9bc[_0xbc11('0x20')];_0x1253ce(_0x5ec9bc);}});};}function createEndUser(_0x3efeb6,_0x344af6,_0xbe99ca,_0x161581,_0x196e59){logger[_0xbc11('0x10')]('['+[_0x3efeb6[_0xbc11('0x14')]()]+_0xbc11('0x21'),_0xbe99ca);return new Promise(function(_0x2996e7,_0x4b87ce){var _0x56fe4f={'method':_0xbc11('0x22'),'uri':_0x161581+'sys_user?'+_0x196e59,'body':{'user_name':_0xbe99ca[_0xbc11('0x23')],'roles':_0xbc11('0x24'),'first_name':_0xbe99ca[_0xbc11('0x23')],'active':_0xbc11('0x1b'),'date_format':_0xbc11('0x25'),'phone':_0xbe99ca[_0xbc11('0x23')]},'auth':_0x344af6,'json':!![]};return rp(_0x56fe4f)[_0xbc11('0xc')](function(_0x43cd27){logger['info']('['+[_0x3efeb6[_0xbc11('0x14')]()]+_0xbc11('0x26'),_0x43cd27[_0xbc11('0xd')]);_0xbe99ca[_0xbc11('0x27')]=_0x43cd27[_0xbc11('0xd')][_0xbc11('0xf')];_0x2996e7(_0xbe99ca);})['catch'](function(_0x3c72f6){logger[_0xbc11('0x12')]('['+[_0x3efeb6['toUpperCase']()]+']',_0x3c72f6[_0xbc11('0x13')]);_0x4b87ce(_0x3c72f6['message']);});});}function getEndUser(_0xea8aa1,_0x556169,_0x11b19a,_0x17298a,_0x3d6ed1){return function(_0x20d45d){logger['info']('['+[_0xea8aa1[_0xbc11('0x14')]()]+_0xbc11('0x28'),_0x20d45d);return new Promise(function(_0x226396,_0x563d3e){var _0x217534={'method':_0xbc11('0xa'),'uri':_0x11b19a+_0xbc11('0x29')+_0x20d45d[_0xbc11('0x23')]+'&'+_0x17298a+'&'+_0x3d6ed1,'auth':_0x556169,'json':!![]};return rp(_0x217534)[_0xbc11('0xc')](function(_0x435609){if(_0x435609[_0xbc11('0xd')][_0xbc11('0xe')]>0x0){_0x20d45d[_0xbc11('0x27')]=_0x435609[_0xbc11('0xd')][0x0][_0xbc11('0xf')];logger[_0xbc11('0x10')]('['+[_0xea8aa1[_0xbc11('0x14')]()]+_0xbc11('0x2a'),_0x20d45d);_0x226396(_0x20d45d);}else{return createEndUser(_0xea8aa1,_0x556169,_0x20d45d,_0x11b19a,_0x17298a)[_0xbc11('0xc')](function(_0x5c5881){logger[_0xbc11('0x10')]('['+[_0xea8aa1[_0xbc11('0x14')]()]+'],\x20createEndUser\x20crm',_0x5c5881);_0x226396(_0x5c5881);});}})[_0xbc11('0x11')](function(_0x3c5cf8){logger[_0xbc11('0x12')]('['+[_0xea8aa1[_0xbc11('0x14')]()]+']',_0x3c5cf8[_0xbc11('0x13')]);_0x563d3e(_0x3c5cf8[_0xbc11('0x13')]);});});};}function getCustomFields(_0x36b786,_0x277e41){var _0x5b637e={};if(_0x36b786['length']>0x0){_[_0xbc11('0x2b')](_0x36b786,function(_0x2f5503){if(_[_0xbc11('0x2c')]([_0xbc11('0x2d'),_0xbc11('0x2e')],_0x2f5503['type'])&&_0x2f5503[_0xbc11('0x2f')]&&!_0x2f5503[_0xbc11('0x30')]){_0x5b637e[_0x2f5503[_0xbc11('0x2f')]['toLowerCase']()]=_0x2f5503[_0xbc11('0x31')][_0xbc11('0x32')]();}else if(_['includes'](['string',_0xbc11('0x2e')],_0x2f5503[_0xbc11('0x33')])&&_0x2f5503[_0xbc11('0x34')]&&_0x2f5503[_0xbc11('0x30')]){_0x5b637e[_0x2f5503[_0xbc11('0x34')][_0xbc11('0x35')]()]=_0x2f5503[_0xbc11('0x31')]['toString']();}else if(_0x2f5503[_0xbc11('0x33')]==='variable'&&_0x2f5503[_0xbc11('0x36')]&&_0x2f5503['idField']&&_0x2f5503[_0xbc11('0x30')]){_0x5b637e[_0x2f5503['idField']['toLowerCase']()]=_0x277e41[_0x2f5503['variableName']][_0xbc11('0x32')]();}else if(_0x2f5503[_0xbc11('0x33')]==='customVariable'&&_0x2f5503['Variable']&&_0x2f5503[_0xbc11('0x37')][_0xbc11('0x38')]&&_0x2f5503[_0xbc11('0x34')]&&_0x2f5503[_0xbc11('0x30')]){_0x5b637e[_0x2f5503[_0xbc11('0x34')][_0xbc11('0x35')]()]=_0x277e41[_0x2f5503[_0xbc11('0x37')][_0xbc11('0x38')][_0xbc11('0x35')]()]['toString']();}});}return _0x5b637e;}function getTicket(_0x585583,_0x2d779c,_0x560fd0,_0x4d8ff3,_0x33f33a,_0x169655){return function(_0x202f8c){logger['info']('['+[_0x585583[_0xbc11('0x14')]()]+']\x20getTicket\x20input\x20crm',_0x202f8c);return new Promise(function(_0x529117,_0x4cfd0f){var _0x53d9ba=_0x585583[_0xbc11('0x35')]()===_0xbc11('0x39')?_0x202f8c[_0xbc11('0x1c')]:_0x202f8c[_0xbc11('0x27')];var _0x1663ef={'method':_0xbc11('0x22'),'uri':_0x560fd0+_0xbc11('0x3a')+'?'+_0x169655,'body':Object[_0xbc11('0x3b')]({},{'active':_0xbc11('0x1b'),'caller_id':_0x53d9ba,'assigned_to':_0x202f8c[_0xbc11('0x1c')],'short_description':intUtil[_0xbc11('0x3c')](_0x4d8ff3[_0xbc11('0x3d')],_0x33f33a,'\x20'),'description':intUtil[_0xbc11('0x3c')](_0x4d8ff3[_0xbc11('0x3e')],_0x33f33a,'\x0a')},getCustomFields(_0x4d8ff3['Fields'],_0x33f33a)),'auth':_0x2d779c,'json':!![]};return rp(_0x1663ef)[_0xbc11('0xc')](function(_0x317e43){logger[_0xbc11('0x10')]('['+[_0x585583['toUpperCase']()]+_0xbc11('0x3f'),_0x317e43['result']);_0x202f8c[_0xbc11('0x40')]=_0x317e43[_0xbc11('0xd')][_0xbc11('0xf')];_0x202f8c[_0xbc11('0x41')]=_0x317e43[_0xbc11('0xd')][_0xbc11('0x42')];logger[_0xbc11('0x10')]('['+[_0x585583['toUpperCase']()]+']\x20getTicket\x20crm',_0x202f8c);_0x529117(_0x202f8c);})[_0xbc11('0x11')](function(_0x1739f4){logger['error']('['+[_0x585583[_0xbc11('0x14')]()]+']',_0x1739f4[_0xbc11('0x13')]);_0x4cfd0f(_0x1739f4[_0xbc11('0x13')]);});});};}function createRemoteTag(_0x142576,_0x43fa5b,_0x573770,_0x45ea81){return new Promise(function(_0x5cc2c1,_0x4f6a8f){var _0x4416c1={'method':_0xbc11('0x22'),'uri':_0x573770+_0xbc11('0x43')+'?'+_0x45ea81,'body':{'short_description':_0x142576,'global':!![],'active':!![],'name':_0x142576},'auth':_0x43fa5b,'json':!![]};return rp(_0x4416c1)[_0xbc11('0xc')](function(_0x5dd42e){var _0x35d83b=_0x5dd42e[_0xbc11('0xd')]['sys_id'];_0x5cc2c1(_0x35d83b);});});}function getRemoteTag(_0x15e5a3,_0x50ad4c,_0x3da225,_0xc87257,_0x15fb59){return new Promise(function(_0xc15492,_0x194074){var _0x377114={'method':_0xbc11('0xa'),'uri':_0x3da225+_0xbc11('0x43')+_0xbc11('0x44')+_0x15e5a3+'&'+_0xc87257,'auth':_0x50ad4c,'json':!![]};return rp(_0x377114)[_0xbc11('0xc')](function(_0x551f5b){if(_0x551f5b[_0xbc11('0xd')][_0xbc11('0xe')]>0x0){var _0x40d7e3=_0x551f5b[_0xbc11('0xd')][0x0][_0xbc11('0xf')];_0xc15492(_0x40d7e3);}else{return createRemoteTag(_0x15e5a3,_0x50ad4c,_0x3da225,_0xc87257)[_0xbc11('0xc')](function(_0x2f1c7f){_0xc15492(_0x2f1c7f);});}});});}function assignTagToIncident(_0x31ec71,_0x253ea4,_0x266592,_0xa16100,_0x29ca96){return new Promise(function(_0xd05786,_0x75395e){var _0x1b57c4={'method':_0xbc11('0x22'),'uri':_0x266592+'label_entry'+'?'+_0x29ca96,'body':{'label':_0x31ec71,'table':'incident','id_type':_0xbc11('0x45'),'table_key':_0xa16100[_0xbc11('0x40')],'title':'Incident\x20-\x20'+_0xa16100[_0xbc11('0x41')],'id_display':_0xa16100[_0xbc11('0x41')]},'auth':_0x253ea4,'json':!![]};return rp(_0x1b57c4)['then'](function(_0x2f3004){_0xd05786();})[_0xbc11('0x11')](function(){_0xd05786();});});}function manageTags(_0x5990e6,_0x3fa8d9,_0x2c9ba7,_0x3e2075,_0x54ba32,_0x34a629,_0x31b1fd){return new Promise(function(_0x2d3242,_0x99bc0e){var _0x54dc2e=[];_0x3fa8d9['forEach'](function(_0x8d3a74){_0x54dc2e[_0xbc11('0x46')](getRemoteTag(_0x8d3a74,_0x2c9ba7,_0x3e2075,_0x34a629,_0x31b1fd));});return Promise['all'](_0x54dc2e)[_0xbc11('0xc')](function(_0xdedb54){if(_0xdedb54[_0xbc11('0xe')]){logger['info']('['+[_0x5990e6[_0xbc11('0x14')]()]+_0xbc11('0x47'),_0xdedb54);var _0x1455f9=[];_0xdedb54[_0xbc11('0x2b')](function(_0x55807f){_0x1455f9[_0xbc11('0x46')](assignTagToIncident(_0x55807f,_0x2c9ba7,_0x3e2075,_0x54ba32,_0x34a629));});return Promise[_0xbc11('0x48')](_0x1455f9)[_0xbc11('0xc')](function(){_0x2d3242();})['catch'](function(){_0x2d3242();});}else{_0x2d3242();}});});}function getTags(_0x4733fc,_0x131fb9,_0x4948f4,_0x2a347b,_0x3bb1c0,_0x549a45){return function(_0x481c37){return new Promise(function(_0x9e095c,_0x3e7c0c){var _0x6e7896=[];var _0x539f4a=_0x2a347b[_0xbc11('0x49')];if(_0x539f4a&&_0x539f4a[_0xbc11('0xe')]>0x0){_0x6e7896=_[_0xbc11('0x4a')](_0x539f4a,_0xbc11('0x38'));}if(_0x6e7896['length']>0x0){return manageTags(_0x4733fc,_0x6e7896,_0x131fb9,_0x4948f4,_0x481c37,_0x3bb1c0,_0x549a45)['then'](function(){_0x9e095c(_0x481c37);});}else{_0x9e095c(_0x481c37);}});};}function emit(_0xb3d61c,_0x21ebb4,_0x390ff7){var _0xfe5134=_0xbc11('0x4b')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xbc11('0x4c');var _0x9eac61={'uri':_0xb3d61c+_0xbc11('0x4d')+_0x390ff7+_0xfe5134};io['to'](util['format']('user:%s',_0x21ebb4))[_0xbc11('0x4e')](_0xbc11('0x4f'),_0x9eac61);}exports['cs']=function(_0xf36be,_0x245d03,_0x20125c,_0x441a2d,_0x38a3b8,_0x3cd352,_0x5cfe2a,_0x49297b){var _0x248221={};var _0x41075f={'user':_0x3cd352[_0xbc11('0x50')],'pass':_0x3cd352[_0xbc11('0x51')]};var _0x5cccb0=_0xbc11('0x52');var _0x3ac11b='sysparm_display_value=true';_0x3cd352[_0xbc11('0x53')]=intUtil[_0xbc11('0x54')](_0x3cd352[_0xbc11('0x53')]);_0x3cd352[_0xbc11('0x55')]=intUtil[_0xbc11('0x54')](_0x3cd352[_0xbc11('0x55')]);var _0x5d3edc=util[_0xbc11('0x56')](_0xbc11('0x57'),_0x3cd352[_0xbc11('0x53')]);_0x248221['userEmail']=!_['isNil'](_0x441a2d)?_0x441a2d[_0xbc11('0x58')]:null;_0x248221[_0xbc11('0x20')]=_0x3cd352[_0xbc11('0x58')];_0x248221['endUserNumber']=_0x49297b[_0xbc11('0x35')]()===_0xbc11('0x39')?_0x245d03[_0xbc11('0x59')]:_0x245d03['calleridnum'];_0x248221[_0xbc11('0x5a')]=_0x49297b==='queue'||_0x49297b===_0xbc11('0x5b')?_0xbc11('0x5c'):_0xbc11('0x39');var _0x540958=util[_0xbc11('0x56')](_0xbc11('0x5d'),_0x3cd352[_0xbc11('0x55')],_0x245d03[_0xbc11('0x5e')],md5(_0x245d03[_0xbc11('0x5e')]));if(_0x38a3b8&&_0x38a3b8[_0xbc11('0x5f')]){logger[_0xbc11('0x10')](_0xbc11('0x60'),_0xbc11('0x61'));_0x245d03[_0xbc11('0x62')]=_0x540958;}else if(_0x5cfe2a&&_0x5cfe2a[_0xbc11('0x63')]&&_0x5cfe2a['recordingFormat']!==_0xbc11('0x64')){logger[_0xbc11('0x10')](_0xbc11('0x65'),_0xbc11('0x61'));_0x245d03[_0xbc11('0x62')]=_0x540958;}else{_0x245d03[_0xbc11('0x62')]='';}return getAdminUser(_0x49297b,_0x41075f,_0x248221,_0x5d3edc,_0x3ac11b,_0x5cccb0)[_0xbc11('0xc')](getUser(_0x49297b,_0x41075f,_0x5d3edc,_0x3ac11b,_0x5cccb0))[_0xbc11('0xc')](getEndUser(_0x49297b,_0x41075f,_0x5d3edc,_0x3ac11b,_0x5cccb0))[_0xbc11('0xc')](getTicket(_0x49297b,_0x41075f,_0x5d3edc,_0x20125c,_0x245d03,_0x3ac11b))[_0xbc11('0xc')](function(_0x13937){logger[_0xbc11('0x10')](util[_0xbc11('0x56')](_0xbc11('0x66'),_0x13937[_0xbc11('0x40')]));logger[_0xbc11('0x10')](util[_0xbc11('0x56')]('call\x20direction:\x20%s',_0x49297b));if(_0x49297b!==_0xbc11('0x5b')){logger['info']('['+[_0x49297b[_0xbc11('0x14')]()]+']',_0xbc11('0x67'));emit(_0x3cd352['remoteUri'],_0x441a2d[_0xbc11('0x38')],_0x13937[_0xbc11('0x40')]);}})[_0xbc11('0x11')](function(_0x3e6233){logger[_0xbc11('0x12')]('['+[_0x49297b[_0xbc11('0x14')]()]+_0xbc11('0x68'),util['inspect'](_0x3e6233,{'showHidden':!![],'depth':null}));});};