d28a3464ce840e7a3a0f7ac45cc8e249b6e17897
[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 _0x96bb=['/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','bluebird','request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','defaults','localhost','redis','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','validateEmail','userEmail','sys_user?sysparm_query=email%3D','active','userId','sys_id','adminId','adminEmail','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20createEndUser\x20crm','picklist','type','customField','nameField','toLowerCase','string','idField','toString','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign','true','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','forEach','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x96bb,0x1be));var _0xb96b=function(_0xfacee2,_0x29c3b0){_0xfacee2=_0xfacee2-0x0;var _0x4cc9ea=_0x96bb[_0xfacee2];return _0x4cc9ea;};'use strict';var _=require('lodash');var Promise=require(_0xb96b('0x0'));var rp=require(_0xb96b('0x1'));var util=require(_0xb96b('0x2'));var md5=require(_0xb96b('0x3'));var Redis=require('ioredis');var intUtil=require(_0xb96b('0x4'));var config=require(_0xb96b('0x5'));var logger=require(_0xb96b('0x6'))(_0xb96b('0x7'));config['redis']=_[_0xb96b('0x8')](config['redis'],{'host':_0xb96b('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb96b('0xa')]));function getAdminUser(_0x459055,_0x34398e,_0x29e535,_0x4b2265,_0x11e86e,_0x2f256b){return new Promise(function(_0x59b2cd,_0x1cdd95){var _0x53d0e1={'method':_0xb96b('0xb'),'uri':_0x4b2265+_0xb96b('0xc')+'&'+_0x11e86e+'&'+_0x2f256b,'auth':_0x34398e,'json':!![]};return rp(_0x53d0e1)[_0xb96b('0xd')](function(_0x4eb3cc){if(_0x4eb3cc[_0xb96b('0xe')][_0xb96b('0xf')]>0x0){_0x29e535['adminId']=_0x4eb3cc['result'][0x0]['sys_id'];}logger[_0xb96b('0x10')]('['+[_0x459055[_0xb96b('0x11')]()]+_0xb96b('0x12'),_0x29e535);_0x59b2cd(_0x29e535);})['catch'](function(_0x40e464){logger[_0xb96b('0x13')]('['+[_0x459055[_0xb96b('0x11')]()]+']',_0x40e464[_0xb96b('0x14')]);_0x1cdd95(_0x40e464[_0xb96b('0x14')]);});});}function getUser(_0x44b576,_0x431891,_0x1b8ad5,_0x25a09b,_0x412525){return function(_0x354350){logger[_0xb96b('0x10')]('['+[_0x44b576[_0xb96b('0x11')]()]+'],\x20getUser\x20input\x20crm',_0x354350);return new Promise(function(_0x1e5f5b,_0x5c3b1e){if(intUtil[_0xb96b('0x15')](_0x354350[_0xb96b('0x16')])){var _0x2e1072={'method':_0xb96b('0xb'),'uri':_0x1b8ad5+_0xb96b('0x17')+_0x354350[_0xb96b('0x16')]+'&'+_0x25a09b+'&'+_0x412525,'auth':_0x431891,'json':!![]};logger['info']('['+[_0x44b576['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x2e1072);return rp(_0x2e1072)[_0xb96b('0xd')](function(_0xf98ba3){logger[_0xb96b('0x10')]('['+[_0x44b576['toUpperCase']()]+'],\x20getUser\x20entity',_0xf98ba3);if(_0xf98ba3[_0xb96b('0xe')][_0xb96b('0xf')]>0x0&&String(_0xf98ba3[_0xb96b('0xe')][0x0][_0xb96b('0x18')])==='true'){_0x354350[_0xb96b('0x19')]=_0xf98ba3[_0xb96b('0xe')][0x0][_0xb96b('0x1a')];}else{_0x354350[_0xb96b('0x19')]=_0x354350[_0xb96b('0x1b')];_0x354350[_0xb96b('0x16')]=_0x354350[_0xb96b('0x1c')];}logger['info']('['+[_0x44b576[_0xb96b('0x11')]()]+'],\x20getUser\x20crm',_0x354350);_0x1e5f5b(_0x354350);})[_0xb96b('0x1d')](function(_0x76dccf){logger[_0xb96b('0x13')]('['+[_0x44b576[_0xb96b('0x11')]()]+']',_0x76dccf[_0xb96b('0x14')]);_0x5c3b1e(_0x76dccf[_0xb96b('0x14')]);});}else{logger['info']('['+[_0x44b576[_0xb96b('0x11')]()]+_0xb96b('0x1e'));_0x354350[_0xb96b('0x19')]=_0x354350[_0xb96b('0x1b')];_0x354350[_0xb96b('0x16')]=_0x354350['adminEmail'];_0x1e5f5b(_0x354350);}});};}function createEndUser(_0x53704f,_0x3751fa,_0x5d3f82,_0x442a51,_0x4e80f2){logger['info']('['+[_0x53704f['toUpperCase']()]+_0xb96b('0x1f'),_0x5d3f82);return new Promise(function(_0x1024a,_0x50ae47){var _0x1b4eef={'method':_0xb96b('0x20'),'uri':_0x442a51+_0xb96b('0x21')+_0x4e80f2,'body':{'user_name':_0x5d3f82[_0xb96b('0x22')],'roles':_0xb96b('0x23'),'first_name':_0x5d3f82['endUserNumber'],'active':'true','date_format':_0xb96b('0x24'),'phone':_0x5d3f82[_0xb96b('0x22')]},'auth':_0x3751fa,'json':!![]};return rp(_0x1b4eef)[_0xb96b('0xd')](function(_0x3b8514){logger[_0xb96b('0x10')]('['+[_0x53704f[_0xb96b('0x11')]()]+_0xb96b('0x25'),_0x3b8514[_0xb96b('0xe')]);_0x5d3f82['endUserId']=_0x3b8514[_0xb96b('0xe')][_0xb96b('0x1a')];_0x1024a(_0x5d3f82);})[_0xb96b('0x1d')](function(_0x376d6b){logger[_0xb96b('0x13')]('['+[_0x53704f['toUpperCase']()]+']',_0x376d6b[_0xb96b('0x14')]);_0x50ae47(_0x376d6b[_0xb96b('0x14')]);});});}function getEndUser(_0x1cf75c,_0x4ab0a0,_0xf81879,_0x5b2d26,_0x4ff410){return function(_0x2b60a0){logger[_0xb96b('0x10')]('['+[_0x1cf75c[_0xb96b('0x11')]()]+_0xb96b('0x26'),_0x2b60a0);return new Promise(function(_0x151aaf,_0x179105){var _0xfe099d={'method':_0xb96b('0xb'),'uri':_0xf81879+_0xb96b('0x27')+_0x2b60a0[_0xb96b('0x22')]+'&'+_0x5b2d26+'&'+_0x4ff410,'auth':_0x4ab0a0,'json':!![]};return rp(_0xfe099d)['then'](function(_0x2ae340){if(_0x2ae340[_0xb96b('0xe')]['length']>0x0){_0x2b60a0[_0xb96b('0x28')]=_0x2ae340[_0xb96b('0xe')][0x0][_0xb96b('0x1a')];logger[_0xb96b('0x10')]('['+[_0x1cf75c[_0xb96b('0x11')]()]+'],\x20getEndUser\x20crm',_0x2b60a0);_0x151aaf(_0x2b60a0);}else{return createEndUser(_0x1cf75c,_0x4ab0a0,_0x2b60a0,_0xf81879,_0x5b2d26)[_0xb96b('0xd')](function(_0x48a26b){logger[_0xb96b('0x10')]('['+[_0x1cf75c[_0xb96b('0x11')]()]+_0xb96b('0x29'),_0x48a26b);_0x151aaf(_0x48a26b);});}})[_0xb96b('0x1d')](function(_0x4c3f9f){logger[_0xb96b('0x13')]('['+[_0x1cf75c[_0xb96b('0x11')]()]+']',_0x4c3f9f[_0xb96b('0x14')]);_0x179105(_0x4c3f9f[_0xb96b('0x14')]);});});};}function getCustomFields(_0x4e054f,_0x11fa1e){var _0x51970c={};if(_0x4e054f[_0xb96b('0xf')]>0x0){_['forEach'](_0x4e054f,function(_0x82f51f){if(_['includes'](['string',_0xb96b('0x2a')],_0x82f51f[_0xb96b('0x2b')])&&_0x82f51f['nameField']&&!_0x82f51f[_0xb96b('0x2c')]){_0x51970c[_0x82f51f[_0xb96b('0x2d')][_0xb96b('0x2e')]()]=_0x82f51f['content']['toString']();}else if(_['includes']([_0xb96b('0x2f'),_0xb96b('0x2a')],_0x82f51f[_0xb96b('0x2b')])&&_0x82f51f[_0xb96b('0x30')]&&_0x82f51f[_0xb96b('0x2c')]){_0x51970c[_0x82f51f[_0xb96b('0x30')]['toLowerCase']()]=_0x82f51f['content'][_0xb96b('0x31')]();}else if(_0x82f51f[_0xb96b('0x2b')]===_0xb96b('0x32')&&_0x82f51f[_0xb96b('0x33')]&&_0x82f51f[_0xb96b('0x30')]&&_0x82f51f[_0xb96b('0x2c')]){_0x51970c[_0x82f51f[_0xb96b('0x30')][_0xb96b('0x2e')]()]=_0x11fa1e[_0x82f51f[_0xb96b('0x33')]][_0xb96b('0x31')]();}else if(_0x82f51f[_0xb96b('0x2b')]==='customVariable'&&_0x82f51f[_0xb96b('0x34')]&&_0x82f51f[_0xb96b('0x34')][_0xb96b('0x35')]&&_0x82f51f[_0xb96b('0x30')]&&_0x82f51f[_0xb96b('0x2c')]){_0x51970c[_0x82f51f[_0xb96b('0x30')][_0xb96b('0x2e')]()]=_0x11fa1e[_0x82f51f[_0xb96b('0x34')][_0xb96b('0x35')]['toLowerCase']()][_0xb96b('0x31')]();}});}return _0x51970c;}function getTicket(_0x4fff64,_0x19ad1b,_0x53b0e7,_0x160f93,_0x2e766f,_0x42f938){return function(_0x121ddb){logger[_0xb96b('0x10')]('['+[_0x4fff64[_0xb96b('0x11')]()]+_0xb96b('0x36'),_0x121ddb);return new Promise(function(_0x2bea66,_0xd6c1f2){var _0x119c44=_0x4fff64[_0xb96b('0x2e')]()==='outbound'?_0x121ddb['userId']:_0x121ddb[_0xb96b('0x28')];var _0x5c1db9={'method':_0xb96b('0x20'),'uri':_0x53b0e7+_0xb96b('0x37')+'?'+_0x42f938,'body':Object[_0xb96b('0x38')]({},{'active':_0xb96b('0x39'),'caller_id':_0x119c44,'assigned_to':_0x121ddb[_0xb96b('0x19')],'short_description':intUtil['getString'](_0x160f93[_0xb96b('0x3a')],_0x2e766f,'\x20'),'description':intUtil['getString'](_0x160f93['Descriptions'],_0x2e766f,'\x0a')},getCustomFields(_0x160f93[_0xb96b('0x3b')],_0x2e766f)),'auth':_0x19ad1b,'json':!![]};return rp(_0x5c1db9)[_0xb96b('0xd')](function(_0x2a2d5e){logger[_0xb96b('0x10')]('['+[_0x4fff64[_0xb96b('0x11')]()]+_0xb96b('0x3c'),_0x2a2d5e['result']);_0x121ddb[_0xb96b('0x3d')]=_0x2a2d5e[_0xb96b('0xe')]['sys_id'];_0x121ddb[_0xb96b('0x3e')]=_0x2a2d5e[_0xb96b('0xe')][_0xb96b('0x3f')];logger['info']('['+[_0x4fff64[_0xb96b('0x11')]()]+_0xb96b('0x40'),_0x121ddb);_0x2bea66(_0x121ddb);})[_0xb96b('0x1d')](function(_0x13f50d){logger['error']('['+[_0x4fff64['toUpperCase']()]+']',_0x13f50d[_0xb96b('0x14')]);_0xd6c1f2(_0x13f50d[_0xb96b('0x14')]);});});};}function createRemoteTag(_0x3b67c5,_0xfeead3,_0x124a05,_0x5a98f8){return new Promise(function(_0x1b2c9d,_0x4bd45c){var _0x5d23db={'method':_0xb96b('0x20'),'uri':_0x124a05+_0xb96b('0x41')+'?'+_0x5a98f8,'body':{'short_description':_0x3b67c5,'global':!![],'active':!![],'name':_0x3b67c5},'auth':_0xfeead3,'json':!![]};return rp(_0x5d23db)[_0xb96b('0xd')](function(_0x52e00d){var _0x5175a7=_0x52e00d[_0xb96b('0xe')][_0xb96b('0x1a')];_0x1b2c9d(_0x5175a7);});});}function getRemoteTag(_0x5c4d0e,_0x5231c2,_0x228ecf,_0x5451bf,_0xd63f7c){return new Promise(function(_0x7d96f,_0x16b697){var _0x2ad229={'method':'GET','uri':_0x228ecf+_0xb96b('0x41')+_0xb96b('0x42')+_0x5c4d0e+'&'+_0x5451bf,'auth':_0x5231c2,'json':!![]};return rp(_0x2ad229)[_0xb96b('0xd')](function(_0x14b232){if(_0x14b232[_0xb96b('0xe')][_0xb96b('0xf')]>0x0){var _0xa1b87c=_0x14b232['result'][0x0]['sys_id'];_0x7d96f(_0xa1b87c);}else{return createRemoteTag(_0x5c4d0e,_0x5231c2,_0x228ecf,_0x5451bf)[_0xb96b('0xd')](function(_0x43a5a6){_0x7d96f(_0x43a5a6);});}});});}function assignTagToIncident(_0xab1281,_0xa9c673,_0x525bfd,_0x19c3c5,_0xd5664e){return new Promise(function(_0xf8fcbe,_0x4fb33d){var _0x57b50a={'method':_0xb96b('0x20'),'uri':_0x525bfd+_0xb96b('0x43')+'?'+_0xd5664e,'body':{'label':_0xab1281,'table':_0xb96b('0x37'),'id_type':_0xb96b('0x44'),'table_key':_0x19c3c5[_0xb96b('0x3d')],'title':_0xb96b('0x45')+_0x19c3c5[_0xb96b('0x3e')],'id_display':_0x19c3c5['ticketNumber']},'auth':_0xa9c673,'json':!![]};return rp(_0x57b50a)['then'](function(_0x4d1022){_0xf8fcbe();})[_0xb96b('0x1d')](function(){_0xf8fcbe();});});}function manageTags(_0x26bca9,_0x171b4b,_0x3290f2,_0x4a5522,_0x20348f,_0x31a6b0,_0x308bcc){return new Promise(function(_0x462650,_0x5ce319){var _0x15b008=[];_0x171b4b[_0xb96b('0x46')](function(_0x4a1acb){_0x15b008[_0xb96b('0x47')](getRemoteTag(_0x4a1acb,_0x3290f2,_0x4a5522,_0x31a6b0,_0x308bcc));});return Promise['all'](_0x15b008)[_0xb96b('0xd')](function(_0xb73d38){if(_0xb73d38[_0xb96b('0xf')]){logger['info']('['+[_0x26bca9[_0xb96b('0x11')]()]+_0xb96b('0x48'),_0xb73d38);var _0x77d48e=[];_0xb73d38[_0xb96b('0x46')](function(_0x1347e1){_0x77d48e['push'](assignTagToIncident(_0x1347e1,_0x3290f2,_0x4a5522,_0x20348f,_0x31a6b0));});return Promise[_0xb96b('0x49')](_0x77d48e)[_0xb96b('0xd')](function(){_0x462650();})['catch'](function(){_0x462650();});}else{_0x462650();}});});}function getTags(_0x3c6675,_0x4eb952,_0x400cbf,_0xc5f28c,_0x520cfc,_0x24af3a){return function(_0x99166){return new Promise(function(_0x39e844,_0x23ea76){var _0x3ced65=[];var _0x55ebb4=_0xc5f28c[_0xb96b('0x4a')];if(_0x55ebb4&&_0x55ebb4[_0xb96b('0xf')]>0x0){_0x3ced65=_[_0xb96b('0x4b')](_0x55ebb4,'name');}if(_0x3ced65['length']>0x0){return manageTags(_0x3c6675,_0x3ced65,_0x4eb952,_0x400cbf,_0x99166,_0x520cfc,_0x24af3a)[_0xb96b('0xd')](function(){_0x39e844(_0x99166);});}else{_0x39e844(_0x99166);}});};}function emit(_0x554065,_0x366be1,_0x51b573){var _0x5b61a7=_0xb96b('0x4c')+_0xb96b('0x4d')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xb96b('0x4e');var _0x1589a9={'uri':_0x554065+_0xb96b('0x4f')+_0x51b573+_0x5b61a7};io['to'](util[_0xb96b('0x50')](_0xb96b('0x51'),_0x366be1))[_0xb96b('0x52')](_0xb96b('0x53'),_0x1589a9);}exports['cs']=function(_0x5c93d0,_0x4e8011,_0x5185ba,_0x54c691,_0x5eccb4,_0x50520a,_0x3e934d,_0x5ee459){var _0x328aad={};var _0x148c4c={'user':_0x50520a[_0xb96b('0x54')],'pass':_0x50520a['password']};var _0x1d84c4=_0xb96b('0x55');var _0x5c8032='sysparm_display_value=true';_0x50520a[_0xb96b('0x56')]=intUtil[_0xb96b('0x57')](_0x50520a[_0xb96b('0x56')]);_0x50520a[_0xb96b('0x58')]=intUtil[_0xb96b('0x57')](_0x50520a[_0xb96b('0x58')]);var _0x289a81=util['format'](_0xb96b('0x59'),_0x50520a[_0xb96b('0x56')]);_0x328aad[_0xb96b('0x16')]=!_['isNil'](_0x54c691)?_0x54c691['email']:null;_0x328aad[_0xb96b('0x1c')]=_0x50520a[_0xb96b('0x5a')];_0x328aad[_0xb96b('0x22')]=_0x5ee459[_0xb96b('0x2e')]()===_0xb96b('0x5b')?_0x4e8011['destcalleridnum']:_0x4e8011[_0xb96b('0x5c')];_0x328aad[_0xb96b('0x5d')]=_0x5ee459===_0xb96b('0x5e')||_0x5ee459===_0xb96b('0x5f')?'queue':_0xb96b('0x5b');var _0x793c44=util[_0xb96b('0x50')](_0xb96b('0x60'),_0x50520a['serverUrl'],_0x4e8011[_0xb96b('0x61')],md5(_0x4e8011[_0xb96b('0x61')]));if(_0x5eccb4&&_0x5eccb4['monitor_format']){logger['info'](_0xb96b('0x62'),_0xb96b('0x63'));_0x4e8011['recordingURL']=_0x793c44;}else if(_0x3e934d&&_0x3e934d['recordingFormat']&&_0x3e934d[_0xb96b('0x64')]!==_0xb96b('0x65')){logger[_0xb96b('0x10')]('[OUTBOUND]',_0xb96b('0x63'));_0x4e8011[_0xb96b('0x66')]=_0x793c44;}else{_0x4e8011['recordingURL']='';}return getAdminUser(_0x5ee459,_0x148c4c,_0x328aad,_0x289a81,_0x5c8032,_0x1d84c4)[_0xb96b('0xd')](getUser(_0x5ee459,_0x148c4c,_0x289a81,_0x5c8032,_0x1d84c4))[_0xb96b('0xd')](getEndUser(_0x5ee459,_0x148c4c,_0x289a81,_0x5c8032,_0x1d84c4))[_0xb96b('0xd')](getTicket(_0x5ee459,_0x148c4c,_0x289a81,_0x5185ba,_0x4e8011,_0x5c8032))[_0xb96b('0xd')](function(_0xf73528){logger[_0xb96b('0x10')](util[_0xb96b('0x50')]('The\x20ticket\x20ID\x20is:\x20%s',_0xf73528[_0xb96b('0x3d')]));logger['info'](util[_0xb96b('0x50')]('call\x20direction:\x20%s',_0x5ee459));if(_0x5ee459!==_0xb96b('0x5f')){logger[_0xb96b('0x10')]('['+[_0x5ee459['toUpperCase']()]+']',_0xb96b('0x67'));emit(_0x50520a[_0xb96b('0x56')],_0x54c691[_0xb96b('0x35')],_0xf73528[_0xb96b('0x3d')]);}})['catch'](function(_0x229d06){logger['error']('['+[_0x5ee459['toUpperCase']()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0xb96b('0x68')](_0x229d06,{'showHidden':!![],'depth':null}));});};