function 'REALTIME_FIELD'
Функция запроса в реальном времени. RealTime query function.
Описание
Данная функция получает одно значение -<fieldname> из БД, где
<fieldmatch> содержит значение <matchvalue>.
This function retrieves a single item, <fieldname> from the RT engine, where<fieldmatch> contains the value <matchvalue>. When written to, the
REALTIME_FIELD() function performs identically to the REALTIME() function.
Синтаксис
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 | +--------+-------+
см. также