从 Channels 追溯获取用户加入/离开事件

Get user join / leave events retroactively from Channels

我正在尝试对 Twilio Chat 上的一些用户的平均响应时间进行一些分析。

我正在遍历我的频道,我能够提取有关消息的信息,因此我可以比较消息未回复的时间。但是,我无法确定当时频道中有哪些用户。

频道上有什么可以给我历史会员数据的吗?谁 在频道中? channel.messages().list() 方法只给我发送到频道的消息的文本以及发送者,但是可能在频道中响应的用户在频道的整个生命周期中都会发生变化。

这是在后端使用 node.js SDK。注意:这不是我正在尝试做的事情的完整实现,而是逐步执行以访问我需要执行此操作的信息。一旦我收到这些消息并知道在给定时间哪些用户应该在某个频道中,我就可以进行分析以了解我正在寻找的用户需要多长时间才能做出响应。

var fs = require('fs');
const Twilio = require('twilio');
const client = new Twilio(env.TWILIO_ACCOUNT_SID, env.TWILIO_AUTH);
const service = client.chat.services(env.TWILIO_IPM_SERVICE_SID);

async function getChatMessages() {
    const fileName = 'fileName.csv';
    const getLine = message => { 
        return `${message.channelSid},${message.sid},${message.dateCreated},${message.from},${message.type},${message.body}\n`;
    }
    const writeToFile = message => { fs.appendFileSync(fileName, getLine(message)); };
    const headerLine = `channelSid,messageSid,dateCreated,author,type,body`;
    fs.writeFileSync(fileName, headerLine);
    await service.channels.each(
        async (channel, done) => {
            i++;
            let channelSid = channel.sid;
            if( channel.messagesCount == 0 ) return;
            try {
                await channel.messages().list({limit:1000, order:"asc"}).then(
                    messages => {
                        messages.forEach( writeToFile );
                    }
                );
            } catch(e) {
                console.log(`There was an error getting messages for ${channelSid}: ${e.toString()}`);
            }
            if( i >= max ) done();
        }
    );
}

我开始接受这样一个事实,即如果我一开始就设置了适当的事件侦听器/网络钩子,也许这才有可能被跟踪。如果是这样的话,我想知道,以便我可以进行设置。但是,如果有任何端点我可以联系并查看谁正在加入/离开频道,那将是目前的理想选择。

答案很遗憾,您无法追溯获取此数据。 Twilio 提供了一个用于聊天的 webhooks API,您可以使用它来自己跟踪这些数据,但如果您不捕获这些事件,您将无法再次访问它们。