Страница 1 из 1

Проблемы с записью в базу MySQL

Добавлено: 19 окт 2011, 16:01
shumiloff
В базу пишется UNIQUEID звонка. Звонок пишется через MixMonitor в файл с именем ${UNIQUEID}.wav

Код: Выделить всё

;internal numbers
exten => _1XXX,1,NoOp(${EXTEN})
exten => _1XXX,n,Set(fname=${UNIQUEID})
exten => _1XXX,n,MixMonitor(/home/audio/${fname}.wav)
exten => _1XXX,n,Dial(SIP/${EXTEN},,rT)
exten => _1XXX,n,Hangup
Проблема заключается в том, что при переадресации записывается новый файл с новым UNIQUEID, а в базе добавляется запись со старым UNIQUEID. Если же добавить строку

Код: Выделить всё

exten => _1XXX,n,Set(CDR(uniqueid)=${UNIQUEID})
то в логе получаем сообщение об ошибке:

Код: Выделить всё

    -- Executing [1038@office:4] Set("SIP/1020-00000378", "CDR(uniqueid)=1319008611.892") in new stack
[Oct 19 13:16:51] ERROR[57917]: cdr.c:311 ast_cdr_setvar: Attempt to set the 'uniqueid' read-only variable!.
В базе получаем две строки с одинаковыми uniqueid:
src dst uniqueid
777 1020 1319008597.890
777 1038 1319008597.890

В то время как при переадресации инициализируется новый вызов, у которого uniqueid = 1319008611.892.

Настройки mysql_cdr:

Код: Выделить всё

[root@ats01:/usr/local/etc/asterisk]# egrep -v "^;" cdr_mysql.conf
[global]
hostname=host
dbname=asterisk
table=cdr
password=password
user=username
port=3306

[columns]
alias start => calldate
alias callerid => clid
alias src => src
alias dst => dst
alias dcontext => dcontext
alias channel => channel
alias dstchannel => dstchannel
alias lastapp => lastapp
alias lastdata => lastdata
alias duration => duration
alias billsec => billsec
alias disposition => disposition
alias amaflags => amaflags
alias accountcode => accountcode
alias userfield => userfield
alias uniqueid => uniqueid
Есть ли возможность сделать так, чтобы в базу писались актуальные uniqueid при редиректе?

Код: Выделить всё

[root@ats01:/usr/local/etc/asterisk]# uname -a
FreeBSD youdontneedmyhosname 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011     root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
[root@ats01:/usr/local/etc/asterisk]# pkg_info | grep aster
asterisk16-1.6.2.17 An Open Source PBX and telephony toolkit
asterisk16-addons-1.6.2.3_1 GPL modules for the Asterisk Open Source PBX

Re: Проблемы с записью в базу MySQL

Добавлено: 19 окт 2011, 21:41
noize
воспользоваться ODBC

Re: Проблемы с записью в базу MySQL

Добавлено: 19 окт 2011, 22:00
zzuz
Решение - писать в отдельную таблицу .
Вы же поняли о чем вам говорится "[Oct 19 13:16:51] ERROR[57917]: cdr.c:311 ast_cdr_setvar: Attempt to set the 'uniqueid' read-only variable!." ? Или решили проигнорировать?

Re: Проблемы с записью в базу MySQL

Добавлено: 20 окт 2011, 10:08
Obi Van
noize писал(а):воспользоваться ODBC
Вот например у меня. Есть астериск 1.8.8, есть куча баз в мускуле. Всё пишется как надо и куда надо. Вопрос в том нужно ли мне использовать ODBC? :|

Re: Проблемы с записью в базу MySQL

Добавлено: 08 ноя 2011, 16:28
shumiloff
Кажется, я понял, в чём причина проблемы.

В описании экстенжна у меня есть старт микс монитора. Соответственно, если звонок пришёл например, на номер 1010, а абонент его переводит на номер 1020, то в экстенжене 1020 опять запускается MixMonitor, соответственно, создаётся новый файл с новым uniqueid в качестве имени. Если вместо редиректа я сделаю например, Goto на приоритет, который находится после вызова процедуры MixMonitor, то файл будет продолжать записываться старый, со старым id, который как раз и находится в базе. В принципе это устраивает. Теперь вопрос - как в выполняющемся экстенжне узнать - был ли он переадресован и откуда? Есть такая возможность?

Примерная логика: Если вызов инициирован абонентом, то Goto приоритет, в котором запускается MixMonitor, если же он был переадресован, то Goto на один приоритет дальше, чтобы не запускать MixMonitor.

Re: Проблемы с записью в базу MySQL

Добавлено: 08 ноя 2011, 18:21
Vlad1983
как в выполняющемся экстенжне узнать - был ли он переадресован и откуда?
проверка значений переменных ${BLINDTRANSFER} или ${TRANSFERERNAME} в зависимости от того какой вид транфера применен

Re: Проблемы с записью в базу MySQL

Добавлено: 09 ноя 2011, 13:13
shumiloff
О! Спасибо огромное! Попробую!