如何接收带自定义头像URL和昵称的ConnectyCube消息?
解决ConnectyCube消息自定义字段显示undefined及群消息附带头像/昵称的问题
看起来你是在ConnectyCube的群消息场景里想附加自定义的头像和昵称,但遇到了自定义字段显示undefined的问题,我来帮你一步步捋清楚解决办法。
第一步:发送消息时正确携带自定义数据
你之前用ConnectyCube.chat.send(recipient_id, msg)发送消息,但问题大概率出在msg对象的构造上。要在群消息里附带头像URL和昵称,你需要在消息对象里添加custom属性,同时必须把消息类型设为groupchat(群消息专属类型)。
给你一个完整的代码示例:
// 构造群消息对象 const groupMsg = { body: "今天的会议改到下午3点啦", // 消息正文内容 type: "groupchat", // 必须设置为groupchat,否则会被识别为单聊消息 custom: { avatar_url: "https://your-domain.com/user-avatar.jpg", // 发送者的头像URL nickname: "张三" // 发送者的昵称 } }; // 把recipient_id替换成你的目标群ID ConnectyCube.chat.send(recipient_id, groupMsg);
这里要注意两个关键细节:
type字段不能省略:群消息必须指定为groupchat,否则ConnectyCube可能不会正确处理自定义字段custom是普通对象:直接把需要的自定义键值对放进去即可,键名尽量统一(比如全小写),避免拼写错误导致后续读取失败
第二步:接收消息时正确读取自定义字段
当对方收到消息时,在消息监听回调里,你可以直接从消息对象的custom属性里取出头像和昵称。为了避免字段不存在时报错,推荐用可选链操作符?.来访问:
// 注册消息监听回调 ConnectyCube.chat.onMessageListener = function(receivedMsg) { // 先判断是否是群消息 if (receivedMsg.type === "groupchat") { // 读取自定义字段 const senderAvatar = receivedMsg.custom?.avatar_url; const senderNickname = receivedMsg.custom?.nickname; const messageContent = receivedMsg.body; // 这里就可以把这些数据渲染到你的UI界面上了 console.log(`收到${senderNickname}的消息:${messageContent} | 头像地址:${senderAvatar}`); } };
排查之前显示undefined的常见原因
如果你之前的自定义字段一直显示undefined,可以从这几个方向检查:
- 拼写不一致:发送时的
custom字段键名和接收时的不匹配(比如发送时写avatarUrl,接收时却读avatar_url) - 消息类型错误:没有设置
type: "groupchat",导致自定义字段被ConnectyCube过滤 - SDK版本问题:旧版本的ConnectyCube SDK可能对自定义字段支持不完善,建议升级到最新版
额外小提示
- 自定义字段不仅可以放头像和昵称,任何JSON可序列化的内容都能放进去,满足你的业务需求
- 如果是单聊消息,只需要把
type改成"chat",自定义字段的用法和群消息完全一致
内容的提问来源于stack exchange,提问作者José
相关产品推荐
相关产品推荐

