Perl 如何在AGI脚本中播放多个文件?

Perl 如何在AGI脚本中播放多个文件?,perl,asterisk,telephony,Perl,Asterisk,Telephony,我可以使用以下方式将多个文件流式传输到一起: $AGI->exec('Background',"file1&file2&file3&file4") 但是,这不会返回播放文件时用户按下的键。因此,我使用了$AGI->stream_file,它返回按下的键,但只播放一个文件 我需要能够一起播放多个文件,播放应该在用户按下一个键时停止,我应该知道按下了哪个键 如何实现这一点?这应该可以: my $keyPress; # fill in your filenames as

我可以使用以下方式将多个文件流式传输到一起:

$AGI->exec('Background',"file1&file2&file3&file4")
但是,这不会返回播放文件时用户按下的键。因此,我使用了
$AGI->stream_file
,它返回按下的键,但只播放一个文件

我需要能够一起播放多个文件,播放应该在用户按下一个键时停止,我应该知道按下了哪个键

如何实现这一点?

这应该可以:

my $keyPress;
# fill in your filenames as appropriate...
foreach my $file (qw(file1 file2 file3))
{
    $keyPress = $AGI->stream_file($file);
    last if $keyPress;
}

# by this point, $keyPress will contain what key was pressed,
# 0 if all files played to completion, or -1 if a hangup occurred
# (as per the documentation).

您可以将代码缩短一点(例如,将循环收紧为do/while),但这种方式可读性很强。

后台命令等待用户输入扩展名并自动将其发送到那里,如果不存在,则发送到i扩展名

改用Read命令;Read将把用户密钥存储到变量中:

读取(SomeVar,文件1,10);将最多10位数字读入SomeVar SayDigits(${SomeVar})


我认为Asterisk现在支持Read命令中的file1和file2内容,但我不知道是什么版本,因为它是这样工作的。

您运行的Asterisk是什么版本?