Quickblox:消息已发送和阅读状态
Quickblox: Message Delivered and Read Status
我已经在我的 Web 应用程序中实现了 quickblox 聊天。现在我想将我的消息状态显示为 delivered
,以防它们刚发送给用户时显示为 read
,当他们看到消息时显示为 read
。
在您的 Javascript SDK 中,我找到了两个函数 QB.chat.sendDeliveredMessage
和 QB.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:
将您的消息发送给带有 "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) {});
添加收件人阅读消息后触发的QB监听器:
QB.chat.onReadStatusListener = updateReadersList;
然后用这个签名添加这样一个函数:
function updateReadersList(messageId, dialogId, userId){
console.log('userId has read your messageId that in dialogId');
}
选项 B:
添加 QB 侦听器以处理新传入的消息:
QB.chat.onMessageListener = showMessage;
添加具有此签名的侦听器函数:
在该侦听器中,您可以通知发件人他的消息已被接收并(由您)阅读:
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.");
}
}
添加一个简单的函数,用于将参数传递给 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.");
}
我已经在我的 Web 应用程序中实现了 quickblox 聊天。现在我想将我的消息状态显示为 delivered
,以防它们刚发送给用户时显示为 read
,当他们看到消息时显示为 read
。
在您的 Javascript SDK 中,我找到了两个函数 QB.chat.sendDeliveredMessage
和 QB.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:
将您的消息发送给带有 "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) {});
添加收件人阅读消息后触发的QB监听器:
QB.chat.onReadStatusListener = updateReadersList;
然后用这个签名添加这样一个函数:
function updateReadersList(messageId, dialogId, userId){
console.log('userId has read your messageId that in dialogId');
}
选项 B:
添加 QB 侦听器以处理新传入的消息:
QB.chat.onMessageListener = showMessage;
添加具有此签名的侦听器函数: 在该侦听器中,您可以通知发件人他的消息已被接收并(由您)阅读:
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."); }
}
添加一个简单的函数,用于将参数传递给 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."); }