2013-09-18 2 views
1

В настоящее время я работаю над звездочкой. Мне нужно выполнить какое-либо действие, если файл существует, а если нет, то мне придется воспроизвести сообщение, что файл не существует.Как проверить, существует ли файл в asterisk

Так как я могу проверить если файл существует в звездочку диалплане

Благодарности

ответ

0

В диалплане, вы можете выполнить скрипт Звездочка AGI (Perl, например), чтобы проверить, если файл существует затем назначьте логическую переменную, которую позже можно будет получить в плане набора. Затем в следующем действии коммутируемого плана, вы можете управлять, как он действует (воспроизвести звуковой файл) на основе заданных переменный .. Вы можете ссылаться на звездочку Perl аг здесь: http://www.voip-info.org/wiki/view/Asterisk+perl+library

+0

Нет, AGI не выбор для нас, наш AGI находится на другой машине, и если эта машина выходит из строя, чем наши dail- план должен работать умно. Я нашел решение, функция STAT() звездочки выполнила для меня работу. –

+0

Я не знал эту функцию, это интересно :) –

1

Или вы можете сделать это

same => n,System(test -e /path/to/file) 
same => n,GotoIf($["${SYSTEMSTATUS}" = "SUCCESS"]?alabel) 

не забудьте расширение файла на имя файла

1

Даже если Мухаммад Салман Фарук упоминал ранее, здесь пример: Мы хотим играть личный запрос или общий, как запасной вариант.

same => n,Set(exists=${STAT(e,${ASTDATADIR}/sounds/custom/user-${EXTEN}.wav)}) 

STAT function возвращает 1, если файл существует, и 0, если нет. В этом случае мы проверяем некоторые файлы, которые хотим играть, используя функцию Playback. Поэтому мы должны определить весь путь к файлу. Используйте переменную ASTDATADIR, чтобы ваша система диалплана была независимой.

Чтобы играть родовое или персонализировать использование файла это:

same => n,Playback(custom/user-${IF($[ ${exists} = 1 ] ? ${EXTEN} : generic)}) 
Смежные вопросы