Built motion from commit (unavailable).|2.5.23
[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 _0x1c7c=['sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','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','ioredis','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','result','length','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','then','active','userId','adminId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','true','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','toString','variable','variableName','Variable',']\x20getTicket\x20input\x20crm','outbound','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','incident','Incident','Incident\x20-\x20','push','all','Tags','map','name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','username','password','sysparm_limit=1'];(function(_0x504603,_0x40d00c){var _0x3e411f=function(_0x2186d1){while(--_0x2186d1){_0x504603['push'](_0x504603['shift']());}};_0x3e411f(++_0x40d00c);}(_0x1c7c,0x164));var _0xc1c7=function(_0x2484d4,_0x288ec7){_0x2484d4=_0x2484d4-0x0;var _0x1f5814=_0x1c7c[_0x2484d4];return _0x1f5814;};'use strict';var _=require(_0xc1c7('0x0'));var Promise=require(_0xc1c7('0x1'));var rp=require(_0xc1c7('0x2'));var util=require(_0xc1c7('0x3'));var md5=require('md5');var Redis=require(_0xc1c7('0x4'));var intUtil=require('./util');var config=require(_0xc1c7('0x5'));var logger=require(_0xc1c7('0x6'))(_0xc1c7('0x7'));config[_0xc1c7('0x8')]=_[_0xc1c7('0x9')](config[_0xc1c7('0x8')],{'host':_0xc1c7('0xa'),'port':0x18eb});var io=require(_0xc1c7('0xb'))(new Redis(config[_0xc1c7('0x8')]));function getAdminUser(_0x3b3e9c,_0x434a35,_0x11c7ef,_0x92e892,_0x4baa32,_0x339649){return new Promise(function(_0x301abf,_0x25a669){var _0x4df577={'method':_0xc1c7('0xc'),'uri':_0x92e892+_0xc1c7('0xd')+'&'+_0x4baa32+'&'+_0x339649,'auth':_0x434a35,'json':!![]};return rp(_0x4df577)['then'](function(_0x3f4fa5){if(_0x3f4fa5[_0xc1c7('0xe')][_0xc1c7('0xf')]>0x0){_0x11c7ef['adminId']=_0x3f4fa5[_0xc1c7('0xe')][0x0][_0xc1c7('0x10')];}logger[_0xc1c7('0x11')]('['+[_0x3b3e9c[_0xc1c7('0x12')]()]+_0xc1c7('0x13'),_0x11c7ef);_0x301abf(_0x11c7ef);})[_0xc1c7('0x14')](function(_0x40c313){logger[_0xc1c7('0x15')]('['+[_0x3b3e9c[_0xc1c7('0x12')]()]+']',_0x40c313[_0xc1c7('0x16')]);_0x25a669(_0x40c313[_0xc1c7('0x16')]);});});}function getUser(_0x34d392,_0x49576d,_0x3e1f0e,_0x335600,_0x21911c){return function(_0x555b59){logger[_0xc1c7('0x11')]('['+[_0x34d392[_0xc1c7('0x12')]()]+_0xc1c7('0x17'),_0x555b59);return new Promise(function(_0x39ac54,_0x20439e){if(intUtil[_0xc1c7('0x18')](_0x555b59[_0xc1c7('0x19')])){var _0x2e93e5={'method':'GET','uri':_0x3e1f0e+_0xc1c7('0x1a')+_0x555b59[_0xc1c7('0x19')]+'&'+_0x335600+'&'+_0x21911c,'auth':_0x49576d,'json':!![]};logger[_0xc1c7('0x11')]('['+[_0x34d392[_0xc1c7('0x12')]()]+'],\x20getUser\x20rp\x20obj',_0x2e93e5);return rp(_0x2e93e5)[_0xc1c7('0x1b')](function(_0x4d6171){logger[_0xc1c7('0x11')]('['+[_0x34d392[_0xc1c7('0x12')]()]+'],\x20getUser\x20entity',_0x4d6171);if(_0x4d6171['result'][_0xc1c7('0xf')]>0x0&&String(_0x4d6171[_0xc1c7('0xe')][0x0][_0xc1c7('0x1c')])==='true'){_0x555b59[_0xc1c7('0x1d')]=_0x4d6171[_0xc1c7('0xe')][0x0][_0xc1c7('0x10')];}else{_0x555b59[_0xc1c7('0x1d')]=_0x555b59[_0xc1c7('0x1e')];_0x555b59[_0xc1c7('0x19')]=_0x555b59[_0xc1c7('0x1f')];}logger[_0xc1c7('0x11')]('['+[_0x34d392[_0xc1c7('0x12')]()]+_0xc1c7('0x20'),_0x555b59);_0x39ac54(_0x555b59);})[_0xc1c7('0x14')](function(_0x363fbc){logger[_0xc1c7('0x15')]('['+[_0x34d392[_0xc1c7('0x12')]()]+']',_0x363fbc[_0xc1c7('0x16')]);_0x20439e(_0x363fbc[_0xc1c7('0x16')]);});}else{logger['info']('['+[_0x34d392[_0xc1c7('0x12')]()]+_0xc1c7('0x21'));_0x555b59['userId']=_0x555b59['adminId'];_0x555b59[_0xc1c7('0x19')]=_0x555b59['adminEmail'];_0x39ac54(_0x555b59);}});};}function createEndUser(_0x544fbb,_0x541f12,_0x1b873c,_0x46d045,_0x243450){logger[_0xc1c7('0x11')]('['+[_0x544fbb['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x1b873c);return new Promise(function(_0x1b6f97,_0x4275f9){var _0x9a0ab3={'method':_0xc1c7('0x22'),'uri':_0x46d045+_0xc1c7('0x23')+_0x243450,'body':{'user_name':_0x1b873c['endUserNumber'],'roles':'user','first_name':_0x1b873c[_0xc1c7('0x24')],'active':_0xc1c7('0x25'),'date_format':'System','phone':_0x1b873c[_0xc1c7('0x24')]},'auth':_0x541f12,'json':!![]};return rp(_0x9a0ab3)[_0xc1c7('0x1b')](function(_0x39b68c){logger[_0xc1c7('0x11')]('['+[_0x544fbb[_0xc1c7('0x12')]()]+_0xc1c7('0x26'),_0x39b68c[_0xc1c7('0xe')]);_0x1b873c['endUserId']=_0x39b68c[_0xc1c7('0xe')][_0xc1c7('0x10')];_0x1b6f97(_0x1b873c);})[_0xc1c7('0x14')](function(_0x3676ce){logger[_0xc1c7('0x15')]('['+[_0x544fbb[_0xc1c7('0x12')]()]+']',_0x3676ce[_0xc1c7('0x16')]);_0x4275f9(_0x3676ce[_0xc1c7('0x16')]);});});}function getEndUser(_0x2d58b0,_0x546eb9,_0x5ba7c1,_0xc58e74,_0x3bd89a){return function(_0x263900){logger[_0xc1c7('0x11')]('['+[_0x2d58b0[_0xc1c7('0x12')]()]+_0xc1c7('0x27'),_0x263900);return new Promise(function(_0x1fc174,_0x2267d5){var _0x3bd3b0={'method':_0xc1c7('0xc'),'uri':_0x5ba7c1+_0xc1c7('0x28')+_0x263900[_0xc1c7('0x24')]+'&'+_0xc58e74+'&'+_0x3bd89a,'auth':_0x546eb9,'json':!![]};return rp(_0x3bd3b0)[_0xc1c7('0x1b')](function(_0x3c57d3){if(_0x3c57d3[_0xc1c7('0xe')][_0xc1c7('0xf')]>0x0){_0x263900[_0xc1c7('0x29')]=_0x3c57d3[_0xc1c7('0xe')][0x0][_0xc1c7('0x10')];logger[_0xc1c7('0x11')]('['+[_0x2d58b0[_0xc1c7('0x12')]()]+'],\x20getEndUser\x20crm',_0x263900);_0x1fc174(_0x263900);}else{return createEndUser(_0x2d58b0,_0x546eb9,_0x263900,_0x5ba7c1,_0xc58e74)['then'](function(_0x49e38f){logger[_0xc1c7('0x11')]('['+[_0x2d58b0['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x49e38f);_0x1fc174(_0x49e38f);});}})[_0xc1c7('0x14')](function(_0x24ceb4){logger[_0xc1c7('0x15')]('['+[_0x2d58b0[_0xc1c7('0x12')]()]+']',_0x24ceb4['message']);_0x2267d5(_0x24ceb4[_0xc1c7('0x16')]);});});};}function getCustomFields(_0x25e005,_0x32e9fd){var _0x3e5a61={};if(_0x25e005[_0xc1c7('0xf')]>0x0){_[_0xc1c7('0x2a')](_0x25e005,function(_0x3d9d1d){if(_[_0xc1c7('0x2b')]([_0xc1c7('0x2c'),_0xc1c7('0x2d')],_0x3d9d1d[_0xc1c7('0x2e')])&&_0x3d9d1d[_0xc1c7('0x2f')]&&!_0x3d9d1d[_0xc1c7('0x30')]){_0x3e5a61[_0x3d9d1d['nameField'][_0xc1c7('0x31')]()]=_0x3d9d1d[_0xc1c7('0x32')]['toString']();}else if(_[_0xc1c7('0x2b')]([_0xc1c7('0x2c'),_0xc1c7('0x2d')],_0x3d9d1d[_0xc1c7('0x2e')])&&_0x3d9d1d[_0xc1c7('0x33')]&&_0x3d9d1d[_0xc1c7('0x30')]){_0x3e5a61[_0x3d9d1d[_0xc1c7('0x33')][_0xc1c7('0x31')]()]=_0x3d9d1d[_0xc1c7('0x32')][_0xc1c7('0x34')]();}else if(_0x3d9d1d['type']===_0xc1c7('0x35')&&_0x3d9d1d[_0xc1c7('0x36')]&&_0x3d9d1d['idField']&&_0x3d9d1d['customField']){_0x3e5a61[_0x3d9d1d[_0xc1c7('0x33')][_0xc1c7('0x31')]()]=_0x32e9fd[_0x3d9d1d[_0xc1c7('0x36')]][_0xc1c7('0x34')]();}else if(_0x3d9d1d[_0xc1c7('0x2e')]==='customVariable'&&_0x3d9d1d[_0xc1c7('0x37')]&&_0x3d9d1d[_0xc1c7('0x37')]['name']&&_0x3d9d1d['idField']&&_0x3d9d1d['customField']){_0x3e5a61[_0x3d9d1d[_0xc1c7('0x33')][_0xc1c7('0x31')]()]=_0x32e9fd[_0x3d9d1d[_0xc1c7('0x37')]['name'][_0xc1c7('0x31')]()][_0xc1c7('0x34')]();}});}return _0x3e5a61;}function getTicket(_0x5a7f68,_0x1b869d,_0xce8ab9,_0x32e38e,_0x13d412,_0xf8b797){return function(_0x45bf42){logger[_0xc1c7('0x11')]('['+[_0x5a7f68[_0xc1c7('0x12')]()]+_0xc1c7('0x38'),_0x45bf42);return new Promise(function(_0x3ec5de,_0xa49f73){var _0x13c275=_0x5a7f68[_0xc1c7('0x31')]()===_0xc1c7('0x39')?_0x45bf42[_0xc1c7('0x1d')]:_0x45bf42[_0xc1c7('0x29')];var _0x2967b7={'method':_0xc1c7('0x22'),'uri':_0xce8ab9+'incident'+'?'+_0xf8b797,'body':Object[_0xc1c7('0x3a')]({},{'active':'true','caller_id':_0x13c275,'assigned_to':_0x45bf42[_0xc1c7('0x1d')],'short_description':intUtil[_0xc1c7('0x3b')](_0x32e38e[_0xc1c7('0x3c')],_0x13d412,'\x20'),'description':intUtil['getString'](_0x32e38e[_0xc1c7('0x3d')],_0x13d412,'\x0a')},getCustomFields(_0x32e38e[_0xc1c7('0x3e')],_0x13d412)),'auth':_0x1b869d,'json':!![]};return rp(_0x2967b7)['then'](function(_0x531b04){logger['info']('['+[_0x5a7f68[_0xc1c7('0x12')]()]+_0xc1c7('0x3f'),_0x531b04['result']);_0x45bf42[_0xc1c7('0x40')]=_0x531b04[_0xc1c7('0xe')][_0xc1c7('0x10')];_0x45bf42[_0xc1c7('0x41')]=_0x531b04[_0xc1c7('0xe')][_0xc1c7('0x42')];logger['info']('['+[_0x5a7f68[_0xc1c7('0x12')]()]+']\x20getTicket\x20crm',_0x45bf42);_0x3ec5de(_0x45bf42);})[_0xc1c7('0x14')](function(_0x456ac1){logger[_0xc1c7('0x15')]('['+[_0x5a7f68['toUpperCase']()]+']',_0x456ac1[_0xc1c7('0x16')]);_0xa49f73(_0x456ac1[_0xc1c7('0x16')]);});});};}function createRemoteTag(_0x260fc1,_0xf88aa,_0x1679c5,_0x45dfa2){return new Promise(function(_0x1dc39f,_0x3eb3a5){var _0x5725af={'method':_0xc1c7('0x22'),'uri':_0x1679c5+_0xc1c7('0x43')+'?'+_0x45dfa2,'body':{'short_description':_0x260fc1,'global':!![],'active':!![],'name':_0x260fc1},'auth':_0xf88aa,'json':!![]};return rp(_0x5725af)[_0xc1c7('0x1b')](function(_0x575fc5){var _0x5b8ed4=_0x575fc5[_0xc1c7('0xe')][_0xc1c7('0x10')];_0x1dc39f(_0x5b8ed4);});});}function getRemoteTag(_0x4e8c5d,_0x519701,_0x1c636c,_0x48304a,_0x3e6fe3){return new Promise(function(_0x4b9d7c,_0x1b4766){var _0x43dad8={'method':_0xc1c7('0xc'),'uri':_0x1c636c+_0xc1c7('0x43')+_0xc1c7('0x44')+_0x4e8c5d+'&'+_0x48304a,'auth':_0x519701,'json':!![]};return rp(_0x43dad8)['then'](function(_0x11c116){if(_0x11c116[_0xc1c7('0xe')][_0xc1c7('0xf')]>0x0){var _0x526117=_0x11c116[_0xc1c7('0xe')][0x0]['sys_id'];_0x4b9d7c(_0x526117);}else{return createRemoteTag(_0x4e8c5d,_0x519701,_0x1c636c,_0x48304a)[_0xc1c7('0x1b')](function(_0x528986){_0x4b9d7c(_0x528986);});}});});}function assignTagToIncident(_0x39d3e2,_0x212d53,_0x314232,_0x3a94fb,_0x156d51){return new Promise(function(_0x54e2c4,_0x5405ad){var _0x5cc303={'method':_0xc1c7('0x22'),'uri':_0x314232+_0xc1c7('0x45')+'?'+_0x156d51,'body':{'label':_0x39d3e2,'table':_0xc1c7('0x46'),'id_type':_0xc1c7('0x47'),'table_key':_0x3a94fb[_0xc1c7('0x40')],'title':_0xc1c7('0x48')+_0x3a94fb['ticketNumber'],'id_display':_0x3a94fb[_0xc1c7('0x41')]},'auth':_0x212d53,'json':!![]};return rp(_0x5cc303)[_0xc1c7('0x1b')](function(_0x1c010a){_0x54e2c4();})[_0xc1c7('0x14')](function(){_0x54e2c4();});});}function manageTags(_0x5f4f7a,_0x2e4673,_0x19a4d7,_0x2a0bb3,_0x5cb5e5,_0x4624f8,_0xb842a5){return new Promise(function(_0x42c3bd,_0x32a435){var _0x58b08b=[];_0x2e4673['forEach'](function(_0x34aa95){_0x58b08b[_0xc1c7('0x49')](getRemoteTag(_0x34aa95,_0x19a4d7,_0x2a0bb3,_0x4624f8,_0xb842a5));});return Promise['all'](_0x58b08b)[_0xc1c7('0x1b')](function(_0x20ef90){if(_0x20ef90['length']){logger[_0xc1c7('0x11')]('['+[_0x5f4f7a[_0xc1c7('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x20ef90);var _0x6b9337=[];_0x20ef90[_0xc1c7('0x2a')](function(_0x374fa4){_0x6b9337[_0xc1c7('0x49')](assignTagToIncident(_0x374fa4,_0x19a4d7,_0x2a0bb3,_0x5cb5e5,_0x4624f8));});return Promise[_0xc1c7('0x4a')](_0x6b9337)[_0xc1c7('0x1b')](function(){_0x42c3bd();})[_0xc1c7('0x14')](function(){_0x42c3bd();});}else{_0x42c3bd();}});});}function getTags(_0x33104e,_0x208bc1,_0x31fb14,_0x13a4f5,_0x167444,_0x206afd){return function(_0x3c9ffe){return new Promise(function(_0x342fc8,_0x8b733){var _0x404727=[];var _0x26536b=_0x13a4f5[_0xc1c7('0x4b')];if(_0x26536b&&_0x26536b[_0xc1c7('0xf')]>0x0){_0x404727=_[_0xc1c7('0x4c')](_0x26536b,_0xc1c7('0x4d'));}if(_0x404727[_0xc1c7('0xf')]>0x0){return manageTags(_0x33104e,_0x404727,_0x208bc1,_0x31fb14,_0x3c9ffe,_0x167444,_0x206afd)[_0xc1c7('0x1b')](function(){_0x342fc8(_0x3c9ffe);});}else{_0x342fc8(_0x3c9ffe);}});};}function emit(_0x1ff872,_0x515887,_0x1949f8){var _0x1448d8='%26sysparm_record_target%3Dincident'+_0xc1c7('0x4e')+_0xc1c7('0x4f')+_0xc1c7('0x50');var _0x3b3d50={'uri':_0x1ff872+_0xc1c7('0x51')+_0x1949f8+_0x1448d8};io['to'](util[_0xc1c7('0x52')](_0xc1c7('0x53'),_0x515887))[_0xc1c7('0x54')]('trigger:browser:url',_0x3b3d50);}exports['cs']=function(_0xbbd4e3,_0x20cd61,_0x268a41,_0x29e4fa,_0x283a05,_0x9afa38,_0x3e48b6,_0xa00af6){var _0x4b0086={};var _0x378f7f={'user':_0x9afa38[_0xc1c7('0x55')],'pass':_0x9afa38[_0xc1c7('0x56')]};var _0x4225ce=_0xc1c7('0x57');var _0x2ef077=_0xc1c7('0x58');_0x9afa38[_0xc1c7('0x59')]=intUtil[_0xc1c7('0x5a')](_0x9afa38[_0xc1c7('0x59')]);_0x9afa38[_0xc1c7('0x5b')]=intUtil[_0xc1c7('0x5a')](_0x9afa38['serverUrl']);var _0x5e0103=util[_0xc1c7('0x52')](_0xc1c7('0x5c'),_0x9afa38[_0xc1c7('0x59')]);_0x4b0086[_0xc1c7('0x19')]=!_[_0xc1c7('0x5d')](_0x29e4fa)?_0x29e4fa[_0xc1c7('0x5e')]:null;_0x4b0086[_0xc1c7('0x1f')]=_0x9afa38[_0xc1c7('0x5e')];_0x4b0086[_0xc1c7('0x24')]=_0xa00af6[_0xc1c7('0x31')]()===_0xc1c7('0x39')?_0x20cd61[_0xc1c7('0x5f')]:_0x20cd61[_0xc1c7('0x60')];_0x4b0086['callDirection']=_0xa00af6===_0xc1c7('0x61')||_0xa00af6===_0xc1c7('0x62')?_0xc1c7('0x61'):'outbound';var _0x4de022=util['format'](_0xc1c7('0x63'),_0x9afa38[_0xc1c7('0x5b')],_0x20cd61['uniqueid'],md5(_0x20cd61[_0xc1c7('0x64')]));if(_0x283a05&&_0x283a05[_0xc1c7('0x65')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x20cd61[_0xc1c7('0x66')]=_0x4de022;}else if(_0x3e48b6&&_0x3e48b6['recordingFormat']&&_0x3e48b6[_0xc1c7('0x67')]!==_0xc1c7('0x68')){logger[_0xc1c7('0x11')]('[OUTBOUND]',_0xc1c7('0x69'));_0x20cd61['recordingURL']=_0x4de022;}else{_0x20cd61[_0xc1c7('0x66')]='';}return getAdminUser(_0xa00af6,_0x378f7f,_0x4b0086,_0x5e0103,_0x2ef077,_0x4225ce)[_0xc1c7('0x1b')](getUser(_0xa00af6,_0x378f7f,_0x5e0103,_0x2ef077,_0x4225ce))['then'](getEndUser(_0xa00af6,_0x378f7f,_0x5e0103,_0x2ef077,_0x4225ce))[_0xc1c7('0x1b')](getTicket(_0xa00af6,_0x378f7f,_0x5e0103,_0x268a41,_0x20cd61,_0x2ef077))[_0xc1c7('0x1b')](function(_0x1510cc){logger[_0xc1c7('0x11')](util[_0xc1c7('0x52')](_0xc1c7('0x6a'),_0x1510cc[_0xc1c7('0x40')]));logger[_0xc1c7('0x11')](util[_0xc1c7('0x52')](_0xc1c7('0x6b'),_0xa00af6));if(_0xa00af6!=='unmanaged'){logger[_0xc1c7('0x11')]('['+[_0xa00af6[_0xc1c7('0x12')]()]+']',_0xc1c7('0x6c'));emit(_0x9afa38[_0xc1c7('0x59')],_0x29e4fa['name'],_0x1510cc[_0xc1c7('0x40')]);}})[_0xc1c7('0x14')](function(_0x47d2b0){logger['error']('['+[_0xa00af6[_0xc1c7('0x12')]()]+_0xc1c7('0x6d'),util[_0xc1c7('0x6e')](_0x47d2b0,{'showHidden':!![],'depth':null}));});};