![](/img/trans.png)
[英]How to listen for messages on a single channel in Twilio Programmable Chat
[英]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
属性。 它还具有hasNextPage
和hasPrevPage
属性,可以告诉您是否有更多消息可用。
还有nextPage
和prevPage
函数可以返回您正在使用的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.