Страница 1 из 1
Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 15:53
Vadruz
Господа, как можно реализовать случайный выбор музыкального файла из определенной директории?
Чувствую что делается это не сложно, но докопаться не смог
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 15:54
Wapo
В musiconhold.conf прописать класс музыки-папку и sort random
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 16:15
Vadruz
Это, я так понимаю, для воспроизведения рандомной музыки для холда. У меня другая цель: при прохождении ivr используя определенный донабор заставлять астериск проигрывать файлы из определенной директории...
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 16:21
Vadruz
Т.е. при нажатии "2" звонящий должен услышать воспроизведение любого файла:
exten => 2,1,Playback(любой файл из /var/lib/asterisk/sounds/custom)
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 16:33
dmitriy.tarasov
Мир вам.
Не знаю, может быть есть какое-то более изящное решение, но:
можно названия файлов задавать с использованием переменной, значение которой выбирается с использованием функции SHELL, в которой нужно использовать /dev/random. Нужно просто (для простоты) дать файлам цифровые названия и вывод /dev/random формировать в этом диапазоне значений.
А дальше - просто использовать Playback / Background и значение названия будет меняться каждый раз.
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 17:51
Vadruz
Ваше мнение, стоит ли покапаться в направлении таком:
при определенном донаборе заставить заставить астериск проигрывать hold, ну а как сделать случайную выборку музыки для холда известно как. Остается разобраться как принудительно проигрыть холд. Править его я могу, т.к. в обычном формате он у меня не используется и не будет нужен...
Или туповатая идея?
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 18:40
gosha
Код: Выделить всё
exten => _X.,1,Set(FILE=${SHELL( perl -e '$_=( sort {rand(1000)<=>rand(1000)} glob("/var/lib/asterisk/sounds/custom/*.*") )[0]\;chomp\; s#\.(\w+)$##\; print' )})
exten => _X.,n,Playback(${FILE})
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 19:32
ded
А зачем шелл и перл? У Астериска есть функция
Код: Выделить всё
*CLI>
-= Info about function 'RAND' =-
[Syntax]
RAND([min][,max])
[Synopsis]
Choose a random number in a range
[Description]
Choose a random number between min and max. Min defaults to 0, if not
specified, while max defaults to RAND_MAX (2147483647 on many systems).
Example: Set(junky=${RAND(1,8)});
Sets junky to a random number between 1 and 8, inclusive.
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 21:11
gosha
автор говорил, что файлы у него вида 0...2147483647 ? даже если предположить переимменовать то потом поддерживать ( удаление/добавление фойлов ) это будед адом.
Re: Случайный выбор музыкального файла
Добавлено: 21 ноя 2013, 21:59
ded
Так это уже ад!
Ужисть, ужисть!