从渠道追溯追溯用户加入/离开事件

时间:2018-08-07 18:20:16

标签: node.js twilio twilio-programmable-chat

我正在尝试在Twilio聊天中根据一些用户的平均响应时间进行分析。

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

频道上有什么可以给我历史会员数据的东西吗?频道中的是谁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();
        }
    );
}

我开始对这样一个事实感到沮丧,那就是,如果我没有设置合适的事件侦听器/网络钩子,那么这可能是不可能的。如果是这样,我想知道,以便进行设置。但是,如果有任何端点我可以联系到并查看谁正在加入/离开某个频道,那将是目前的理想选择。

1 个答案:

答案 0 :(得分:0)

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