我正在寻找一个好的SIP库,用C#编写或提供C#包装器.不一定需要是免费的.有人用过什么好东西吗?
为了澄清,我说的是VoIP协议SIP.
我真的在寻找一个谷歌搜索这个.我想有人回来说"我们使用______,而且效果很好."
为了进一步说明,我正在寻找一个可以帮助我实现SIP代理服务器的库,而无需手动构建SIP数据包.我不是在寻找星号,freeswitch或任何其他的pbx软件.
我期待在C#中创建一个服务,它将等待SIP数据包并响应它们,我想要一个可以处理大部分细节的库.
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路由器作为其服务的前端代理.它非常易于配置,兼容性成功率很高.
恕我直言,迄今为止最好的筹码之一是PJSIP.它是用非常便携的C编写的,并且有许多包装器.这是一个非常好用的.NET包装器.
这是我遇到的一对夫妇:
http://www.independentsoft.com/sip/index.html
http://voipengine.googlepages.com/sipeksdk
我的sipsorcery项目是另一种选择.它包含一个完全用C#编写的SIP堆栈.
我们使用SIP.Net,对我们来说工作正常.
我们使用它来等待SIP数据包并保持SIP流程非常简单.
请注意,有时其对象模型过于详细,因此产品本身非常灵活(如果您需要这样的灵活性).但是,我们编写了一个更高级别的包装器(一种外观),只是为了让我们更容易.他们的响应非常快,但IMO的文档不够详细.
你也可以检查一下nsip(只是一个链接,我自己没试过)