簡體   English   中英

如何檢索 Twilio 可編程聊天頻道中的所有消息?

[英]How to retrieve all messages in a Twilio Programmable Chat Channel?

    privatechannel.getMessages().then(function (messages) {
    const totalMessages = messages.items.length;
    for (let i = 0; i < totalMessages; i++) {
      const message = messages.items[i];
      console.log('Author:' + messages.author);
      printMessage(message.author, message.body);
    }
    console.log('Total Messages:' + totalMessages);
    deleteNotifs()

  });

這在 Twilio 文檔中被列為檢索最新消息的方式。 我試過了,它顯示的最大消息數甚至不是 100 條,它只顯示了對話中的最后 30 條消息。

有沒有辦法檢索和顯示 Twilio 可編程聊天頻道(私人或其他)中的所有消息?

Twilio 開發人員布道師在這里。

當您向channel.getMessages()發出請求時,您可以做一些事情來獲得比默認的前 30 條消息更多的信息。

首先,您可以傳遞一個pageSize以從每個請求中獲取更多消息。 pageSize默認為 30,最多(我認為)100。

privatechannel.getMessages(100).then(function(messagePaginator) { 
  // deal with the messages
});

如果您希望 go 超過 100 條消息,那么您會從文檔中注意到getMessages返回一個解析為Paginator<Messages>的 Promise Paginator object 具有您已用於訪問消息的items屬性。 它還具有hasNextPagehasPrevPage屬性,可以告訴您是否有更多消息可用。

還有nextPageprevPage函數可以返回您正在使用的Paginator的下一頁或上一頁。

因此,在您的示例中,您可以像這樣獲取和打印通道中的所有消息:

const messages = [];
let totalMessages = 0;

function receivedMessagePaginator(messagePaginator) {
  totalMessages += messagePaginator.items.length;
  messagePaginator.items.forEach(function (message) {
    printMessage(message.author, message.body);
    messages.push(message);
  });
  if (messagePaginator.hasNextPage) {
    messagePaginator.nextPage().then(receivedMessagePaginator);
  } else {
    console.log("Total Messages:" + totalMessages);
  }
}

privatechannel.getMessages().then(receivedMessagePaginator);

讓我知道這是否有幫助。

由於您的代碼中沒有語法錯誤,因此很可能與 API 相關的速率限制。 考慮檢查 Twilio 文檔、API 類型限制(免費訂閱與付費訂閱)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM