簡體   English   中英

需要一些PHP幫助來過濾來自Asterisk PBX的套接字數據

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM