Built motion from commit (unavailable).|2.5.30
[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 _0x583c=['],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','],\x20EndUser\x20schema','endUserId','GET','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','picklist','nameField','customField','toLowerCase','toString','includes','string','type','content','variableName','idField','Variable','name',']\x20getTicket\x20input\x20crm','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','label_entry','incident','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','trigger:browser:url','username','password','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','ioredis','./util','servicenow','redis','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D'];(function(_0x475e8e,_0x3cfb58){var _0x297ece=function(_0x3f8a55){while(--_0x3f8a55){_0x475e8e['push'](_0x475e8e['shift']());}};_0x297ece(++_0x3cfb58);}(_0x583c,0x12b));var _0xc583=function(_0x33ebf5,_0x258ec6){_0x33ebf5=_0x33ebf5-0x0;var _0x66957b=_0x583c[_0x33ebf5];return _0x66957b;};'use strict';var _=require(_0xc583('0x0'));var Promise=require(_0xc583('0x1'));var rp=require(_0xc583('0x2'));var util=require(_0xc583('0x3'));var md5=require('md5');var Redis=require(_0xc583('0x4'));var intUtil=require(_0xc583('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xc583('0x6'));config[_0xc583('0x7')]=_['defaults'](config[_0xc583('0x7')],{'host':_0xc583('0x8'),'port':0x18eb});var io=require(_0xc583('0x9'))(new Redis(config[_0xc583('0x7')]));function getAdminUser(_0x48a8d4,_0x21ed88,_0x26cec0,_0x5b456e,_0x163ab2,_0x24ab4f){return new Promise(function(_0x25f8d3,_0xb23f07){var _0x2d99ca={'method':'GET','uri':_0x5b456e+_0xc583('0xa')+'&'+_0x163ab2+'&'+_0x24ab4f,'auth':_0x21ed88,'json':!![]};return rp(_0x2d99ca)[_0xc583('0xb')](function(_0x4decd8){if(_0x4decd8[_0xc583('0xc')][_0xc583('0xd')]>0x0){_0x26cec0['adminId']=_0x4decd8[_0xc583('0xc')][0x0][_0xc583('0xe')];}logger[_0xc583('0xf')]('['+[_0x48a8d4[_0xc583('0x10')]()]+_0xc583('0x11'),_0x26cec0);_0x25f8d3(_0x26cec0);})[_0xc583('0x12')](function(_0x183cca){logger[_0xc583('0x13')]('['+[_0x48a8d4[_0xc583('0x10')]()]+']',_0x183cca['message']);_0xb23f07(_0x183cca[_0xc583('0x14')]);});});}function getUser(_0x51ecd7,_0x19f46a,_0x299fa1,_0x510090,_0x263552){return function(_0x311ad5){logger['info']('['+[_0x51ecd7[_0xc583('0x10')]()]+_0xc583('0x15'),_0x311ad5);return new Promise(function(_0x5127fa,_0x21cf22){if(intUtil[_0xc583('0x16')](_0x311ad5[_0xc583('0x17')])){var _0x36e0fd={'method':'GET','uri':_0x299fa1+_0xc583('0x18')+_0x311ad5['userEmail']+'&'+_0x510090+'&'+_0x263552,'auth':_0x19f46a,'json':!![]};logger[_0xc583('0xf')]('['+[_0x51ecd7[_0xc583('0x10')]()]+_0xc583('0x19'),_0x36e0fd);return rp(_0x36e0fd)[_0xc583('0xb')](function(_0x1052b5){logger[_0xc583('0xf')]('['+[_0x51ecd7[_0xc583('0x10')]()]+_0xc583('0x1a'),_0x1052b5);if(_0x1052b5[_0xc583('0xc')][_0xc583('0xd')]>0x0&&String(_0x1052b5[_0xc583('0xc')][0x0][_0xc583('0x1b')])===_0xc583('0x1c')){_0x311ad5['userId']=_0x1052b5['result'][0x0][_0xc583('0xe')];}else{_0x311ad5[_0xc583('0x1d')]=_0x311ad5[_0xc583('0x1e')];_0x311ad5['userEmail']=_0x311ad5[_0xc583('0x1f')];}logger[_0xc583('0xf')]('['+[_0x51ecd7[_0xc583('0x10')]()]+_0xc583('0x20'),_0x311ad5);_0x5127fa(_0x311ad5);})[_0xc583('0x12')](function(_0x48c95e){logger['error']('['+[_0x51ecd7[_0xc583('0x10')]()]+']',_0x48c95e['message']);_0x21cf22(_0x48c95e[_0xc583('0x14')]);});}else{logger[_0xc583('0xf')]('['+[_0x51ecd7[_0xc583('0x10')]()]+_0xc583('0x21'));_0x311ad5[_0xc583('0x1d')]=_0x311ad5['adminId'];_0x311ad5[_0xc583('0x17')]=_0x311ad5[_0xc583('0x1f')];_0x5127fa(_0x311ad5);}});};}function createEndUser(_0x4adde3,_0x162c85,_0x483357,_0x2c9088,_0x8d4ecb){logger[_0xc583('0xf')]('['+[_0x4adde3[_0xc583('0x10')]()]+_0xc583('0x22'),_0x483357);return new Promise(function(_0x19079b,_0x113b39){var _0x4a87b5={'method':_0xc583('0x23'),'uri':_0x2c9088+_0xc583('0x24')+_0x8d4ecb,'body':{'user_name':_0x483357[_0xc583('0x25')],'roles':_0xc583('0x26'),'first_name':_0x483357[_0xc583('0x25')],'active':_0xc583('0x1c'),'date_format':'System','phone':_0x483357[_0xc583('0x25')]},'auth':_0x162c85,'json':!![]};return rp(_0x4a87b5)['then'](function(_0x510931){logger[_0xc583('0xf')]('['+[_0x4adde3[_0xc583('0x10')]()]+_0xc583('0x27'),_0x510931[_0xc583('0xc')]);_0x483357[_0xc583('0x28')]=_0x510931['result'][_0xc583('0xe')];_0x19079b(_0x483357);})[_0xc583('0x12')](function(_0x3dc38e){logger['error']('['+[_0x4adde3[_0xc583('0x10')]()]+']',_0x3dc38e['message']);_0x113b39(_0x3dc38e[_0xc583('0x14')]);});});}function getEndUser(_0x41c09b,_0x473072,_0x18a288,_0x3bd1fd,_0x4d7add){return function(_0x242728){logger['info']('['+[_0x41c09b[_0xc583('0x10')]()]+'],\x20getEndUser\x20input\x20crm',_0x242728);return new Promise(function(_0x2e96fc,_0x3a562c){var _0x7d89d0={'method':_0xc583('0x29'),'uri':_0x18a288+_0xc583('0x2a')+_0x242728[_0xc583('0x25')]+'&'+_0x3bd1fd+'&'+_0x4d7add,'auth':_0x473072,'json':!![]};return rp(_0x7d89d0)['then'](function(_0x589a6d){if(_0x589a6d[_0xc583('0xc')][_0xc583('0xd')]>0x0){_0x242728['endUserId']=_0x589a6d[_0xc583('0xc')][0x0][_0xc583('0xe')];logger[_0xc583('0xf')]('['+[_0x41c09b[_0xc583('0x10')]()]+_0xc583('0x2b'),_0x242728);_0x2e96fc(_0x242728);}else{return createEndUser(_0x41c09b,_0x473072,_0x242728,_0x18a288,_0x3bd1fd)[_0xc583('0xb')](function(_0x4e11d9){logger[_0xc583('0xf')]('['+[_0x41c09b['toUpperCase']()]+_0xc583('0x2c'),_0x4e11d9);_0x2e96fc(_0x4e11d9);});}})[_0xc583('0x12')](function(_0x39bed4){logger['error']('['+[_0x41c09b['toUpperCase']()]+']',_0x39bed4['message']);_0x3a562c(_0x39bed4[_0xc583('0x14')]);});});};}function getCustomFields(_0x46b31f,_0x2b957d){var _0x342b66={};if(_0x46b31f['length']>0x0){_[_0xc583('0x2d')](_0x46b31f,function(_0x136776){if(_['includes'](['string',_0xc583('0x2e')],_0x136776['type'])&&_0x136776[_0xc583('0x2f')]&&!_0x136776[_0xc583('0x30')]){_0x342b66[_0x136776[_0xc583('0x2f')][_0xc583('0x31')]()]=_0x136776['content'][_0xc583('0x32')]();}else if(_[_0xc583('0x33')]([_0xc583('0x34'),_0xc583('0x2e')],_0x136776[_0xc583('0x35')])&&_0x136776['idField']&&_0x136776[_0xc583('0x30')]){_0x342b66[_0x136776['idField']['toLowerCase']()]=_0x136776[_0xc583('0x36')][_0xc583('0x32')]();}else if(_0x136776['type']==='variable'&&_0x136776[_0xc583('0x37')]&&_0x136776[_0xc583('0x38')]&&_0x136776[_0xc583('0x30')]){_0x342b66[_0x136776[_0xc583('0x38')]['toLowerCase']()]=_0x2b957d[_0x136776[_0xc583('0x37')]]['toString']();}else if(_0x136776[_0xc583('0x35')]==='customVariable'&&_0x136776[_0xc583('0x39')]&&_0x136776[_0xc583('0x39')][_0xc583('0x3a')]&&_0x136776[_0xc583('0x38')]&&_0x136776[_0xc583('0x30')]){_0x342b66[_0x136776['idField'][_0xc583('0x31')]()]=_0x2b957d[_0x136776[_0xc583('0x39')][_0xc583('0x3a')]['toLowerCase']()]['toString']();}});}return _0x342b66;}function getTicket(_0x59555a,_0x3526d5,_0x571ddf,_0x27a7c2,_0x41e0af,_0x39225b){return function(_0x408e30){logger[_0xc583('0xf')]('['+[_0x59555a[_0xc583('0x10')]()]+_0xc583('0x3b'),_0x408e30);return new Promise(function(_0x32cfbf,_0x212a63){var _0x156774=_0x59555a[_0xc583('0x31')]()==='outbound'?_0x408e30[_0xc583('0x1d')]:_0x408e30[_0xc583('0x28')];var _0x453df7={'method':_0xc583('0x23'),'uri':_0x571ddf+'incident'+'?'+_0x39225b,'body':Object[_0xc583('0x3c')]({},{'active':_0xc583('0x1c'),'caller_id':_0x156774,'assigned_to':_0x408e30[_0xc583('0x1d')],'short_description':intUtil[_0xc583('0x3d')](_0x27a7c2[_0xc583('0x3e')],_0x41e0af,'\x20'),'description':intUtil[_0xc583('0x3d')](_0x27a7c2[_0xc583('0x3f')],_0x41e0af,'\x0a')},getCustomFields(_0x27a7c2[_0xc583('0x40')],_0x41e0af)),'auth':_0x3526d5,'json':!![]};return rp(_0x453df7)[_0xc583('0xb')](function(_0x5b2fcc){logger[_0xc583('0xf')]('['+[_0x59555a[_0xc583('0x10')]()]+_0xc583('0x41'),_0x5b2fcc[_0xc583('0xc')]);_0x408e30[_0xc583('0x42')]=_0x5b2fcc[_0xc583('0xc')][_0xc583('0xe')];_0x408e30[_0xc583('0x43')]=_0x5b2fcc[_0xc583('0xc')][_0xc583('0x44')];logger[_0xc583('0xf')]('['+[_0x59555a[_0xc583('0x10')]()]+_0xc583('0x45'),_0x408e30);_0x32cfbf(_0x408e30);})['catch'](function(_0xaf0ce6){logger[_0xc583('0x13')]('['+[_0x59555a[_0xc583('0x10')]()]+']',_0xaf0ce6[_0xc583('0x14')]);_0x212a63(_0xaf0ce6[_0xc583('0x14')]);});});};}function createRemoteTag(_0x3bccb0,_0x24351f,_0x1aff76,_0x2aeb74){return new Promise(function(_0x5793a6,_0x141faa){var _0x1ac09d={'method':_0xc583('0x23'),'uri':_0x1aff76+'label'+'?'+_0x2aeb74,'body':{'short_description':_0x3bccb0,'global':!![],'active':!![],'name':_0x3bccb0},'auth':_0x24351f,'json':!![]};return rp(_0x1ac09d)['then'](function(_0x2bb764){var _0x4b4968=_0x2bb764[_0xc583('0xc')][_0xc583('0xe')];_0x5793a6(_0x4b4968);});});}function getRemoteTag(_0x5613e7,_0x49e691,_0x282290,_0x20722b,_0xa2b111){return new Promise(function(_0x30e9ef,_0x176fac){var _0x1e3ddb={'method':_0xc583('0x29'),'uri':_0x282290+_0xc583('0x46')+'?sysparm_query=name%3D'+_0x5613e7+'&'+_0x20722b,'auth':_0x49e691,'json':!![]};return rp(_0x1e3ddb)[_0xc583('0xb')](function(_0x9bbf43){if(_0x9bbf43[_0xc583('0xc')][_0xc583('0xd')]>0x0){var _0x515a34=_0x9bbf43[_0xc583('0xc')][0x0][_0xc583('0xe')];_0x30e9ef(_0x515a34);}else{return createRemoteTag(_0x5613e7,_0x49e691,_0x282290,_0x20722b)['then'](function(_0x5a534e){_0x30e9ef(_0x5a534e);});}});});}function assignTagToIncident(_0x12b114,_0x5ccfe7,_0x30b1e0,_0x1ba5cc,_0x40e8a6){return new Promise(function(_0x5ea011,_0x4e314b){var _0x1ea579={'method':_0xc583('0x23'),'uri':_0x30b1e0+_0xc583('0x47')+'?'+_0x40e8a6,'body':{'label':_0x12b114,'table':_0xc583('0x48'),'id_type':'Incident','table_key':_0x1ba5cc[_0xc583('0x42')],'title':_0xc583('0x49')+_0x1ba5cc['ticketNumber'],'id_display':_0x1ba5cc['ticketNumber']},'auth':_0x5ccfe7,'json':!![]};return rp(_0x1ea579)[_0xc583('0xb')](function(_0x579c62){_0x5ea011();})['catch'](function(){_0x5ea011();});});}function manageTags(_0x507f18,_0x415b0f,_0x365d31,_0x2c9c6d,_0x13d3cb,_0x4af719,_0x5b5e78){return new Promise(function(_0x70fedc,_0x3369ba){var _0x599663=[];_0x415b0f['forEach'](function(_0x1cfb34){_0x599663['push'](getRemoteTag(_0x1cfb34,_0x365d31,_0x2c9c6d,_0x4af719,_0x5b5e78));});return Promise[_0xc583('0x4a')](_0x599663)[_0xc583('0xb')](function(_0x596100){if(_0x596100[_0xc583('0xd')]){logger['info']('['+[_0x507f18[_0xc583('0x10')]()]+_0xc583('0x4b'),_0x596100);var _0x4b3f49=[];_0x596100[_0xc583('0x2d')](function(_0x10bd9f){_0x4b3f49[_0xc583('0x4c')](assignTagToIncident(_0x10bd9f,_0x365d31,_0x2c9c6d,_0x13d3cb,_0x4af719));});return Promise[_0xc583('0x4a')](_0x4b3f49)[_0xc583('0xb')](function(){_0x70fedc();})[_0xc583('0x12')](function(){_0x70fedc();});}else{_0x70fedc();}});});}function getTags(_0x37613c,_0x1cb4b7,_0x55eb7e,_0x4d7a1b,_0x4d0f8b,_0x442638){return function(_0x4d498b){return new Promise(function(_0x28e19,_0x329963){var _0x2cbc81=[];var _0x43f5e3=_0x4d7a1b[_0xc583('0x4d')];if(_0x43f5e3&&_0x43f5e3[_0xc583('0xd')]>0x0){_0x2cbc81=_[_0xc583('0x4e')](_0x43f5e3,_0xc583('0x3a'));}if(_0x2cbc81['length']>0x0){return manageTags(_0x37613c,_0x2cbc81,_0x1cb4b7,_0x55eb7e,_0x4d498b,_0x4d0f8b,_0x442638)[_0xc583('0xb')](function(){_0x28e19(_0x4d498b);});}else{_0x28e19(_0x4d498b);}});};}function emit(_0x602e23,_0x46ea79,_0x2a8bb5){var _0x41a064=_0xc583('0x4f')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0xc583('0x50')+_0xc583('0x51');var _0x17268d={'uri':_0x602e23+_0xc583('0x52')+_0x2a8bb5+_0x41a064};io['to'](util[_0xc583('0x53')](_0xc583('0x54'),_0x46ea79))['emit'](_0xc583('0x55'),_0x17268d);}exports['cs']=function(_0x1b6948,_0x1f9479,_0x54e331,_0x1abac9,_0x5dc2d0,_0x326ee3,_0x26d063,_0x240174){var _0x36e52a={};var _0x146b75={'user':_0x326ee3[_0xc583('0x56')],'pass':_0x326ee3[_0xc583('0x57')]};var _0x59140c='sysparm_limit=1';var _0x5e979d='sysparm_display_value=true';_0x326ee3[_0xc583('0x58')]=intUtil[_0xc583('0x59')](_0x326ee3[_0xc583('0x58')]);_0x326ee3[_0xc583('0x5a')]=intUtil[_0xc583('0x59')](_0x326ee3[_0xc583('0x5a')]);var _0x3798d6=util[_0xc583('0x53')](_0xc583('0x5b'),_0x326ee3[_0xc583('0x58')]);_0x36e52a['userEmail']=!_[_0xc583('0x5c')](_0x1abac9)?_0x1abac9[_0xc583('0x5d')]:null;_0x36e52a['adminEmail']=_0x326ee3['email'];_0x36e52a['endUserNumber']=_0x240174[_0xc583('0x31')]()===_0xc583('0x5e')?_0x1f9479[_0xc583('0x5f')]:_0x1f9479[_0xc583('0x60')];_0x36e52a[_0xc583('0x61')]=_0x240174===_0xc583('0x62')||_0x240174===_0xc583('0x63')?_0xc583('0x62'):_0xc583('0x5e');var _0x516fcb=util[_0xc583('0x53')](_0xc583('0x64'),_0x326ee3['serverUrl'],_0x1f9479[_0xc583('0x65')],md5(_0x1f9479[_0xc583('0x65')]));if(_0x5dc2d0&&_0x5dc2d0[_0xc583('0x66')]){logger[_0xc583('0xf')](_0xc583('0x67'),'Recording\x20is\x20enabled!');_0x1f9479[_0xc583('0x68')]=_0x516fcb;}else if(_0x26d063&&_0x26d063[_0xc583('0x69')]&&_0x26d063[_0xc583('0x69')]!==_0xc583('0x6a')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1f9479[_0xc583('0x68')]=_0x516fcb;}else{_0x1f9479['recordingURL']='';}return getAdminUser(_0x240174,_0x146b75,_0x36e52a,_0x3798d6,_0x5e979d,_0x59140c)['then'](getUser(_0x240174,_0x146b75,_0x3798d6,_0x5e979d,_0x59140c))['then'](getEndUser(_0x240174,_0x146b75,_0x3798d6,_0x5e979d,_0x59140c))[_0xc583('0xb')](getTicket(_0x240174,_0x146b75,_0x3798d6,_0x54e331,_0x1f9479,_0x5e979d))[_0xc583('0xb')](function(_0x3cd0fb){logger[_0xc583('0xf')](util[_0xc583('0x53')]('The\x20ticket\x20ID\x20is:\x20%s',_0x3cd0fb[_0xc583('0x42')]));logger[_0xc583('0xf')](util[_0xc583('0x53')]('call\x20direction:\x20%s',_0x240174));if(_0x240174!==_0xc583('0x63')){logger[_0xc583('0xf')]('['+[_0x240174['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x326ee3[_0xc583('0x58')],_0x1abac9[_0xc583('0x3a')],_0x3cd0fb[_0xc583('0x42')]);}})[_0xc583('0x12')](function(_0x3f0582){logger[_0xc583('0x13')]('['+[_0x240174[_0xc583('0x10')]()]+_0xc583('0x6b'),util['inspect'](_0x3f0582,{'showHidden':!![],'depth':null}));});};