350bacba7d8c752c21f0060cde49cfd2d7d2a1ff
[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 _0xb92a=['username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','md5','ioredis','./util','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','length','adminId','result','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','info','active','true','userId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminEmail','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variable','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions','Fields','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','all','push','Tags','%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','emit','trigger:browser:url'];(function(_0xdb8964,_0x292b19){var _0x50f39e=function(_0x317bc5){while(--_0x317bc5){_0xdb8964['push'](_0xdb8964['shift']());}};_0x50f39e(++_0x292b19);}(_0xb92a,0x166));var _0xab92=function(_0xd2f7d1,_0x436302){_0xd2f7d1=_0xd2f7d1-0x0;var _0x2db76e=_0xb92a[_0xd2f7d1];return _0x2db76e;};'use strict';var _=require(_0xab92('0x0'));var Promise=require(_0xab92('0x1'));var rp=require('request-promise');var util=require('util');var md5=require(_0xab92('0x2'));var Redis=require(_0xab92('0x3'));var intUtil=require(_0xab92('0x4'));var config=require('../../../../config/environment');var logger=require(_0xab92('0x5'))(_0xab92('0x6'));config[_0xab92('0x7')]=_[_0xab92('0x8')](config[_0xab92('0x7')],{'host':_0xab92('0x9'),'port':0x18eb});var io=require(_0xab92('0xa'))(new Redis(config[_0xab92('0x7')]));function getAdminUser(_0x2b413d,_0x3c09e1,_0x10c1a8,_0x18ea82,_0x1239e2,_0x2637c6){return new Promise(function(_0x278024,_0x5a0ce4){var _0x528bcc={'method':_0xab92('0xb'),'uri':_0x18ea82+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1239e2+'&'+_0x2637c6,'auth':_0x3c09e1,'json':!![]};return rp(_0x528bcc)[_0xab92('0xc')](function(_0x529ffe){if(_0x529ffe['result'][_0xab92('0xd')]>0x0){_0x10c1a8[_0xab92('0xe')]=_0x529ffe[_0xab92('0xf')][0x0][_0xab92('0x10')];}logger['info']('['+[_0x2b413d[_0xab92('0x11')]()]+_0xab92('0x12'),_0x10c1a8);_0x278024(_0x10c1a8);})[_0xab92('0x13')](function(_0x3ec6a6){logger[_0xab92('0x14')]('['+[_0x2b413d[_0xab92('0x11')]()]+']',_0x3ec6a6[_0xab92('0x15')]);_0x5a0ce4(_0x3ec6a6[_0xab92('0x15')]);});});}function getUser(_0x5435d4,_0x56177a,_0x5a4b17,_0x54178c,_0x45c606){return function(_0x392bcb){logger['info']('['+[_0x5435d4[_0xab92('0x11')]()]+_0xab92('0x16'),_0x392bcb);return new Promise(function(_0x449f3f,_0x1bce57){if(intUtil[_0xab92('0x17')](_0x392bcb[_0xab92('0x18')])){var _0x495972={'method':_0xab92('0xb'),'uri':_0x5a4b17+'sys_user?sysparm_query=email%3D'+_0x392bcb[_0xab92('0x18')]+'&'+_0x54178c+'&'+_0x45c606,'auth':_0x56177a,'json':!![]};logger['info']('['+[_0x5435d4[_0xab92('0x11')]()]+_0xab92('0x19'),_0x495972);return rp(_0x495972)[_0xab92('0xc')](function(_0x3c0b77){logger[_0xab92('0x1a')]('['+[_0x5435d4[_0xab92('0x11')]()]+'],\x20getUser\x20entity',_0x3c0b77);if(_0x3c0b77[_0xab92('0xf')][_0xab92('0xd')]>0x0&&String(_0x3c0b77[_0xab92('0xf')][0x0][_0xab92('0x1b')])===_0xab92('0x1c')){_0x392bcb[_0xab92('0x1d')]=_0x3c0b77[_0xab92('0xf')][0x0][_0xab92('0x10')];}else{_0x392bcb['userId']=_0x392bcb[_0xab92('0xe')];_0x392bcb['userEmail']=_0x392bcb['adminEmail'];}logger[_0xab92('0x1a')]('['+[_0x5435d4['toUpperCase']()]+_0xab92('0x1e'),_0x392bcb);_0x449f3f(_0x392bcb);})[_0xab92('0x13')](function(_0x3b9639){logger[_0xab92('0x14')]('['+[_0x5435d4[_0xab92('0x11')]()]+']',_0x3b9639[_0xab92('0x15')]);_0x1bce57(_0x3b9639[_0xab92('0x15')]);});}else{logger[_0xab92('0x1a')]('['+[_0x5435d4[_0xab92('0x11')]()]+_0xab92('0x1f'));_0x392bcb['userId']=_0x392bcb[_0xab92('0xe')];_0x392bcb[_0xab92('0x18')]=_0x392bcb[_0xab92('0x20')];_0x449f3f(_0x392bcb);}});};}function createEndUser(_0x58686b,_0xace89e,_0x38357b,_0x1b6c4a,_0x1cacb9){logger[_0xab92('0x1a')]('['+[_0x58686b[_0xab92('0x11')]()]+'],\x20createEndUser\x20input\x20crm',_0x38357b);return new Promise(function(_0x23cab7,_0x4e06ed){var _0x12529f={'method':_0xab92('0x21'),'uri':_0x1b6c4a+_0xab92('0x22')+_0x1cacb9,'body':{'user_name':_0x38357b[_0xab92('0x23')],'roles':_0xab92('0x24'),'first_name':_0x38357b['endUserNumber'],'active':_0xab92('0x1c'),'date_format':_0xab92('0x25'),'phone':_0x38357b[_0xab92('0x23')]},'auth':_0xace89e,'json':!![]};return rp(_0x12529f)[_0xab92('0xc')](function(_0x39a1d9){logger[_0xab92('0x1a')]('['+[_0x58686b['toUpperCase']()]+_0xab92('0x26'),_0x39a1d9[_0xab92('0xf')]);_0x38357b['endUserId']=_0x39a1d9[_0xab92('0xf')][_0xab92('0x10')];_0x23cab7(_0x38357b);})[_0xab92('0x13')](function(_0x126689){logger['error']('['+[_0x58686b['toUpperCase']()]+']',_0x126689[_0xab92('0x15')]);_0x4e06ed(_0x126689[_0xab92('0x15')]);});});}function getEndUser(_0x2c8c9a,_0x4d9039,_0x5b2f68,_0x394422,_0x51a143){return function(_0x570504){logger[_0xab92('0x1a')]('['+[_0x2c8c9a[_0xab92('0x11')]()]+'],\x20getEndUser\x20input\x20crm',_0x570504);return new Promise(function(_0x2c75a5,_0x45b581){var _0x1bfd46={'method':_0xab92('0xb'),'uri':_0x5b2f68+_0xab92('0x27')+_0x570504['endUserNumber']+'&'+_0x394422+'&'+_0x51a143,'auth':_0x4d9039,'json':!![]};return rp(_0x1bfd46)[_0xab92('0xc')](function(_0x331e5f){if(_0x331e5f[_0xab92('0xf')]['length']>0x0){_0x570504[_0xab92('0x28')]=_0x331e5f[_0xab92('0xf')][0x0][_0xab92('0x10')];logger['info']('['+[_0x2c8c9a[_0xab92('0x11')]()]+_0xab92('0x29'),_0x570504);_0x2c75a5(_0x570504);}else{return createEndUser(_0x2c8c9a,_0x4d9039,_0x570504,_0x5b2f68,_0x394422)['then'](function(_0x154fa5){logger[_0xab92('0x1a')]('['+[_0x2c8c9a[_0xab92('0x11')]()]+_0xab92('0x2a'),_0x154fa5);_0x2c75a5(_0x154fa5);});}})['catch'](function(_0x2c3817){logger[_0xab92('0x14')]('['+[_0x2c8c9a[_0xab92('0x11')]()]+']',_0x2c3817[_0xab92('0x15')]);_0x45b581(_0x2c3817[_0xab92('0x15')]);});});};}function getCustomFields(_0xd569d0,_0x83d719){var _0x1a0571={};if(_0xd569d0[_0xab92('0xd')]>0x0){_[_0xab92('0x2b')](_0xd569d0,function(_0x2a35eb){if(_[_0xab92('0x2c')]([_0xab92('0x2d'),_0xab92('0x2e')],_0x2a35eb[_0xab92('0x2f')])&&_0x2a35eb[_0xab92('0x30')]&&!_0x2a35eb[_0xab92('0x31')]){_0x1a0571[_0x2a35eb[_0xab92('0x30')][_0xab92('0x32')]()]=_0x2a35eb[_0xab92('0x33')][_0xab92('0x34')]();}else if(_['includes']([_0xab92('0x2d'),'picklist'],_0x2a35eb[_0xab92('0x2f')])&&_0x2a35eb[_0xab92('0x35')]&&_0x2a35eb[_0xab92('0x31')]){_0x1a0571[_0x2a35eb['idField'][_0xab92('0x32')]()]=_0x2a35eb[_0xab92('0x33')][_0xab92('0x34')]();}else if(_0x2a35eb['type']===_0xab92('0x36')&&_0x2a35eb['variableName']&&_0x2a35eb['idField']&&_0x2a35eb[_0xab92('0x31')]){_0x1a0571[_0x2a35eb['idField'][_0xab92('0x32')]()]=_0x83d719[_0x2a35eb['variableName']][_0xab92('0x34')]();}else if(_0x2a35eb[_0xab92('0x2f')]===_0xab92('0x37')&&_0x2a35eb[_0xab92('0x38')]&&_0x2a35eb[_0xab92('0x38')][_0xab92('0x39')]&&_0x2a35eb[_0xab92('0x35')]&&_0x2a35eb[_0xab92('0x31')]){_0x1a0571[_0x2a35eb['idField']['toLowerCase']()]=_0x83d719[_0x2a35eb[_0xab92('0x38')][_0xab92('0x39')]['toLowerCase']()]['toString']();}});}return _0x1a0571;}function getTicket(_0x43dbe8,_0x117f66,_0x159b0f,_0x5df044,_0xe257b9,_0x2078b8){return function(_0x357cc1){logger[_0xab92('0x1a')]('['+[_0x43dbe8[_0xab92('0x11')]()]+_0xab92('0x3a'),_0x357cc1);return new Promise(function(_0x136cf9,_0x27747d){var _0x3fef70=_0x43dbe8['toLowerCase']()===_0xab92('0x3b')?_0x357cc1['userId']:_0x357cc1[_0xab92('0x28')];var _0x3a2d84={'method':_0xab92('0x21'),'uri':_0x159b0f+_0xab92('0x3c')+'?'+_0x2078b8,'body':Object[_0xab92('0x3d')]({},{'active':'true','caller_id':_0x3fef70,'assigned_to':_0x357cc1[_0xab92('0x1d')],'short_description':intUtil[_0xab92('0x3e')](_0x5df044[_0xab92('0x3f')],_0xe257b9,'\x20'),'description':intUtil[_0xab92('0x3e')](_0x5df044[_0xab92('0x40')],_0xe257b9,'\x0a')},getCustomFields(_0x5df044[_0xab92('0x41')],_0xe257b9)),'auth':_0x117f66,'json':!![]};return rp(_0x3a2d84)[_0xab92('0xc')](function(_0x3d0d80){logger['info']('['+[_0x43dbe8[_0xab92('0x11')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x3d0d80[_0xab92('0xf')]);_0x357cc1[_0xab92('0x42')]=_0x3d0d80[_0xab92('0xf')][_0xab92('0x10')];_0x357cc1[_0xab92('0x43')]=_0x3d0d80['result'][_0xab92('0x44')];logger['info']('['+[_0x43dbe8[_0xab92('0x11')]()]+_0xab92('0x45'),_0x357cc1);_0x136cf9(_0x357cc1);})[_0xab92('0x13')](function(_0x32a2dd){logger[_0xab92('0x14')]('['+[_0x43dbe8[_0xab92('0x11')]()]+']',_0x32a2dd[_0xab92('0x15')]);_0x27747d(_0x32a2dd[_0xab92('0x15')]);});});};}function createRemoteTag(_0x267416,_0x7356b3,_0x1340af,_0x22fc4e){return new Promise(function(_0x434fb9,_0x3f22bc){var _0x27d4f0={'method':'POST','uri':_0x1340af+'label'+'?'+_0x22fc4e,'body':{'short_description':_0x267416,'global':!![],'active':!![],'name':_0x267416},'auth':_0x7356b3,'json':!![]};return rp(_0x27d4f0)[_0xab92('0xc')](function(_0x29a36b){var _0x34d324=_0x29a36b[_0xab92('0xf')]['sys_id'];_0x434fb9(_0x34d324);});});}function getRemoteTag(_0xd9762a,_0x41b847,_0x227e6c,_0x18b4b2,_0x3ff5df){return new Promise(function(_0x5811de,_0xb4394c){var _0xdb4050={'method':_0xab92('0xb'),'uri':_0x227e6c+_0xab92('0x46')+_0xab92('0x47')+_0xd9762a+'&'+_0x18b4b2,'auth':_0x41b847,'json':!![]};return rp(_0xdb4050)[_0xab92('0xc')](function(_0x50ec3c){if(_0x50ec3c[_0xab92('0xf')][_0xab92('0xd')]>0x0){var _0xad519d=_0x50ec3c[_0xab92('0xf')][0x0][_0xab92('0x10')];_0x5811de(_0xad519d);}else{return createRemoteTag(_0xd9762a,_0x41b847,_0x227e6c,_0x18b4b2)['then'](function(_0x2116a2){_0x5811de(_0x2116a2);});}});});}function assignTagToIncident(_0x1b17e4,_0x4e314d,_0x511598,_0x52b863,_0x450a93){return new Promise(function(_0x4d01d3,_0x3aa93a){var _0x211c5a={'method':'POST','uri':_0x511598+_0xab92('0x48')+'?'+_0x450a93,'body':{'label':_0x1b17e4,'table':_0xab92('0x3c'),'id_type':_0xab92('0x49'),'table_key':_0x52b863[_0xab92('0x42')],'title':_0xab92('0x4a')+_0x52b863['ticketNumber'],'id_display':_0x52b863[_0xab92('0x43')]},'auth':_0x4e314d,'json':!![]};return rp(_0x211c5a)['then'](function(_0x5c1e89){_0x4d01d3();})[_0xab92('0x13')](function(){_0x4d01d3();});});}function manageTags(_0x117cb7,_0x595e2d,_0x1b85ee,_0xc74a3d,_0x25190e,_0x17666f,_0x1cf786){return new Promise(function(_0x2532d0,_0x4d1f48){var _0x34ba95=[];_0x595e2d[_0xab92('0x2b')](function(_0x529d48){_0x34ba95['push'](getRemoteTag(_0x529d48,_0x1b85ee,_0xc74a3d,_0x17666f,_0x1cf786));});return Promise[_0xab92('0x4b')](_0x34ba95)[_0xab92('0xc')](function(_0x44e252){if(_0x44e252[_0xab92('0xd')]){logger[_0xab92('0x1a')]('['+[_0x117cb7[_0xab92('0x11')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x44e252);var _0x19d1bb=[];_0x44e252['forEach'](function(_0x4bc3f2){_0x19d1bb[_0xab92('0x4c')](assignTagToIncident(_0x4bc3f2,_0x1b85ee,_0xc74a3d,_0x25190e,_0x17666f));});return Promise[_0xab92('0x4b')](_0x19d1bb)[_0xab92('0xc')](function(){_0x2532d0();})['catch'](function(){_0x2532d0();});}else{_0x2532d0();}});});}function getTags(_0x3bdd75,_0x248623,_0xb03260,_0x5a020f,_0x3b88c3,_0x38fff9){return function(_0x1d6cf1){return new Promise(function(_0x512af8,_0x1521e2){var _0xcdf407=[];var _0x3b91b5=_0x5a020f[_0xab92('0x4d')];if(_0x3b91b5&&_0x3b91b5[_0xab92('0xd')]>0x0){_0xcdf407=_['map'](_0x3b91b5,_0xab92('0x39'));}if(_0xcdf407['length']>0x0){return manageTags(_0x3bdd75,_0xcdf407,_0x248623,_0xb03260,_0x1d6cf1,_0x3b88c3,_0x38fff9)[_0xab92('0xc')](function(){_0x512af8(_0x1d6cf1);});}else{_0x512af8(_0x1d6cf1);}});};}function emit(_0xf118d9,_0x393ce7,_0x5070e4){var _0x140591='%26sysparm_record_target%3Dincident'+_0xab92('0x4e')+_0xab92('0x4f')+_0xab92('0x50');var _0x18ce15={'uri':_0xf118d9+_0xab92('0x51')+_0x5070e4+_0x140591};io['to'](util[_0xab92('0x52')](_0xab92('0x53'),_0x393ce7))[_0xab92('0x54')](_0xab92('0x55'),_0x18ce15);}exports['cs']=function(_0x1c8345,_0x379a53,_0x3dcb9f,_0x22c2ee,_0x2297b6,_0x354652,_0x43f00d,_0x10c921){var _0x8a00ac={};var _0x14bc21={'user':_0x354652[_0xab92('0x56')],'pass':_0x354652[_0xab92('0x57')]};var _0x1c88b8=_0xab92('0x58');var _0x1f80c1=_0xab92('0x59');_0x354652[_0xab92('0x5a')]=intUtil[_0xab92('0x5b')](_0x354652[_0xab92('0x5a')]);_0x354652['serverUrl']=intUtil['stripTrailingSlash'](_0x354652['serverUrl']);var _0x560bd9=util[_0xab92('0x52')](_0xab92('0x5c'),_0x354652[_0xab92('0x5a')]);_0x8a00ac[_0xab92('0x18')]=!_[_0xab92('0x5d')](_0x22c2ee)?_0x22c2ee['email']:null;_0x8a00ac[_0xab92('0x20')]=_0x354652[_0xab92('0x5e')];_0x8a00ac[_0xab92('0x23')]=_0x10c921[_0xab92('0x32')]()===_0xab92('0x3b')?_0x379a53[_0xab92('0x5f')]:_0x379a53[_0xab92('0x60')];_0x8a00ac[_0xab92('0x61')]=_0x10c921===_0xab92('0x62')||_0x10c921===_0xab92('0x63')?'queue':_0xab92('0x3b');var _0x34d369=util['format'](_0xab92('0x64'),_0x354652['serverUrl'],_0x379a53[_0xab92('0x65')],md5(_0x379a53[_0xab92('0x65')]));if(_0x2297b6&&_0x2297b6[_0xab92('0x66')]){logger[_0xab92('0x1a')](_0xab92('0x67'),_0xab92('0x68'));_0x379a53[_0xab92('0x69')]=_0x34d369;}else if(_0x43f00d&&_0x43f00d[_0xab92('0x6a')]&&_0x43f00d[_0xab92('0x6a')]!==_0xab92('0x6b')){logger['info']('[OUTBOUND]',_0xab92('0x68'));_0x379a53[_0xab92('0x69')]=_0x34d369;}else{_0x379a53['recordingURL']='';}return getAdminUser(_0x10c921,_0x14bc21,_0x8a00ac,_0x560bd9,_0x1f80c1,_0x1c88b8)[_0xab92('0xc')](getUser(_0x10c921,_0x14bc21,_0x560bd9,_0x1f80c1,_0x1c88b8))[_0xab92('0xc')](getEndUser(_0x10c921,_0x14bc21,_0x560bd9,_0x1f80c1,_0x1c88b8))['then'](getTicket(_0x10c921,_0x14bc21,_0x560bd9,_0x3dcb9f,_0x379a53,_0x1f80c1))[_0xab92('0xc')](function(_0x2af374){logger[_0xab92('0x1a')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x2af374[_0xab92('0x42')]));logger[_0xab92('0x1a')](util['format'](_0xab92('0x6c'),_0x10c921));if(_0x10c921!==_0xab92('0x63')){logger[_0xab92('0x1a')]('['+[_0x10c921[_0xab92('0x11')]()]+']',_0xab92('0x6d'));emit(_0x354652[_0xab92('0x5a')],_0x22c2ee['name'],_0x2af374[_0xab92('0x42')]);}})['catch'](function(_0x3139a3){logger[_0xab92('0x14')]('['+[_0x10c921['toUpperCase']()]+_0xab92('0x6e'),util['inspect'](_0x3139a3,{'showHidden':!![],'depth':null}));});};