0

我正在尝试对 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();
        }
    );
}

我开始接受这样一个事实,即如果我一开始就设置了正确的事件侦听器/webhook,那么这可能只有可能被跟踪。如果是这种情况,我想知道这样我就可以进行设置。但是,如果有任何端点我可以联系并查看谁加入/离开了频道,那将是目前的理想选择。

4

1 回答 1

0

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

于 2018-08-21T22:26:43.227 回答