我已经安装了一个MSPL脚本来将INVITE音频消息重定向到UCMA sip地址
我目前正在为Skype for Business编写UCMA应用程序:
我需要做的最后一件事是将To caller URI添加到电话会议中。 我尝试使用本文中的代码示例邀请新参与者加入会议,但我得到一个例外,说明会话中没有AvailableMediaTypes。
public static async void InviteToConference(string destinationUri)
{
//Create a new conversation for the application endpoint.
_toConversation = new Conversation(_server.ApplicationEndPoint);
var conferenceInviteSettings = new ConferenceInvitationSettings();
conferenceInviteSettings.ConferenceUri = _conferenceUri;
ConferenceInvitation invitation = new ConferenceInvitation(_toConversation, conferenceInviteSettings);
try
{
await invitation.DeliverAsync(destinationUri);
}
catch (InvalidOperationException)
{
// Conversation was terminated while trying to add participant.
}
}
有人可以告诉我在添加/邀请参与者参加电话会议时需要做些什么吗?
如果有人可以告诉我如何在不需要创建会议的情况下录制Skype for Business电话会更好,因为会议无法转发。
答案 0 :(得分:1)
您的代码看起来像是旧方式(UCMA 3)。你试过this。
e.g。
McuDialOutOptions mcuDialOutOptions = new McuDialOutOptions();
mcuDialOutOptions.ParticipantUri = "sip:alice@contoso.com";
mcuDialOutOptions.ParticipantDisplayName = "Alice";
mcuDialOutOptions.PreferredLanguage = CultureInfo.GetCultureInfo("en-us");
conversation.ConferenceSession.AudioVideoMcuSession.BeginDialOut("tel:+14255551234", mcuDialOutOptions, dialOutCallback, state);
使用这种方法记录非常具体和低流量应该没问题,但是当你开始扩展它时,你就会遇到各种各样的问题。
关于如何在没有会议的情况下这样做:
使用提供的Microsoft API无法完全实现。
您需要做的是为以下部分实施,购买或使用开源库:
要访问SRTP流加密设置并确定所使用的音频/视频编解码器的动态有效负载类型,您还需要知道主叫方之间提供和应答的SDP。您还需要访问SIP流量以确定呼叫方知道谁呼叫谁。这可能比它看起来要麻烦得多......
要获取SIP / SDP信息,我知道有两个选项:
如果你把所有这些问题都付诸实施,那么下一个问题就是你只能记录" (基本上"嗅")你能看到什么。如果您无法看到RTP / SRTP流量,则无法录制通话。
因此,您需要在网络中可以看到要录制的流量的区域中使用录制软件的嗅探器部分。例如,如果您希望记录所有PSTN呼叫,则可以在Skype中介服务器之外设置网络跨接端口。
如果你想记录所有的电话,那就更难了。你很可能需要:
上述解决方案的问题是:
最重要的是存储管理的一般问题(一段时间后录制将开始占用大量磁盘空间)和呼叫录制管理(例如,搜索特定呼叫)以及围绕这些录制的用户安全性处理。我确定我错过了很多,但这些都是基础知识。
如果录制不是核心组件,您可以购买支持Lync / Skype的第三方通话录音解决方案。