2015-09-23 83 views
2

我在我的web應用程序中實現了quickblox聊天功能。現在,我想將郵件的狀態顯示爲delivered,以便在他們剛剛發送給用戶時顯示爲read,當他們看到該郵件時顯示爲readQuickblox:郵件傳遞和閱讀狀態

在JavaScript SDK我發現兩個功能QB.chat.sendDeliveredMessageQB.chat.sendReadMessage但我每次調用這個函數隨着時間:

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

聊天的同時運行超過http://chat.quickblox.com:5280/它調用Ajax和POST要求在URL http://chat.quickblox.com:8080/。 此外,在庫中,我將端口更改爲5280代替8080,以便它可以調用帶端口8080的url,並調用http://chat.quickblox.com:5280/,然後給出錯誤代碼405: Invalid Hostname

請讓我知道我在調用這個函數時做錯了什麼。如果需要更多信息,請告訴我。

回答

1

我們正在研究這個功能,在新版本的QuickBlox JS SDK中會發送帶有可標記狀態的消息。 sendDeliveredStatus(PARAMS) - 將會被接收消息與可標記狀態,這將經由監聽QB.chat.onDeliveredStatusListener(MESSAGEID,dialogId,用戶id)的功能信號化後自動發送;

sendReadStatus(PARAMS) - 將會是可能的發送它根據事件(例如,設置了一個處理器,該處理器將注意到,一個消息已經出現在你的監測,接收消息與後可標記狀態,這將經由監聽QB.chat.onReadStatusListener(MESSAGEID,dialogId,用戶id)的功能信號化;)

參數狀態發送:

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

感謝臭,我也能夠實現上述使用QB新的JS SDK和功能,如'QB.chat.sendDeliveredMessage '和'QB.chat.sendReadMessage',它們在onMessage監聽器中發送消息並獲取消息類型,從而相應地顯示各自的狀態。非常感謝。 –

0

謝謝你們,這個頁面幫了我很多。

當發送的消息可能是2種選擇:

  • A.你是發送者和其他用戶是收件人:YOU - > ANOTHER-USER
  • B.你是收件人和另一個用戶是發送者:ANOTHER-USER - >你

選項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. 添加這樣的偵聽器函數與此簽名: 在這種監聽器,你可以通知發件人,他的消息是recived的d讀(由你):

    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. 添加一個簡單的功能只是路過PARAMS到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."); 
    }