Built motion from commit 3e059bc2.|2.5.32
[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 _0xf685=['endUserId','error','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','string','picklist','type','nameField','customField','content','idField','toLowerCase','toString','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','assign','getString','Subjects',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','%26sysparm_record_target%3Dincident','%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','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm','sys_user?','user','endUserNumber','],\x20EndUser\x20schema'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf685,0x1a1));var _0x5f68=function(_0x25b0e9,_0x36bd89){_0x25b0e9=_0x25b0e9-0x0;var _0x4aa7ea=_0xf685[_0x25b0e9];return _0x4aa7ea;};'use strict';var _=require(_0x5f68('0x0'));var Promise=require(_0x5f68('0x1'));var rp=require(_0x5f68('0x2'));var util=require(_0x5f68('0x3'));var md5=require(_0x5f68('0x4'));var Redis=require(_0x5f68('0x5'));var intUtil=require(_0x5f68('0x6'));var config=require(_0x5f68('0x7'));var logger=require(_0x5f68('0x8'))(_0x5f68('0x9'));config[_0x5f68('0xa')]=_[_0x5f68('0xb')](config[_0x5f68('0xa')],{'host':_0x5f68('0xc'),'port':0x18eb});var io=require(_0x5f68('0xd'))(new Redis(config[_0x5f68('0xa')]));function getAdminUser(_0x587e05,_0x33d57c,_0x280367,_0x19a8ff,_0x5d26f9,_0x2b6f10){return new Promise(function(_0x39cedd,_0x246ae5){var _0x26cf28={'method':_0x5f68('0xe'),'uri':_0x19a8ff+_0x5f68('0xf')+'&'+_0x5d26f9+'&'+_0x2b6f10,'auth':_0x33d57c,'json':!![]};return rp(_0x26cf28)[_0x5f68('0x10')](function(_0x10f78b){if(_0x10f78b[_0x5f68('0x11')][_0x5f68('0x12')]>0x0){_0x280367[_0x5f68('0x13')]=_0x10f78b[_0x5f68('0x11')][0x0][_0x5f68('0x14')];}logger[_0x5f68('0x15')]('['+[_0x587e05[_0x5f68('0x16')]()]+_0x5f68('0x17'),_0x280367);_0x39cedd(_0x280367);})[_0x5f68('0x18')](function(_0x218551){logger['error']('['+[_0x587e05[_0x5f68('0x16')]()]+']',_0x218551[_0x5f68('0x19')]);_0x246ae5(_0x218551[_0x5f68('0x19')]);});});}function getUser(_0x496704,_0x3ef4d1,_0xcc6810,_0x100fa6,_0x3f1f84){return function(_0xbf0eda){logger[_0x5f68('0x15')]('['+[_0x496704[_0x5f68('0x16')]()]+_0x5f68('0x1a'),_0xbf0eda);return new Promise(function(_0x156f9c,_0x48b6be){if(intUtil[_0x5f68('0x1b')](_0xbf0eda[_0x5f68('0x1c')])){var _0x460fc8={'method':'GET','uri':_0xcc6810+_0x5f68('0x1d')+_0xbf0eda[_0x5f68('0x1c')]+'&'+_0x100fa6+'&'+_0x3f1f84,'auth':_0x3ef4d1,'json':!![]};logger['info']('['+[_0x496704['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x460fc8);return rp(_0x460fc8)[_0x5f68('0x10')](function(_0x3bef07){logger[_0x5f68('0x15')]('['+[_0x496704[_0x5f68('0x16')]()]+_0x5f68('0x1e'),_0x3bef07);if(_0x3bef07[_0x5f68('0x11')][_0x5f68('0x12')]>0x0&&String(_0x3bef07['result'][0x0]['active'])===_0x5f68('0x1f')){_0xbf0eda[_0x5f68('0x20')]=_0x3bef07['result'][0x0][_0x5f68('0x14')];}else{_0xbf0eda[_0x5f68('0x20')]=_0xbf0eda['adminId'];_0xbf0eda[_0x5f68('0x1c')]=_0xbf0eda[_0x5f68('0x21')];}logger[_0x5f68('0x15')]('['+[_0x496704[_0x5f68('0x16')]()]+_0x5f68('0x22'),_0xbf0eda);_0x156f9c(_0xbf0eda);})[_0x5f68('0x18')](function(_0x3aa2d4){logger['error']('['+[_0x496704[_0x5f68('0x16')]()]+']',_0x3aa2d4['message']);_0x48b6be(_0x3aa2d4[_0x5f68('0x19')]);});}else{logger[_0x5f68('0x15')]('['+[_0x496704[_0x5f68('0x16')]()]+']\x20using\x20admin\x20profile');_0xbf0eda[_0x5f68('0x20')]=_0xbf0eda['adminId'];_0xbf0eda['userEmail']=_0xbf0eda[_0x5f68('0x21')];_0x156f9c(_0xbf0eda);}});};}function createEndUser(_0x4c153d,_0x48a25c,_0x34a595,_0x4d2878,_0x53d665){logger[_0x5f68('0x15')]('['+[_0x4c153d[_0x5f68('0x16')]()]+'],\x20createEndUser\x20input\x20crm',_0x34a595);return new Promise(function(_0x5c8742,_0x468e29){var _0x443c68={'method':'POST','uri':_0x4d2878+_0x5f68('0x23')+_0x53d665,'body':{'user_name':_0x34a595['endUserNumber'],'roles':_0x5f68('0x24'),'first_name':_0x34a595['endUserNumber'],'active':_0x5f68('0x1f'),'date_format':'System','phone':_0x34a595[_0x5f68('0x25')]},'auth':_0x48a25c,'json':!![]};return rp(_0x443c68)['then'](function(_0x5d68c3){logger[_0x5f68('0x15')]('['+[_0x4c153d[_0x5f68('0x16')]()]+_0x5f68('0x26'),_0x5d68c3[_0x5f68('0x11')]);_0x34a595[_0x5f68('0x27')]=_0x5d68c3[_0x5f68('0x11')]['sys_id'];_0x5c8742(_0x34a595);})[_0x5f68('0x18')](function(_0x398c71){logger[_0x5f68('0x28')]('['+[_0x4c153d[_0x5f68('0x16')]()]+']',_0x398c71[_0x5f68('0x19')]);_0x468e29(_0x398c71['message']);});});}function getEndUser(_0x167905,_0x673484,_0x10cba6,_0x100bd4,_0xa777e4){return function(_0x3744c9){logger[_0x5f68('0x15')]('['+[_0x167905['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x3744c9);return new Promise(function(_0x4f06df,_0x564f14){var _0x134d59={'method':_0x5f68('0xe'),'uri':_0x10cba6+_0x5f68('0x29')+_0x3744c9[_0x5f68('0x25')]+'&'+_0x100bd4+'&'+_0xa777e4,'auth':_0x673484,'json':!![]};return rp(_0x134d59)[_0x5f68('0x10')](function(_0x2fa673){if(_0x2fa673['result'][_0x5f68('0x12')]>0x0){_0x3744c9['endUserId']=_0x2fa673['result'][0x0][_0x5f68('0x14')];logger[_0x5f68('0x15')]('['+[_0x167905[_0x5f68('0x16')]()]+_0x5f68('0x2a'),_0x3744c9);_0x4f06df(_0x3744c9);}else{return createEndUser(_0x167905,_0x673484,_0x3744c9,_0x10cba6,_0x100bd4)[_0x5f68('0x10')](function(_0x33f929){logger[_0x5f68('0x15')]('['+[_0x167905[_0x5f68('0x16')]()]+_0x5f68('0x2b'),_0x33f929);_0x4f06df(_0x33f929);});}})[_0x5f68('0x18')](function(_0x24ba7a){logger[_0x5f68('0x28')]('['+[_0x167905[_0x5f68('0x16')]()]+']',_0x24ba7a[_0x5f68('0x19')]);_0x564f14(_0x24ba7a[_0x5f68('0x19')]);});});};}function getCustomFields(_0x536373,_0x3c12ec){var _0x3a84cf={};if(_0x536373[_0x5f68('0x12')]>0x0){_[_0x5f68('0x2c')](_0x536373,function(_0x2f738b){if(_['includes']([_0x5f68('0x2d'),_0x5f68('0x2e')],_0x2f738b[_0x5f68('0x2f')])&&_0x2f738b[_0x5f68('0x30')]&&!_0x2f738b[_0x5f68('0x31')]){_0x3a84cf[_0x2f738b[_0x5f68('0x30')]['toLowerCase']()]=_0x2f738b[_0x5f68('0x32')]['toString']();}else if(_['includes']([_0x5f68('0x2d'),'picklist'],_0x2f738b[_0x5f68('0x2f')])&&_0x2f738b[_0x5f68('0x33')]&&_0x2f738b[_0x5f68('0x31')]){_0x3a84cf[_0x2f738b[_0x5f68('0x33')][_0x5f68('0x34')]()]=_0x2f738b[_0x5f68('0x32')][_0x5f68('0x35')]();}else if(_0x2f738b[_0x5f68('0x2f')]===_0x5f68('0x36')&&_0x2f738b[_0x5f68('0x37')]&&_0x2f738b[_0x5f68('0x33')]&&_0x2f738b[_0x5f68('0x31')]){_0x3a84cf[_0x2f738b[_0x5f68('0x33')][_0x5f68('0x34')]()]=_0x3c12ec[_0x2f738b[_0x5f68('0x37')]][_0x5f68('0x35')]();}else if(_0x2f738b[_0x5f68('0x2f')]===_0x5f68('0x38')&&_0x2f738b[_0x5f68('0x39')]&&_0x2f738b[_0x5f68('0x39')]['name']&&_0x2f738b[_0x5f68('0x33')]&&_0x2f738b[_0x5f68('0x31')]){_0x3a84cf[_0x2f738b['idField'][_0x5f68('0x34')]()]=_0x3c12ec[_0x2f738b[_0x5f68('0x39')][_0x5f68('0x3a')][_0x5f68('0x34')]()][_0x5f68('0x35')]();}});}return _0x3a84cf;}function getTicket(_0x4e8fc5,_0x32774c,_0x364eaa,_0x32247e,_0x109cca,_0x2ea10a){return function(_0x55077c){logger[_0x5f68('0x15')]('['+[_0x4e8fc5[_0x5f68('0x16')]()]+_0x5f68('0x3b'),_0x55077c);return new Promise(function(_0x35f4bf,_0x16ca2f){var _0x48d1f2=_0x4e8fc5[_0x5f68('0x34')]()===_0x5f68('0x3c')?_0x55077c[_0x5f68('0x20')]:_0x55077c[_0x5f68('0x27')];var _0x12e2f4={'method':_0x5f68('0x3d'),'uri':_0x364eaa+_0x5f68('0x3e')+'?'+_0x2ea10a,'body':Object[_0x5f68('0x3f')]({},{'active':_0x5f68('0x1f'),'caller_id':_0x48d1f2,'assigned_to':_0x55077c[_0x5f68('0x20')],'short_description':intUtil[_0x5f68('0x40')](_0x32247e[_0x5f68('0x41')],_0x109cca,'\x20'),'description':intUtil[_0x5f68('0x40')](_0x32247e['Descriptions'],_0x109cca,'\x0a')},getCustomFields(_0x32247e['Fields'],_0x109cca)),'auth':_0x32774c,'json':!![]};return rp(_0x12e2f4)[_0x5f68('0x10')](function(_0x5b70c7){logger[_0x5f68('0x15')]('['+[_0x4e8fc5['toUpperCase']()]+_0x5f68('0x42'),_0x5b70c7[_0x5f68('0x11')]);_0x55077c[_0x5f68('0x43')]=_0x5b70c7[_0x5f68('0x11')][_0x5f68('0x14')];_0x55077c[_0x5f68('0x44')]=_0x5b70c7[_0x5f68('0x11')][_0x5f68('0x45')];logger[_0x5f68('0x15')]('['+[_0x4e8fc5[_0x5f68('0x16')]()]+_0x5f68('0x46'),_0x55077c);_0x35f4bf(_0x55077c);})[_0x5f68('0x18')](function(_0x381876){logger[_0x5f68('0x28')]('['+[_0x4e8fc5[_0x5f68('0x16')]()]+']',_0x381876['message']);_0x16ca2f(_0x381876['message']);});});};}function createRemoteTag(_0x420642,_0x2c88a4,_0x45bc66,_0x39866e){return new Promise(function(_0x500988,_0x1c9933){var _0x4fc96d={'method':_0x5f68('0x3d'),'uri':_0x45bc66+_0x5f68('0x47')+'?'+_0x39866e,'body':{'short_description':_0x420642,'global':!![],'active':!![],'name':_0x420642},'auth':_0x2c88a4,'json':!![]};return rp(_0x4fc96d)[_0x5f68('0x10')](function(_0x563bf0){var _0x432edc=_0x563bf0[_0x5f68('0x11')]['sys_id'];_0x500988(_0x432edc);});});}function getRemoteTag(_0x46b1b8,_0x5d066c,_0x3c31fa,_0x1386b8,_0x485516){return new Promise(function(_0x29c874,_0x5f34c3){var _0x581193={'method':_0x5f68('0xe'),'uri':_0x3c31fa+_0x5f68('0x47')+_0x5f68('0x48')+_0x46b1b8+'&'+_0x1386b8,'auth':_0x5d066c,'json':!![]};return rp(_0x581193)[_0x5f68('0x10')](function(_0x305168){if(_0x305168[_0x5f68('0x11')][_0x5f68('0x12')]>0x0){var _0x33e860=_0x305168['result'][0x0]['sys_id'];_0x29c874(_0x33e860);}else{return createRemoteTag(_0x46b1b8,_0x5d066c,_0x3c31fa,_0x1386b8)[_0x5f68('0x10')](function(_0x2f2102){_0x29c874(_0x2f2102);});}});});}function assignTagToIncident(_0x5c41d7,_0x2020ae,_0x4d23f4,_0x25b0c7,_0x163433){return new Promise(function(_0x7d8475,_0x438b64){var _0x45cacb={'method':_0x5f68('0x3d'),'uri':_0x4d23f4+_0x5f68('0x49')+'?'+_0x163433,'body':{'label':_0x5c41d7,'table':_0x5f68('0x3e'),'id_type':_0x5f68('0x4a'),'table_key':_0x25b0c7['ticketId'],'title':_0x5f68('0x4b')+_0x25b0c7['ticketNumber'],'id_display':_0x25b0c7[_0x5f68('0x44')]},'auth':_0x2020ae,'json':!![]};return rp(_0x45cacb)[_0x5f68('0x10')](function(_0x34e2d2){_0x7d8475();})['catch'](function(){_0x7d8475();});});}function manageTags(_0x5337ea,_0x480173,_0x45e81c,_0x47339d,_0x47d12f,_0x8a74bf,_0x523a3c){return new Promise(function(_0x136d98,_0x3e59c9){var _0x2a7296=[];_0x480173[_0x5f68('0x2c')](function(_0x2cd931){_0x2a7296[_0x5f68('0x4c')](getRemoteTag(_0x2cd931,_0x45e81c,_0x47339d,_0x8a74bf,_0x523a3c));});return Promise['all'](_0x2a7296)[_0x5f68('0x10')](function(_0x531148){if(_0x531148['length']){logger[_0x5f68('0x15')]('['+[_0x5337ea[_0x5f68('0x16')]()]+_0x5f68('0x4d'),_0x531148);var _0x2a87ee=[];_0x531148[_0x5f68('0x2c')](function(_0x4d8df9){_0x2a87ee[_0x5f68('0x4c')](assignTagToIncident(_0x4d8df9,_0x45e81c,_0x47339d,_0x47d12f,_0x8a74bf));});return Promise[_0x5f68('0x4e')](_0x2a87ee)[_0x5f68('0x10')](function(){_0x136d98();})[_0x5f68('0x18')](function(){_0x136d98();});}else{_0x136d98();}});});}function getTags(_0x29cc56,_0x37ec32,_0x255172,_0x3b7d3c,_0x207a32,_0x4c3207){return function(_0x597d1e){return new Promise(function(_0x1029f8,_0x519b91){var _0x7e4612=[];var _0x400fa2=_0x3b7d3c[_0x5f68('0x4f')];if(_0x400fa2&&_0x400fa2[_0x5f68('0x12')]>0x0){_0x7e4612=_[_0x5f68('0x50')](_0x400fa2,_0x5f68('0x3a'));}if(_0x7e4612[_0x5f68('0x12')]>0x0){return manageTags(_0x29cc56,_0x7e4612,_0x37ec32,_0x255172,_0x597d1e,_0x207a32,_0x4c3207)[_0x5f68('0x10')](function(){_0x1029f8(_0x597d1e);});}else{_0x1029f8(_0x597d1e);}});};}function emit(_0x39b7cc,_0x1fea20,_0x16a174){var _0x293122=_0x5f68('0x51')+_0x5f68('0x52')+_0x5f68('0x53')+_0x5f68('0x54');var _0x5cf5bb={'uri':_0x39b7cc+_0x5f68('0x55')+_0x16a174+_0x293122};io['to'](util[_0x5f68('0x56')](_0x5f68('0x57'),_0x1fea20))[_0x5f68('0x58')](_0x5f68('0x59'),_0x5cf5bb);}exports['cs']=function(_0x103d08,_0x355788,_0xf12103,_0x459159,_0x38930c,_0x576fd4,_0x43a761,_0x263b69){var _0x4b2c31={};var _0x3f0478={'user':_0x576fd4[_0x5f68('0x5a')],'pass':_0x576fd4[_0x5f68('0x5b')]};var _0x4b1c6b=_0x5f68('0x5c');var _0x4e803d=_0x5f68('0x5d');_0x576fd4[_0x5f68('0x5e')]=intUtil['stripTrailingSlash'](_0x576fd4[_0x5f68('0x5e')]);_0x576fd4[_0x5f68('0x5f')]=intUtil[_0x5f68('0x60')](_0x576fd4[_0x5f68('0x5f')]);var _0x5d9db7=util[_0x5f68('0x56')]('%s/api/now/table/',_0x576fd4[_0x5f68('0x5e')]);_0x4b2c31[_0x5f68('0x1c')]=!_[_0x5f68('0x61')](_0x459159)?_0x459159[_0x5f68('0x62')]:null;_0x4b2c31[_0x5f68('0x21')]=_0x576fd4[_0x5f68('0x62')];_0x4b2c31[_0x5f68('0x25')]=_0x263b69['toLowerCase']()===_0x5f68('0x3c')?_0x355788[_0x5f68('0x63')]:_0x355788[_0x5f68('0x64')];_0x4b2c31[_0x5f68('0x65')]=_0x263b69===_0x5f68('0x66')||_0x263b69===_0x5f68('0x67')?_0x5f68('0x66'):_0x5f68('0x3c');var _0x39da9c=util['format'](_0x5f68('0x68'),_0x576fd4['serverUrl'],_0x355788[_0x5f68('0x69')],md5(_0x355788[_0x5f68('0x69')]));if(_0x38930c&&_0x38930c['monitor_format']){logger[_0x5f68('0x15')]('[QUEUE]',_0x5f68('0x6a'));_0x355788[_0x5f68('0x6b')]=_0x39da9c;}else if(_0x43a761&&_0x43a761[_0x5f68('0x6c')]&&_0x43a761[_0x5f68('0x6c')]!==_0x5f68('0x6d')){logger[_0x5f68('0x15')]('[OUTBOUND]',_0x5f68('0x6a'));_0x355788[_0x5f68('0x6b')]=_0x39da9c;}else{_0x355788['recordingURL']='';}return getAdminUser(_0x263b69,_0x3f0478,_0x4b2c31,_0x5d9db7,_0x4e803d,_0x4b1c6b)[_0x5f68('0x10')](getUser(_0x263b69,_0x3f0478,_0x5d9db7,_0x4e803d,_0x4b1c6b))[_0x5f68('0x10')](getEndUser(_0x263b69,_0x3f0478,_0x5d9db7,_0x4e803d,_0x4b1c6b))[_0x5f68('0x10')](getTicket(_0x263b69,_0x3f0478,_0x5d9db7,_0xf12103,_0x355788,_0x4e803d))[_0x5f68('0x10')](function(_0x1c056e){logger[_0x5f68('0x15')](util[_0x5f68('0x56')]('The\x20ticket\x20ID\x20is:\x20%s',_0x1c056e[_0x5f68('0x43')]));logger[_0x5f68('0x15')](util['format'](_0x5f68('0x6e'),_0x263b69));if(_0x263b69!=='unmanaged'){logger['info']('['+[_0x263b69[_0x5f68('0x16')]()]+']',_0x5f68('0x6f'));emit(_0x576fd4['remoteUri'],_0x459159[_0x5f68('0x3a')],_0x1c056e[_0x5f68('0x43')]);}})[_0x5f68('0x18')](function(_0x31ef1b){logger[_0x5f68('0x28')]('['+[_0x263b69[_0x5f68('0x16')]()]+_0x5f68('0x70'),util[_0x5f68('0x71')](_0x31ef1b,{'showHidden':!![],'depth':null}));});};