Built motion from commit ff78e754.|2.6.29
[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 _0x2d8d=['adminEmail','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes','picklist','type','customField','nameField','toLowerCase','content','toString','string','idField','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','label_entry','forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','serverUrl','%s/api/now/table/','remoteUri','isNil','email','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','bluebird','util','md5','ioredis','./util','servicenow','redis','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','length','result','sys_id','toUpperCase','],\x20getAdminUser\x20crm','error','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','true','userId','adminId','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile'];(function(_0x9b5de8,_0x32f359){var _0x303165=function(_0x33391f){while(--_0x33391f){_0x9b5de8['push'](_0x9b5de8['shift']());}};_0x303165(++_0x32f359);}(_0x2d8d,0x115));var _0xd2d8=function(_0x53b8e0,_0x55d46e){_0x53b8e0=_0x53b8e0-0x0;var _0x10630c=_0x2d8d[_0x53b8e0];return _0x10630c;};'use strict';var _=require('lodash');var Promise=require(_0xd2d8('0x0'));var rp=require('request-promise');var util=require(_0xd2d8('0x1'));var md5=require(_0xd2d8('0x2'));var Redis=require(_0xd2d8('0x3'));var intUtil=require(_0xd2d8('0x4'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xd2d8('0x5'));config[_0xd2d8('0x6')]=_['defaults'](config[_0xd2d8('0x6')],{'host':_0xd2d8('0x7'),'port':0x18eb});var io=require(_0xd2d8('0x8'))(new Redis(config[_0xd2d8('0x6')]));function getAdminUser(_0xd179f9,_0x405145,_0xc33ce6,_0x3b70d5,_0x8b0cc0,_0x44b80c){return new Promise(function(_0x11d914,_0x56ae4b){var _0x330d12={'method':'GET','uri':_0x3b70d5+_0xd2d8('0x9')+'&'+_0x8b0cc0+'&'+_0x44b80c,'auth':_0x405145,'json':!![]};return rp(_0x330d12)[_0xd2d8('0xa')](function(_0x32cbc3){if(_0x32cbc3['result'][_0xd2d8('0xb')]>0x0){_0xc33ce6['adminId']=_0x32cbc3[_0xd2d8('0xc')][0x0][_0xd2d8('0xd')];}logger['info']('['+[_0xd179f9[_0xd2d8('0xe')]()]+_0xd2d8('0xf'),_0xc33ce6);_0x11d914(_0xc33ce6);})['catch'](function(_0x4bf0c2){logger[_0xd2d8('0x10')]('['+[_0xd179f9['toUpperCase']()]+']',_0x4bf0c2[_0xd2d8('0x11')]);_0x56ae4b(_0x4bf0c2[_0xd2d8('0x11')]);});});}function getUser(_0x4becc8,_0xb320f1,_0x121faa,_0x9bd72e,_0x2c2a10){return function(_0x31389d){logger[_0xd2d8('0x12')]('['+[_0x4becc8[_0xd2d8('0xe')]()]+_0xd2d8('0x13'),_0x31389d);return new Promise(function(_0x3403b9,_0x29792e){if(intUtil[_0xd2d8('0x14')](_0x31389d[_0xd2d8('0x15')])){var _0x4faf3d={'method':_0xd2d8('0x16'),'uri':_0x121faa+_0xd2d8('0x17')+_0x31389d['userEmail']+'&'+_0x9bd72e+'&'+_0x2c2a10,'auth':_0xb320f1,'json':!![]};logger[_0xd2d8('0x12')]('['+[_0x4becc8[_0xd2d8('0xe')]()]+_0xd2d8('0x18'),_0x4faf3d);return rp(_0x4faf3d)[_0xd2d8('0xa')](function(_0x38cb06){logger[_0xd2d8('0x12')]('['+[_0x4becc8[_0xd2d8('0xe')]()]+'],\x20getUser\x20entity',_0x38cb06);if(_0x38cb06['result'][_0xd2d8('0xb')]>0x0&&String(_0x38cb06[_0xd2d8('0xc')][0x0][_0xd2d8('0x19')])===_0xd2d8('0x1a')){_0x31389d['userId']=_0x38cb06[_0xd2d8('0xc')][0x0][_0xd2d8('0xd')];}else{_0x31389d[_0xd2d8('0x1b')]=_0x31389d[_0xd2d8('0x1c')];_0x31389d[_0xd2d8('0x15')]=_0x31389d['adminEmail'];}logger[_0xd2d8('0x12')]('['+[_0x4becc8['toUpperCase']()]+_0xd2d8('0x1d'),_0x31389d);_0x3403b9(_0x31389d);})[_0xd2d8('0x1e')](function(_0x1355ee){logger[_0xd2d8('0x10')]('['+[_0x4becc8[_0xd2d8('0xe')]()]+']',_0x1355ee[_0xd2d8('0x11')]);_0x29792e(_0x1355ee[_0xd2d8('0x11')]);});}else{logger[_0xd2d8('0x12')]('['+[_0x4becc8[_0xd2d8('0xe')]()]+_0xd2d8('0x1f'));_0x31389d[_0xd2d8('0x1b')]=_0x31389d['adminId'];_0x31389d[_0xd2d8('0x15')]=_0x31389d[_0xd2d8('0x20')];_0x3403b9(_0x31389d);}});};}function createEndUser(_0x11177f,_0xfc0c6e,_0x10e6c1,_0xfe44df,_0x4d4f3f){logger[_0xd2d8('0x12')]('['+[_0x11177f[_0xd2d8('0xe')]()]+_0xd2d8('0x21'),_0x10e6c1);return new Promise(function(_0x280016,_0x12c3ae){var _0x2fe511={'method':_0xd2d8('0x22'),'uri':_0xfe44df+'sys_user?'+_0x4d4f3f,'body':{'user_name':_0x10e6c1[_0xd2d8('0x23')],'roles':_0xd2d8('0x24'),'first_name':_0x10e6c1[_0xd2d8('0x23')],'active':_0xd2d8('0x1a'),'date_format':_0xd2d8('0x25'),'phone':_0x10e6c1[_0xd2d8('0x23')]},'auth':_0xfc0c6e,'json':!![]};return rp(_0x2fe511)[_0xd2d8('0xa')](function(_0xdd1149){logger[_0xd2d8('0x12')]('['+[_0x11177f[_0xd2d8('0xe')]()]+_0xd2d8('0x26'),_0xdd1149[_0xd2d8('0xc')]);_0x10e6c1[_0xd2d8('0x27')]=_0xdd1149['result'][_0xd2d8('0xd')];_0x280016(_0x10e6c1);})[_0xd2d8('0x1e')](function(_0x4a69eb){logger[_0xd2d8('0x10')]('['+[_0x11177f[_0xd2d8('0xe')]()]+']',_0x4a69eb['message']);_0x12c3ae(_0x4a69eb[_0xd2d8('0x11')]);});});}function getEndUser(_0x32fd9c,_0x53f5e8,_0x5d93aa,_0x2a7d7e,_0x55b264){return function(_0x1098fb){logger['info']('['+[_0x32fd9c['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x1098fb);return new Promise(function(_0x899f51,_0x367a4f){var _0x54adc4={'method':_0xd2d8('0x16'),'uri':_0x5d93aa+_0xd2d8('0x28')+_0x1098fb[_0xd2d8('0x23')]+'&'+_0x2a7d7e+'&'+_0x55b264,'auth':_0x53f5e8,'json':!![]};return rp(_0x54adc4)['then'](function(_0x3865bb){if(_0x3865bb[_0xd2d8('0xc')][_0xd2d8('0xb')]>0x0){_0x1098fb['endUserId']=_0x3865bb[_0xd2d8('0xc')][0x0][_0xd2d8('0xd')];logger[_0xd2d8('0x12')]('['+[_0x32fd9c[_0xd2d8('0xe')]()]+_0xd2d8('0x29'),_0x1098fb);_0x899f51(_0x1098fb);}else{return createEndUser(_0x32fd9c,_0x53f5e8,_0x1098fb,_0x5d93aa,_0x2a7d7e)[_0xd2d8('0xa')](function(_0x2adad3){logger[_0xd2d8('0x12')]('['+[_0x32fd9c[_0xd2d8('0xe')]()]+_0xd2d8('0x2a'),_0x2adad3);_0x899f51(_0x2adad3);});}})['catch'](function(_0x4b7671){logger[_0xd2d8('0x10')]('['+[_0x32fd9c[_0xd2d8('0xe')]()]+']',_0x4b7671[_0xd2d8('0x11')]);_0x367a4f(_0x4b7671['message']);});});};}function getCustomFields(_0xeedf25,_0x454c36){var _0x5ac653={};if(_0xeedf25[_0xd2d8('0xb')]>0x0){_['forEach'](_0xeedf25,function(_0x38846a){if(_[_0xd2d8('0x2b')](['string',_0xd2d8('0x2c')],_0x38846a[_0xd2d8('0x2d')])&&_0x38846a['nameField']&&!_0x38846a[_0xd2d8('0x2e')]){_0x5ac653[_0x38846a[_0xd2d8('0x2f')][_0xd2d8('0x30')]()]=_0x38846a[_0xd2d8('0x31')][_0xd2d8('0x32')]();}else if(_[_0xd2d8('0x2b')]([_0xd2d8('0x33'),_0xd2d8('0x2c')],_0x38846a[_0xd2d8('0x2d')])&&_0x38846a[_0xd2d8('0x34')]&&_0x38846a[_0xd2d8('0x2e')]){_0x5ac653[_0x38846a['idField'][_0xd2d8('0x30')]()]=_0x38846a['content'][_0xd2d8('0x32')]();}else if(_0x38846a[_0xd2d8('0x2d')]===_0xd2d8('0x35')&&_0x38846a['variableName']&&_0x38846a[_0xd2d8('0x34')]&&_0x38846a[_0xd2d8('0x2e')]){_0x5ac653[_0x38846a['idField'][_0xd2d8('0x30')]()]=_0x454c36[_0x38846a[_0xd2d8('0x36')]][_0xd2d8('0x32')]();}else if(_0x38846a['type']==='customVariable'&&_0x38846a[_0xd2d8('0x37')]&&_0x38846a[_0xd2d8('0x37')][_0xd2d8('0x38')]&&_0x38846a['idField']&&_0x38846a[_0xd2d8('0x2e')]){_0x5ac653[_0x38846a[_0xd2d8('0x34')]['toLowerCase']()]=_0x454c36[_0x38846a['Variable'][_0xd2d8('0x38')][_0xd2d8('0x30')]()]['toString']();}});}return _0x5ac653;}function getTicket(_0x49bb0c,_0x28fbb9,_0x28236f,_0x2f083e,_0x487386,_0x5b3df7){return function(_0x2a4ff9){logger[_0xd2d8('0x12')]('['+[_0x49bb0c[_0xd2d8('0xe')]()]+_0xd2d8('0x39'),_0x2a4ff9);return new Promise(function(_0x35b066,_0x484f62){var _0x4b4457=_0x49bb0c[_0xd2d8('0x30')]()===_0xd2d8('0x3a')?_0x2a4ff9['userId']:_0x2a4ff9[_0xd2d8('0x27')];var _0x8adb6={'method':_0xd2d8('0x22'),'uri':_0x28236f+_0xd2d8('0x3b')+'?'+_0x5b3df7,'body':Object[_0xd2d8('0x3c')]({},{'active':'true','caller_id':_0x4b4457,'assigned_to':_0x2a4ff9[_0xd2d8('0x1b')],'short_description':intUtil[_0xd2d8('0x3d')](_0x2f083e[_0xd2d8('0x3e')],_0x487386,'\x20'),'description':intUtil[_0xd2d8('0x3d')](_0x2f083e['Descriptions'],_0x487386,'\x0a')},getCustomFields(_0x2f083e[_0xd2d8('0x3f')],_0x487386)),'auth':_0x28fbb9,'json':!![]};return rp(_0x8adb6)[_0xd2d8('0xa')](function(_0x45d760){logger[_0xd2d8('0x12')]('['+[_0x49bb0c[_0xd2d8('0xe')]()]+_0xd2d8('0x40'),_0x45d760['result']);_0x2a4ff9[_0xd2d8('0x41')]=_0x45d760[_0xd2d8('0xc')]['sys_id'];_0x2a4ff9[_0xd2d8('0x42')]=_0x45d760[_0xd2d8('0xc')]['number'];logger[_0xd2d8('0x12')]('['+[_0x49bb0c[_0xd2d8('0xe')]()]+_0xd2d8('0x43'),_0x2a4ff9);_0x35b066(_0x2a4ff9);})[_0xd2d8('0x1e')](function(_0x4c8e02){logger[_0xd2d8('0x10')]('['+[_0x49bb0c[_0xd2d8('0xe')]()]+']',_0x4c8e02[_0xd2d8('0x11')]);_0x484f62(_0x4c8e02[_0xd2d8('0x11')]);});});};}function createRemoteTag(_0x18e45b,_0x1c3ac5,_0x48b7e7,_0x29f598){return new Promise(function(_0x153d6a,_0x4a6c30){var _0x186bac={'method':_0xd2d8('0x22'),'uri':_0x48b7e7+_0xd2d8('0x44')+'?'+_0x29f598,'body':{'short_description':_0x18e45b,'global':!![],'active':!![],'name':_0x18e45b},'auth':_0x1c3ac5,'json':!![]};return rp(_0x186bac)[_0xd2d8('0xa')](function(_0x4d5f27){var _0x271bdb=_0x4d5f27['result'][_0xd2d8('0xd')];_0x153d6a(_0x271bdb);});});}function getRemoteTag(_0x534c46,_0x1fee4e,_0x2cc927,_0x25e443,_0x540ec4){return new Promise(function(_0x3a324f,_0x31e149){var _0x1f5acd={'method':'GET','uri':_0x2cc927+'label'+'?sysparm_query=name%3D'+_0x534c46+'&'+_0x25e443,'auth':_0x1fee4e,'json':!![]};return rp(_0x1f5acd)[_0xd2d8('0xa')](function(_0x23f3ba){if(_0x23f3ba[_0xd2d8('0xc')]['length']>0x0){var _0x3b196f=_0x23f3ba[_0xd2d8('0xc')][0x0][_0xd2d8('0xd')];_0x3a324f(_0x3b196f);}else{return createRemoteTag(_0x534c46,_0x1fee4e,_0x2cc927,_0x25e443)[_0xd2d8('0xa')](function(_0x27dd7d){_0x3a324f(_0x27dd7d);});}});});}function assignTagToIncident(_0x4c8afc,_0x5c4783,_0x459257,_0x45fa50,_0xc69d3e){return new Promise(function(_0x38c371,_0xe3018c){var _0x31d3f7={'method':_0xd2d8('0x22'),'uri':_0x459257+_0xd2d8('0x45')+'?'+_0xc69d3e,'body':{'label':_0x4c8afc,'table':_0xd2d8('0x3b'),'id_type':'Incident','table_key':_0x45fa50[_0xd2d8('0x41')],'title':'Incident\x20-\x20'+_0x45fa50[_0xd2d8('0x42')],'id_display':_0x45fa50[_0xd2d8('0x42')]},'auth':_0x5c4783,'json':!![]};return rp(_0x31d3f7)[_0xd2d8('0xa')](function(_0x44e630){_0x38c371();})[_0xd2d8('0x1e')](function(){_0x38c371();});});}function manageTags(_0x25ed51,_0x41f5e3,_0x70e0fa,_0x2ea294,_0x2d2210,_0x38237a,_0x319a88){return new Promise(function(_0x3db5bc,_0x5cf7f3){var _0x2d1e50=[];_0x41f5e3[_0xd2d8('0x46')](function(_0x4458ab){_0x2d1e50[_0xd2d8('0x47')](getRemoteTag(_0x4458ab,_0x70e0fa,_0x2ea294,_0x38237a,_0x319a88));});return Promise[_0xd2d8('0x48')](_0x2d1e50)[_0xd2d8('0xa')](function(_0xa70f2b){if(_0xa70f2b[_0xd2d8('0xb')]){logger['info']('['+[_0x25ed51['toUpperCase']()]+_0xd2d8('0x49'),_0xa70f2b);var _0x5a7db2=[];_0xa70f2b[_0xd2d8('0x46')](function(_0x2001ac){_0x5a7db2['push'](assignTagToIncident(_0x2001ac,_0x70e0fa,_0x2ea294,_0x2d2210,_0x38237a));});return Promise['all'](_0x5a7db2)['then'](function(){_0x3db5bc();})['catch'](function(){_0x3db5bc();});}else{_0x3db5bc();}});});}function getTags(_0x1ab701,_0x414c4c,_0x5849aa,_0xd5c8cb,_0x2ae9cf,_0x1d3a67){return function(_0x30a187){return new Promise(function(_0x27e74c,_0x36ac7e){var _0x264afc=[];var _0x2f32b7=_0xd5c8cb[_0xd2d8('0x4a')];if(_0x2f32b7&&_0x2f32b7[_0xd2d8('0xb')]>0x0){_0x264afc=_['map'](_0x2f32b7,_0xd2d8('0x38'));}if(_0x264afc[_0xd2d8('0xb')]>0x0){return manageTags(_0x1ab701,_0x264afc,_0x414c4c,_0x5849aa,_0x30a187,_0x2ae9cf,_0x1d3a67)[_0xd2d8('0xa')](function(){_0x27e74c(_0x30a187);});}else{_0x27e74c(_0x30a187);}});};}function emit(_0x447cfc,_0x3985e5,_0x21ba9b){var _0xa2ac9f='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xd2d8('0x4b');var _0x53cd42={'uri':_0x447cfc+_0xd2d8('0x4c')+_0x21ba9b+_0xa2ac9f};io['to'](util[_0xd2d8('0x4d')](_0xd2d8('0x4e'),_0x3985e5))['emit'](_0xd2d8('0x4f'),_0x53cd42);}exports['cs']=function(_0x5a0d80,_0x2e076a,_0x337cdf,_0xa808d5,_0x382ac6,_0x51f72b,_0x37ba4f,_0x2d0839){var _0x5597f7={};var _0x3b1abe={'user':_0x51f72b[_0xd2d8('0x50')],'pass':_0x51f72b[_0xd2d8('0x51')]};var _0x4c62cf=_0xd2d8('0x52');var _0x32f440=_0xd2d8('0x53');_0x51f72b['remoteUri']=intUtil['stripTrailingSlash'](_0x51f72b['remoteUri']);_0x51f72b['serverUrl']=intUtil[_0xd2d8('0x54')](_0x51f72b[_0xd2d8('0x55')]);var _0x39b4f3=util[_0xd2d8('0x4d')](_0xd2d8('0x56'),_0x51f72b[_0xd2d8('0x57')]);_0x5597f7[_0xd2d8('0x15')]=!_[_0xd2d8('0x58')](_0xa808d5)?_0xa808d5[_0xd2d8('0x59')]:null;_0x5597f7[_0xd2d8('0x20')]=_0x51f72b[_0xd2d8('0x59')];_0x5597f7[_0xd2d8('0x23')]=_0x2d0839[_0xd2d8('0x30')]()===_0xd2d8('0x3a')?_0x2e076a[_0xd2d8('0x5a')]:_0x2e076a[_0xd2d8('0x5b')];_0x5597f7['callDirection']=_0x2d0839===_0xd2d8('0x5c')||_0x2d0839===_0xd2d8('0x5d')?_0xd2d8('0x5c'):_0xd2d8('0x3a');var _0xbf1e56=util[_0xd2d8('0x4d')](_0xd2d8('0x5e'),_0x51f72b[_0xd2d8('0x55')],_0x2e076a[_0xd2d8('0x5f')],md5(_0x2e076a['uniqueid']));if(_0x382ac6&&_0x382ac6[_0xd2d8('0x60')]){logger['info'](_0xd2d8('0x61'),_0xd2d8('0x62'));_0x2e076a['recordingURL']=_0xbf1e56;}else if(_0x37ba4f&&_0x37ba4f[_0xd2d8('0x63')]&&_0x37ba4f[_0xd2d8('0x63')]!=='none'){logger[_0xd2d8('0x12')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x2e076a[_0xd2d8('0x64')]=_0xbf1e56;}else{_0x2e076a[_0xd2d8('0x64')]='';}return getAdminUser(_0x2d0839,_0x3b1abe,_0x5597f7,_0x39b4f3,_0x32f440,_0x4c62cf)['then'](getUser(_0x2d0839,_0x3b1abe,_0x39b4f3,_0x32f440,_0x4c62cf))[_0xd2d8('0xa')](getEndUser(_0x2d0839,_0x3b1abe,_0x39b4f3,_0x32f440,_0x4c62cf))[_0xd2d8('0xa')](getTicket(_0x2d0839,_0x3b1abe,_0x39b4f3,_0x337cdf,_0x2e076a,_0x32f440))[_0xd2d8('0xa')](function(_0x4f5025){logger[_0xd2d8('0x12')](util[_0xd2d8('0x4d')](_0xd2d8('0x65'),_0x4f5025[_0xd2d8('0x41')]));logger[_0xd2d8('0x12')](util[_0xd2d8('0x4d')]('call\x20direction:\x20%s',_0x2d0839));if(_0x2d0839!=='unmanaged'){logger[_0xd2d8('0x12')]('['+[_0x2d0839[_0xd2d8('0xe')]()]+']',_0xd2d8('0x66'));emit(_0x51f72b['remoteUri'],_0xa808d5[_0xd2d8('0x38')],_0x4f5025[_0xd2d8('0x41')]);}})[_0xd2d8('0x1e')](function(_0x2c5c00){logger[_0xd2d8('0x10')]('['+[_0x2d0839[_0xd2d8('0xe')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x2c5c00,{'showHidden':!![],'depth':null}));});};