Как воспроизвести несколько файлов в сценарии AGI?

Я могу передавать несколько файлов вместе, используя:

$AGI->exec('Background',"file1&file2&file3&file4")

Однако это не возвращает клавишу, нажатую пользователем при воспроизведении файлов. Итак, я использовал $AGI->stream_file, который возвращает нажатую клавишу, но воспроизводит только один файл.

Мне нужно иметь возможность воспроизводить несколько файлов вместе, воспроизведение должно останавливаться в тот момент, когда пользователь нажимает клавишу, и я должен знать, какая клавиша была нажата.

Как мне этого добиться?


person Community    schedule 24.08.2009    source источник
comment
Какая у вас версия Астериска?   -  person Sean Bright    schedule 24.08.2009


Ответы (2)


Это должно работать:

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), но этот способ довольно читабелен.

person Ether    schedule 24.08.2009

Команда Background ожидает, пока пользователь введет расширение, и автоматически отправляет его туда или на расширение i, если оно не существует.

Вместо этого используйте команду «Прочитать»; Read будет хранить любые пользовательские ключи в переменной:

Прочитать(SomeVar,file1,10); Считайте не более 10 цифр в SomeVar SayDigits(${SomeVar})

Я думаю, что Asterisk теперь поддерживает файлы file1 и file2 в команде Read, но я не знаю, с какой версии это работает таким образом.

person Chochos    schedule 26.08.2009