1 | изначальная версия редактировать | |
рекомендуемый способ такой(причем для мускл тоже) isql dsnname -должно конектиться. если не конектиться - ищите тчо не так. дальше. наличие isql не гарантирует коннекта. должны так же быть драйвера и настроен /etc/odbc.ini /etc/odbcinst.ini тут я вам не помогу, но это есть в документации к базе данных.
в астериске должна быть вкомпилена поддержка odbc. обычно надо unixodbc-devel для этого. v res_odbc.conf вписываете ваш дсн(БЕЗ ПАРОЛЯ)
дальше в extconf.conf вставляете
car=> odbc,ur_dsn,car
ну и добавляете все нужные таблицы. после этого у вас в диалплане будет работаь реалтайм. для одного поля все примитивно(синтакс для 1.6 может отличаться для других версий, смотрите встроеный хелп asterisk -rx "core show functions like REALT")
exten => s,n,Set(color=${REALTIME_FIELD(car,numcar,456,color)})
для более чем одного поля, смотрите в функцию REALTIME, но она возвраащет все поля, после чего надо парсить например функцией CUT.
если более одного условия, можно заюзать недокументированный баг..
exten => s,n,Set(color=${REALTIME_FIELD(car,car_class='A' and numcar,456,color)})
еквиввалентно
select color from car where car_class='A' and numcar=456
а самое главное в этом то, что за конектом и пулами конектов следит сам астриск.и память тоже он освобождает.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.