AstDB является частью Asterisk и устанавливается вместе с ним. Это простая БД (Barkley DB версии 1), без всяких заморочек. Если нужно подключить к Asterisk БД MySQL или PosrgreSQL - это тоже можно сделать, но для несложных задач вполне хватит и AstDB.
Предположим, у нас уже настроен GSM-модем в Asterisk - например, как я описывал здесь для модемов Huawei - и мы хотим звонить на мобильные номера наших абонентов (к примеру, в не рабочее время, когда они находятся вне доступа к SIP телефонам).
Хранится информация в БД с помощью трех понятий - семейство, ключ и значение. Семейство - это аналог таблицы, в которой хранятся пары ключ-значение.
Для начала, нам необходимо наполнить нашу БД номерами. Сделать это можно в процессе диалплана командой вроде:
exten => s,n,Set(DB(mobile/1112)=0991111111)
Здесь мы создаем (или модифицируем, если таковой ключ уже есть) ключ 1112 - SIP-номер для нашего абонента, в моем примере - в семейтве mobile. И присваиваем ему номер мобильного для этого абонента.
Но для большого количества абонентов делать такое не есть хорошо, тем более что БД хранит данные и после перезапуска Asterisk и после перезагрузки сервера. Потому, целесообразнее - для моего примера - заранее заполнить БД данными из командной строки Asterisk.
Добавление/модификация значений:
database put <семейство> <ключ> <значение>
Пример: database put mobile 1112 0991111111
Для просмотра информации имеем команду:
database get <семейство> <ключ>
а также для просмотра всей БД:
database show
В плане набора (dialplan) пишем следующее:
...
; Вызываем макрос для дозвона по GSM, передавая ему SIP номер абонента как аргумент
exten => _1XXX,n,Macro(dial-mobile,${EXTEN})
....
[macro-dial-mobile]
; Вытаскиваем из БД значение номера для нужного абонента
; и помещаем в его переменную MobNumber
exten => 1,1(mobile),Set(MobNumber=${DB(mobile/${ARG1})})
; Звоним через GSM-модем
exten => 1,n,Dial(Dongle/dongle0/${MobNumber},100,dmghHtT)
...
Предположим, у нас уже настроен GSM-модем в Asterisk - например, как я описывал здесь для модемов Huawei - и мы хотим звонить на мобильные номера наших абонентов (к примеру, в не рабочее время, когда они находятся вне доступа к SIP телефонам).
Хранится информация в БД с помощью трех понятий - семейство, ключ и значение. Семейство - это аналог таблицы, в которой хранятся пары ключ-значение.
Для начала, нам необходимо наполнить нашу БД номерами. Сделать это можно в процессе диалплана командой вроде:
exten => s,n,Set(DB(mobile/1112)=0991111111)
Здесь мы создаем (или модифицируем, если таковой ключ уже есть) ключ 1112 - SIP-номер для нашего абонента, в моем примере - в семейтве mobile. И присваиваем ему номер мобильного для этого абонента.
Но для большого количества абонентов делать такое не есть хорошо, тем более что БД хранит данные и после перезапуска Asterisk и после перезагрузки сервера. Потому, целесообразнее - для моего примера - заранее заполнить БД данными из командной строки Asterisk.
Добавление/модификация значений:
database put <семейство> <ключ> <значение>
Пример: database put mobile 1112 0991111111
Для просмотра информации имеем команду:
database get <семейство> <ключ>
а также для просмотра всей БД:
database show
В плане набора (dialplan) пишем следующее:
...
; Вызываем макрос для дозвона по GSM, передавая ему SIP номер абонента как аргумент
exten => _1XXX,n,Macro(dial-mobile,${EXTEN})
....
[macro-dial-mobile]
; Вытаскиваем из БД значение номера для нужного абонента
; и помещаем в его переменную MobNumber
exten => 1,1(mobile),Set(MobNumber=${DB(mobile/${ARG1})})
; Звоним через GSM-модем
exten => 1,n,Dial(Dongle/dongle0/${MobNumber},100,dmghHtT)
...
Вот в общем-то и всё.