从PHP脚本注册SIP
目标:使用LAMP服务器注册为SIP服务器,并将端点注册到SIP服务器 原因:在某个特定分机与PHP CRM交互时拦截该分机的电话呼叫 SIP服务器没有使用星号,因为必须使其具有足够的通用性来处理任何SIP服务 我正在使用一个方便的软件包,尽管在这个特定的软件包上没有太多的示例或支持 我的代码是:从PHP脚本注册SIP,php,sip,voip,sip-server,Php,Sip,Voip,Sip Server,目标:使用LAMP服务器注册为SIP服务器,并将端点注册到SIP服务器 原因:在某个特定分机与PHP CRM交互时拦截该分机的电话呼叫 SIP服务器没有使用星号,因为必须使其具有足够的通用性来处理任何SIP服务 我正在使用一个方便的软件包,尽管在这个特定的软件包上没有太多的示例或支持 我的代码是: $api1 = new PhpSIP('x.x.x.x'); //My Servers public IP $api1->setMethod('REGISTER'); $api1-&
$api1 = new PhpSIP('x.x.x.x'); //My Servers public IP
$api1->setMethod('REGISTER');
$api1->setFrom('sip:111@my-dns.com');
$api1->setUri('sip:111@sip-server.com');
$api1->setUsername('12345');
$api1->setPassword('abc123');
$res = $api1->send();
代码执行成功,创建一个套接字(和一个锁文件),绑定到一个端口,并假设向SIP服务器发送一个UDP数据包。。。尽管如此,当我运行tcpdump
时,我没有看到任何UDP数据包到达目标服务器的端口5060或5061
代码将运行10秒钟,同时等待SIP服务器的回复,因为它应该返回404响应。但从来没有
当然,我还禁用了防火墙
有没有人有使用PHP注册SIP端点的经验
有更好的方法吗?我的建议是添加一个try…catch,看看在你的日常生活中会发生什么
try {
$api1 = new PhpSIP('x.x.x.x'); //My Servers public IP
$api1->setMethod('REGISTER');
$api1->setFrom('sip:111@my-dns.com');
$api1->setUri('sip:111@sip-server.com');
$api1->setUsername('12345');
$api1->setPassword('abc123');
$res = $api1->send();
echo "res: $res\n";
} catch (Exception $e) {
echo $e->getMessage()."\n"; }
但是,如果您使用的是SIP电话,另一个解决方案是尝试使用动作URL/活动URI。这里有一个很好的方法来了解如何使用它们 结果是,
@sip server.com
实际上不是一个活动的sip服务器
它更像是需要ping的@sip.sip server.com
,一旦发生了变化,一切都按预期进行
谢谢。谢谢。很抱歉,我有一个try-catch块包装,我只是没有包括它。我设法弄明白了——噢——这是个愚蠢的错误。