docs-matrix-spec/locales/zh-Hans/client-server-api/modules/server_notices.md
2025-04-20 16:13:37 +08:00

31 lines
No EOL
2.6 KiB
Markdown
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.

### 服务器通知
Homeserver 提供商通常希望以官方身份向用户发送消息,或者其资源限制会影响用户使用 homeserver 的能力。例如homeserver 可能每月只允许一定数量的活跃用户并且已经超出了该限制。为了向用户传达这一限制homeserver 会使用服务器通知房间Server Notices Room
房间的外观(名称、主题、头像等)作为实现细节留给实现方决定。建议 homeserver 对房间进行装饰,使其在用户看来像是一个官方房间。
#### 事件
通知会作为正常的 `m.room.message` 事件发送到客户端,在服务器通知房间内的事件 `msgtype``m.server_notice`。客户端必须忽略服务器通知房间外,`msgtype``m.server_notice` 的事件。
`server_notice_type` 的指定取值如下:
`m.server_notice.usage_limit_reached`
服务器已超出某项限制,需要服务器管理员进行干预。`limit_type` 描述已达成的限制类型。`limit_type` 的指定取值如下:
`monthly_active_user`
服务器在过去 30 天内的活跃用户数已超过最大值。服务器正在拒绝新的连接。“活跃”的定义作为实现细节留给实现方决定,但建议服务器将同步用户视为“活跃”。
{{% event event="m.room.message$m.server_notice" title="`m.room.message``msgtype: m.server_notice`" %}}
#### 客户端行为
客户端可以通过房间的 `m.server_notice` 标签识别服务器通知房间。活跃通知通过服务器通知房间中的[置顶事件](#mroompinned_events)表示。在该房间中被置顶的服务器通知事件,客户端应通过特殊的用户界面展示给用户,而不是通过普通的置顶事件界面。例如,客户端可以显示警告横幅或弹窗以引起用户注意。在服务器通知房间中被置顶但不是服务器通知事件的事件,应与房间中其他置顶事件一样展示。
客户端不得期望能够拒绝加入服务器通知房间的邀请。尝试拒绝该邀请必须导致返回 `M_CANNOT_LEAVE_SERVER_NOTICE_ROOM` 错误。服务器不应阻止用户在加入服务器通知房间后离开该房间,但如果服务器要阻止离开房间,则必须使用同样的错误码。
#### 服务器行为
服务器应为每个用户管理正好 1 个服务器通知房间。服务器必须通过 `m.server_notice` 标签向客户端标识此房间。服务器应向目标用户发送邀请,而不是自动将其加入服务器通知房间。
服务器如何向客户端发送通知、以及使用哪个用户发送事件,均作为服务器的实现细节处理。