[英]Need some PHP help filtering socket data from an Asterisk PBX
請原諒我的無知。 我有一些PHP代碼可以打開AMI套接字,並為特定的網橋創建ConfBridgeList(8888)。 這一切都很好,但是我需要過濾僅顯示給CallerIDName的信息,以便可以看到參與者名稱的完整列表。 經過數天的搜索和使用,與開始時相比,我沒有比這更近了。 我根本不嫁給桌子。 一個簡單的名字列表就可以了。 相關代碼:
<?php
$ami = fsockopen("127.0.0.1", 5038, $errno, $errstr);
if (!$ami) {
echo "ERROR: $errno - $errstr<br />\n";
} else {
fwrite($ami, "Action: Login\r\nUsername: someuser\r\nSecret: somesecret\r\nEvents: off\r\n\r\n");
fwrite($ami, "Action: ConfbridgeList\r\nConference: 8888\r\n\r\n");
sleep(1);
$record = fread($ami,1024);
$record = explode("\r\n", $record);
echo "<META HTTP-EQUIV=Refresh CONTENT=\"20\">";
echo "<table border=\"1\" style='color: black;'>";
foreach($record as $value){
if(!strlen(stristr($value,'Asterisk'))>0
&& !strlen(stristr($value,'Response'))>0
&& !strlen(stristr($value,'Message'))>0
&& !strlen(stristr($value,'Event'))>0
&& strlen(strpos($value,' '))>0)
php_table($value);;
}
echo "</table>";
fclose($ami);
}
function php_table($value){
$row1 = true;
$value = explode(" ", $value);
foreach($value as $field){
if($row1){
echo "<tr><td>".$field."</td>";
$row1 = false;
}
else{
echo "<td>".$field."</td></tr>";
$row1 = true;
}
}
}
?>
返回:
會議:8888
來電顯示號碼:8000
CallerIDName:雷穆斯叔叔
頻道:SIP / 8000-000001c6
管理員:否
MarkedUser:否
靜音:否
ListItems:1
在此示例中,我只希望看到“ Remus叔叔”。 感謝您的幫助。 謝謝! 拍...
function php_table($value){
$row1 = true;
$value = explode(" ", $value);
foreach($value as $field){
$tmp = explode(':', $field);
if (tmp[0] == 'CallerIDName'){
echo $tmp[1];
}
}
}
它有用嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.