Built motion from commit 3c2ce842.|2.6.31
[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 _0xe93b=['Incident','Incident\x20-\x20','ticketNumber','push','all','Tags','name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','user:%s','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','format','isNil','email','destcalleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','catch','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail','error','message',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','customField','nameField','toLowerCase','content','toString','string','idField','variable','variableName','Variable','outbound','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry'];(function(_0x48d2ed,_0x432efb){var _0x467ecd=function(_0x3cf1b4){while(--_0x3cf1b4){_0x48d2ed['push'](_0x48d2ed['shift']());}};_0x467ecd(++_0x432efb);}(_0xe93b,0x16a));var _0xbe93=function(_0xc5db8d,_0x5aa943){_0xc5db8d=_0xc5db8d-0x0;var _0x59da2d=_0xe93b[_0xc5db8d];return _0x59da2d;};'use strict';var _=require(_0xbe93('0x0'));var Promise=require(_0xbe93('0x1'));var rp=require(_0xbe93('0x2'));var util=require(_0xbe93('0x3'));var md5=require(_0xbe93('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xbe93('0x5'));var logger=require(_0xbe93('0x6'))(_0xbe93('0x7'));config[_0xbe93('0x8')]=_['defaults'](config['redis'],{'host':_0xbe93('0x9'),'port':0x18eb});var io=require(_0xbe93('0xa'))(new Redis(config[_0xbe93('0x8')]));function getAdminUser(_0x3ab63c,_0x396b8c,_0x1edee5,_0xeacefb,_0x1d5ece,_0x35ac7f){return new Promise(function(_0x51e120,_0x50c3d1){var _0x2c0d74={'method':_0xbe93('0xb'),'uri':_0xeacefb+_0xbe93('0xc')+'&'+_0x1d5ece+'&'+_0x35ac7f,'auth':_0x396b8c,'json':!![]};return rp(_0x2c0d74)[_0xbe93('0xd')](function(_0x4d6b73){if(_0x4d6b73[_0xbe93('0xe')][_0xbe93('0xf')]>0x0){_0x1edee5[_0xbe93('0x10')]=_0x4d6b73[_0xbe93('0xe')][0x0][_0xbe93('0x11')];}logger[_0xbe93('0x12')]('['+[_0x3ab63c['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x1edee5);_0x51e120(_0x1edee5);})[_0xbe93('0x13')](function(_0x4f5806){logger['error']('['+[_0x3ab63c[_0xbe93('0x14')]()]+']',_0x4f5806['message']);_0x50c3d1(_0x4f5806['message']);});});}function getUser(_0x32ada7,_0x32c4b2,_0x266f65,_0x661791,_0x109a56){return function(_0x37706a){logger[_0xbe93('0x12')]('['+[_0x32ada7['toUpperCase']()]+_0xbe93('0x15'),_0x37706a);return new Promise(function(_0x16994b,_0x152a62){if(intUtil[_0xbe93('0x16')](_0x37706a[_0xbe93('0x17')])){var _0xd79b70={'method':_0xbe93('0xb'),'uri':_0x266f65+_0xbe93('0x18')+_0x37706a[_0xbe93('0x17')]+'&'+_0x661791+'&'+_0x109a56,'auth':_0x32c4b2,'json':!![]};logger[_0xbe93('0x12')]('['+[_0x32ada7[_0xbe93('0x14')]()]+_0xbe93('0x19'),_0xd79b70);return rp(_0xd79b70)['then'](function(_0x3e9059){logger[_0xbe93('0x12')]('['+[_0x32ada7[_0xbe93('0x14')]()]+_0xbe93('0x1a'),_0x3e9059);if(_0x3e9059[_0xbe93('0xe')]['length']>0x0&&String(_0x3e9059[_0xbe93('0xe')][0x0]['active'])===_0xbe93('0x1b')){_0x37706a[_0xbe93('0x1c')]=_0x3e9059[_0xbe93('0xe')][0x0][_0xbe93('0x11')];}else{_0x37706a[_0xbe93('0x1c')]=_0x37706a[_0xbe93('0x10')];_0x37706a['userEmail']=_0x37706a[_0xbe93('0x1d')];}logger['info']('['+[_0x32ada7[_0xbe93('0x14')]()]+'],\x20getUser\x20crm',_0x37706a);_0x16994b(_0x37706a);})[_0xbe93('0x13')](function(_0x488b35){logger[_0xbe93('0x1e')]('['+[_0x32ada7[_0xbe93('0x14')]()]+']',_0x488b35[_0xbe93('0x1f')]);_0x152a62(_0x488b35['message']);});}else{logger[_0xbe93('0x12')]('['+[_0x32ada7[_0xbe93('0x14')]()]+_0xbe93('0x20'));_0x37706a[_0xbe93('0x1c')]=_0x37706a[_0xbe93('0x10')];_0x37706a[_0xbe93('0x17')]=_0x37706a[_0xbe93('0x1d')];_0x16994b(_0x37706a);}});};}function createEndUser(_0x5e3761,_0xf149ed,_0x4b88b5,_0x42d504,_0x279273){logger['info']('['+[_0x5e3761[_0xbe93('0x14')]()]+_0xbe93('0x21'),_0x4b88b5);return new Promise(function(_0x2c7ff0,_0x553d82){var _0x217659={'method':_0xbe93('0x22'),'uri':_0x42d504+_0xbe93('0x23')+_0x279273,'body':{'user_name':_0x4b88b5[_0xbe93('0x24')],'roles':_0xbe93('0x25'),'first_name':_0x4b88b5['endUserNumber'],'active':_0xbe93('0x1b'),'date_format':_0xbe93('0x26'),'phone':_0x4b88b5[_0xbe93('0x24')]},'auth':_0xf149ed,'json':!![]};return rp(_0x217659)[_0xbe93('0xd')](function(_0x154d11){logger[_0xbe93('0x12')]('['+[_0x5e3761[_0xbe93('0x14')]()]+_0xbe93('0x27'),_0x154d11[_0xbe93('0xe')]);_0x4b88b5[_0xbe93('0x28')]=_0x154d11[_0xbe93('0xe')][_0xbe93('0x11')];_0x2c7ff0(_0x4b88b5);})[_0xbe93('0x13')](function(_0x40d74e){logger[_0xbe93('0x1e')]('['+[_0x5e3761[_0xbe93('0x14')]()]+']',_0x40d74e[_0xbe93('0x1f')]);_0x553d82(_0x40d74e[_0xbe93('0x1f')]);});});}function getEndUser(_0xaf873d,_0x7e1747,_0x5430b0,_0x125c9a,_0x2f8c61){return function(_0x53df81){logger[_0xbe93('0x12')]('['+[_0xaf873d[_0xbe93('0x14')]()]+_0xbe93('0x29'),_0x53df81);return new Promise(function(_0x24757a,_0x276705){var _0x5b9796={'method':_0xbe93('0xb'),'uri':_0x5430b0+_0xbe93('0x2a')+_0x53df81[_0xbe93('0x24')]+'&'+_0x125c9a+'&'+_0x2f8c61,'auth':_0x7e1747,'json':!![]};return rp(_0x5b9796)[_0xbe93('0xd')](function(_0x132b27){if(_0x132b27[_0xbe93('0xe')][_0xbe93('0xf')]>0x0){_0x53df81['endUserId']=_0x132b27[_0xbe93('0xe')][0x0][_0xbe93('0x11')];logger[_0xbe93('0x12')]('['+[_0xaf873d[_0xbe93('0x14')]()]+_0xbe93('0x2b'),_0x53df81);_0x24757a(_0x53df81);}else{return createEndUser(_0xaf873d,_0x7e1747,_0x53df81,_0x5430b0,_0x125c9a)['then'](function(_0x4afa42){logger[_0xbe93('0x12')]('['+[_0xaf873d[_0xbe93('0x14')]()]+_0xbe93('0x2c'),_0x4afa42);_0x24757a(_0x4afa42);});}})[_0xbe93('0x13')](function(_0x389b3d){logger[_0xbe93('0x1e')]('['+[_0xaf873d[_0xbe93('0x14')]()]+']',_0x389b3d['message']);_0x276705(_0x389b3d[_0xbe93('0x1f')]);});});};}function getCustomFields(_0x4e4792,_0x14f5a1){var _0x4535d7={};if(_0x4e4792[_0xbe93('0xf')]>0x0){_[_0xbe93('0x2d')](_0x4e4792,function(_0x313ff8){if(_[_0xbe93('0x2e')](['string',_0xbe93('0x2f')],_0x313ff8[_0xbe93('0x30')])&&_0x313ff8['nameField']&&!_0x313ff8[_0xbe93('0x31')]){_0x4535d7[_0x313ff8[_0xbe93('0x32')][_0xbe93('0x33')]()]=_0x313ff8[_0xbe93('0x34')][_0xbe93('0x35')]();}else if(_[_0xbe93('0x2e')]([_0xbe93('0x36'),_0xbe93('0x2f')],_0x313ff8['type'])&&_0x313ff8[_0xbe93('0x37')]&&_0x313ff8[_0xbe93('0x31')]){_0x4535d7[_0x313ff8['idField'][_0xbe93('0x33')]()]=_0x313ff8['content'][_0xbe93('0x35')]();}else if(_0x313ff8[_0xbe93('0x30')]===_0xbe93('0x38')&&_0x313ff8[_0xbe93('0x39')]&&_0x313ff8[_0xbe93('0x37')]&&_0x313ff8['customField']){_0x4535d7[_0x313ff8['idField'][_0xbe93('0x33')]()]=_0x14f5a1[_0x313ff8[_0xbe93('0x39')]][_0xbe93('0x35')]();}else if(_0x313ff8[_0xbe93('0x30')]==='customVariable'&&_0x313ff8['Variable']&&_0x313ff8[_0xbe93('0x3a')]['name']&&_0x313ff8[_0xbe93('0x37')]&&_0x313ff8[_0xbe93('0x31')]){_0x4535d7[_0x313ff8['idField'][_0xbe93('0x33')]()]=_0x14f5a1[_0x313ff8[_0xbe93('0x3a')]['name'][_0xbe93('0x33')]()][_0xbe93('0x35')]();}});}return _0x4535d7;}function getTicket(_0x1d3e14,_0x3300e3,_0x5b8df6,_0x11dde9,_0x1fc953,_0x5572d8){return function(_0x6752c3){logger[_0xbe93('0x12')]('['+[_0x1d3e14[_0xbe93('0x14')]()]+']\x20getTicket\x20input\x20crm',_0x6752c3);return new Promise(function(_0x3a82e6,_0xdec30c){var _0x3f365a=_0x1d3e14[_0xbe93('0x33')]()===_0xbe93('0x3b')?_0x6752c3[_0xbe93('0x1c')]:_0x6752c3[_0xbe93('0x28')];var _0x10c880={'method':_0xbe93('0x22'),'uri':_0x5b8df6+'incident'+'?'+_0x5572d8,'body':Object['assign']({},{'active':'true','caller_id':_0x3f365a,'assigned_to':_0x6752c3[_0xbe93('0x1c')],'short_description':intUtil['getString'](_0x11dde9[_0xbe93('0x3c')],_0x1fc953,'\x20'),'description':intUtil['getString'](_0x11dde9[_0xbe93('0x3d')],_0x1fc953,'\x0a')},getCustomFields(_0x11dde9[_0xbe93('0x3e')],_0x1fc953)),'auth':_0x3300e3,'json':!![]};return rp(_0x10c880)[_0xbe93('0xd')](function(_0x36708f){logger[_0xbe93('0x12')]('['+[_0x1d3e14['toUpperCase']()]+_0xbe93('0x3f'),_0x36708f['result']);_0x6752c3[_0xbe93('0x40')]=_0x36708f['result'][_0xbe93('0x11')];_0x6752c3['ticketNumber']=_0x36708f[_0xbe93('0xe')][_0xbe93('0x41')];logger[_0xbe93('0x12')]('['+[_0x1d3e14[_0xbe93('0x14')]()]+_0xbe93('0x42'),_0x6752c3);_0x3a82e6(_0x6752c3);})['catch'](function(_0x33efea){logger[_0xbe93('0x1e')]('['+[_0x1d3e14['toUpperCase']()]+']',_0x33efea[_0xbe93('0x1f')]);_0xdec30c(_0x33efea[_0xbe93('0x1f')]);});});};}function createRemoteTag(_0x495dc0,_0x1847f5,_0x49aa4d,_0x56749e){return new Promise(function(_0x3d7d52,_0x54f502){var _0x3d1491={'method':_0xbe93('0x22'),'uri':_0x49aa4d+_0xbe93('0x43')+'?'+_0x56749e,'body':{'short_description':_0x495dc0,'global':!![],'active':!![],'name':_0x495dc0},'auth':_0x1847f5,'json':!![]};return rp(_0x3d1491)[_0xbe93('0xd')](function(_0x31481e){var _0x3a024f=_0x31481e['result'][_0xbe93('0x11')];_0x3d7d52(_0x3a024f);});});}function getRemoteTag(_0xc90c70,_0x5713b3,_0x3b0f48,_0x55d8e2,_0x3e8423){return new Promise(function(_0x3ab5ea,_0x1018c5){var _0x1861e7={'method':_0xbe93('0xb'),'uri':_0x3b0f48+'label'+_0xbe93('0x44')+_0xc90c70+'&'+_0x55d8e2,'auth':_0x5713b3,'json':!![]};return rp(_0x1861e7)[_0xbe93('0xd')](function(_0x4d3772){if(_0x4d3772[_0xbe93('0xe')][_0xbe93('0xf')]>0x0){var _0x8c100e=_0x4d3772['result'][0x0][_0xbe93('0x11')];_0x3ab5ea(_0x8c100e);}else{return createRemoteTag(_0xc90c70,_0x5713b3,_0x3b0f48,_0x55d8e2)['then'](function(_0x39a419){_0x3ab5ea(_0x39a419);});}});});}function assignTagToIncident(_0x4fde9b,_0x4a9d1a,_0x15023b,_0x297227,_0x3398ba){return new Promise(function(_0x5c0b57,_0x3d2fbf){var _0x148adc={'method':_0xbe93('0x22'),'uri':_0x15023b+_0xbe93('0x45')+'?'+_0x3398ba,'body':{'label':_0x4fde9b,'table':'incident','id_type':_0xbe93('0x46'),'table_key':_0x297227[_0xbe93('0x40')],'title':_0xbe93('0x47')+_0x297227[_0xbe93('0x48')],'id_display':_0x297227[_0xbe93('0x48')]},'auth':_0x4a9d1a,'json':!![]};return rp(_0x148adc)['then'](function(_0x4c8382){_0x5c0b57();})[_0xbe93('0x13')](function(){_0x5c0b57();});});}function manageTags(_0x3eadf0,_0x277d3e,_0x43345d,_0x47aee4,_0x43ab8f,_0x452d6e,_0x3d02b4){return new Promise(function(_0x12534d,_0x5c7740){var _0x53841d=[];_0x277d3e[_0xbe93('0x2d')](function(_0x3fedfc){_0x53841d[_0xbe93('0x49')](getRemoteTag(_0x3fedfc,_0x43345d,_0x47aee4,_0x452d6e,_0x3d02b4));});return Promise[_0xbe93('0x4a')](_0x53841d)[_0xbe93('0xd')](function(_0x51ff6b){if(_0x51ff6b[_0xbe93('0xf')]){logger[_0xbe93('0x12')]('['+[_0x3eadf0['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x51ff6b);var _0x308b45=[];_0x51ff6b[_0xbe93('0x2d')](function(_0x4de954){_0x308b45[_0xbe93('0x49')](assignTagToIncident(_0x4de954,_0x43345d,_0x47aee4,_0x43ab8f,_0x452d6e));});return Promise[_0xbe93('0x4a')](_0x308b45)[_0xbe93('0xd')](function(){_0x12534d();})[_0xbe93('0x13')](function(){_0x12534d();});}else{_0x12534d();}});});}function getTags(_0xc64d9c,_0x112a87,_0x382784,_0x5a2018,_0x368f7f,_0x571183){return function(_0x1c22bb){return new Promise(function(_0x3a2a4c,_0x4e0654){var _0x48973f=[];var _0x2cd191=_0x5a2018[_0xbe93('0x4b')];if(_0x2cd191&&_0x2cd191['length']>0x0){_0x48973f=_['map'](_0x2cd191,_0xbe93('0x4c'));}if(_0x48973f[_0xbe93('0xf')]>0x0){return manageTags(_0xc64d9c,_0x48973f,_0x112a87,_0x382784,_0x1c22bb,_0x368f7f,_0x571183)[_0xbe93('0xd')](function(){_0x3a2a4c(_0x1c22bb);});}else{_0x3a2a4c(_0x1c22bb);}});};}function emit(_0x5c5c6d,_0x811f59,_0x2190c4){var _0x1e112a='%26sysparm_record_target%3Dincident'+_0xbe93('0x4d')+_0xbe93('0x4e')+_0xbe93('0x4f');var _0x10fc6f={'uri':_0x5c5c6d+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x2190c4+_0x1e112a};io['to'](util['format'](_0xbe93('0x50'),_0x811f59))['emit'](_0xbe93('0x51'),_0x10fc6f);}exports['cs']=function(_0xf3f489,_0x1951b9,_0x1e4a32,_0x1b5870,_0x18043f,_0x265012,_0x429d3d,_0x339176){var _0x3b5d4d={};var _0x28d532={'user':_0x265012[_0xbe93('0x52')],'pass':_0x265012[_0xbe93('0x53')]};var _0x54aac8=_0xbe93('0x54');var _0x1a86d7=_0xbe93('0x55');_0x265012[_0xbe93('0x56')]=intUtil['stripTrailingSlash'](_0x265012[_0xbe93('0x56')]);_0x265012[_0xbe93('0x57')]=intUtil[_0xbe93('0x58')](_0x265012[_0xbe93('0x57')]);var _0x37cddf=util[_0xbe93('0x59')]('%s/api/now/table/',_0x265012[_0xbe93('0x56')]);_0x3b5d4d[_0xbe93('0x17')]=!_[_0xbe93('0x5a')](_0x1b5870)?_0x1b5870[_0xbe93('0x5b')]:null;_0x3b5d4d[_0xbe93('0x1d')]=_0x265012['email'];_0x3b5d4d[_0xbe93('0x24')]=_0x339176['toLowerCase']()===_0xbe93('0x3b')?_0x1951b9[_0xbe93('0x5c')]:_0x1951b9['calleridnum'];_0x3b5d4d['callDirection']=_0x339176===_0xbe93('0x5d')||_0x339176===_0xbe93('0x5e')?_0xbe93('0x5d'):'outbound';var _0x48b818=util['format'](_0xbe93('0x5f'),_0x265012[_0xbe93('0x57')],_0x1951b9[_0xbe93('0x60')],md5(_0x1951b9[_0xbe93('0x60')]));if(_0x18043f&&_0x18043f[_0xbe93('0x61')]){logger[_0xbe93('0x12')](_0xbe93('0x62'),_0xbe93('0x63'));_0x1951b9[_0xbe93('0x64')]=_0x48b818;}else if(_0x429d3d&&_0x429d3d[_0xbe93('0x65')]&&_0x429d3d[_0xbe93('0x65')]!=='none'){logger['info'](_0xbe93('0x66'),_0xbe93('0x63'));_0x1951b9[_0xbe93('0x64')]=_0x48b818;}else{_0x1951b9[_0xbe93('0x64')]='';}return getAdminUser(_0x339176,_0x28d532,_0x3b5d4d,_0x37cddf,_0x1a86d7,_0x54aac8)[_0xbe93('0xd')](getUser(_0x339176,_0x28d532,_0x37cddf,_0x1a86d7,_0x54aac8))[_0xbe93('0xd')](getEndUser(_0x339176,_0x28d532,_0x37cddf,_0x1a86d7,_0x54aac8))[_0xbe93('0xd')](getTicket(_0x339176,_0x28d532,_0x37cddf,_0x1e4a32,_0x1951b9,_0x1a86d7))[_0xbe93('0xd')](function(_0x5a4c9c){logger[_0xbe93('0x12')](util[_0xbe93('0x59')](_0xbe93('0x67'),_0x5a4c9c['ticketId']));logger[_0xbe93('0x12')](util[_0xbe93('0x59')](_0xbe93('0x68'),_0x339176));if(_0x339176!==_0xbe93('0x5e')){logger[_0xbe93('0x12')]('['+[_0x339176[_0xbe93('0x14')]()]+']',_0xbe93('0x69'));emit(_0x265012['remoteUri'],_0x1b5870['name'],_0x5a4c9c[_0xbe93('0x40')]);}})['catch'](function(_0x4d4707){logger[_0xbe93('0x1e')]('['+[_0x339176['toUpperCase']()]+_0xbe93('0x6a'),util[_0xbe93('0x6b')](_0x4d4707,{'showHidden':!![],'depth':null}));});};