function 'REALTIME_FIELD'
Функция диалплана Asterisk.
Получает значение заданного поля из строки, где поле сравнения содержит указанное значение.
Описание
Данная функция получает одно значение - 'fieldname' из БД, где
'fieldmatch' содержит значение 'matchvalue'.
В режиме записи действие функции REALTIME_FIELD() аналогично function 'REALTIME'.
Синтаксис
REALTIME_FIELD(family,fieldmatch,matchvalue,fieldname)
Пример
Разрешим вызовы на VIP абонента, только с определенных номеров, где
- 4888 - привилегированный абонент
- 4ХХХ - все отстальные
/etc/asterisk/extconfig.conf
[settings] did_family => odbc,sql,did cos_family => odbc,sql,cos1
Формат - family ⇒ engine,контекст в res_odbc.conf,таблица в БД
/etc/asterisk/extensions.conf
[realtime-did] switch => Realtime/did1@did_family
Формат - switch ⇒ Realtime/контекст-в-БД@family
таблица did
+----+---------+-------+----------+---------+---------------------+ | id | context | exten | priority | app | appdata | +----+---------+-------+----------+---------+---------------------+ | 1 | did1 | _4888 | 1 | goto | cos1,${EXTEN},1 | | 2 | did1 | _4XXX | 1 | dial | PJSIP/${EXTEN},, | +----+---------+-------+----------+---------+---------------------+
Здесь вызовы на привилегированного абонента отправляются в контекст cos1,
на остальных разрешается набор.
Контекст cos1
[cos1] exten => _4XXX,1,gotoif($["${CALLERID(num)}" = "${REALTIME_FIELD(cos_family,master,${EXTEN},slave)}"]?vip:all) exten => _4XXX,n(all),verbose(DENY for ${CALLERID(num)}) exten => _4XXX,n,hangup exten => _4XXX,n(vip),verbose(ALLOW for ${REALTIME_FIELD(cos_family,master,${EXTEN},slave)}) exten => _4XXX,n,dial(PJSIP/${EXTEN},,)
В данном контексте, проверяется по таблице cos1, может ли абонент связываться с VIP абонентом.
Если CallerID присутствует в таблице, то может.
таблица cos1
+--------+-------+ | master | slave | +--------+-------+ | 4888 | 2667 | | 4888 | 2668 | +--------+-------+
см. также