【问题标题】:Twilio Chat API, getUnconsumedMessagesCount always 0Twilio 聊天 API,getUnconsumedMessagesCount 始终为 0
【发布时间】:2017-01-29 07:33:57
【问题描述】:

我正在尝试获取特定频道中特定成员的未读消息数。为此,我希望使用 documentation 中定义的 channel.getUnconsumedMessagesCount()

myChannel.join()
  .then(function(c) {
    console.log('Joined channel ' + c.sid);
    return myChannel.getUnconsumedMessagesCount();
  })
  .then(m => {
    console.log('current count unread: ' + m);
  });

未读计数始终返回 0。为了测试,我执行以下操作:

  1. 用户 2 在另一个 chrome 选项卡中向 myChannel 提交消息
  2. 用户 2 myChannel 使用来自 (1) 的消息更新 .on('messageAdded', [...])
  3. 刷新用户 1 chrome 选项卡,并使用 getUnconsumedMessagesCount 值为 0
  4. 如果我为 user1 调用 myChannel.getMessages(),我会看到来自 user2 的消息

最初我调用 .getUnconsumedMessagesCount() 而不先执行 join(),我认为这可能是问题所在,但即使使用 join 仍然没有。

【问题讨论】:

  • 抱歉这里回复慢。我在这里看不到你做错了什么,所以这可能是 Twilio 方面的一个问题。我建议与Twilio support 联系并向他们发送详细信息,包括您正在使用的聊天服务 SID。
  • 支持...哦不:/好的,谢谢。

标签: javascript angular twilio twilio-api


【解决方案1】:

在获得 UnconsumedMessagesCount 之前,您需要手动设置上次阅读消息 (Send a Consumption Report)

类似这样的东西(JS)

 channel.getMessages(1).then(function (messages) {
    var last_message_index = messages.items[0].index;
    channel.updateLastConsumedMessageIndex(last_message_index);
 });

【讨论】:

    【解决方案2】:

    我在使用 javascript SDK 时遇到同样的问题,它总是返回 0。

    我最终做了以下工作

    const count = channel.getMessagesCount();
    const unreadCount = channel.lastConsumedMessageIndex === null ? count : count - channel.lastConsumedMessageIndex - 1
    

    我还注意到,在 channel.lastConsumedMessageIndex 中实际返回该信息之前,使用任何函数设置消耗的消息可能需要整整一分钟

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 2018-04-24
      相关资源
      最近更新 更多