【问题标题】:Agora Web SDK call waiting implementationAgora Web SDK 呼叫等待实现
【发布时间】:2020-11-21 20:59:34
【问题描述】:
找建议看看,是否可以使用 Agora WebSDK 实现“呼叫等待”功能?我们有现场表演,主持人在节目期间接听观众电话。我们希望:
- 当观众呼叫时,应将呼叫放入队列中。
- 当呼叫者处于等待状态(在队列中)时,我们可能会向呼叫者发送“等待”音乐(但这可能不是绝对必要的)。
- 主机一次可以让一位呼叫者出队并接听电话。
我可以想到两种可能的方式,我们可以在现场直播中实现这一点。
- 一种是在主播接听电话后,让主叫观众重新以主播身份加入频道。但在队列管理方面会有很多“放弃”。
- 另一种方法是使用带外解决方案,例如 Twillio。在这种情况下,调用需要有单独的 WebRTC 连接。
有什么建议吗?
【问题讨论】:
标签:
agora.io
agora-web-sdk-ng
【解决方案1】:
您描述的 “呼叫等待” 功能不是使用 Agora 的 Video Web SDK 开箱即用的功能,使用 Agora 的 Video SDK 和 Agora 的 RTM Web SDK 很有可能.
您需要使用 Agora 的Real Time Messaging SDK 来提供信令层。
使用RTM Channel Events,可以实现用户每次加入或离开RTM频道的回调以及“频道消息”回调。
观众成员可以向所有参与者发送频道消息“call-in”,从而出现在他们所有屏幕上的队列中。或者您可以选择通过管理员运行队列逻辑(添加一层审核)。
在这种情况下,一旦收到“call-in” 消息,管理员用户的客户端可以将用户添加到队列中(如果需要则拒绝)。使用频道消息,管理员客户端可以将频道消息发送到带有更新的队列详细信息的“通用频道”。
管理员用户可以发送频道消息,让所有客户知道何时选择“呼叫者”将角色从观众(等待)切换到广播者。这将最大限度地减少“手放弃”,因为管理员用户发送一条消息并且所有远程客户端都可以做出适当的反应。