C# MS Teams Calling Bot:当启用视频的用户数超过8时,Bot将断开与团队呼叫的连接
我们正在使用基于示例(AudioVideoPlaybackBot)的Microsoft呼叫机器人框架。Bot处理MS团队呼叫,检索音频和视频流,并将数据重新传输到外部应用程序进行实时处理。当我们用很少的用户测试我们的应用程序时,一切都很好。当同时连接到同一团队的呼叫数量超过8个启用摄像机的用户时,bot将断开与呼叫的连接。问题似乎与视频插座有关,因为没有视频,一切都正常。 当收到OnDominantSpeakerChanged通知时,我们尝试只订阅当前参与者视频,并取消订阅前一个演讲者视频,因此只使用1个视频插座,但没有帮助C# MS Teams Calling Bot:当启用视频的用户数超过8时,Bot将断开与团队呼叫的连接,c#,botframework,microsoft-graph-sdks,microsoft-graph-teams,microsoft-graph-cloudcommunications,C#,Botframework,Microsoft Graph Sdks,Microsoft Graph Teams,Microsoft Graph Cloudcommunications,我们正在使用基于示例(AudioVideoPlaybackBot)的Microsoft呼叫机器人框架。Bot处理MS团队呼叫,检索音频和视频流,并将数据重新传输到外部应用程序进行实时处理。当我们用很少的用户测试我们的应用程序时,一切都很好。当同时连接到同一团队的呼叫数量超过8个启用摄像机的用户时,bot将断开与呼叫的连接。问题似乎与视频插座有关,因为没有视频,一切都正常。 当收到OnDominantSpeakerChanged通知时,我们尝试只订阅当前参与者视频,并取消订阅前一个演讲者视频,因此
private void OnDominantSpeakerChanged(object sender, DominantSpeakerChangedEventArgs e)
{
this.GraphLogger.Error($"[{this.Call.Id}:OnDominantSpeakerChanged(DominantSpeaker={e.CurrentDominantSpeaker}, LastSpeaker = {e.DominantSpeakerHistory.LastOrDefault()})]");
if (e.CurrentDominantSpeaker != DominantSpeakerNone)
{
IParticipant participant = this.GetParticipantFromMSI(e.CurrentDominantSpeaker);
var participantDetails = participant?.Resource?.Info?.Identity?.User;
var oldParticipantMsi = e.DominantSpeakerHistory.LastOrDefault();
IParticipant oldParticipant = this.GetParticipantFromMSI(oldParticipantMsi);
GraphLogger.Log(TraceLevel.Info, $"OnDominantSpeakerChanged. participant?.Resource?.Info?.Identity?.User?.Id is {participantDetails?.Id}. oldParticipantUserId is {oldParticipant?.Resource?.Info?.Identity?.User?.Id}");
if (participantDetails != null && participantDetails?.Id != _currentUserId)
{
_currentUserId = participant?.Resource?.Info?.Identity?.User?.Id;
// we want to force the video subscription on dominant speaker events
this.SubscribeToParticipantVideo(participant, forceSubscribe: true);
GraphLogger.Log(TraceLevel.Info, $"OnDominantSpeakerChanged. UnsubscribeFromParticipantVideo. oldParticipantMsi = {oldParticipantMsi}, e.CurrentDominantSpeaker = {e.CurrentDominantSpeaker}");
if (oldParticipant != default && oldParticipantMsi != e.CurrentDominantSpeaker)
{
GraphLogger.Log(TraceLevel.Info,$"OnDominantSpeakerChanged. UnsubscribeFromParticipantVideo. ");
this.UnsubscribeFromParticipantVideo(oldParticipant);
}
}
}
}
我们预计,当超过8个用户启用了视频时,bot不会断开与通话的连接。此外,我们只需要来自当前主要扬声器的一个视频流。
在断开bot连接之前,日志未显示任何错误或异常
8个视频流的限制是否与Bot框架相关?还是我们在代码中犯了一些错误?这对我们来说非常重要,因为这个问题正在阻止我们投入生产。如果需要更多细节,请告诉我