a8299a8269409191dd9853a2e5b77da0e5a99aaf
[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 _0x5274=['queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','lodash','bluebird','request-promise','util','md5','ioredis','../../../../config/environment','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','info','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','active','true','userId','sys_id','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','picklist','type','nameField','toLowerCase','content','toString','includes','string','idField','customField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','getString','Subjects','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','ticketNumber','forEach','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','destcalleridnum','callDirection'];(function(_0x17ddc5,_0xf0c74b){var _0x5e0d30=function(_0x225c00){while(--_0x225c00){_0x17ddc5['push'](_0x17ddc5['shift']());}};_0x5e0d30(++_0xf0c74b);}(_0x5274,0x154));var _0x4527=function(_0x1ad9b4,_0x5df9ed){_0x1ad9b4=_0x1ad9b4-0x0;var _0xbbee74=_0x5274[_0x1ad9b4];return _0xbbee74;};'use strict';var _=require(_0x4527('0x0'));var Promise=require(_0x4527('0x1'));var rp=require(_0x4527('0x2'));var util=require(_0x4527('0x3'));var md5=require(_0x4527('0x4'));var Redis=require(_0x4527('0x5'));var intUtil=require('./util');var config=require(_0x4527('0x6'));var logger=require('../../../../config/logger')(_0x4527('0x7'));config[_0x4527('0x8')]=_[_0x4527('0x9')](config[_0x4527('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x4527('0xa'))(new Redis(config[_0x4527('0x8')]));function getAdminUser(_0x3de392,_0x434720,_0x498088,_0x2a6161,_0x31cd3f,_0x25adc2){return new Promise(function(_0x56f690,_0x3fbfdf){var _0x223518={'method':_0x4527('0xb'),'uri':_0x2a6161+_0x4527('0xc')+'&'+_0x31cd3f+'&'+_0x25adc2,'auth':_0x434720,'json':!![]};return rp(_0x223518)[_0x4527('0xd')](function(_0x8c828f){if(_0x8c828f[_0x4527('0xe')]['length']>0x0){_0x498088[_0x4527('0xf')]=_0x8c828f['result'][0x0]['sys_id'];}logger[_0x4527('0x10')]('['+[_0x3de392['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x498088);_0x56f690(_0x498088);})[_0x4527('0x11')](function(_0x472d29){logger[_0x4527('0x12')]('['+[_0x3de392[_0x4527('0x13')]()]+']',_0x472d29['message']);_0x3fbfdf(_0x472d29[_0x4527('0x14')]);});});}function getUser(_0x11fd06,_0x199ea5,_0x46fc51,_0x5bbe15,_0x5f18b1){return function(_0xf14464){logger['info']('['+[_0x11fd06['toUpperCase']()]+_0x4527('0x15'),_0xf14464);return new Promise(function(_0x3ba52c,_0xf457b2){if(intUtil[_0x4527('0x16')](_0xf14464[_0x4527('0x17')])){var _0x24da2f={'method':_0x4527('0xb'),'uri':_0x46fc51+_0x4527('0x18')+_0xf14464[_0x4527('0x17')]+'&'+_0x5bbe15+'&'+_0x5f18b1,'auth':_0x199ea5,'json':!![]};logger[_0x4527('0x10')]('['+[_0x11fd06[_0x4527('0x13')]()]+_0x4527('0x19'),_0x24da2f);return rp(_0x24da2f)[_0x4527('0xd')](function(_0xde8328){logger[_0x4527('0x10')]('['+[_0x11fd06[_0x4527('0x13')]()]+_0x4527('0x1a'),_0xde8328);if(_0xde8328[_0x4527('0xe')][_0x4527('0x1b')]>0x0&&String(_0xde8328[_0x4527('0xe')][0x0][_0x4527('0x1c')])===_0x4527('0x1d')){_0xf14464[_0x4527('0x1e')]=_0xde8328[_0x4527('0xe')][0x0][_0x4527('0x1f')];}else{_0xf14464[_0x4527('0x1e')]=_0xf14464['adminId'];_0xf14464[_0x4527('0x17')]=_0xf14464[_0x4527('0x20')];}logger['info']('['+[_0x11fd06[_0x4527('0x13')]()]+_0x4527('0x21'),_0xf14464);_0x3ba52c(_0xf14464);})['catch'](function(_0x19834a){logger[_0x4527('0x12')]('['+[_0x11fd06[_0x4527('0x13')]()]+']',_0x19834a[_0x4527('0x14')]);_0xf457b2(_0x19834a[_0x4527('0x14')]);});}else{logger['info']('['+[_0x11fd06[_0x4527('0x13')]()]+_0x4527('0x22'));_0xf14464[_0x4527('0x1e')]=_0xf14464[_0x4527('0xf')];_0xf14464[_0x4527('0x17')]=_0xf14464[_0x4527('0x20')];_0x3ba52c(_0xf14464);}});};}function createEndUser(_0x46e44b,_0x209b09,_0x2d9464,_0x542d26,_0x5e7e41){logger[_0x4527('0x10')]('['+[_0x46e44b[_0x4527('0x13')]()]+'],\x20createEndUser\x20input\x20crm',_0x2d9464);return new Promise(function(_0x1246d8,_0x1bea27){var _0x96b25e={'method':_0x4527('0x23'),'uri':_0x542d26+_0x4527('0x24')+_0x5e7e41,'body':{'user_name':_0x2d9464['endUserNumber'],'roles':'user','first_name':_0x2d9464[_0x4527('0x25')],'active':_0x4527('0x1d'),'date_format':_0x4527('0x26'),'phone':_0x2d9464[_0x4527('0x25')]},'auth':_0x209b09,'json':!![]};return rp(_0x96b25e)[_0x4527('0xd')](function(_0x368f7b){logger['info']('['+[_0x46e44b[_0x4527('0x13')]()]+_0x4527('0x27'),_0x368f7b[_0x4527('0xe')]);_0x2d9464['endUserId']=_0x368f7b['result'][_0x4527('0x1f')];_0x1246d8(_0x2d9464);})[_0x4527('0x11')](function(_0x54bd64){logger[_0x4527('0x12')]('['+[_0x46e44b[_0x4527('0x13')]()]+']',_0x54bd64[_0x4527('0x14')]);_0x1bea27(_0x54bd64[_0x4527('0x14')]);});});}function getEndUser(_0xa6c9c2,_0x1157a0,_0xc42e3d,_0x456ebc,_0x5d6cf9){return function(_0x5a238b){logger['info']('['+[_0xa6c9c2[_0x4527('0x13')]()]+_0x4527('0x28'),_0x5a238b);return new Promise(function(_0x13ac76,_0x5aed9c){var _0x245277={'method':_0x4527('0xb'),'uri':_0xc42e3d+_0x4527('0x29')+_0x5a238b[_0x4527('0x25')]+'&'+_0x456ebc+'&'+_0x5d6cf9,'auth':_0x1157a0,'json':!![]};return rp(_0x245277)['then'](function(_0x38922b){if(_0x38922b['result'][_0x4527('0x1b')]>0x0){_0x5a238b[_0x4527('0x2a')]=_0x38922b['result'][0x0][_0x4527('0x1f')];logger[_0x4527('0x10')]('['+[_0xa6c9c2[_0x4527('0x13')]()]+_0x4527('0x2b'),_0x5a238b);_0x13ac76(_0x5a238b);}else{return createEndUser(_0xa6c9c2,_0x1157a0,_0x5a238b,_0xc42e3d,_0x456ebc)[_0x4527('0xd')](function(_0x3d18ef){logger[_0x4527('0x10')]('['+[_0xa6c9c2[_0x4527('0x13')]()]+_0x4527('0x2c'),_0x3d18ef);_0x13ac76(_0x3d18ef);});}})[_0x4527('0x11')](function(_0x3b3762){logger[_0x4527('0x12')]('['+[_0xa6c9c2['toUpperCase']()]+']',_0x3b3762['message']);_0x5aed9c(_0x3b3762[_0x4527('0x14')]);});});};}function getCustomFields(_0x308c30,_0x1319b8){var _0x216be6={};if(_0x308c30[_0x4527('0x1b')]>0x0){_['forEach'](_0x308c30,function(_0x5caaee){if(_['includes'](['string',_0x4527('0x2d')],_0x5caaee[_0x4527('0x2e')])&&_0x5caaee[_0x4527('0x2f')]&&!_0x5caaee['customField']){_0x216be6[_0x5caaee['nameField'][_0x4527('0x30')]()]=_0x5caaee[_0x4527('0x31')][_0x4527('0x32')]();}else if(_[_0x4527('0x33')]([_0x4527('0x34'),_0x4527('0x2d')],_0x5caaee[_0x4527('0x2e')])&&_0x5caaee[_0x4527('0x35')]&&_0x5caaee[_0x4527('0x36')]){_0x216be6[_0x5caaee[_0x4527('0x35')]['toLowerCase']()]=_0x5caaee['content'][_0x4527('0x32')]();}else if(_0x5caaee[_0x4527('0x2e')]===_0x4527('0x37')&&_0x5caaee[_0x4527('0x38')]&&_0x5caaee[_0x4527('0x35')]&&_0x5caaee[_0x4527('0x36')]){_0x216be6[_0x5caaee[_0x4527('0x35')][_0x4527('0x30')]()]=_0x1319b8[_0x5caaee['variableName']]['toString']();}else if(_0x5caaee[_0x4527('0x2e')]===_0x4527('0x39')&&_0x5caaee[_0x4527('0x3a')]&&_0x5caaee[_0x4527('0x3a')][_0x4527('0x3b')]&&_0x5caaee[_0x4527('0x35')]&&_0x5caaee[_0x4527('0x36')]){_0x216be6[_0x5caaee['idField'][_0x4527('0x30')]()]=_0x1319b8[_0x5caaee[_0x4527('0x3a')]['name'][_0x4527('0x30')]()][_0x4527('0x32')]();}});}return _0x216be6;}function getTicket(_0x1e7ad9,_0x9b6342,_0x4745b8,_0x42c1a3,_0x7d6bb9,_0xe07e85){return function(_0x335375){logger[_0x4527('0x10')]('['+[_0x1e7ad9[_0x4527('0x13')]()]+_0x4527('0x3c'),_0x335375);return new Promise(function(_0x1ccd8e,_0x16a1dd){var _0x4a06f7=_0x1e7ad9[_0x4527('0x30')]()==='outbound'?_0x335375[_0x4527('0x1e')]:_0x335375[_0x4527('0x2a')];var _0x32cd20={'method':_0x4527('0x23'),'uri':_0x4745b8+_0x4527('0x3d')+'?'+_0xe07e85,'body':Object['assign']({},{'active':_0x4527('0x1d'),'caller_id':_0x4a06f7,'assigned_to':_0x335375[_0x4527('0x1e')],'short_description':intUtil[_0x4527('0x3e')](_0x42c1a3[_0x4527('0x3f')],_0x7d6bb9,'\x20'),'description':intUtil[_0x4527('0x3e')](_0x42c1a3['Descriptions'],_0x7d6bb9,'\x0a')},getCustomFields(_0x42c1a3['Fields'],_0x7d6bb9)),'auth':_0x9b6342,'json':!![]};return rp(_0x32cd20)[_0x4527('0xd')](function(_0x313a08){logger[_0x4527('0x10')]('['+[_0x1e7ad9['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x313a08['result']);_0x335375[_0x4527('0x40')]=_0x313a08['result'][_0x4527('0x1f')];_0x335375['ticketNumber']=_0x313a08[_0x4527('0xe')][_0x4527('0x41')];logger[_0x4527('0x10')]('['+[_0x1e7ad9[_0x4527('0x13')]()]+_0x4527('0x42'),_0x335375);_0x1ccd8e(_0x335375);})[_0x4527('0x11')](function(_0x2b617f){logger[_0x4527('0x12')]('['+[_0x1e7ad9[_0x4527('0x13')]()]+']',_0x2b617f[_0x4527('0x14')]);_0x16a1dd(_0x2b617f[_0x4527('0x14')]);});});};}function createRemoteTag(_0x454b43,_0x1ead60,_0x52115c,_0x27b6f8){return new Promise(function(_0x3e263b,_0x461f2a){var _0x473e3f={'method':_0x4527('0x23'),'uri':_0x52115c+_0x4527('0x43')+'?'+_0x27b6f8,'body':{'short_description':_0x454b43,'global':!![],'active':!![],'name':_0x454b43},'auth':_0x1ead60,'json':!![]};return rp(_0x473e3f)[_0x4527('0xd')](function(_0x534eb0){var _0x405a56=_0x534eb0[_0x4527('0xe')][_0x4527('0x1f')];_0x3e263b(_0x405a56);});});}function getRemoteTag(_0x43600d,_0x5ab86f,_0x561208,_0x36aadb,_0x5b6594){return new Promise(function(_0x155752,_0x1807e1){var _0x156b33={'method':_0x4527('0xb'),'uri':_0x561208+_0x4527('0x43')+_0x4527('0x44')+_0x43600d+'&'+_0x36aadb,'auth':_0x5ab86f,'json':!![]};return rp(_0x156b33)[_0x4527('0xd')](function(_0x4cdc06){if(_0x4cdc06[_0x4527('0xe')][_0x4527('0x1b')]>0x0){var _0x2fada2=_0x4cdc06[_0x4527('0xe')][0x0][_0x4527('0x1f')];_0x155752(_0x2fada2);}else{return createRemoteTag(_0x43600d,_0x5ab86f,_0x561208,_0x36aadb)[_0x4527('0xd')](function(_0x391ed7){_0x155752(_0x391ed7);});}});});}function assignTagToIncident(_0x8f134e,_0x2f8542,_0x5e9f2d,_0x4d7f0f,_0x16b92a){return new Promise(function(_0x25a884,_0x22719e){var _0x444089={'method':_0x4527('0x23'),'uri':_0x5e9f2d+_0x4527('0x45')+'?'+_0x16b92a,'body':{'label':_0x8f134e,'table':_0x4527('0x3d'),'id_type':_0x4527('0x46'),'table_key':_0x4d7f0f[_0x4527('0x40')],'title':_0x4527('0x47')+_0x4d7f0f[_0x4527('0x48')],'id_display':_0x4d7f0f['ticketNumber']},'auth':_0x2f8542,'json':!![]};return rp(_0x444089)['then'](function(_0x1f4fbb){_0x25a884();})[_0x4527('0x11')](function(){_0x25a884();});});}function manageTags(_0x53b670,_0x8c699c,_0x5b1e28,_0x5a2abc,_0x2585e6,_0x5e4711,_0x399917){return new Promise(function(_0x4d5be1,_0xcdc0c2){var _0x7bb485=[];_0x8c699c[_0x4527('0x49')](function(_0x4b9b25){_0x7bb485['push'](getRemoteTag(_0x4b9b25,_0x5b1e28,_0x5a2abc,_0x5e4711,_0x399917));});return Promise[_0x4527('0x4a')](_0x7bb485)[_0x4527('0xd')](function(_0x5698f3){if(_0x5698f3[_0x4527('0x1b')]){logger[_0x4527('0x10')]('['+[_0x53b670['toUpperCase']()]+_0x4527('0x4b'),_0x5698f3);var _0x45163e=[];_0x5698f3[_0x4527('0x49')](function(_0x328fea){_0x45163e[_0x4527('0x4c')](assignTagToIncident(_0x328fea,_0x5b1e28,_0x5a2abc,_0x2585e6,_0x5e4711));});return Promise[_0x4527('0x4a')](_0x45163e)[_0x4527('0xd')](function(){_0x4d5be1();})[_0x4527('0x11')](function(){_0x4d5be1();});}else{_0x4d5be1();}});});}function getTags(_0xbba1ff,_0x9b2508,_0x64f35,_0x2e3490,_0x6333a8,_0x3413c1){return function(_0x478e15){return new Promise(function(_0x4d762b,_0x1c35e8){var _0x1e1fbb=[];var _0x495564=_0x2e3490[_0x4527('0x4d')];if(_0x495564&&_0x495564[_0x4527('0x1b')]>0x0){_0x1e1fbb=_[_0x4527('0x4e')](_0x495564,_0x4527('0x3b'));}if(_0x1e1fbb['length']>0x0){return manageTags(_0xbba1ff,_0x1e1fbb,_0x9b2508,_0x64f35,_0x478e15,_0x6333a8,_0x3413c1)[_0x4527('0xd')](function(){_0x4d762b(_0x478e15);});}else{_0x4d762b(_0x478e15);}});};}function emit(_0x5cad55,_0x4826b6,_0x16b1a3){var _0x2afd8b='%26sysparm_record_target%3Dincident'+_0x4527('0x4f')+_0x4527('0x50')+_0x4527('0x51');var _0x222693={'uri':_0x5cad55+_0x4527('0x52')+_0x16b1a3+_0x2afd8b};io['to'](util[_0x4527('0x53')](_0x4527('0x54'),_0x4826b6))['emit']('trigger:browser:url',_0x222693);}exports['cs']=function(_0x305f5c,_0x1fe85d,_0x4d1b53,_0x1c7be9,_0x192dd7,_0x52d6dc,_0x274e5a,_0x5b117e){var _0x3ddd8b={};var _0x10418a={'user':_0x52d6dc[_0x4527('0x55')],'pass':_0x52d6dc[_0x4527('0x56')]};var _0x1addd0=_0x4527('0x57');var _0x3171dd=_0x4527('0x58');_0x52d6dc[_0x4527('0x59')]=intUtil[_0x4527('0x5a')](_0x52d6dc[_0x4527('0x59')]);_0x52d6dc[_0x4527('0x5b')]=intUtil[_0x4527('0x5a')](_0x52d6dc[_0x4527('0x5b')]);var _0x5cfa74=util[_0x4527('0x53')](_0x4527('0x5c'),_0x52d6dc['remoteUri']);_0x3ddd8b['userEmail']=!_['isNil'](_0x1c7be9)?_0x1c7be9[_0x4527('0x5d')]:null;_0x3ddd8b['adminEmail']=_0x52d6dc[_0x4527('0x5d')];_0x3ddd8b[_0x4527('0x25')]=_0x5b117e[_0x4527('0x30')]()==='outbound'?_0x1fe85d[_0x4527('0x5e')]:_0x1fe85d['calleridnum'];_0x3ddd8b[_0x4527('0x5f')]=_0x5b117e===_0x4527('0x60')||_0x5b117e===_0x4527('0x61')?_0x4527('0x60'):'outbound';var _0x5ad100=util[_0x4527('0x53')](_0x4527('0x62'),_0x52d6dc['serverUrl'],_0x1fe85d[_0x4527('0x63')],md5(_0x1fe85d[_0x4527('0x63')]));if(_0x192dd7&&_0x192dd7[_0x4527('0x64')]){logger[_0x4527('0x10')](_0x4527('0x65'),_0x4527('0x66'));_0x1fe85d['recordingURL']=_0x5ad100;}else if(_0x274e5a&&_0x274e5a['recordingFormat']&&_0x274e5a[_0x4527('0x67')]!==_0x4527('0x68')){logger[_0x4527('0x10')](_0x4527('0x69'),_0x4527('0x66'));_0x1fe85d[_0x4527('0x6a')]=_0x5ad100;}else{_0x1fe85d[_0x4527('0x6a')]='';}return getAdminUser(_0x5b117e,_0x10418a,_0x3ddd8b,_0x5cfa74,_0x3171dd,_0x1addd0)[_0x4527('0xd')](getUser(_0x5b117e,_0x10418a,_0x5cfa74,_0x3171dd,_0x1addd0))['then'](getEndUser(_0x5b117e,_0x10418a,_0x5cfa74,_0x3171dd,_0x1addd0))[_0x4527('0xd')](getTicket(_0x5b117e,_0x10418a,_0x5cfa74,_0x4d1b53,_0x1fe85d,_0x3171dd))[_0x4527('0xd')](function(_0x435b84){logger['info'](util[_0x4527('0x53')](_0x4527('0x6b'),_0x435b84['ticketId']));logger[_0x4527('0x10')](util[_0x4527('0x53')](_0x4527('0x6c'),_0x5b117e));if(_0x5b117e!==_0x4527('0x61')){logger[_0x4527('0x10')]('['+[_0x5b117e['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x52d6dc[_0x4527('0x59')],_0x1c7be9[_0x4527('0x3b')],_0x435b84[_0x4527('0x40')]);}})[_0x4527('0x11')](function(_0x3a04b3){logger[_0x4527('0x12')]('['+[_0x5b117e[_0x4527('0x13')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x3a04b3,{'showHidden':!![],'depth':null}));});};