Страница 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
Так это уже ад!
Ужисть, ужисть!