Упростил проблему до такого примера:
- Код: выделить все
[incoming]
exten => _X.,1,Set(CDR(userfield)=test1)
same => n,Dial(SIP/500000/89610000000,120,tT)
exten => h,1,Set(CDR(is_incoming)=1)
same => n,Set(CDR(userfield)=test2)
В итоге в таблицу попадает запись userfield=test1, а is_incoming=0 (0 - значение по умолчанию для этого поля).
Asterisk 13.1.0~dfsg-1.1ubuntu4
Настроено через ODBC.
- Код: выделить все
/etc/asterisk/cdr.conf
[general]
enable=yes
unanswered=yes
В логах ошибок нет.
- Код: выделить все
/etc/asterisk/cdr_adaptive_odbc.conf
[global]
dsn=asterisk
dispositionstring=yes
connection=asterisk
loguniqueid=yes
table=cdr
alias is_incoming => is_incoming
alias in_callerid => in_callerid
alias userfield => userfield
alias start => calldate
Добавил на всякий случай alias is_incoming => is_incoming и alias userfield => userfield.
Что еще сказать. Пользовательских полей несколько, все они пишутся успешно при вызовах до того как положили трубку. В exten => h уже не пишутся.
- Код: выделить все
ats-asterisk*CLI> odbc show
ODBC DSN Settings
-----------------
Name: asterisk
DSN: MySQL-asterisk
Last connection attempt: 1970-01-01 07:00:00
Pooled: No
Connected: Yes
В чем причина? На другом сервере пишется нормально в h, но там старая 11 версия Астериска. Настройки сверил - одинаковые по этим пунктам.