差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:web:basics:message [2019/12/04 08:14]
lizg [消息]
im:web:basics:message [2020/01/14 08:25] (当前版本)
lizg [发送文本消息(单聊、扩展)]
行 25: 行 25:
 </​code>​ </​code>​
  
-**注意:** 发送ext 扩展消息,可以没有这个字段,但是如果有,值不能是ext:null这种形式,否则出错+**注意:** 发送ext 扩展消息,可以没有这个字段,但是如果有,值不能是"ext:null"这种形式,否则出错
 ===== 发送消息 ===== ===== 发送消息 =====
  
行 42: 行 42:
  
 多样化的消息类型,覆盖多种场景下的消息需求。 多样化的消息类型,覆盖多种场景下的消息需求。
-==== 发送文本消息(单聊) ====+==== 发送文本消息(单聊、扩展) ====
  
 单聊发送文本消息示例如下: 单聊发送文本消息示例如下:
行 55: 行 55:
         to: '​username', ​                         // 接收消息对象(用户id)         to: '​username', ​                         // 接收消息对象(用户id)
         roomType: false,         roomType: false,
-        ext: {},                                  //​扩展消息+        ext: { 
 +            key: value, 
 +            key2: { 
 +                key3: value2 
 +            } 
 +        ​},                                  //​扩展消息
         success: function (id, serverMsgId) {         success: function (id, serverMsgId) {
             console.log('​send private text Success'​);  ​             console.log('​send private text Success'​);  ​
行 167: 行 172:
 }; };
 </​code>​ </​code>​
-**注意:**%%当为 WebIM 添加了 Emoji 属性后,若发送的消息含 WebIM.Emoji 里特定的字符串,connection 就会自动将这些字符串和其它文字按顺序组合成一个数组,每一个数组元素的结构为 {type:'​emoji(或者txt)',​data:''​}%%+**注意:**%%当为 WebIM 添加了 Emoji 属性后,若发送的消息含 WebIM.Emoji 里特定的字符串,connection 就会自动将这些字符串和其它文字按顺序组合成一个数组,每一个数组元素的结构为 {type:'​emoji(或者txt)',​data:'​msg(或者src)'}%%
  
 当 type='​emoji'​ 时,data 表示**表情图像的路径**; 当 type='​emoji'​ 时,data 表示**表情图像的路径**;
行 523: 行 528:
         console.log(list);​         console.log(list);​
     },     },
-    ​recallMessage: function( message ){},      //​收到消息撤回回执+    ​onRecallMessage: function( message ){},    //​收到消息撤回回执
     onReceivedMessage:​ function(message){}, ​   //​收到消息送达服务器回执     onReceivedMessage:​ function(message){}, ​   //​收到消息送达服务器回执
     onDeliveredMessage:​ function(message){}, ​  //​收到消息送达客户端回执     onDeliveredMessage:​ function(message){}, ​  //​收到消息送达客户端回执
行 561: 行 566:
 </​code>​ </​code>​
  
-**注意:**当为 WebIM 添加了 Emoji 属性后,若发送的消息含 WebIM.Emoji 里特定的字符串,connection 就会自动将这些字符串和其它文字按顺序组合成一个数组,每一个数组元素的结构为 **{type:'​emoji(或者txt)',​data:​''​}**+**注意:**当为 WebIM 添加了 Emoji 属性后,若发送的消息含 WebIM.Emoji 里特定的字符串,connection 就会自动将这些字符串和其它文字按顺序组合成一个数组,每一个数组元素的结构为 **{type:'​emoji(或者txt)',​data:​type}**
  
 当 type='​emoji'​ 时,data 表示**表情图像的路径**; 当 type='​emoji'​ 时,data 表示**表情图像的路径**;
行 617: 行 622:
 ===== 拉取历史消息 ===== ===== 拉取历史消息 =====
  
-漫游消息,SDK增值功能。+漫游消息,''​SDK增值功能''​
 <code javascript>​ <code javascript>​
 /** /**
行 646: 行 651:
 ---- ----
 ===== 消息回执 ===== ===== 消息回执 =====
 + ​单聊:
   * 已送达回执:在 webim.config.js 中配置 delivery 为 true ,在收到消息时会自动发送已送达回执,对方收到已送达回执的回调函数是 onDeliveredMessage   * 已送达回执:在 webim.config.js 中配置 delivery 为 true ,在收到消息时会自动发送已送达回执,对方收到已送达回执的回调函数是 onDeliveredMessage
   ​   ​
   * 已读回执:当认为用户已读某条(些)消息时,可以生成已读回执,再进行发送   * 已读回执:当认为用户已读某条(些)消息时,可以生成已读回执,再进行发送
   ​   ​
-  * 对方收到已送达回执的回调函数是 onReadMessage+对方收到已送达回执的回调函数是 onReadMessage
 <code javascript>​ <code javascript>​
 var bodyId = message.id; ​        // 需要发送已读回执的消息id var bodyId = message.id; ​        // 需要发送已读回执的消息id
行 660: 行 665:
 }); });
 Demo.conn.send(msg.body);​ Demo.conn.send(msg.body);​
 +</​code>​
 +
 +
 +群聊:
 +
 +  * 发送群可以收已读回执的消息 ​
 +<code javascript>​
 + ​sendGroupReadMsg = () => {
 +  let id = conn.getUniqueId(); ​                // 生成本地消息id
 +  let msg = new WebIM.message('​txt',​ id);      // 创建文本消息
 +  msg.set({
 +     msg: '​message content', ​                 // 消息内容
 +     to: '​username', ​                         // 接收消息对象(用户id)
 +     ​roomType:​ true,
 +     ​success:​ function (id, serverMsgId) {
 +         ​console.log('​send private text Success'​);​
 +     },
 +     fail: function(e){
 +         ​console.log("​Send private text error"​);​
 +     }
 +  });
 +  msg.setGroup("​groupchat"​);​
 +  msgObj.body.msgConfig = { allowGroupAck:​ true }
 +  conn.send(msg.body);​
 +}
 + </​code>​
 +  * 收到需要回执的消息后发送回执 ​
 +
 +<code javascript>​
 + ​sendReadMsg = () => {
 +  let msg = new WebIM.message("​read",​ WebIM.conn.getUniqueId());​
 +  msg.body.group = "​groupchat";​
 +  msg.body.msgConfig = { allowGroupAck:​ true };
 +  msg.body.ackContent = JSON.stringify({});​
 +  WebIM.conn.send(msg.body);​
 +}
 +</​code>​
 +  * 监听收到群组消息回执:分两种情况 1、正常在线时可以在 onReadMessage 函数里监听到回执,2、离线时收到群组消息回执,登录后会在onStatisticMessage函数里监听到回执 ​
 +
 +<code javascript>​
 +// 在线时可以在onReadMessage里监听
 +onReadMessage:​ (message) => {
 +  const { mid } = message;
 +  const msg = {
 +    id: mid
 +  };
 +  if(message.groupReadCount){
 +    // 消息阅读数
 +    msg.groupReadCount = message.groupReadCount[message.mid];​
 +  }
 +}
 +      ​
 +// 离线时收到回执,登录后会在这里监听到
 +onStatisticMessage:​ (message) => {
 +  let statisticMsg = message.location && JSON.parse(message.location);​
 +  let groupAck = statisticMsg.group_ack || [];
 +}
 +</​code>​
 +  * 查看读过消息的用户
 +<code jacascript>​
 +  WebIM.conn.getGroupMsgReadUser({
 +    msgId, // 消息id
 +    groupId, // 群组id
 +    success(data){
 +        resolve(data);​
 +    },
 +    error(err){
 +        reject(err);​
 +    },
 +});
 </​code>​ </​code>​