Files
better-genshin-impact/BetterGenshinImpact/Service/Notification/NotificationConfig.cs
禹仔二号 f7903f8e9b webhook添加了sendto发送对象,修复了webhook通知ui显示错误问题,修复了websocket服务端错误关闭链接问题 (#1300)
* 新增图片作为email附件发送功能

* feat(notification): 为 WebhookNotifier 添加 send_to 功能

- 在 WebhookNotifier 类中添加 send_to 属性
- 修改 TransformData 方法,增加 send_to 字段
- 在 NotificationConfig 中添加 webhook_endpoint 和 websocket_endpoint 属性

* refactor(WebhookNotifier): 添加 send_to 属性并调整访问修饰符

* refactor(notification): 重构 WebhookNotifier 并更新 NotificationConfig

- 在 NotificationConfig 中添加 WebhookSendTo 属性
- 重构 WebhookNotifier 构造函数,使用 NotificationConfig 对象进行初始化
- 更新 WebhookNotifier 发送逻辑,使用新的配置属性

* feat: add webhook ui.

* refactor(WebhookNotifier): 重构 TransformData 方法以优化数据结构- 将 notification_data 的内容合并到外层字典,以便于 webhook 接收端获取数据- 新增 event、result、timestamp 等字段,使数据结构

* fix(WebSocketNotifier): 添加消息发送后关闭连接的功能

- 在 SendAsync 方法中添加了 CloseAsync() 调用,确保消息发送后关闭 WebSocket 连接
- 此修改解决了消息发送后未关闭连接的问题,提高了资源利用率和系统稳定性

* fix: implement unified webhook ui

* fix: typos.

---------

Co-authored-by: DR-lin-eng <@DR-lin-eng>
Co-authored-by: 秋云 <physligl@gmail.com>
2025-03-15 10:33:33 +08:00

182 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using CommunityToolkit.Mvvm.ComponentModel;
namespace BetterGenshinImpact.Service.Notification;
/// <summary>
/// 通知配置管理器
/// </summary>
[Serializable]
public partial class NotificationConfig : ObservableObject
{
/// <summary>
/// 传"none"时,点击推送不会弹窗
/// </summary>
[ObservableProperty] private string _barkAction = string.Empty;
[ObservableProperty] private string _barkApiEndpoint = string.Empty;
/// <summary>
/// iOS14.5以下自动复制推送内容1为开启
/// </summary>
[ObservableProperty] private string _barkAutoCopy = string.Empty;
/// <summary>
/// 推送角标,可以是任意数字
/// </summary>
[ObservableProperty] private int _barkBadge = 1;
/// <summary>
/// 通知铃声重复播放1为开启
/// </summary>
[ObservableProperty] private string _barkCall = string.Empty;
[ObservableProperty] private string _barkCiphertext = string.Empty;
/// <summary>
/// 复制推送时指定复制的内容
/// </summary>
[ObservableProperty] private string _barkCopy = string.Empty;
[ObservableProperty] private string _barkDeviceKeys = string.Empty;
/// <summary>
/// 对消息进行分组推送将按group分组显示在通知中心中
/// </summary>
[ObservableProperty] private string _barkGroup = "default";
/// <summary>
/// 为推送设置自定义图标URL
/// </summary>
[ObservableProperty] private string _barkIcon = string.Empty;
/// <summary>
/// 传1保存推送传其他的不保存推送
/// </summary>
[ObservableProperty] private string _barkIsArchive = "1";
/// <summary>
/// 推送中断级别critical(重要警告), active(默认值), timeSensitive(时效性通知), passive(仅添加到通知列表)
/// </summary>
[ObservableProperty] private string _barkLevel = "active";
/// <summary>
/// Bark移动推送通知配置
/// </summary>
[ObservableProperty] private bool _barkNotificationEnabled;
/// <summary>
/// 通知声音
/// </summary>
[ObservableProperty] private string _barkSound = "minuet";
// Bark 通知附加参数配置
/// <summary>
/// 推送副标题
/// </summary>
[ObservableProperty] private string _barkSubtitle = string.Empty;
/// <summary>
/// 点击推送时跳转的URL
/// </summary>
[ObservableProperty] private string _barkUrl = string.Empty;
/// <summary>
/// 重要警告的通知音量,取值范围: 0-10
/// </summary>
[ObservableProperty] private int _barkVolume = 5;
// Email 通知配置
[ObservableProperty] private bool _emailNotificationEnabled;
// 飞书通知
/// <summary>
/// 飞书通知是否启用
/// </summary>
[ObservableProperty] private bool _feishuNotificationEnabled;
/// <summary>
/// 飞书通知地址
/// </summary>
[ObservableProperty] private string _feishuWebhookUrl = string.Empty;
[ObservableProperty] private string _fromEmail = string.Empty;
[ObservableProperty] private string _fromName = string.Empty;
/// <summary>
/// 是否包含截图
/// </summary>
[ObservableProperty] private bool _includeScreenShot = true;
[ObservableProperty] private string _notificationEventSubscribe = string.Empty;
[ObservableProperty] private string _smtpPassword = string.Empty;
[ObservableProperty] private int _smtpPort;
[ObservableProperty] private string _smtpServer = string.Empty;
[ObservableProperty] private string _smtpUsername = string.Empty;
/// <summary>
/// Telegram API基础URL(可选留空使用官方API)
/// </summary>
[ObservableProperty] private string _telegramApiBaseUrl = string.Empty;
/// <summary>
/// Telegram机器人Token
/// </summary>
[ObservableProperty] private string _telegramBotToken = string.Empty;
/// <summary>
/// Telegram聊天ID
/// </summary>
[ObservableProperty] private string _telegramChatId = string.Empty;
// Telegram通知
/// <summary>
/// Telegram通知是否启用
/// </summary>
[ObservableProperty] private bool _telegramNotificationEnabled;
[ObservableProperty] private string _toEmail = string.Empty;
/// <summary>
/// </summary>
[ObservableProperty] private bool _webhookEnabled;
/// <summary>
/// </summary>
[ObservableProperty] private string _webhookEndpoint = string.Empty;
[ObservableProperty] private string _webhookSendTo = string.Empty; // 修改属性名
[ObservableProperty] private string _webSocketEndpoint = string.Empty;
[ObservableProperty] private bool _webSocketNotificationEnabled;
/// <summary>
/// windows uwp 通知是否启用
/// </summary>
[ObservableProperty] private bool _windowsUwpNotificationEnabled;
// 企业微信通知
/// <summary>
/// 企业微信通知是否启用
/// </summary>
[ObservableProperty] private bool _workweixinNotificationEnabled;
/// <summary>
/// 企业微信通知通知地址
/// </summary>
[ObservableProperty] private string _workweixinWebhookUrl = string.Empty;
}