function 'DB'
Функция Asterisk: читает или записывает во внутреннюю БД Asterisk (astdb.sqlite3).
Описание
Данная функция может читать или записывать значения в базу данных Asterisk.
В режиме чтения, функция возвращает соответствующее значение из БД в переменную DB_RESULT,
или ничего, если не существует. Чтобы убедиться, что запись существует, используйте функцию function 'DB_EXISTS'.
Синтаксис
DB(family/key)
Пример set value
exten => s,1,set(DB(NAME/${value1})=${value2})
Переадресация с внешним CallerID при помощи диалплана
Назначение
Подстановка CallerID внешнего абонента при переадресации принятого вызова на другой внутренний номер.
Описание
В данном примере, функция DB вычисляет длину CallerID вызывающего абонента и если длина более 3-х знаков,
определяет callerid, как внешний и устанавливает его для передачи в качестве CallerID внутреннего абонента, если вызов, в дальнейшем, будет переадресован.
По завершении вызова, фальшивое CALLTRACE очищается при помощи функции DB_DELETE.
(опция 'e', команды Dial, указывает выполнить расширение 'h', по завершению вызова.)
В примере: внутренние номера 1ХХ, вызовы из контекста [from-internal]
[from-internal] exten => _1XX,1,Noop(+++set external callerid +++) exten => _1XX,n,GoSub(sub-transfer_external_cid,${EXTEN},1(${CALLERID(num)},${EXTEN}))
[sub-transfer_external_cid] exten => _XXX,1,Noop(~~~http://asterisk-pbx.ru~~~) exten => _XXX,n,Set(cidint=${ARG1}) exten => _XXX,n,GotoIf($[${LEN(${DB(CALLTRACE/${ARG1})})} > 3]?external:internal) exten => _XXX,n(external),Set(CALLERID(num)=${DB(CALLTRACE/${ARG1})}) exten => _XXX,n,Dial(SIP/${ARG2},,Tte) exten => _XXX,n(internal),Dial(SIP/${ARG2},,Tteo) exten => h,1,Set(DB_DELETE(CALLTRACE/${cidint})=ignored)
См. также Option app DIAL(,,o)