2016-10-28 70 views
-3

我想过滤来自Asterisk Manager Interface的事件,以便仅显示PHP网页上的调用和调用信息。 这是代码,它什么都不显示。我已经试过这个修改后的字符串,而正常文本循环,它效果很好。PHP从Asterisk Manager接口(AMI)修改web显示事件

<?php 

$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, 10); 
if (!$socket){ 
    echo "$errstr ($errno)\n"; 
       } 
    else{ 
fputs($socket, "action: login\r\n"); 
fputs($socket, "username: asterisk\r\n"); 
fputs($socket, "secret: zxczxc\r\n\r\n"); 
fputs($socket, "action: Waitevent\r\n"); 
$wrets=fgets($socket,128); 

while(($buffer = fgets($socket,4096)) !== false) 
    { $p1=strpos($buffer,"Newchannel"); 
    if($p1 > 0) 
    echo "Calling ID ="; 
    echo substr($buffer,$p1+4,4); 
    } 
} 
} 
?> 

这里是不用修改事件的结果:

enter image description here

+1

那么问题是什么?在你的代码中找到bug - 这里是offtopic,参见规则。 – arheops

+0

谢谢你回答我的问题。对不起,我是新手,我还不清楚。我的问题是使用while循环修改AMI事件不起作用。访问时,网页不显示任何内容。我已经试过这个循环与正常的文本文件来修改文本,它运作良好。 –

+0

没有人会为你调试,对不起。做消息输出到日志文件,输出你的行为,查看所有结果。 – arheops

回答