php - Asterisk AMI 返回不正确的数据
问题描述
运行时:
asterisk*CLI>queue show <queue-name>
从终端我得到预期的输出(在这种情况下,我期望在返回的信息中得到A:2 。
但是当我通过同一服务器上的 PHP 套接字连接到 AMI 时,我得到A:0(信息没有正确填充)。
$data = '';
$socket = fsocketopen('127.0.0.1', '5038');
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: username\r\n");
fputs($socket, "Secret: password\r\n\r\n");
fputs($socket, "Action: QueueStatus\r\n");
fputs($socket, "Action: Logoff\r\n\r\n");
while(!feof($socket)) {
$data .= fread($socket, 8192);
}
fclose($socket);
$data = trim($data); // This string contains A:0 where I would expect A:2.
正在使用的 AMI 用户在 manager.conf 中具有正确的读取权限,并且已成功验证。
[username]
secret = password
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,all
write = system,call,log,verbose,command,agent,user,all
我的问题是,为什么 AMI 返回的信息与控制台返回的信息不同?
附带说明一下,使用 AMI 运行时也会出现此问题:
asterisk*CLI>sip show peers
控制台正在返回正确的信息,而 AMI 正在为每个 IP 地址返回(未指定) 。
解决方案
于是我的系统管理员看了看。似乎机器在端口 5038 上保留了一个较旧的 Asterisk 进程。在终止该进程并再次启动 Asterisk 后,AMI 成功地能够检索到正确的信息。
推荐阅读
- reactjs - 反应表单动画
- r - 在 Shiny 模块中使用 shinyWidgets selectizeGroupUI
- html - 更改 URL 中的 XML SVG 填充
- c# - 尝试运行本地函数 C# 后没有结果
- nginx - Nginx 代理通行证,没有 proxy_pass 上的位置 url
- python - Graphviz(DOT)预览不起作用VSCode
- c++ - g++ --version 失败,但显示 g++ 已经安装
- java - 如何在 Quarkus 中使用日期作为 @PathParam 在 REST API 中使用 GET METHOD 检索资源(对象)
- python - 为什么 re.split 中空列表的长度不是 0
- c# - Unity 定时器重置