AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Ast 1.8 cdr в pgsql через ODBC

Asterisk IP PBX 14 сообщений -
#1

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)
#2

Для диагностики odbc есть isql.
Что говорит например echo 'select * from pg_stat_activity' | isql -v asterisk-connector ?
#3

Сказало вот такое ... это нормально?
Код:

+---------------------------------------+
| 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 года
#4

Ага. тогда предлагаю в logger.conf вкрутить debug в консоль, сказать logger restart
и попробовать совершить звонок. тогда скорее всего будет видно, какой запрос он пытаеся выполнить

Да, и чтобы далеко не ходить:
в psql ast ast
\d ast
\z ast
#5

Код:

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.
#6

В cdr_odbc.conf поменяйте dsn на ast
#7

Спасибо добр человек ... Заработало накнецто, посыпались записи в базу даных.
#8

спасибо помогло!!! для ODBC для ORACLE
#9

oracle_config.sql в asterisk 1.8.x


Здравствуте! По правилам форума не имею возможности создать новую тему.
Меня интересует грамотная разметка таблицы queue_log для oracle, похожие "екзамплы" для mysql и postresql распространяются с дистрибутивом в каталоге contrib/realtime/(база), однако каталог oracle пуст.
Возможно кто-либо сталкивался? Спасибо!
#10

Они ничем не отличаются от того же mysql
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#11

Wapo, а в новых версиях asterisk'a таблица queue_log осталась?? В дистрибутивах старше 11, нет разметки queue_log даже для mysql...
У меня еще вопрос: 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.. В чем может быть проблема?
#12

И в 11 версии структура такая же как в 1.8 -
Код:

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-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#13

У меня 1.8, queue_log как у Вас, однако имеет место быть ошибка.. CDR при этом заполняется нормально, а queue_log c WARNING'ами.
#14

Поищите по этому форуму - когда-то проскакивала инфа о неких ошибках. Что-то было связано с размерностью (точно не помню).
И еще.
Попробуйте взять строку из queue_log-текстового и вручную ее инсертить в вашу БД через одбс.

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.