Asterisk* 发起回放 php 脚本,但 fwrite() 损坏管道

Asterisk* Originating a playback php script , but getting fwrite() broken pipe

你好,我正在研究 Asterisk 框架,我正在编写一个 php 脚本,我可以在 meetme 会议中为其播放语音消息。

不知为何我的 php 脚本 returns 这个错误:

ERROR[27555]: utils.c:1390 ast_careful_fwrite: fwrite() returned error: Broken pipe

这是我的 php 脚本:

<?PHP


set_time_limit(0);

$filename = $_GET['click'];

$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, 10);

 if (!$socket) { echo "$errstr ($errno)\n";
echo fgets($socket).'<br>';}

else {
 fputs($socket, "Action: Login\r\n");
 fputs($socket, "UserName: myasterisk\r\n");
 fputs($socket, "Secret: *****\r\n\r\n");
 fputs($socket, "Action: Command\r\n");
// fputs($socket, "Command: sip show peers\r\n\r\n");
 fputs($socket, "Command: meetme(2500,p)\r\n\r\n");
 fputs($socket, "Command: Playback($filename)\r\n\r\n");
 fputs($socket, "Command: Hangup()\r\n\r\n");
 fputs($socket, "Action: Logoff\r\n\r\n");

 echo fgets($socket).'<br>';

 fclose($socket);
 }
error_reporting(E_ALL);

?>

请看我错在哪里。

我如何运行将此脚本添加到我的第一优先级拨号计划中以进入meetme会议,然后通过执行此脚本播放音频?

请帮助我,将不胜感激。

请确保注销正常工作,您似乎在注销前关闭了连接。

更多详情:

http://forums.asterisk.org/viewtopic.php?f=1&t=75713

更新:

可能的问题是您没有从 AMI 套接字读取所有内容。例如尝试以下代码:

<?php

set_time_limit(0);

$filename = $_GET['click'];

$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, $timeout);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: myasterisk\r\n");
fputs($socket, "Secret: *****\r\n\r\n");
fputs($socket, "Command: meetme(2500,p)\r\n\r\n");
fputs($socket, "Command: Playback($filename)\r\n\r\n");
fputs($socket, "Command: Hangup()\r\n\r\n");
fputs($socket, "Action: Logoff\r\n\r\n");
while (!feof($socket)) {
  $wrets .= fread($socket, 8192);
}
fclose($socket);
echo <<<ASTERISKMANAGEREND
ASTERISK MANAGER OUTPUT:
$wrets
ASTERISKMANAGEREND;
?>