使用SIP客户端远程拨号

时间:2012-02-18 07:47:13

标签: voip sip sdp

我想使用我编写的简单非SIP客户端程序从我的电脑远程拨号,并且将命令发送到通过TCP连接接受远程命令的专有SIP客户端。然后,专有SIP客户端将使用我的PC的IP和SDP端口号为RTP拨打远程方。这原则上可行吗?是否有任何使用此概念的开源客户端?是否有可用的文档(IETF RFC,博客等)。

感谢您对此事的任何帮助。

2 个答案:

答案 0 :(得分:0)

查看pjsip,它是适用于所有主要平台的开源跨平台SIP客户端,使用C语言的API和python的API包装器,无论您喜欢哪种方式。他们的网站上也有例子。将您的TCP解析代码链接到pjsip并调用其函数来发起呼叫,您可以在其网站上找到如何执行此操作

答案 1 :(得分:0)

如果我理解正确,这就是你想要做的事情:

    TCP              SIP/SDP/RTP
PC <===> SIP client <===========> softswitch

实际上,PC和SIP客户端之间的TCP可能对信令准确,但对于媒体则不准确,因为RTP媒体流通常通过UDP发送。

在我看来,第一步是确保您的软交换机接受将RTP数据包发送到与SIP客户端不同的IP地址(我认为其中大部分都是出于安全原因而拒绝)。如果它接受并且您的SIP客户端和PC之间没有NAT,则应该能够将RTP流直接发送到您的PC。在这种情况下,您必须检索RTP数据包,最终重新排列它们,解压缩它们的有效负载并将它们提供给您的扬声器。

如果您的软交换机不想将RTP数据包发送到与SIP IP地址不同的IP地址,则必须将您的RTP数据包从SIP客户端转发到PC。但是,如果您无法修改您的SIP客户端来执行此操作(并且可能是因为它是专有软件),您可能会被卡住。

要测试您的软交换是否接受将RTP数据包发送到非预期的IP地址,您可以使用sipp并指定与SIP信令IP地址不同的远程媒体IP地址。