Ast 1.8 cdr в pgsql через ODBC
У меня выдает ошибка ERROR[5392]: cdr_odbc.c:147 odbc_log: Unable to retrieve database handle. CDR failed.
Настройки
odbc.ini
| Код: |
| [asterisk-connector] Description = PostgreSQL connection to 'asterisk' database Driver = PostgreSQL Database = ast Servername = localhost UserName = ast Password = Port = 5432 Protocol = 7.4 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No ConnSettings = |
res_odbc.conf
| Код: |
| [ast] enabled => yes dsn => asterisk-connector username => ast password => pre-connect => yes |
res_pgsql.conf
| Код: |
| [general] dbhost=127.0.0.1 dbport=5432 dbname=ast dbuser=ast dbpass= |
cdr_odbc.conf
| Код: |
| [global] dsn=asterisk-connector username=ast password= loguniqueid=yes dispositionstring=yes ;spool=pgsql.spool table=ast ;"cdr" is default table name ;usegmtime=no ; set to "yes" to log in GMT ;hrtime=yes ;Enables microsecond accuracy with the billsec and duration fields |
pghba.conf
| Код: |
| host all all 127.0.0.1/32 trust local all all trust |
| Код: |
| ast*CLI> odbc show ODBC DSN Settings ----------------- Name: ast DSN: asterisk-connector Last connection attempt: 1970-01-01 03:00:00 Pooled: No Connected: Yes ast*CLI> cdr show status Call Detail Record (CDR) settings ---------------------------------- Logging: Enabled Mode: Simple Log unanswered calls: No * Registered Backends ------------------- ODBC csv cdr-custom Adaptive ODBC ast=> SELECT * FROM ast; id | calldate | clid | src | dst | dcontext | channel | dstchannel | lastapp | lastdata | duration | billsec | disposition | amaflags | accountcode | uniqueid | userfield ----+----------+------+-----+-----+----------+---------+------------+---------+----------+----------+---------+-------------+----------+-------------+----------+----------- (записей: 0) |
Что говорит например echo 'select * from pg_stat_activity' | isql -v asterisk-connector ?
| Код: |
| +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> +-------+---------+---------+----------+---------+-----------------------------+-------------+--------------------+-------------+------------+ | datid | datname | procpid | usesysid | usename | current_query | query_start | backend_start | client_addr | client_port| +-------+---------+---------+----------+---------+-----------------------------+-------------+--------------------+-------------+------------+ | 16397 | ast | 5391 | 16396 | ast | | | 2010-11-06 11:19:02| | -1 | | 16397 | ast | 6159 | 16396 | ast | | | 2010-11-06 11:38:01| 127.0.0.1 | 48529 | +-------+---------+---------+----------+---------+-----------------------------+-------------+--------------------+-------------+------------+ SQLRowCount returns 2 2 rows fetched |
может поля таблицы в 1.8 в cdr отличаются? Так как настраивал с книги Орели которая еще 2009 года
и попробовать совершить звонок. тогда скорее всего будет видно, какой запрос он пытаеся выполнить
Да, и чтобы далеко не ходить:
в psql ast ast
\d ast
\z ast
| Код: |
| ast=> \d ast Таблица "public.ast" Колонка | Тип | Модификаторы -------------+--------------------------+-------------------------------------------------- id | bigint | not null default nextval('ast_id_seq'::regclass) calldate | timestamp with time zone | clid | character varying(80) | src | character varying(80) | dst | character varying(80) | dcontext | character varying(80) | channel | character varying(80) | dstchannel | character varying(80) | lastapp | character varying(80) | lastdata | character varying(80) | duration | bigint | billsec | bigint | disposition | character varying(45) | amaflags | bigint | accountcode | character varying(20) | uniqueid | character varying(40) | userfield | character varying(255) | Индексы: "asterisk_cdr_id_pk" PRIMARY KEY, btree (id) |
| Код: |
| ast=> \z ast Привилегии доступа для базы данных "ast" Схема | Имя | Тип | Привилегии доступа --------+-----+---------+-------------------- public | ast | таблица | (1 запись) |
в logger.conf прописал console => notice,warning,error,debug, Рестартанул астериск в cli ничего не изменилось:
| Код: |
| ast*CLI> console dial 100@test == Console is full duplex [Nov 6 13:48:26] NOTICE[7185]: console_video.c:133 console_video_start: voice only, console video support not present -- Executing [100@test:1] Answer("Console/dsp", "") in new stack > -- Executing [100@test:2] Playback("Console/dsp", "/var/spool/asterisk/voicemail/default/1234/en/busy") in new stack -- Playing '/var/spool/asterisk/voicemail/default/1234/en/busy.gsm' (language 'en') -- Executing [100@test:3] Wait("Console/dsp", "2") in new stack -- Auto fallthrough, channel 'Console/dsp' status is 'UNKNOWN' > [Nov 6 13:48:34] ERROR[7186]: cdr_odbc.c:147 odbc_log: Unable to retrieve database handle. CDR failed. |
Меня интересует грамотная разметка таблицы queue_log для oracle, похожие "екзамплы" для mysql и postresql распространяются с дистрибутивом в каталоге contrib/realtime/(база), однако каталог oracle пуст.
Возможно кто-либо сталкивался? Спасибо!
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
У меня еще вопрос: asterisk сыпет в cli ошибку "WARNING res_config_odbc.c realtime table queue_log requires column 'data1' but that column does not exist",
при этом поля такие существуют, более того, он в них пишет. Ошибка возникает именно для полей data1,data2,data3,data4,data5.. В чем может быть проблема?
| Код: |
| CREATE TABLE `queue_log` ( `callid` char(64) default NULL, `queuename` char(64) default NULL, `agent` char(64) default NULL, `event` char(64) default NULL, `data1` char(64) default NULL, `data2` char(64) default NULL, `data3` char(64) default NULL, `data4` char(64) default NULL, `data5` char(64) default NULL, `time` varchar(32) default NULL ) |
У меня 1.8 основной и 11 для тестов
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
И еще.
Попробуйте взять строку из queue_log-текстового и вручную ее инсертить в вашу БД через одбс.
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.