Добрый день,
Есть следующая проблема - Астериск наотрез отказывается сохранять custom поля CDR в БД, кроме тех которые в дефолтовой схеме. Перепробовал все варианты.
Пример лога вызова:
<Local/104@extenreceive-00000251;2>AGI Rx << EXEC "Set" "CDR(operatorstatus)="LOGGED_IN""
-- AGI Script Executing Application: (Set) Options: (CDR(operatorstatus)=LOGGED_IN)
-- <Local/104@dialsipexten-00000250;2>AGI Script /usr/bin/php completed, returning 0
после разъединения:
[INSERT INTO cdr ("calldate","clid","src","dst","dcontext","channel","dstchannel","lastapp",
"lastdata","duration","billsec","disposition","accountcode","uniqueid","userfield",
"peeraccount","linkedid","sequence","transferred_from","amaflags")
VALUES ('2013-08-10 16:20:33','"замылено" <замылено>','замылено','104','extenreceive',
'Local/104@extenreceive-00000251;2','SIP/000104 000001ff','Dial','SIP/000104,40,mt',3,0,'NO ANSWER',
'','1376137233.1700','','','1376137229.1696',1923,'','DOCUMENTATION')]
Этого поля соответственно нет.
Моя схема (PostgreSQL):
CREATE TYPE vpbx_calldirection AS ENUM (
'int-int',
'int-ext',
'ext-int',
'ext-ext',
'features',
'unknown-unknown'
);
CREATE TYPE vpbx_calltype AS ENUM (
'incoming',
'outgoing',
'forwarded',
'unanswered'
);
CREATE TYPE vpbx_operatorstatus AS ENUM (
'ABSENT',
'LOGGED_IN',
'AWAY_SHORT',
'AWAY_LUNCH'
);
CREATE TABLE cdr (
id integer NOT NULL,
calldate timestamp without time zone NOT NULL,
clid character varying(80) NOT NULL,
src character varying(80) NOT NULL,
dst character varying(80) NOT NULL,
dcontext character varying(80) NOT NULL,
channel character varying(80) NOT NULL,
dstchannel character varying(80) NOT NULL,
lastapp character varying(80) NOT NULL,
lastdata character varying NOT NULL,
duration integer NOT NULL,
billsec integer NOT NULL,
disposition character varying(45) NOT NULL,
accountcode character varying(20) NOT NULL,
uniqueid character varying(150) NOT NULL,
userfield character varying(255) NOT NULL,
peeraccount character varying(20) NOT NULL,
linkedid character varying(150) NOT NULL,
sequence integer NOT NULL,
transferred_from character varying(50) NOT NULL,
src_id integer,
dst_id integer,
call_type vpbx_calltype,
call_direction vpbx_calldirection DEFAULT 'unknown-unknown'::vpbx_calldirection NOT NULL,
recorded_call_ref integer,
record_duration integer DEFAULT 0 NOT NULL,
amaflags character varying(15),
pstn_num_incoming integer,
srcname character varying(80) DEFAULT ''::character varying,
dstname character varying(80) DEFAULT ''::character varying,
calleridname character varying(80) DEFAULT ''::character varying,
operatorstatus vpbx_operatorstatus
);
В cdr.conf:
[general]
enable=yes
unanswered = yes
congestion = yes
loguniqueid=yes
loguserfield=yes
[pgsql]
loguniqueid=yes
loguserfield=yes
в cdr_pgsql.conf:
[global]
hostname=localhost
port=5432
dbname=dbuser
password=dbuser
user=dbuser
table=cdr
encoding=UTF8
Возможно кто-то сталкивался... Буду очень признателен.
Задан: 2013-08-10 17:12:14 +0400
Просмотрен: 551 раз
Обновлен: Aug 10 '13
Как сделать выброку CDR через Realtime
Elastix 2.3, FreePBX 2.10, cdr по DID - как подружить ?
userfield и пропущенные вызовы в очереди
Собственная статистика в Asterisk (Elastix)
Freepbx 2.10 модуль CDR Reports
Как настроить запись CDR (писать только нужные звонки)
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
поиск юзайте.
meral ( 2013-08-10 17:41:03 +0400 )редактироватьдействительно - по рекомендации данной ранее в другом ответе заработало. для этого пришлось перегрузить Астер (core restart now). Что удивительно и в чем оказалась причина проблемы - "core reload" не помогало для данной задачи, только жесткий рестарт. спасибо за ответ :-)
octopas ( 2013-08-10 21:01:41 +0400 )редактировать