VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы Asterisk без вэб-оболочек и их решения

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

Аватара пользователя
Ferrum
Сообщения: 338
Зарегистрирован: 25 ноя 2011, 15:16

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

Сообщение Ferrum »

Интересует возможность записи в штатную таблицу 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` );
Может есть столбец который просто надо добавить ?
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

По умолчанию всегда есть два столбца, которые можно использовать по усмотрению как угодно: userfield & accountcode
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

значения answer
- что Вы под этим подразумеваете ?
Линия24 - Системы Массового Телефонного Обслуживания
Аватара пользователя
Ferrum
Сообщения: 338
Зарегистрирован: 25 ноя 2011, 15:16

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

Сообщение Ferrum »

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

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

Сообщение Ferrum »

zzuz писал(а):
значения answer
- что Вы под этим подразумеваете ?
Время ответа на вызов абонентом или ответ приложения. auto, R/O
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

В таком разе ваша посылка Запись {CDR(answer)} в CDR отобразиться в столбце disposition. Думаю, что CDR не даст туда писать ваше собственное значение.
Аватара пользователя
Ferrum
Сообщения: 338
Зарегистрирован: 25 ноя 2011, 15:16

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

Сообщение Ferrum »

Может я как то не очень понятно выразился, в CDR есть значения:

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

start	 Время поступления вызова вызова. auto, R/O
answer	Время ответа на вызов абонентом или ответ приложения. auto, R/O
end		Время окончания соединения.Hangup. auto, R/O
По факту в БД Mysql пишется start это столбец calldate datetime, есть ли возможность увидеть значение answer, не прибегая к установки переменных в диалплан, мне просто кажется странным что разработчик не сделал запись таких важных полей в базу по умолчанию.
fecyt
Сообщения: 148
Зарегистрирован: 17 янв 2017, 17:51

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

Сообщение fecyt »

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

P.S. В базу писаться должно.
P.S. Если у Вас, конечно, есть столбец answer
Аватара пользователя
Ferrum
Сообщения: 338
Зарегистрирован: 25 ноя 2011, 15:16

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

Сообщение Ferrum »

Запрос от астериска в бд такой, посмотрел с помощью tcpdump

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

INSERT INTO cdr (`calldate`,`clid`,`src`,`dst`,`dcontext`,`channel`,`lastapp`,`lastdata`,`duration`,`billsec`,`disposition`,`amaflags`,`uniqueid`)
Никакого answer там нет, эти переменные cdr и модуль который их записывает в бд немного разные вещи.
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

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

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

Dumpchan вам в помощь
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH