[英]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.