--- title: 叫人 description: 老师点名让学生过来:普通与紧急两档、快捷短语、谁能叫谁,以及它在教室里的表现。 --- # 叫人 「叫人」是老师点名让某位同学来一趟 —— 它**不是**一条普通通知,因为它有一个明确的收件人和一个明确的动作 (学生会点「收到」)。 ## 在哪发 | 入口 | 谁能用 | | --------------- | ------------ | | 通知发布 → 叫人 | 教师、管理员 | | 学生管理 → 叫人 | 管理员 | 学生管理页是管理员专属,但班主任与科任老师同样需要叫人,所以给老师留的入口在「通知发布 → 叫人」。 ## 两档 | 级别 | 落库级别 | 学生端行为 | | ------------ | -------- | ----------------------------------------------------------------------------------------------------- | | **普通叫人** | `HIGH` | 课间先显示「叫人」胶囊,点击展开;**上课时段只进队列、不打断课堂**,下课后自动弹出详情(90 秒后收起) | | **紧急叫人** | `URGENT` | **无视上课时段立即展开**,上课时被收起后仍保留胶囊、可再次点开 | 两档的卡片都是「请 XXX 同学找 XXX 老师」+ 具体事由,徽标是「叫人」,按钮是「收到」 (复用通知的已读机制)。 > **是否立即展开只由 `priority` 决定**,与普通通知共用同一条排队 / 隐藏 / 下课弹出路径。 ## 怎么说 两种输入方式,**自定义消息优先于快捷短语**: - **快捷短语**(8 条,点击选中、再点取消):请到办公室找我 / 请到讲台找我 / 请到实验室找我 / 请到门卫处找我 / 请带上作业本找我 / 请带上试卷找我 / 请到教室门口等我 / 请马上来一趟; - **自定义消息**:最长 200 字,例如「带上昨天的数学作业到办公室」。 ## 谁能叫谁 | 角色 | 限制 | | ------ | ---------------------------------------------------------- | | 学生 | 调用被拒(403) | | 教师 | 只能叫**自己班级**的学生;跨班、或学生不在本班 → 400 / 403 | | 管理员 | 任意班级 | ## 服务端做了什么 `POST /api/calls`(教师 / 管理员)→ `urgent: true` 落库成 `URGENT`,否则 `HIGH`, 然后广播两个事件: - `notification:new` 到班级房间(通知中心与灵动岛都靠它); - `call:new` 定向到被叫学生 / 班级设备。 如果教室的「通知显示位置」不是"只在 ClassHelper",这条叫人也会推给 ClassIsland, 教室大屏一并播报。