目标:使用LAMP服务器注册为SIP服务器和端点。
原因:拦截特定分机的电话,因为它们碰巧与PHP CRM交互。
SIP服务器不使用Asterisk,因为必须使其足够通用以处理任何SIP服务。
我正在使用Level7Systems编写的一个方便的PHP SIP库 - 虽然这个特定的包没有很多例子或支持。
我的代码是:
$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();
代码执行成功,创建一个套接字(和一个锁定文件),绑定到一个端口,并据说将一个UDP数据包发送到SIP服务器...虽然,当我运行一个时,tcpdump
我看不到任何UDP数据包命中端口5060或5061到目标服务器。
代码将在等待来自SIP服务器的回复时运行10秒,因为它应该返回404响应。但它永远不会。
可以肯定的是,我也禁用了我的防火墙。
任何人都有使用PHP注册SIP端点的经验吗?
有没有更好的方法呢?
发布于 2018-09-30 15:22:59
我的建议是添加一个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。这是一个很好的指南,了解如何使用它们。
https://stackoverflow.com/questions/-100002835
复制相似问题