Asterisk-CDR-Viewer-Mod
Asterisk-CDR-Viewer-Mod copied to clipboard
Настроить работу с pqsql
CDR исторически складываю в pgsql. Как настроить работу с pgsql?
Здесь используется подключение к базе данных через PDO, т.е. можно использовать не только mysql. Все можно настроить в config.inc.php.
Для pgsql: $db_type = 'pgsql';. Далее все также. Советую посмотреть в Google про PDO и pgsql.
Отлично! Это помогло. Но появилась ошибка: PDO::errorInfo(): Array ( [0] => 42883 [1] => 7 [2] => ОШИБКА: функция unix_timestamp(timestamp with time zone) не существует LINE 1: SELECT *, unix_timestamp(calldate) as call_timestamp FROM cd... ^ HINT: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. )
Как ее можно вылечить? Таблицы: "id,"calldate","clid","src","dst","dcontext","channel","dstchannel","lastapp","lastdata","duration","billsec","disposition","amaflags","accountcode","uniqueid","userfield","type_call","sip_a","sip_b","id_order","waittime","calltime","resultcall","peeraccount","flags","linkedid","sequence"
Попробуйте сделать, как написано в файле "Старый Readme.txt". Нужно в базе создать функцию unix_timestamp.
to use this software with postgres DB, add follow function to DB:
CREATE FUNCTION unix_timestamp(TIMESTAMP) RETURNS INTEGER AS ' SELECT date_part(''epoch'', $1)::INTEGER AS RESULT ' LANGUAGE sql; CREATE FUNCTION
Отпишитесь, если все будет работать. Потом добавлю в основной файл справки.
Сделал как в описании. получил: PDO::errorInfo(): Array ( [0] => 42883 [1] => 7 [2] => ОШИБКА: функция unix_timestamp(timestamp with time zone) не существует LINE 1: SELECT *, unix_timestamp(calldate) as call_timestamp FROM cd... ^ HINT: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. )
Проверьте, действительно ли функция unix_timestamp создалась в базе. Ошибка прежняя, эта функция отсутствует. У себя не могу проверить, т.к. используется MySQL.
Создалась. При повторном выполнении команды ошибка: ОШИБКА: функция "unix_timestamp" с аргументами таких типов уже существует CSV выгружаются.
Добрый день, все же при работе с PostgreSql и с обновленным asterisk 13+ приходится плясать с бубном касательно того что бы приложение заработало. Можно как-то исправить зависимость от того как называны столбцы в БД, так как проще поменять в конфиге приложения чем менять в asterisk на котором может быть много чего завязано. Спасибо.
Постараюсь добавить такую возможность. Но, скорее всего, не в ближайшей версии, а в следующей, после нее.
Спасибо большое.
Для работы с postgresql надо создать функцию unix_timestamp CREATE FUNCTION unix_timestamp(TIMESTAMP) RETURNS INTEGER AS ' SELECT date_part(''epoch'', $1)::INTEGER AS RESULT ' LANGUAGE sql; CREATE FUNCTION и поправить index.php все упомнинания unix_timestamp(calldate) заменем на unix_timestamp(CAST(calldate AS DATE)) и начнут отображаться записи. Лучше перед таким действием забэкапить index.php