Собственно с mysql вопросов нет делаю все вот так: exten => s,1,MYSQL(Connect connid 192.168.1.33 root test test) ;подключаемся к базе exten => s,n,MYSQL(Query resultid ${connid} SELECT color FROM car WHERE numcar=456) ; сам запрос exten => s,n,MYSQL(Fetch fetchid ${resultid} RESULT) exten => s,n,MYSQL(Clear ${resultid}) exten => s,n,MYSQL(Disconnect ${connid})
тут все понятно, в моем триксбоксе есть команда isql значит драйвер для firebird присутствует,
Теперь сам вопрос как мне совершить запрос в БД firebird? непосредственно из контекста, нигде информацию не могу найти по этому.
рекомендуемый способ такой(причем для мускл тоже) 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
а самое главное в этом то, что за конектом и пулами конектов следит сам астриск.и память тоже он освобождает.
ответил 2011-01-26 08:01:39 +0400
Этот пост - вики. Любой с кармой >300 может улучшить его.
короче я так и не разобрался, просто сказал разработчикам чтобы они переходили на mysql а то с этим firebird уж очень много косяков, да и сама БД какаято не правильная:)
вот тут есть пример
Задан: 2011-01-25 17:28:59 +0400
Просмотрен: 882 раз
Обновлен: Jan 28 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.