Quickblox:消息已发送和阅读状态

Quickblox: Message Delivered and Read Status

我已经在我的 Web 应用程序中实现了 quickblox 聊天。现在我想将我的消息状态显示为 delivered,以防它们刚发送给用户时显示为 read,当他们看到消息时显示为 read

在您的 Javascript SDK 中,我找到了两个函数 QB.chat.sendDeliveredMessageQB.chat.sendReadMessage,但每次我都将此函数称为:

QB.chat.sendDeliveredMessage(
    QBChatHelpers.getJID(chatUser.id),
    "5600f885a28f9ac7e801048c"    //this is just a sample msg-id
);

它通过 url http://chat.quickblox.com:8080/ 通过 POST 请求调用 ajax,而 运行 通过 http://chat.quickblox.com:5280/ 进行聊天。 同样在库中,我将端口更改为 5280 而不是 8080,以便它可以使用端口 8080 调用 url 并调用 http://chat.quickblox.com:5280/,然后给出错误代码 405: Invalid Hostname

请告诉我调用此函数时我在做什么错。如果需要更多信息,请告诉我。

我们正在开发此功能,在新版本的 QuickBlox JS SDK 中,消息将以 markable 状态发送。 sendDeliveredStatus(params)-收到状态为markable的消息后自动发送,通过Listener的函数发出信号QB.chat.onDeliveredStatusListener(messageId, dialogId, userId);

sendReadStatus(params)-将有可能根据一个事件发送它(例如,你设置了一个处理器,它会注意到一条消息已经出现在你的监视器,在收到状态为 markable 的消息后,将通过 Listener QB.chat.onReadStatusListener(messageId, dialogId, userId)[=27= 的函数发出信号];)

状态发送参数:

params = {
    messageId: messageId,
    userId: userId,
    dialogId: dialogId
  };

谢谢大家,这个页面对我帮助很大。

何时发送消息可以有 2 个选项:

  • 一个。您是发件人,另一个用户是收件人:YOU --> ANOTHER-USER
  • 乙。您是收件人,另一个用户是发件人:ANOTHER-USER --> YOU

选项A:

  1. 将您的消息发送给带有 "markable=1" 标志的收件人。 例如:

      var params = {
        chat_dialog_id: "56b20540f583bb7bcb00rrr6",
        message: msg),
        send_to_chat: 1,
        markable: 1,
        extension: {
          save_to_history: 1
        }
      };
    
      // SEND THE MESSAGE
      QB.chat.message.create(params, function (err, res) {});
    
  2. 添加收件人阅读消息后触发的QB监听器:

    QB.chat.onReadStatusListener = updateReadersList;
    

然后用这个签名添加这样一个函数:

function updateReadersList(messageId, dialogId, userId){
    console.log('userId has read your messageId that in dialogId');

}

选项 B:

  1. 添加 QB 侦听器以处理新传入的消息:

    QB.chat.onMessageListener = showMessage;
    
  2. 添加具有此签名的侦听器函数: 在该侦听器中,您可以通知发件人他的消息已被接收并(由您)阅读:

    function showMessage(userId, msg) {
    console.log('userId sent you this msg');
    
        //notify sender: message was read:
        if(userId != "MY-USER") {
          sendReadSignalToSender(msg, userId);
          console.log("You notified userId that his msg was read.");
        }       
    

    }

  3. 添加一个简单的函数,用于将参数传递给 QB.chat.sendReadStatus 函数:

    function sendReadSignalToSender(dialogMsg, senderId){
    var params = {
      messageId: (dialogMsg.id || dialogMsg._id),
      userId: senderId,
      dialogId: (dialogMsg.dialog_id || dialogMsg.chat_dialog_id)
    };
    QB.chat.sendReadStatus(params);
    
    console.log("senderId was notified that his dialogMsg was read.");
    }