Built motion from commit (unavailable).|2.5.25
[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 _0xfff0=['call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','toUpperCase','catch','error','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm','message',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','string','picklist','type','nameField','toLowerCase','content','idField','customField','variable','variableName','toString','customVariable','Variable','name','outbound','assign','getString','Subjects','Fields','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident','Incident\x20-\x20','forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','user:%s','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','callDirection','unmanaged','queue','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','The\x20ticket\x20ID\x20is:\x20%s'];(function(_0x3f32b4,_0x2d46e1){var _0x435bc6=function(_0x331bed){while(--_0x331bed){_0x3f32b4['push'](_0x3f32b4['shift']());}};_0x435bc6(++_0x2d46e1);}(_0xfff0,0x139));var _0x0fff=function(_0x239125,_0x2ca893){_0x239125=_0x239125-0x0;var _0x3e643c=_0xfff0[_0x239125];return _0x3e643c;};'use strict';var _=require('lodash');var Promise=require(_0x0fff('0x0'));var rp=require(_0x0fff('0x1'));var util=require(_0x0fff('0x2'));var md5=require('md5');var Redis=require(_0x0fff('0x3'));var intUtil=require(_0x0fff('0x4'));var config=require(_0x0fff('0x5'));var logger=require('../../../../config/logger')(_0x0fff('0x6'));config[_0x0fff('0x7')]=_['defaults'](config[_0x0fff('0x7')],{'host':_0x0fff('0x8'),'port':0x18eb});var io=require(_0x0fff('0x9'))(new Redis(config['redis']));function getAdminUser(_0x24cfb0,_0x5e9672,_0x1f2658,_0x5304a5,_0x41cfd9,_0x3db6f6){return new Promise(function(_0x4cc3f3,_0x227d28){var _0x377b2f={'method':_0x0fff('0xa'),'uri':_0x5304a5+_0x0fff('0xb')+'&'+_0x41cfd9+'&'+_0x3db6f6,'auth':_0x5e9672,'json':!![]};return rp(_0x377b2f)[_0x0fff('0xc')](function(_0x20c88b){if(_0x20c88b[_0x0fff('0xd')][_0x0fff('0xe')]>0x0){_0x1f2658[_0x0fff('0xf')]=_0x20c88b[_0x0fff('0xd')][0x0][_0x0fff('0x10')];}logger['info']('['+[_0x24cfb0[_0x0fff('0x11')]()]+'],\x20getAdminUser\x20crm',_0x1f2658);_0x4cc3f3(_0x1f2658);})[_0x0fff('0x12')](function(_0x431efa){logger[_0x0fff('0x13')]('['+[_0x24cfb0[_0x0fff('0x11')]()]+']',_0x431efa['message']);_0x227d28(_0x431efa['message']);});});}function getUser(_0x1daf30,_0x50a9e4,_0x5636fd,_0x51ceea,_0x1fb430){return function(_0x41e2e7){logger['info']('['+[_0x1daf30[_0x0fff('0x11')]()]+_0x0fff('0x14'),_0x41e2e7);return new Promise(function(_0x540a67,_0x528071){if(intUtil['validateEmail'](_0x41e2e7[_0x0fff('0x15')])){var _0x606792={'method':_0x0fff('0xa'),'uri':_0x5636fd+_0x0fff('0x16')+_0x41e2e7[_0x0fff('0x15')]+'&'+_0x51ceea+'&'+_0x1fb430,'auth':_0x50a9e4,'json':!![]};logger[_0x0fff('0x17')]('['+[_0x1daf30['toUpperCase']()]+_0x0fff('0x18'),_0x606792);return rp(_0x606792)[_0x0fff('0xc')](function(_0x48e6f9){logger['info']('['+[_0x1daf30['toUpperCase']()]+_0x0fff('0x19'),_0x48e6f9);if(_0x48e6f9[_0x0fff('0xd')][_0x0fff('0xe')]>0x0&&String(_0x48e6f9[_0x0fff('0xd')][0x0]['active'])===_0x0fff('0x1a')){_0x41e2e7[_0x0fff('0x1b')]=_0x48e6f9[_0x0fff('0xd')][0x0][_0x0fff('0x10')];}else{_0x41e2e7[_0x0fff('0x1b')]=_0x41e2e7[_0x0fff('0xf')];_0x41e2e7['userEmail']=_0x41e2e7[_0x0fff('0x1c')];}logger[_0x0fff('0x17')]('['+[_0x1daf30[_0x0fff('0x11')]()]+_0x0fff('0x1d'),_0x41e2e7);_0x540a67(_0x41e2e7);})[_0x0fff('0x12')](function(_0x23d9f8){logger['error']('['+[_0x1daf30[_0x0fff('0x11')]()]+']',_0x23d9f8[_0x0fff('0x1e')]);_0x528071(_0x23d9f8[_0x0fff('0x1e')]);});}else{logger[_0x0fff('0x17')]('['+[_0x1daf30[_0x0fff('0x11')]()]+_0x0fff('0x1f'));_0x41e2e7[_0x0fff('0x1b')]=_0x41e2e7[_0x0fff('0xf')];_0x41e2e7[_0x0fff('0x15')]=_0x41e2e7[_0x0fff('0x1c')];_0x540a67(_0x41e2e7);}});};}function createEndUser(_0x40651c,_0x2c39e3,_0x495734,_0x7046a3,_0x2d1800){logger[_0x0fff('0x17')]('['+[_0x40651c[_0x0fff('0x11')]()]+_0x0fff('0x20'),_0x495734);return new Promise(function(_0x125844,_0x47dde0){var _0x31f9a4={'method':_0x0fff('0x21'),'uri':_0x7046a3+_0x0fff('0x22')+_0x2d1800,'body':{'user_name':_0x495734['endUserNumber'],'roles':_0x0fff('0x23'),'first_name':_0x495734[_0x0fff('0x24')],'active':'true','date_format':_0x0fff('0x25'),'phone':_0x495734[_0x0fff('0x24')]},'auth':_0x2c39e3,'json':!![]};return rp(_0x31f9a4)[_0x0fff('0xc')](function(_0x15ae24){logger[_0x0fff('0x17')]('['+[_0x40651c[_0x0fff('0x11')]()]+_0x0fff('0x26'),_0x15ae24[_0x0fff('0xd')]);_0x495734[_0x0fff('0x27')]=_0x15ae24[_0x0fff('0xd')]['sys_id'];_0x125844(_0x495734);})[_0x0fff('0x12')](function(_0x1c19f5){logger[_0x0fff('0x13')]('['+[_0x40651c[_0x0fff('0x11')]()]+']',_0x1c19f5[_0x0fff('0x1e')]);_0x47dde0(_0x1c19f5['message']);});});}function getEndUser(_0x56a991,_0x316057,_0x1a5ef6,_0x648285,_0x30a131){return function(_0x5c1797){logger[_0x0fff('0x17')]('['+[_0x56a991[_0x0fff('0x11')]()]+_0x0fff('0x28'),_0x5c1797);return new Promise(function(_0x1464e9,_0x4a4987){var _0x36a233={'method':_0x0fff('0xa'),'uri':_0x1a5ef6+_0x0fff('0x29')+_0x5c1797[_0x0fff('0x24')]+'&'+_0x648285+'&'+_0x30a131,'auth':_0x316057,'json':!![]};return rp(_0x36a233)[_0x0fff('0xc')](function(_0x43af7a){if(_0x43af7a[_0x0fff('0xd')][_0x0fff('0xe')]>0x0){_0x5c1797[_0x0fff('0x27')]=_0x43af7a[_0x0fff('0xd')][0x0][_0x0fff('0x10')];logger[_0x0fff('0x17')]('['+[_0x56a991['toUpperCase']()]+_0x0fff('0x2a'),_0x5c1797);_0x1464e9(_0x5c1797);}else{return createEndUser(_0x56a991,_0x316057,_0x5c1797,_0x1a5ef6,_0x648285)[_0x0fff('0xc')](function(_0x45ba02){logger[_0x0fff('0x17')]('['+[_0x56a991[_0x0fff('0x11')]()]+_0x0fff('0x2b'),_0x45ba02);_0x1464e9(_0x45ba02);});}})['catch'](function(_0x10ff9d){logger[_0x0fff('0x13')]('['+[_0x56a991[_0x0fff('0x11')]()]+']',_0x10ff9d[_0x0fff('0x1e')]);_0x4a4987(_0x10ff9d[_0x0fff('0x1e')]);});});};}function getCustomFields(_0x101151,_0x3dc0b8){var _0x425ec1={};if(_0x101151[_0x0fff('0xe')]>0x0){_['forEach'](_0x101151,function(_0x2cab47){if(_['includes']([_0x0fff('0x2c'),_0x0fff('0x2d')],_0x2cab47[_0x0fff('0x2e')])&&_0x2cab47['nameField']&&!_0x2cab47['customField']){_0x425ec1[_0x2cab47[_0x0fff('0x2f')][_0x0fff('0x30')]()]=_0x2cab47[_0x0fff('0x31')]['toString']();}else if(_['includes']([_0x0fff('0x2c'),'picklist'],_0x2cab47[_0x0fff('0x2e')])&&_0x2cab47[_0x0fff('0x32')]&&_0x2cab47[_0x0fff('0x33')]){_0x425ec1[_0x2cab47[_0x0fff('0x32')][_0x0fff('0x30')]()]=_0x2cab47[_0x0fff('0x31')]['toString']();}else if(_0x2cab47[_0x0fff('0x2e')]===_0x0fff('0x34')&&_0x2cab47[_0x0fff('0x35')]&&_0x2cab47[_0x0fff('0x32')]&&_0x2cab47[_0x0fff('0x33')]){_0x425ec1[_0x2cab47[_0x0fff('0x32')][_0x0fff('0x30')]()]=_0x3dc0b8[_0x2cab47['variableName']][_0x0fff('0x36')]();}else if(_0x2cab47[_0x0fff('0x2e')]===_0x0fff('0x37')&&_0x2cab47['Variable']&&_0x2cab47[_0x0fff('0x38')][_0x0fff('0x39')]&&_0x2cab47[_0x0fff('0x32')]&&_0x2cab47[_0x0fff('0x33')]){_0x425ec1[_0x2cab47[_0x0fff('0x32')][_0x0fff('0x30')]()]=_0x3dc0b8[_0x2cab47[_0x0fff('0x38')][_0x0fff('0x39')][_0x0fff('0x30')]()][_0x0fff('0x36')]();}});}return _0x425ec1;}function getTicket(_0x5aeafd,_0x539089,_0x3f97b6,_0x1ad309,_0x5c9dad,_0x38c058){return function(_0x1ca60f){logger[_0x0fff('0x17')]('['+[_0x5aeafd['toUpperCase']()]+']\x20getTicket\x20input\x20crm',_0x1ca60f);return new Promise(function(_0x2a0b10,_0x497704){var _0x5d87d7=_0x5aeafd[_0x0fff('0x30')]()===_0x0fff('0x3a')?_0x1ca60f[_0x0fff('0x1b')]:_0x1ca60f[_0x0fff('0x27')];var _0x3b4b8e={'method':_0x0fff('0x21'),'uri':_0x3f97b6+'incident'+'?'+_0x38c058,'body':Object[_0x0fff('0x3b')]({},{'active':_0x0fff('0x1a'),'caller_id':_0x5d87d7,'assigned_to':_0x1ca60f[_0x0fff('0x1b')],'short_description':intUtil[_0x0fff('0x3c')](_0x1ad309[_0x0fff('0x3d')],_0x5c9dad,'\x20'),'description':intUtil[_0x0fff('0x3c')](_0x1ad309['Descriptions'],_0x5c9dad,'\x0a')},getCustomFields(_0x1ad309[_0x0fff('0x3e')],_0x5c9dad)),'auth':_0x539089,'json':!![]};return rp(_0x3b4b8e)[_0x0fff('0xc')](function(_0x47f8db){logger[_0x0fff('0x17')]('['+[_0x5aeafd['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x47f8db['result']);_0x1ca60f[_0x0fff('0x3f')]=_0x47f8db[_0x0fff('0xd')][_0x0fff('0x10')];_0x1ca60f[_0x0fff('0x40')]=_0x47f8db[_0x0fff('0xd')]['number'];logger[_0x0fff('0x17')]('['+[_0x5aeafd[_0x0fff('0x11')]()]+_0x0fff('0x41'),_0x1ca60f);_0x2a0b10(_0x1ca60f);})[_0x0fff('0x12')](function(_0x1f4288){logger['error']('['+[_0x5aeafd[_0x0fff('0x11')]()]+']',_0x1f4288[_0x0fff('0x1e')]);_0x497704(_0x1f4288[_0x0fff('0x1e')]);});});};}function createRemoteTag(_0x168f3a,_0x235d5a,_0x2e8242,_0x1af59f){return new Promise(function(_0x236da3,_0x306815){var _0x216e12={'method':_0x0fff('0x21'),'uri':_0x2e8242+_0x0fff('0x42')+'?'+_0x1af59f,'body':{'short_description':_0x168f3a,'global':!![],'active':!![],'name':_0x168f3a},'auth':_0x235d5a,'json':!![]};return rp(_0x216e12)[_0x0fff('0xc')](function(_0x2608be){var _0x422084=_0x2608be[_0x0fff('0xd')][_0x0fff('0x10')];_0x236da3(_0x422084);});});}function getRemoteTag(_0x130398,_0x1ffae7,_0x398513,_0x18c853,_0x50cfc9){return new Promise(function(_0x25d696,_0x2be0f7){var _0x4723a4={'method':_0x0fff('0xa'),'uri':_0x398513+'label'+_0x0fff('0x43')+_0x130398+'&'+_0x18c853,'auth':_0x1ffae7,'json':!![]};return rp(_0x4723a4)['then'](function(_0x3d6e54){if(_0x3d6e54[_0x0fff('0xd')][_0x0fff('0xe')]>0x0){var _0x22a0a0=_0x3d6e54['result'][0x0][_0x0fff('0x10')];_0x25d696(_0x22a0a0);}else{return createRemoteTag(_0x130398,_0x1ffae7,_0x398513,_0x18c853)[_0x0fff('0xc')](function(_0xd781d3){_0x25d696(_0xd781d3);});}});});}function assignTagToIncident(_0x226d6d,_0x4cf619,_0x5ba7e7,_0x449da4,_0x40b8f0){return new Promise(function(_0x147939,_0x2e91c6){var _0xa7ca7d={'method':_0x0fff('0x21'),'uri':_0x5ba7e7+'label_entry'+'?'+_0x40b8f0,'body':{'label':_0x226d6d,'table':'incident','id_type':_0x0fff('0x44'),'table_key':_0x449da4[_0x0fff('0x3f')],'title':_0x0fff('0x45')+_0x449da4[_0x0fff('0x40')],'id_display':_0x449da4[_0x0fff('0x40')]},'auth':_0x4cf619,'json':!![]};return rp(_0xa7ca7d)[_0x0fff('0xc')](function(_0x33eb07){_0x147939();})[_0x0fff('0x12')](function(){_0x147939();});});}function manageTags(_0x5f2fcc,_0x12fe95,_0x4ac266,_0x33ab8c,_0x145dd4,_0x163d8a,_0x56d5c5){return new Promise(function(_0x5bf369,_0x139cb3){var _0x504212=[];_0x12fe95[_0x0fff('0x46')](function(_0x5ce7ac){_0x504212[_0x0fff('0x47')](getRemoteTag(_0x5ce7ac,_0x4ac266,_0x33ab8c,_0x163d8a,_0x56d5c5));});return Promise[_0x0fff('0x48')](_0x504212)['then'](function(_0x3e04df){if(_0x3e04df[_0x0fff('0xe')]){logger['info']('['+[_0x5f2fcc[_0x0fff('0x11')]()]+_0x0fff('0x49'),_0x3e04df);var _0x1111c8=[];_0x3e04df['forEach'](function(_0xb33919){_0x1111c8[_0x0fff('0x47')](assignTagToIncident(_0xb33919,_0x4ac266,_0x33ab8c,_0x145dd4,_0x163d8a));});return Promise[_0x0fff('0x48')](_0x1111c8)[_0x0fff('0xc')](function(){_0x5bf369();})[_0x0fff('0x12')](function(){_0x5bf369();});}else{_0x5bf369();}});});}function getTags(_0xf4fb1e,_0x3813a0,_0x18aaca,_0x4072ac,_0x31848c,_0x1a5988){return function(_0x23d04a){return new Promise(function(_0x4a6ee1,_0x5cec8f){var _0x247819=[];var _0x59c65a=_0x4072ac['Tags'];if(_0x59c65a&&_0x59c65a[_0x0fff('0xe')]>0x0){_0x247819=_[_0x0fff('0x4a')](_0x59c65a,_0x0fff('0x39'));}if(_0x247819['length']>0x0){return manageTags(_0xf4fb1e,_0x247819,_0x3813a0,_0x18aaca,_0x23d04a,_0x31848c,_0x1a5988)['then'](function(){_0x4a6ee1(_0x23d04a);});}else{_0x4a6ee1(_0x23d04a);}});};}function emit(_0xf6dedb,_0x1f9869,_0x2e996c){var _0x2586c6='%26sysparm_record_target%3Dincident'+_0x0fff('0x4b')+_0x0fff('0x4c')+_0x0fff('0x4d');var _0x46164e={'uri':_0xf6dedb+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x2e996c+_0x2586c6};io['to'](util[_0x0fff('0x4e')](_0x0fff('0x4f'),_0x1f9869))['emit']('trigger:browser:url',_0x46164e);}exports['cs']=function(_0x33ed23,_0x1dac18,_0x2e91e0,_0x202344,_0x167e55,_0x50eaa6,_0x27cb67,_0x7b040){var _0x2c97c8={};var _0x2d77bd={'user':_0x50eaa6[_0x0fff('0x50')],'pass':_0x50eaa6['password']};var _0x5d57fc=_0x0fff('0x51');var _0x5e55c8=_0x0fff('0x52');_0x50eaa6[_0x0fff('0x53')]=intUtil[_0x0fff('0x54')](_0x50eaa6[_0x0fff('0x53')]);_0x50eaa6[_0x0fff('0x55')]=intUtil['stripTrailingSlash'](_0x50eaa6[_0x0fff('0x55')]);var _0x191872=util[_0x0fff('0x4e')](_0x0fff('0x56'),_0x50eaa6[_0x0fff('0x53')]);_0x2c97c8[_0x0fff('0x15')]=!_[_0x0fff('0x57')](_0x202344)?_0x202344[_0x0fff('0x58')]:null;_0x2c97c8[_0x0fff('0x1c')]=_0x50eaa6[_0x0fff('0x58')];_0x2c97c8[_0x0fff('0x24')]=_0x7b040['toLowerCase']()===_0x0fff('0x3a')?_0x1dac18[_0x0fff('0x59')]:_0x1dac18['calleridnum'];_0x2c97c8[_0x0fff('0x5a')]=_0x7b040==='queue'||_0x7b040===_0x0fff('0x5b')?_0x0fff('0x5c'):_0x0fff('0x3a');var _0x8799c2=util[_0x0fff('0x4e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x50eaa6[_0x0fff('0x55')],_0x1dac18[_0x0fff('0x5d')],md5(_0x1dac18['uniqueid']));if(_0x167e55&&_0x167e55[_0x0fff('0x5e')]){logger[_0x0fff('0x17')](_0x0fff('0x5f'),'Recording\x20is\x20enabled!');_0x1dac18[_0x0fff('0x60')]=_0x8799c2;}else if(_0x27cb67&&_0x27cb67[_0x0fff('0x61')]&&_0x27cb67['recordingFormat']!=='none'){logger[_0x0fff('0x17')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1dac18[_0x0fff('0x60')]=_0x8799c2;}else{_0x1dac18[_0x0fff('0x60')]='';}return getAdminUser(_0x7b040,_0x2d77bd,_0x2c97c8,_0x191872,_0x5e55c8,_0x5d57fc)[_0x0fff('0xc')](getUser(_0x7b040,_0x2d77bd,_0x191872,_0x5e55c8,_0x5d57fc))['then'](getEndUser(_0x7b040,_0x2d77bd,_0x191872,_0x5e55c8,_0x5d57fc))['then'](getTicket(_0x7b040,_0x2d77bd,_0x191872,_0x2e91e0,_0x1dac18,_0x5e55c8))[_0x0fff('0xc')](function(_0x537515){logger[_0x0fff('0x17')](util[_0x0fff('0x4e')](_0x0fff('0x62'),_0x537515[_0x0fff('0x3f')]));logger[_0x0fff('0x17')](util[_0x0fff('0x4e')](_0x0fff('0x63'),_0x7b040));if(_0x7b040!=='unmanaged'){logger[_0x0fff('0x17')]('['+[_0x7b040[_0x0fff('0x11')]()]+']',_0x0fff('0x64'));emit(_0x50eaa6[_0x0fff('0x53')],_0x202344[_0x0fff('0x39')],_0x537515[_0x0fff('0x3f')]);}})['catch'](function(_0x3c5c83){logger['error']('['+[_0x7b040[_0x0fff('0x11')]()]+_0x0fff('0x65'),util[_0x0fff('0x66')](_0x3c5c83,{'showHidden':!![],'depth':null}));});};