【问题标题】:Twilio chat channel getMembers() method access forbiddenTwilio 聊天频道 getMembers() 方法访问被禁止
【发布时间】:2020-05-11 11:08:05
【问题描述】:

在 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;

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

【问题讨论】:

    标签: twilio twilio-programmable-chat


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    根据the documentation

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

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

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

    【讨论】:

    • 太好了,谢谢!成员是否必须在频道的生命周期中加入一次或更频繁?由于我以编程方式添加所有成员(想想 fb messenger)他们应该加入 channelAdded() 监听器吗?是否对某个地方的所有生命周期要求有更高的看法?
    • 一旦您加入某个频道,您就是该频道的会员,您将出现在该频道的会员列表中,直到您离开。您不必一遍又一遍地加入它。
    • 创建频道时,我需要在没有邀请的情况下添加其他成员。为此,我将使用 channel.add()。现在另一个身份也是会员。问题是,虽然当前身份可以在创建频道后立即加入频道,但我不能为其他用户这样做(加入没有参数)。即其他实体无法知道何时加入频道,但在 channelAdded 事件中?!什么情况下每次触发事件都需要调用join?
    • 为所有"created and not joined private channels" and "all type of channels Client has joined or invited to" 触发channelAdded 事件。您还可以使用返回“未知”、“已知”、“已邀请”或“已加入”的Channel#Status() function 查看用户在频道中的状态。
    • @jjalonso 我不知道我害怕!您可能需要通过Twilio support 来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2021-01-23
    相关资源
    最近更新 更多