[英]SIP Registration from PHP Script
目标:使用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端点的经验吗?
有更好的方法吗?
我的建议是添加一个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服务器。
需要更像@sip.sip-server.com
,一旦发生更改,一切都会按预期进行。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.