首页 > 解决方案 > Twilio 聊天频道 getMembers() 方法访问被禁止

问题描述

在 Twilio 可编程聊天服务中创建频道后,我正在监听客户端事件。

这些事件之一就是channelAdded事件。在钩子中,我必须像这样检索频道的成员(以便在二进制房间中获取相反的成员名称)

channel.getMembers()

当我这样做时,Twilio 会返回:

name: "SyncError"
message: "Access forbidden for identity (status: 403, code: 54007)"
status: 403
code: 54007

如果访问该方法的用户也不是该频道的作者和成员,那将是有意义的。

我是否需要授予作者一些特殊权限才能访问该频道?

附加的次要问题

当我创建一个二进制频道(2 个成员)时,我需要手动将作者添加为频道的成员,如下所示:

        var channel = await this.client.createChannel({
            friendlyName: command.roomName,
            isPrivate: command.isPrivateRoom
        })
        var p1 = channel.add(command.currentUserId);
        var p2 = channel.add(command.oppositeUserId);
        await Promise.all([p1,p2])
        return command.roomName;

是否有快捷方式或方法可以在创建时自动添加成员?

标签: twiliotwilio-programmable-chat

解决方案


Twilio 开发人员布道者在这里。

根据文档

创建频道后,用户必须加入该频道才能开始在该频道上接收或发送消息。

无论您是在客户端还是服务器端创建频道,您都需要专门与您的用户一起加入频道,然后他们才能访问它。此处唯一的捷径是您可以调用join()频道以与经过身份验证的用户一起加入频道。例如:

await channel.join();
const members = await channel.getMembers();

推荐阅读