First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Asterisk 1.6. Как из AMI установить значение CDR-поля userfield?

0

Раньше, до версии 1.6 был AMI Action - SetCDRUserField. Теперь такого счастья нет. Как установить значение userfield? В диалплане понятно - Set(CDR(userfield)), а как это сделать средствами AMI?

спросил Jan 26 '12

rom9 Gravatar rom9
1 1 2

5 Ответов

1

может так:

Action: SetVar 
Channel: SIP/202-0001
Variable: CDR(userfield)
Value: test

заработает?

ссылка удалить спам редактировать

ответил Jan 27 '12

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Comments

К сожалению, не работает. Причем, AMI говорит, что все "Success" и когда "Variable: CRD(userfield)", и когда просто "Variable: userfield". В гугле по этому вопросу я ничего не нашел. Вся надежда на вашу помощь...

rom9 (Jan 27 '12)edit

Попробовал установить "accountcode". Даже получил Event: NewAccountCode, но в таблице CDR-а ничего не изменилось. В 20-й раз прочитал мануал. В cdrmysql.conf установлено "userfield=1". В файле cdrmanager.conf установлено "enabled=yes". Ума не приложу, что еще можно посмотреть...

rom9 (Jan 27 '12)edit

Проверил в диалплане - работает. Set(CDR(userfield)=test), поле userfield заполняется нормально. А вот из AMI никак не хочет. Куда копать?

rom9 (Jan 27 '12)edit

Работает так.

romariosar (May 24 '16)edit
0
ссылка удалить спам редактировать

ответил Jan 28 '12

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

обновил Jan 28 '12

Comments

ну и чем это поможет? вы хоть разобрались зачем это используеться и когда?

meral (Jan 29 '12)edit
0

Разобрался.
В баг-трекере Asterisk-а эта тема помечена как "известная ошибка". Причем, настолько известная, что тянется еще с версии 1.6.0.6
SetVar переменную userfield устанавливает, но в CDR значение не пишется.
https://issues.asterisk.org/view.php?id=14662">Тема в баг-трекере
Похоже, исправлять ее никто и не думает. Ошибка висит с марта 2009. Поэтому придется искать другие способы записи в CDR.

ссылка удалить спам редактировать

ответил Jan 27 '12

rom9 Gravatar rom9
1 1 2

Comments

есть варианты. например запустить макрос или тарнсфернуть этот звонок кудато временно, там диалпланом поставить переменную и вернуть обратно.

meral (Jan 27 '12)edit

Я решил не париться и пихнуть прямо из приложения update-ом в CDR. Кстати, для информации - в 1.8 тоже самое. Честно установить userfield средствами AMI - это без шансов.

rom9 (Jan 27 '12)edit

update cdr это не очень хорошо с точки зрения БД. лучше создать табличку в которую записывать пары cdr.id,новые занчения. и по неободимостиделать join. прочто апдейт таблицы строковым выражением это достаточно ресурная операция в случае если в таблице милион записей или есть ключи по этой строке.

meral (Jan 27 '12)edit

Делается UPDATE только одной строки. Это точно не затратно. Запрос типа "UPDATE cdr SET userfield='Test' WHERE uniqueid='1234567890.01' ". По идее, такие запросы должны просто пролетать за доли секунды, даже на 2-х миллиардах записей.

rom9 (Jan 27 '12)edit

ну конечно не затратно.всегото поиск по незаиндексированной строчной переменной а потом изменнения размера строки в базе. елси еще индекс по userfield то еще и апдейт индекс. доли секнды говрите? я бы сказал что на двух милионах там уже до полсекунды может собраться. но это ваше дело конечно. на миллиардной таблице вообще нихочу ничего обсуждать. вы вообще работали с таблицами больше 10млн записей? явам просто говрю где у вас может быть пробелма. при малых размерх таблицы это не сильно сложно.при 100 зовнках за год собереться 5+млн записей, и будет выглядеть как постоянно большая нагрзука на сервере. если такое случиться, просто вспомните что я вам говрил. поможет.

meral (Jan 27 '12)edit
0

а setvar вам чем не угодила?

ссылка удалить спам редактировать

ответил Jan 26 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

Я тоже так думал, но почему-то не работает SetVar Делаю так: Action: SetVar Channel: SIP/202-0001 Variable: userfield Value: test ... и тишина в CDR-е

rom9 (Jan 26 '12)edit
0

а setvar вам чем не угодила?

Да я тоже так думал, но почему-то не работает SetVar
Делаю так:
Action: SetVar
Channel: SIP/202-0001
Variable: userfield
Value: test
... и тишина в CDR-е
AMI отвечает, что мол, "Response: Success", но поле в CDR-е не заполняет.

ссылка удалить спам редактировать

ответил Jan 26 '12

rom9 Gravatar rom9
1 1 2

обновил Jan 26 '12

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Jan 26 '12

Просмотрен: 1,965 раз

Обновлен: May 23 '16

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.