Built motion from commit b5996064.|2.6.21
[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 _0xa0e5=['request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','sys_user?sysparm_query=user_name%3Dadmin','then','length','result','sys_id','info','],\x20getAdminUser\x20crm','catch','message','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','GET','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminId','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','customField','nameField','toLowerCase','string','idField','variable','variableName','toString','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','POST','incident','assign','getString','Subjects','Fields',']\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','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','emit','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash'];(function(_0x229f06,_0x2924c6){var _0x3033cb=function(_0x531f44){while(--_0x531f44){_0x229f06['push'](_0x229f06['shift']());}};_0x3033cb(++_0x2924c6);}(_0xa0e5,0x6e));var _0x5a0e=function(_0x5e6267,_0x1b514e){_0x5e6267=_0x5e6267-0x0;var _0x5742f8=_0xa0e5[_0x5e6267];return _0x5742f8;};'use strict';var _=require(_0x5a0e('0x0'));var Promise=require('bluebird');var rp=require(_0x5a0e('0x1'));var util=require(_0x5a0e('0x2'));var md5=require(_0x5a0e('0x3'));var Redis=require('ioredis');var intUtil=require(_0x5a0e('0x4'));var config=require(_0x5a0e('0x5'));var logger=require(_0x5a0e('0x6'))(_0x5a0e('0x7'));config[_0x5a0e('0x8')]=_[_0x5a0e('0x9')](config[_0x5a0e('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5a0e('0x8')]));function getAdminUser(_0x4377b9,_0x452561,_0x4c1fe0,_0x315e8a,_0x23c63c,_0x3e0fc2){return new Promise(function(_0x312024,_0x3bfd4c){var _0x21d7cc={'method':'GET','uri':_0x315e8a+_0x5a0e('0xa')+'&'+_0x23c63c+'&'+_0x3e0fc2,'auth':_0x452561,'json':!![]};return rp(_0x21d7cc)[_0x5a0e('0xb')](function(_0x467901){if(_0x467901['result'][_0x5a0e('0xc')]>0x0){_0x4c1fe0['adminId']=_0x467901[_0x5a0e('0xd')][0x0][_0x5a0e('0xe')];}logger[_0x5a0e('0xf')]('['+[_0x4377b9['toUpperCase']()]+_0x5a0e('0x10'),_0x4c1fe0);_0x312024(_0x4c1fe0);})[_0x5a0e('0x11')](function(_0x516d3f){logger['error']('['+[_0x4377b9['toUpperCase']()]+']',_0x516d3f['message']);_0x3bfd4c(_0x516d3f[_0x5a0e('0x12')]);});});}function getUser(_0x2a2d31,_0x5c49b3,_0x488dd2,_0x2398ca,_0x668d13){return function(_0x33a56c){logger[_0x5a0e('0xf')]('['+[_0x2a2d31[_0x5a0e('0x13')]()]+_0x5a0e('0x14'),_0x33a56c);return new Promise(function(_0x39e445,_0x59d6e4){if(intUtil[_0x5a0e('0x15')](_0x33a56c['userEmail'])){var _0x480b6d={'method':_0x5a0e('0x16'),'uri':_0x488dd2+_0x5a0e('0x17')+_0x33a56c[_0x5a0e('0x18')]+'&'+_0x2398ca+'&'+_0x668d13,'auth':_0x5c49b3,'json':!![]};logger[_0x5a0e('0xf')]('['+[_0x2a2d31['toUpperCase']()]+_0x5a0e('0x19'),_0x480b6d);return rp(_0x480b6d)[_0x5a0e('0xb')](function(_0x5ece64){logger[_0x5a0e('0xf')]('['+[_0x2a2d31[_0x5a0e('0x13')]()]+_0x5a0e('0x1a'),_0x5ece64);if(_0x5ece64['result'][_0x5a0e('0xc')]>0x0&&String(_0x5ece64[_0x5a0e('0xd')][0x0]['active'])===_0x5a0e('0x1b')){_0x33a56c[_0x5a0e('0x1c')]=_0x5ece64[_0x5a0e('0xd')][0x0][_0x5a0e('0xe')];}else{_0x33a56c[_0x5a0e('0x1c')]=_0x33a56c[_0x5a0e('0x1d')];_0x33a56c[_0x5a0e('0x18')]=_0x33a56c[_0x5a0e('0x1e')];}logger[_0x5a0e('0xf')]('['+[_0x2a2d31[_0x5a0e('0x13')]()]+_0x5a0e('0x1f'),_0x33a56c);_0x39e445(_0x33a56c);})[_0x5a0e('0x11')](function(_0x47f30b){logger[_0x5a0e('0x20')]('['+[_0x2a2d31[_0x5a0e('0x13')]()]+']',_0x47f30b[_0x5a0e('0x12')]);_0x59d6e4(_0x47f30b['message']);});}else{logger[_0x5a0e('0xf')]('['+[_0x2a2d31['toUpperCase']()]+_0x5a0e('0x21'));_0x33a56c[_0x5a0e('0x1c')]=_0x33a56c[_0x5a0e('0x1d')];_0x33a56c[_0x5a0e('0x18')]=_0x33a56c[_0x5a0e('0x1e')];_0x39e445(_0x33a56c);}});};}function createEndUser(_0x475173,_0x6373af,_0x402b22,_0x13ee18,_0x261201){logger[_0x5a0e('0xf')]('['+[_0x475173[_0x5a0e('0x13')]()]+'],\x20createEndUser\x20input\x20crm',_0x402b22);return new Promise(function(_0x10734a,_0x281c9c){var _0x4a1497={'method':'POST','uri':_0x13ee18+'sys_user?'+_0x261201,'body':{'user_name':_0x402b22[_0x5a0e('0x22')],'roles':_0x5a0e('0x23'),'first_name':_0x402b22['endUserNumber'],'active':_0x5a0e('0x1b'),'date_format':_0x5a0e('0x24'),'phone':_0x402b22['endUserNumber']},'auth':_0x6373af,'json':!![]};return rp(_0x4a1497)[_0x5a0e('0xb')](function(_0xbf1645){logger['info']('['+[_0x475173[_0x5a0e('0x13')]()]+_0x5a0e('0x25'),_0xbf1645[_0x5a0e('0xd')]);_0x402b22[_0x5a0e('0x26')]=_0xbf1645[_0x5a0e('0xd')]['sys_id'];_0x10734a(_0x402b22);})[_0x5a0e('0x11')](function(_0x42f048){logger[_0x5a0e('0x20')]('['+[_0x475173[_0x5a0e('0x13')]()]+']',_0x42f048[_0x5a0e('0x12')]);_0x281c9c(_0x42f048[_0x5a0e('0x12')]);});});}function getEndUser(_0x39f8d7,_0x346a18,_0x5b9838,_0x451da6,_0x37463f){return function(_0x4d284c){logger['info']('['+[_0x39f8d7['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x4d284c);return new Promise(function(_0x14d411,_0x118eea){var _0xdcc872={'method':_0x5a0e('0x16'),'uri':_0x5b9838+_0x5a0e('0x27')+_0x4d284c[_0x5a0e('0x22')]+'&'+_0x451da6+'&'+_0x37463f,'auth':_0x346a18,'json':!![]};return rp(_0xdcc872)[_0x5a0e('0xb')](function(_0x668316){if(_0x668316['result']['length']>0x0){_0x4d284c[_0x5a0e('0x26')]=_0x668316[_0x5a0e('0xd')][0x0][_0x5a0e('0xe')];logger[_0x5a0e('0xf')]('['+[_0x39f8d7[_0x5a0e('0x13')]()]+_0x5a0e('0x28'),_0x4d284c);_0x14d411(_0x4d284c);}else{return createEndUser(_0x39f8d7,_0x346a18,_0x4d284c,_0x5b9838,_0x451da6)[_0x5a0e('0xb')](function(_0x9b084d){logger[_0x5a0e('0xf')]('['+[_0x39f8d7[_0x5a0e('0x13')]()]+_0x5a0e('0x29'),_0x9b084d);_0x14d411(_0x9b084d);});}})['catch'](function(_0x1f915a){logger[_0x5a0e('0x20')]('['+[_0x39f8d7['toUpperCase']()]+']',_0x1f915a['message']);_0x118eea(_0x1f915a[_0x5a0e('0x12')]);});});};}function getCustomFields(_0x4cc522,_0x4cff86){var _0x56e240={};if(_0x4cc522[_0x5a0e('0xc')]>0x0){_[_0x5a0e('0x2a')](_0x4cc522,function(_0x47aad8){if(_[_0x5a0e('0x2b')](['string',_0x5a0e('0x2c')],_0x47aad8[_0x5a0e('0x2d')])&&_0x47aad8['nameField']&&!_0x47aad8[_0x5a0e('0x2e')]){_0x56e240[_0x47aad8[_0x5a0e('0x2f')][_0x5a0e('0x30')]()]=_0x47aad8['content']['toString']();}else if(_[_0x5a0e('0x2b')]([_0x5a0e('0x31'),_0x5a0e('0x2c')],_0x47aad8[_0x5a0e('0x2d')])&&_0x47aad8[_0x5a0e('0x32')]&&_0x47aad8[_0x5a0e('0x2e')]){_0x56e240[_0x47aad8[_0x5a0e('0x32')][_0x5a0e('0x30')]()]=_0x47aad8['content']['toString']();}else if(_0x47aad8[_0x5a0e('0x2d')]===_0x5a0e('0x33')&&_0x47aad8[_0x5a0e('0x34')]&&_0x47aad8[_0x5a0e('0x32')]&&_0x47aad8[_0x5a0e('0x2e')]){_0x56e240[_0x47aad8[_0x5a0e('0x32')][_0x5a0e('0x30')]()]=_0x4cff86[_0x47aad8[_0x5a0e('0x34')]][_0x5a0e('0x35')]();}else if(_0x47aad8['type']===_0x5a0e('0x36')&&_0x47aad8[_0x5a0e('0x37')]&&_0x47aad8[_0x5a0e('0x37')][_0x5a0e('0x38')]&&_0x47aad8[_0x5a0e('0x32')]&&_0x47aad8[_0x5a0e('0x2e')]){_0x56e240[_0x47aad8[_0x5a0e('0x32')][_0x5a0e('0x30')]()]=_0x4cff86[_0x47aad8['Variable']['name'][_0x5a0e('0x30')]()]['toString']();}});}return _0x56e240;}function getTicket(_0x15fd92,_0x1e3946,_0x1b102b,_0x5907f2,_0x4cecc2,_0x28a954){return function(_0xd05aee){logger[_0x5a0e('0xf')]('['+[_0x15fd92[_0x5a0e('0x13')]()]+_0x5a0e('0x39'),_0xd05aee);return new Promise(function(_0x2ac201,_0x1747b1){var _0x2ae99b=_0x15fd92[_0x5a0e('0x30')]()==='outbound'?_0xd05aee[_0x5a0e('0x1c')]:_0xd05aee[_0x5a0e('0x26')];var _0x49c9de={'method':_0x5a0e('0x3a'),'uri':_0x1b102b+_0x5a0e('0x3b')+'?'+_0x28a954,'body':Object[_0x5a0e('0x3c')]({},{'active':'true','caller_id':_0x2ae99b,'assigned_to':_0xd05aee[_0x5a0e('0x1c')],'short_description':intUtil[_0x5a0e('0x3d')](_0x5907f2[_0x5a0e('0x3e')],_0x4cecc2,'\x20'),'description':intUtil[_0x5a0e('0x3d')](_0x5907f2['Descriptions'],_0x4cecc2,'\x0a')},getCustomFields(_0x5907f2[_0x5a0e('0x3f')],_0x4cecc2)),'auth':_0x1e3946,'json':!![]};return rp(_0x49c9de)[_0x5a0e('0xb')](function(_0x4199f6){logger[_0x5a0e('0xf')]('['+[_0x15fd92[_0x5a0e('0x13')]()]+_0x5a0e('0x40'),_0x4199f6[_0x5a0e('0xd')]);_0xd05aee[_0x5a0e('0x41')]=_0x4199f6[_0x5a0e('0xd')][_0x5a0e('0xe')];_0xd05aee[_0x5a0e('0x42')]=_0x4199f6[_0x5a0e('0xd')][_0x5a0e('0x43')];logger[_0x5a0e('0xf')]('['+[_0x15fd92['toUpperCase']()]+_0x5a0e('0x44'),_0xd05aee);_0x2ac201(_0xd05aee);})['catch'](function(_0x48a9bb){logger['error']('['+[_0x15fd92[_0x5a0e('0x13')]()]+']',_0x48a9bb[_0x5a0e('0x12')]);_0x1747b1(_0x48a9bb['message']);});});};}function createRemoteTag(_0x59f119,_0x5297ae,_0x51f5ca,_0x1042b3){return new Promise(function(_0xa71fe4,_0x2ea4d9){var _0x25c699={'method':_0x5a0e('0x3a'),'uri':_0x51f5ca+_0x5a0e('0x45')+'?'+_0x1042b3,'body':{'short_description':_0x59f119,'global':!![],'active':!![],'name':_0x59f119},'auth':_0x5297ae,'json':!![]};return rp(_0x25c699)[_0x5a0e('0xb')](function(_0x21bddb){var _0x13079b=_0x21bddb[_0x5a0e('0xd')][_0x5a0e('0xe')];_0xa71fe4(_0x13079b);});});}function getRemoteTag(_0x37250b,_0x6b208a,_0x1eb6c0,_0x5356cf,_0x39fd20){return new Promise(function(_0x5895c7,_0x2207dd){var _0x11e26e={'method':'GET','uri':_0x1eb6c0+_0x5a0e('0x45')+_0x5a0e('0x46')+_0x37250b+'&'+_0x5356cf,'auth':_0x6b208a,'json':!![]};return rp(_0x11e26e)[_0x5a0e('0xb')](function(_0x144f50){if(_0x144f50[_0x5a0e('0xd')]['length']>0x0){var _0x3690fe=_0x144f50[_0x5a0e('0xd')][0x0][_0x5a0e('0xe')];_0x5895c7(_0x3690fe);}else{return createRemoteTag(_0x37250b,_0x6b208a,_0x1eb6c0,_0x5356cf)['then'](function(_0x1f3668){_0x5895c7(_0x1f3668);});}});});}function assignTagToIncident(_0x70afa9,_0x16fdf0,_0x140e56,_0x3fc98e,_0x561119){return new Promise(function(_0x184a93,_0x464307){var _0x12be30={'method':_0x5a0e('0x3a'),'uri':_0x140e56+_0x5a0e('0x47')+'?'+_0x561119,'body':{'label':_0x70afa9,'table':'incident','id_type':_0x5a0e('0x48'),'table_key':_0x3fc98e['ticketId'],'title':_0x5a0e('0x49')+_0x3fc98e['ticketNumber'],'id_display':_0x3fc98e[_0x5a0e('0x42')]},'auth':_0x16fdf0,'json':!![]};return rp(_0x12be30)['then'](function(_0x58304b){_0x184a93();})['catch'](function(){_0x184a93();});});}function manageTags(_0x271592,_0xfade16,_0x797585,_0x5d16c1,_0x4c8e9a,_0x2a3eab,_0x51948b){return new Promise(function(_0x24ba9d,_0x847df3){var _0xfe4016=[];_0xfade16[_0x5a0e('0x2a')](function(_0x2e468e){_0xfe4016[_0x5a0e('0x4a')](getRemoteTag(_0x2e468e,_0x797585,_0x5d16c1,_0x2a3eab,_0x51948b));});return Promise['all'](_0xfe4016)[_0x5a0e('0xb')](function(_0x279699){if(_0x279699[_0x5a0e('0xc')]){logger['info']('['+[_0x271592[_0x5a0e('0x13')]()]+_0x5a0e('0x4b'),_0x279699);var _0x5792ff=[];_0x279699[_0x5a0e('0x2a')](function(_0x4f1dba){_0x5792ff[_0x5a0e('0x4a')](assignTagToIncident(_0x4f1dba,_0x797585,_0x5d16c1,_0x4c8e9a,_0x2a3eab));});return Promise[_0x5a0e('0x4c')](_0x5792ff)['then'](function(){_0x24ba9d();})[_0x5a0e('0x11')](function(){_0x24ba9d();});}else{_0x24ba9d();}});});}function getTags(_0x375e4e,_0x4b525d,_0x5b624d,_0x84c66a,_0x5826a3,_0x520c38){return function(_0x3edffb){return new Promise(function(_0x24cdbe,_0x4edd9a){var _0xda3ed4=[];var _0x12a065=_0x84c66a['Tags'];if(_0x12a065&&_0x12a065[_0x5a0e('0xc')]>0x0){_0xda3ed4=_[_0x5a0e('0x4d')](_0x12a065,_0x5a0e('0x38'));}if(_0xda3ed4[_0x5a0e('0xc')]>0x0){return manageTags(_0x375e4e,_0xda3ed4,_0x4b525d,_0x5b624d,_0x3edffb,_0x5826a3,_0x520c38)[_0x5a0e('0xb')](function(){_0x24cdbe(_0x3edffb);});}else{_0x24cdbe(_0x3edffb);}});};}function emit(_0x528d59,_0x38999d,_0x2e9c4e){var _0x150254=_0x5a0e('0x4e')+_0x5a0e('0x4f')+_0x5a0e('0x50')+_0x5a0e('0x51');var _0x3b8349={'uri':_0x528d59+_0x5a0e('0x52')+_0x2e9c4e+_0x150254};io['to'](util[_0x5a0e('0x53')]('user:%s',_0x38999d))[_0x5a0e('0x54')]('trigger:browser:url',_0x3b8349);}exports['cs']=function(_0x3f1377,_0x3277d0,_0x11c775,_0x5c72da,_0x17d387,_0x2716be,_0x5162f7,_0x49bf77){var _0x591197={};var _0x3df148={'user':_0x2716be[_0x5a0e('0x55')],'pass':_0x2716be['password']};var _0xbf9d21=_0x5a0e('0x56');var _0x2eed5d=_0x5a0e('0x57');_0x2716be[_0x5a0e('0x58')]=intUtil[_0x5a0e('0x59')](_0x2716be[_0x5a0e('0x58')]);_0x2716be[_0x5a0e('0x5a')]=intUtil[_0x5a0e('0x59')](_0x2716be[_0x5a0e('0x5a')]);var _0x15e34f=util[_0x5a0e('0x53')](_0x5a0e('0x5b'),_0x2716be[_0x5a0e('0x58')]);_0x591197[_0x5a0e('0x18')]=!_['isNil'](_0x5c72da)?_0x5c72da[_0x5a0e('0x5c')]:null;_0x591197[_0x5a0e('0x1e')]=_0x2716be[_0x5a0e('0x5c')];_0x591197[_0x5a0e('0x22')]=_0x49bf77[_0x5a0e('0x30')]()===_0x5a0e('0x5d')?_0x3277d0[_0x5a0e('0x5e')]:_0x3277d0[_0x5a0e('0x5f')];_0x591197[_0x5a0e('0x60')]=_0x49bf77===_0x5a0e('0x61')||_0x49bf77===_0x5a0e('0x62')?'queue':_0x5a0e('0x5d');var _0x3ed97a=util[_0x5a0e('0x53')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2716be[_0x5a0e('0x5a')],_0x3277d0[_0x5a0e('0x63')],md5(_0x3277d0['uniqueid']));if(_0x17d387&&_0x17d387[_0x5a0e('0x64')]){logger[_0x5a0e('0xf')](_0x5a0e('0x65'),_0x5a0e('0x66'));_0x3277d0[_0x5a0e('0x67')]=_0x3ed97a;}else if(_0x5162f7&&_0x5162f7[_0x5a0e('0x68')]&&_0x5162f7['recordingFormat']!==_0x5a0e('0x69')){logger[_0x5a0e('0xf')](_0x5a0e('0x6a'),_0x5a0e('0x66'));_0x3277d0['recordingURL']=_0x3ed97a;}else{_0x3277d0[_0x5a0e('0x67')]='';}return getAdminUser(_0x49bf77,_0x3df148,_0x591197,_0x15e34f,_0x2eed5d,_0xbf9d21)[_0x5a0e('0xb')](getUser(_0x49bf77,_0x3df148,_0x15e34f,_0x2eed5d,_0xbf9d21))[_0x5a0e('0xb')](getEndUser(_0x49bf77,_0x3df148,_0x15e34f,_0x2eed5d,_0xbf9d21))[_0x5a0e('0xb')](getTicket(_0x49bf77,_0x3df148,_0x15e34f,_0x11c775,_0x3277d0,_0x2eed5d))['then'](function(_0x55b6b9){logger[_0x5a0e('0xf')](util[_0x5a0e('0x53')]('The\x20ticket\x20ID\x20is:\x20%s',_0x55b6b9[_0x5a0e('0x41')]));logger[_0x5a0e('0xf')](util[_0x5a0e('0x53')](_0x5a0e('0x6b'),_0x49bf77));if(_0x49bf77!=='unmanaged'){logger[_0x5a0e('0xf')]('['+[_0x49bf77[_0x5a0e('0x13')]()]+']',_0x5a0e('0x6c'));emit(_0x2716be[_0x5a0e('0x58')],_0x5c72da[_0x5a0e('0x38')],_0x55b6b9[_0x5a0e('0x41')]);}})[_0x5a0e('0x11')](function(_0x56abb6){logger['error']('['+[_0x49bf77[_0x5a0e('0x13')]()]+_0x5a0e('0x6d'),util[_0x5a0e('0x6e')](_0x56abb6,{'showHidden':!![],'depth':null}));});};