ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Запись {CDR(answer)} в CDR MYSQL

Проблемы и их решения Asterisk как такового

Модераторы: april22, Zavr2008

Запись {CDR(answer)} в CDR MYSQL

Сообщение Ferrum » 29 май 2017, 15:15

Интересует возможность записи в штатную таблицу CDR в БД Mysql, значения answer не прибегая к переменным в диалплане, это возможно сделать ?

На данный момент структура базы такая:
Код: выделить все
CREATE TABLE `cdr` (
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`userfield` varchar(255) NOT NULL default ''
);

ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );


Может есть столбец который просто надо добавить ?
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение ded » 29 май 2017, 15:31

По умолчанию всегда есть два столбца, которые можно использовать по усмотрению как угодно: userfield & accountcode
ded
 
Сообщений: 15823
Зарегистрирован: 26 авг 2010, 19:00

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение zzuz » 29 май 2017, 15:32

значения answer
- что Вы под этим подразумеваете ?
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1658
Зарегистрирован: 21 сен 2010, 13:33

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение Ferrum » 29 май 2017, 15:44

ded писал(а):По умолчанию всегда есть два столбца, которые можно использовать по усмотрению как угодно: userfield & accountcode


Про это я знаю, но тут получаеться через переменные в диалплане, {CDR(answer)} мы к примеру записываем в userfield, меня интересует есть ли альтернативный путь, просто тут я некий костыль вижу.
Последний раз редактировалось Ferrum 29 май 2017, 15:48, всего редактировалось 1 раз.
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение Ferrum » 29 май 2017, 15:45

zzuz писал(а):
значения answer
- что Вы под этим подразумеваете ?

Время ответа на вызов абонентом или ответ приложения. auto, R/O
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение ded » 29 май 2017, 15:51

В таком разе ваша посылка Запись {CDR(answer)} в CDR отобразиться в столбце disposition. Думаю, что CDR не даст туда писать ваше собственное значение.
ded
 
Сообщений: 15823
Зарегистрирован: 26 авг 2010, 19:00

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение Ferrum » 29 май 2017, 16:02

Может я как то не очень понятно выразился, в CDR есть значения:
Код: выделить все
start    Время поступления вызова вызова. auto, R/O
answer   Время ответа на вызов абонентом или ответ приложения. auto, R/O
end      Время окончания соединения.Hangup. auto, R/O


По факту в БД Mysql пишется start это столбец calldate datetime, есть ли возможность увидеть значение answer, не прибегая к установки переменных в диалплан, мне просто кажется странным что разработчик не сделал запись таких важных полей в базу по умолчанию.
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение fecyt » 29 май 2017, 16:40

Ну, как бы такое поле есть, CDR(answer)
https://wiki.asterisk.org/wiki/display/ ... +Variables

P.S. В базу писаться должно.
P.S. Если у Вас, конечно, есть столбец answer
fecyt
 
Сообщений: 148
Зарегистрирован: 17 янв 2017, 18:51

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение Ferrum » 29 май 2017, 19:12

Запрос от астериска в бд такой, посмотрел с помощью tcpdump
Код: выделить все
INSERT INTO cdr (`calldate`,`clid`,`src`,`dst`,`dcontext`,`channel`,`lastapp`,`lastdata`,`duration`,`billsec`,`disposition`,`amaflags`,`uniqueid`)

Никакого answer там нет, эти переменные cdr и модуль который их записывает в бд немного разные вещи.
Аватар пользователя
Ferrum
 
Сообщений: 333
Зарегистрирован: 25 ноя 2011, 15:16

Re: Запись {CDR(answer)} в CDR MYSQL

Сообщение ded » 29 май 2017, 19:24

судя по этому INSERT в базу пишутся уже результаты
`duration` = endtime - startime
`billsec` = endtime - answertime

Но сами то значения эти есть в течение совершения звонка, так что можно выцепить.
NoOp(Show me ${CDR(answer)})

Dumpchan вам в помощь
ded
 
Сообщений: 15823
Зарегистрирован: 26 авг 2010, 19:00

След.

Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH