
后端前端协同办公即时通讯企业应用【免费下载链接】dootaskDooTask是一款开源在线项目任务管理工具提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM文件管理等工具同时消息功能使用非对称加密技术让你的沟通更安全。项目地址https://gitcode.com/gh_mirrors/do/dootask点击查看免费下载DooTask 的通知能力分布在桌面、移动端、会话与邮件多个通道上并没有集中的「通知偏好」设置页各通道开关分散管理。本文基于 个人通知开关KB 文档last_verified: v1.7.90逐通道梳理普通用户可操作的开关位置与生效规则并结合后端源码友盟推送任务、免打扰接口、邮件通知任务讲清每个开关背后的判定逻辑读完后你可以独立排查「推送收不到」「免打扰不生效」「邮件没发出来」这类通知相关问题。总体结构按通道分散的通知开关DooTask 的通知分多个通道普通用户能调整的开关如下表管理员侧则负责邮件与 App 推送的全局配置通道入口控制者服务端对应配置/字段桌面通知浏览器 / Electron浏览器站点权限 / 系统通知中心普通用户客户端权限无独立服务端开关移动端推送iOS / Android手机系统通知权限普通用户APP 内跟随系统权限appPushSetting管理员总闸会话级免打扰会话右上角设置普通用户WebSocketDialogUser.silence邮件通知系统设置 → 邮件设置系统管理员emailSetting管理员总闸下面按通道展开。桌面通知浏览器 / Electron操作要点浏览器右上角站点权限 → 允许 / 屏蔽通知Electron 端在操作系统通知中心管理。DooTask 客户端检测到无权限时会弹一次「是否允许通知」请求被拒后不再弹客户端行为来源为 KB 文档描述。通知只在「消息」未读、提及、任务到期等事件触发沉默免打扰会话不发桌面通知。从源码结构看桌面通知属于纯客户端行为服务端只负责通过 WebSocket 下发消息事件是否弹窗、发声完全由浏览器 Notification API 或 Electron 的系统通知决定因此「收不到桌面通知」的第一排查点永远是浏览器站点权限而非服务端配置。移动端推送iOS / AndroidUMENG 通道与 appPushSetting操作要点入口在手机系统设置 → DooTask → 通知APP 内没有独立开关只跟随系统权限。注册推送通过 UMENG友盟渠道APP 启动时自动注册 device-token。关掉手机系统通知后APP 内只剩前台徽标没有推送。服务端实现可以从三条证据链确认1. 推送总闸appPushSetting推送任务 PushUmengMsg 在start()中首先读取配置$setting Base::setting(appPushSetting); if ($setting[push] ! open) { return; }即管理员未把push设为open时所有移动端推送在服务端直接短路用户侧任何操作都无法绕过。2. 推送内容下发UmengAliasUmengAlias::getPushConfig() 同样以push open为前提并从配置中取 iOS / Android 的appKey与appMasterSecret分别对应ios_key/ios_secret、android_key/android_secret按alias_type userid的别名定向推送推送记录写入umeng_log表UmengLog 模型。3. PC 活跃时的延迟推送策略PushUmengMsg 并非「无脑推」首次推送时先查缓存user_pc_active:{uid}若该用户 PC 端 60 秒内活跃则把推送放入延迟队列end()中以delay(10)重投 任务延迟重投时再检查该消息是否已读web_socket_dialog_msg_reads.read_at非空则跳过。这意味着如果你在电脑上开着 DooTask手机推送可能会延迟约 10 秒甚至因「已读」而干脆不发属预期行为。管理员配置项系统设置 → App 推送设置由 SystemController::setting__apppush() 提供限管理员保存时白名单字段为参数说明默认值push推送总开关open/closecloseios_keyiOS 友盟 AppKey空ios_secretiOS 友盟 MasterSecret空android_keyAndroid 友盟 AppKey空android_secretAndroid 友盟 MasterSecret空另外AppPushTask 由内网 crontab 定时投递见 IndexController::crontab()处理未激活/离线设备的兜底推送同样受appPushSetting约束。会话级免打扰 / 静音操作要点单聊 / 群聊 → 会话右上角设置 → 「消息免打扰」开关。免打扰只屏蔽通知声音 / 桌面弹窗不影响未读数与角标。服务端对应接口是api/dialog/msg/silence实现在 DialogController::msg__silence()参数为dialog_id与typeset/cancel。几个源码细节值得注意开关落在 WebSocketDialogUser.silence 字段「是否免打扰0否1是」即按用户 × 会话存储同一群里不同成员可以各自静音。typeset开启免打扰时会把该会话中当前所有未读消息立即批量标记为已读chunkById分批 100 条调用onlyMarkRead所以开启免打扰后未读数会清零——这与「免打扰不影响未读数」并不矛盾规则是「静音期间不再产生未读提醒」存量未读则在开启瞬间被消化。存在一条限制group_type ! user的群会话即非「用户自建群」类型的系统/项目类会话会直接返回「此会话不允许设置免打扰」。从源码结构看这解释了为什么部分项目讨论组无法静音的个例需要逐类确认。silence字段还参与服务端决策例如 EmailNoticeTask 统计未读消息时只取web_socket_dialog_msg_reads.silence 0的记录——免打扰会话的未读消息不会进入邮件通知这是该字段在客户端之外的另一重用途。邮件通知管理员总闸 参数化规则普通用户层面没有邮件通知的独立总开关需要按事件如任务分配、评论选择性退订时需联系管理员在系统设置 → 邮件设置中配置。KB 文档明确邮件通知的全局开关由系统管理员控制普通用户只能关单条单封退订。配置项一览保存接口白名单见 SystemController::setting__email()参数说明默认值notice_msg未读消息邮件通知总闸open/closeclosemsg_unread_user_minute单聊未读超过 N 分钟才发邮件-1表示关闭该通道-1msg_unread_group_minute群聊未读超过 N 分钟才发邮件-1表示关闭该通道-1msg_unread_time_ranges允许发送的时间窗口H:i格式支持多段如[08:00,12:00]空ignore_addr忽略不发送的收件地址空smtp_server/port/account/passwordSMTP 账号信息空执行逻辑邮件通知由 EmailNoticeTask 通过内网 crontab 每分钟投递执行。canSendEmails()L55-L66要求notice_msg open且当前时刻命中msg_unread_time_ranges时间窗口判定由 Timer::isTimeInRanges() 完成支持单段或多段时间范围比较区间为闭区间start current end。随后分别处理user与group两类会话只处理消息类型为text、file、record、meeting的未读ALLOWED_MSG_TYPES常量排除已免打扰silence 0过滤、已发过邮件email 0过滤的未读记录每用户 100 条一批CHUNK_SIZE处理处理后把水位线写入emailLastNotice设置避免重复扫描。这里有个容易混淆的边界msg_unread_time_ranges是管理员面向邮件通道的「全局发送时间窗」不是用户的免打扰规则。KB 文档「不支持」一节所说的「不支持每日只在 9-18 点推送的时间窗口」指的用户侧不存在可自管的时段免打扰两者作用对象不同邮件 vs 消息推送阅读文档时注意区分。明确不支持的能力依据 个人通知开关 文档的 negative 清单不支持「每日只在 9-18 点推送」这类用户级时间窗口免打扰邮件通道的时间窗为管理员全局配置见上节不支持「按项目维度静音」——需要逐个项目对应的讨论组单独设置静音对应WebSocketDialogUser.silence是会话级字段不支持自定义提示音DooTask 没有单一「通知偏好」设置页各通道开关分散在不同位置邮件通知全局开关归管理员普通用户无法在个人设置中关闭邮件总闸。常见问题排查速查手机收不到推送依次检查 ① 管理员appPushSetting.push是否为open、对应平台 AppKey/Secret 是否配置② 手机系统是否授予 DooTask 通知权限、device-token 是否已注册③ 是否因 PC 端活跃触发延迟/去重见PushUmengMsg的 10 秒延迟与已读跳过逻辑。桌面不弹窗先确认浏览器站点权限或系统通知中心未屏蔽再确认该会话未开启免打扰免打扰会话本身不发桌面通知。邮件没发确认notice_msg open、当前时间命中msg_unread_time_ranges、未读时长超过msg_unread_*_minute、消息类型在允许列表内、且该会话未免打扰。免打扰后仍有未读数开启免打扰会把存量未读标记已读若仍未清零注意该会话类型是否允许设置免打扰非user类型群会报「此会话不允许设置免打扰」。赞分享后端前端协同办公即时通讯企业应用【免费下载链接】dootaskDooTask是一款开源在线项目任务管理工具提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM文件管理等工具同时消息功能使用非对称加密技术让你的沟通更安全。项目地址https://gitcode.com/gh_mirrors/do/dootask点击查看免费下载相关推荐skills4/skills一行命令装好 AI 技能库Codex 技能安装快速上手skills4/skills一行命令装好 AI 技能库Codex 技能安装快速上手 你有没有过这种经历同一个背景说明每次都要手动贴给 AI 一遍换个人人工智能AI 技能AI 插件DooTask 桌面通知开启与关闭全指南系统勿扰、应用权限与会话免打扰三层级方案DooTask 桌面通知开启与关闭全指南系统勿扰、应用权限与会话免打扰三层级方案 导读 本文围绕 DooTask 桌面端Electron 客户端与 Web后端前端协同办公即时通讯企业应用Jellyfin通知系统邮件、推送和Webhook通知Jellyfin通知系统邮件、推送和Webhook通知 Jellyfin作为开源家庭媒体中心提供了全面的通知系统帮助用户及时了解服务器状态和媒体活动。该系统后端音视频上一篇Cursor 提示试用次数已用完怎么办cursor-free-vip 机器ID重置与多账户管理完整指南下一篇OpenEMS UI Docker 镜像全指南自建镜像、Edge 开发联调与 Nginx WebSocket 反向代理实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考