我正在寻找一个好的SIP库,用C#编写或提供C#包装器。不一定需要是免费的。有人用过什么好东西吗?
澄清一下,我说的是VoIP协议SIP。
我真的在寻找这个搜索的谷歌搜索。我想有人回来说“我们使用______,而且效果很好。”
为了进一步澄清,我正在寻找一个可以帮助我实现SIP代理服务器的库,而无需手动构建SIP数据包。我不是在寻找星号,freeswitch或任何其他的pbx软件。
我希望在C#中创建一个服务,它会等待SIP数据包并对它们做出响应,我想要一个可以处理大部分细节的库。
答案 0 :(得分:22)
7年前我经历了类似的任务,但寻找嵌入式C版本。我查看了oSIP库。它完成了将SIP数据包转换为结构并返回的所有工作。
然而,文档中的一点与我相关。作者建议您熟悉SIP规范(RFC 3261)以有效地使用该库。在多次阅读规范之后,我最终编写了自己的解析器和调用控制应用程序。
请记住,SIP仍然是一个不断发展的标准。有一个活跃的SIPForum组正在开发SIPConnect 1.1以标准化SIP服务提供商(例如Vonage)和SIP-PBX之间的接口。还有一个名为BLISS的活动,用于定义在用户代理之间实现SIP功能的“最佳实践”。
互操作性很难。有数百个与SIP相关的RFC。不同的端点使用不同的端点,并且规范的解释并不总是兼容的。有几种不同的互操作性“测试事件(如SIPit),以确保您的实现与其他人一起工作。
无论您选择什么,请确保您对要实施的功能的规格有充分的了解。此外,规范和库将有助于数据包端,但您仍需要一个“呼叫控制”库(更高级别的“大脑”来决定如何处理SIP请求/响应)。除非您的应用程序纯粹是SIP代理,否则您还需要一个媒体层来处理音频。
尽管如此,一些互联网电话服务提供商(ITSP)已经使用SIP Express Router作为其服务的前端代理。它非常易于配置,兼容性成功率很高。
答案 1 :(得分:8)
以下是我遇到的一对情侣:
答案 2 :(得分:8)
恕我直言,迄今为止最好的筹码之一是PJSIP。它是用非常便携的C编写的,并且有许多包装器。这是一个非常有效的.NET wrapper。
答案 3 :(得分:5)
我们使用SIP.Net,对我们有效。
我们使用它来等待SIP数据包并保持SIP流程非常简单
请注意,有时其对象模型过于详细,因此产品本身非常灵活(如果您需要这样的灵活性)。但是,我们编写了一个更高级别的包装器(一种外观),只是为了让我们更容易。他们反响敏捷,但IMO的文件不够详细
您也可以查看nsip(只是链接,我自己没有尝试过)
答案 4 :(得分:5)
我的sipsorcery项目是另一种选择。它包含一个完全用C#编写的SIP堆栈。
答案 5 :(得分:4)
我需要这一段时间,最后编写了我自己的B2BUA(一个SIP代理,它也处理音频并充当对话双方的端点)。
SIP规范(和RTP)的问题在于它非常复杂,特别是你考虑了多年来为它做出的所有可选添加。每个人都以不同的方式实现它,所以如果你使用收缩包装软件,你可能会遇到特定手机或服务器的问题。
就我而言,我试图让Microsoft Speech Server与SIP终结者进行通信。 Microsoft对SIP规范有一个特别有创意的解释(最值得注意的例子是它们不支持UDP)。此外,一些VOIP网关不支持REFER用于监督传输,这对许多应用来说都是必需的。
其他答案中提供了一些不错的链接:我的建议是自己动手或者使用开源的东西,这样当你遇到SIP实现中不可避免的不兼容问题时,你可以根据需要进行调整。
答案 6 :(得分:3)
看起来这个CodeProject article可能是一个不错的起点。但是,我不相信它会处理媒体流。
答案 7 :(得分:3)
http://www.konnetic.com是一个相对较新的补充。完全管理。使用SIP和SDP所需的一切。他们没有像许多其他人一样选择标准中的低调水果。 同样好但与Microsoft绑定的是Microsoft Lync服务器。
答案 8 :(得分:2)
不确定你在这里寻找什么。您在寻找客户端VOIP应用程序还是服务器端?如果是后者,您可能想查看FreeSwitch。他们的一个功能是能够在Mono中编写扩展代码,它允许C#。寻找mod_mono支持。
答案 9 :(得分:2)
也许你想尝试lumisoft。完全用C#构建。完全开源和免费。 lumisoft
答案 10 :(得分:2)
它是一个.NET电话工具,他们有自己的SIP堆栈。使用C#或您选择的任何.NET语言。
答案 11 :(得分:2)
Konnetic为.NET开发提供完全托管的SIP组件。
他们的.NET SIP SDK可能是最全面的。
否则,Microsoft的Lync服务器附带了一个非常好的托管SIP库,可从以下网址获得:www.microsoft.com/en-us/lync/default.aspx
答案 12 :(得分:1)
LumiSoft.Net是一个非常好的C#SIP堆栈。它具有所有基本库,例如SIP
,RTP
,SDP
,DNS
和许多其他库,可以非常轻松地构建健壮的SIP代理服务器或SIP客户端。
答案 13 :(得分:1)
我找到的最好的是VoIP Video SIP SDK它提供了高质量的视频
答案 14 :(得分:1)
过去,我使用过MS的Live Communications Server(认为是2003年)。相关的SDK非常糟糕。
现在有了新版本的Office Communications Server。我没有使用SDK开发,但看到一些非常酷的演示。
答案 15 :(得分:1)
我已经看过(不直接使用,刚刚审核过)一个使用Radware SIP堆栈的相当大且稳定的VOIP系统。非常好(即没有问题),我也没有发现任何安全问题......
我审核的系统是在C#中。
答案 16 :(得分:0)
LanScape:http://www.lanscapecorp.com/
所有LanScape VOIP产品包括 LanScape VOIP Media Engine™有 从“基础”设计到 支持所有版本的Microsoft Windows®2000和XP最多和 包括最新版本 Windows Vista。
我也碰巧亲自知道它是C#友好的。
答案 17 :(得分:0)
这对我来说很有意思...... http://developers.inova.si/sipobjects/Default.aspx?tabid=92 - 它不是开源的,但它绝对是以.NET为中心的。它以Avaya为中心,因此可能不适合您的目的。
答案 18 :(得分:-1)
了解Avaya DMCC。您可以在AvayaDev中注册并免费下载。 C#框架允许您利用AES和CM的所有pbx功能。您可以检查是否也支持SIP。