Built motion from commit 775e2a94.|2.6.3
[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 _0xf332=['servicenow','defaults','redis','localhost','GET','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','userId',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','true','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident\x20-\x20','push','all','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','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf332,0x6a));var _0x2f33=function(_0x4b977e,_0x1e25dc){_0x4b977e=_0x4b977e-0x0;var _0x96a540=_0xf332[_0x4b977e];return _0x96a540;};'use strict';var _=require(_0x2f33('0x0'));var Promise=require(_0x2f33('0x1'));var rp=require(_0x2f33('0x2'));var util=require(_0x2f33('0x3'));var md5=require('md5');var Redis=require(_0x2f33('0x4'));var intUtil=require(_0x2f33('0x5'));var config=require(_0x2f33('0x6'));var logger=require(_0x2f33('0x7'))(_0x2f33('0x8'));config['redis']=_[_0x2f33('0x9')](config[_0x2f33('0xa')],{'host':_0x2f33('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2f33('0xa')]));function getAdminUser(_0x15dce8,_0x285f67,_0x4fab61,_0x290249,_0x224b3b,_0x47f1a9){return new Promise(function(_0x22606f,_0x2da274){var _0x140870={'method':_0x2f33('0xc'),'uri':_0x290249+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x224b3b+'&'+_0x47f1a9,'auth':_0x285f67,'json':!![]};return rp(_0x140870)[_0x2f33('0xd')](function(_0x33cf05){if(_0x33cf05[_0x2f33('0xe')][_0x2f33('0xf')]>0x0){_0x4fab61[_0x2f33('0x10')]=_0x33cf05[_0x2f33('0xe')][0x0][_0x2f33('0x11')];}logger[_0x2f33('0x12')]('['+[_0x15dce8[_0x2f33('0x13')]()]+_0x2f33('0x14'),_0x4fab61);_0x22606f(_0x4fab61);})[_0x2f33('0x15')](function(_0x1915bf){logger[_0x2f33('0x16')]('['+[_0x15dce8[_0x2f33('0x13')]()]+']',_0x1915bf['message']);_0x2da274(_0x1915bf[_0x2f33('0x17')]);});});}function getUser(_0xc52d2d,_0x242d2f,_0x4a338b,_0x5b7462,_0x35292f){return function(_0x30bd5d){logger['info']('['+[_0xc52d2d[_0x2f33('0x13')]()]+_0x2f33('0x18'),_0x30bd5d);return new Promise(function(_0x44fc69,_0x3dde32){if(intUtil[_0x2f33('0x19')](_0x30bd5d[_0x2f33('0x1a')])){var _0x157458={'method':_0x2f33('0xc'),'uri':_0x4a338b+_0x2f33('0x1b')+_0x30bd5d['userEmail']+'&'+_0x5b7462+'&'+_0x35292f,'auth':_0x242d2f,'json':!![]};logger[_0x2f33('0x12')]('['+[_0xc52d2d[_0x2f33('0x13')]()]+'],\x20getUser\x20rp\x20obj',_0x157458);return rp(_0x157458)[_0x2f33('0xd')](function(_0x300706){logger[_0x2f33('0x12')]('['+[_0xc52d2d[_0x2f33('0x13')]()]+_0x2f33('0x1c'),_0x300706);if(_0x300706['result']['length']>0x0&&String(_0x300706['result'][0x0][_0x2f33('0x1d')])==='true'){_0x30bd5d[_0x2f33('0x1e')]=_0x300706[_0x2f33('0xe')][0x0][_0x2f33('0x11')];}else{_0x30bd5d[_0x2f33('0x1e')]=_0x30bd5d[_0x2f33('0x10')];_0x30bd5d[_0x2f33('0x1a')]=_0x30bd5d['adminEmail'];}logger[_0x2f33('0x12')]('['+[_0xc52d2d[_0x2f33('0x13')]()]+'],\x20getUser\x20crm',_0x30bd5d);_0x44fc69(_0x30bd5d);})[_0x2f33('0x15')](function(_0x349fed){logger[_0x2f33('0x16')]('['+[_0xc52d2d['toUpperCase']()]+']',_0x349fed['message']);_0x3dde32(_0x349fed[_0x2f33('0x17')]);});}else{logger['info']('['+[_0xc52d2d['toUpperCase']()]+_0x2f33('0x1f'));_0x30bd5d[_0x2f33('0x1e')]=_0x30bd5d[_0x2f33('0x10')];_0x30bd5d[_0x2f33('0x1a')]=_0x30bd5d[_0x2f33('0x20')];_0x44fc69(_0x30bd5d);}});};}function createEndUser(_0x1e0414,_0x2f5527,_0x2b3d8c,_0x3055ed,_0x2fc5ca){logger['info']('['+[_0x1e0414[_0x2f33('0x13')]()]+_0x2f33('0x21'),_0x2b3d8c);return new Promise(function(_0x18e5c3,_0xdb0856){var _0x1b417b={'method':_0x2f33('0x22'),'uri':_0x3055ed+_0x2f33('0x23')+_0x2fc5ca,'body':{'user_name':_0x2b3d8c[_0x2f33('0x24')],'roles':_0x2f33('0x25'),'first_name':_0x2b3d8c[_0x2f33('0x24')],'active':'true','date_format':_0x2f33('0x26'),'phone':_0x2b3d8c[_0x2f33('0x24')]},'auth':_0x2f5527,'json':!![]};return rp(_0x1b417b)[_0x2f33('0xd')](function(_0x35d845){logger[_0x2f33('0x12')]('['+[_0x1e0414[_0x2f33('0x13')]()]+_0x2f33('0x27'),_0x35d845[_0x2f33('0xe')]);_0x2b3d8c[_0x2f33('0x28')]=_0x35d845[_0x2f33('0xe')][_0x2f33('0x11')];_0x18e5c3(_0x2b3d8c);})[_0x2f33('0x15')](function(_0x11afa8){logger['error']('['+[_0x1e0414[_0x2f33('0x13')]()]+']',_0x11afa8['message']);_0xdb0856(_0x11afa8[_0x2f33('0x17')]);});});}function getEndUser(_0x5a6c03,_0x5e53eb,_0x54c322,_0x21b03c,_0x35855f){return function(_0x4eba31){logger[_0x2f33('0x12')]('['+[_0x5a6c03[_0x2f33('0x13')]()]+_0x2f33('0x29'),_0x4eba31);return new Promise(function(_0x18bc23,_0x2143e5){var _0x16962a={'method':_0x2f33('0xc'),'uri':_0x54c322+_0x2f33('0x2a')+_0x4eba31['endUserNumber']+'&'+_0x21b03c+'&'+_0x35855f,'auth':_0x5e53eb,'json':!![]};return rp(_0x16962a)[_0x2f33('0xd')](function(_0x1dd5e4){if(_0x1dd5e4[_0x2f33('0xe')]['length']>0x0){_0x4eba31[_0x2f33('0x28')]=_0x1dd5e4['result'][0x0]['sys_id'];logger['info']('['+[_0x5a6c03[_0x2f33('0x13')]()]+_0x2f33('0x2b'),_0x4eba31);_0x18bc23(_0x4eba31);}else{return createEndUser(_0x5a6c03,_0x5e53eb,_0x4eba31,_0x54c322,_0x21b03c)['then'](function(_0x425669){logger[_0x2f33('0x12')]('['+[_0x5a6c03['toUpperCase']()]+_0x2f33('0x2c'),_0x425669);_0x18bc23(_0x425669);});}})[_0x2f33('0x15')](function(_0x559ac8){logger[_0x2f33('0x16')]('['+[_0x5a6c03[_0x2f33('0x13')]()]+']',_0x559ac8[_0x2f33('0x17')]);_0x2143e5(_0x559ac8[_0x2f33('0x17')]);});});};}function getCustomFields(_0x534e54,_0x28ad28){var _0xd0c220={};if(_0x534e54[_0x2f33('0xf')]>0x0){_[_0x2f33('0x2d')](_0x534e54,function(_0x46480d){if(_[_0x2f33('0x2e')]([_0x2f33('0x2f'),_0x2f33('0x30')],_0x46480d[_0x2f33('0x31')])&&_0x46480d[_0x2f33('0x32')]&&!_0x46480d[_0x2f33('0x33')]){_0xd0c220[_0x46480d[_0x2f33('0x32')][_0x2f33('0x34')]()]=_0x46480d[_0x2f33('0x35')][_0x2f33('0x36')]();}else if(_['includes']([_0x2f33('0x2f'),_0x2f33('0x30')],_0x46480d[_0x2f33('0x31')])&&_0x46480d[_0x2f33('0x37')]&&_0x46480d[_0x2f33('0x33')]){_0xd0c220[_0x46480d[_0x2f33('0x37')]['toLowerCase']()]=_0x46480d[_0x2f33('0x35')][_0x2f33('0x36')]();}else if(_0x46480d[_0x2f33('0x31')]===_0x2f33('0x38')&&_0x46480d[_0x2f33('0x39')]&&_0x46480d[_0x2f33('0x37')]&&_0x46480d[_0x2f33('0x33')]){_0xd0c220[_0x46480d[_0x2f33('0x37')][_0x2f33('0x34')]()]=_0x28ad28[_0x46480d[_0x2f33('0x39')]][_0x2f33('0x36')]();}else if(_0x46480d['type']===_0x2f33('0x3a')&&_0x46480d[_0x2f33('0x3b')]&&_0x46480d[_0x2f33('0x3b')][_0x2f33('0x3c')]&&_0x46480d['idField']&&_0x46480d['customField']){_0xd0c220[_0x46480d['idField'][_0x2f33('0x34')]()]=_0x28ad28[_0x46480d['Variable'][_0x2f33('0x3c')][_0x2f33('0x34')]()][_0x2f33('0x36')]();}});}return _0xd0c220;}function getTicket(_0x127bb9,_0x2df41c,_0xf2e91a,_0x5973a2,_0x1c0b27,_0x3096ef){return function(_0x1881b3){logger['info']('['+[_0x127bb9[_0x2f33('0x13')]()]+_0x2f33('0x3d'),_0x1881b3);return new Promise(function(_0x35de77,_0x1bab39){var _0x1dfe30=_0x127bb9['toLowerCase']()===_0x2f33('0x3e')?_0x1881b3['userId']:_0x1881b3[_0x2f33('0x28')];var _0x395ed1={'method':_0x2f33('0x22'),'uri':_0xf2e91a+_0x2f33('0x3f')+'?'+_0x3096ef,'body':Object[_0x2f33('0x40')]({},{'active':_0x2f33('0x41'),'caller_id':_0x1dfe30,'assigned_to':_0x1881b3['userId'],'short_description':intUtil[_0x2f33('0x42')](_0x5973a2[_0x2f33('0x43')],_0x1c0b27,'\x20'),'description':intUtil[_0x2f33('0x42')](_0x5973a2[_0x2f33('0x44')],_0x1c0b27,'\x0a')},getCustomFields(_0x5973a2[_0x2f33('0x45')],_0x1c0b27)),'auth':_0x2df41c,'json':!![]};return rp(_0x395ed1)[_0x2f33('0xd')](function(_0x41e476){logger[_0x2f33('0x12')]('['+[_0x127bb9[_0x2f33('0x13')]()]+_0x2f33('0x46'),_0x41e476['result']);_0x1881b3[_0x2f33('0x47')]=_0x41e476[_0x2f33('0xe')][_0x2f33('0x11')];_0x1881b3[_0x2f33('0x48')]=_0x41e476[_0x2f33('0xe')][_0x2f33('0x49')];logger[_0x2f33('0x12')]('['+[_0x127bb9['toUpperCase']()]+_0x2f33('0x4a'),_0x1881b3);_0x35de77(_0x1881b3);})['catch'](function(_0xd530){logger[_0x2f33('0x16')]('['+[_0x127bb9[_0x2f33('0x13')]()]+']',_0xd530[_0x2f33('0x17')]);_0x1bab39(_0xd530[_0x2f33('0x17')]);});});};}function createRemoteTag(_0x100861,_0x187bfd,_0x7f575f,_0x25781d){return new Promise(function(_0x3e369e,_0x138e39){var _0x23f73e={'method':_0x2f33('0x22'),'uri':_0x7f575f+_0x2f33('0x4b')+'?'+_0x25781d,'body':{'short_description':_0x100861,'global':!![],'active':!![],'name':_0x100861},'auth':_0x187bfd,'json':!![]};return rp(_0x23f73e)[_0x2f33('0xd')](function(_0x4f21df){var _0x28433e=_0x4f21df[_0x2f33('0xe')]['sys_id'];_0x3e369e(_0x28433e);});});}function getRemoteTag(_0x413c88,_0x3333af,_0x4ec27f,_0x3e7b3d,_0x4c786d){return new Promise(function(_0xc5442e,_0x191897){var _0x45bcfa={'method':'GET','uri':_0x4ec27f+_0x2f33('0x4b')+_0x2f33('0x4c')+_0x413c88+'&'+_0x3e7b3d,'auth':_0x3333af,'json':!![]};return rp(_0x45bcfa)[_0x2f33('0xd')](function(_0x530532){if(_0x530532['result'][_0x2f33('0xf')]>0x0){var _0x5e12be=_0x530532[_0x2f33('0xe')][0x0][_0x2f33('0x11')];_0xc5442e(_0x5e12be);}else{return createRemoteTag(_0x413c88,_0x3333af,_0x4ec27f,_0x3e7b3d)[_0x2f33('0xd')](function(_0x1b6568){_0xc5442e(_0x1b6568);});}});});}function assignTagToIncident(_0x5ab6ed,_0x30f2ea,_0x33aec6,_0x244474,_0x405b7a){return new Promise(function(_0x4bf347,_0x4c4d4f){var _0xc106b={'method':'POST','uri':_0x33aec6+'label_entry'+'?'+_0x405b7a,'body':{'label':_0x5ab6ed,'table':_0x2f33('0x3f'),'id_type':'Incident','table_key':_0x244474[_0x2f33('0x47')],'title':_0x2f33('0x4d')+_0x244474[_0x2f33('0x48')],'id_display':_0x244474['ticketNumber']},'auth':_0x30f2ea,'json':!![]};return rp(_0xc106b)['then'](function(_0x4746eb){_0x4bf347();})[_0x2f33('0x15')](function(){_0x4bf347();});});}function manageTags(_0x4006d9,_0x1df263,_0x3ee9f2,_0x109fc8,_0x450f23,_0x4b2369,_0x37e325){return new Promise(function(_0xd5c5bf,_0x189440){var _0x2e6468=[];_0x1df263[_0x2f33('0x2d')](function(_0x15e0db){_0x2e6468[_0x2f33('0x4e')](getRemoteTag(_0x15e0db,_0x3ee9f2,_0x109fc8,_0x4b2369,_0x37e325));});return Promise[_0x2f33('0x4f')](_0x2e6468)['then'](function(_0x132d37){if(_0x132d37[_0x2f33('0xf')]){logger[_0x2f33('0x12')]('['+[_0x4006d9['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x132d37);var _0x4a8bc0=[];_0x132d37['forEach'](function(_0x40490f){_0x4a8bc0[_0x2f33('0x4e')](assignTagToIncident(_0x40490f,_0x3ee9f2,_0x109fc8,_0x450f23,_0x4b2369));});return Promise['all'](_0x4a8bc0)[_0x2f33('0xd')](function(){_0xd5c5bf();})[_0x2f33('0x15')](function(){_0xd5c5bf();});}else{_0xd5c5bf();}});});}function getTags(_0x4bce06,_0x49d3de,_0x40d5df,_0x44686d,_0x3f5769,_0x266545){return function(_0x2db8bf){return new Promise(function(_0x463b88,_0x5ee8ad){var _0x46176c=[];var _0x52c252=_0x44686d[_0x2f33('0x50')];if(_0x52c252&&_0x52c252[_0x2f33('0xf')]>0x0){_0x46176c=_[_0x2f33('0x51')](_0x52c252,'name');}if(_0x46176c[_0x2f33('0xf')]>0x0){return manageTags(_0x4bce06,_0x46176c,_0x49d3de,_0x40d5df,_0x2db8bf,_0x3f5769,_0x266545)[_0x2f33('0xd')](function(){_0x463b88(_0x2db8bf);});}else{_0x463b88(_0x2db8bf);}});};}function emit(_0x1258bd,_0x2518a6,_0x4d2b8f){var _0x8129c6='%26sysparm_record_target%3Dincident'+_0x2f33('0x52')+_0x2f33('0x53')+_0x2f33('0x54');var _0x27c48c={'uri':_0x1258bd+_0x2f33('0x55')+_0x4d2b8f+_0x8129c6};io['to'](util[_0x2f33('0x56')](_0x2f33('0x57'),_0x2518a6))[_0x2f33('0x58')](_0x2f33('0x59'),_0x27c48c);}exports['cs']=function(_0x140e03,_0x59ae63,_0x84e539,_0x5ef7b8,_0x18786d,_0x2c39ca,_0x5c4b4e,_0x2579a4){var _0x322428={};var _0x5d0077={'user':_0x2c39ca['username'],'pass':_0x2c39ca[_0x2f33('0x5a')]};var _0x272dd8=_0x2f33('0x5b');var _0x5eb218=_0x2f33('0x5c');_0x2c39ca['remoteUri']=intUtil[_0x2f33('0x5d')](_0x2c39ca[_0x2f33('0x5e')]);_0x2c39ca[_0x2f33('0x5f')]=intUtil[_0x2f33('0x5d')](_0x2c39ca[_0x2f33('0x5f')]);var _0xffea0a=util[_0x2f33('0x56')]('%s/api/now/table/',_0x2c39ca['remoteUri']);_0x322428[_0x2f33('0x1a')]=!_[_0x2f33('0x60')](_0x5ef7b8)?_0x5ef7b8[_0x2f33('0x61')]:null;_0x322428[_0x2f33('0x20')]=_0x2c39ca[_0x2f33('0x61')];_0x322428[_0x2f33('0x24')]=_0x2579a4[_0x2f33('0x34')]()===_0x2f33('0x3e')?_0x59ae63[_0x2f33('0x62')]:_0x59ae63[_0x2f33('0x63')];_0x322428[_0x2f33('0x64')]=_0x2579a4===_0x2f33('0x65')||_0x2579a4===_0x2f33('0x66')?_0x2f33('0x65'):'outbound';var _0x2a999e=util['format'](_0x2f33('0x67'),_0x2c39ca[_0x2f33('0x5f')],_0x59ae63[_0x2f33('0x68')],md5(_0x59ae63[_0x2f33('0x68')]));if(_0x18786d&&_0x18786d['monitor_format']){logger[_0x2f33('0x12')](_0x2f33('0x69'),_0x2f33('0x6a'));_0x59ae63[_0x2f33('0x6b')]=_0x2a999e;}else if(_0x5c4b4e&&_0x5c4b4e[_0x2f33('0x6c')]&&_0x5c4b4e[_0x2f33('0x6c')]!==_0x2f33('0x6d')){logger[_0x2f33('0x12')](_0x2f33('0x6e'),_0x2f33('0x6a'));_0x59ae63[_0x2f33('0x6b')]=_0x2a999e;}else{_0x59ae63[_0x2f33('0x6b')]='';}return getAdminUser(_0x2579a4,_0x5d0077,_0x322428,_0xffea0a,_0x5eb218,_0x272dd8)['then'](getUser(_0x2579a4,_0x5d0077,_0xffea0a,_0x5eb218,_0x272dd8))[_0x2f33('0xd')](getEndUser(_0x2579a4,_0x5d0077,_0xffea0a,_0x5eb218,_0x272dd8))[_0x2f33('0xd')](getTicket(_0x2579a4,_0x5d0077,_0xffea0a,_0x84e539,_0x59ae63,_0x5eb218))[_0x2f33('0xd')](function(_0x314e40){logger[_0x2f33('0x12')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x314e40[_0x2f33('0x47')]));logger[_0x2f33('0x12')](util[_0x2f33('0x56')](_0x2f33('0x6f'),_0x2579a4));if(_0x2579a4!==_0x2f33('0x66')){logger['info']('['+[_0x2579a4['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2c39ca[_0x2f33('0x5e')],_0x5ef7b8[_0x2f33('0x3c')],_0x314e40[_0x2f33('0x47')]);}})[_0x2f33('0x15')](function(_0x52b62a){logger[_0x2f33('0x16')]('['+[_0x2579a4[_0x2f33('0x13')]()]+_0x2f33('0x70'),util[_0x2f33('0x71')](_0x52b62a,{'showHidden':!![],'depth':null}));});};