首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UCMA录音应用程序

UCMA录音应用程序
EN

Stack Overflow用户
提问于 2017-09-07 15:02:43
回答 1查看 524关注 0票数 0

我安装了一个MSPL脚本,将邀请音频消息重定向到UCMA sip地址

我目前正在为Skype for Business编写一个UCMA应用程序:

  1. 接听来电
  2. 接电话
  3. 创建一个电话会议
  4. 向会议中添加受信任的参与者
  5. 在受信任的参与者音频流上创建一个记录实例来记录会话

我最不需要做的事情是将调用方URI添加到电话会议中。我尝试使用本文中的代码示例邀请新的参与者参加会议,但我得到了一个例外,即会话中没有AvailableMediaTypes。

代码语言:javascript
复制
    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 call,那就更好了,因为会议不能被转发。

EN

回答 1

Stack Overflow用户

发布于 2017-09-07 19:30:20

您的代码看起来像旧的方法(UCMA 3)。你试过吗?

例如:

代码语言:javascript
复制
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来完成它。

您要做的是为以下部分实现、购买或使用开源库:

  • 嗅探网络数据包
  • 解码RTP/SRTP流
  • 解码呼叫者之间使用的音频和/或视频编解码器。
  • 将流编码成所需的格式,并保存在某个地方。

要获得对SRTP流加密设置的访问,并确定所使用的音频/视频编解码器的动态有效载荷类型,您还需要知道主叫方之间提供和回答的SDP。您还需要访问SIP通信量,以确定主叫方知道谁呼叫了谁。这比看上去麻烦多了..。

要获取SIP/SDP信息,我知道两个选项:

  • Skype/Lync (MSPL /)查看大多数SIP通信量。这就是我用来实现录音解决方案的方法。
  • Skype/Lync SDN SDK -我没有使用这个API,但是它似乎提供了对SDP的访问,所以它应该能工作。

如果你把所有这些问题都摆好了,那么下一个问题就是你只能“记录”(基本上是“嗅”)你能看到的东西。如果看不到RTP/SRTP通信量,则无法记录调用。

因此,您需要在网络中看到您想要记录的流量的区域上使用记录软件的嗅探器部分。例如,如果您希望记录所有PSTN呼叫,您可以在Skype中介服务器上拥有一个跨越端口的网络。

如果你想记录所有的电话,那就更难了。你很可能需要:

  • 强迫所有媒体交易通过一个已知的地方(如边缘服务器),并在该网络上放置嗅探器。
  • 在网络的战略区域有大量的嗅探器来捕获大多数RTP/SRTP流量。

上述解决办法的问题如下:

  • 一旦负载开始增加,强迫所有流量通过一个点可能会导致性能问题(就像您在会议设置中看到的那样)。此外,强迫外部(边缘服务器用户)和/或联邦调用通过这一点可能会导致问题。假设edger服务器用户调用边缘服务器用户,在那里媒体流量甚至可能根本不进入您的网络,而只存在于internet上。强迫流量进入您的网络会导致性能问题。
  • 当不强制所有流量通过一个点,你可能永远不会看到所有skype用户到skype用户电话取决于你的网络设置。边缘服务器skype用户之间的通话更是一个问题,因为媒体流量甚至可能根本不进入您的网络。

最重要的是,存储管理(一段时间后记录将开始占用大量磁盘空间)和呼叫记录管理(例如搜索特定呼叫)和用户安全围绕这些记录来处理的普遍问题。我肯定我错过了很多,但这些都是最基本的。

如果录制不是一个核心组件,你可以买一个第三方电话录音解决方案,支持Lync/Skype。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46099649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档