Freeswitch FAQ:
Q: Какая разница между ${var} и $${var} в конфигурационных файлах?
- ${var} — эта переменная вычисляется, когда встречается в диалплане;
- $${var} — эта переменная вычисляется при загрузке FS или при reloadxml.
Preprocessor variables
Переменные $${var} называют препроцессорными — preprocessor variables.Чаще всего используются для установки дефолтных значений.
Эти переменные устанавливаются вручную в файле vars.xml;
Например:
<include> <X-PRE-PROCESS cmd="set" data="default_password=strongpasswordishere"/> <X-PRE-PROCESS cmd="set" data="global_codec_prefs=G722,PCMU,PCMA,GSM"/> <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,GSM"/> <X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.freeswitch.org"/> </include>
Кстати, строки с <X-PRE-PROCESS …> , где бы они не встречались, НИКОГДА не комментируются! Или оставляем, или удаляем.
Predefined variables
Отдельный тип переменных — predefined (предопределенные) переменные.
- hostname
- local_ip_v4
- local_mask_v4
- local_ip_v6
- switch_serial
- base_dir
- recordings_dir
- sound_prefix
- sounds_dir
- core_uuid
- zrtp_enabled
- nat_public_addr
- nat_private_addr
- nat_type
Эти переменные устанавливаются динамически — вычисляются, если возможно, FS’ом на основании своего окружения — и доступны в конфиге как $${variable}.
Вычисленные переменные можно увидеть в fs_cli командой:
> eval $${variable}
Также эти переменные можно использовать как значения для preprocessor переменных.