Добрый день.
Проблема записать сообщения голосовой почты в БД Postgresql 8.4
Настраивал по всем известной книге на русском языке.
При попытке оставить голосовое сообщение, в логе пишет такое:
.....
-- Recording the message
-- x=0, open writing: /var/spool/asterisk/voicemail/default/1002/tmp/fJd1kd format: wav49, 0x8c14ae0
-- User ended message by pressing #
-- <SIP/1001-00000003> Playing 'auth-thankyou.slin' (language 'ru')
== Parsing '/var/spool/asterisk/voicemail/default/1002/INBOX/msg0000.txt': == Found
WARNING[3927]: app_voicemail.c:3736 insert_data_cb: SQL Direct Execute failed!
WARNING[3927]: res_odbc.c:601 ast_odbc_direct_execute: SQL Execute error! Verifying connection to asterisk [asterisk-connector]...
WARNING[3927]: res_odbc.c:744 ast_odbc_sanity_check: Connection is down attempting to reconnect...
NOTICE[3927]: res_odbc.c:1480 odbc_obj_connect: Connecting asterisk
NOTICE[3927]: res_odbc.c:1510 odbc_obj_connect: res_odbc: Connected to asterisk [asterisk-connector]
WARNING[3927]: app_voicemail.c:3736 insert_data_cb: SQL Direct Execute failed!
WARNING[3927]: res_odbc.c:744 ast_odbc_sanity_check: Connection is down attempting to reconnect...
NOTICE[3927]: res_odbc.c:1480 odbc_obj_connect: Connecting asterisk
NOTICE[3927]: res_odbc.c:1510 odbc_obj_connect: res_odbc: Connected to asterisk [asterisk-connector]
WARNING[3927]: app_voicemail.c:3846 store_file: SQL Execute error!
[INSERT INTO voicemessages (dir,msgnum,recording,context,macrocontext,callerid,origtime,duration,mailboxuser,mailboxcontext,flag) VALUES (?,?,?,?,?,?,?,?,?,?,?)]
Аsterisk 1.8 собран с опцией ODBS STORAGE в разделе Voicemail Build Options.
База работает, Asterisk к ней подключается, CDR- записи пишет в БД без проблем.
Уже не знаю куда копать....
Лог СУБД:
ERROR: invalid large-object descriptor: 24741
ERROR: current transaction is aborted, commands ignored until end of transaction block
ERROR: current transaction is aborted, commands ignored until end of transaction block
LOG: could not send data to client: Обрыв канала
STATEMENT: ROLLBACK
ERROR: invalid large-object descriptor: 24742
ERROR: current transaction is aborted, commands ignored until end of transaction block
ERROR: current transaction is aborted, commands ignored until end of transaction block
LOG: could not send data to client: Обрыв канала
STATEMENT: ROLLBACK
Таблица в БД:
asterisk=> SELECT * FROM voicemessages;
uniqueid | msgnum | dir | context | macrocontext | callerid | origtime | duration | mailboxuser | mailboxcontext | recording | label | read | flag
----------+--------+-----+---------+--------------+----------+----------+----------+-------------+----------------+-----------+-------+------+------
(0 rows)
думаю проблема с полем recording, попробуй ДБ создать как ниже написано:
https://wiki.asterisk.org/wiki/display/AST/Storing+Voicemail+in+PostgreSQL+via+ODBC
таблица в базе есть? в ней есть все поля из запроса?
Все работает. Проблема была в БД. У пользователя БД asterisk не было прав SUPERUSER. Поэтому он не мог создать необходимые функции (loin,loout,..) и сам тип lo. Создавал их от пользователя postgres, но обычный юзер asterisk БД ими воспользоваться не мог. Следовательно проблема решилась, когда пользователя базы сделал суперюзером. Пробовал подарить права на функции обычному юзеру базы , но так не вышло.
Задан: 2011-08-03 18:35:07 +0400
Просмотрен: 1,083 раз
Обновлен: Aug 04 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.