28a4bfaa736047d62eedc25ea3f112f5b752c34c
[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 _0x6a95=['label','label_entry','Incident','ticketId','Incident\x20-\x20','ticketNumber','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','%s/api/now/table/','isNil','email','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','recordingFormat','none','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','true','userId','adminEmail',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','number',']\x20getTicket\x20crm'];(function(_0x15681c,_0x1de42e){var _0x1cddf6=function(_0x38a706){while(--_0x38a706){_0x15681c['push'](_0x15681c['shift']());}};_0x1cddf6(++_0x1de42e);}(_0x6a95,0x1db));var _0x56a9=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x6a95[_0x1c546c];return _0x2cc384;};'use strict';var _=require(_0x56a9('0x0'));var Promise=require(_0x56a9('0x1'));var rp=require(_0x56a9('0x2'));var util=require(_0x56a9('0x3'));var md5=require(_0x56a9('0x4'));var Redis=require(_0x56a9('0x5'));var intUtil=require(_0x56a9('0x6'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x56a9('0x7'));config[_0x56a9('0x8')]=_[_0x56a9('0x9')](config[_0x56a9('0x8')],{'host':_0x56a9('0xa'),'port':0x18eb});var io=require(_0x56a9('0xb'))(new Redis(config[_0x56a9('0x8')]));function getAdminUser(_0x5d3e80,_0x5f0dcb,_0x3ac626,_0x15f2ff,_0x58caab,_0xe4b98c){return new Promise(function(_0x1eddfd,_0x2d590d){var _0xcf7c={'method':_0x56a9('0xc'),'uri':_0x15f2ff+_0x56a9('0xd')+'&'+_0x58caab+'&'+_0xe4b98c,'auth':_0x5f0dcb,'json':!![]};return rp(_0xcf7c)[_0x56a9('0xe')](function(_0x3b0b0d){if(_0x3b0b0d[_0x56a9('0xf')]['length']>0x0){_0x3ac626[_0x56a9('0x10')]=_0x3b0b0d['result'][0x0][_0x56a9('0x11')];}logger[_0x56a9('0x12')]('['+[_0x5d3e80[_0x56a9('0x13')]()]+_0x56a9('0x14'),_0x3ac626);_0x1eddfd(_0x3ac626);})[_0x56a9('0x15')](function(_0x194069){logger[_0x56a9('0x16')]('['+[_0x5d3e80[_0x56a9('0x13')]()]+']',_0x194069[_0x56a9('0x17')]);_0x2d590d(_0x194069['message']);});});}function getUser(_0x582a5b,_0x2e0dfd,_0x2a0714,_0x42007b,_0x46f854){return function(_0x5b2637){logger[_0x56a9('0x12')]('['+[_0x582a5b['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x5b2637);return new Promise(function(_0x4e292f,_0x312e58){if(intUtil[_0x56a9('0x18')](_0x5b2637[_0x56a9('0x19')])){var _0x105fe5={'method':_0x56a9('0xc'),'uri':_0x2a0714+_0x56a9('0x1a')+_0x5b2637[_0x56a9('0x19')]+'&'+_0x42007b+'&'+_0x46f854,'auth':_0x2e0dfd,'json':!![]};logger[_0x56a9('0x12')]('['+[_0x582a5b[_0x56a9('0x13')]()]+_0x56a9('0x1b'),_0x105fe5);return rp(_0x105fe5)[_0x56a9('0xe')](function(_0x62f79f){logger['info']('['+[_0x582a5b['toUpperCase']()]+_0x56a9('0x1c'),_0x62f79f);if(_0x62f79f[_0x56a9('0xf')][_0x56a9('0x1d')]>0x0&&String(_0x62f79f[_0x56a9('0xf')][0x0]['active'])===_0x56a9('0x1e')){_0x5b2637[_0x56a9('0x1f')]=_0x62f79f[_0x56a9('0xf')][0x0][_0x56a9('0x11')];}else{_0x5b2637['userId']=_0x5b2637[_0x56a9('0x10')];_0x5b2637[_0x56a9('0x19')]=_0x5b2637[_0x56a9('0x20')];}logger[_0x56a9('0x12')]('['+[_0x582a5b[_0x56a9('0x13')]()]+'],\x20getUser\x20crm',_0x5b2637);_0x4e292f(_0x5b2637);})[_0x56a9('0x15')](function(_0x217bda){logger[_0x56a9('0x16')]('['+[_0x582a5b['toUpperCase']()]+']',_0x217bda[_0x56a9('0x17')]);_0x312e58(_0x217bda['message']);});}else{logger[_0x56a9('0x12')]('['+[_0x582a5b[_0x56a9('0x13')]()]+_0x56a9('0x21'));_0x5b2637[_0x56a9('0x1f')]=_0x5b2637[_0x56a9('0x10')];_0x5b2637[_0x56a9('0x19')]=_0x5b2637[_0x56a9('0x20')];_0x4e292f(_0x5b2637);}});};}function createEndUser(_0xff5f55,_0x51fd64,_0x437ccf,_0x2bb1eb,_0x5f23e1){logger[_0x56a9('0x12')]('['+[_0xff5f55['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x437ccf);return new Promise(function(_0x20d940,_0x4c1e3e){var _0x2f933a={'method':_0x56a9('0x22'),'uri':_0x2bb1eb+_0x56a9('0x23')+_0x5f23e1,'body':{'user_name':_0x437ccf[_0x56a9('0x24')],'roles':'user','first_name':_0x437ccf[_0x56a9('0x24')],'active':_0x56a9('0x1e'),'date_format':_0x56a9('0x25'),'phone':_0x437ccf[_0x56a9('0x24')]},'auth':_0x51fd64,'json':!![]};return rp(_0x2f933a)[_0x56a9('0xe')](function(_0x1fa0a6){logger[_0x56a9('0x12')]('['+[_0xff5f55[_0x56a9('0x13')]()]+_0x56a9('0x26'),_0x1fa0a6[_0x56a9('0xf')]);_0x437ccf[_0x56a9('0x27')]=_0x1fa0a6[_0x56a9('0xf')]['sys_id'];_0x20d940(_0x437ccf);})[_0x56a9('0x15')](function(_0x1bb817){logger[_0x56a9('0x16')]('['+[_0xff5f55['toUpperCase']()]+']',_0x1bb817[_0x56a9('0x17')]);_0x4c1e3e(_0x1bb817['message']);});});}function getEndUser(_0x517380,_0x5732fb,_0x33af11,_0x134dfc,_0x5914b5){return function(_0x5473cb){logger[_0x56a9('0x12')]('['+[_0x517380[_0x56a9('0x13')]()]+_0x56a9('0x28'),_0x5473cb);return new Promise(function(_0x310b30,_0x259717){var _0x239601={'method':_0x56a9('0xc'),'uri':_0x33af11+_0x56a9('0x29')+_0x5473cb[_0x56a9('0x24')]+'&'+_0x134dfc+'&'+_0x5914b5,'auth':_0x5732fb,'json':!![]};return rp(_0x239601)[_0x56a9('0xe')](function(_0x500e9a){if(_0x500e9a['result']['length']>0x0){_0x5473cb['endUserId']=_0x500e9a[_0x56a9('0xf')][0x0][_0x56a9('0x11')];logger['info']('['+[_0x517380[_0x56a9('0x13')]()]+_0x56a9('0x2a'),_0x5473cb);_0x310b30(_0x5473cb);}else{return createEndUser(_0x517380,_0x5732fb,_0x5473cb,_0x33af11,_0x134dfc)[_0x56a9('0xe')](function(_0x202ebc){logger[_0x56a9('0x12')]('['+[_0x517380[_0x56a9('0x13')]()]+_0x56a9('0x2b'),_0x202ebc);_0x310b30(_0x202ebc);});}})['catch'](function(_0x4630c7){logger[_0x56a9('0x16')]('['+[_0x517380['toUpperCase']()]+']',_0x4630c7['message']);_0x259717(_0x4630c7[_0x56a9('0x17')]);});});};}function getCustomFields(_0x1180c6,_0x1534d7){var _0x3ee429={};if(_0x1180c6[_0x56a9('0x1d')]>0x0){_[_0x56a9('0x2c')](_0x1180c6,function(_0x28c2fb){if(_[_0x56a9('0x2d')]([_0x56a9('0x2e'),_0x56a9('0x2f')],_0x28c2fb[_0x56a9('0x30')])&&_0x28c2fb[_0x56a9('0x31')]&&!_0x28c2fb[_0x56a9('0x32')]){_0x3ee429[_0x28c2fb[_0x56a9('0x31')][_0x56a9('0x33')]()]=_0x28c2fb[_0x56a9('0x34')][_0x56a9('0x35')]();}else if(_[_0x56a9('0x2d')](['string',_0x56a9('0x2f')],_0x28c2fb[_0x56a9('0x30')])&&_0x28c2fb[_0x56a9('0x36')]&&_0x28c2fb['customField']){_0x3ee429[_0x28c2fb[_0x56a9('0x36')]['toLowerCase']()]=_0x28c2fb[_0x56a9('0x34')]['toString']();}else if(_0x28c2fb[_0x56a9('0x30')]===_0x56a9('0x37')&&_0x28c2fb[_0x56a9('0x38')]&&_0x28c2fb[_0x56a9('0x36')]&&_0x28c2fb['customField']){_0x3ee429[_0x28c2fb['idField']['toLowerCase']()]=_0x1534d7[_0x28c2fb[_0x56a9('0x38')]][_0x56a9('0x35')]();}else if(_0x28c2fb[_0x56a9('0x30')]===_0x56a9('0x39')&&_0x28c2fb[_0x56a9('0x3a')]&&_0x28c2fb[_0x56a9('0x3a')][_0x56a9('0x3b')]&&_0x28c2fb[_0x56a9('0x36')]&&_0x28c2fb[_0x56a9('0x32')]){_0x3ee429[_0x28c2fb[_0x56a9('0x36')][_0x56a9('0x33')]()]=_0x1534d7[_0x28c2fb[_0x56a9('0x3a')][_0x56a9('0x3b')][_0x56a9('0x33')]()]['toString']();}});}return _0x3ee429;}function getTicket(_0xa9e8cb,_0x6c36ff,_0xac6e2b,_0x5dd24d,_0x468ab5,_0x39915f){return function(_0x57fa9b){logger[_0x56a9('0x12')]('['+[_0xa9e8cb[_0x56a9('0x13')]()]+_0x56a9('0x3c'),_0x57fa9b);return new Promise(function(_0x208452,_0x5bd85a){var _0x3dc0df=_0xa9e8cb[_0x56a9('0x33')]()===_0x56a9('0x3d')?_0x57fa9b[_0x56a9('0x1f')]:_0x57fa9b[_0x56a9('0x27')];var _0x3942d8={'method':_0x56a9('0x22'),'uri':_0xac6e2b+_0x56a9('0x3e')+'?'+_0x39915f,'body':Object[_0x56a9('0x3f')]({},{'active':_0x56a9('0x1e'),'caller_id':_0x3dc0df,'assigned_to':_0x57fa9b[_0x56a9('0x1f')],'short_description':intUtil['getString'](_0x5dd24d['Subjects'],_0x468ab5,'\x20'),'description':intUtil[_0x56a9('0x40')](_0x5dd24d[_0x56a9('0x41')],_0x468ab5,'\x0a')},getCustomFields(_0x5dd24d[_0x56a9('0x42')],_0x468ab5)),'auth':_0x6c36ff,'json':!![]};return rp(_0x3942d8)[_0x56a9('0xe')](function(_0x4a3cd3){logger[_0x56a9('0x12')]('['+[_0xa9e8cb[_0x56a9('0x13')]()]+_0x56a9('0x43'),_0x4a3cd3[_0x56a9('0xf')]);_0x57fa9b['ticketId']=_0x4a3cd3[_0x56a9('0xf')][_0x56a9('0x11')];_0x57fa9b['ticketNumber']=_0x4a3cd3[_0x56a9('0xf')][_0x56a9('0x44')];logger['info']('['+[_0xa9e8cb[_0x56a9('0x13')]()]+_0x56a9('0x45'),_0x57fa9b);_0x208452(_0x57fa9b);})[_0x56a9('0x15')](function(_0x1176cc){logger['error']('['+[_0xa9e8cb['toUpperCase']()]+']',_0x1176cc[_0x56a9('0x17')]);_0x5bd85a(_0x1176cc[_0x56a9('0x17')]);});});};}function createRemoteTag(_0x3a165b,_0x124cd9,_0x40e660,_0xce9dc0){return new Promise(function(_0x798b4e,_0x217f5f){var _0x3f7714={'method':_0x56a9('0x22'),'uri':_0x40e660+'label'+'?'+_0xce9dc0,'body':{'short_description':_0x3a165b,'global':!![],'active':!![],'name':_0x3a165b},'auth':_0x124cd9,'json':!![]};return rp(_0x3f7714)[_0x56a9('0xe')](function(_0x20ce89){var _0x3a80af=_0x20ce89[_0x56a9('0xf')][_0x56a9('0x11')];_0x798b4e(_0x3a80af);});});}function getRemoteTag(_0x112931,_0x33d054,_0x488577,_0x870aa5,_0x25e8fe){return new Promise(function(_0x3bb012,_0x2f377d){var _0x4334bf={'method':_0x56a9('0xc'),'uri':_0x488577+_0x56a9('0x46')+'?sysparm_query=name%3D'+_0x112931+'&'+_0x870aa5,'auth':_0x33d054,'json':!![]};return rp(_0x4334bf)[_0x56a9('0xe')](function(_0x5667e4){if(_0x5667e4['result'][_0x56a9('0x1d')]>0x0){var _0x5eba1f=_0x5667e4[_0x56a9('0xf')][0x0][_0x56a9('0x11')];_0x3bb012(_0x5eba1f);}else{return createRemoteTag(_0x112931,_0x33d054,_0x488577,_0x870aa5)[_0x56a9('0xe')](function(_0xfcc413){_0x3bb012(_0xfcc413);});}});});}function assignTagToIncident(_0x25579b,_0x3e6f16,_0x1628a5,_0xa3850f,_0x91bad6){return new Promise(function(_0x53cd74,_0x38ddca){var _0x2b72ca={'method':_0x56a9('0x22'),'uri':_0x1628a5+_0x56a9('0x47')+'?'+_0x91bad6,'body':{'label':_0x25579b,'table':_0x56a9('0x3e'),'id_type':_0x56a9('0x48'),'table_key':_0xa3850f[_0x56a9('0x49')],'title':_0x56a9('0x4a')+_0xa3850f[_0x56a9('0x4b')],'id_display':_0xa3850f[_0x56a9('0x4b')]},'auth':_0x3e6f16,'json':!![]};return rp(_0x2b72ca)['then'](function(_0x359c9c){_0x53cd74();})[_0x56a9('0x15')](function(){_0x53cd74();});});}function manageTags(_0x38e497,_0x47e4f7,_0x2d54fe,_0x31c391,_0x39a7c0,_0x4b8b7d,_0x57d1d9){return new Promise(function(_0x1a1239,_0xe9c6e6){var _0x302aa0=[];_0x47e4f7[_0x56a9('0x2c')](function(_0x3fc6eb){_0x302aa0['push'](getRemoteTag(_0x3fc6eb,_0x2d54fe,_0x31c391,_0x4b8b7d,_0x57d1d9));});return Promise[_0x56a9('0x4c')](_0x302aa0)['then'](function(_0x352f1c){if(_0x352f1c[_0x56a9('0x1d')]){logger[_0x56a9('0x12')]('['+[_0x38e497[_0x56a9('0x13')]()]+_0x56a9('0x4d'),_0x352f1c);var _0x5edf65=[];_0x352f1c['forEach'](function(_0x4857c4){_0x5edf65[_0x56a9('0x4e')](assignTagToIncident(_0x4857c4,_0x2d54fe,_0x31c391,_0x39a7c0,_0x4b8b7d));});return Promise[_0x56a9('0x4c')](_0x5edf65)[_0x56a9('0xe')](function(){_0x1a1239();})['catch'](function(){_0x1a1239();});}else{_0x1a1239();}});});}function getTags(_0x2313c4,_0x54ebf4,_0x376245,_0x38cd2d,_0x1f416f,_0x5c114d){return function(_0x4a67c1){return new Promise(function(_0x2beeae,_0xb915dd){var _0x46a834=[];var _0x3fb66a=_0x38cd2d[_0x56a9('0x4f')];if(_0x3fb66a&&_0x3fb66a[_0x56a9('0x1d')]>0x0){_0x46a834=_['map'](_0x3fb66a,_0x56a9('0x3b'));}if(_0x46a834[_0x56a9('0x1d')]>0x0){return manageTags(_0x2313c4,_0x46a834,_0x54ebf4,_0x376245,_0x4a67c1,_0x1f416f,_0x5c114d)[_0x56a9('0xe')](function(){_0x2beeae(_0x4a67c1);});}else{_0x2beeae(_0x4a67c1);}});};}function emit(_0x5a4d9f,_0x511935,_0x49c37d){var _0x57001c=_0x56a9('0x50')+_0x56a9('0x51')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x56a9('0x52');var _0x3fda6c={'uri':_0x5a4d9f+_0x56a9('0x53')+_0x49c37d+_0x57001c};io['to'](util[_0x56a9('0x54')]('user:%s',_0x511935))[_0x56a9('0x55')](_0x56a9('0x56'),_0x3fda6c);}exports['cs']=function(_0x25b6b6,_0x1eeae3,_0x216ffe,_0x2efe37,_0x36b901,_0x40e1d7,_0x42556b,_0x41437e){var _0x41daa4={};var _0x1e3c64={'user':_0x40e1d7[_0x56a9('0x57')],'pass':_0x40e1d7[_0x56a9('0x58')]};var _0x231ff9=_0x56a9('0x59');var _0x5c3ded=_0x56a9('0x5a');_0x40e1d7['remoteUri']=intUtil[_0x56a9('0x5b')](_0x40e1d7[_0x56a9('0x5c')]);_0x40e1d7[_0x56a9('0x5d')]=intUtil['stripTrailingSlash'](_0x40e1d7[_0x56a9('0x5d')]);var _0x522102=util['format'](_0x56a9('0x5e'),_0x40e1d7[_0x56a9('0x5c')]);_0x41daa4[_0x56a9('0x19')]=!_[_0x56a9('0x5f')](_0x2efe37)?_0x2efe37['email']:null;_0x41daa4[_0x56a9('0x20')]=_0x40e1d7[_0x56a9('0x60')];_0x41daa4[_0x56a9('0x24')]=_0x41437e[_0x56a9('0x33')]()==='outbound'?_0x1eeae3['destcalleridnum']:_0x1eeae3['calleridnum'];_0x41daa4[_0x56a9('0x61')]=_0x41437e===_0x56a9('0x62')||_0x41437e===_0x56a9('0x63')?_0x56a9('0x62'):_0x56a9('0x3d');var _0x23c0ee=util[_0x56a9('0x54')](_0x56a9('0x64'),_0x40e1d7['serverUrl'],_0x1eeae3['uniqueid'],md5(_0x1eeae3['uniqueid']));if(_0x36b901&&_0x36b901[_0x56a9('0x65')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x1eeae3['recordingURL']=_0x23c0ee;}else if(_0x42556b&&_0x42556b[_0x56a9('0x66')]&&_0x42556b[_0x56a9('0x66')]!==_0x56a9('0x67')){logger[_0x56a9('0x12')]('[OUTBOUND]',_0x56a9('0x68'));_0x1eeae3[_0x56a9('0x69')]=_0x23c0ee;}else{_0x1eeae3[_0x56a9('0x69')]='';}return getAdminUser(_0x41437e,_0x1e3c64,_0x41daa4,_0x522102,_0x5c3ded,_0x231ff9)[_0x56a9('0xe')](getUser(_0x41437e,_0x1e3c64,_0x522102,_0x5c3ded,_0x231ff9))[_0x56a9('0xe')](getEndUser(_0x41437e,_0x1e3c64,_0x522102,_0x5c3ded,_0x231ff9))[_0x56a9('0xe')](getTicket(_0x41437e,_0x1e3c64,_0x522102,_0x216ffe,_0x1eeae3,_0x5c3ded))[_0x56a9('0xe')](function(_0xf2e0){logger[_0x56a9('0x12')](util[_0x56a9('0x54')](_0x56a9('0x6a'),_0xf2e0[_0x56a9('0x49')]));logger[_0x56a9('0x12')](util['format']('call\x20direction:\x20%s',_0x41437e));if(_0x41437e!=='unmanaged'){logger['info']('['+[_0x41437e[_0x56a9('0x13')]()]+']',_0x56a9('0x6b'));emit(_0x40e1d7['remoteUri'],_0x2efe37[_0x56a9('0x3b')],_0xf2e0[_0x56a9('0x49')]);}})[_0x56a9('0x15')](function(_0x156b8d){logger[_0x56a9('0x16')]('['+[_0x41437e[_0x56a9('0x13')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x56a9('0x6c')](_0x156b8d,{'showHidden':!![],'depth':null}));});};