VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Начальные значения в базе

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

roms
Сообщения: 21
Зарегистрирован: 21 дек 2015, 16:41

Начальные значения в базе

Сообщение roms »

Всем хорошего настроения!

Хочу для диалплана задавать несколько начальных значений в AstDB.
Это возможно?

Все мануалы, которые я курил, рассказывают как задавать значения в AstDB из контекстов. А хочется до первого вызова любого контекста.
В секции global получается задать только константы. Попытки вписать туда операторы занесения значений в AstDB выдают ошибки.
ded
Сообщения: 15631
Зарегистрирован: 26 авг 2010, 19:00

Re: Начальные значения в базе

Сообщение ded »

Занесите руками
CLI> database put
Usage: database put <family> <key> <value>
Adds or updates an entry in the Asterisk database for
a given family, key, and value.
roms
Сообщения: 21
Зарегистрирован: 21 дек 2015, 16:41

Re: Начальные значения в базе

Сообщение roms »

Возможность внесения руками я видел.
Просто не хочется логически разрывать контент.

Если я впишу значения в файл, каждый, кто после меня будет смотреть настройки - их увидит. Конечно можно вписать это в примечаниях, тогда тоже увидят.
Но при переносе конфигурации на другую машину или восстановлении конфигурационных файлов из резервной копии на этой машине придётся делать дополнительную операцию. И помнить про неё.

Поэтому хочется вписать всё в конфиг, что бы автоматом работало во всех случаях.
Если AstDB такого не позволяет - я изобрету конечно какой-нибудь костыль. Но хочется погламурнее.
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: Начальные значения в базе

Сообщение awsswa »

Что мешает сделать bash скрипт ?
asterisk -rx "команда"
Забросили в каталог asterisk - при копировании конфигурации всё равно каталог копируете
платный суппорт по мере возможностей
roms
Сообщения: 21
Зарегистрирован: 21 дек 2015, 16:41

Re: Начальные значения в базе

Сообщение roms »

Да в принципе ничего не мешает. Просто хочется максимум логичности, минимум расползания конфига по разным файлам.
bash-скрипт ведь сам тоже не запустится. Его надо увидеть, вспомнить нафига он был написан - в настройки АТС в нормальном режиме ведь не лезешь месяцами, а то и годами.
А если другой человек будет копировать/восстанавливать - он ведь полезет изучать детали только когда сразу после копирования что-то не заработает...

Короче, я так понимаю, что с AstDB этот номер не пройдёт.
Надо lua почитать, может там возможности шире, чем в conf/ael...
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Начальные значения в базе

Сообщение zzuz »

Задавать из диалплана значения внутренней БД можно командой

Код: Выделить всё

exten => _X.,n,Set(DB(family/key)=val)
Линия24 - Системы Массового Телефонного Обслуживания
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: Начальные значения в базе

Сообщение awsswa »

Нечего вспоминать на надо
В диаплане проверили контрольный ключ - если нету, через SYSTEM запустили из каталога bash скрипт - он создаст необходимые ключи
Каталог /etc/asterisk самое главное скопировать полностью
платный суппорт по мере возможностей
roms
Сообщения: 21
Зарегистрирован: 21 дек 2015, 16:41

Re: Начальные значения в базе

Сообщение roms »

awsswa писал(а):В диаплане проверили контрольный ключ
Где его проверять?
Насколько я изучил астериск, в конфиге возможны разделы general, global, и контексты. Вся логика, все активные действия могут быть только в контекстах. А контексты могут быть вызваны только набором номера (ну или через AMI).

Т.е. мне нужно в каждом контексте, в котором могут быть использованы эти данные из AstDB, сначала поставить проверку на их существование, и если они не существуют - установить их?
Тогда и внешний скрипт не нужен, можно и напрямую.
Решение рабочее, но не очень красивое.

Я хотел сделать самым логичным способом: блок кода, выполняемый при старте. Но похоже астериск так не умеет. Буду придумывать внешнее инициализирующее действие...
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Начальные значения в базе

Сообщение Vlad1983 »

через AMI чекаете и через него же заполняете
ЛС: @rostel
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Начальные значения в базе

Сообщение zzuz »

Но похоже астериск так не умеет.
Умеет

Объявляете глобальную переменную с нужными ключами в секции global и описываете сами дефолтные ключи.

Код: Выделить всё

[globals]
DB_KEYS=key1,key2,key3 
DB_key1=val1
DB_key2=val2
DB_key3=val3

[check_keys]
exten => s,1,Set(C=1)
exten => s,n,While($["${CUT(DB_keys,\,,${C})}" != ""])
exten => s,n,Set(C=$[${C}+1])
exten => s,n,Set(KEY=${CUT(DB_keys,\,${C})})
exten => s,n,ExecIf($["${DB_EXISTS(DEFAULT/${KEY})}"]?Noop(Запись имеется):Set(DB(DEFAULT/${KEY}))=${GLOBAL(DB_${KEY})}))
exten => s,n,EndWhile()
exten => s,n,Return()
и в диаплане вызываете этот макрос

Код: Выделить всё

[context]
exten => _X.,1,GoSub(check_keys,s,1)
exten => _X.,n,....
Линия24 - Системы Массового Телефонного Обслуживания
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH