Изначально так и делал, астериск ругается, что команда SET(CDR) устарела и предлагает использовать CHANNEL. В базу при этом ничего не пишется.
Merk ( 2019-03-14 06:20:35 +0400 )редактироватьAsterisk 13.17.0 во Freepbx Хочу писать в cdr имя агента, который ответил на вызов. Модифицировал контекст вызова очереди след образом:
exten => 500,n(qcall),Queue(500,${QOPTIONS},,${QAANNOUNCE},${QMAXWAIT},${QAGI},,set-accountcode,s,1,${QRULE},${QPOSITION})
Т.е. добавил опцию вызова Gosub когда оператор отвечает на звонок. Вот сам контекст, который вызывается очередью:
[set-accountcode]
exten => s,1,Set(CHANNEL(accountcode)=${MEMBERNAME})
exten => s,n,Verbose(<<<<<<<<<<<<<<set as ${MEMBERNAME}>>>>>>>>>>>>>>>)
exten => s,n,Return
В консоли видно как отрабатывает Verbose, показывая значение переменной MEMBERNAME (она не пустая), значит при ответе оператора контекст set-accountcode выполняется и переменная accountcode устанавливается. Но в базе cdr поле accountcode записи этого звонка пустое. Не записывается оно никак. Если же установить accountcode ПЕРЕД вызовом Queue, то в базу оно попадает корректно.
Как обновлять accountcode во время выполнения Queue?
exten => s,1,Set(CDR(accountcode)=${MEMBERNAME})
Изначально так и делал, астериск ругается, что команда SET(CDR) устарела и предлагает использовать CHANNEL. В базу при этом ничего не пишется.
Merk ( 2019-03-14 06:20:35 +0400 )редактироватьУ вас проблема не в диалплане. Диалплан нормальный.
Место плохое. В этом месте много чего не работает, скорее всего и CHANNEL
Ставьте в материнском канале.
А вообще правильно парсить queue_log
Я же не знаю имя агента, который ответит на вызов, ДО вызова самой очереди. А когда очередь уже вызвал, в материнский канал как попасть?
Merk ( 2019-03-14 14:19:17 +0400 )редактироватьНу варианты есть. Например, можно использовать SHARED и h-exten. Но проще queue_log
meral ( 2019-03-14 23:33:42 +0400 )редактироватьСкорее всего после ForkCDR появится, тк каналы-то разные. Но account будет плодить файлы логов. Для подобных же записей существует userfield Еще можно можно после hangup в deadagi собрать все переменные в одну строку и засунуть в userfield.
Задан: 2019-03-13 21:35:14 +0400
Просмотрен: 376 раз
Обновлен: Mar 14 '19
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.