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 _0xb1a5=['user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','remoteUri','stripTrailingSlash','%s/api/now/table/','email','adminEmail','destcalleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','result','adminId','sys_id','info','toUpperCase','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','length','active','userId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','true','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','string','picklist','type','nameField','content','toString','includes','idField','customField','toLowerCase','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign','getString','Subjects','Descriptions','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','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format'];(function(_0x12309b,_0x59dd8c){var _0x482e4d=function(_0x308407){while(--_0x308407){_0x12309b['push'](_0x12309b['shift']());}};_0x482e4d(++_0x59dd8c);}(_0xb1a5,0x8a));var _0x5b1a=function(_0x7aafa0,_0x3377c8){_0x7aafa0=_0x7aafa0-0x0;var _0x315548=_0xb1a5[_0x7aafa0];return _0x315548;};'use strict';var _=require(_0x5b1a('0x0'));var Promise=require(_0x5b1a('0x1'));var rp=require(_0x5b1a('0x2'));var util=require(_0x5b1a('0x3'));var md5=require(_0x5b1a('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x5b1a('0x5'));var logger=require(_0x5b1a('0x6'))(_0x5b1a('0x7'));config[_0x5b1a('0x8')]=_[_0x5b1a('0x9')](config['redis'],{'host':_0x5b1a('0xa'),'port':0x18eb});var io=require(_0x5b1a('0xb'))(new Redis(config[_0x5b1a('0x8')]));function getAdminUser(_0x8e03ab,_0x829b48,_0x321544,_0x417fa3,_0x3ca2be,_0x421b50){return new Promise(function(_0x51a16a,_0x4b06f5){var _0x4d8569={'method':'GET','uri':_0x417fa3+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x3ca2be+'&'+_0x421b50,'auth':_0x829b48,'json':!![]};return rp(_0x4d8569)['then'](function(_0x169ac5){if(_0x169ac5[_0x5b1a('0xc')]['length']>0x0){_0x321544[_0x5b1a('0xd')]=_0x169ac5['result'][0x0][_0x5b1a('0xe')];}logger[_0x5b1a('0xf')]('['+[_0x8e03ab[_0x5b1a('0x10')]()]+'],\x20getAdminUser\x20crm',_0x321544);_0x51a16a(_0x321544);})[_0x5b1a('0x11')](function(_0x42de72){logger[_0x5b1a('0x12')]('['+[_0x8e03ab[_0x5b1a('0x10')]()]+']',_0x42de72[_0x5b1a('0x13')]);_0x4b06f5(_0x42de72[_0x5b1a('0x13')]);});});}function getUser(_0x3ef7db,_0x42846b,_0x45536b,_0x108d15,_0x1ea7ec){return function(_0x423a7a){logger[_0x5b1a('0xf')]('['+[_0x3ef7db[_0x5b1a('0x10')]()]+_0x5b1a('0x14'),_0x423a7a);return new Promise(function(_0x24e858,_0x205980){if(intUtil[_0x5b1a('0x15')](_0x423a7a[_0x5b1a('0x16')])){var _0x108493={'method':_0x5b1a('0x17'),'uri':_0x45536b+'sys_user?sysparm_query=email%3D'+_0x423a7a[_0x5b1a('0x16')]+'&'+_0x108d15+'&'+_0x1ea7ec,'auth':_0x42846b,'json':!![]};logger[_0x5b1a('0xf')]('['+[_0x3ef7db[_0x5b1a('0x10')]()]+_0x5b1a('0x18'),_0x108493);return rp(_0x108493)[_0x5b1a('0x19')](function(_0x14d2f8){logger[_0x5b1a('0xf')]('['+[_0x3ef7db[_0x5b1a('0x10')]()]+_0x5b1a('0x1a'),_0x14d2f8);if(_0x14d2f8['result'][_0x5b1a('0x1b')]>0x0&&String(_0x14d2f8[_0x5b1a('0xc')][0x0][_0x5b1a('0x1c')])==='true'){_0x423a7a[_0x5b1a('0x1d')]=_0x14d2f8[_0x5b1a('0xc')][0x0][_0x5b1a('0xe')];}else{_0x423a7a[_0x5b1a('0x1d')]=_0x423a7a[_0x5b1a('0xd')];_0x423a7a[_0x5b1a('0x16')]=_0x423a7a['adminEmail'];}logger[_0x5b1a('0xf')]('['+[_0x3ef7db['toUpperCase']()]+_0x5b1a('0x1e'),_0x423a7a);_0x24e858(_0x423a7a);})[_0x5b1a('0x11')](function(_0x504526){logger[_0x5b1a('0x12')]('['+[_0x3ef7db[_0x5b1a('0x10')]()]+']',_0x504526['message']);_0x205980(_0x504526['message']);});}else{logger[_0x5b1a('0xf')]('['+[_0x3ef7db[_0x5b1a('0x10')]()]+_0x5b1a('0x1f'));_0x423a7a[_0x5b1a('0x1d')]=_0x423a7a[_0x5b1a('0xd')];_0x423a7a[_0x5b1a('0x16')]=_0x423a7a['adminEmail'];_0x24e858(_0x423a7a);}});};}function createEndUser(_0x16e647,_0x755d89,_0x1838ff,_0x2ef92e,_0x468295){logger[_0x5b1a('0xf')]('['+[_0x16e647[_0x5b1a('0x10')]()]+_0x5b1a('0x20'),_0x1838ff);return new Promise(function(_0x5f3959,_0x50b866){var _0x467e95={'method':_0x5b1a('0x21'),'uri':_0x2ef92e+_0x5b1a('0x22')+_0x468295,'body':{'user_name':_0x1838ff[_0x5b1a('0x23')],'roles':'user','first_name':_0x1838ff[_0x5b1a('0x23')],'active':_0x5b1a('0x24'),'date_format':_0x5b1a('0x25'),'phone':_0x1838ff['endUserNumber']},'auth':_0x755d89,'json':!![]};return rp(_0x467e95)[_0x5b1a('0x19')](function(_0x27ba9a){logger['info']('['+[_0x16e647[_0x5b1a('0x10')]()]+_0x5b1a('0x26'),_0x27ba9a[_0x5b1a('0xc')]);_0x1838ff['endUserId']=_0x27ba9a[_0x5b1a('0xc')][_0x5b1a('0xe')];_0x5f3959(_0x1838ff);})[_0x5b1a('0x11')](function(_0x44675e){logger[_0x5b1a('0x12')]('['+[_0x16e647['toUpperCase']()]+']',_0x44675e[_0x5b1a('0x13')]);_0x50b866(_0x44675e[_0x5b1a('0x13')]);});});}function getEndUser(_0x14bc2a,_0x4e0214,_0x58232b,_0x2270b6,_0x4a4c42){return function(_0x55f4d7){logger['info']('['+[_0x14bc2a[_0x5b1a('0x10')]()]+_0x5b1a('0x27'),_0x55f4d7);return new Promise(function(_0x531d22,_0x3a562b){var _0x3b92f2={'method':_0x5b1a('0x17'),'uri':_0x58232b+'sys_user?sysparm_query=phone%3D'+_0x55f4d7[_0x5b1a('0x23')]+'&'+_0x2270b6+'&'+_0x4a4c42,'auth':_0x4e0214,'json':!![]};return rp(_0x3b92f2)[_0x5b1a('0x19')](function(_0x49ec6f){if(_0x49ec6f[_0x5b1a('0xc')]['length']>0x0){_0x55f4d7[_0x5b1a('0x28')]=_0x49ec6f[_0x5b1a('0xc')][0x0]['sys_id'];logger['info']('['+[_0x14bc2a['toUpperCase']()]+_0x5b1a('0x29'),_0x55f4d7);_0x531d22(_0x55f4d7);}else{return createEndUser(_0x14bc2a,_0x4e0214,_0x55f4d7,_0x58232b,_0x2270b6)['then'](function(_0x2b9145){logger['info']('['+[_0x14bc2a['toUpperCase']()]+_0x5b1a('0x2a'),_0x2b9145);_0x531d22(_0x2b9145);});}})[_0x5b1a('0x11')](function(_0x530bbe){logger[_0x5b1a('0x12')]('['+[_0x14bc2a['toUpperCase']()]+']',_0x530bbe['message']);_0x3a562b(_0x530bbe[_0x5b1a('0x13')]);});});};}function getCustomFields(_0x4a7c05,_0x50b1df){var _0x204909={};if(_0x4a7c05[_0x5b1a('0x1b')]>0x0){_[_0x5b1a('0x2b')](_0x4a7c05,function(_0x190f6f){if(_['includes']([_0x5b1a('0x2c'),_0x5b1a('0x2d')],_0x190f6f[_0x5b1a('0x2e')])&&_0x190f6f[_0x5b1a('0x2f')]&&!_0x190f6f['customField']){_0x204909[_0x190f6f[_0x5b1a('0x2f')]['toLowerCase']()]=_0x190f6f[_0x5b1a('0x30')][_0x5b1a('0x31')]();}else if(_[_0x5b1a('0x32')]([_0x5b1a('0x2c'),_0x5b1a('0x2d')],_0x190f6f[_0x5b1a('0x2e')])&&_0x190f6f[_0x5b1a('0x33')]&&_0x190f6f[_0x5b1a('0x34')]){_0x204909[_0x190f6f[_0x5b1a('0x33')][_0x5b1a('0x35')]()]=_0x190f6f[_0x5b1a('0x30')][_0x5b1a('0x31')]();}else if(_0x190f6f[_0x5b1a('0x2e')]==='variable'&&_0x190f6f['variableName']&&_0x190f6f[_0x5b1a('0x33')]&&_0x190f6f[_0x5b1a('0x34')]){_0x204909[_0x190f6f['idField'][_0x5b1a('0x35')]()]=_0x50b1df[_0x190f6f[_0x5b1a('0x36')]][_0x5b1a('0x31')]();}else if(_0x190f6f[_0x5b1a('0x2e')]===_0x5b1a('0x37')&&_0x190f6f['Variable']&&_0x190f6f[_0x5b1a('0x38')][_0x5b1a('0x39')]&&_0x190f6f[_0x5b1a('0x33')]&&_0x190f6f[_0x5b1a('0x34')]){_0x204909[_0x190f6f['idField']['toLowerCase']()]=_0x50b1df[_0x190f6f[_0x5b1a('0x38')][_0x5b1a('0x39')]['toLowerCase']()][_0x5b1a('0x31')]();}});}return _0x204909;}function getTicket(_0x274f79,_0x4384dd,_0x5ebb82,_0xb569e6,_0x275a94,_0x3f6f6d){return function(_0x1c14b4){logger[_0x5b1a('0xf')]('['+[_0x274f79[_0x5b1a('0x10')]()]+_0x5b1a('0x3a'),_0x1c14b4);return new Promise(function(_0x59e622,_0x2c185b){var _0x268773=_0x274f79['toLowerCase']()==='outbound'?_0x1c14b4[_0x5b1a('0x1d')]:_0x1c14b4[_0x5b1a('0x28')];var _0x36c0bf={'method':'POST','uri':_0x5ebb82+_0x5b1a('0x3b')+'?'+_0x3f6f6d,'body':Object[_0x5b1a('0x3c')]({},{'active':'true','caller_id':_0x268773,'assigned_to':_0x1c14b4[_0x5b1a('0x1d')],'short_description':intUtil[_0x5b1a('0x3d')](_0xb569e6[_0x5b1a('0x3e')],_0x275a94,'\x20'),'description':intUtil[_0x5b1a('0x3d')](_0xb569e6[_0x5b1a('0x3f')],_0x275a94,'\x0a')},getCustomFields(_0xb569e6[_0x5b1a('0x40')],_0x275a94)),'auth':_0x4384dd,'json':!![]};return rp(_0x36c0bf)['then'](function(_0x4b1985){logger['info']('['+[_0x274f79[_0x5b1a('0x10')]()]+_0x5b1a('0x41'),_0x4b1985[_0x5b1a('0xc')]);_0x1c14b4[_0x5b1a('0x42')]=_0x4b1985[_0x5b1a('0xc')][_0x5b1a('0xe')];_0x1c14b4[_0x5b1a('0x43')]=_0x4b1985[_0x5b1a('0xc')][_0x5b1a('0x44')];logger[_0x5b1a('0xf')]('['+[_0x274f79['toUpperCase']()]+_0x5b1a('0x45'),_0x1c14b4);_0x59e622(_0x1c14b4);})[_0x5b1a('0x11')](function(_0x5501e4){logger['error']('['+[_0x274f79[_0x5b1a('0x10')]()]+']',_0x5501e4[_0x5b1a('0x13')]);_0x2c185b(_0x5501e4[_0x5b1a('0x13')]);});});};}function createRemoteTag(_0x377e37,_0x5cfc95,_0x398ea4,_0x21d227){return new Promise(function(_0x205ed4,_0x552e74){var _0x1fbbe4={'method':_0x5b1a('0x21'),'uri':_0x398ea4+_0x5b1a('0x46')+'?'+_0x21d227,'body':{'short_description':_0x377e37,'global':!![],'active':!![],'name':_0x377e37},'auth':_0x5cfc95,'json':!![]};return rp(_0x1fbbe4)[_0x5b1a('0x19')](function(_0x39ae74){var _0x2945ad=_0x39ae74[_0x5b1a('0xc')][_0x5b1a('0xe')];_0x205ed4(_0x2945ad);});});}function getRemoteTag(_0x471ec9,_0x5e4750,_0x479a1d,_0x302ba0,_0x54eef2){return new Promise(function(_0x28a506,_0x292e94){var _0x281b8e={'method':'GET','uri':_0x479a1d+_0x5b1a('0x46')+_0x5b1a('0x47')+_0x471ec9+'&'+_0x302ba0,'auth':_0x5e4750,'json':!![]};return rp(_0x281b8e)[_0x5b1a('0x19')](function(_0x57151c){if(_0x57151c[_0x5b1a('0xc')][_0x5b1a('0x1b')]>0x0){var _0x5f299e=_0x57151c['result'][0x0][_0x5b1a('0xe')];_0x28a506(_0x5f299e);}else{return createRemoteTag(_0x471ec9,_0x5e4750,_0x479a1d,_0x302ba0)[_0x5b1a('0x19')](function(_0x298545){_0x28a506(_0x298545);});}});});}function assignTagToIncident(_0x16197a,_0x2a6c3a,_0x5beeb6,_0x3b7d0c,_0x10b0f6){return new Promise(function(_0x4b9cf6,_0x19b7b1){var _0x76f7d7={'method':_0x5b1a('0x21'),'uri':_0x5beeb6+_0x5b1a('0x48')+'?'+_0x10b0f6,'body':{'label':_0x16197a,'table':'incident','id_type':_0x5b1a('0x49'),'table_key':_0x3b7d0c['ticketId'],'title':_0x5b1a('0x4a')+_0x3b7d0c['ticketNumber'],'id_display':_0x3b7d0c[_0x5b1a('0x43')]},'auth':_0x2a6c3a,'json':!![]};return rp(_0x76f7d7)['then'](function(_0x185428){_0x4b9cf6();})['catch'](function(){_0x4b9cf6();});});}function manageTags(_0x8de6a8,_0x120ef4,_0x4fc470,_0xec2ac2,_0x44652f,_0x34e9db,_0x1e90cd){return new Promise(function(_0x41f49e,_0xe6818f){var _0x192d9b=[];_0x120ef4[_0x5b1a('0x2b')](function(_0x41618c){_0x192d9b[_0x5b1a('0x4b')](getRemoteTag(_0x41618c,_0x4fc470,_0xec2ac2,_0x34e9db,_0x1e90cd));});return Promise['all'](_0x192d9b)[_0x5b1a('0x19')](function(_0x1bd2a9){if(_0x1bd2a9[_0x5b1a('0x1b')]){logger['info']('['+[_0x8de6a8[_0x5b1a('0x10')]()]+_0x5b1a('0x4c'),_0x1bd2a9);var _0x4470f2=[];_0x1bd2a9[_0x5b1a('0x2b')](function(_0x195893){_0x4470f2[_0x5b1a('0x4b')](assignTagToIncident(_0x195893,_0x4fc470,_0xec2ac2,_0x44652f,_0x34e9db));});return Promise['all'](_0x4470f2)[_0x5b1a('0x19')](function(){_0x41f49e();})[_0x5b1a('0x11')](function(){_0x41f49e();});}else{_0x41f49e();}});});}function getTags(_0x597e9d,_0x1650ce,_0x149286,_0x1999ac,_0x41f423,_0xf19e0f){return function(_0x2e2077){return new Promise(function(_0x2e52de,_0x2c1a9d){var _0x244295=[];var _0x5e05df=_0x1999ac[_0x5b1a('0x4d')];if(_0x5e05df&&_0x5e05df['length']>0x0){_0x244295=_[_0x5b1a('0x4e')](_0x5e05df,'name');}if(_0x244295[_0x5b1a('0x1b')]>0x0){return manageTags(_0x597e9d,_0x244295,_0x1650ce,_0x149286,_0x2e2077,_0x41f423,_0xf19e0f)[_0x5b1a('0x19')](function(){_0x2e52de(_0x2e2077);});}else{_0x2e52de(_0x2e2077);}});};}function emit(_0x2fb209,_0x124db9,_0x2e2612){var _0x26ac70=_0x5b1a('0x4f')+_0x5b1a('0x50')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x5b1a('0x51');var _0x1f77d1={'uri':_0x2fb209+_0x5b1a('0x52')+_0x2e2612+_0x26ac70};io['to'](util[_0x5b1a('0x53')](_0x5b1a('0x54'),_0x124db9))[_0x5b1a('0x55')](_0x5b1a('0x56'),_0x1f77d1);}exports['cs']=function(_0x5ad092,_0x7415de,_0x124c7e,_0x2b3ed5,_0xd6a61,_0x22c5d2,_0x208262,_0x23bde6){var _0x2cde2c={};var _0xd8cfbb={'user':_0x22c5d2[_0x5b1a('0x57')],'pass':_0x22c5d2[_0x5b1a('0x58')]};var _0x3393ea=_0x5b1a('0x59');var _0x27388d='sysparm_display_value=true';_0x22c5d2[_0x5b1a('0x5a')]=intUtil[_0x5b1a('0x5b')](_0x22c5d2[_0x5b1a('0x5a')]);_0x22c5d2['serverUrl']=intUtil[_0x5b1a('0x5b')](_0x22c5d2['serverUrl']);var _0x4a01f4=util[_0x5b1a('0x53')](_0x5b1a('0x5c'),_0x22c5d2[_0x5b1a('0x5a')]);_0x2cde2c['userEmail']=!_['isNil'](_0x2b3ed5)?_0x2b3ed5[_0x5b1a('0x5d')]:null;_0x2cde2c[_0x5b1a('0x5e')]=_0x22c5d2[_0x5b1a('0x5d')];_0x2cde2c['endUserNumber']=_0x23bde6[_0x5b1a('0x35')]()==='outbound'?_0x7415de[_0x5b1a('0x5f')]:_0x7415de['calleridnum'];_0x2cde2c[_0x5b1a('0x60')]=_0x23bde6===_0x5b1a('0x61')||_0x23bde6==='unmanaged'?_0x5b1a('0x61'):'outbound';var _0x4e4dfc=util[_0x5b1a('0x53')](_0x5b1a('0x62'),_0x22c5d2[_0x5b1a('0x63')],_0x7415de[_0x5b1a('0x64')],md5(_0x7415de[_0x5b1a('0x64')]));if(_0xd6a61&&_0xd6a61[_0x5b1a('0x65')]){logger['info'](_0x5b1a('0x66'),_0x5b1a('0x67'));_0x7415de[_0x5b1a('0x68')]=_0x4e4dfc;}else if(_0x208262&&_0x208262[_0x5b1a('0x69')]&&_0x208262[_0x5b1a('0x69')]!==_0x5b1a('0x6a')){logger[_0x5b1a('0xf')]('[OUTBOUND]',_0x5b1a('0x67'));_0x7415de[_0x5b1a('0x68')]=_0x4e4dfc;}else{_0x7415de['recordingURL']='';}return getAdminUser(_0x23bde6,_0xd8cfbb,_0x2cde2c,_0x4a01f4,_0x27388d,_0x3393ea)['then'](getUser(_0x23bde6,_0xd8cfbb,_0x4a01f4,_0x27388d,_0x3393ea))[_0x5b1a('0x19')](getEndUser(_0x23bde6,_0xd8cfbb,_0x4a01f4,_0x27388d,_0x3393ea))[_0x5b1a('0x19')](getTicket(_0x23bde6,_0xd8cfbb,_0x4a01f4,_0x124c7e,_0x7415de,_0x27388d))[_0x5b1a('0x19')](function(_0x426e42){logger[_0x5b1a('0xf')](util['format'](_0x5b1a('0x6b'),_0x426e42[_0x5b1a('0x42')]));logger[_0x5b1a('0xf')](util['format'](_0x5b1a('0x6c'),_0x23bde6));if(_0x23bde6!=='unmanaged'){logger['info']('['+[_0x23bde6[_0x5b1a('0x10')]()]+']',_0x5b1a('0x6d'));emit(_0x22c5d2[_0x5b1a('0x5a')],_0x2b3ed5['name'],_0x426e42[_0x5b1a('0x42')]);}})[_0x5b1a('0x11')](function(_0x3b3e06){logger[_0x5b1a('0x12')]('['+[_0x23bde6[_0x5b1a('0x10')]()]+_0x5b1a('0x6e'),util['inspect'](_0x3b3e06,{'showHidden':!![],'depth':null}));});};