dc3a23c08a2781e9f59b7f0e6a630201978106b0
[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 _0xd943=['[QUEUE]','Recording\x20is\x20enabled!','recordingURL','none','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','md5','../../../../config/environment','redis','defaults','localhost','sys_user?sysparm_query=user_name%3Dadmin','result','sys_id','toUpperCase','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','length','active','true','userId','adminId','],\x20getUser\x20crm','error','adminEmail','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','System','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','catch','forEach','includes','type','nameField','toLowerCase','content','toString','string','picklist','idField','customField','variable','variableName','Variable','outbound','incident','assign','getString','Descriptions','Fields','ticketId','ticketNumber',']\x20getTicket\x20crm','label','label_entry','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','name','%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','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','format','isNil','email','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xd943,0x13c));var _0x3d94=function(_0x56cfc8,_0x8cc01e){_0x56cfc8=_0x56cfc8-0x0;var _0x3acdee=_0xd943[_0x56cfc8];return _0x3acdee;};'use strict';var _=require(_0x3d94('0x0'));var Promise=require('bluebird');var rp=require(_0x3d94('0x1'));var util=require(_0x3d94('0x2'));var md5=require(_0x3d94('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x3d94('0x4'));var logger=require('../../../../config/logger')('servicenow');config[_0x3d94('0x5')]=_[_0x3d94('0x6')](config[_0x3d94('0x5')],{'host':_0x3d94('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3d94('0x5')]));function getAdminUser(_0x40fa13,_0xc82d2a,_0x43e380,_0x125b55,_0x45e5b2,_0x1aaf2c){return new Promise(function(_0xd95af6,_0x4b1422){var _0x1b1fae={'method':'GET','uri':_0x125b55+_0x3d94('0x8')+'&'+_0x45e5b2+'&'+_0x1aaf2c,'auth':_0xc82d2a,'json':!![]};return rp(_0x1b1fae)['then'](function(_0x43e3dc){if(_0x43e3dc[_0x3d94('0x9')]['length']>0x0){_0x43e380['adminId']=_0x43e3dc[_0x3d94('0x9')][0x0][_0x3d94('0xa')];}logger['info']('['+[_0x40fa13['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x43e380);_0xd95af6(_0x43e380);})['catch'](function(_0x2404a0){logger['error']('['+[_0x40fa13[_0x3d94('0xb')]()]+']',_0x2404a0[_0x3d94('0xc')]);_0x4b1422(_0x2404a0['message']);});});}function getUser(_0x573de7,_0xa0501,_0x5a2b33,_0x4fcd34,_0x15e083){return function(_0x168ca7){logger[_0x3d94('0xd')]('['+[_0x573de7[_0x3d94('0xb')]()]+_0x3d94('0xe'),_0x168ca7);return new Promise(function(_0x27dfe7,_0x40df53){if(intUtil[_0x3d94('0xf')](_0x168ca7[_0x3d94('0x10')])){var _0x140fbb={'method':_0x3d94('0x11'),'uri':_0x5a2b33+'sys_user?sysparm_query=email%3D'+_0x168ca7[_0x3d94('0x10')]+'&'+_0x4fcd34+'&'+_0x15e083,'auth':_0xa0501,'json':!![]};logger['info']('['+[_0x573de7['toUpperCase']()]+_0x3d94('0x12'),_0x140fbb);return rp(_0x140fbb)[_0x3d94('0x13')](function(_0x21eabe){logger[_0x3d94('0xd')]('['+[_0x573de7[_0x3d94('0xb')]()]+_0x3d94('0x14'),_0x21eabe);if(_0x21eabe[_0x3d94('0x9')][_0x3d94('0x15')]>0x0&&String(_0x21eabe[_0x3d94('0x9')][0x0][_0x3d94('0x16')])===_0x3d94('0x17')){_0x168ca7[_0x3d94('0x18')]=_0x21eabe['result'][0x0]['sys_id'];}else{_0x168ca7[_0x3d94('0x18')]=_0x168ca7[_0x3d94('0x19')];_0x168ca7[_0x3d94('0x10')]=_0x168ca7['adminEmail'];}logger[_0x3d94('0xd')]('['+[_0x573de7[_0x3d94('0xb')]()]+_0x3d94('0x1a'),_0x168ca7);_0x27dfe7(_0x168ca7);})['catch'](function(_0x415146){logger[_0x3d94('0x1b')]('['+[_0x573de7[_0x3d94('0xb')]()]+']',_0x415146['message']);_0x40df53(_0x415146[_0x3d94('0xc')]);});}else{logger[_0x3d94('0xd')]('['+[_0x573de7[_0x3d94('0xb')]()]+']\x20using\x20admin\x20profile');_0x168ca7['userId']=_0x168ca7[_0x3d94('0x19')];_0x168ca7['userEmail']=_0x168ca7[_0x3d94('0x1c')];_0x27dfe7(_0x168ca7);}});};}function createEndUser(_0x1dfeda,_0x50ddb8,_0x21cfe8,_0xf7c2e6,_0x35dd98){logger[_0x3d94('0xd')]('['+[_0x1dfeda[_0x3d94('0xb')]()]+_0x3d94('0x1d'),_0x21cfe8);return new Promise(function(_0x1dd313,_0x48360b){var _0x4ef683={'method':_0x3d94('0x1e'),'uri':_0xf7c2e6+_0x3d94('0x1f')+_0x35dd98,'body':{'user_name':_0x21cfe8[_0x3d94('0x20')],'roles':'user','first_name':_0x21cfe8[_0x3d94('0x20')],'active':_0x3d94('0x17'),'date_format':_0x3d94('0x21'),'phone':_0x21cfe8['endUserNumber']},'auth':_0x50ddb8,'json':!![]};return rp(_0x4ef683)['then'](function(_0x14a610){logger[_0x3d94('0xd')]('['+[_0x1dfeda['toUpperCase']()]+'],\x20EndUser\x20schema',_0x14a610['result']);_0x21cfe8[_0x3d94('0x22')]=_0x14a610[_0x3d94('0x9')]['sys_id'];_0x1dd313(_0x21cfe8);})['catch'](function(_0x3223fe){logger['error']('['+[_0x1dfeda[_0x3d94('0xb')]()]+']',_0x3223fe[_0x3d94('0xc')]);_0x48360b(_0x3223fe[_0x3d94('0xc')]);});});}function getEndUser(_0x5ca4f8,_0x148e86,_0x1b0610,_0x36bad0,_0x7a51f4){return function(_0x14c53c){logger['info']('['+[_0x5ca4f8['toUpperCase']()]+_0x3d94('0x23'),_0x14c53c);return new Promise(function(_0x18c788,_0x82bec4){var _0x143b7c={'method':_0x3d94('0x11'),'uri':_0x1b0610+_0x3d94('0x24')+_0x14c53c[_0x3d94('0x20')]+'&'+_0x36bad0+'&'+_0x7a51f4,'auth':_0x148e86,'json':!![]};return rp(_0x143b7c)[_0x3d94('0x13')](function(_0x32d7b8){if(_0x32d7b8['result'][_0x3d94('0x15')]>0x0){_0x14c53c[_0x3d94('0x22')]=_0x32d7b8['result'][0x0][_0x3d94('0xa')];logger['info']('['+[_0x5ca4f8[_0x3d94('0xb')]()]+_0x3d94('0x25'),_0x14c53c);_0x18c788(_0x14c53c);}else{return createEndUser(_0x5ca4f8,_0x148e86,_0x14c53c,_0x1b0610,_0x36bad0)[_0x3d94('0x13')](function(_0x512fa2){logger[_0x3d94('0xd')]('['+[_0x5ca4f8[_0x3d94('0xb')]()]+_0x3d94('0x26'),_0x512fa2);_0x18c788(_0x512fa2);});}})[_0x3d94('0x27')](function(_0x4d8df0){logger['error']('['+[_0x5ca4f8['toUpperCase']()]+']',_0x4d8df0['message']);_0x82bec4(_0x4d8df0[_0x3d94('0xc')]);});});};}function getCustomFields(_0x5c16c6,_0xf1aaec){var _0x8dbf87={};if(_0x5c16c6[_0x3d94('0x15')]>0x0){_[_0x3d94('0x28')](_0x5c16c6,function(_0x37bfba){if(_[_0x3d94('0x29')](['string','picklist'],_0x37bfba[_0x3d94('0x2a')])&&_0x37bfba[_0x3d94('0x2b')]&&!_0x37bfba['customField']){_0x8dbf87[_0x37bfba[_0x3d94('0x2b')][_0x3d94('0x2c')]()]=_0x37bfba[_0x3d94('0x2d')][_0x3d94('0x2e')]();}else if(_['includes']([_0x3d94('0x2f'),_0x3d94('0x30')],_0x37bfba[_0x3d94('0x2a')])&&_0x37bfba[_0x3d94('0x31')]&&_0x37bfba[_0x3d94('0x32')]){_0x8dbf87[_0x37bfba[_0x3d94('0x31')][_0x3d94('0x2c')]()]=_0x37bfba['content'][_0x3d94('0x2e')]();}else if(_0x37bfba[_0x3d94('0x2a')]===_0x3d94('0x33')&&_0x37bfba['variableName']&&_0x37bfba[_0x3d94('0x31')]&&_0x37bfba[_0x3d94('0x32')]){_0x8dbf87[_0x37bfba[_0x3d94('0x31')][_0x3d94('0x2c')]()]=_0xf1aaec[_0x37bfba[_0x3d94('0x34')]][_0x3d94('0x2e')]();}else if(_0x37bfba[_0x3d94('0x2a')]==='customVariable'&&_0x37bfba[_0x3d94('0x35')]&&_0x37bfba[_0x3d94('0x35')]['name']&&_0x37bfba['idField']&&_0x37bfba[_0x3d94('0x32')]){_0x8dbf87[_0x37bfba[_0x3d94('0x31')][_0x3d94('0x2c')]()]=_0xf1aaec[_0x37bfba[_0x3d94('0x35')]['name']['toLowerCase']()]['toString']();}});}return _0x8dbf87;}function getTicket(_0x3cb438,_0x2cd6f4,_0x39d0f2,_0x534098,_0x248941,_0x41bdcb){return function(_0x1ab370){logger[_0x3d94('0xd')]('['+[_0x3cb438[_0x3d94('0xb')]()]+']\x20getTicket\x20input\x20crm',_0x1ab370);return new Promise(function(_0xb4f75e,_0xe66f28){var _0x3a3ae5=_0x3cb438[_0x3d94('0x2c')]()===_0x3d94('0x36')?_0x1ab370[_0x3d94('0x18')]:_0x1ab370[_0x3d94('0x22')];var _0x2b0741={'method':_0x3d94('0x1e'),'uri':_0x39d0f2+_0x3d94('0x37')+'?'+_0x41bdcb,'body':Object[_0x3d94('0x38')]({},{'active':'true','caller_id':_0x3a3ae5,'assigned_to':_0x1ab370[_0x3d94('0x18')],'short_description':intUtil[_0x3d94('0x39')](_0x534098['Subjects'],_0x248941,'\x20'),'description':intUtil[_0x3d94('0x39')](_0x534098[_0x3d94('0x3a')],_0x248941,'\x0a')},getCustomFields(_0x534098[_0x3d94('0x3b')],_0x248941)),'auth':_0x2cd6f4,'json':!![]};return rp(_0x2b0741)[_0x3d94('0x13')](function(_0x14817e){logger[_0x3d94('0xd')]('['+[_0x3cb438[_0x3d94('0xb')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x14817e[_0x3d94('0x9')]);_0x1ab370[_0x3d94('0x3c')]=_0x14817e[_0x3d94('0x9')][_0x3d94('0xa')];_0x1ab370[_0x3d94('0x3d')]=_0x14817e[_0x3d94('0x9')]['number'];logger[_0x3d94('0xd')]('['+[_0x3cb438[_0x3d94('0xb')]()]+_0x3d94('0x3e'),_0x1ab370);_0xb4f75e(_0x1ab370);})[_0x3d94('0x27')](function(_0x16c401){logger[_0x3d94('0x1b')]('['+[_0x3cb438['toUpperCase']()]+']',_0x16c401[_0x3d94('0xc')]);_0xe66f28(_0x16c401[_0x3d94('0xc')]);});});};}function createRemoteTag(_0x23d0e8,_0x81d0e,_0x3e11b9,_0xe2affd){return new Promise(function(_0x39e2cc,_0x55713a){var _0x4e97a4={'method':_0x3d94('0x1e'),'uri':_0x3e11b9+_0x3d94('0x3f')+'?'+_0xe2affd,'body':{'short_description':_0x23d0e8,'global':!![],'active':!![],'name':_0x23d0e8},'auth':_0x81d0e,'json':!![]};return rp(_0x4e97a4)[_0x3d94('0x13')](function(_0x500510){var _0x353502=_0x500510[_0x3d94('0x9')][_0x3d94('0xa')];_0x39e2cc(_0x353502);});});}function getRemoteTag(_0x44be20,_0x309615,_0x1ec255,_0x347a88,_0x4b27a8){return new Promise(function(_0x22794c,_0x2a11a7){var _0x51bddf={'method':_0x3d94('0x11'),'uri':_0x1ec255+_0x3d94('0x3f')+'?sysparm_query=name%3D'+_0x44be20+'&'+_0x347a88,'auth':_0x309615,'json':!![]};return rp(_0x51bddf)[_0x3d94('0x13')](function(_0xa995ee){if(_0xa995ee[_0x3d94('0x9')][_0x3d94('0x15')]>0x0){var _0x23eb67=_0xa995ee[_0x3d94('0x9')][0x0][_0x3d94('0xa')];_0x22794c(_0x23eb67);}else{return createRemoteTag(_0x44be20,_0x309615,_0x1ec255,_0x347a88)[_0x3d94('0x13')](function(_0xa5c26a){_0x22794c(_0xa5c26a);});}});});}function assignTagToIncident(_0x2db0d8,_0x2ae165,_0x4a71b6,_0x3272ed,_0x7bb05a){return new Promise(function(_0x51e6ac,_0x2e87e2){var _0x5d38c9={'method':'POST','uri':_0x4a71b6+_0x3d94('0x40')+'?'+_0x7bb05a,'body':{'label':_0x2db0d8,'table':_0x3d94('0x37'),'id_type':_0x3d94('0x41'),'table_key':_0x3272ed[_0x3d94('0x3c')],'title':_0x3d94('0x42')+_0x3272ed[_0x3d94('0x3d')],'id_display':_0x3272ed[_0x3d94('0x3d')]},'auth':_0x2ae165,'json':!![]};return rp(_0x5d38c9)[_0x3d94('0x13')](function(_0x422aa8){_0x51e6ac();})['catch'](function(){_0x51e6ac();});});}function manageTags(_0x210a54,_0x330629,_0x53a27e,_0x1036ad,_0xb0723,_0x34cf09,_0x503f35){return new Promise(function(_0x3b38a9,_0x5eb28d){var _0xb98756=[];_0x330629[_0x3d94('0x28')](function(_0x2ef38b){_0xb98756[_0x3d94('0x43')](getRemoteTag(_0x2ef38b,_0x53a27e,_0x1036ad,_0x34cf09,_0x503f35));});return Promise[_0x3d94('0x44')](_0xb98756)[_0x3d94('0x13')](function(_0xce28e2){if(_0xce28e2[_0x3d94('0x15')]){logger['info']('['+[_0x210a54[_0x3d94('0xb')]()]+_0x3d94('0x45'),_0xce28e2);var _0x107a0c=[];_0xce28e2[_0x3d94('0x28')](function(_0x58c5cc){_0x107a0c['push'](assignTagToIncident(_0x58c5cc,_0x53a27e,_0x1036ad,_0xb0723,_0x34cf09));});return Promise[_0x3d94('0x44')](_0x107a0c)[_0x3d94('0x13')](function(){_0x3b38a9();})['catch'](function(){_0x3b38a9();});}else{_0x3b38a9();}});});}function getTags(_0x10f9d1,_0x2adb24,_0x25c612,_0x53e7ea,_0x216bb6,_0x52e576){return function(_0x74389c){return new Promise(function(_0x33ea8e,_0x103486){var _0x4c062a=[];var _0x93703a=_0x53e7ea[_0x3d94('0x46')];if(_0x93703a&&_0x93703a['length']>0x0){_0x4c062a=_[_0x3d94('0x47')](_0x93703a,_0x3d94('0x48'));}if(_0x4c062a[_0x3d94('0x15')]>0x0){return manageTags(_0x10f9d1,_0x4c062a,_0x2adb24,_0x25c612,_0x74389c,_0x216bb6,_0x52e576)[_0x3d94('0x13')](function(){_0x33ea8e(_0x74389c);});}else{_0x33ea8e(_0x74389c);}});};}function emit(_0x1a7ce9,_0x5dd536,_0x25ef88){var _0x531875=_0x3d94('0x49')+_0x3d94('0x4a')+_0x3d94('0x4b')+_0x3d94('0x4c');var _0x1e2d05={'uri':_0x1a7ce9+_0x3d94('0x4d')+_0x25ef88+_0x531875};io['to'](util['format'](_0x3d94('0x4e'),_0x5dd536))[_0x3d94('0x4f')](_0x3d94('0x50'),_0x1e2d05);}exports['cs']=function(_0x11a52e,_0xf49382,_0x3e05dd,_0x4347e8,_0x38959f,_0x3c5278,_0x47b033,_0x544425){var _0x1c1b91={};var _0x2a76ff={'user':_0x3c5278[_0x3d94('0x51')],'pass':_0x3c5278[_0x3d94('0x52')]};var _0x3eba60=_0x3d94('0x53');var _0x42f677=_0x3d94('0x54');_0x3c5278[_0x3d94('0x55')]=intUtil['stripTrailingSlash'](_0x3c5278[_0x3d94('0x55')]);_0x3c5278['serverUrl']=intUtil[_0x3d94('0x56')](_0x3c5278[_0x3d94('0x57')]);var _0x3b245e=util[_0x3d94('0x58')]('%s/api/now/table/',_0x3c5278[_0x3d94('0x55')]);_0x1c1b91['userEmail']=!_[_0x3d94('0x59')](_0x4347e8)?_0x4347e8['email']:null;_0x1c1b91[_0x3d94('0x1c')]=_0x3c5278[_0x3d94('0x5a')];_0x1c1b91[_0x3d94('0x20')]=_0x544425['toLowerCase']()===_0x3d94('0x36')?_0xf49382['destcalleridnum']:_0xf49382['calleridnum'];_0x1c1b91[_0x3d94('0x5b')]=_0x544425==='queue'||_0x544425===_0x3d94('0x5c')?_0x3d94('0x5d'):_0x3d94('0x36');var _0x5e99dc=util[_0x3d94('0x58')](_0x3d94('0x5e'),_0x3c5278['serverUrl'],_0xf49382['uniqueid'],md5(_0xf49382[_0x3d94('0x5f')]));if(_0x38959f&&_0x38959f['monitor_format']){logger[_0x3d94('0xd')](_0x3d94('0x60'),_0x3d94('0x61'));_0xf49382[_0x3d94('0x62')]=_0x5e99dc;}else if(_0x47b033&&_0x47b033['recordingFormat']&&_0x47b033['recordingFormat']!==_0x3d94('0x63')){logger[_0x3d94('0xd')]('[OUTBOUND]',_0x3d94('0x61'));_0xf49382['recordingURL']=_0x5e99dc;}else{_0xf49382[_0x3d94('0x62')]='';}return getAdminUser(_0x544425,_0x2a76ff,_0x1c1b91,_0x3b245e,_0x42f677,_0x3eba60)[_0x3d94('0x13')](getUser(_0x544425,_0x2a76ff,_0x3b245e,_0x42f677,_0x3eba60))[_0x3d94('0x13')](getEndUser(_0x544425,_0x2a76ff,_0x3b245e,_0x42f677,_0x3eba60))['then'](getTicket(_0x544425,_0x2a76ff,_0x3b245e,_0x3e05dd,_0xf49382,_0x42f677))[_0x3d94('0x13')](function(_0x4e9432){logger[_0x3d94('0xd')](util[_0x3d94('0x58')](_0x3d94('0x64'),_0x4e9432[_0x3d94('0x3c')]));logger[_0x3d94('0xd')](util[_0x3d94('0x58')]('call\x20direction:\x20%s',_0x544425));if(_0x544425!==_0x3d94('0x5c')){logger[_0x3d94('0xd')]('['+[_0x544425['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x3c5278[_0x3d94('0x55')],_0x4347e8[_0x3d94('0x48')],_0x4e9432[_0x3d94('0x3c')]);}})[_0x3d94('0x27')](function(_0x25cac9){logger[_0x3d94('0x1b')]('['+[_0x544425[_0x3d94('0xb')]()]+_0x3d94('0x65'),util[_0x3d94('0x66')](_0x25cac9,{'showHidden':!![],'depth':null}));});};