
在 stream chat 中,可通过将消息 type 设为 "system" 并在 user 字段中完整传入 name 和 image,实现系统消息的品牌化定制(如使用应用 logo 和名称),而非默认的 “system” 文本和占位图。
在 stream chat 中,可通过将消息 type 设为 "system" 并在 user 字段中完整传入 name 和 image,实现系统消息的品牌化定制(如使用应用 logo 和名称),而非默认的 “system” 文本和占位图。
Stream Chat 默认将 type: "regular" 的消息视为普通用户消息,即使 user.id 对应的是系统账号,前端 SDK 仍会忽略 user.name 和 user.image 字段,强制显示为 “system” 及默认头像。关键在于:必须显式设置 "type": "system",才能触发 SDK 对系统消息的专属渲染逻辑,并尊重你传入的 user 元数据。
✅ 正确做法如下:
message = {
"text": f"Today's reading: {passage_reference}",
"isGroupPlanPassage": True,
"passageReference": passage_reference,
"passageData": {
"planId": plan_data.get("groupPlanID"),
"passageNumber": current_passage_number
},
"user": {
"id": system_user_id, # 必须存在且唯一(建议用固定 ID 如 "app-system")
"name": app_name, # ✅ 将显示为发送者名称(如 "BiblePlan App")
"image": image_url # ✅ 将作为头像(支持 HTTPS URL,推荐尺寸 40×40 或 80×80 px)
},
"type": "system" # ✅ 核心:启用系统消息渲染通道
}⚠️ 注意事项:
-
system_user_id应为一个真实存在的、已创建的用户 ID(可通过client.update_user()预置),Stream 不允许为未注册用户发送消息; -
user.name和user.image仅在type: "system"时生效;若误设为"regular"或"ephemeral",这些字段会被前端 SDK 忽略; - 前端需配合定制:React SDK 默认对
type: "system"消息使用SystemMessage组件,你可通过overrideComponents替换其渲染逻辑,或通过 CSS 类.str-chat__message--system精细控制样式; - 避免使用
silent: true—— 它仅隐藏通知,不改变消息类型或用户信息渲染行为。
? 总结:系统消息品牌化 = type: "system" + 完整 user 对象 + 前端适配。此举不仅提升专业度,还能增强用户对消息来源的信任感——让每日经文推送真正以你的应用身份“开口说话”。


















