
在探针中并没有提供gofity的推送选项。我们可以通过javascript来实现对gofity消息的推送
在发送设置中,选择javascrpit选项。然后在下面填入这段,将里面的URL参数修改为您的gofity的URL和token就行了。
jsasync function sendMessage(title, message) {
// 提取自你提供的 URL
const url = "https://gofity.server.com/message?token=xxxxxx";
const resp = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
title: title,
message: message,
priority: 5 // 按照你的要求设置为最高优先级
}),
});
if (!resp.ok) {
console.error('Gotify 发送失败:', resp.status, resp.statusText);
return false;
}
return true;
}
async function sendEvent(event) {
try {
// 1. 格式化时间
const formatTime = (timeStr) => {
const date = new Date(timeStr);
return date.toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
timeZone: 'Asia/Shanghai'
});
};
// 2. 获取 Emoji 和事件名
const getEventInfo = (eventType) => {
const eventMap = {
'Offline': { emoji: '❌', desc: '服务器离线' },
'Online': { emoji: '✅', desc: '服务器上线' },
'Alert': { emoji: '⚠️', desc: '监控告警' },
'Renew': { emoji: '⏰', desc: '已自动续费' },
'Expire': { emoji: '🚨', desc: '服务到期提醒' },
'Test': { emoji: '🧪', desc: '测试通知' }
};
return eventMap[eventType] || { emoji: '📊', desc: eventType };
};
// 3. 格式化服务器信息
const getClientsString = (clients) => {
if (!clients || clients.length === 0) return '无关联服务器';
return clients.map(c => `${c.name || 'Unknown'}${c.region ? `(${c.region})` : ''}`).join(', ');
};
const info = getEventInfo(event.event);
const timeStr = formatTime(event.time);
const clientStr = getClientsString(event.clients);
// --- 按照你要求的格式构建内容 ---
// Title: {{emoji}} {{event}}
const title = `${info.emoji} ${info.desc}`;
// Message: 服务器:{{client}}\n{{message}}\n{{time}}
let messageBody = `服务器:${clientStr}\n`;
if (event.message) {
messageBody += `${event.message}\n`;
}
messageBody += `${timeStr}`;
// 发送
const success = await sendMessage(title, messageBody);
if (success) {
console.log(`Gotify 通知已发送: ${event.event}`);
}
return success;
} catch (error) {
console.error('发送 Gotify 通知时出错:', error);
// 基础兜底发送
try {
return await sendMessage('Komari 通知', `${event.event}: ${event.message || '未知错误'}`);
} catch (e) {
return false;
}
}
}