Built motion from commit 85328c08.|2.5.50
[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 _0x4d65=['format','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','md5','./util','../../../../config/logger','servicenow','defaults','redis','localhost','socket.io-emitter','GET','then','adminId','result','sys_id','],\x20getAdminUser\x20crm','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','info','],\x20getUser\x20entity','length','active','true','userId','adminEmail','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','nameField','toLowerCase','toString','string','customField','content','variable','variableName','idField','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','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','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','email','calleridnum','queue','unmanaged','outbound'];(function(_0x3235c2,_0x3054ba){var _0x38b1a9=function(_0x37c665){while(--_0x37c665){_0x3235c2['push'](_0x3235c2['shift']());}};_0x38b1a9(++_0x3054ba);}(_0x4d65,0xec));var _0x54d6=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0x4d65[_0x18a79d];return _0x4f8848;};'use strict';var _=require('lodash');var Promise=require(_0x54d6('0x0'));var rp=require(_0x54d6('0x1'));var util=require(_0x54d6('0x2'));var md5=require(_0x54d6('0x3'));var Redis=require('ioredis');var intUtil=require(_0x54d6('0x4'));var config=require('../../../../config/environment');var logger=require(_0x54d6('0x5'))(_0x54d6('0x6'));config['redis']=_[_0x54d6('0x7')](config[_0x54d6('0x8')],{'host':_0x54d6('0x9'),'port':0x18eb});var io=require(_0x54d6('0xa'))(new Redis(config[_0x54d6('0x8')]));function getAdminUser(_0x33c570,_0x344d11,_0x5a1cc6,_0x1c752b,_0x33f8fa,_0x8e9891){return new Promise(function(_0x40cca0,_0xa0902b){var _0x269a46={'method':_0x54d6('0xb'),'uri':_0x1c752b+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x33f8fa+'&'+_0x8e9891,'auth':_0x344d11,'json':!![]};return rp(_0x269a46)[_0x54d6('0xc')](function(_0x3bc8c2){if(_0x3bc8c2['result']['length']>0x0){_0x5a1cc6[_0x54d6('0xd')]=_0x3bc8c2[_0x54d6('0xe')][0x0][_0x54d6('0xf')];}logger['info']('['+[_0x33c570['toUpperCase']()]+_0x54d6('0x10'),_0x5a1cc6);_0x40cca0(_0x5a1cc6);})['catch'](function(_0x2b22d6){logger[_0x54d6('0x11')]('['+[_0x33c570[_0x54d6('0x12')]()]+']',_0x2b22d6[_0x54d6('0x13')]);_0xa0902b(_0x2b22d6['message']);});});}function getUser(_0x3ec591,_0x52fe7d,_0x3a8dcb,_0x269ebd,_0x181d6a){return function(_0x1f86c0){logger['info']('['+[_0x3ec591[_0x54d6('0x12')]()]+_0x54d6('0x14'),_0x1f86c0);return new Promise(function(_0x5e240f,_0x31eb23){if(intUtil[_0x54d6('0x15')](_0x1f86c0[_0x54d6('0x16')])){var _0x188bd4={'method':_0x54d6('0xb'),'uri':_0x3a8dcb+_0x54d6('0x17')+_0x1f86c0['userEmail']+'&'+_0x269ebd+'&'+_0x181d6a,'auth':_0x52fe7d,'json':!![]};logger['info']('['+[_0x3ec591[_0x54d6('0x12')]()]+_0x54d6('0x18'),_0x188bd4);return rp(_0x188bd4)[_0x54d6('0xc')](function(_0x349f85){logger[_0x54d6('0x19')]('['+[_0x3ec591[_0x54d6('0x12')]()]+_0x54d6('0x1a'),_0x349f85);if(_0x349f85['result'][_0x54d6('0x1b')]>0x0&&String(_0x349f85[_0x54d6('0xe')][0x0][_0x54d6('0x1c')])===_0x54d6('0x1d')){_0x1f86c0[_0x54d6('0x1e')]=_0x349f85[_0x54d6('0xe')][0x0]['sys_id'];}else{_0x1f86c0[_0x54d6('0x1e')]=_0x1f86c0[_0x54d6('0xd')];_0x1f86c0[_0x54d6('0x16')]=_0x1f86c0[_0x54d6('0x1f')];}logger[_0x54d6('0x19')]('['+[_0x3ec591[_0x54d6('0x12')]()]+'],\x20getUser\x20crm',_0x1f86c0);_0x5e240f(_0x1f86c0);})[_0x54d6('0x20')](function(_0x3a1819){logger[_0x54d6('0x11')]('['+[_0x3ec591[_0x54d6('0x12')]()]+']',_0x3a1819[_0x54d6('0x13')]);_0x31eb23(_0x3a1819[_0x54d6('0x13')]);});}else{logger[_0x54d6('0x19')]('['+[_0x3ec591[_0x54d6('0x12')]()]+_0x54d6('0x21'));_0x1f86c0[_0x54d6('0x1e')]=_0x1f86c0[_0x54d6('0xd')];_0x1f86c0[_0x54d6('0x16')]=_0x1f86c0[_0x54d6('0x1f')];_0x5e240f(_0x1f86c0);}});};}function createEndUser(_0x29671f,_0x6a98f6,_0x4aca0d,_0x4100e5,_0x454ba6){logger[_0x54d6('0x19')]('['+[_0x29671f['toUpperCase']()]+_0x54d6('0x22'),_0x4aca0d);return new Promise(function(_0x5cf889,_0x52f3ea){var _0x212f0e={'method':_0x54d6('0x23'),'uri':_0x4100e5+'sys_user?'+_0x454ba6,'body':{'user_name':_0x4aca0d[_0x54d6('0x24')],'roles':_0x54d6('0x25'),'first_name':_0x4aca0d[_0x54d6('0x24')],'active':'true','date_format':'System','phone':_0x4aca0d[_0x54d6('0x24')]},'auth':_0x6a98f6,'json':!![]};return rp(_0x212f0e)[_0x54d6('0xc')](function(_0x2278d5){logger['info']('['+[_0x29671f[_0x54d6('0x12')]()]+'],\x20EndUser\x20schema',_0x2278d5['result']);_0x4aca0d[_0x54d6('0x26')]=_0x2278d5[_0x54d6('0xe')][_0x54d6('0xf')];_0x5cf889(_0x4aca0d);})[_0x54d6('0x20')](function(_0xfd1f94){logger['error']('['+[_0x29671f[_0x54d6('0x12')]()]+']',_0xfd1f94['message']);_0x52f3ea(_0xfd1f94[_0x54d6('0x13')]);});});}function getEndUser(_0x4ce600,_0x188406,_0x533685,_0x1cae7d,_0x626d34){return function(_0x273673){logger[_0x54d6('0x19')]('['+[_0x4ce600[_0x54d6('0x12')]()]+_0x54d6('0x27'),_0x273673);return new Promise(function(_0x32f01b,_0x32653d){var _0x493b27={'method':_0x54d6('0xb'),'uri':_0x533685+_0x54d6('0x28')+_0x273673[_0x54d6('0x24')]+'&'+_0x1cae7d+'&'+_0x626d34,'auth':_0x188406,'json':!![]};return rp(_0x493b27)['then'](function(_0x2e4f8f){if(_0x2e4f8f['result']['length']>0x0){_0x273673[_0x54d6('0x26')]=_0x2e4f8f[_0x54d6('0xe')][0x0]['sys_id'];logger[_0x54d6('0x19')]('['+[_0x4ce600[_0x54d6('0x12')]()]+_0x54d6('0x29'),_0x273673);_0x32f01b(_0x273673);}else{return createEndUser(_0x4ce600,_0x188406,_0x273673,_0x533685,_0x1cae7d)[_0x54d6('0xc')](function(_0x3aeac2){logger[_0x54d6('0x19')]('['+[_0x4ce600[_0x54d6('0x12')]()]+_0x54d6('0x2a'),_0x3aeac2);_0x32f01b(_0x3aeac2);});}})[_0x54d6('0x20')](function(_0xc7286d){logger[_0x54d6('0x11')]('['+[_0x4ce600[_0x54d6('0x12')]()]+']',_0xc7286d[_0x54d6('0x13')]);_0x32653d(_0xc7286d[_0x54d6('0x13')]);});});};}function getCustomFields(_0x230373,_0x44157f){var _0x19450a={};if(_0x230373[_0x54d6('0x1b')]>0x0){_[_0x54d6('0x2b')](_0x230373,function(_0x3cfcf7){if(_[_0x54d6('0x2c')](['string',_0x54d6('0x2d')],_0x3cfcf7[_0x54d6('0x2e')])&&_0x3cfcf7[_0x54d6('0x2f')]&&!_0x3cfcf7['customField']){_0x19450a[_0x3cfcf7['nameField'][_0x54d6('0x30')]()]=_0x3cfcf7['content'][_0x54d6('0x31')]();}else if(_[_0x54d6('0x2c')]([_0x54d6('0x32'),_0x54d6('0x2d')],_0x3cfcf7[_0x54d6('0x2e')])&&_0x3cfcf7['idField']&&_0x3cfcf7[_0x54d6('0x33')]){_0x19450a[_0x3cfcf7['idField'][_0x54d6('0x30')]()]=_0x3cfcf7[_0x54d6('0x34')][_0x54d6('0x31')]();}else if(_0x3cfcf7[_0x54d6('0x2e')]===_0x54d6('0x35')&&_0x3cfcf7[_0x54d6('0x36')]&&_0x3cfcf7[_0x54d6('0x37')]&&_0x3cfcf7[_0x54d6('0x33')]){_0x19450a[_0x3cfcf7[_0x54d6('0x37')][_0x54d6('0x30')]()]=_0x44157f[_0x3cfcf7[_0x54d6('0x36')]][_0x54d6('0x31')]();}else if(_0x3cfcf7['type']===_0x54d6('0x38')&&_0x3cfcf7[_0x54d6('0x39')]&&_0x3cfcf7['Variable'][_0x54d6('0x3a')]&&_0x3cfcf7[_0x54d6('0x37')]&&_0x3cfcf7[_0x54d6('0x33')]){_0x19450a[_0x3cfcf7[_0x54d6('0x37')][_0x54d6('0x30')]()]=_0x44157f[_0x3cfcf7['Variable'][_0x54d6('0x3a')]['toLowerCase']()]['toString']();}});}return _0x19450a;}function getTicket(_0x391fb7,_0x3937c7,_0x65dd24,_0x1a1395,_0xfa7951,_0x262642){return function(_0x8de3a6){logger[_0x54d6('0x19')]('['+[_0x391fb7[_0x54d6('0x12')]()]+_0x54d6('0x3b'),_0x8de3a6);return new Promise(function(_0x9a06ac,_0xe1b0b2){var _0x27ea54=_0x391fb7[_0x54d6('0x30')]()==='outbound'?_0x8de3a6['userId']:_0x8de3a6['endUserId'];var _0x2be251={'method':_0x54d6('0x23'),'uri':_0x65dd24+_0x54d6('0x3c')+'?'+_0x262642,'body':Object['assign']({},{'active':_0x54d6('0x1d'),'caller_id':_0x27ea54,'assigned_to':_0x8de3a6[_0x54d6('0x1e')],'short_description':intUtil[_0x54d6('0x3d')](_0x1a1395[_0x54d6('0x3e')],_0xfa7951,'\x20'),'description':intUtil[_0x54d6('0x3d')](_0x1a1395[_0x54d6('0x3f')],_0xfa7951,'\x0a')},getCustomFields(_0x1a1395[_0x54d6('0x40')],_0xfa7951)),'auth':_0x3937c7,'json':!![]};return rp(_0x2be251)[_0x54d6('0xc')](function(_0x33f4b5){logger[_0x54d6('0x19')]('['+[_0x391fb7[_0x54d6('0x12')]()]+_0x54d6('0x41'),_0x33f4b5[_0x54d6('0xe')]);_0x8de3a6[_0x54d6('0x42')]=_0x33f4b5[_0x54d6('0xe')][_0x54d6('0xf')];_0x8de3a6['ticketNumber']=_0x33f4b5['result'][_0x54d6('0x43')];logger['info']('['+[_0x391fb7[_0x54d6('0x12')]()]+_0x54d6('0x44'),_0x8de3a6);_0x9a06ac(_0x8de3a6);})[_0x54d6('0x20')](function(_0x4d0be0){logger[_0x54d6('0x11')]('['+[_0x391fb7[_0x54d6('0x12')]()]+']',_0x4d0be0['message']);_0xe1b0b2(_0x4d0be0[_0x54d6('0x13')]);});});};}function createRemoteTag(_0xdbeb5c,_0x5da022,_0x4a3a05,_0xc5e34b){return new Promise(function(_0x5dcbb2,_0x23b6f6){var _0x1c66cb={'method':'POST','uri':_0x4a3a05+_0x54d6('0x45')+'?'+_0xc5e34b,'body':{'short_description':_0xdbeb5c,'global':!![],'active':!![],'name':_0xdbeb5c},'auth':_0x5da022,'json':!![]};return rp(_0x1c66cb)[_0x54d6('0xc')](function(_0x4a14a6){var _0x2e41d5=_0x4a14a6[_0x54d6('0xe')]['sys_id'];_0x5dcbb2(_0x2e41d5);});});}function getRemoteTag(_0xba9cb6,_0x4c7383,_0x47e760,_0x2f88e6,_0x10cff6){return new Promise(function(_0x4d9fe0,_0x5bc6b8){var _0x38479d={'method':'GET','uri':_0x47e760+'label'+_0x54d6('0x46')+_0xba9cb6+'&'+_0x2f88e6,'auth':_0x4c7383,'json':!![]};return rp(_0x38479d)[_0x54d6('0xc')](function(_0x3af50){if(_0x3af50[_0x54d6('0xe')][_0x54d6('0x1b')]>0x0){var _0x375ad4=_0x3af50[_0x54d6('0xe')][0x0][_0x54d6('0xf')];_0x4d9fe0(_0x375ad4);}else{return createRemoteTag(_0xba9cb6,_0x4c7383,_0x47e760,_0x2f88e6)['then'](function(_0x3a4ffe){_0x4d9fe0(_0x3a4ffe);});}});});}function assignTagToIncident(_0x84926e,_0x41092d,_0x48745e,_0x1eb8c4,_0x307ac2){return new Promise(function(_0x376a11,_0x5c2869){var _0x5b35a0={'method':'POST','uri':_0x48745e+_0x54d6('0x47')+'?'+_0x307ac2,'body':{'label':_0x84926e,'table':_0x54d6('0x3c'),'id_type':_0x54d6('0x48'),'table_key':_0x1eb8c4[_0x54d6('0x42')],'title':_0x54d6('0x49')+_0x1eb8c4[_0x54d6('0x4a')],'id_display':_0x1eb8c4[_0x54d6('0x4a')]},'auth':_0x41092d,'json':!![]};return rp(_0x5b35a0)['then'](function(_0xb4e436){_0x376a11();})[_0x54d6('0x20')](function(){_0x376a11();});});}function manageTags(_0x1b96b7,_0x1ba8c6,_0x17ffb1,_0x491bdf,_0x5e7c2a,_0x4f013d,_0x59515f){return new Promise(function(_0x3706b4,_0x4815b9){var _0x420fe4=[];_0x1ba8c6[_0x54d6('0x2b')](function(_0x35bc43){_0x420fe4[_0x54d6('0x4b')](getRemoteTag(_0x35bc43,_0x17ffb1,_0x491bdf,_0x4f013d,_0x59515f));});return Promise[_0x54d6('0x4c')](_0x420fe4)['then'](function(_0x421f64){if(_0x421f64[_0x54d6('0x1b')]){logger[_0x54d6('0x19')]('['+[_0x1b96b7[_0x54d6('0x12')]()]+_0x54d6('0x4d'),_0x421f64);var _0x4019ab=[];_0x421f64[_0x54d6('0x2b')](function(_0x2e8a05){_0x4019ab[_0x54d6('0x4b')](assignTagToIncident(_0x2e8a05,_0x17ffb1,_0x491bdf,_0x5e7c2a,_0x4f013d));});return Promise[_0x54d6('0x4c')](_0x4019ab)[_0x54d6('0xc')](function(){_0x3706b4();})[_0x54d6('0x20')](function(){_0x3706b4();});}else{_0x3706b4();}});});}function getTags(_0x16956d,_0x447109,_0x5b3206,_0x2f22a2,_0x52bc88,_0x292029){return function(_0x5a2b31){return new Promise(function(_0x4a145a,_0x320ccd){var _0x2a9b31=[];var _0x6d645e=_0x2f22a2[_0x54d6('0x4e')];if(_0x6d645e&&_0x6d645e[_0x54d6('0x1b')]>0x0){_0x2a9b31=_[_0x54d6('0x4f')](_0x6d645e,_0x54d6('0x3a'));}if(_0x2a9b31[_0x54d6('0x1b')]>0x0){return manageTags(_0x16956d,_0x2a9b31,_0x447109,_0x5b3206,_0x5a2b31,_0x52bc88,_0x292029)[_0x54d6('0xc')](function(){_0x4a145a(_0x5a2b31);});}else{_0x4a145a(_0x5a2b31);}});};}function emit(_0x1a6262,_0x140dc6,_0x91b714){var _0x4838e4=_0x54d6('0x50')+_0x54d6('0x51')+_0x54d6('0x52')+_0x54d6('0x53');var _0x362e40={'uri':_0x1a6262+_0x54d6('0x54')+_0x91b714+_0x4838e4};io['to'](util['format'](_0x54d6('0x55'),_0x140dc6))[_0x54d6('0x56')](_0x54d6('0x57'),_0x362e40);}exports['cs']=function(_0x548a17,_0x4aed2c,_0x2fb322,_0x1413ce,_0x2fe010,_0x2cee23,_0x5a94eb,_0x3c9459){var _0x42eb3f={};var _0xc2b758={'user':_0x2cee23[_0x54d6('0x58')],'pass':_0x2cee23['password']};var _0x1d6203=_0x54d6('0x59');var _0x5d8eb4=_0x54d6('0x5a');_0x2cee23[_0x54d6('0x5b')]=intUtil['stripTrailingSlash'](_0x2cee23[_0x54d6('0x5b')]);_0x2cee23[_0x54d6('0x5c')]=intUtil[_0x54d6('0x5d')](_0x2cee23['serverUrl']);var _0x1c716e=util['format'](_0x54d6('0x5e'),_0x2cee23[_0x54d6('0x5b')]);_0x42eb3f['userEmail']=!_['isNil'](_0x1413ce)?_0x1413ce[_0x54d6('0x5f')]:null;_0x42eb3f[_0x54d6('0x1f')]=_0x2cee23[_0x54d6('0x5f')];_0x42eb3f[_0x54d6('0x24')]=_0x3c9459[_0x54d6('0x30')]()==='outbound'?_0x4aed2c['destcalleridnum']:_0x4aed2c[_0x54d6('0x60')];_0x42eb3f['callDirection']=_0x3c9459===_0x54d6('0x61')||_0x3c9459===_0x54d6('0x62')?_0x54d6('0x61'):_0x54d6('0x63');var _0x3ff33c=util[_0x54d6('0x64')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2cee23['serverUrl'],_0x4aed2c[_0x54d6('0x65')],md5(_0x4aed2c[_0x54d6('0x65')]));if(_0x2fe010&&_0x2fe010[_0x54d6('0x66')]){logger['info']('[QUEUE]',_0x54d6('0x67'));_0x4aed2c['recordingURL']=_0x3ff33c;}else if(_0x5a94eb&&_0x5a94eb[_0x54d6('0x68')]&&_0x5a94eb[_0x54d6('0x68')]!==_0x54d6('0x69')){logger[_0x54d6('0x19')](_0x54d6('0x6a'),'Recording\x20is\x20enabled!');_0x4aed2c[_0x54d6('0x6b')]=_0x3ff33c;}else{_0x4aed2c[_0x54d6('0x6b')]='';}return getAdminUser(_0x3c9459,_0xc2b758,_0x42eb3f,_0x1c716e,_0x5d8eb4,_0x1d6203)[_0x54d6('0xc')](getUser(_0x3c9459,_0xc2b758,_0x1c716e,_0x5d8eb4,_0x1d6203))[_0x54d6('0xc')](getEndUser(_0x3c9459,_0xc2b758,_0x1c716e,_0x5d8eb4,_0x1d6203))[_0x54d6('0xc')](getTicket(_0x3c9459,_0xc2b758,_0x1c716e,_0x2fb322,_0x4aed2c,_0x5d8eb4))['then'](function(_0x1fcd8f){logger[_0x54d6('0x19')](util[_0x54d6('0x64')](_0x54d6('0x6c'),_0x1fcd8f['ticketId']));logger['info'](util[_0x54d6('0x64')](_0x54d6('0x6d'),_0x3c9459));if(_0x3c9459!==_0x54d6('0x62')){logger[_0x54d6('0x19')]('['+[_0x3c9459[_0x54d6('0x12')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2cee23[_0x54d6('0x5b')],_0x1413ce[_0x54d6('0x3a')],_0x1fcd8f[_0x54d6('0x42')]);}})[_0x54d6('0x20')](function(_0x452b0e){logger['error']('['+[_0x3c9459[_0x54d6('0x12')]()]+_0x54d6('0x6e'),util[_0x54d6('0x6f')](_0x452b0e,{'showHidden':!![],'depth':null}));});};