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)

 

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

  • asterisk/func/db.txt
  • Последние изменения: 2018/06/30