Страница 1 из 1

Функция EXISTS в базе знаний asterisk.

Добавлено: 17 апр 2019, 08:42
angrom
Здравствуйте, заметил, что в базе знаний по функции EXISTS как-то не очень профессионально написана справка.
http://asterisk.ru/knowledgebase/Asterisk+func+exists

Проверяется существования чего? Файла? Переменной? Екстеншена? Или левой ноги?

Да, вполне можно проверить как минимум значение и переменной и файла. И даже переменную, содержащую путь к файлу

Например она может проверить наличие файла в каталоге, прежде чем воспроизвести звук. Это удобно использовать, когда контент динамически меняется, например:
same => n,Set(filename=/temp/file123) ; Назначаем переменной filename какой-нибудь путь к файлу
same => n,Gotoif($[${EXISTS(${filename})}]?yes:no) ; Проверяем наличие файла (переменной) и если он есть, то воспроизводим этот файл, если нет, то сообщаем пользователю об ошибке.
same => n(yes),Playback(${filename})
same => n(no),Playback(error-message)

Так же, подобный пример существует на voip-info
https://www.voip-info.org/asterisk-func-exists/

Несмотря на скудную справку эта переменная довольно полезна :)

Re: Функция EXISTS в базе знаний asterisk.

Добавлено: 17 апр 2019, 10:09
ded
Привет!

Хотите помочь? Профессионально писать документацию по Астериск? Попробуйте сначала off-line, напишите этот раздел и перешлите через личные сообщения.
Если выше желание не пропадёт со временем - дадим аккаунт в on-line.

Re: Функция EXISTS в базе знаний asterisk.

Добавлено: 17 апр 2019, 10:15
zzuz
Во-первых, EXISTS() не переменная , а функция.
Во-вторых, если сделать same => n,Set(filename=no_exists_file) , то ничего вам не проиграется, хотя условие Gotoif($[${EXISTS(${filename})}]?yes:no) отработает. Включаем голову и делаем выводы.

Когда наиграетесь в супер критика , откройте функцию STAT() для разнообразия.