Built motion from commit f7863d46.|2.5.41
[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 _0xcb8a=['Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident','Incident\x20-\x20','ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','GET','result','length','adminId','sys_id','],\x20getAdminUser\x20crm','toUpperCase','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','then','],\x20getUser\x20entity','active','true','userId','],\x20getUser\x20crm','catch','error',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','customField','nameField','toLowerCase','toString','type','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','getString','Subjects'];(function(_0x57587d,_0x10b7d5){var _0x3fa053=function(_0x2a46cf){while(--_0x2a46cf){_0x57587d['push'](_0x57587d['shift']());}};_0x3fa053(++_0x10b7d5);}(_0xcb8a,0x9f));var _0xacb8=function(_0x34db4b,_0x1bb284){_0x34db4b=_0x34db4b-0x0;var _0x24b800=_0xcb8a[_0x34db4b];return _0x24b800;};'use strict';var _=require(_0xacb8('0x0'));var Promise=require('bluebird');var rp=require(_0xacb8('0x1'));var util=require(_0xacb8('0x2'));var md5=require('md5');var Redis=require(_0xacb8('0x3'));var intUtil=require(_0xacb8('0x4'));var config=require(_0xacb8('0x5'));var logger=require(_0xacb8('0x6'))(_0xacb8('0x7'));config[_0xacb8('0x8')]=_[_0xacb8('0x9')](config['redis'],{'host':_0xacb8('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xacb8('0x8')]));function getAdminUser(_0x11bd6b,_0x12ec06,_0x591e5d,_0x21e88b,_0x2d99b7,_0x9da91d){return new Promise(function(_0x2ef94f,_0x2e9f2d){var _0x484668={'method':_0xacb8('0xb'),'uri':_0x21e88b+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x2d99b7+'&'+_0x9da91d,'auth':_0x12ec06,'json':!![]};return rp(_0x484668)['then'](function(_0x84869d){if(_0x84869d[_0xacb8('0xc')][_0xacb8('0xd')]>0x0){_0x591e5d[_0xacb8('0xe')]=_0x84869d[_0xacb8('0xc')][0x0][_0xacb8('0xf')];}logger['info']('['+[_0x11bd6b['toUpperCase']()]+_0xacb8('0x10'),_0x591e5d);_0x2ef94f(_0x591e5d);})['catch'](function(_0x1c3d4d){logger['error']('['+[_0x11bd6b[_0xacb8('0x11')]()]+']',_0x1c3d4d['message']);_0x2e9f2d(_0x1c3d4d[_0xacb8('0x12')]);});});}function getUser(_0x4fe396,_0x95d82b,_0xcd7500,_0x2d8d1d,_0x548a74){return function(_0x1a8942){logger[_0xacb8('0x13')]('['+[_0x4fe396[_0xacb8('0x11')]()]+_0xacb8('0x14'),_0x1a8942);return new Promise(function(_0x453288,_0x3757f4){if(intUtil[_0xacb8('0x15')](_0x1a8942[_0xacb8('0x16')])){var _0x15beb9={'method':_0xacb8('0xb'),'uri':_0xcd7500+_0xacb8('0x17')+_0x1a8942[_0xacb8('0x16')]+'&'+_0x2d8d1d+'&'+_0x548a74,'auth':_0x95d82b,'json':!![]};logger[_0xacb8('0x13')]('['+[_0x4fe396[_0xacb8('0x11')]()]+'],\x20getUser\x20rp\x20obj',_0x15beb9);return rp(_0x15beb9)[_0xacb8('0x18')](function(_0x35507a){logger[_0xacb8('0x13')]('['+[_0x4fe396[_0xacb8('0x11')]()]+_0xacb8('0x19'),_0x35507a);if(_0x35507a['result']['length']>0x0&&String(_0x35507a[_0xacb8('0xc')][0x0][_0xacb8('0x1a')])===_0xacb8('0x1b')){_0x1a8942[_0xacb8('0x1c')]=_0x35507a[_0xacb8('0xc')][0x0][_0xacb8('0xf')];}else{_0x1a8942[_0xacb8('0x1c')]=_0x1a8942[_0xacb8('0xe')];_0x1a8942[_0xacb8('0x16')]=_0x1a8942['adminEmail'];}logger[_0xacb8('0x13')]('['+[_0x4fe396[_0xacb8('0x11')]()]+_0xacb8('0x1d'),_0x1a8942);_0x453288(_0x1a8942);})[_0xacb8('0x1e')](function(_0x1d9046){logger[_0xacb8('0x1f')]('['+[_0x4fe396[_0xacb8('0x11')]()]+']',_0x1d9046[_0xacb8('0x12')]);_0x3757f4(_0x1d9046[_0xacb8('0x12')]);});}else{logger[_0xacb8('0x13')]('['+[_0x4fe396['toUpperCase']()]+_0xacb8('0x20'));_0x1a8942['userId']=_0x1a8942[_0xacb8('0xe')];_0x1a8942[_0xacb8('0x16')]=_0x1a8942[_0xacb8('0x21')];_0x453288(_0x1a8942);}});};}function createEndUser(_0x3be65f,_0x13508f,_0x3bb882,_0x564b7f,_0x6ac6ad){logger['info']('['+[_0x3be65f[_0xacb8('0x11')]()]+_0xacb8('0x22'),_0x3bb882);return new Promise(function(_0x49cd4a,_0x537a2b){var _0x1a6e70={'method':_0xacb8('0x23'),'uri':_0x564b7f+_0xacb8('0x24')+_0x6ac6ad,'body':{'user_name':_0x3bb882[_0xacb8('0x25')],'roles':'user','first_name':_0x3bb882[_0xacb8('0x25')],'active':_0xacb8('0x1b'),'date_format':'System','phone':_0x3bb882[_0xacb8('0x25')]},'auth':_0x13508f,'json':!![]};return rp(_0x1a6e70)[_0xacb8('0x18')](function(_0x71c615){logger['info']('['+[_0x3be65f[_0xacb8('0x11')]()]+_0xacb8('0x26'),_0x71c615['result']);_0x3bb882[_0xacb8('0x27')]=_0x71c615[_0xacb8('0xc')][_0xacb8('0xf')];_0x49cd4a(_0x3bb882);})['catch'](function(_0x2808b8){logger[_0xacb8('0x1f')]('['+[_0x3be65f[_0xacb8('0x11')]()]+']',_0x2808b8[_0xacb8('0x12')]);_0x537a2b(_0x2808b8[_0xacb8('0x12')]);});});}function getEndUser(_0x3a2021,_0x2acfb3,_0x66da3f,_0x2d5b8a,_0x58b752){return function(_0x49aacc){logger[_0xacb8('0x13')]('['+[_0x3a2021['toUpperCase']()]+_0xacb8('0x28'),_0x49aacc);return new Promise(function(_0x2753d5,_0x440a99){var _0x372d05={'method':'GET','uri':_0x66da3f+_0xacb8('0x29')+_0x49aacc[_0xacb8('0x25')]+'&'+_0x2d5b8a+'&'+_0x58b752,'auth':_0x2acfb3,'json':!![]};return rp(_0x372d05)[_0xacb8('0x18')](function(_0x526d85){if(_0x526d85[_0xacb8('0xc')][_0xacb8('0xd')]>0x0){_0x49aacc[_0xacb8('0x27')]=_0x526d85[_0xacb8('0xc')][0x0][_0xacb8('0xf')];logger[_0xacb8('0x13')]('['+[_0x3a2021['toUpperCase']()]+_0xacb8('0x2a'),_0x49aacc);_0x2753d5(_0x49aacc);}else{return createEndUser(_0x3a2021,_0x2acfb3,_0x49aacc,_0x66da3f,_0x2d5b8a)[_0xacb8('0x18')](function(_0x9bfa3e){logger[_0xacb8('0x13')]('['+[_0x3a2021['toUpperCase']()]+_0xacb8('0x2b'),_0x9bfa3e);_0x2753d5(_0x9bfa3e);});}})[_0xacb8('0x1e')](function(_0x45489d){logger['error']('['+[_0x3a2021[_0xacb8('0x11')]()]+']',_0x45489d[_0xacb8('0x12')]);_0x440a99(_0x45489d[_0xacb8('0x12')]);});});};}function getCustomFields(_0x2578b8,_0x15c377){var _0x3f427b={};if(_0x2578b8[_0xacb8('0xd')]>0x0){_[_0xacb8('0x2c')](_0x2578b8,function(_0x4742a2){if(_[_0xacb8('0x2d')]([_0xacb8('0x2e'),_0xacb8('0x2f')],_0x4742a2['type'])&&_0x4742a2['nameField']&&!_0x4742a2[_0xacb8('0x30')]){_0x3f427b[_0x4742a2[_0xacb8('0x31')][_0xacb8('0x32')]()]=_0x4742a2['content'][_0xacb8('0x33')]();}else if(_[_0xacb8('0x2d')]([_0xacb8('0x2e'),_0xacb8('0x2f')],_0x4742a2[_0xacb8('0x34')])&&_0x4742a2[_0xacb8('0x35')]&&_0x4742a2[_0xacb8('0x30')]){_0x3f427b[_0x4742a2['idField']['toLowerCase']()]=_0x4742a2[_0xacb8('0x36')]['toString']();}else if(_0x4742a2['type']===_0xacb8('0x37')&&_0x4742a2['variableName']&&_0x4742a2[_0xacb8('0x35')]&&_0x4742a2[_0xacb8('0x30')]){_0x3f427b[_0x4742a2[_0xacb8('0x35')][_0xacb8('0x32')]()]=_0x15c377[_0x4742a2[_0xacb8('0x38')]][_0xacb8('0x33')]();}else if(_0x4742a2[_0xacb8('0x34')]===_0xacb8('0x39')&&_0x4742a2[_0xacb8('0x3a')]&&_0x4742a2[_0xacb8('0x3a')][_0xacb8('0x3b')]&&_0x4742a2[_0xacb8('0x35')]&&_0x4742a2[_0xacb8('0x30')]){_0x3f427b[_0x4742a2[_0xacb8('0x35')][_0xacb8('0x32')]()]=_0x15c377[_0x4742a2['Variable']['name']['toLowerCase']()][_0xacb8('0x33')]();}});}return _0x3f427b;}function getTicket(_0x39e4f9,_0x43fd30,_0xe90ca1,_0x2b633c,_0x5b2240,_0xb78024){return function(_0x5035c3){logger[_0xacb8('0x13')]('['+[_0x39e4f9['toUpperCase']()]+_0xacb8('0x3c'),_0x5035c3);return new Promise(function(_0x14ae14,_0x22fd5d){var _0x275d24=_0x39e4f9[_0xacb8('0x32')]()===_0xacb8('0x3d')?_0x5035c3[_0xacb8('0x1c')]:_0x5035c3[_0xacb8('0x27')];var _0x4bb883={'method':_0xacb8('0x23'),'uri':_0xe90ca1+_0xacb8('0x3e')+'?'+_0xb78024,'body':Object['assign']({},{'active':_0xacb8('0x1b'),'caller_id':_0x275d24,'assigned_to':_0x5035c3[_0xacb8('0x1c')],'short_description':intUtil[_0xacb8('0x3f')](_0x2b633c[_0xacb8('0x40')],_0x5b2240,'\x20'),'description':intUtil[_0xacb8('0x3f')](_0x2b633c[_0xacb8('0x41')],_0x5b2240,'\x0a')},getCustomFields(_0x2b633c[_0xacb8('0x42')],_0x5b2240)),'auth':_0x43fd30,'json':!![]};return rp(_0x4bb883)[_0xacb8('0x18')](function(_0x5344ff){logger['info']('['+[_0x39e4f9[_0xacb8('0x11')]()]+_0xacb8('0x43'),_0x5344ff[_0xacb8('0xc')]);_0x5035c3[_0xacb8('0x44')]=_0x5344ff['result'][_0xacb8('0xf')];_0x5035c3['ticketNumber']=_0x5344ff[_0xacb8('0xc')][_0xacb8('0x45')];logger[_0xacb8('0x13')]('['+[_0x39e4f9['toUpperCase']()]+_0xacb8('0x46'),_0x5035c3);_0x14ae14(_0x5035c3);})[_0xacb8('0x1e')](function(_0x563578){logger[_0xacb8('0x1f')]('['+[_0x39e4f9[_0xacb8('0x11')]()]+']',_0x563578[_0xacb8('0x12')]);_0x22fd5d(_0x563578[_0xacb8('0x12')]);});});};}function createRemoteTag(_0x23f05c,_0x1f9fc9,_0x306c33,_0x33acf6){return new Promise(function(_0x55754,_0x178591){var _0x1c7a2a={'method':_0xacb8('0x23'),'uri':_0x306c33+'label'+'?'+_0x33acf6,'body':{'short_description':_0x23f05c,'global':!![],'active':!![],'name':_0x23f05c},'auth':_0x1f9fc9,'json':!![]};return rp(_0x1c7a2a)[_0xacb8('0x18')](function(_0x43e649){var _0x37023d=_0x43e649[_0xacb8('0xc')][_0xacb8('0xf')];_0x55754(_0x37023d);});});}function getRemoteTag(_0x5b582c,_0x2bbcb2,_0x1f1496,_0x25ca93,_0x48b9a7){return new Promise(function(_0x2dd667,_0x404c6f){var _0x3b82f2={'method':_0xacb8('0xb'),'uri':_0x1f1496+_0xacb8('0x47')+_0xacb8('0x48')+_0x5b582c+'&'+_0x25ca93,'auth':_0x2bbcb2,'json':!![]};return rp(_0x3b82f2)[_0xacb8('0x18')](function(_0xd7bf6d){if(_0xd7bf6d['result']['length']>0x0){var _0x4f4079=_0xd7bf6d[_0xacb8('0xc')][0x0][_0xacb8('0xf')];_0x2dd667(_0x4f4079);}else{return createRemoteTag(_0x5b582c,_0x2bbcb2,_0x1f1496,_0x25ca93)[_0xacb8('0x18')](function(_0x5af258){_0x2dd667(_0x5af258);});}});});}function assignTagToIncident(_0x39d223,_0x290362,_0x10f8b6,_0x15e6c4,_0x4337e6){return new Promise(function(_0x383702,_0x9bd9e1){var _0x2da159={'method':'POST','uri':_0x10f8b6+'label_entry'+'?'+_0x4337e6,'body':{'label':_0x39d223,'table':_0xacb8('0x3e'),'id_type':_0xacb8('0x49'),'table_key':_0x15e6c4['ticketId'],'title':_0xacb8('0x4a')+_0x15e6c4[_0xacb8('0x4b')],'id_display':_0x15e6c4[_0xacb8('0x4b')]},'auth':_0x290362,'json':!![]};return rp(_0x2da159)[_0xacb8('0x18')](function(_0x5c96ee){_0x383702();})['catch'](function(){_0x383702();});});}function manageTags(_0x370aec,_0x165f13,_0x5b985a,_0x2eb490,_0x2a6d5c,_0x4d68a1,_0x20c7cb){return new Promise(function(_0x1dc9ce,_0x4f01fc){var _0x299f58=[];_0x165f13[_0xacb8('0x2c')](function(_0x3d09d9){_0x299f58[_0xacb8('0x4c')](getRemoteTag(_0x3d09d9,_0x5b985a,_0x2eb490,_0x4d68a1,_0x20c7cb));});return Promise[_0xacb8('0x4d')](_0x299f58)[_0xacb8('0x18')](function(_0x2cbd80){if(_0x2cbd80['length']){logger[_0xacb8('0x13')]('['+[_0x370aec[_0xacb8('0x11')]()]+_0xacb8('0x4e'),_0x2cbd80);var _0x53abcd=[];_0x2cbd80['forEach'](function(_0x5db290){_0x53abcd[_0xacb8('0x4c')](assignTagToIncident(_0x5db290,_0x5b985a,_0x2eb490,_0x2a6d5c,_0x4d68a1));});return Promise[_0xacb8('0x4d')](_0x53abcd)[_0xacb8('0x18')](function(){_0x1dc9ce();})[_0xacb8('0x1e')](function(){_0x1dc9ce();});}else{_0x1dc9ce();}});});}function getTags(_0x3dc849,_0x1852bf,_0x22c72b,_0x4a3c39,_0x2fd637,_0x39f8cb){return function(_0x42930d){return new Promise(function(_0x12c31d,_0x41bcc8){var _0xd2facf=[];var _0x1553e4=_0x4a3c39[_0xacb8('0x4f')];if(_0x1553e4&&_0x1553e4[_0xacb8('0xd')]>0x0){_0xd2facf=_[_0xacb8('0x50')](_0x1553e4,_0xacb8('0x3b'));}if(_0xd2facf[_0xacb8('0xd')]>0x0){return manageTags(_0x3dc849,_0xd2facf,_0x1852bf,_0x22c72b,_0x42930d,_0x2fd637,_0x39f8cb)[_0xacb8('0x18')](function(){_0x12c31d(_0x42930d);});}else{_0x12c31d(_0x42930d);}});};}function emit(_0x3a5a3b,_0x36a5e9,_0x5f362c){var _0xfcc31=_0xacb8('0x51')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xacb8('0x52');var _0x5c181c={'uri':_0x3a5a3b+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x5f362c+_0xfcc31};io['to'](util[_0xacb8('0x53')]('user:%s',_0x36a5e9))[_0xacb8('0x54')](_0xacb8('0x55'),_0x5c181c);}exports['cs']=function(_0x3ce250,_0x4bb4b2,_0x1018b2,_0x30c9b4,_0x1d3fa8,_0xf67d06,_0x4c64d4,_0x293a97){var _0x1e3e12={};var _0xb30ae3={'user':_0xf67d06['username'],'pass':_0xf67d06[_0xacb8('0x56')]};var _0x496b33=_0xacb8('0x57');var _0x5b1afc=_0xacb8('0x58');_0xf67d06[_0xacb8('0x59')]=intUtil[_0xacb8('0x5a')](_0xf67d06[_0xacb8('0x59')]);_0xf67d06['serverUrl']=intUtil[_0xacb8('0x5a')](_0xf67d06[_0xacb8('0x5b')]);var _0x877372=util[_0xacb8('0x53')](_0xacb8('0x5c'),_0xf67d06['remoteUri']);_0x1e3e12[_0xacb8('0x16')]=!_[_0xacb8('0x5d')](_0x30c9b4)?_0x30c9b4[_0xacb8('0x5e')]:null;_0x1e3e12[_0xacb8('0x21')]=_0xf67d06['email'];_0x1e3e12[_0xacb8('0x25')]=_0x293a97['toLowerCase']()===_0xacb8('0x3d')?_0x4bb4b2[_0xacb8('0x5f')]:_0x4bb4b2[_0xacb8('0x60')];_0x1e3e12['callDirection']=_0x293a97==='queue'||_0x293a97===_0xacb8('0x61')?_0xacb8('0x62'):_0xacb8('0x3d');var _0x224453=util['format'](_0xacb8('0x63'),_0xf67d06[_0xacb8('0x5b')],_0x4bb4b2[_0xacb8('0x64')],md5(_0x4bb4b2[_0xacb8('0x64')]));if(_0x1d3fa8&&_0x1d3fa8[_0xacb8('0x65')]){logger[_0xacb8('0x13')](_0xacb8('0x66'),_0xacb8('0x67'));_0x4bb4b2['recordingURL']=_0x224453;}else if(_0x4c64d4&&_0x4c64d4['recordingFormat']&&_0x4c64d4[_0xacb8('0x68')]!==_0xacb8('0x69')){logger[_0xacb8('0x13')](_0xacb8('0x6a'),_0xacb8('0x67'));_0x4bb4b2[_0xacb8('0x6b')]=_0x224453;}else{_0x4bb4b2['recordingURL']='';}return getAdminUser(_0x293a97,_0xb30ae3,_0x1e3e12,_0x877372,_0x5b1afc,_0x496b33)[_0xacb8('0x18')](getUser(_0x293a97,_0xb30ae3,_0x877372,_0x5b1afc,_0x496b33))[_0xacb8('0x18')](getEndUser(_0x293a97,_0xb30ae3,_0x877372,_0x5b1afc,_0x496b33))[_0xacb8('0x18')](getTicket(_0x293a97,_0xb30ae3,_0x877372,_0x1018b2,_0x4bb4b2,_0x5b1afc))[_0xacb8('0x18')](function(_0x11639e){logger[_0xacb8('0x13')](util[_0xacb8('0x53')](_0xacb8('0x6c'),_0x11639e['ticketId']));logger[_0xacb8('0x13')](util['format']('call\x20direction:\x20%s',_0x293a97));if(_0x293a97!=='unmanaged'){logger[_0xacb8('0x13')]('['+[_0x293a97[_0xacb8('0x11')]()]+']',_0xacb8('0x6d'));emit(_0xf67d06['remoteUri'],_0x30c9b4[_0xacb8('0x3b')],_0x11639e[_0xacb8('0x44')]);}})['catch'](function(_0x62af41){logger[_0xacb8('0x1f')]('['+[_0x293a97['toUpperCase']()]+_0xacb8('0x6e'),util[_0xacb8('0x6f')](_0x62af41,{'showHidden':!![],'depth':null}));});};