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  |
+--------+-------+

см. также

Asterisk: функции диалплана

  • asterisk/func/realtime_field.txt
  • Последние изменения: 2020/04/29